Skip to content

Commit d72321e

Browse files
committed
add option to add new table to old filter runshistdb, so now its possible to get metadata from hd and vd tables, and each one will have a specific prefix
1 parent 1080d7a commit d72321e

1 file changed

Lines changed: 31 additions & 1 deletion

File tree

DUNE_specials/custom_filters/runsdb_incondb.py

Lines changed: 31 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,14 +32,20 @@ def __init__ (self, config):
3232
self.ConnPool = ConnectionPool(postgres=self.Connection, max_idle_connections=1)
3333
self.FolderName = self.Config["folder"]
3434
self.MetaPrefix = self.Config.get("meta_prefix", "runs_history")
35-
35+
self.FolderName1 = self.Config.get("folder1")
36+
self.MetaPrefix1 = self.Config.get("meta_prefix1", f"{self.MetaPrefix}_vd")
3637
#
3738
# get column names
3839
#
3940

4041
db = ConDB(self.ConnPool)
4142
folder = db.openFolder(self.FolderName)
4243
self.ColumnTypes = folder.data_column_types() if folder is not None else None
44+
45+
self.ColumnTypes1 = None
46+
if self.FolderName1:
47+
folder1 = db.openFolder(self.FolderName1)
48+
self.ColumnTypes1 = folder1.data_column_types() if folder1 is not None else None
4349

4450
def hide(self, conn, *fields):
4551
for f in fields:
@@ -59,8 +65,14 @@ def filter(self, inputs, **ignore):
5965
# Conect to db via condb python API
6066
db = ConDB(self.ConnPool)
6167
folder = db.openFolder(self.FolderName)
68+
69+
#Open folder1 if configured
70+
folder1 = None
71+
if self.FolderName1:
72+
folder1 = db.openFolder(self.FolderName1)
6273

6374
data_by_run = {} # cache data by run number across chunks
75+
data_by_run1 = {} # cache for folder 1 if needed
6476

6577
# Get files from metacat input
6678
file_set = inputs[0]
@@ -81,16 +93,34 @@ def filter(self, inputs, **ignore):
8193
runnum, data = row[1], row[4:]
8294
if runnum not in data_by_run:
8395
data_by_run[runnum] = data
96+
97+
#folder1 (optional)
98+
if folder1:
99+
data_runhist1 = folder1.getData(min(need_run_nums), t1=max(need_run_nums))
100+
for row in data_runhist1:
101+
runnum, data = row[1], row[4:]
102+
if runnum not in data_by_run1:
103+
data_by_run1[runnum] = data
84104

85105
# Insert run hist data to Metacat
86106
for f in chunk:
87107
runnum = self.file_run_number(f.Metadata)
108+
if runnum is None:
109+
continue
110+
#insert metadata from folder
88111
if runnum is not None and runnum in data_by_run and data_by_run[runnum] is not None:
89112
for (col, typ), value in zip(self.ColumnTypes, data_by_run[runnum]):
90113
if typ.startswith("timestamp") and value is not None:
91114
value = value.timestamp()
92115
f.Metadata[f"{self.MetaPrefix}.{col}"] = value
93116

117+
#insert metadata from folder1
118+
if self.ColumnTypes1 and runnum in data_by_run1 and data_by_run1[runnum] is not None:
119+
for (col, typ), value in zip(self.ColumnTypes1, data_by_run1[runnum]):
120+
if typ.startswith("timestamp") and value is not None:
121+
value = value.timestamp()
122+
f.Metadata[f"{self.MetaPrefix1}.{col}"] = value
123+
94124
yield from chunk
95125

96126

0 commit comments

Comments
 (0)