|
6 | 6 | parser = optparse.OptionParser() |
7 | 7 | parser.add_option("--get-parent", dest="get_parent", action="store_true", default=False) |
8 | 8 | parser.add_option("--get-files", dest="get_files", action="store_true", default=False) |
| 9 | +parser.add_option("--get-meta", dest="get_meta", action="store_true", default=False) |
| 10 | +parser.add_option("--get-cmsdb", dest="get_cmsdb", action="store_true", default=False) |
9 | 11 | parser.add_option("--get-xs", dest="get_xs", action="store_true", default=False) |
10 | 12 | (opts, args) = parser.parse_args() |
11 | 13 |
|
@@ -46,6 +48,51 @@ def get_xs( dataset, nf=1 ): |
46 | 48 | xs_unit = xs_line.split(" ")[-1] |
47 | 49 |
|
48 | 50 | return xs_val, xs_unit |
| 51 | + |
| 52 | +def get_meta( dataset ): |
| 53 | + # first get datasset info and id |
| 54 | + cmd = f"dasgoclient -query='dataset={dataset}' -json" |
| 55 | + infos = call(cmd) |
| 56 | + |
| 57 | + dataset_id = infos[0]["dataset"][0].get("dataset_id", -1) |
| 58 | + dataset_name = infos[0]["dataset"][0]["name"] |
| 59 | + dataset_era = infos[0]["dataset"][0].get("acquisition_era_name", " ")[-1] |
| 60 | + is_data = infos[0]["dataset"][0].get("datatype", "") == "data" |
| 61 | + era_aux = "" |
| 62 | + procs = "" |
| 63 | + if is_data: |
| 64 | + era_aux = {"era": dataset_era} |
| 65 | + procs = "procs.data" |
| 66 | + |
| 67 | + |
| 68 | + # then get number of files |
| 69 | + cmd = f"dasgoclient -query='summary dataset={dataset}' -json" |
| 70 | + infos = call(cmd) |
| 71 | + |
| 72 | + nfiles = infos[0]["summary"][0]["nfiles"] |
| 73 | + nevents = infos[0]["summary"][0]["nevents"] |
| 74 | + |
| 75 | + return {"id": dataset_id, "name": dataset_name, "nfiles": nfiles, "nevents": nevents, "is_data": is_data, "aux": era_aux, "procs": procs} |
| 76 | + |
| 77 | + |
| 78 | +def format_cmsdb( dataset ): |
| 79 | + template = """ |
| 80 | +cpn.add_dataset( |
| 81 | + name="", |
| 82 | + id={id}, |
| 83 | + is_data={is_data}, |
| 84 | + processes=[{procs}], |
| 85 | + keys=[ |
| 86 | + "{name}", |
| 87 | + ], |
| 88 | + n_files={nfiles}, |
| 89 | + n_events={nevents}, |
| 90 | + aux={aux} |
| 91 | +) |
| 92 | +""" |
| 93 | + return template.format( **get_meta(dataset) ) |
| 94 | + |
| 95 | + |
49 | 96 |
|
50 | 97 | # loop over all arguments |
51 | 98 | out_dict = {} |
@@ -76,6 +123,10 @@ def get_xs( dataset, nf=1 ): |
76 | 123 | ret = get_parent(dataset) |
77 | 124 | elif opts.get_xs: |
78 | 125 | ret = get_xs(dataset) |
| 126 | + elif opts.get_meta: |
| 127 | + ret = get_meta(dataset) |
| 128 | + elif opts.get_cmsdb: |
| 129 | + ret = format_cmsdb(dataset) |
79 | 130 | else: |
80 | 131 | # call dasgoclient command |
81 | 132 | cmd = f"dasgoclient -query='dataset={dataset}' -json" |
|
0 commit comments