tasse_cdr_in.py 4.71 KB
Newer Older
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
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
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
new_config = {


## We start very general.

##==========================================
## Problem parameters
##==========================================
## What is the name of the data file?
    'data_filename' : 'Goettingen_data_processor',


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

## 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'
    'constraint' : 'nonnegative and support',

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

## 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',
    'farfield':1,

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

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

## Algorithm:
    'method' : 'CDRl',  # used to be 'Projection', 
    '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.
    'keep_log':0,


## 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 prbl.method field. 
## do different things depending on the chosen algorithm:
    'problem_family' : 'Phase',


    ## maximum number of iterations and tolerances
        'MAXIT' : 2000,
        'TOL' : 1e-8,

    ## relaxaton parameters in RAAR, HPR and HAAR
        'lambda_0' : 1.0,                # starting relaxation prameter (only used with
    # HAAR, HPR and RAAR)
        'lambda_max' :1.0,             # maximum relaxation prameter (only used with
    # HAAR, RAAR, and HPR)
        'lambda_switch' : 30,           # iteration at which lambda moves from lambda_0 -> lambda_max

    ## parameter for the data regularization 
    ## need to discuss how/whether the user should
    ## put in information about the noise
        'data_ball' : 999826e-30,
        # '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.

##==========================================
## parameters for plotting and diagnostics
##==========================================
    'diagnostic' : True, # to stop the diagnostics, just comment this field out.
    'rotate':False,
    'iterate_monitor':'feasibility_iterate_monitor',
    'verbose' : 1, # options are 0 or 1
    'graphics' : 1, # whether or not to display figures, options are 0 or 1.
                   # default is 1.
    'anim' : 0,  # whether or not to disaply ``real time" reconstructions
                # options are 0=no, 1=yes, 2=make a movie
                # default is 1.
        'graphics_display' : 'Phase_graphics', # unless specified, a default 
                            # plotting subroutine will generate 
                            # the graphics.  Otherwise, the user
                            # can write their own plotting subroutine

##======================================================================
##  Technical/software specific parameters
##======================================================================
## 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.

}