Source code for ipfx.bin.run_pipeline
import logging
import argschema as ags
import allensdk.core.json_utilities as json_utilities
import ipfx.sweep_props as sweep_props
from ipfx.logging_utils import log_pretty_header
from ipfx._schemas import PipelineParameters
from ipfx.bin.run_sweep_extraction import run_sweep_extraction
from ipfx.bin.run_qc import run_qc
from ipfx.bin.run_feature_extraction import run_feature_extraction
[docs]def run_pipeline(
input_nwb_file,
output_nwb_file,
stimulus_ontology_file,
qc_fig_dir,
qc_criteria,
manual_sweep_states,
write_spikes=True
):
se_output = run_sweep_extraction(
input_nwb_file,
stimulus_ontology_file
)
sweep_props.drop_tagged_sweeps(se_output["sweep_features"])
sweep_props.remove_sweep_feature("tags", se_output["sweep_features"])
qc_output = run_qc(
stimulus_ontology_file,
se_output["cell_features"],
se_output["sweep_features"],
qc_criteria
)
sweep_props.override_auto_sweep_states(
manual_sweep_states, qc_output["sweep_states"]
)
sweep_props.assign_sweep_states(
qc_output["sweep_states"], se_output["sweep_features"]
)
fx_output = run_feature_extraction(
input_nwb_file,
stimulus_ontology_file,
output_nwb_file,
qc_fig_dir,
se_output['sweep_features'],
se_output['cell_features'],
write_spikes,
)
log_pretty_header("Analysis completed!", level=1)
return {
"sweep_extraction": se_output,
"qc": qc_output,
"feature_extraction": fx_output
}
[docs]def main():
"""
Usage:
python run_pipeline.py --input_json INPUT_JSON --output_json OUTPUT_JSON
"""
module = ags.ArgSchemaParser(schema_type=PipelineParameters)
output = run_pipeline(
module.args["input_nwb_file"],
module.args["output_nwb_file"],
module.args.get("stimulus_ontology_file", None),
module.args.get("qc_fig_dir", None),
module.args.get("qc_criteria", None),
module.args.get("manual_sweep_states", None),
module.args.get("write_spikes", None),
)
json_utilities.write(module.args["output_json"], output)
if __name__ == "__main__":
main()