Metadata-Version: 2.4
Name: chemparseplot
Version: 1.5.1
Summary: Parsers and plotting tools for computational chemistry
Project-URL: Documentation, https://chemparseplot.rgoswami.me
Project-URL: Issues, https://github.com/HaoZeke/chemparseplot/issues
Project-URL: Source, https://github.com/HaoZeke/chemparseplot
Project-URL: Changelog, https://github.com/HaoZeke/chemparseplot/blob/main/CHANGELOG.md
Author-email: Rohit Goswami <rog32@hi.is>
License: MIT
License-File: LICENSE
Keywords: compchem,parser,plot
Classifier: Development Status :: 4 - Beta
Classifier: Programming Language :: Python
Classifier: Programming Language :: Python :: 3 :: Only
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: Implementation :: CPython
Requires-Python: >=3.10
Requires-Dist: numpy>=1.26.2
Requires-Dist: pint>=0.22
Requires-Dist: rgpycrumbs>=1.3.0
Provides-Extra: all
Requires-Dist: ase>=3.22; extra == 'all'
Requires-Dist: cmcrameri>=1.7; extra == 'all'
Requires-Dist: h5py>=3.0; extra == 'all'
Requires-Dist: matplotlib>=3.8.2; extra == 'all'
Requires-Dist: polars>=0.20; extra == 'all'
Requires-Dist: xyzrender>=0.1.2; extra == 'all'
Provides-Extra: doc
Requires-Dist: mdit-py-plugins>=0.3.4; extra == 'doc'
Requires-Dist: myst-nb>=1; extra == 'doc'
Requires-Dist: myst-parser>=2; extra == 'doc'
Requires-Dist: sphinx-autodoc2>=0.5; extra == 'doc'
Requires-Dist: sphinx-copybutton>=0.5.2; extra == 'doc'
Requires-Dist: sphinx-library>=1.1.2; extra == 'doc'
Requires-Dist: sphinx-sitemap>=2.5.1; extra == 'doc'
Requires-Dist: sphinx-togglebutton>=0.3.2; extra == 'doc'
Requires-Dist: sphinx>=7.2.6; extra == 'doc'
Requires-Dist: sphinxcontrib-apidoc>=0.4; extra == 'doc'
Provides-Extra: lint
Requires-Dist: ruff>=0.1.6; extra == 'lint'
Provides-Extra: neb
Requires-Dist: ase>=3.22; extra == 'neb'
Requires-Dist: h5py>=3.0; extra == 'neb'
Requires-Dist: polars>=0.20; extra == 'neb'
Provides-Extra: plot
Requires-Dist: cmcrameri>=1.7; extra == 'plot'
Requires-Dist: matplotlib>=3.8.2; extra == 'plot'
Provides-Extra: test
Requires-Dist: pytest-cov>=4.1.0; extra == 'test'
Requires-Dist: pytest>=7.4.3; extra == 'test'
Provides-Extra: xyzrender
Requires-Dist: xyzrender>=0.1.2; extra == 'xyzrender'
Description-Content-Type: text/markdown


# Table of Contents

-   [About](#org69d0d18)
    -   [Installation](#org6425b9a)
    -   [Ecosystem Overview](#org7717c22)
    -   [Features](#org7ec2e1c)
        -   [Supported Engines](#org3c6cfc2)
    -   [Documentation](#org7d2bbf4)
    -   [Contributing](#orgc77604d)
-   [License](#org8180f68)
-   [Acknowledgments](#org7ebb45c)



<a id="org69d0d18"></a>

# About

![img](branding/logo/chemparseplot_logo.png)

[![Tests](https://github.com/HaoZeke/chemparseplot/actions/workflows/build_test.yml/badge.svg)](https://github.com/HaoZeke/chemparseplot/actions/workflows/build_test.yml)
[![Linting](https://github.com/HaoZeke/chemparseplot/actions/workflows/ci_prek.yml/badge.svg)](https://github.com/HaoZeke/chemparseplot/actions/workflows/ci_prek.yml)
[![Docs](https://github.com/HaoZeke/chemparseplot/actions/workflows/build_docs.yml/badge.svg)](https://github.com/HaoZeke/chemparseplot/actions/workflows/build_docs.yml)
[![PyPI](https://img.shields.io/pypi/v/chemparseplot)](https://pypi.org/project/chemparseplot/)
[![Python](https://img.shields.io/pypi/pyversions/chemparseplot)](https://pypi.org/project/chemparseplot/)
[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
[![One Good Tutorial docs checklist v1: adopted](https://onegoodtutorial.org/badge/adopted-v1.svg)](https://onegoodtutorial.org/about/badge/?v=1)
[![Hatch project](https://img.shields.io/badge/%F0%9F%A5%9A-Hatch-4051b5.svg)](https://github.com/pypa/hatch)
[![DOI](https://zenodo.org/badge/725730118.svg)](https://doi.org/10.5281/zenodo.18529752)

A **pure-python**<sup><a id="fnr.butwhy" class="footref" href="#fn.butwhy" role="doc-backlink">1</a></sup> parsing and plotting library for computational
chemistry outputs. `chemparseplot` extracts structured data from quantum
chemistry codes (ORCA, eOn, Sella, ChemGP) and produces publication-quality,
unit-aware visualizations with [scientific color maps](https://www.fabiocrameri.ch/colourmaps/).

Computational tasks (surface fitting, structure analysis, interpolation) are
handled by [`rgpycrumbs`](https://github.com/HaoZeke/rgpycrumbs), which is a required dependency. `chemparseplot` parses
output files, delegates heavy computation to `rgpycrumbs`, and produces
publication-quality plots.


<a id="org6425b9a"></a>

## Installation

    pip install chemparseplot
    # With plotting support
    pip install "chemparseplot[plot]"
    # Everything
    pip install "chemparseplot[all]"

For development:

    git clone https://github.com/HaoZeke/chemparseplot
    cd chemparseplot
    uv sync --all-extras

See the [installation guide](https://chemparseplot.rgoswami.me/installation.html) and [quickstart](https://chemparseplot.rgoswami.me/quickstart.html) for details.


<a id="org7717c22"></a>

## Ecosystem Overview

`chemparseplot` is part of the `rgpycrumbs` suite of interlinked libraries.

![img](branding/logo/ecosystem.png)


<a id="org7ec2e1c"></a>

## Features

-   **Parsing** computational chemistry output files into structured data
-   **Plotting** with [scientific color maps](https://www.fabiocrameri.ch/colourmaps/) (camera-ready)
-   **Unit preserving** throughout via `pint`
-   **Computation** delegated to [`rgpycrumbs`](https://github.com/HaoZeke/rgpycrumbs) for surface fitting, interpolation,
    and structure analysis


<a id="org3c6cfc2"></a>

### Supported Engines

-   ORCA (**5.x**)
    -   Geometry scan (`OPT`) energy profiles
    -   Nudged elastic band (`NEB`) path visualization
-   eOn
    -   Saddle search parsing (Dimer, GPRD, LBFGS methods)
    -   NEB path energy profiles with landscape projections
-   Sella
    -   Saddle point optimization result parsing
-   Trajectory formats
    -   HDF5 trajectories (ChemGP output with pre-computed forces)
    -   Generic ASE-readable formats (extxyz, .traj) for NEB analysis


<a id="org7d2bbf4"></a>

## Documentation

Full documentation is at <https://chemparseplot.rgoswami.me>. This includes:

-   A [quickstart guide](https://chemparseplot.rgoswami.me/quickstart.html)
-   [Tutorials](https://chemparseplot.rgoswami.me/tutorials/index.html) for common workflows
-   [API reference](https://chemparseplot.rgoswami.me/apidocs/index.html)


<a id="orgc77604d"></a>

## Contributing

Contributions are welcome. See [CONTRIBUTING.md](https://github.com/HaoZeke/chemparseplot/blob/main/CONTRIBUTING.md) for development setup and
guidelines, and our [Code of Conduct](https://github.com/HaoZeke/chemparseplot/blob/main/CODE_OF_CONDUCT.md).

For bug reports or questions, open an issue on [GitHub](https://github.com/HaoZeke/chemparseplot/issues).


<a id="org8180f68"></a>

# License

MIT. However, this is an academic resource, so **please cite** as much as possible
via:

-   The [Zenodo DOI](https://doi.org/10.5281/zenodo.18529752) for general use.
-   The `wailord` paper for ORCA usage


<a id="org7ebb45c"></a>

# Acknowledgments

This project builds on work supported by the University of Iceland and the
Icelandic Research Fund. `chemparseplot` relies on [`rgpycrumbs`](https://github.com/HaoZeke/rgpycrumbs) for computational
modules.


# Footnotes

<sup><a id="fn.1" href="#fnr.1">1</a></sup> To distinguish it from my other thin-python wrapper projects
