# gammaLoop
![tests status](https://github.com/alphal00p/gammaloop/actions/workflows/gamma_loop_tests.yml/badge.svg?event=push)
*Computation of differential cross-sections using Local Unitarity.*
See [www.alphaloop.ch](www.alphaloop.ch) for details on the theoretical framework and related literature.
See the [wiki](https://wiki.alphaloop.ch/) for more information on the project.
## TL;DR: I want to be running γLoop already!
We salute the eagerness of our users.
If you want to jump right in, run the following to immediately start integrating the scalar three-loop mercedes diagram,
```
git clone https://github.com/alphal00p/gammaloop.git && cd gammaloop
./bin/compile.sh
./bin/gammaloop example/cards/scalar_mercedes.gL
```
or a one-loop hexagon diagram from the scattering process $\gamma \gamma \rightarrow \gamma \gamma \gamma \gamma$ (through a top-quark loop) with:
```
./bin/gammaloop examples/cards/physical_1L_AA_AAAA.gL
```
## Installation
### > Requirements
* `Rust`: v1.77+ You can easily install Rust with this [one-liner](https://www.rust-lang.org/tools/install)
* `Python3`: v3.11+ (equipped with `pip`, and the `python-devel` dependency)
* `GNU gcc`: v10+ (*not* `clang`!)
* `git`
*Note*: The project has been tested on Linux and MacOS. However, on MacOS, the default `clang` compiler is not supported due to lack of `libquadmath` support, and `GNU gcc` must be installed and setup as default compiler.
Windows users are encouraged to use [WSL 2](https://learn.microsoft.com/en-us/windows/wsl/).
### > Installation using `pip`
```
pip install gammaloop
gammaloop --build_dependencies
```
### > Installation from sources
```
git clone https://github.com/alphal00p/gammaloop.git
cd gammaloop
./bin/compile.sh --release
```
The relevant binaries will then be in `./bin/` and the gammaloop python module is located at `./python/gammaloop`.
*Note:* Alternatively, the dependencies can be built within a python virtual environment as follows:
```
./bin/build_dependencies.sh clean
./bin/build_dependencies.sh with_venv
# From within a `bash` shell, use the command below
source `./bin/gammaloop -venv`
# From within a `fish` shell, use the command below
. (./bin/gammaloop -venv).fish
```
## Tests
### > Testing an installation from `pip`
From within the installation directory of the gammaloop module, which you can `cd` into with e.g.:
```
bash -c 'cd `python -c "import os; import gammaloop; print(os.path.dirname(gammaloop.__file__))"`; pwd'
```
You can test your `gammaLoop` installation by running (incl. only tests with a maximum runtime of 15 seconds):
```
python -m pytest --max-runtime 15.0
```
### > Testing an installation from sources
From within the installation directory, run:
```
/bin/run_tests.sh python
/bin/run_tests.sh rust
```
## Usage
There are three entry points to the `GammaLoop` functionalities:
1. Preferred method is through the Python command-line interface `gammaloop`.
2. Alternatively, the same functionalities can be accessed programmatically, e.g. in a Jupyter notebook, through the Python API, by importing the `gammaloop` library.
3. Finally, expert users may also find it useful to steer some of functionalities directly from the rust binary `gammaloop_rust_cli`.
Both executables `gammaloop` and `gammaloop_rust_cli` are made available as scripts in the `bin` directory.
The `gammaloop` Python module is also exposed after installation and ready to be imported by custom Python scripts.
### 1. Usage from the Python command-line interface: ./gammaloop
`GammaLoop` is typically used through the python command-line interface `gammaloop`.
Place your list of commands in a file named e.g. `cmd.gL`, for instance:
```
# Content of file 'cmd.gL'
import_model sm --format ufo
export_model ./sm.yaml --format yaml
```
and run it with:
```
./bin/gammaloop cmd.gL
```
You can find more information on the syntax of the available commands in the [wiki](https://wiki.alphaloop.ch/) and by running:
```
./bin/gammaloop --help
```
to get an overview of available commands and:
```
./bin/gammaloop -c "help import_model"
```
to get help on any specific command.
You can find example of command files in the `<MODULE_PATH>/data/run_cards/` directory.
### 2. Usage from within a Jupyter notebook: the Python API
Follow the example jupyter notebook given in example to get started with the Python API.
```
cd <GAMMALOOP_INSTALLATION_DIRECTORY>/examples/jupyter
jupyter notebook steer_gammaloop.ipynb
```
### 3. Usage from the rust binary executable: ./gammaloop_rust_cli
All typical usecases of `GammaLoop` are available through the Python command-line interface mentioned earlier.
However, expert users might want to steer the Monte-Carlo integration directly using the `gammaloop_rust_cli` binary.
This is possible throught the `gammaloop_rust_cli` binary, which can be used as follows:
```
./bin/gammaloop_rust_cli --config <MODULE_PATH>/gammaloop/data/run_cards/rust_run_config.yaml
```
*Note*: You have to manually define your desired external momenta in this default `rust_run_config.yaml` file.
You will find more information on the content of the run configuration file and steering options in the [wiki](https://wiki.alphaloop.ch/) and by running:
```
./bin/gammaloop_rust_cli --help
```
Raw data
{
"_id": null,
"home_page": null,
"name": "gammaloop",
"maintainer": null,
"docs_url": null,
"requires_python": null,
"maintainer_email": null,
"keywords": "physics, collider, cross-section, perturbative, loop",
"author": "Valentin Hirschi <valentin.hirschi@gmail.com>",
"author_email": "Valentin Hirschi <valentin.hirschi@gmail.com>, Mathijs Fraaije <mathijsfraaije@gmail.com>, Lucien Huber <mail@lcnbr.ch>",
"download_url": "https://files.pythonhosted.org/packages/d5/80/445af1dc0d3c443b4b427fc8e1e83e19b6d4261f3f045f79f36fd27982fb/gammaloop-0.2.0.tar.gz",
"platform": null,
"description": "# gammaLoop\n![tests status](https://github.com/alphal00p/gammaloop/actions/workflows/gamma_loop_tests.yml/badge.svg?event=push)\n\n*Computation of differential cross-sections using Local Unitarity.*\n\nSee [www.alphaloop.ch](www.alphaloop.ch) for details on the theoretical framework and related literature.\n\nSee the [wiki](https://wiki.alphaloop.ch/) for more information on the project.\n\n## TL;DR: I want to be running \u03b3Loop already!\n\nWe salute the eagerness of our users.\n\nIf you want to jump right in, run the following to immediately start integrating the scalar three-loop mercedes diagram,\n\n```\ngit clone https://github.com/alphal00p/gammaloop.git && cd gammaloop\n./bin/compile.sh\n./bin/gammaloop example/cards/scalar_mercedes.gL\n```\n\nor a one-loop hexagon diagram from the scattering process $\\gamma \\gamma \\rightarrow \\gamma \\gamma \\gamma \\gamma$ (through a top-quark loop) with:\n\n```\n./bin/gammaloop examples/cards/physical_1L_AA_AAAA.gL\n```\n\n## Installation\n\n### > Requirements\n\n* `Rust`: v1.77+ You can easily install Rust with this [one-liner](https://www.rust-lang.org/tools/install)\n\n* `Python3`: v3.11+ (equipped with `pip`, and the `python-devel` dependency)\n\n* `GNU gcc`: v10+ (*not* `clang`!)\n\n* `git`\n\n*Note*: The project has been tested on Linux and MacOS. However, on MacOS, the default `clang` compiler is not supported due to lack of `libquadmath` support, and `GNU gcc` must be installed and setup as default compiler.\n\nWindows users are encouraged to use [WSL 2](https://learn.microsoft.com/en-us/windows/wsl/).\n\n### > Installation using `pip`\n```\npip install gammaloop\ngammaloop --build_dependencies\n```\n\n### > Installation from sources\n```\ngit clone https://github.com/alphal00p/gammaloop.git\ncd gammaloop\n./bin/compile.sh --release\n```\nThe relevant binaries will then be in `./bin/` and the gammaloop python module is located at `./python/gammaloop`.\n\n*Note:* Alternatively, the dependencies can be built within a python virtual environment as follows:\n\n```\n./bin/build_dependencies.sh clean\n./bin/build_dependencies.sh with_venv\n# From within a `bash` shell, use the command below\nsource `./bin/gammaloop -venv`\n# From within a `fish` shell, use the command below\n. (./bin/gammaloop -venv).fish\n```\n\n## Tests\n\n### > Testing an installation from `pip`\n\nFrom within the installation directory of the gammaloop module, which you can `cd` into with e.g.:\n```\nbash -c 'cd `python -c \"import os; import gammaloop; print(os.path.dirname(gammaloop.__file__))\"`; pwd'\n```\n\nYou can test your `gammaLoop` installation by running (incl. only tests with a maximum runtime of 15 seconds):\n```\npython -m pytest --max-runtime 15.0\n```\n\n### > Testing an installation from sources\n\nFrom within the installation directory, run:\n```\n/bin/run_tests.sh python\n/bin/run_tests.sh rust\n```\n\n## Usage\n\nThere are three entry points to the `GammaLoop` functionalities:\n\n1. Preferred method is through the Python command-line interface `gammaloop`.\n\n2. Alternatively, the same functionalities can be accessed programmatically, e.g. in a Jupyter notebook, through the Python API, by importing the `gammaloop` library.\n\n3. Finally, expert users may also find it useful to steer some of functionalities directly from the rust binary `gammaloop_rust_cli`.\n\nBoth executables `gammaloop` and `gammaloop_rust_cli` are made available as scripts in the `bin` directory.\nThe `gammaloop` Python module is also exposed after installation and ready to be imported by custom Python scripts.\n\n### 1. Usage from the Python command-line interface: ./gammaloop\n\n`GammaLoop` is typically used through the python command-line interface `gammaloop`.\nPlace your list of commands in a file named e.g. `cmd.gL`, for instance:\n\n```\n# Content of file 'cmd.gL'\nimport_model sm --format ufo\nexport_model ./sm.yaml --format yaml\n```\nand run it with:\n```\n./bin/gammaloop cmd.gL\n```\nYou can find more information on the syntax of the available commands in the [wiki](https://wiki.alphaloop.ch/) and by running:\n```\n./bin/gammaloop --help\n```\nto get an overview of available commands and:\n```\n./bin/gammaloop -c \"help import_model\"\n```\nto get help on any specific command.\n\nYou can find example of command files in the `<MODULE_PATH>/data/run_cards/` directory.\n\n### 2. Usage from within a Jupyter notebook: the Python API\n\nFollow the example jupyter notebook given in example to get started with the Python API.\n```\ncd <GAMMALOOP_INSTALLATION_DIRECTORY>/examples/jupyter\njupyter notebook steer_gammaloop.ipynb\n``` \n\n### 3. Usage from the rust binary executable: ./gammaloop_rust_cli\n\nAll typical usecases of `GammaLoop` are available through the Python command-line interface mentioned earlier.\nHowever, expert users might want to steer the Monte-Carlo integration directly using the `gammaloop_rust_cli` binary.\nThis is possible throught the `gammaloop_rust_cli` binary, which can be used as follows:\n```\n./bin/gammaloop_rust_cli --config <MODULE_PATH>/gammaloop/data/run_cards/rust_run_config.yaml\n```\n*Note*: You have to manually define your desired external momenta in this default `rust_run_config.yaml` file.\n\nYou will find more information on the content of the run configuration file and steering options in the [wiki](https://wiki.alphaloop.ch/) and by running:\n```\n./bin/gammaloop_rust_cli --help\n```\n\n",
"bugtrack_url": null,
"license": null,
"summary": "Gammaloop computes differential cross-sections using Local Unitarity",
"version": "0.2.0",
"project_urls": {
"homepage": "https://alphaloop.ch",
"repository": "https://github.com/alphal00p/gammaloop"
},
"split_keywords": [
"physics",
" collider",
" cross-section",
" perturbative",
" loop"
],
"urls": [
{
"comment_text": null,
"digests": {
"blake2b_256": "c7cacbb935965d9a7ae8864d041caf69e61be4e070d595d727712fa6add71f8f",
"md5": "d6bb1333228f95d2fae87a5303acfd01",
"sha256": "00b1a92abbff8b8922e833b6c0f5a5bbfcf272b9728992d10b857c215d3bceba"
},
"downloads": -1,
"filename": "gammaloop-0.2.0-cp312-cp312-macosx_11_0_arm64.whl",
"has_sig": false,
"md5_digest": "d6bb1333228f95d2fae87a5303acfd01",
"packagetype": "bdist_wheel",
"python_version": "cp312",
"requires_python": null,
"size": 10310298,
"upload_time": "2024-10-08T21:30:34",
"upload_time_iso_8601": "2024-10-08T21:30:34.474688Z",
"url": "https://files.pythonhosted.org/packages/c7/ca/cbb935965d9a7ae8864d041caf69e61be4e070d595d727712fa6add71f8f/gammaloop-0.2.0-cp312-cp312-macosx_11_0_arm64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "ebe5414ccf6678ccb3ca10d2843f6c88bc28ee9673e164d51f75ba4ff44038e9",
"md5": "13661029b4154ec0dd6f5c76eccbffbe",
"sha256": "537bb3c15497e5a86cd16535de7286ac3afcb0d3753e28b5b851248c117daff6"
},
"downloads": -1,
"filename": "gammaloop-0.2.0-cp312-cp312-manylinux_2_34_x86_64.whl",
"has_sig": false,
"md5_digest": "13661029b4154ec0dd6f5c76eccbffbe",
"packagetype": "bdist_wheel",
"python_version": "cp312",
"requires_python": null,
"size": 8703597,
"upload_time": "2024-10-08T21:15:55",
"upload_time_iso_8601": "2024-10-08T21:15:55.486856Z",
"url": "https://files.pythonhosted.org/packages/eb/e5/414ccf6678ccb3ca10d2843f6c88bc28ee9673e164d51f75ba4ff44038e9/gammaloop-0.2.0-cp312-cp312-manylinux_2_34_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "d580445af1dc0d3c443b4b427fc8e1e83e19b6d4261f3f045f79f36fd27982fb",
"md5": "b03f5415b76ea20b0a24ea9cce89ace2",
"sha256": "aaa17dfd443f13893f16c4b811a3c7fb0292e773960692170ec891eaabddb24f"
},
"downloads": -1,
"filename": "gammaloop-0.2.0.tar.gz",
"has_sig": false,
"md5_digest": "b03f5415b76ea20b0a24ea9cce89ace2",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 1440453,
"upload_time": "2024-10-08T21:15:58",
"upload_time_iso_8601": "2024-10-08T21:15:58.741290Z",
"url": "https://files.pythonhosted.org/packages/d5/80/445af1dc0d3c443b4b427fc8e1e83e19b6d4261f3f045f79f36fd27982fb/gammaloop-0.2.0.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2024-10-08 21:15:58",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "alphal00p",
"github_project": "gammaloop",
"travis_ci": false,
"coveralls": false,
"github_actions": true,
"lcname": "gammaloop"
}