A Python client for the new RunRegistry. A Python client for the old RunRegistry can be found here.
pip install runregistryclient
Since mai 2019 the run registry requires authenticaion with a CERN user account. Therefore you need to setup your CERN Grid User Certificate as instructed in the cernrequests package:
See: https://github.com/ptrstn/cernrequests#prerequisites
If you want a single run, do this:
import runreg
runreg.get(run_number=327600)
If you prefer a non-nested JSON output, use the flat=True
parameter.
import runreg
runreg.get(run_number=327600, flat=True)
runreg
assumes the tracker workspace by default.
If you want to change it, you can do so by specifying the workspace
attribute:
import runreg
runreg.get(run_number=327600, workspace="global")
If you want to use several filters at once, for example, to filter according to a sequence number range with certain criteria, you can do it this way:
import runreg
runreg.get(run_number=[(327596, ">="), (327744, "lte")], name=("%Cosmics%", "like"))
Or if you prefer Django like lookup fields:
import runreg
runreg.get(run_number__gte=327596, run_number__lte=327744, name__like="%Cosmics%")
Following operators are supported:
=
oreq
(assumed per default)>=
orgte
>
orgt
<=
orlte
<
orlt
like
The operators should be specified as the second element of a (value, operator) tuple such as (321123, "<=")
.
All available attributes can be found in the docs
folder under attributes.md
.
Python version 3.5 or higher is required.
If you want to improve this software, you should follow these steps:
git clone https://github.com/CMSTrackerDPG/runregistryclient
cd runregistryclient
python -m venv venv
. venv/bin/activate
pip install -e .
pip install -r testing-requirements.txt
pytest --cov .
If you want to filter for subcomponent states such as Pixel or SiStrip, you must use the attribute names specified in the RunRegistry API. Unfortunately, they contain "-" and "." characters, so you need to use a little trick.
For example, to filter for the Track
Status
in the workspace Tracker
then you need to do:
import runreg
runreg.get(**{"tracker-track.status": "GOOD"})
You can still combine this with other attributes and options:
import runreg
runreg.get(flat=True, run_number=[(327596, ">="), (327744, "lte")], **{"pix.status": "EXCLUDED", "strip.status":"GOOD"})
track
is used for the global workspace, while tracker-track
uses the tracker workspace.
The same is true for tracker-pix
/ pix
and tracker-strip
/ strip
.
No.