Commit 82beea3c authored by Torsten Ensslin's avatar Torsten Ensslin Committed by Martin Reinecke

Demo optimization te

parent c8016819
...@@ -43,22 +43,22 @@ def exposure_2d(): ...@@ -43,22 +43,22 @@ def exposure_2d():
if __name__ == '__main__': if __name__ == '__main__':
# FIXME All random seeds to 42 # FIXME All random seeds to 42
np.random.seed(41) np.random.seed(42)
# Choose space on which the signal field is defined # Choose space on which the signal field is defined
mode = 2 mode = 1
if mode == 0: if mode == 0:
# One-dimensional regular grid with uniform exposure # One-dimensional regular grid with uniform exposure of 10
position_space = ift.RGSpace(1024) position_space = ift.RGSpace(1024)
exposure = ift.Field.full(position_space, 1.) exposure = ift.Field.full(position_space, 10.)
elif mode == 1: elif mode == 1:
# Two-dimensional regular grid with inhomogeneous exposure # Two-dimensional regular grid with inhomogeneous exposure
position_space = ift.RGSpace([512, 512]) position_space = ift.RGSpace([512, 512])
exposure = exposure_2d() exposure = exposure_2d()
else: else:
# Sphere with uniform exposure # Sphere with uniform exposure of 100
position_space = ift.HPSpace(128) position_space = ift.HPSpace(128)
exposure = ift.Field.full(position_space, 1.) exposure = ift.Field.full(position_space, 100.)
# Define harmonic space and harmonic transform # Define harmonic space and harmonic transform
harmonic_space = position_space.get_default_codomain() harmonic_space = position_space.get_default_codomain()
......
...@@ -17,8 +17,12 @@ ...@@ -17,8 +17,12 @@
############################################################ ############################################################
# Non-linear tomography # Non-linear tomography
# The data is integrated lines of sight #
# Random lines (set mode=0), radial lines (mode=1) # The signal is a sigmoid-normal distributed field.
# The data is the field integrated along lines of sight that are
# randomly (set mode=0) or radially (mode=1) distributed
#
# Demo takes a while to compute
############################################################# #############################################################
import numpy as np import numpy as np
...@@ -28,22 +32,22 @@ import nifty5 as ift ...@@ -28,22 +32,22 @@ import nifty5 as ift
def random_los(n_los): def random_los(n_los):
starts = list(np.random.uniform(0, 1, (n_los, 2)).T) starts = list(np.random.uniform(0, 1, (n_los, 2)).T)
ends = list(0.5 + 0*np.random.uniform(0, 1, (n_los, 2)).T) ends = list(np.random.uniform(0, 1, (n_los, 2)).T)
return starts, ends return starts, ends
def radial_los(n_los): def radial_los(n_los):
starts = list(np.random.uniform(0, 1, (n_los, 2)).T) starts = list(np.random.uniform(0, 1, (n_los, 2)).T)
ends = list(np.random.uniform(0, 1, (n_los, 2)).T) ends = list(0.5 + 0*np.random.uniform(0, 1, (n_los, 2)).T)
return starts, ends return starts, ends
if __name__ == '__main__': if __name__ == '__main__':
np.random.seed(420) np.random.seed(420) # picked for a nice field realization
# Choose between random line-of-sight response (mode=1) and radial lines # Choose between random line-of-sight response (mode=0) and radial lines
# of sight (mode=2) # of sight (mode=1)
mode = 1 mode = 0
position_space = ift.RGSpace([128, 128]) position_space = ift.RGSpace([128, 128])
harmonic_space = position_space.get_default_codomain() harmonic_space = position_space.get_default_codomain()
...@@ -62,8 +66,8 @@ if __name__ == '__main__': ...@@ -62,8 +66,8 @@ if __name__ == '__main__':
# Power-law part of spectrum: # Power-law part of spectrum:
'sm': -5, # preferred power-law slope 'sm': -5, # preferred power-law slope
'sv': .5, # low variance of power-law slope 'sv': .5, # low variance of power-law slope
'im': .4, # y-intercept mean 'im': 0, # y-intercept mean, in-/decrease for more/less contrast
'iv': .3 # relatively high y-intercept variance 'iv': .3 # y-intercept variance
} }
A = ift.SLAmplitude(**dct) A = ift.SLAmplitude(**dct)
...@@ -79,7 +83,7 @@ if __name__ == '__main__': ...@@ -79,7 +83,7 @@ if __name__ == '__main__':
signal = ift.sigmoid(correlated_field) signal = ift.sigmoid(correlated_field)
# Build the line-of-sight response and define signal response # Build the line-of-sight response and define signal response
LOS_starts, LOS_ends = random_los(100) if mode == 1 else radial_los(100) LOS_starts, LOS_ends = random_los(100) if mode == 0 else radial_los(100)
R = ift.LOSResponse(position_space, starts=LOS_starts, ends=LOS_ends) R = ift.LOSResponse(position_space, starts=LOS_starts, ends=LOS_ends)
signal_response = R(signal) signal_response = R(signal)
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment