Skip to main content

A collection of utilities to manipulate atomic structures

Project description

atomlib: A modern, extensible library for creating atomic structures

atomlib is a package for creating, modifying, and controlling atomic structures. It draws heavy inspiration from previous tools like Atomsk and ASE, but attempts to provide a cleaner, more consistent interface that can be used from Python or a command line.

atomlib has minimal dependencies: numpy, scipy, and polars are required for core atom structure manipulation, and click is required for command line functionality.

Atomic representation & supported properties

Atomic structures are stored as polars DataFrames, providing a clean, immutable interface that maximizes expressiveness and minimizes errors. For formats that allow arbitrary properties, these properties can be passed through transparently. atomlib has first-class support for fractional occupancy, Debye-Waller factors, atomic forces, and labels.

Translational symmetry is stored in Cell objects, which represent a fully generic cell. Atoms can be modified in any coordinate system that makes sense (global, local real-space, cell fraction, box fraction, etc.). Support for non-translational symmetry operations is limited at this point.

For more information, check out the example notebooks and the API documentation.

Currently supported file formats

File format support is still a work in progress. Where possible, parsers are implemented from scratch in-repo. Most formats are implemented in two steps: Parsing to an intermediate representation which preserves all format-specific information, and then conversion to the generic Atoms & AtomCell types for manipulation & display. This means you can write your own code to utilize advanced format features even if they're not supported out of the box.

Format Ext. Read Write Notes
CIF .cif :white_check_mark: :x: CIF1 & CIF2. Isotropic B-factor only
XCrysDen .xsf :white_check_mark: :white_check_mark:
AtomEye CFG .cfg :white_check_mark: :white_check_mark: Currently basic format only
Basic XYZ .xyz :white_check_mark: :white_check_mark:
Ext. XYZ .exyz :white_check_mark: :white_check_mark: Arbitrary properties not implemented
Special XYZ .sxyz :x: :x: To be implemented
LAMMPS Data .lmp :x: :white_check_mark:
Quantum Espresso .qe :x: :white_check_mark: pw.x format
pyMultislicer .mslice :x: :white_check_mark:

Project details


Release history Release notifications | RSS feed

This version

0.3

Download files

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

Source Distribution

atomlib-0.3.tar.gz (87.8 kB view hashes)

Uploaded Source

Built Distribution

atomlib-0.3-py3-none-any.whl (95.6 kB view hashes)

Uploaded Python 3

Supported by

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