Pipeline Development¶
Validation Schema¶
C-PAC uses voluptuous to validate pipeline configurations against defined types and value restrictions. Default values should be set in the default pipeline along with comments explaining each option.
Validation schema for C-PAC pipeline configurations
- CPAC.pipeline.schema.name_motion_filter(mfilter, mfilters=None)[source]¶
Given a motion filter, create a short string for the filename
Examples
>>> name_motion_filter({'filter_type': 'notch', 'filter_order': 2, ... 'center_frequency': 0.31, 'filter_bandwidth': 0.12}) 'notch2fc0p31bw0p12' >>> name_motion_filter({'filter_type': 'notch', 'filter_order': 4, ... 'breathing_rate_min': 0.19, 'breathing_rate_max': 0.43}) 'notch4fl0p19fu0p43' >>> name_motion_filter({'filter_type': 'lowpass', 'filter_order': 4, ... 'lowpass_cutoff': .0032}) 'lowpass4fc0p0032' >>> name_motion_filter({'filter_type': 'lowpass', 'filter_order': 2, ... 'breathing_rate_min': 0.19}) 'lowpass2fl0p19' >>> name_motion_filter({'filter_type': 'lowpass', 'filter_order': 2, ... 'breathing_rate_min': 0.19}, [{'Name': 'lowpass2fl0p19'}]) 'lowpass2fl0p19dup1' >>> name_motion_filter({'filter_type': 'lowpass', 'filter_order': 2, ... 'breathing_rate_min': 0.19}, [{'Name': 'lowpass2fl0p19'}, ... {'Name': 'lowpass2fl0p19dup1'}]) 'lowpass2fl0p19dup2'
- CPAC.pipeline.schema.permutation_message(key, options)[source]¶
Function to give a clean, human-readable error message for keys that accept permutation values
- CPAC.pipeline.schema.sanitize(filename)[source]¶
Sanitize a filename and replace whitespaces with underscores
- CPAC.pipeline.schema.schema(config_dict)[source]¶
Validate a pipeline configuration against the latest validation schema by first applying backwards-compatibility patches, then applying Voluptuous validation, then handling complex configuration interaction checks before returning validated config_dict.
- CPAC.pipeline.schema.str_to_bool1_1(x)[source]¶
Convert strings to Booleans for YAML1.1 syntax
Ref https://yaml.org/type/bool.html
- Parameters:
x (
any
) –- Return type:
Pipeline Utilities¶
C-PAC pipeline engine utilities
- CPAC.pipeline.utils.name_fork(resource_idx, cfg, json_info, out_dct)[source]¶
Create and insert entities for forkpoints
- CPAC.pipeline.utils.present_outputs(outputs: dict, keys: list) dict [source]¶
Given an outputs dictionary and a list of output keys, returns the subset of
outputs
that includes all keys inkeys
that are present. I.e.,motion_correct_connections
will have different items in itsoutputs
dictionary at different times depending on themotion_correction
configuration;func_motion_estimates
can then wrap thatoutputs
in this function and provide a list of keys of the desired outputs to include, if they are present in the providedoutputs
dictionary, eliminating the need for multiple NodeBlocks that differ only by configuration options and relevant output keys.- Parameters:
- Returns:
outputs filtered down to keys
- Return type:
Examples
>>> present_outputs({'a': 1, 'b': 2, 'c': 3}, ['b']) {'b': 2} >>> present_outputs({'a': 1, 'b': 2, 'c': 3}, ['d']) {} >>> present_outputs({'a': 1, 'b': 2, 'c': 3}, ['a', 'c']) {'a': 1, 'c': 3}
- CPAC.pipeline.utils.source_set(sources: str | list | set) set [source]¶
Given a CpacProvenance, return a set of {resource}:{source} strings
Examples
>>> source_set([[[['bold:func_ingress', ... 'desc-preproc_bold:func_reorient', ... 'desc-preproc_bold:func_truncate'], ... ['TR:func_metadata_ingress'], ... ['tpattern:func_metadata_ingress'], ... 'desc-preproc_bold:func_slice_time'], ... [['bold:func_ingress', ... 'desc-preproc_bold:func_reorient', ... 'desc-preproc_bold:func_truncate'], ... ['bold:func_ingress', 'desc-reorient_bold:func_reorient'], ... 'motion-basefile:get_motion_ref_fmriprep_reference'], ... 'desc-preproc_bold:motion_correction_only_mcflirt'], ... [[['bold:func_ingress', ... 'desc-preproc_bold:func_reorient', ... 'desc-preproc_bold:func_truncate'], ... ['bold:func_ingress', 'desc-reorient_bold:func_reorient'], ... 'motion-basefile:get_motion_ref_fmriprep_reference'], ... [[['bold:func_ingress', ... 'desc-preproc_bold:func_reorient', ... 'desc-preproc_bold:func_truncate'], ... ['TR:func_metadata_ingress'], ... ['tpattern:func_metadata_ingress'], ... 'desc-preproc_bold:func_slice_time'], ... [['bold:func_ingress', ... 'desc-preproc_bold:func_reorient', ... 'desc-preproc_bold:func_truncate'], ... ['bold:func_ingress', 'desc-reorient_bold:func_reorient'], ... 'motion-basefile:get_motion_ref_fmriprep_reference'], ... 'desc-preproc_bold:motion_correction_only_mcflirt'], ... ['FSL-AFNI-bold-ref:template_resample'], ... ['FSL-AFNI-brain-mask:template_resample'], ... ['FSL-AFNI-brain-probseg:template_resample'], ... 'space-bold_desc-brain_mask:bold_mask_fsl_afni'], ... 'desc-preproc_bold:bold_masking']) == set({ ... 'FSL-AFNI-bold-ref:template_resample', ... 'FSL-AFNI-brain-mask:template_resample', ... 'FSL-AFNI-brain-probseg:template_resample', ... 'TR:func_metadata_ingress', ... 'bold:func_ingress', ... 'desc-preproc_bold:bold_masking', ... 'desc-preproc_bold:func_reorient', ... 'desc-preproc_bold:func_slice_time', ... 'desc-preproc_bold:func_truncate', ... 'desc-preproc_bold:motion_correction_only_mcflirt', ... 'desc-reorient_bold:func_reorient', ... 'motion-basefile:get_motion_ref_fmriprep_reference', ... 'space-bold_desc-brain_mask:bold_mask_fsl_afni', ... 'tpattern:func_metadata_ingress'}) True