@@ -10,7 +10,7 @@ This includes:
10
10
- the same for partition level tiers
11
11
"""
12
12
13
- import pathlib , os , json , sys
13
+ import pathlib , os , json , sys , glob
14
14
import scripts .util as ds
15
15
from scripts .util .pars_loading import pars_catalog
16
16
from scripts .util .patterns import get_pattern_tier_raw
@@ -21,6 +21,8 @@ from scripts.util.utils import (
21
21
chan_map_path ,
22
22
filelist_path ,
23
23
metadata_path ,
24
+ tmp_log_path ,
25
+ pars_path ,
24
26
)
25
27
from datetime import datetime
26
28
from collections import OrderedDict
@@ -41,68 +43,59 @@ part = ds.dataset_file(setup, os.path.join(configs, "partitions.json"))
41
43
basedir = workflow .basedir
42
44
43
45
44
- include : "rules/common.smk"
45
- include : "rules/main.smk"
46
-
47
-
48
- localrules :
49
- gen_filelist ,
50
- autogen_output ,
51
-
52
-
53
- ds .pars_key_resolve .write_par_catalog (
54
- ["-*-*-*-cal" ],
55
- os .path .join (pars_path (setup ), "pht" , "validity.jsonl" ),
56
- get_pattern_tier_raw (setup ),
57
- {"cal" : ["par_pht" ], "lar" : ["par_pht" ]},
58
- )
46
+ wildcard_constraints :
47
+ experiment = "\w+" ,
48
+ period = "p\d{2}" ,
49
+ run = "r\d{3}" ,
50
+ datatype = "\w{3}" ,
51
+ timestamp = "\d{8}T\d{6}Z" ,
59
52
60
53
54
+ include : "rules/common.smk"
55
+ include : "rules/main.smk"
61
56
include : "rules/tcm.smk"
62
57
include : "rules/dsp.smk"
58
+ include : "rules/psp.smk"
63
59
include : "rules/hit.smk"
64
60
include : "rules/pht.smk"
65
61
include : "rules/evt.smk"
66
62
include : "rules/skm.smk"
67
63
include : "rules/blinding_calibration.smk"
64
+ include : "rules/qc_phy.smk"
65
+
66
+
67
+ localrules :
68
+ gen_filelist ,
69
+ autogen_output ,
68
70
69
71
70
72
onstart :
71
73
print ("Starting workflow" )
72
- shell (f"rm { pars_path (setup )} /dsp/validity.jsonl || true" )
73
- shell (f"rm { pars_path (setup )} /hit/validity.jsonl || true" )
74
- shell (f"rm { pars_path (setup )} /pht/validity.jsonl || true" )
75
- shell (f"rm { pars_path (setup )} /raw/validity.jsonl || true" )
76
- ds .pars_key_resolve .write_par_catalog (
77
- ["-*-*-*-cal" ],
78
- os .path .join (pars_path (setup ), "raw" , "validity.jsonl" ),
79
- get_pattern_tier_raw (setup ),
80
- {"cal" : ["par_raw" ]},
81
- )
82
- ds .pars_key_resolve .write_par_catalog (
83
- ["-*-*-*-cal" ],
84
- os .path .join (pars_path (setup ), "dsp" , "validity.jsonl" ),
85
- get_pattern_tier_raw (setup ),
86
- {"cal" : ["par_dsp" ], "lar" : ["par_dsp" ]},
87
- )
74
+ if os .path .isfile (os .path .join (pars_path (setup ), "hit" , "validity.jsonl" )):
75
+ os .remove (os .path .join (pars_path (setup ), "hit" , "validity.jsonl" ))
76
+
77
+
88
78
ds .pars_key_resolve .write_par_catalog (
89
79
["-*-*-*-cal" ],
90
80
os .path .join (pars_path (setup ), "hit" , "validity.jsonl" ),
91
81
get_pattern_tier_raw (setup ),
92
82
{"cal" : ["par_hit" ], "lar" : ["par_hit" ]},
93
83
)
84
+
85
+ if os .path .isfile (os .path .join (pars_path (setup ), "dsp" , "validity.jsonl" )):
86
+ os .remove (os .path .join (pars_path (setup ), "dsp" , "validity.jsonl" ))
94
87
ds .pars_key_resolve .write_par_catalog (
95
88
["-*-*-*-cal" ],
96
- os .path .join (pars_path (setup ), "pht " , "validity.jsonl" ),
89
+ os .path .join (pars_path (setup ), "dsp " , "validity.jsonl" ),
97
90
get_pattern_tier_raw (setup ),
98
- {"cal" : ["par_pht " ], "lar" : ["par_pht " ]},
91
+ {"cal" : ["par_dsp " ], "lar" : ["par_dsp " ]},
99
92
)
100
93
101
94
102
95
onsuccess :
103
96
from snakemake .report import auto_report
104
97
105
- rep_dir = f"{ log_path (setup )} /report-{ datetime .strftime (datetime .utcnow (), '%Y%m%dT%H%M%SZ' )} "
98
+ rep_dir = f"{ log_path (setup )} /report-{ datetime .strftime (datetime .utcnow () , '%Y%m%dT%H%M%SZ' )} "
106
99
pathlib .Path (rep_dir ).mkdir (parents = True , exist_ok = True )
107
100
# auto_report(workflow.persistence.dag, f"{rep_dir}/report.html")
108
101
with open (os .path .join (rep_dir , "dag.txt" ), "w" ) as f :
@@ -112,8 +105,32 @@ onsuccess:
112
105
f .writelines (str (workflow .persistence .dag .rule_dot ()))
113
106
# shell(f"cat {rep_dir}/rg.txt | dot -Tpdf > {rep_dir}/rg.pdf")
114
107
print ("Workflow finished, no error" )
115
- shell ("rm *.gen || true" )
116
- shell (f"rm { filelist_path (setup )} /* || true" )
108
+
109
+ # remove .gen files
110
+ files = glob .glob ("*.gen" )
111
+ for file in files :
112
+ if os .path .isfile (file ):
113
+ os .remove (file )
114
+
115
+ # remove filelists
116
+ files = glob .glob (os .path .join (filelist_path (setup ), "*" ))
117
+ for file in files :
118
+ if os .path .isfile (file ):
119
+ os .remove (file )
120
+ if os .path .exists (filelist_path (setup )):
121
+ os .rmdir (filelist_path (setup ))
122
+
123
+ # remove logs
124
+ files = glob .glob (os .path .join (tmp_log_path (setup ), "*" , "*.log" ))
125
+ for file in files :
126
+ if os .path .isfile (file ):
127
+ os .remove (file )
128
+ dirs = glob .glob (os .path .join (tmp_log_path (setup ), "*" ))
129
+ for d in dirs :
130
+ if os .path .isdir (d ):
131
+ os .rmdir (d )
132
+ if os .path .exists (tmp_log_path (setup )):
133
+ os .rmdir (tmp_log_path (setup ))
117
134
118
135
119
136
# Placeholder, can email or maybe put message in slack
0 commit comments