Source code for analyzer.cli.sample_report
import itertools as it
import io
import csv
from rich.table import Table
[docs]
def createSampleTable(manager, pattern=None, as_csv=False):
table = Table(title="Samples")
table.add_column("Dataset")
table.add_column("Sample Name")
table.add_column("Number Events")
table.add_column("Data/MC")
table.add_column("Era")
table.add_column("X-Sec")
everything = list(
it.chain.from_iterable((y.params for y in manager[x]) for x in sorted(manager))
)
everything.sort(key=lambda x: x.name)
if pattern is not None:
everything = [x for x in everything if pattern.match(x)]
for s in everything:
xs = s.x_sec
table.add_row(
s.dataset.name,
s.name,
f"{str(s.n_events)}",
s.dataset.sample_type,
f"{s.dataset.era.name}",
f"{xs:0.3g}" if xs else "N/A",
)
if not as_csv:
return table
else:
d = {x.header: x.cells for x in table.columns}
output = output = io.StringIO()
writer = csv.writer(output, quoting=csv.QUOTE_NONNUMERIC)
headers = list(d)
vals = zip(*(d[x] for x in headers))
writer.writerow(headers)
for r in vals:
writer.writerow(r)
return output.getvalue()
[docs]
def createDatasetTable(manager, pattern=None, as_csv=False):
table = Table(title="Samples")
table.add_column("Dataset")
table.add_column("Num Samples")
table.add_column("Data/MC")
table.add_column("Era")
everything = [manager[x] for x in sorted(manager)]
if pattern is not None:
everything = [x for x in everything if pattern.match(x.params)]
for s in everything:
table.add_row(
s.params.name,
f"{len(s)}",
s.params.sample_type,
f"{s.params.era.name}",
)
if not as_csv:
return table
else:
d = {x.header: x.cells for x in table.columns}
output = output = io.StringIO()
writer = csv.writer(output, quoting=csv.QUOTE_NONNUMERIC)
headers = list(d)
vals = zip(*(d[x] for x in headers))
writer.writerow(headers)
for r in vals:
writer.writerow(r)
return output.getvalue()