Source code for ipfx.bin.run_pipeline_from_nwb_file
import allensdk.core.json_utilities as ju
import os.path
from ipfx.bin.run_pipeline import run_pipeline
from ipfx.bin.generate_pipeline_input import generate_pipeline_input
import ipfx.logging_utils as lu
import argparse
[docs]def main():
"""
Convenience script for running ephys pipeline from a given nwb file
It generates the pipeline input and then calls the run_pipeline executable
Usage:
python run_pipeline_from_nwb_file.py <input_nwb_file> <output_dir>
"""
parser = argparse.ArgumentParser(
description="Process an nwb file through the ephys pipeline"
)
parser.add_argument("input_nwb_file", type=str)
parser.add_argument("output_dir", type=str)
parser.add_argument("--input_json", type=str, default="input_json")
parser.add_argument("--output_json", type=str, default="output_json")
args = vars(parser.parse_args())
output_dir = args["output_dir"]
input_nwb_file = args["input_nwb_file"]
input_json = args["input_json"]
output_json = args["output_json"]
input_nwb_file_basename = os.path.basename(input_nwb_file)
cell_name = os.path.splitext(input_nwb_file_basename)[0]
cell_dir = os.path.join(output_dir, cell_name)
os.makedirs(cell_dir, exist_ok=True)
lu.configure_logger(cell_dir)
pipeline_input = generate_pipeline_input(cell_dir=cell_dir,
input_nwb_file=input_nwb_file)
input_json = os.path.join(cell_dir, input_json)
ju.write(input_json, pipeline_input)
# reading back from disk
pipeline_input = ju.read(input_json)
pipeline_output = run_pipeline(pipeline_input["input_nwb_file"],
pipeline_input["output_nwb_file"],
pipeline_input.get("stimulus_ontology_file", None),
pipeline_input.get("qc_fig_dir", None),
pipeline_input["qc_criteria"],
pipeline_input["manual_sweep_states"])
ju.write(os.path.join(cell_dir, output_json), pipeline_output)
if __name__ == "__main__":
main()