Workflow for collecting diffraction data from high quality crystals in a cassette.
@begin simulate_data_collection @desc Workflow for collecting diffraction data from high quality crystals in a cassette.
@param cassette_id @desc The unique ID of the cassette containing the crystals.
@param sample_score_cutoff @desc The minimum quality score required of crystals.
@param data_redundancy @desc The desired redundancy of the data sets collected.
@in sample_spreadsheet @desc CSV file giving quality score for each crystal.
@in calibration_image_file @as calibration_image @desc File used to correct raw diffraction images.
@out corrected_image @desc The corrected diffraction images collected on all crystals.
@out run_log
@out collection_log
@out rejection_log
@begin initialize_run @desc Create run directory and initialize log files.
@param cassette_id
@param sample_score_cutoff
@out run_log @uri file:run/run_log.txt
@log {timestamp} Processing samples in cassette {cassette_id}
@log Sample quality cutoff: {sample_score_cutoff}
@end initialize_run
@begin load_screening_results @desc Load sample information from spreadsheet.
@param cassette_id
@in sample_spreadsheet_file @as sample_spreadsheet @uri file:cassette_{cassette_id}_spreadsheet.csv
@out sample_name @out sample_quality
@out run_log @uri file:run/run_log.txt
@log {timestamp} Sample {sample_id} had score of {sample_quality}
@end load_screening_results
@begin calculate_strategy @desc Reject unsuitable crystals and compute \n best data sets to collect for accepted crystals.
@param sample_score_cutoff @param data_redundancy @param sample_name @param sample_quality
@out accepted_sample @out rejected_sample @out num_images @out energies
@end calculate_strategy
@begin log_rejected_sample @desc Record which samples were rejected.
@param cassette_id  @param rejected_sample
@out rejection_log @uri file:run/rejected_samples.txt @log Rejected sample {rejected_sample} in cassette {cassette_id}
@end log_rejected_sample
@begin collect_data_set @desc Collect data set using the given data collection parameters.
@param cassette_id  @param num_images  @param accepted_sample @param energies
@out sample_id @desc The crystal that the diffraction image was collected from.
@out energy @desc Energy (in eV) at which the diffraction image was collected.
@out frame_number @desc Index of diffraction image within data set.
@out raw_image_file @as raw_image @desc Path of file storing the raw diffraction image.
@uri file:run/raw/{cassette_id}/{sample_id}/e{energy}/image_{frame_number}.raw
@out run_log @uri file:run/run_log.txt
@log {timestamp} Collecting data set for sample {sample_id}
@log {timestamp} Collecting image {raw_image_path}
@end collect_data_set
@begin transform_images @desc Correct raw image using the detector calibration image.
@param sample_id  @param energy  @param frame_number
@in raw_image_file @as raw_image
@in calibration_image_file @as calibration_image
@out corrected_image_file @as corrected_image @uri file:run/data/{sample_id}/{sample_id}_{energy}eV_{frame_number}.img
@out total_intensity  @out pixel_count
@out run_log @uri file:run/run_log.txt
@log {timestamp} Wrote transformed image {corrected_image_path}
@end transform_images
@begin log_average_image_intensity @desc Record statistics about each diffraction image.
@param cassette_id @param sample_id @param frame_number @param total_intensity @param pixel_count
@in corrected_image_file @AS corrected_image
@out collection_log @uri file:run/collected_images.csv
@log {cassette_id},{sample_id},{energy},{average_intensity},{corrected_image_path}
@end log_average_image_intensity
@end simulate_data_collection
@begin calculate_strategy
@param sample_name
@param sample_quality
@param sample_score_cutoff
@param data_redundancy
@return accepted_sample
@return rejected_sample
@return num_images
@return energies
@end calculate_strategy
@begin collect_next_image
@param cassette_id
@param sample_id
@param num_images
@param energies
@param image_path_template
@return energy
@return frame_number
@return intensity
@return raw_image_path
@end collect_next_image
@begin transform_image
@param raw_image_path
@param corrected_image_path
@param calibration_image_path
@return total_intensity
@return pixel_count
@return corrected_image_path
@end transform_image
define command line options
parse command line options
validate options
run the simulation using the provided options
