UFO Model Loader
UFO Model Loader is a Python CLI and library to work with High-Energy Physics models in the UFO format.
It can:
- Load UFO models or pre-exported JSON models
- Apply restrictions from parameter cards
- Evaluate all dependent parameters from input parameters using Symbolica
- Simplify couplings and disable zero contributions
- Preserve propagating/Goldstone flags, custom propagators, declared functions, and form-factor metadata
- Export the result as a flat JSON model
Limitations:
- Only tree-level information is being retained and exported
- Current version only supports export of model expression in the Symbolica notation
Installation
From PyPI:
pip install ufo-model-loader
From GitHub:
pip install "git+https://github.com/alphal00p/ufo_model_loader.git"
Command Line Usage
ufo_model_loader --help
Example:
ufo_model_loader -i sm -r no_b_mass -o sm_flat.json
This will:
- Load the default UFO sm model shipped with this python module
- Apply restrictions from
restrict_no_b_mass.dat - Simplify the model by removing zero contributions and parameters set to zero.
- Write the model
sm_flat.jsonand its corresponding parameter cardsm_flat_param_card.jsonto the current directory.
Library Usage
When using UFO Model Loader as a library, you can import the main functions:
from ufo_model_loader.commands import load_model, export_model, JSONLook
loaded_sm_no_b_mass, input_param_card_no_b_mass = load_model(
input_model_path = 'sm',
restriction_name = 'no_b_mass',
simplify_model = True,
)
exported_model_path = export_model(
model = loaded_sm_no_b_mass,
input_param_card = input_param_card_no_b_mass,
output_model_path = 'sm_no_b_mass_simplified_flat.json'),
json_look = JSONLook.VERBOSE,
allow_overwrite = True
)
Built-in models
UFO Model Loader comes with the following built-in models: sm and scalars, which can be specified as input model directly from their names (the corresponding UFO directories are shipped with the python package).
The scalars model is a purely scalar toy model, with a number of scalars controlled by the environment variable UFO_SCALARS_MODEL_N_SCALARS, and all possible n-point interactions mixing these scalars, with n given by the environment variable UFO_SCALARS_MODEL_N_POINT_INTERACTIONS.
By default, UFO_SCALARS_MODEL_N_SCALARS="3" and UFO_SCALARS_MODEL_N_POINT_INTERACTIONS="3,4,5,6,7,8,9,10".
For example, the following:
UFO_SCALARS_MODEL_N_SCALARS=7 UFO_SCALARS_MODEL_N_POINT_INTERACTIONS="3,4,5,6,7,8" ufo_model_loader -j compact -i scalars -o scalars_big_model.json; du -hc scalars_big_model.json
yields a pretty big model :)
[23:34:27] INFO : Loading UFO model scalars from directory '[...]/ufo_model_loader/src/ufo_model_loader/data/models'
Loading UFO scalars model with 7 scalars
Loading UFO scalars model with n-point interactions, n=[3|4|5|6|7|8]
[23:34:28] INFO : Applying default restriction to model scalars
[23:34:28] INFO : The following 6 external parameters were forced to zero by the restriction card:
width_scalar_1, width_scalar_2, width_scalar_3, width_scalar_4, width_scalar_5, width_scalar_6
[23:34:28] INFO : Model scalars successfully loaded (7 particles, 20 parameters, 6399 interactions, 1 couplings, 6 Lorentz structures)
[23:34:28] INFO : Successfully exported model in compact JSON format to file 'scalars_big_model.json' and corresponding input parameter card to 'scalars_big_model_param_card.json'
1.5M scalars_big_model.json
1.5M total
Tests
Test your installation with
pytest --pyargs ufo_model_loader_tests
Main options
-
--input_model, -i
UFO directory or JSON file path to load. -
--restriction_name, -r
Restriction to apply (restrict_<restriction_name>.datin UFO orrestrict_<restriction_name>.jsonbeside a JSON model). Without this option,restrict_default.datorrestrict_default.jsonis applied when present. Legacy<model>_default.jsoncards remain accepted. -
--simplify / --no-simplify
Remove zero contributions in the model given specified restriction. Default: enabled. -
--wrap_indices_in_lorentz_structuresWrap indices in Lorentz structures when exporting. This is particularly useful for spin-2 models, mapping<1 or 2>00<p_id>conventions toidx(1 or 2, p_id). Default: disabled. -
--output_model_path, -o
Output path for the JSON model. Defaults to current directory. -
--json_look, -j
Output format:compact,pretty, orverbose. Default:verbose. Note:prettyrequires the optional python packagejsbeautifier. -
--verbosity, -v
Logging level:debug,info,critical. -
--overwrite, -w
Allow overwriting existing output files.
Development
Clone the repo and install in editable mode:
git clone https://github.com/alphal00p/ufo_model_loader.git
cd ufo_model_loader
pip install -e .[dev]
pytest
Metadata
Release files for ufo-model-loader 0.1.7
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| ufo_model_loader-0.1.7.tar.gz | 60.9 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| ufo_model_loader-0.1.7-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 135.9 kB
Release files / ufo_model_loader-0.1.7.tar.gz
| Download URL | ufo_model_loader-0.1.7.tar.gz |
|---|---|
| Size | 60.9 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
79530b7bfb0b63f7c5547bf2a6309dbd162fdb7108800318cb08b93d227fbf67
|
|
BLAKE2b-256 checksum How to use checksums |
91ea3060478303daa465572f17c0c2550bfbf5d61b6c78b0167a7bcd13b7d5bd
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.12.6
|
Release files / ufo_model_loader-0.1.7-py3-none-any.whl
| Download URL | ufo_model_loader-0.1.7-py3-none-any.whl |
|---|---|
| Size | 75.0 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
803ae28141ec4be3189cc62469b88da17ca33907791fe99774c2fe756a45edf7
|
|
BLAKE2b-256 checksum How to use checksums |
e864eb05d1e04f8353559a10c4184a7749f42955616b146af0f6501c4e3577af
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.12.6
|