#! /usr/bin/env python
###############################################################################
# Loop on all detectors/tag/defect tag directories to execute a shell command
#
# - -location km3dq_perf
# Loop on all detectors [det] km3dq_perf/[site]/[det]/
#
# - - location km3dq_perf_dq_tag -t [dq tag]
# Loop on all detectors [det] km3dq_perf/[site]/[det]/[dq tag]
#
# - -location km3dq_lw_db
# Loop on all detectors [det] km3dq_lw_db/[site]/[det]/
#
# - -location km3dq_lw_db_defect_tag -d [defect tag]
# Loop on all detectors [det] km3dq_lw_db/[site]/[det]/[defect tag]
import os
import sys
import argparse
from km3dq_common.config_library import configure_dataquality_tag
###############################################################################
[docs]
parser = argparse.ArgumentParser(description='')
parser.add_argument('-s', '--site',
dest='site',
required=True,
help=('Site. List of detectors derived from the DQ tag'),
action='store')
parser.add_argument("-t", "--dq_tag",
dest="dq_tag",
default="",
required=True,
help="Data-quality tag.", action="store")
parser.add_argument("-d", "--defect_tag",
dest="defect_tag",
default="",
help="Defect tag.", action="store")
parser.add_argument("-l", "--location",
dest="location",
default="",
required=True,
help=("Location: km3dq_perf, km3dq_perf_dq_tag, "
"km3dq_lw_db, km3dq_lw_db_defect_tag"),
action="store")
parser.add_argument("-e", "--execute",
dest="execute",
help=("Execute"),
action="store_true")
[docs]
args = parser.parse_args()
[docs]
options = args.__dict__
[docs]
dq_tag = configure_dataquality_tag(options["dq_tag"])
[docs]
det_list = dq_tag['det'][site]
for i_det in det_list:
print(f"{i_det}===========")
if options["location"] == "km3dq_perf":
[docs]
dir_path = ("/pbs/home/t/trocme/KM3Net/infrastructure/km3dq_perf/"
f"{site}/{i_det}")
# To be edited by hand for your purposes
cmd = (f"cd {dir_path};"
"mv mass_processing mp1_0_1-d2024_1-g24;"
"mv mass_processing_veto_sparks mp1_0_1-d2024_1-g24_vsparks;")
elif all((options["location"] == "km3dq_perf_dq_tag",
options["dq_tag"] != "")):
dir_path = ("/pbs/home/t/trocme/KM3Net/infrastructure/km3dq_perf/"
f"{site}/{i_det}/{options['dq_tag']}")
# To be edited by hand for your purposes
miss_dst_file = f"{dir_path}/processing/missing_dst.txt"
if os.path.exists(miss_dst_file) is False:
print(f"{miss_dst_file} missing")
continue
cmd = (f"cd {dir_path};"
f"sed -e 's/hpss/sps/g' {miss_dst_file} > tmp;"
f"mv tmp {miss_dst_file}")
elif options["location"] == "km3dq_lw_db":
dir_path = ("/pbs/home/t/trocme/KM3Net/infrastructure/km3dq_lw_db/"
f"{site}/{i_det}")
# To be edited by hand for your purposes
cmd = f"cd {dir_path}/Defects;mv def-neutrino2024 d2024_0"
elif all((options["location"] == "km3dq_lw_db_defect_tag",
options["defect_tag"] != "")):
dir_path = ("/pbs/home/t/trocme/KM3Net/infrastructure/km3dq_lw_db/"
f"{site}/{i_det}/Defects/{options['defect_tag']}")
# To be edited by hand for your purposes
cmd = f"cd {dir_path};ls"
else:
print("Wrong -l argument")
sys.exit()
print(f"Directory: {dir_path}")
print(f"Command: {cmd}")
if options["execute"]:
os.popen(cmd)
print("Done!")
if first:
confirm = input("Is it as expected [YES/NO]?)")
if confirm == "YES":
first = False
else:
sys.exit()
else:
print("No execution. Choose -e if you want to.")