Skip to content
GitLab
Menu
Projects
Groups
Snippets
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Menu
Open sidebar
Neel Shah
NIFTy
Commits
6751d5bc
Commit
6751d5bc
authored
Jan 30, 2018
by
Philipp Arras
Browse files
Revert unit stuff
This stuff may be merged separately.
parent
367e0628
Changes
6
Hide whitespace changes
Inline
Side-by-side
nifty4/library/noise_energy.py
View file @
6751d5bc
...
...
@@ -25,26 +25,23 @@ from ..minimization.energy import Energy
class
NoiseEnergy
(
Energy
):
def
__init__
(
self
,
position
,
d
,
xi
,
D
,
t
,
ht
,
Instrument
,
nonlinearity
,
alpha
,
q
,
Projection
,
munit
=
1.
,
sunit
=
1.
,
dunit
=
1.
,
samples
=
3
,
xi_sample_list
=
None
,
inverter
=
None
):
nonlinearity
,
alpha
,
q
,
Projection
,
samples
=
3
,
xi_sample_list
=
None
,
inverter
=
None
):
super
(
NoiseEnergy
,
self
).
__init__
(
position
=
position
)
self
.
xi
=
xi
self
.
D
=
D
self
.
d
=
d
self
.
N
=
DiagonalOperator
(
diagonal
=
dunit
**
2
*
exp
(
self
.
position
))
self
.
N
=
DiagonalOperator
(
diagonal
=
exp
(
self
.
position
))
self
.
t
=
t
self
.
samples
=
samples
self
.
ht
=
ht
self
.
Instrument
=
Instrument
self
.
nonlinearity
=
nonlinearity
self
.
munit
=
munit
self
.
sunit
=
sunit
self
.
dunit
=
dunit
self
.
alpha
=
alpha
self
.
q
=
q
self
.
Projection
=
Projection
self
.
power
=
self
.
Projection
.
adjoint_times
(
munit
*
exp
(
0.5
*
self
.
t
))
self
.
power
=
self
.
Projection
.
adjoint_times
(
exp
(
0.5
*
self
.
t
))
if
xi_sample_list
is
None
:
if
samples
is
None
or
samples
==
0
:
xi_sample_list
=
[
xi
]
...
...
@@ -54,14 +51,14 @@ class NoiseEnergy(Energy):
self
.
xi_sample_list
=
xi_sample_list
self
.
inverter
=
inverter
A
=
Projection
.
adjoint_times
(
munit
*
exp
(.
5
*
self
.
t
))
# unit: munit
A
=
Projection
.
adjoint_times
(
exp
(.
5
*
self
.
t
))
self
.
_gradient
=
None
for
sample
in
self
.
xi_sample_list
:
map_s
=
self
.
ht
(
A
*
sample
)
residual
=
self
.
d
-
\
self
.
Instrument
(
sunit
*
self
.
nonlinearity
(
map_s
))
self
.
Instrument
(
self
.
nonlinearity
(
map_s
))
lh
=
.
5
*
residual
.
vdot
(
self
.
N
.
inverse_times
(
residual
))
grad
=
-
.
5
*
self
.
N
.
inverse_times
(
residual
.
conjugate
()
*
residual
)
...
...
@@ -84,8 +81,7 @@ class NoiseEnergy(Energy):
return
self
.
__class__
(
position
,
self
.
d
,
self
.
xi
,
self
.
D
,
self
.
t
,
self
.
ht
,
self
.
Instrument
,
self
.
nonlinearity
,
self
.
alpha
,
self
.
q
,
self
.
Projection
,
munit
=
self
.
munit
,
sunit
=
self
.
sunit
,
dunit
=
self
.
dunit
,
xi_sample_list
=
self
.
xi_sample_list
,
self
.
Projection
,
xi_sample_list
=
self
.
xi_sample_list
,
samples
=
self
.
samples
,
inverter
=
self
.
inverter
)
@
property
...
...
nifty4/library/nonlinear_power_curvature.py
View file @
6751d5bc
...
...
@@ -20,22 +20,12 @@ from ..operators.inversion_enabler import InversionEnabler
from
.response_operators
import
LinearizedPowerResponse
def
NonlinearPowerCurvature
(
tau
,
ht
,
Instrument
,
nonlinearity
,
Projection
,
N
,
T
,
xi_sample_list
,
inverter
,
munit
=
1.
,
sunit
=
1.
):
def
NonlinearPowerCurvature
(
tau
,
ht
,
Instrument
,
nonlinearity
,
Projection
,
N
,
T
,
xi_sample_list
,
inverter
):
result
=
None
for
xi_sample
in
xi_sample_list
:
LinearizedResponse
=
LinearizedPowerResponse
(
Instrument
,
nonlinearity
,
ht
,
Projection
,
tau
,
xi_sample
,
munit
,
sunit
)
Instrument
,
nonlinearity
,
ht
,
Projection
,
tau
,
xi_sample
)
op
=
LinearizedResponse
.
adjoint
*
N
.
inverse
*
LinearizedResponse
result
=
op
if
result
is
None
else
result
+
op
result
=
result
*
(
1.
/
len
(
xi_sample_list
))
+
T
...
...
nifty4/library/nonlinear_power_energy.py
View file @
6751d5bc
...
...
@@ -53,7 +53,7 @@ class NonlinearPowerEnergy(Energy):
def
__init__
(
self
,
position
,
d
,
N
,
xi
,
D
,
ht
,
Instrument
,
nonlinearity
,
Projection
,
sigma
=
0.
,
samples
=
3
,
xi_sample_list
=
None
,
inverter
=
None
,
munit
=
1.
,
sunit
=
1.
):
inverter
=
None
):
super
(
NonlinearPowerEnergy
,
self
).
__init__
(
position
)
self
.
xi
=
xi
self
.
D
=
D
...
...
@@ -66,8 +66,6 @@ class NonlinearPowerEnergy(Energy):
self
.
nonlinearity
=
nonlinearity
self
.
Projection
=
Projection
self
.
sigma
=
sigma
self
.
munit
=
munit
self
.
sunit
=
sunit
if
xi_sample_list
is
None
:
if
samples
is
None
or
samples
==
0
:
xi_sample_list
=
[
xi
]
...
...
@@ -77,7 +75,7 @@ class NonlinearPowerEnergy(Energy):
self
.
xi_sample_list
=
xi_sample_list
self
.
inverter
=
inverter
A
=
Projection
.
adjoint_times
(
munit
*
exp
(.
5
*
position
))
# unit: munit
A
=
Projection
.
adjoint_times
(
exp
(.
5
*
position
))
map_s
=
self
.
ht
(
A
*
xi
)
Tpos
=
self
.
T
(
position
)
...
...
@@ -86,10 +84,10 @@ class NonlinearPowerEnergy(Energy):
map_s
=
self
.
ht
(
A
*
xi_sample
)
LinR
=
LinearizedPowerResponse
(
self
.
Instrument
,
self
.
nonlinearity
,
self
.
ht
,
self
.
Projection
,
self
.
position
,
xi_sample
,
munit
=
self
.
munit
,
sunit
=
self
.
sunit
)
self
.
position
,
xi_sample
)
residual
=
self
.
d
-
\
self
.
Instrument
(
sunit
*
self
.
nonlinearity
(
map_s
))
self
.
Instrument
(
self
.
nonlinearity
(
map_s
))
lh
=
0.5
*
residual
.
vdot
(
self
.
N
.
inverse_times
(
residual
))
grad
=
LinR
.
adjoint_times
(
self
.
N
.
inverse_times
(
residual
))
...
...
@@ -111,8 +109,6 @@ class NonlinearPowerEnergy(Energy):
self
.
Projection
,
sigma
=
self
.
sigma
,
samples
=
len
(
self
.
xi_sample_list
),
xi_sample_list
=
self
.
xi_sample_list
,
munit
=
self
.
munit
,
sunit
=
self
.
sunit
,
inverter
=
self
.
inverter
)
@
property
...
...
@@ -129,4 +125,4 @@ class NonlinearPowerEnergy(Energy):
return
NonlinearPowerCurvature
(
self
.
position
,
self
.
ht
,
self
.
Instrument
,
self
.
nonlinearity
,
self
.
Projection
,
self
.
N
,
self
.
T
,
self
.
xi_sample_list
,
self
.
inverter
,
self
.
munit
,
self
.
sunit
)
self
.
inverter
)
nifty4/library/nonlinear_wiener_filter_energy.py
View file @
6751d5bc
...
...
@@ -24,19 +24,18 @@ from .response_operators import LinearizedSignalResponse
class
NonlinearWienerFilterEnergy
(
Energy
):
def
__init__
(
self
,
position
,
d
,
Instrument
,
nonlinearity
,
ht
,
power
,
N
,
S
,
inverter
=
None
,
sunit
=
1.
):
inverter
=
None
):
super
(
NonlinearWienerFilterEnergy
,
self
).
__init__
(
position
=
position
)
self
.
d
=
d
self
.
sunit
=
sunit
self
.
Instrument
=
Instrument
self
.
nonlinearity
=
nonlinearity
self
.
ht
=
ht
self
.
power
=
power
m
=
self
.
ht
(
self
.
power
*
self
.
position
)
self
.
LinearizedResponse
=
LinearizedSignalResponse
(
Instrument
,
nonlinearity
,
ht
,
power
,
m
,
sunit
)
Instrument
,
nonlinearity
,
ht
,
power
,
m
)
residual
=
d
-
Instrument
(
sunit
*
nonlinearity
(
m
))
residual
=
d
-
Instrument
(
nonlinearity
(
m
))
self
.
N
=
N
self
.
S
=
S
self
.
inverter
=
inverter
...
...
@@ -49,7 +48,7 @@ class NonlinearWienerFilterEnergy(Energy):
def
at
(
self
,
position
):
return
self
.
__class__
(
position
,
self
.
d
,
self
.
Instrument
,
self
.
nonlinearity
,
self
.
ht
,
self
.
power
,
self
.
N
,
self
.
S
,
self
.
inverter
,
self
.
sunit
)
self
.
S
,
self
.
inverter
)
@
property
def
value
(
self
):
...
...
nifty4/library/response_operators.py
View file @
6751d5bc
...
...
@@ -19,21 +19,12 @@
from
..field
import
exp
def
LinearizedSignalResponse
(
Instrument
,
nonlinearity
,
ht
,
power
,
m
,
sunit
):
return
sunit
*
(
Instrument
*
nonlinearity
.
derivative
(
m
)
*
ht
*
power
)
def
LinearizedSignalResponse
(
Instrument
,
nonlinearity
,
ht
,
power
,
m
):
return
(
Instrument
*
nonlinearity
.
derivative
(
m
)
*
ht
*
power
)
def
LinearizedPowerResponse
(
Instrument
,
nonlinearity
,
ht
,
Projection
,
tau
,
xi
,
munit
,
sunit
):
power
=
exp
(
0.5
*
tau
)
*
munit
def
LinearizedPowerResponse
(
Instrument
,
nonlinearity
,
ht
,
Projection
,
tau
,
xi
):
power
=
exp
(
0.5
*
tau
)
position
=
ht
(
Projection
.
adjoint_times
(
power
)
*
xi
)
linearization
=
nonlinearity
.
derivative
(
position
)
return
sunit
*
(
0.5
*
Instrument
*
linearization
*
ht
*
xi
*
Projection
.
adjoint
*
power
)
return
(
0.5
*
Instrument
*
linearization
*
ht
*
xi
*
Projection
.
adjoint
*
power
)
nifty4/plotting/plot.py
View file @
6751d5bc
...
...
@@ -209,9 +209,6 @@ def plot(f, **kwargs):
ax
.
set_xlabel
(
_get_kw
(
"xlabel"
,
""
,
**
kwargs
))
ax
.
set_ylabel
(
_get_kw
(
"ylabel"
,
""
,
**
kwargs
))
cmap
=
_get_kw
(
"colormap"
,
plt
.
rcParams
[
'image.cmap'
],
**
kwargs
)
unit
=
kwargs
.
get
(
'xunit'
)
if
not
unit
:
unit
=
1.
if
isinstance
(
dom
,
RGSpace
):
if
len
(
dom
.
shape
)
==
1
:
npoints
=
dom
.
shape
[
0
]
...
...
@@ -231,8 +228,8 @@ def plot(f, **kwargs):
ny
=
dom
.
shape
[
1
]
dx
=
dom
.
distances
[
0
]
dy
=
dom
.
distances
[
1
]
xc
=
np
.
arange
(
nx
,
dtype
=
np
.
float64
)
*
dx
/
unit
yc
=
np
.
arange
(
ny
,
dtype
=
np
.
float64
)
*
dy
/
unit
xc
=
np
.
arange
(
nx
,
dtype
=
np
.
float64
)
*
dx
yc
=
np
.
arange
(
ny
,
dtype
=
np
.
float64
)
*
dy
im
=
ax
.
imshow
(
dobj
.
to_global_data
(
f
.
val
),
extent
=
[
xc
[
0
],
xc
[
-
1
],
yc
[
0
],
yc
[
-
1
]],
vmin
=
kwargs
.
get
(
"zmin"
),
...
...
@@ -249,7 +246,7 @@ def plot(f, **kwargs):
plt
.
xscale
(
'log'
)
plt
.
yscale
(
'log'
)
plt
.
title
(
'power'
)
xcoord
=
dom
.
k_lengths
/
unit
xcoord
=
dom
.
k_lengths
for
i
,
fld
in
enumerate
(
f
):
ycoord
=
dobj
.
to_global_data
(
fld
.
val
)
plt
.
plot
(
xcoord
,
ycoord
,
label
=
label
[
i
])
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment