autoemxsp.runners.batch_acquire_experimental_stds module

Automated X-Ray Experimental Standard Acquisition and Analysis

This module configures and runs automated collection and fitting of EDS/WDS spectra from experimental standards (i.e., sampels of known composition) to generate reference values of peak-to-background ratios.

Import this module in your own Python code and call the batch_acquire_experimental_stds() function, passing your desired configuration and sample list as arguments. This enables integration into larger automation workflows or pipelines.

Workflow includes:
  • Configuration of microscope, measurement, substrate, and fitting parameters

  • Sample setup (elements, position, reference formulae)

  • Calibration and quantification options

  • Automated or manual navigation and acquisition modes

Requirements:
  • Proper instrument calibration files and instrument driver for the selected microscope

Typical usage:
  • Edit the ‘std_list’ list to define your standards

  • Adjust configuration parameters as needed, either directly in the script or by passing them to batch_acquire_experimental_stds

  • Run the script, or import and call batch_acquire_experimental_stds() to collect experimental standards for one or multiple samples at a time

param stds:

List of experimental standard definitions. Each dictionary must contain:

  • ‘ID’ (str): Identifier for the standard sample (SampleConfig.ID).

  • ‘formula’ (str): Chemical formula of the standard (ExpStandardsConfig.formula).

  • ‘pos’ (tuple of float): (x, y) stage coordinates in mm (SampleConfig.center_pos).

  • ‘sample_type’ (str): Sample type (‘powder’, ‘bulk’, etc.) (SampleConfig.type).

  • ‘is_manual_meas’ (bool): If True, navigation to positions is manual (MeasurementConfig.is_manual_navigation).

type stds:

list of dict

param microscope_ID:

Identifier for the microscope hardware. Must correspond to a calibration folder in ./XSp_calibs/Microscopes/<ID> (MicroscopeConfig.ID). Default is ‘PhenomXL’.

type microscope_ID:

str, optional

param microscope_type:

Type of microscope. Allowed: ‘SEM’ (implemented), ‘STEM’ (not implemented). Default is ‘SEM’ (MicroscopeConfig.type).

type microscope_type:

str, optional

param measurement_type:

Measurement type. Allowed: ‘EDS’ (implemented), ‘WDS’ (not implemented). Default is ‘EDS’ (MeasurementConfig.type).

type measurement_type:

str, optional

param measurement_mode:

Acquisition mode (e.g., ‘point’, ‘map’), defining beam/detector calibration settings. Default is ‘point’ (MeasurementConfig.mode).

type measurement_mode:

str, optional

param sample_halfwidth:

Half-width of the sample area in mm for mapping/acquisition. Default is 3.0 (SampleConfig.half_width_mm).

type sample_halfwidth:

float, optional

param sample_substrate_type:

Type of sample substrate. Allowed: ‘Ctape’, ‘None’. Default is ‘Ctape’ (SampleSubstrateConfig.type).

type sample_substrate_type:

str, optional

param sample_substrate_shape:

Shape of the substrate. Allowed: ‘circle’, ‘square’. Default is ‘circle’ (SampleSubstrateConfig.shape).

type sample_substrate_shape:

str, optional

param working_distance:

Working distance in mm for acquisition. If None, taken from microscope driver. Default is 5.0 (MeasurementConfig.working_distance).

type working_distance:

float, optional

param beam_energy:

Electron beam energy in keV. Default is 15.0 (MeasurementConfig.beam_energy_keV).

type beam_energy:

float, optional

param spectrum_lims:

Lower and upper energy limits for spectrum fitting in eV. Default is (14, 1100) (QuantConfig.spectrum_lims).

type spectrum_lims:

tuple of float, optional

param use_instrument_background:

Whether to use instrument background files during fitting. If False, background is computed during fitting. Default is False (QuantConfig.use_instrument_background).

type use_instrument_background:

bool, optional

param min_bckgrnd_cnts:

Minimum background counts required for a spectrum not to be filtered out. Default is 5 (QuantConfig.min_bckgrnd_cnts).

type min_bckgrnd_cnts:

float, optional

param fit_during_collection:

If True, fit spectra during acquisition; otherwise fit later. Default is True.

type fit_during_collection:

bool, optional

param update_std_library:

If True, update the stored experimental standards library after acquisition. Default is False.

type update_std_library:

bool, optional

param is_auto_substrate_detection:

If True, substrate elements are detected automatically. Implemented only for ‘Ctape’ substrates. Default is False (SampleSubstrateConfig.auto_detection).

type is_auto_substrate_detection:

bool, optional

param auto_adjust_brightness_contrast:

If True, brightness/contrast are set automatically. Default is True (MicroscopeConfig.is_auto_BC).

type auto_adjust_brightness_contrast:

bool, optional

param contrast:

Manual contrast setting (required if auto_adjust_brightness_contrast is False). Default is 4.3877 (MicroscopeConfig.contrast).

type contrast:

float, optional

param brightness:

Manual brightness setting (required if auto_adjust_brightness_contrast is False). Default is 0.4504 (MicroscopeConfig.brightness).

type brightness:

float, optional

param min_n_spectra:

Minimum number of spectra to acquire. Default is 50 (MeasurementConfig.min_n_spectra).

type min_n_spectra:

int, optional

param max_n_spectra:

Maximum number of spectra to acquire. Default is 100 (MeasurementConfig.max_n_spectra).

type max_n_spectra:

int, optional

param target_Xsp_counts:

Target counts for spectrum acquisition. Default is 250000 (MeasurementConfig.target_acquisition_counts).

type target_Xsp_counts:

int, optional

param max_XSp_acquisition_time:

Maximum acquisition time in seconds. If None, estimated from target counts. Default is None (MeasurementConfig.max_acquisition_time).

type max_XSp_acquisition_time:

float, optional

param els_substrate:

List of substrate element symbols. Default is [‘C’, ‘O’, ‘Al’] (SampleSubstrateConfig.elements).

type els_substrate:

list of str, optional

param powder_meas_cfg_kwargs:

Additional keyword arguments for PowderMeasurementConfig.

type powder_meas_cfg_kwargs:

dict, optional

param bulk_meas_cfg_kwargs:

Additional keyword arguments for BulkMeasurementConfig.

type bulk_meas_cfg_kwargs:

dict, optional

param exp_stds_meas_cfg_kwargs:

Additional keyword arguments for ExpStandardsConfig. Used to customize experimental standard acquisition and PB ratio filtering.

type exp_stds_meas_cfg_kwargs:

dict, optional

param output_filename_suffix:

String appended to output filenames. Default is ‘’.

type output_filename_suffix:

str, optional

param development_mode:

If True, enables development/debug features. Default is False.

type development_mode:

bool, optional

param verbose:

If True, print verbose output. Default is True.

type verbose:

bool, optional

param exp_std_dir:

Directory where experimental standard results are saved. Default is None.

type exp_std_dir:

str, optional

Created on Fri Aug 20 09:34:34 2025

@author: Andrea

autoemxsp.runners.batch_acquire_experimental_stds.batch_acquire_experimental_stds(stds: List[Dict[str, Any]], microscope_ID: str = 'PhenomXL', microscope_type: str = 'SEM', measurement_type: str = 'EDS', measurement_mode: str = 'point', sample_halfwidth: float = 3.0, sample_substrate_type: str = 'Ctape', sample_substrate_shape: str = 'circle', working_distance: float = 5, working_distance_tolerance: float = 1, beam_energy: float = 15.0, spectrum_lims: Tuple[float, float] = (14, 1100), use_instrument_background: bool = False, min_bckgrnd_cnts: float = 5, fit_during_collection=True, update_std_library=False, is_auto_substrate_detection: bool = False, auto_adjust_brightness_contrast: bool = True, contrast: float = 4.3877, brightness: float = 0.4504, min_n_spectra: int = 50, max_n_spectra: int = 100, target_Xsp_counts: int = 250000, max_XSp_acquisition_time: float = None, els_substrate: List[str] = None, powder_meas_cfg_kwargs: Dict[str, Any] = None, bulk_meas_cfg_kwargs: Dict[str, Any] = None, exp_stds_meas_cfg_kwargs: Dict[str, Any] = None, output_filename_suffix: str = '', development_mode: bool = False, verbose: bool = True, exp_std_dir: str = None) None[source]

Batch acquisition (and optional quantification) of X-ray spectra for a list of powder samples.

Parameters:
  • stds (list of dict) –

    List of experimental standard definitions. Each dictionary must contain:

    • ’ID’ (str): Identifier for the standard sample (SampleConfig.ID).

    • ’formula’ (str): Chemical formula of the standard (ExpStandardsConfig.formula).

    • ’pos’ (tuple of float): (x, y) stage coordinates in mm (SampleConfig.center_pos).

    • ’sample_type’ (str): Sample type (‘powder’, ‘bulk’, etc.) (SampleConfig.type).

    • ’is_manual_meas’ (bool): If True, navigation to positions is manual (MeasurementConfig.is_manual_navigation).

  • microscope_ID (str, optional) – Identifier for the microscope hardware. Must correspond to a calibration folder in ./XSp_calibs/Microscopes/<ID> (MicroscopeConfig.ID). Default is ‘PhenomXL’.

  • microscope_type (str, optional) – Type of microscope. Allowed: ‘SEM’ (implemented), ‘STEM’ (not implemented). Default is ‘SEM’ (MicroscopeConfig.type).

  • measurement_type (str, optional) – Measurement type. Allowed: ‘EDS’ (implemented), ‘WDS’ (not implemented). Default is ‘EDS’ (MeasurementConfig.type).

  • measurement_mode (str, optional) – Acquisition mode (e.g., ‘point’, ‘map’), defining beam/detector calibration settings. Default is ‘point’ (MeasurementConfig.mode).

  • sample_halfwidth (float, optional) – Half-width of the sample area in mm for mapping/acquisition. Default is 3.0 (SampleConfig.half_width_mm).

  • sample_substrate_type (str, optional) – Type of sample substrate. Allowed: ‘Ctape’, ‘None’. Default is ‘Ctape’ (SampleSubstrateConfig.type).

  • sample_substrate_shape (str, optional) – Shape of the substrate. Allowed: ‘circle’, ‘square’. Default is ‘circle’ (SampleSubstrateConfig.shape).

  • working_distance (float, optional) – Working distance in mm for acquisition. If None, taken from microscope driver. Default is 5.0 (MeasurementConfig.working_distance).

  • working_distance_tolerance (float, optional) –

    Defines maximum accepted deviation of working distance from its typical value, in mm.

    Used to prevent gross mistakes from EM autofocus. Default: 1 mm.

  • beam_energy (float, optional) – Electron beam energy in keV. Default is 15.0 (MeasurementConfig.beam_energy_keV).

  • spectrum_lims (tuple of float, optional) – Lower and upper energy limits for spectrum fitting in eV. Default is (14, 1100) (QuantConfig.spectrum_lims).

  • use_instrument_background (bool, optional) – Whether to use instrument background files during fitting. If False, background is computed during fitting. Default is False (QuantConfig.use_instrument_background).

  • min_bckgrnd_cnts (float, optional) – Minimum background counts required for a spectrum not to be filtered out. Default is 5 (QuantConfig.min_bckgrnd_cnts).

  • fit_during_collection (bool, optional) – If True, fit spectra during acquisition; otherwise fit later. Default is True.

  • update_std_library (bool, optional) – If True, update the stored experimental standards library after acquisition. Default is False.

  • is_auto_substrate_detection (bool, optional) – If True, substrate elements are detected automatically. Implemented only for ‘Ctape’ substrates. Default is False (SampleSubstrateConfig.auto_detection).

  • auto_adjust_brightness_contrast (bool, optional) – If True, brightness/contrast are set automatically. Default is True (MicroscopeConfig.is_auto_BC).

  • contrast (float, optional) – Manual contrast setting (required if auto_adjust_brightness_contrast is False). Default is 4.3877 (MicroscopeConfig.contrast).

  • brightness (float, optional) – Manual brightness setting (required if auto_adjust_brightness_contrast is False). Default is 0.4504 (MicroscopeConfig.brightness).

  • min_n_spectra (int, optional) – Minimum number of spectra to acquire. Default is 50 (MeasurementConfig.min_n_spectra).

  • max_n_spectra (int, optional) – Maximum number of spectra to acquire. Default is 100 (MeasurementConfig.max_n_spectra).

  • target_Xsp_counts (int, optional) – Target counts for spectrum acquisition. Default is 250000 (MeasurementConfig.target_acquisition_counts).

  • max_XSp_acquisition_time (float, optional) – Maximum acquisition time in seconds. If None, estimated from target counts. Default is None (MeasurementConfig.max_acquisition_time).

  • els_substrate (list of str, optional) – List of substrate element symbols. Default is [‘C’, ‘O’, ‘Al’] (SampleSubstrateConfig.elements).

  • powder_meas_cfg_kwargs (dict, optional) – Additional keyword arguments for PowderMeasurementConfig.

  • bulk_meas_cfg_kwargs (dict, optional) – Additional keyword arguments for BulkMeasurementConfig.

  • exp_stds_meas_cfg_kwargs (dict, optional) – Additional keyword arguments for ExpStandardsConfig. Used to customize experimental standard acquisition and PB ratio filtering.

  • output_filename_suffix (str, optional) – String appended to output filenames. Default is ‘’.

  • development_mode (bool, optional) – If True, enables development/debug features. Default is False.

  • verbose (bool, optional) – If True, print verbose output. Default is True.

  • exp_std_dir (str, optional) – Directory where experimental standard results are saved. Default is None.

Returns:

results – A list of the composition analysis objects (one per sample) containing the results and methods for further analysis.

Return type:

list(EMXSp_Composition_Analyzer)