coronene_config.py 6.52 KB
Newer Older
jansen31's avatar
jansen31 committed
1
2
# This is the input file that the user sees/modifies.  It should be simple,
# avoid jargon or acronyms, and should be a model for a menu-driven GUI
3
4
5

new_config = {

6
7
8
9
10
11
12
13
14
15
16
17
18
19
    # We start very general.
    # ==========================================
    # Problem parameters
    # ==========================================
    # What is the name of the data file?
    'data_filename': 'coronen_homo1_fourier_noise15.mat',

    # What type of object are we working with?
    # Options are: 'phase', 'real', 'nonnegative', 'complex'
    'object': 'complex',

    # What type of constraints do we have?
    # Options are: 'support only', 'real and support', 'nonnegative and support',
    #              'amplitude only', 'sparse real', 'sparse complex', and 'hybrid'
jansen31's avatar
jansen31 committed
20
    #              'symmetric sparse real', 'symmetric sparse complex'
Russell Luke's avatar
Russell Luke committed
21
    'constraint': 'real and support',
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59

    # What type of measurements are we working with?
    # Options are: 'single diffraction', 'diversity diffraction',
    #              'ptychography', and 'complex'
    # Options are: '2D_ARPES', '3D_ARPES',
    #              '2D_time', and '3D_time'
    'experiment': '2D_ARPES',

    # Next we move to things that most of our users will know
    # better than we will.  Some of these may be overwritten in the
    # data processor file which the user will most likely write.
    # Are the measurements in the far field or near field?
    # Options are: 'far field' or 'near field',
    'distance': 'far field',

    # What are the dimensions of the measurements?
    'Nx': 128,
    'Ny': 128,

    # 'fresnel_nr' : 0,

    # moved this to phase
    # if(strcmp('distance,'near field'))
    #    'fresnel_nr' : 1*2*pi*'Nx,
    # else
    #    'fresnel_nr' :  0, #1*2*pi*'Nx,

    # 'magn' : 1,

    # What are the noise characteristics (Poisson or Gaussian)?
    'noise': 'Poisson',
    # ==========================================
    #  Algorithm parameters
    # ==========================================
    # Now set some algorithm parameters that the user should be
    # able to control (without too much damage)

    # Algorithm:
Russell Luke's avatar
Russell Luke committed
60
    'algorithm': 'DRl',  # used to be 'Projection',
61
62
63
64
65
    'numruns': 1,  # the only time this parameter will
    # be different than 1 is when we are
    # benchmarking...not something a normal user
    # would be doing.

jansen31's avatar
jansen31 committed
66
67
68
69
70
71
72
73
    # # The following are parameters specific to RAAR, HPR, and HAAR that the
    # # user should be able to set/modify.  Surely
    # # there will be other algorithm specific parameters that a user might
    # # want to play with.  Don't know how best
    # # to do this.  Thinking of a GUI interface, we could hard code all the
    # #  parameters the user might encounter and have the menu options change
    # # depending on the value of the 'method field.
    # # do different things depending on the chosen algorithm:
74
75
    # if(strcmp('method,'RAAR')||strcmp('method,'AP')||...
    #        strcmp('method,'HPR')||strcmp('method,'HAAR'))
76
77
78
    # the following just points this driver to a patch that communicates 
    # the parameters defined at this level to the structures used in the 
    # algorithms developed by Russell.  
79
80
81
    # 'problem_family' : 'Phase',
    # else # moreregularization parameters for Thorsten's algorithms:
    #   prbl' : complete_itreg_par(prbl),
82
83
    # This is just a patch to Thorsten's tools.  May want to change this
    # later
84
85
    # 'problem_family='Hohage',
    # end
86

87
88
    # if(strcmp('problem_family,'Phase'))
    # maximum number of iterations and tolerances
Russell Luke's avatar
Russell Luke committed
89
    'MAXIT': 500,
90
    'TOL': 1e-10,
91

92
93
    # relaxaton parameters in RAAR, HPR and HAAR
    'beta_0': 0.85,  # 0.95              # starting relaxation prameter (only used with
Russell Luke's avatar
Russell Luke committed
94
    'lambda_0': 0.85,  # 0.95              # starting relaxation prameter (only used with
95
    # HAAR, HPR and RAAR)
96
    'beta_max': 0.50,  # maximum relaxation prameter (only used with
97
    # HAAR, RAAR, and HPR)
Russell Luke's avatar
Russell Luke committed
98
    'lambda_max': 0.50,
99
    'beta_switch': 30,  # iteration at which beta moves from beta_0 -> beta_max
Russell Luke's avatar
Russell Luke committed
100
    'lambda_switch': 100,
101

102
103
104
105
    # parameter for the data regularization
    # need to discuss how/whether the user should
    # put in information about the noise
    'data_ball': .999826,
106
107
108
109
110
111
112
113
114
115
116
    # 'data_ball' : .9998261e-0,
    # the above is the percentage of the gap
    # between the measured data and the
    # initial guess satisfying the
    # qualitative constraints.  For a number 
    # very close to one, the gap is not expected 
    # to improve much.  For a number closer to 0
    # the gap is expected to improve a lot.  
    # Ultimately the size of the gap depends
    # on the inconsistency of the measurement model 
    # with the qualitative constraints.
117
118
119
120
121
    # elseif(strcmp('problem_family,'Hohage'))
    #    'alpha0' : 1e4,
    #    'N_CG' : 70,
    # end

jansen31's avatar
jansen31 committed
122
123
124
    # # ==========================================
    # # parameters for plotting and diagnostics
    # # ==========================================
125
126
127
128
129
130
131
132
133
134
135
136
137
138
    # 'plotWhat.n1=2,
    # 'plotWhat.n2=3,
    # 'plotWhat.plots' : 'PYWpyw',
    # 'verbose' : 1, # options are 0 or 1
    # 'graphics' : 1, # whether or not to display figures, options are 0 or 1.
    #                    # default is 1.
    # 'anim' : 1,  # whether or not to disaply ``real time" reconstructions
    #                 # options are 0=no, 1=yes, 2=make a movie
    #                 # default is 1.
    # 'graphics_display' : [], # unless specified, a default
    #                             # plotting subroutine will generate
    #                             # the graphics.  Otherwise, the user
    #                             # can write their own plotting subroutine
    #
jansen31's avatar
jansen31 committed
139
140
141
    # # ==========================================
    # # parameters for plotting and diagnostics
    # # ==========================================
142
143
144
145
    'diagnostic': True,
    'verbose': 1,  # options are 0 or 1
    'graphics': 1,  # whether or not to display figures, options are 0 or 1.
    # default is 1.
146
    'anim': 2,  # whether or not to display ``real time" reconstructions
147
148
    # options are 0=no, 1=yes, 2=make a movie
    # default is 1.
149
150
151
152
    'graphics_display': 'Phase_graphics',  # name of the plotting routine
    'dataprocessor_plotting': True,
    'interpolate_result': True

153
154
155

}

jansen31's avatar
jansen31 committed
156
# =====================================================================
157
#  Technical/software specific parameters
jansen31's avatar
jansen31 committed
158
# =====================================================================
159
160
161
162
# Given the parameter values above, the following technical/algorithmic
# parameters are automatically set.  The user does not need to know
# about these details, and so probably these parameters should be set in
# a module one level below this one.