Skip to main content

A small package to get structured data out of Les Houches Event files

Project description

pylhe: Python LHE interface

pylhe logo

GitHub Project DOI Scikit-HEP

PyPI version Conda-forge version Supported Python versions

GitHub Actions Status Code Coverage pre-commit.ci status Code style: black

Small and thin Python interface to read Les Houches Event (LHE) files

Tested Monte Carlo Generators' LHE output

Generator Tested Versions
MadGraph5 2.0.0, 2.2.1, 3.5.8
POWHEG-BOX-V2 r4027
Pythia 6.413, 8.3.14
Sherpa 3.0.1
Whizard 3.1.4

Note: test files are provided via the scikit-hep-testdata package. Please open an issue of create directly a PR for the inclusion of new files for testing.

Install

To install pylhe from PyPI you can just do

python -m pip install pylhe

The visualization capabilities require the external dependency of Graphviz.

Get started

The example below provides a simple overview. Full functionality can be inspected from the functions provided in the pylhe module.

Reading

import itertools

# You can use LHE files from scikit-hep-testdata
from skhep_testdata import data_path

import pylhe

lhe_file = data_path("pylhe-testlhef3.lhe")
events = pylhe.read_lhe_with_attributes(lhe_file)
print(f"Number of events: {pylhe.read_num_events(lhe_file)}")

# Get event 1
event = next(itertools.islice(events, 1, 2))

# A DOT language graph of the event can be inspected as follows
print(event.graph.source)

# The graph is nicely displayed as SVG in Jupyter notebooks
event

# To save a DOT graph render the graph to a supported image format
# (refer to the Graphviz documentation for more)
event.graph.render(filename="test", format="png", cleanup=True)
event.graph.render(filename="test", format="pdf", cleanup=True)

Writing

For a full example see write or filter. The values in the sketch below are intentionally left empty since they depend on the use-case. The data structure of pylhe is:

import pylhe

file=pylhe.LHEFile(
    init=pylhe.LHEInit(
        initInfo=pylhe.LHEInitInfo(
            beamA=,
            beamB=,
            energyA=,
            energyB=,
            PDFgroupA=,
            PDFgroupB=,
            PDFsetA=,
            PDFsetB=,
            weightinStrategy=,
            numProcesses=,
        ),
        procInfo=pylhe.LHEProcInfo(
            xSection=,
            error=,
            unitWeight=,
            procId=,
        ),
    ),
    events=[
        pylhe.LHEEvent(
            eventinfo=pylhe.LHEEventInfo(
                nparticles=,
                pid=,
                weight=,
                scale=,
                aqed=,
                aqcd=,
            ),
            particles=[
                pylhe.LHEParticle(
                    id=,
                    status=,
                    mother1=,
                    mother2=,
                    color1=,
                    color2=,
                    px=,
                    py=,
                    pz=,
                    e=,
                    m=,
                    lifetime=,
                    spin=,
                ),
                ...
            ],
            weights=None,
            attributes=None,
            optional=None,
        ),
        ...
    ]
)

# write to file, compressed if gz/gzip suffix
write_lhe_file(file.init, file.events, "myevents.lhe.gz", rwgt=True, weights=False)

Citation

The preferred BibTeX entry for citation of pylhe is

@software{pylhe,
  author = {Lukas Heinrich and Matthew Feickert and Eduardo Rodrigues and Alexander Puck Neuwirth},
  title = "{pylhe: v0.9.2}",
  version = {v0.9.2},
  doi = {10.5281/zenodo.1217031},
  url = {https://github.com/scikit-hep/pylhe},
}

Contributors

We hereby acknowledge the contributors that made this project possible (emoji key):

Matthew Feickert
Matthew Feickert

🚧 🎨 💻 📖
Lukas
Lukas

🚧 🎨 💻 📖
Eduardo Rodrigues
Eduardo Rodrigues

🚧 💻 📖
Johannes Schumann
Johannes Schumann

💻
Henry Schreiner
Henry Schreiner

💻
ariaradick
ariaradick

💻
Junghwan John Goh
Junghwan John Goh

💻
fuenfundachtzig
fuenfundachtzig

💻
Shantanu Gontia
Shantanu Gontia

💻
Tom Eichlersmith
Tom Eichlersmith

💻
Alexander Puck Neuwirth
Alexander Puck Neuwirth

💻 📖 🚧
Iason Krommydas
Iason Krommydas

💻 📖

This project follows the all-contributors specification.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pylhe-0.9.2.tar.gz (20.0 kB view details)

Uploaded Source

Built Distribution

pylhe-0.9.2-py3-none-any.whl (15.0 kB view details)

Uploaded Python 3

File details

Details for the file pylhe-0.9.2.tar.gz.

File metadata

  • Download URL: pylhe-0.9.2.tar.gz
  • Upload date:
  • Size: 20.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.12.8

File hashes

Hashes for pylhe-0.9.2.tar.gz
Algorithm Hash digest
SHA256 6f702f70b789a71fc25d50b61ee471be51aac1695018cc78a4ebf61ec50f918a
MD5 020f91e83f03a0d145a4efd985007b04
BLAKE2b-256 29181f6545bd6b8900af47ce22d41457712416812ed342138067fab36749a791

See more details on using hashes here.

Provenance

The following attestation bundles were made for pylhe-0.9.2.tar.gz:

Publisher: publish-package.yml on scikit-hep/pylhe

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file pylhe-0.9.2-py3-none-any.whl.

File metadata

  • Download URL: pylhe-0.9.2-py3-none-any.whl
  • Upload date:
  • Size: 15.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.12.8

File hashes

Hashes for pylhe-0.9.2-py3-none-any.whl
Algorithm Hash digest
SHA256 39c1b0fb335fa8623ff7d85df720182351d3d60ce9c02b2850ae79125415e943
MD5 a7a54f336847e8fca06814134f340dbc
BLAKE2b-256 d113d85f3dba310196b6d96e4e8b53b8f90c373b8351c7e261603caf4eb9f7d8

See more details on using hashes here.

Provenance

The following attestation bundles were made for pylhe-0.9.2-py3-none-any.whl:

Publisher: publish-package.yml on scikit-hep/pylhe

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page