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
ift
NIFTy
Commits
092d641f
Commit
092d641f
authored
Mar 15, 2021
by
Gordian Edenhofer
Browse files
getting_started_density.py: Format
parent
845f93c1
Changes
1
Hide whitespace changes
Inline
Side-by-side
demos/getting_started_density.py
View file @
092d641f
...
...
@@ -32,8 +32,8 @@ import nifty7 as ift
def
density_estimator
(
domain
,
pad
=
1.
,
cf_fluctuations
=
None
,
cf_azm_uniform
=
None
):
domain
,
pad
=
1.
,
cf_fluctuations
=
None
,
cf_azm_uniform
=
None
):
cf_azm_uniform_sane_default
=
(
0.
,
20.
)
cf_fluctuations_sane_default
=
{
"scale"
:
(
0.5
,
0.3
),
...
...
@@ -57,13 +57,12 @@ def density_estimator(
)
raise
TypeError
(
te
)
shape_padded
=
tuple
((
d_scl
*
np
.
array
(
d
.
shape
)).
astype
(
int
))
domain_padded
.
append
(
ift
.
RGSpace
(
shape_padded
,
distances
=
d
.
distances
)
)
domain_padded
.
append
(
ift
.
RGSpace
(
shape_padded
,
distances
=
d
.
distances
))
domain_padded
=
ift
.
DomainTuple
.
make
(
domain_padded
)
# Set up the signal model
prefix
=
"de"
# density estimator
prefix
=
"de_"
# density estimator
azm_offset_mean
=
0.
# The zero-mode should be inferred only from the data
cfmaker
=
ift
.
CorrelatedFieldMaker
(
prefix
)
for
i
,
d
in
enumerate
(
domain_padded
):
if
isinstance
(
cf_fluctuations
,
(
list
,
tuple
)):
...
...
@@ -74,7 +73,6 @@ def density_estimator(
scalar_domain
=
ift
.
DomainTuple
.
scalar_domain
()
uniform
=
ift
.
UniformOperator
(
scalar_domain
,
*
cf_azm_uni
)
azm
=
uniform
.
ducktape
(
"zeromode"
)
azm_offset_mean
=
0.
# The zero-mode should be inferred only from the data
cfmaker
.
set_amplitude_total_offset
(
azm_offset_mean
,
azm
)
correlated_field
=
cfmaker
.
finalize
(
0
)
normalized_amplitudes
=
cfmaker
.
get_normalized_amplitudes
()
...
...
@@ -109,21 +107,25 @@ if __name__ == "__main__":
rng
=
ift
.
random
.
current_rng
()
rng
.
standard_normal
(
1000
)
mock_position
=
ift
.
from_random
(
signal
.
domain
,
'normal'
)
data
=
ift
.
Field
.
from_raw
(
data_space
,
rng
.
poisson
(
signal
(
mock_position
).
val
))
data
=
ift
.
Field
.
from_raw
(
data_space
,
rng
.
poisson
(
signal
(
mock_position
).
val
)
)
plot
=
ift
.
Plot
()
plot
.
add
(
ift
.
exp
(
correlated_field
(
mock_position
)),
title
=
'Pre-Slicing Truth'
)
plot
.
add
(
ift
.
exp
(
correlated_field
(
mock_position
)),
title
=
'Pre-Slicing Truth'
)
plot
.
add
(
signal
(
mock_position
),
title
=
'Ground Truth'
)
plot
.
add
(
data
,
title
=
'Data'
)
plot
.
output
(
ny
=
1
,
nx
=
3
,
xsize
=
10
,
ysize
=
10
,
name
=
filename
.
format
(
"setup"
))
# Minimization parameters
ic_sampling
=
ift
.
AbsDeltaEnergyController
(
name
=
'Sampling'
,
deltaE
=
0.01
,
iteration_limit
=
100
)
ic_newton
=
ift
.
AbsDeltaEnergyController
(
name
=
'Newton'
,
deltaE
=
0.01
,
iteration_limit
=
35
)
ic_sampling
=
ift
.
AbsDeltaEnergyController
(
name
=
'Sampling'
,
deltaE
=
0.01
,
iteration_limit
=
100
)
ic_newton
=
ift
.
AbsDeltaEnergyController
(
name
=
'Newton'
,
deltaE
=
0.01
,
iteration_limit
=
35
)
ic_sampling
.
enable_logging
()
ic_newton
.
enable_logging
()
minimizer
=
ift
.
NewtonCG
(
ic_newton
,
enable_logging
=
True
)
...
...
@@ -150,16 +152,23 @@ if __name__ == "__main__":
plot
.
add
(
ift
.
exp
(
correlated_field
(
mock_position
)),
title
=
"ground truth"
)
plot
.
add
(
signal
(
mock_position
),
title
=
"ground truth"
)
plot
.
add
(
signal
(
kl
.
position
),
title
=
"reconstruction"
)
plot
.
add
((
ic_newton
.
history
,
ic_sampling
.
history
,
minimizer
.
inversion_history
),
label
=
[
'kl'
,
'Sampling'
,
'Newton inversion'
],
title
=
'Cumulative energies'
,
s
=
[
None
,
None
,
1
],
alpha
=
[
None
,
0.2
,
None
])
plot
.
output
(
nx
=
3
,
ny
=
2
,
ysize
=
10
,
xsize
=
15
,
name
=
filename
.
format
(
f
"loop_
{
i
:
02
d
}
"
))
plot
.
add
(
(
ic_newton
.
history
,
ic_sampling
.
history
,
minimizer
.
inversion_history
),
label
=
[
'kl'
,
'Sampling'
,
'Newton inversion'
],
title
=
'Cumulative energies'
,
s
=
[
None
,
None
,
1
],
alpha
=
[
None
,
0.2
,
None
]
)
plot
.
output
(
nx
=
3
,
ny
=
2
,
ysize
=
10
,
xsize
=
15
,
name
=
filename
.
format
(
f
"loop_
{
i
:
02
d
}
"
)
)
# Done, draw posterior samples
sc
=
ift
.
StatCalculator
()
...
...
@@ -174,7 +183,10 @@ if __name__ == "__main__":
plot
.
add
(
sc
.
mean
,
title
=
"Posterior Mean"
)
plot
.
add
(
ift
.
sqrt
(
sc
.
var
),
title
=
"Posterior Standard Deviation"
)
plot
.
add
(
sc_unsliced
.
mean
,
title
=
"Posterior Unsliced Mean"
)
plot
.
add
(
ift
.
sqrt
(
sc_unsliced
.
var
),
title
=
"Posterior Unsliced Standard Deviation"
)
plot
.
add
(
ift
.
sqrt
(
sc_unsliced
.
var
),
title
=
"Posterior Unsliced Standard Deviation"
)
plot
.
output
(
ny
=
2
,
nx
=
2
,
xsize
=
15
,
ysize
=
15
,
name
=
filename_res
)
print
(
"Saved results as '{}'."
.
format
(
filename_res
))
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