API Documents¶
crystalmapping.plans¶
- crystalmapping.plans.configure_area_det(detector, exposure, acq_time)[source]¶
Configure exposure time of a detector in continuous acquisition mode.
- crystalmapping.plans.fly_scan_nd(detectors: list, *args, move_velocity: float, time_per_point: float, time_per_frame: float, shutter: object, shutter_open: Any, shutter_close: Any, shutter_wait_open: float = 0.0, shutter_wait_close: float = 0.0, take_dark: bool = True, md: Optional[dict] = None, backoff: float = 0.0, snake: bool = False, open_and_close: bool = False) Generator [source]¶
Move on a grid and do a fly scan at each point in the grid.
For example, fly_scan_nd([detector], motor_y, 0, 10, 11, motor_x, 0, 20, 21, motor_fly, 0, 5, 6, time_per_point=10, time_per_frame=1, shutter=shutter, shutter_open=1, shutter_close=0, shutter_wait_open=2, shutter_wait_close=5, move_velocity=5, take_dark=True, md={“task”: “fly scan sample 1”, backoff=0.5, snake=False}) means that set detector so that it will collect one image for 10 s one image contains 10 frames and each frame for 1 s
for y in 0, 1, 2, …, 10: for x in 0, 1, 2, …, 20: move to (x, y) wait 5 s collect dark image during the movement open shutter wait 2 s fly scan the motor_fly from -0.5 to 5.5 collect 6 images during the fly close shutter
- Parameters
- detectorslist
A list of detectors. The first one must be an area detector. The list shouldn’t include the motors in the args.
- *args
- patterned like (
motor1, start1, stop1, num1,
motor2, start2, stop2, num2,
motor3, start3, stop3, num3,
…motorN, startN, stopN, numN
)
The first motor is the “slowest”, the outer loop. The last motor is the “fly” motor, the non-stoping scan along an axis. For all motors except the first motor, there is a “snake” argument: a boolean indicating whether to following snake-like, winding trajectory or a simple left-to-right trajectory.
- patterned like (
- move_velocityfloat
The speed for the motors to move to the next grid point.
- time_per_pointfloat
The time to collect one image at one point.
- time_per_framefloat
The time to collect one frame in a image. One image contains serveral frames.
- shutterobject
The fast shutter.
- shutter_opentyping.Any
The value of the shutter in open state.
- shutter_closetyping.Any
The value of the shutter in close state.
- shutter_wait_openfloat, optional
The time between the shutter open and the start of the light image collection, by default 0.
- shutter_wait_closefloat, optional
The time between the shutter close and the start of the dark image collection, by default 0.
- take_darkbool, optional
If true, take a dark image at the end of the fly scan, by default True
- mddict, optional
The dictionary of the metadata to added into the plan, by default None
- backofffloat, optional
If non-zero, fly scan from start - backoff to end + backoff, by default 0.
- snakebool, optional
If true, snake the axis of the fly scan, by default False
- open_and_closebool, optional
If true, open and close shutter at every point, by default False
- Yields
- Iterator[typing.Generic]
The messages of the plan.
- Raises
- TomoPlanError
Empty detector list.
- TomoPlanError
Not enough motors.
- TomoPlanError
Wrong motor positions format.
- crystalmapping.plans.grid_scan_nd(detectors: list, *args, snake: Optional[Union[list, bool]] = None, time_per_point: float, time_per_frame: float, shutter: object, shutter_open: Any, shutter_close: Any, shutter_wait_open: float = 0.0, shutter_wait_close: float = 0.0, take_dark: bool = True, md=None) Generator [source]¶
Scan over a mesh; each motor is on an independent trajectory.
- Parameters
- detectorslist
A list of ‘readable’ objects
- *args
- patterned like (
motor1, start1, stop1, num1,
motor2, start2, stop2, num2,
motor3, start3, stop3, num3,
…motorN, startN, stopN, numN
)
The first motor is the “slowest”, the outer loop. The last motor is the “fly” motor, the non-stoping scan along an axis. For all motors except the first motor, there is a “snake” argument: a boolean indicating whether to following snake-like, winding trajectory or a simple left-to-right trajectory.
- patterned like (
- snakebool, optional
If true, snake the axis of the fly scan, by default None
- time_per_pointfloat
The time to collect one image at one point.
- time_per_framefloat
The time to collect one frame in a image. One image contains serveral frames.
- time_per_pointfloat
The time to collect one image at one point.
- time_per_framefloat
The time to collect one frame in a image. One image contains serveral frames.
- shutterobject
The fast shutter.
- shutter_opentyping.Any
The value of the shutter in open state.
- shutter_closetyping.Any
The value of the shutter in close state.
- shutter_wait_openfloat, optional
The time between the shutter open and the start of the light image collection, by default 0.
- shutter_wait_closefloat, optional
The time between the shutter close and the start of the dark image collection, by default 0.
- take_darkbool, optional
If true, take a dark image at the end of the fly scan, by default True
- md[type], optional
The dictionary of the metadata to added into the plan, by default None, by default None
- Yields
- Iterator[typing.Generic]
The messages of the plan.
- Raises
- TomoPlanError
Empty detector list.
- TomoPlanError
Not enough motors.
- TomoPlanError
Wrong motor positions format.
crystalmapping.servers¶
- class crystalmapping.servers.Commands[source]¶
A collection of commands.
- create_best_effort_config(cfg_file: str) None [source]¶
Create the configuration file for best efforts server.
- Parameters
- cfg_filestr
The configuration file. It is an .ini file.
- create_extremum_config(cfg_file: str) None [source]¶
Create the configuration file for extremum server.
- Parameters
- cfg_filestr
The configuration file. It is an .ini file.
crystalmapping.crystalmapper¶
- class crystalmapping.crystalmapper.CrystalMapper(_config: Optional[MapperConfig] = None, _dataset: Optional[Dataset] = None, _frames_arr: Optional[DataArray] = None, _dark: Optional[ndarray] = None, _light: Optional[ndarray] = None, _windows: Optional[DataFrame] = None, _intensity: Optional[ndarray] = None, _bkg_intensity: Optional[ndarray] = None, _coords: Optional[List[ndarray]] = None, _metadata: Optional[dict] = None)[source]¶
The Calculator of the crystal maps.
- load_bluesky_v1(run: Any) None [source]¶
Load the data and metadata from the version 1 databroker.
- Parameters
- runBlueskyRun
A version 1 BlueskyRun (Header).
- load_bluesky_v2(run: Any) None [source]¶
Load the data and metadata from the version 2 databroker.
- Parameters
- runBlueskyRun
A version 2 BlueskyRun.
- show_windows(*args, **kwargs) FacetGrid [source]¶
Show the windows on the dark subtracted light image.
- show_windows_on_frame(index: int, *args, **kwargs) FacetGrid [source]¶
Show the windows on the frame at the index.
crystalmapping.callbacks¶
- class crystalmapping.callbacks.DataFrameDumper(db: Broker)[source]¶
Dump the dataframe to the database using databroker.
- class crystalmapping.callbacks.ImageProcessor(data_key: str, subtrahend: ndarray)[source]¶
A callback to average frames of images, subtract it by another image, and emit the document.
- class crystalmapping.callbacks.PeakTracker(data_key: str, diameter: Union[int, tuple], **kwargs)[source]¶
Track the peaks on a series of images and summarize their position and intensity in a dataframe.
- class crystalmapping.callbacks.TrackLinker(*, db: Optional[Broker] = None, search_range: Union[float, tuple], **kwargs)[source]¶
Track the peaks in frame and link them in trajectories.
When a stop is received, the data will be pulled from the databroker and processed. Then, the dataframe will be emitted row by row.
- crystalmapping.callbacks.gen_processed_images(images: Iterable[Union[list, ndarray]], subtrahend: Union[list, ndarray]) Generator[ndarray, None, None] [source]¶
Generate processed image from a series of images.
The process procedure is (1) turn ot numpy array, (2) average the frames to a two dimensional image, (3) subtract the image and fill zero in negative pixels.
- Parameters
- images
A iterable of images. The dimensions of each image is no less than 2.
- subtrahend
The subtrahend image. The dimensions of each image is no less than 2.
- Yields
- processed_image
A two dimensional image.
- crystalmapping.callbacks.get_dataframe(run: Header) DataFrame [source]¶
Get the dataframe from the stream. Drop the time column.
crystalmapping.peakindexer¶
- class crystalmapping.peakindexer.AngleComparsion(h1: numpy.ndarray, h2: numpy.ndarray, angle_sample: float, angle_grain: float, diff_angle: float)[source]¶
- class crystalmapping.peakindexer.IndexResult(peak1: int, peak2: int, u_mat: ndarray, hkls: ndarray, losses: ndarray, loss: ndarray, ac: AngleComparsion)[source]¶
The result of peak indexing.
- class crystalmapping.peakindexer.IndexerConfig(dspacing_bounds: Optional[Tuple[float, float]] = None, index_agl_tolerance: float = 1.0, index_tth_tolerance: float = 0.1, index_best_n: int = 256, index_all_peaks: bool = True)[source]¶
Configuration for the PeakIndexer.
- class crystalmapping.peakindexer.PeakIndexer(config: ~crystalmapping.peakindexer.IndexerConfig, _datasets: ~typing.List[~xarray.core.dataset.Dataset] = <factory>, _ai: ~typing.Optional[~pyFAI.azimuthalIntegrator.AzimuthalIntegrator] = None, _cell: ~typing.Optional[~pyFAI.calibrant.Cell] = None, _peak_index: ~typing.Optional[~xarray.core.dataset.Dataset] = None, _peaks: ~typing.Optional[~pandas.core.frame.DataFrame] = None, _ubmatrix: ~crystalmapping.ubmatrix.UBMatrix = <crystalmapping.ubmatrix.UBMatrix object>, _pred: ~crystalmapping.peakindexer.PredictedReflection = PredictedReflection(q=None, d=None, tth=None, hkls=None), _previous_result: ~typing.Optional[~xarray.core.dataset.Dataset] = None)[source]¶
The Calculator of the crystal maps.
- guess_miller_index(peak_ids: List[str]) None [source]¶
Guess the index of the peaks in one grain.
- Parameters
- peakstyping.List[str]
The index of the peaks in the table.
- hist_error(peak_ids: Optional[List[str]] = None, size: float = 4.0, bins: Any = 'auto') None [source]¶
Plot the histogram of erros.
- Parameters
- peak_idsList[str], optional
A list of peak IDs to plot, by default None, plot all peaks.
- sizefloat, optional
Size in inches for the individual panel, by default 4.
- index_peaks_by_U(U_index: List[int]) None [source]¶
Index the peaks using the U matrix from previous results.
- Parameters
- U_indexT.List[int]
0-index of the U matrix to use. It is from best to worst in previous result.
- load(data_files: List[str], euler_angles: List[Tuple[float, float, float]], poni_file: str, stru_file: str) None [source]¶
Load the necessary data.
- Parameters
- data_filesList[str]
A list of netcdf4 files output by CrystalMapper.
- euler_anglesList[EulerAngle]
A list of (alpha, beta, gamma) value of Euler anlge in ZXY convention.
- poni_filestr
A pyFAI poni file containing the geometry information of the experiment.
- stru_filestr
A cif file containing the lattice information of the sample.
- load_miller_index(filename: str) None [source]¶
Load the guessing of Miller index.
- Parameters
- filenamestr
A netcdf4 file of the guessing results.
- load_previous_result(result_file: str) None [source]¶
Load the result from the previous peak indexing.
- Parameters
- result_filestr
Output file from the PeakIndexer.
- save_miller_index(filename: str) None [source]¶
Save the guess of Miller index.
- Parameters
- filenamestr
A destination of netcdf4 file.