ptypy.experiment.nanomax3d.NanomaxBraggJune2017#
- class ptypy.experiment.nanomax3d.NanomaxBraggJune2017(pars=None, **kwargs)#
Bases:
PtyScanReads an early Bragg 3d ptycho format from Nanomax, multiple fly scans are run with rocking angle steps in between.
- __init__(pars=None, **kwargs)#
Class creation with minimum set of parameters, see
PtyScan.DEFAULTPlease note that class creation is not meant to load data.Call
initializeto begin loading and data file creation.
Methods
__init__([pars])Class creation with minimum set of parameters, see
PtyScan.DEFAULTPlease note that class creation is not meant to load data.auto(frames)Repeated calls to this function will process the data.
check([frames, start])Override in subclass for custom implementation
correct(raw, weights, common)Override in subclass for custom implementation
get_data_chunk(chunksize[, start])This function prepares a container that is compatible to data package.
Begins the Data preparation and intended as the first method that does read-write access on (large) data.
load(indices)This function returns diffraction image indexed from top left as viewed along the beam, i e they have (-q1, q2) indexing.
We have to communicate the number of rocking positions that the model should expect, otherwise it never knows when there is data for a complete POD.
For the 3d Bragg model, load_positions returns N-by-4 positions, (angle, x, z, y).
Override in subclass for custom implementation
Placeholder.
report([what, shout])Make a report on internal structure.
Attributes
CODESDEFAULTEOSKeys to store in meta param
WAITabortend_of_scanframes_accessibleTotal number of frames to prepare / load.
Minimum number of frames to prepare / load with call of
auto()Paramcontainer that stores all input parameters.- METAKEYS = ['version', 'num_frames', 'label', 'shape', 'psize', 'energy', 'center', 'distance']#
Keys to store in meta param
- auto(frames)#
Repeated calls to this function will process the data.
- Parameters:
frames (int) – Number of frames to process.
- Returns:
- one of the following
WAIT, if scan’s end is not reached, but no data could be prepared yet
EOS, if scan’s end is reached
a data package otherwise
- Return type:
variable
- check(frames=None, start=None)#
Override in subclass for custom implementation
This method checks how many frames the preparation routine may process, starting from frame start at a request of frames.
This method is supposed to return the number of accessible frames for preparation and should determine if data acquisition for this scan is finished. Its main purpose is to allow for a data acquisition scheme, where the number of frames is not known when
PtyScanis constructed, i.e. a data stream or an on-the-fly reconstructions.Note
If
num_framesis set on__init__()of the subclass, this method can be left as it is.- Parameters:
frames (int or None) – Number of frames requested.
start (int or None) – Scanpoint index to start checking from.
- Returns:
frames_accessible (int) – Number of frames readable.
end_of_scan (int or None) – is one of the following, - 0, end of the scan is not reached - 1, end of scan will be reached or is - None, can’t say
- correct(raw, weights, common)#
Override in subclass for custom implementation
Place holder for dark and flatfield correction. If
loadalready provides data in the form of photon counts, and no frame specific weight is needed, this method may be left as it is.May get merged with
loadin future.- Returns:
data, weights – Flat and dark-corrected data dictionaries. These dictionaries must have the same keys as the input raw and contain corrected frames (data) and statistical weights (weights) which are zero for invalid or masked pixel other the number of detector counts that correspond to one photon count
- Return type:
dict
- get_data_chunk(chunksize, start=None)#
This function prepares a container that is compatible to data package.
This function is called from the auto() function.
- info#
Paramcontainer that stores all input parameters.
- initialize()#
Begins the Data preparation and intended as the first method that does read-write access on (large) data. Does the following:
Creates a *.ptyd data file at location specified by
dfile(master node only)Calls
load_weight(),load_positions()load_common()(master node only forload_parallel==Noneorload_parallel=='data')Sets
num_framesif neededCalls
post_initialize()
- load(indices)#
This function returns diffraction image indexed from top left as viewed along the beam, i e they have (-q1, q2) indexing. PtyScan can always flip/rotate images.
- load_common()#
We have to communicate the number of rocking positions that the model should expect, otherwise it never knows when there is data for a complete POD. We also have to specify a single number for the rocking step size.
- load_positions()#
For the 3d Bragg model, load_positions returns N-by-4 positions, (angle, x, z, y). The angle can be relative or absolute, the model doesn’t care, but it does have to be uniformly spaced for the analysis to make any sense.
Let’s load the positions (and images) in the order they were acquired: x fastest, then y, then scan number in the order provided.
- load_weight()#
Override in subclass for custom implementation
Called in
initialize()Loads a common (2d)-weight for all diffraction patterns. The weight loaded here will be available by all processes through the attribute
self.weight2d. If a per-frame-weight is specified inload(), this function has no effect.The purpose of this function is to avoid reloading and parallel reads. If that is not critical to the implementation, reimplementing this function in a subclass can be ignored.
If load_parallel is set to all or common`, this function is executed by all nodes, otherwise the master node executes this function and broadcasts the results to other nodes.
- Returns:
weight2d – A two-dimensional array with a shape compatible to the raw diffraction data frames
- Return type:
ndarray
Note
For now, weights will be converted to a mask,
mask = weight2d > 0for use in reconstruction algorithms. It is planned to use a general weight instead of a mask in future releases.
- num_frames#
Total number of frames to prepare / load. Set by
num_frames
- post_initialize()#
Placeholder. Called at the end of
initialize()by all processes.Use this method to benefit from ‘hard-to-retrieve but now available’ information after initialize.
- report(what=None, shout=True)#
Make a report on internal structure.