diff --git a/create_analysis_tree.py b/create_analysis_tree.py new file mode 100644 index 0000000000000000000000000000000000000000..0a1e09cbfa1e8b46a10947f085d84753864fc81e --- /dev/null +++ b/create_analysis_tree.py @@ -0,0 +1,95 @@ +"""Create the directory structure for an analysis. + Change the default value for the Parent folder in the argparse + + Parent_Folder + └──DL1 + ├── source + │ └── night + │ └── version + │ └── cleaning + DL2 + ├── source + │ └── night + │ └── version + │ └── cleaning + DL3 + └── source + └── night + └── version + └── cleaning +""" + +import os +import argparse +from argparse import RawTextHelpFormatter + + +def makedir(name): + """ + Create folder if non-existent and output OS error if any. + + Parameters + ---------- + name : str + Name of the analysis. + """ + + # Create target Directory if don't exist + if not os.path.exists(name): + os.makedirs(name) + print("Directory ", name, " Created ") + else: + print("Directory ", name, " already exists") + return None + + +def main(): + # define command-line arguments + description = 'Create a directory structure' + + parser = argparse.ArgumentParser( + description=description, + formatter_class=RawTextHelpFormatter + ) + + parser.add_argument( + '--main_dir', type=str, required=False, dest='main_dir', + default='/fefs/aswg/workspace/alice.donini/Analysis/data', + help='Path to parent folder' + ) + + parser.add_argument( + '--source', type=str, required=True, dest='source', + help='Source name' + ) + + parser.add_argument( + '--night', type=str, required=True, dest='night', + help='Night date' + ) + + parser.add_argument( + '--version', type=str, required=False, dest='version', + default='v0.9.2', help='lstchain version' + ) + + parser.add_argument( + '--cleaning', type=str, required=False, dest='cleaning', + default='tailcut84', help='Cleaning type' + ) + + args = parser.parse_args() + + # Define analysis directories and subdirectories + data_dir = ['DL1', 'DL2', 'DL3'] + structure = f'{args.source}/{args.night}/{args.version}/{args.cleaning}' + + for folder in data_dir: + dirName = os.path.join(f'{args.main_dir}', str(folder), structure) + makedir(dirName) + + print(f'Directory structure ready for analysis on {args.source}.') + + +if __name__ == "__main__": + main()