Source code for meanap.pipeline.output_folders
"""Create the MEA-NAP output folder tree, mirroring ``CreateOutputFolders.m``."""
from __future__ import annotations
from pathlib import Path
# Relative to <output_data_folder>/<output_data_folder_name>
_RELATIVE_FOLDERS = [
"ExperimentMatFiles",
"1_SpikeDetection",
"1_SpikeDetection/1A_SpikeDetectedData",
"1_SpikeDetection/1B_SpikeDetectionChecks",
"2_NeuronalActivity",
"2_NeuronalActivity/2A_IndividualNeuronalAnalysis",
"2_NeuronalActivity/2B_GroupComparisons",
"2_NeuronalActivity/2B_GroupComparisons/1_NodeByGroup",
"2_NeuronalActivity/2B_GroupComparisons/2_NodeByAge",
"2_NeuronalActivity/2B_GroupComparisons/3_RecordingsByGroup",
"2_NeuronalActivity/2B_GroupComparisons/3_RecordingsByGroup/HalfViolinPlots",
"2_NeuronalActivity/2B_GroupComparisons/4_RecordingsByAge",
"2_NeuronalActivity/2B_GroupComparisons/4_RecordingsByAge/HalfViolinPlots",
"3_EdgeThresholdingCheck",
"4_NetworkActivity",
"4_NetworkActivity/4A_IndividualNetworkAnalysis",
"4_NetworkActivity/4B_GroupComparisons",
"4_NetworkActivity/4B_GroupComparisons/1_NodeByGroup",
"4_NetworkActivity/4B_GroupComparisons/2_NodeByAge",
"4_NetworkActivity/4B_GroupComparisons/3_RecordingsByGroup",
"4_NetworkActivity/4B_GroupComparisons/3_RecordingsByGroup/HalfViolinPlots",
"4_NetworkActivity/4B_GroupComparisons/4_RecordingsByAge",
"4_NetworkActivity/4B_GroupComparisons/4_RecordingsByAge/HalfViolinPlots",
"4_NetworkActivity/4B_GroupComparisons/5_GraphMetricsByLag",
"4_NetworkActivity/4B_GroupComparisons/6_NodeCartographyByLag",
"4_NetworkActivity/4B_GroupComparisons/7_DensityLandscape",
]
# Mirrors the (root-level, missing "2_NeuronalActivity" prefix) paths used by
# CreateOutputFolders.m when Params.includeNotBoxPlots is set.
_NOT_BOX_PLOT_FOLDERS = [
"2B_GroupComparisons/3_RecordingsByGroup/NotBoxPlots",
"2B_GroupComparisons/4_RecordingsByAge/NotBoxPlots",
]
[docs]
def create_output_folders(
output_data_folder: Path | str,
output_data_folder_name: str,
group_names: list[str],
include_not_box_plots: bool = False,
) -> Path:
"""Create the MEA-NAP output folder structure and return its root path.
Root path is ``output_data_folder/output_data_folder_name``. One
``4_NetworkActivity/4A_IndividualNetworkAnalysis/<group>`` folder is created
per entry in ``group_names``.
"""
root = Path(output_data_folder) / output_data_folder_name
root.mkdir(parents=True, exist_ok=True)
for rel in _RELATIVE_FOLDERS:
(root / rel).mkdir(parents=True, exist_ok=True)
for group in group_names:
(root / "4_NetworkActivity" / "4A_IndividualNetworkAnalysis" / group).mkdir(
parents=True, exist_ok=True
)
if include_not_box_plots:
for rel in _NOT_BOX_PLOT_FOLDERS:
(root / rel).mkdir(parents=True, exist_ok=True)
return root