ITk Serial Number parser
Project description
itksn v0.4.2
Helper utility for parsing ITk Serial Numbers
Using
From the command line, you can parse serial numbers. If there is an error in parsing, it will loudly complain (sometimes).
$ itksn parse 20UPGMC2291234
Container:
atlas_project = (enum) atlas_detector b'20'
system_code = (enum) phaseII_upgrade b'U'
project_code = (enum) pixel_general b'PG'
subproject_code = (enum) Module_carrier b'MC'
identifier = Container:
module_type = (enum) Linear_triplet_module_carrier b'2'
module_version = (enum) Quad_v2p1 b'2'
manufacturer = b'9' (total 1)
number = b'1234' (total 4)
$ itksn parse 20UPGR90012345
Container:
atlas_project = (enum) atlas_detector b'20'
system_code = (enum) phaseII_upgrade b'U'
project_code = (enum) pixel_general b'PG'
subproject_code = (enum) Digital_quad_module b'R9'
identifier = Container:
FE_chip_version = (enum) RD53A b'0'
reserved = b'0' (total 1)
number = b'12345' (total 5)
$ itksn parse 20UPGPD0012345
Container:
atlas_project = (enum) atlas_detector b'20'
system_code = (enum) phaseII_upgrade b'U'
project_code = (enum) pixel_general b'PG'
subproject_code = (enum) Dual_PCB b'PD'
identifier = Container:
FE_chip_version = (enum) RD53A b'0'
reserved = b'0' (total 1)
number = b'12345' (total 5)
$ itksn parse 20UPGFW2123456
Container:
atlas_project = (enum) atlas_detector b'20'
system_code = (enum) phaseII_upgrade b'U'
project_code = (enum) pixel_general b'PG'
subproject_code = (enum) FE_chip_wafer b'FW'
identifier = Container:
batch_number = (enum) CROC b'2'
number = b'123456' (total 6)
If you want to, for example, build the serial number for a front-end chip hex, you can do:
import itksn
number = str(0x20098).zfill(7).encode()
obj = {
"atlas_project": "atlas_detector",
"system_code": "phaseII_upgrade",
"project_code": "pixel_general",
"subproject_code": "FE_chip",
"identifier": {"number": number},
}
itksn.core.SerialNumberStruct.build(obj) # b'20UPGFC0131224'
or even from python, one can parse
import itksn
results = itksn.parse(b"20UPGR90012345")
assert results.atlas_project == "atlas_detector"
assert results.project_code == "pixel"
assert results.identifier.PCB_manufacturer == "Dummy"
or build
from itksn.core import SerialNumberStruct
sn = SerialNumberStruct.build(
{
"atlas_project": "atlas_detector",
"system_code": "phaseII_upgrade",
"project_code": "pixel",
"subproject_code": "pixel_general",
"component_code": "Digital_quad_module",
"identifier": {
"FE_chip_version": "RD53A",
"PCB_manufacturer": "Dummy",
"number": b"12345",
},
}
)
assert sn == b"20UPGR90012345"
Installation
In a fresh virtual environment, you can install from PyPI:
$ python -m pip install itksn
or from the main branch of the GitHub repository:
$ python -m pip install "git+https://github.com/kratsg/itksn.git"
The above is actually cloning and installing directly from the Git repository.
However, if you want to, you can of course also install it directly from the Git repository "locally" by first cloning the repo and then from the top level of it running
$ python -m pip install .
Contributing
As this library is experimental contributions of all forms are welcome.
If you have ideas on how to improve the API or fix a bug please open an Issue.
You are of course also most welcome and encouraged to open PRs.
Developing
To develop, use a virtual environment.
Once the environment is activated, clone the repo from GitHub
git clone git@github.com:kratsg/itksn.git
and you can use hatch for running tests/development, e.g.
hatch run +py=3.7 dev:test
(Optional) Then setup the Git pre-commit hooks by running
pre-commit install
Acknowledgements
- @matthefeickert's heputilities repository for a quick start
References
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file itksn-0.4.2.tar.gz.
File metadata
- Download URL: itksn-0.4.2.tar.gz
- Upload date:
- Size: 36.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.12.8
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
4ebee14dfb84f07914ae36304a8e1182659dfc3a20f7c8b25fc85b16ddd1f073
|
|
| MD5 |
a9352cc75ea847975fa9f5cc26567c8d
|
|
| BLAKE2b-256 |
7a1bbf1aa7777100e40857ee8633217977a6fae9a67433b6cb05058dab802d13
|
File details
Details for the file itksn-0.4.2-py3-none-any.whl.
File metadata
- Download URL: itksn-0.4.2-py3-none-any.whl
- Upload date:
- Size: 19.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.12.8
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
d799156b0159adf8bda71fa3fae49a06bc33cf7c9e10da40008ec9542f5af2d1
|
|
| MD5 |
8714364b99d8fd8c103610168d03f965
|
|
| BLAKE2b-256 |
958b57f8261c793e44055b49760927c132799f0f71d47d81e6f692d6761b873b
|