Skip to main content

LAMMPS Data Analysis library

Project description

lada

lada (LAMMPS Data Access) is a lightweight Python package for parsing common LAMMPS output formats. It provides simple, streaming-friendly access to dump files, log files, and LAMMPS data files, with minimal dependencies.


🚀 Installation

Install using pip from PyPI:

pip install lada

Note: The package is designed to be used with Python 3.8+.


📦 Package structure

The core parser modules are located in src/lada/parsers/:

  • dump_parser.py - streaming parser for LAMMPS dump files (i.e., output from dump command) using iter_dump_frames()
  • log_parser.py - parser for LAMMPS log files using read_lammps_log()
  • data_parser.py - parser for LAMMPS data files (i.e., output form write_data command) using read_data_file()

To keep imports simple, the package exports the most common entry point:

from lada import iter_dump_frames, read_lammps_log, read_data_file

🧩 1) Parsing LAMMPS dump files (dump_parser.py)

Main API

from lada import iter_dump_frames

for frame in iter_dump_frames("path/to/dump_file.dump"):
    # metadata is a dict of "ITEM:" blocks
    timestep = frame.metadata["TIMESTEP"]          # int
    box_bounds = frame.metadata["BOX BOUNDS pp pp pp"]

    # get numeric columns by name
    ids = frame.get_column("id")
    xs  = frame.get_column("x")

    # convert the atom block into a pandas DataFrame
    df = frame.to_dataframe()

Notes on metadata conversion

  • TIMESTEP is returned as an int.
  • NUMBER OF ... entries (e.g., NUMBER OF ATOMS) are converted to int.
  • BOX BOUNDS ... entries are parsed into numeric values:
    • For orthogonal boxes, you get a 2D NumPy array shape (3, 2).
    • For triclinic boxes, you get a 2D NumPy array shape (3, 3) where the 3rd column contains tilt factors (xy, xz, yz).

Column helpers

These helpers avoid manual index lookups:

ids = frame.get_column("id")
atom_ids = frame.get_column_or("id", default=None)
col_idx = frame.column_index("type")

📝 2) Parsing LAMMPS log files (log_parser.py)

Main API

from lada import read_lammps_log

thermo = read_lammps_log("log.lammps")
print(thermo.columns)        # column names (Step, Temp, E_pair, ...)
print(thermo.get("E_pair")) # numpy array of E_pair values

# Convert to pandas DataFrame
df = thermo.to_pandas()

What it parses

  • It extracts the table between the Per MPI rank memory allocation marker and the Loop time marker.
  • The first non-empty line in that section is treated as the header.

🧬 3) Parsing LAMMPS data files (data_parser.py)

Main API

from lada import read_data_file

lammps_data = read_data_file("data.lmp")

# Get a parsed section as a NumPy array
atoms = lammps_data.get("Atoms")

# Convert a section to pandas (smart infer columns for Atoms/Bonds/Velocities)
df_atoms = lammps_data.to_pandas(section="Atoms")

Notes on atom style detection

  • The parser attempts to detect the atom style from the comment in the Atoms section header, e.g. Atoms # atomic.
  • If detected, it uses the correct column layout for that style (e.g., x y z vs qx qy qz).

License

MIT

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

lada-1.0.3.tar.gz (8.8 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

lada-1.0.3-py3-none-any.whl (10.2 kB view details)

Uploaded Python 3

File details

Details for the file lada-1.0.3.tar.gz.

File metadata

  • Download URL: lada-1.0.3.tar.gz
  • Upload date:
  • Size: 8.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for lada-1.0.3.tar.gz
Algorithm Hash digest
SHA256 38ef3a577b0e4c74e91ddbfd8b7748812a25b79fea185ccf65f54f7adec84686
MD5 177b33b1b13ef770cf084a8b46736ed3
BLAKE2b-256 43ead79993957d50ef80a633148b9030c8ee836392965f692f34ed165fbfc18f

See more details on using hashes here.

Provenance

The following attestation bundles were made for lada-1.0.3.tar.gz:

Publisher: publish.yml on balintmagyari/LAMMPS-Data-Analysis

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

File details

Details for the file lada-1.0.3-py3-none-any.whl.

File metadata

  • Download URL: lada-1.0.3-py3-none-any.whl
  • Upload date:
  • Size: 10.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for lada-1.0.3-py3-none-any.whl
Algorithm Hash digest
SHA256 e04680500958ebed019bd8ebbe49f350036a8a0c2b6bbebe041b9498b538d189
MD5 cb2ecddfaf11ed78bfd7bad290107077
BLAKE2b-256 f57045831a4ae7362b7e6195b5cabeb3e5686064fbecccdeb8820e7b5781c1b9

See more details on using hashes here.

Provenance

The following attestation bundles were made for lada-1.0.3-py3-none-any.whl:

Publisher: publish.yml on balintmagyari/LAMMPS-Data-Analysis

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 Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page