atomlib


Nameatomlib JSON
Version 0.4 PyPI version JSON
download
home_pageNone
SummaryA modern, extensible library for creating atomic structures
upload_time2025-07-19 17:39:44
maintainerNone
docs_urlNone
authorNone
requires_python>=3.9
licenseNone
keywords science atoms materials chemistry
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage
            # atomlib: A modern, extensible library for creating atomic structures
[![][ci-badge]][ci-url] [![][commit-badge]][commit-url] [![][docs-stable-badge]][docs-stable-url] [![][docs-dev-badge]][docs-dev-url]

`atomlib` is a package for creating, modifying, and controlling atomic structures. It draws heavy inspiration from previous tools like [Atomsk][atomsk] and [ASE][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]             | .cif    | :white_check_mark: | :white_check_mark: | CIF1 & CIF2. Isotropic B-factor only |
| [XCrysDen][xsf]        | .xsf    | :white_check_mark: | :white_check_mark: |       |
| [AtomEye CFG][cfg]     | .cfg    | :white_check_mark: | :white_check_mark: | Currently basic format only |
| [Basic XYZ][xyz]       | .xyz    | :white_check_mark: | :white_check_mark: |       |
| [Ext. XYZ][xyz]        | .exyz   | :white_check_mark: | :white_check_mark: | Arbitrary properties not implemented |
| [Special XYZ][xyz]     | .sxyz   | :x:                | :x:                | To be implemented |
| [LAMMPS Data][lmp]     | .lmp    | :white_check_mark: | :white_check_mark: |       |
| [Quantum Espresso][qe] | .qe     | :x:                | :white_check_mark: | pw.x format  |
| [pyMultislicer][pyM]   | .mslice | :white_check_mark: | :white_check_mark: | Currently XML format only |

[atomsk]: https://atomsk.univ-lille.fr/
[ase]: https://wiki.fysik.dtu.dk/ase/
[cif]: https://www.iucr.org/resources/cif
[xsf]: http://www.xcrysden.org/doc/XSF.html
[cfg]: https://atomsk.univ-lille.fr/doc/en/format_cfg.html
[xyz]: https://atomsk.univ-lille.fr/doc/en/format_xyz.html
[lmp]: https://docs.lammps.org/read_data.html
[qe]: https://www.quantum-espresso.org/Doc/INPUT_PW.html
[pyM]: https://github.com/LeBeauGroup/pyMultislicer

[ci-badge]: https://github.com/hexane360/atomlib/workflows/CI/badge.svg
[ci-url]: https://github.com/hexane360/atomlib/actions?query=workflow%3ACI
[docs-dev-badge]: https://img.shields.io/badge/docs-dev-blue
[docs-dev-url]: https://hexane360.github.io/atomlib/dev/
[docs-stable-badge]: https://img.shields.io/badge/docs-stable-blue
[docs-stable-url]: https://hexane360.github.io/atomlib/latest/
[commit-badge]: https://img.shields.io/github/last-commit/hexane360/atomlib
[commit-url]: https://github.com/hexane360/atomlib/commits

            

Raw data

            {
    "_id": null,
    "home_page": null,
    "name": "atomlib",
    "maintainer": null,
    "docs_url": null,
    "requires_python": ">=3.9",
    "maintainer_email": null,
    "keywords": "science, atoms, materials, chemistry",
    "author": null,
    "author_email": "Colin Gilgenbach <hexane@mit.edu>",
    "download_url": "https://files.pythonhosted.org/packages/be/31/e78ba71ef9aa7fe87e7f770de577808b5c2f6016338ee3ff964a4ba114cd/atomlib-0.4.tar.gz",
    "platform": null,
    "description": "# atomlib: A modern, extensible library for creating atomic structures\n[![][ci-badge]][ci-url] [![][commit-badge]][commit-url] [![][docs-stable-badge]][docs-stable-url] [![][docs-dev-badge]][docs-dev-url]\n\n`atomlib` is a package for creating, modifying, and controlling atomic structures. It draws heavy inspiration from previous tools like [Atomsk][atomsk] and [ASE][ase], but attempts to provide a cleaner, more consistent interface that can be used from Python or a command line.\n\n`atomlib` has minimal dependencies: `numpy`, `scipy`, and `polars` are required for core atom structure manipulation, and `click` is required for command line functionality.\n\n## Atomic representation & supported properties\n\nAtomic structures are stored as `polars` DataFrames, providing a clean, immutable interface that maximizes expressiveness and minimizes errors.\nFor 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.\n\nTranslational 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.\n\nFor more information, check out the example notebooks and the API documentation.\n\n## Currently supported file formats\n\nFile format support is still a work in progress. Where possible, parsers are implemented from scratch in-repo.\nMost 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.\nThis means you can write your own code to utilize advanced format features even if they're not supported out of the box.\n\n| Format                 | Ext.    | Read               | Write              | Notes |\n| :--------------------- | :------ | :----------------: | :----------------: | :---- |\n| [CIF][cif]             | .cif    | :white_check_mark: | :white_check_mark: | CIF1 & CIF2. Isotropic B-factor only |\n| [XCrysDen][xsf]        | .xsf    | :white_check_mark: | :white_check_mark: |       |\n| [AtomEye CFG][cfg]     | .cfg    | :white_check_mark: | :white_check_mark: | Currently basic format only |\n| [Basic XYZ][xyz]       | .xyz    | :white_check_mark: | :white_check_mark: |       |\n| [Ext. XYZ][xyz]        | .exyz   | :white_check_mark: | :white_check_mark: | Arbitrary properties not implemented |\n| [Special XYZ][xyz]     | .sxyz   | :x:                | :x:                | To be implemented |\n| [LAMMPS Data][lmp]     | .lmp    | :white_check_mark: | :white_check_mark: |       |\n| [Quantum Espresso][qe] | .qe     | :x:                | :white_check_mark: | pw.x format  |\n| [pyMultislicer][pyM]   | .mslice | :white_check_mark: | :white_check_mark: | Currently XML format only |\n\n[atomsk]: https://atomsk.univ-lille.fr/\n[ase]: https://wiki.fysik.dtu.dk/ase/\n[cif]: https://www.iucr.org/resources/cif\n[xsf]: http://www.xcrysden.org/doc/XSF.html\n[cfg]: https://atomsk.univ-lille.fr/doc/en/format_cfg.html\n[xyz]: https://atomsk.univ-lille.fr/doc/en/format_xyz.html\n[lmp]: https://docs.lammps.org/read_data.html\n[qe]: https://www.quantum-espresso.org/Doc/INPUT_PW.html\n[pyM]: https://github.com/LeBeauGroup/pyMultislicer\n\n[ci-badge]: https://github.com/hexane360/atomlib/workflows/CI/badge.svg\n[ci-url]: https://github.com/hexane360/atomlib/actions?query=workflow%3ACI\n[docs-dev-badge]: https://img.shields.io/badge/docs-dev-blue\n[docs-dev-url]: https://hexane360.github.io/atomlib/dev/\n[docs-stable-badge]: https://img.shields.io/badge/docs-stable-blue\n[docs-stable-url]: https://hexane360.github.io/atomlib/latest/\n[commit-badge]: https://img.shields.io/github/last-commit/hexane360/atomlib\n[commit-url]: https://github.com/hexane360/atomlib/commits\n",
    "bugtrack_url": null,
    "license": null,
    "summary": "A modern, extensible library for creating atomic structures",
    "version": "0.4",
    "project_urls": {
        "Documentation": "https://hexane360.github.io/atomlib/",
        "Repository": "https://github.com/hexane360/atomlib.git"
    },
    "split_keywords": [
        "science",
        " atoms",
        " materials",
        " chemistry"
    ],
    "urls": [
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "4cfd95736970818af8153da95c05fdc728815aa4ea1427fa4e0c2884a1f73777",
                "md5": "3f55e706b68c4d430759f74f53e2d3bf",
                "sha256": "235073e88fcb175bb60d69cabf41ed849a0b906f71736df0d217aad6c9c79c5a"
            },
            "downloads": -1,
            "filename": "atomlib-0.4-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "3f55e706b68c4d430759f74f53e2d3bf",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": ">=3.9",
            "size": 121334,
            "upload_time": "2025-07-19T17:39:42",
            "upload_time_iso_8601": "2025-07-19T17:39:42.771410Z",
            "url": "https://files.pythonhosted.org/packages/4c/fd/95736970818af8153da95c05fdc728815aa4ea1427fa4e0c2884a1f73777/atomlib-0.4-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "be31e78ba71ef9aa7fe87e7f770de577808b5c2f6016338ee3ff964a4ba114cd",
                "md5": "4b0e8d1a954d8873843dd131c1507d93",
                "sha256": "b6a604b7b86caaaacd01b2d2b8001359fab9ecdba62d8c4edcbb089abf2f7ffc"
            },
            "downloads": -1,
            "filename": "atomlib-0.4.tar.gz",
            "has_sig": false,
            "md5_digest": "4b0e8d1a954d8873843dd131c1507d93",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.9",
            "size": 107889,
            "upload_time": "2025-07-19T17:39:44",
            "upload_time_iso_8601": "2025-07-19T17:39:44.049287Z",
            "url": "https://files.pythonhosted.org/packages/be/31/e78ba71ef9aa7fe87e7f770de577808b5c2f6016338ee3ff964a4ba114cd/atomlib-0.4.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2025-07-19 17:39:44",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "hexane360",
    "github_project": "atomlib",
    "travis_ci": false,
    "coveralls": true,
    "github_actions": true,
    "lcname": "atomlib"
}
        
Elapsed time: 1.79909s