chemparseplot 1.2.0__tar.gz → 1.3.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {chemparseplot-1.2.0 → chemparseplot-1.3.0}/.gitignore +5 -0
- chemparseplot-1.3.0/PKG-INFO +199 -0
- {chemparseplot-1.2.0 → chemparseplot-1.3.0}/_version.py +2 -2
- chemparseplot-1.3.0/chemparseplot/plot/__init__.py +36 -0
- chemparseplot-1.3.0/chemparseplot/plot/chemgp.py +1238 -0
- {chemparseplot-1.2.0 → chemparseplot-1.3.0}/chemparseplot/plot/neb.py +8 -3
- {chemparseplot-1.2.0 → chemparseplot-1.3.0}/chemparseplot/plot/theme.py +24 -0
- {chemparseplot-1.2.0 → chemparseplot-1.3.0}/pyproject.toml +26 -5
- chemparseplot-1.3.0/readme.md +142 -0
- chemparseplot-1.2.0/PKG-INFO +0 -140
- chemparseplot-1.2.0/chemparseplot/plot/__init__.py +0 -9
- chemparseplot-1.2.0/readme.md +0 -91
- {chemparseplot-1.2.0 → chemparseplot-1.3.0}/LICENSE +0 -0
- {chemparseplot-1.2.0 → chemparseplot-1.3.0}/chemparseplot/__init__.py +0 -0
- {chemparseplot-1.2.0 → chemparseplot-1.3.0}/chemparseplot/parse/__init__.py +0 -0
- {chemparseplot-1.2.0 → chemparseplot-1.3.0}/chemparseplot/parse/converter.py +0 -0
- {chemparseplot-1.2.0 → chemparseplot-1.3.0}/chemparseplot/parse/eon/gprd.py +0 -0
- {chemparseplot-1.2.0 → chemparseplot-1.3.0}/chemparseplot/parse/eon/minimization.py +0 -0
- {chemparseplot-1.2.0 → chemparseplot-1.3.0}/chemparseplot/parse/eon/neb.py +0 -0
- {chemparseplot-1.2.0 → chemparseplot-1.3.0}/chemparseplot/parse/eon/saddle_search.py +0 -0
- {chemparseplot-1.2.0 → chemparseplot-1.3.0}/chemparseplot/parse/file_.py +0 -0
- {chemparseplot-1.2.0 → chemparseplot-1.3.0}/chemparseplot/parse/neb_utils.py +0 -0
- {chemparseplot-1.2.0 → chemparseplot-1.3.0}/chemparseplot/parse/orca/__init__.py +0 -0
- {chemparseplot-1.2.0 → chemparseplot-1.3.0}/chemparseplot/parse/orca/geomscan.py +0 -0
- {chemparseplot-1.2.0 → chemparseplot-1.3.0}/chemparseplot/parse/orca/neb/interp.py +0 -0
- {chemparseplot-1.2.0 → chemparseplot-1.3.0}/chemparseplot/parse/patterns.py +0 -0
- {chemparseplot-1.2.0 → chemparseplot-1.3.0}/chemparseplot/parse/sella/saddle_search.py +0 -0
- {chemparseplot-1.2.0 → chemparseplot-1.3.0}/chemparseplot/parse/trajectory/__init__.py +0 -0
- {chemparseplot-1.2.0 → chemparseplot-1.3.0}/chemparseplot/parse/trajectory/hdf5.py +0 -0
- {chemparseplot-1.2.0 → chemparseplot-1.3.0}/chemparseplot/parse/trajectory/neb.py +0 -0
- {chemparseplot-1.2.0 → chemparseplot-1.3.0}/chemparseplot/plot/geomscan.py +0 -0
- {chemparseplot-1.2.0 → chemparseplot-1.3.0}/chemparseplot/plot/structs.py +0 -0
- {chemparseplot-1.2.0 → chemparseplot-1.3.0}/chemparseplot/units.py +0 -0
- {chemparseplot-1.2.0 → chemparseplot-1.3.0}/chemparseplot/util.py +0 -0
- {chemparseplot-1.2.0 → chemparseplot-1.3.0}/tests/conftest.py +0 -0
- {chemparseplot-1.2.0 → chemparseplot-1.3.0}/tests/parse/orca/test_geomscan.py +0 -0
- {chemparseplot-1.2.0 → chemparseplot-1.3.0}/tests/parse/orca/test_interp.py +0 -0
- {chemparseplot-1.2.0 → chemparseplot-1.3.0}/tests/parse/test_converter.py +0 -0
- {chemparseplot-1.2.0 → chemparseplot-1.3.0}/tests/parse/test_neb_utils.py +0 -0
- {chemparseplot-1.2.0 → chemparseplot-1.3.0}/tests/parse/test_patterns.py +0 -0
- {chemparseplot-1.2.0 → chemparseplot-1.3.0}/tests/parse/test_trajectory_hdf5.py +0 -0
- {chemparseplot-1.2.0 → chemparseplot-1.3.0}/tests/parse/test_trajectory_neb.py +0 -0
- {chemparseplot-1.2.0 → chemparseplot-1.3.0}/tests/plot/__init__.py +0 -0
- {chemparseplot-1.2.0 → chemparseplot-1.3.0}/tests/plot/test_neb_renderers.py +0 -0
|
@@ -1,5 +1,10 @@
|
|
|
1
1
|
.pixi
|
|
2
|
+
CLAUDE.md
|
|
3
|
+
.claude/
|
|
2
4
|
apidocs/*
|
|
5
|
+
doc/source/apidocs/
|
|
6
|
+
doc/jupyter_execute/
|
|
7
|
+
doc/build/
|
|
3
8
|
### Generated by gibo (https://github.com/simonwhitaker/gibo)
|
|
4
9
|
### https://raw.github.com/github/gitignore/4488915eec0b3a45b5c63ead28f286819c0917de/Python.gitignore
|
|
5
10
|
|
|
@@ -0,0 +1,199 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: chemparseplot
|
|
3
|
+
Version: 1.3.0
|
|
4
|
+
Summary: Parsers and plotting tools for computational chemistry
|
|
5
|
+
Project-URL: Documentation, https://chemparseplot.rgoswami.me
|
|
6
|
+
Project-URL: Issues, https://github.com/HaoZeke/chemparseplot/issues
|
|
7
|
+
Project-URL: Source, https://github.com/HaoZeke/chemparseplot
|
|
8
|
+
Project-URL: Changelog, https://github.com/HaoZeke/chemparseplot/blob/main/CHANGELOG.md
|
|
9
|
+
Author-email: Rohit Goswami <rog32@hi.is>
|
|
10
|
+
License: MIT
|
|
11
|
+
License-File: LICENSE
|
|
12
|
+
Keywords: compchem,parser,plot
|
|
13
|
+
Classifier: Development Status :: 4 - Beta
|
|
14
|
+
Classifier: Programming Language :: Python
|
|
15
|
+
Classifier: Programming Language :: Python :: 3 :: Only
|
|
16
|
+
Classifier: Programming Language :: Python :: 3.10
|
|
17
|
+
Classifier: Programming Language :: Python :: 3.11
|
|
18
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
19
|
+
Classifier: Programming Language :: Python :: Implementation :: CPython
|
|
20
|
+
Requires-Python: >=3.10
|
|
21
|
+
Requires-Dist: numpy>=1.26.2
|
|
22
|
+
Requires-Dist: pint>=0.22
|
|
23
|
+
Requires-Dist: rgpycrumbs>=1.3.0
|
|
24
|
+
Provides-Extra: all
|
|
25
|
+
Requires-Dist: ase>=3.22; extra == 'all'
|
|
26
|
+
Requires-Dist: cmcrameri>=1.7; extra == 'all'
|
|
27
|
+
Requires-Dist: h5py>=3.0; extra == 'all'
|
|
28
|
+
Requires-Dist: matplotlib>=3.8.2; extra == 'all'
|
|
29
|
+
Requires-Dist: polars>=0.20; extra == 'all'
|
|
30
|
+
Requires-Dist: xyzrender>=0.1.2; extra == 'all'
|
|
31
|
+
Provides-Extra: doc
|
|
32
|
+
Requires-Dist: mdit-py-plugins>=0.3.4; extra == 'doc'
|
|
33
|
+
Requires-Dist: myst-nb>=1; extra == 'doc'
|
|
34
|
+
Requires-Dist: myst-parser>=2; extra == 'doc'
|
|
35
|
+
Requires-Dist: sphinx-autodoc2>=0.5; extra == 'doc'
|
|
36
|
+
Requires-Dist: sphinx-copybutton>=0.5.2; extra == 'doc'
|
|
37
|
+
Requires-Dist: sphinx-library>=1.1.2; extra == 'doc'
|
|
38
|
+
Requires-Dist: sphinx-sitemap>=2.5.1; extra == 'doc'
|
|
39
|
+
Requires-Dist: sphinx-togglebutton>=0.3.2; extra == 'doc'
|
|
40
|
+
Requires-Dist: sphinx>=7.2.6; extra == 'doc'
|
|
41
|
+
Requires-Dist: sphinxcontrib-apidoc>=0.4; extra == 'doc'
|
|
42
|
+
Provides-Extra: lint
|
|
43
|
+
Requires-Dist: ruff>=0.1.6; extra == 'lint'
|
|
44
|
+
Provides-Extra: neb
|
|
45
|
+
Requires-Dist: ase>=3.22; extra == 'neb'
|
|
46
|
+
Requires-Dist: h5py>=3.0; extra == 'neb'
|
|
47
|
+
Requires-Dist: polars>=0.20; extra == 'neb'
|
|
48
|
+
Provides-Extra: plot
|
|
49
|
+
Requires-Dist: cmcrameri>=1.7; extra == 'plot'
|
|
50
|
+
Requires-Dist: matplotlib>=3.8.2; extra == 'plot'
|
|
51
|
+
Provides-Extra: test
|
|
52
|
+
Requires-Dist: pytest-cov>=4.1.0; extra == 'test'
|
|
53
|
+
Requires-Dist: pytest>=7.4.3; extra == 'test'
|
|
54
|
+
Provides-Extra: xyzrender
|
|
55
|
+
Requires-Dist: xyzrender>=0.1.2; extra == 'xyzrender'
|
|
56
|
+
Description-Content-Type: text/markdown
|
|
57
|
+
|
|
58
|
+
|
|
59
|
+
# Table of Contents
|
|
60
|
+
|
|
61
|
+
- [About](#org69d0d18)
|
|
62
|
+
- [Installation](#org6425b9a)
|
|
63
|
+
- [Ecosystem Overview](#org7717c22)
|
|
64
|
+
- [Features](#org7ec2e1c)
|
|
65
|
+
- [Supported Engines](#org3c6cfc2)
|
|
66
|
+
- [Documentation](#org7d2bbf4)
|
|
67
|
+
- [Contributing](#orgc77604d)
|
|
68
|
+
- [License](#org8180f68)
|
|
69
|
+
- [Acknowledgments](#org7ebb45c)
|
|
70
|
+
|
|
71
|
+
|
|
72
|
+
|
|
73
|
+
<a id="org69d0d18"></a>
|
|
74
|
+
|
|
75
|
+
# About
|
|
76
|
+
|
|
77
|
+

|
|
78
|
+
|
|
79
|
+
[](https://github.com/HaoZeke/chemparseplot/actions/workflows/build_test.yml)
|
|
80
|
+
[](https://github.com/HaoZeke/chemparseplot/actions/workflows/ci_prek.yml)
|
|
81
|
+
[](https://github.com/HaoZeke/chemparseplot/actions/workflows/build_docs.yml)
|
|
82
|
+
[](https://pypi.org/project/chemparseplot/)
|
|
83
|
+
[](https://pypi.org/project/chemparseplot/)
|
|
84
|
+
[](https://opensource.org/licenses/MIT)
|
|
85
|
+
[](https://onegoodtutorial.org/about/badge/?v=1)
|
|
86
|
+
[](https://github.com/pypa/hatch)
|
|
87
|
+
[](https://doi.org/10.5281/zenodo.18529752)
|
|
88
|
+
|
|
89
|
+
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
|
|
90
|
+
chemistry outputs. `chemparseplot` extracts structured data from quantum
|
|
91
|
+
chemistry codes (ORCA, eOn, Sella, ChemGP) and produces publication-quality,
|
|
92
|
+
unit-aware visualizations with [scientific color maps](https://www.fabiocrameri.ch/colourmaps/).
|
|
93
|
+
|
|
94
|
+
Computational tasks (surface fitting, structure analysis, interpolation) are
|
|
95
|
+
handled by [`rgpycrumbs`](https://github.com/HaoZeke/rgpycrumbs), which is a required dependency. `chemparseplot` parses
|
|
96
|
+
output files, delegates heavy computation to `rgpycrumbs`, and produces
|
|
97
|
+
publication-quality plots.
|
|
98
|
+
|
|
99
|
+
|
|
100
|
+
<a id="org6425b9a"></a>
|
|
101
|
+
|
|
102
|
+
## Installation
|
|
103
|
+
|
|
104
|
+
pip install chemparseplot
|
|
105
|
+
# With plotting support
|
|
106
|
+
pip install "chemparseplot[plot]"
|
|
107
|
+
# Everything
|
|
108
|
+
pip install "chemparseplot[all]"
|
|
109
|
+
|
|
110
|
+
For development:
|
|
111
|
+
|
|
112
|
+
git clone https://github.com/HaoZeke/chemparseplot
|
|
113
|
+
cd chemparseplot
|
|
114
|
+
uv sync --all-extras
|
|
115
|
+
|
|
116
|
+
See the [installation guide](https://chemparseplot.rgoswami.me/installation.html) and [quickstart](https://chemparseplot.rgoswami.me/quickstart.html) for details.
|
|
117
|
+
|
|
118
|
+
|
|
119
|
+
<a id="org7717c22"></a>
|
|
120
|
+
|
|
121
|
+
## Ecosystem Overview
|
|
122
|
+
|
|
123
|
+
`chemparseplot` is part of the `rgpycrumbs` suite of interlinked libraries.
|
|
124
|
+
|
|
125
|
+

|
|
126
|
+
|
|
127
|
+
|
|
128
|
+
<a id="org7ec2e1c"></a>
|
|
129
|
+
|
|
130
|
+
## Features
|
|
131
|
+
|
|
132
|
+
- **Parsing** computational chemistry output files into structured data
|
|
133
|
+
- **Plotting** with [scientific color maps](https://www.fabiocrameri.ch/colourmaps/) (camera-ready)
|
|
134
|
+
- **Unit preserving** throughout via `pint`
|
|
135
|
+
- **Computation** delegated to [`rgpycrumbs`](https://github.com/HaoZeke/rgpycrumbs) for surface fitting, interpolation,
|
|
136
|
+
and structure analysis
|
|
137
|
+
|
|
138
|
+
|
|
139
|
+
<a id="org3c6cfc2"></a>
|
|
140
|
+
|
|
141
|
+
### Supported Engines
|
|
142
|
+
|
|
143
|
+
- ORCA (**5.x**)
|
|
144
|
+
- Geometry scan (`OPT`) energy profiles
|
|
145
|
+
- Nudged elastic band (`NEB`) path visualization
|
|
146
|
+
- eOn
|
|
147
|
+
- Saddle search parsing (Dimer, GPRD, LBFGS methods)
|
|
148
|
+
- NEB path energy profiles with landscape projections
|
|
149
|
+
- Sella
|
|
150
|
+
- Saddle point optimization result parsing
|
|
151
|
+
- Trajectory formats
|
|
152
|
+
- HDF5 trajectories (ChemGP output with pre-computed forces)
|
|
153
|
+
- Generic ASE-readable formats (extxyz, .traj) for NEB analysis
|
|
154
|
+
|
|
155
|
+
|
|
156
|
+
<a id="org7d2bbf4"></a>
|
|
157
|
+
|
|
158
|
+
## Documentation
|
|
159
|
+
|
|
160
|
+
Full documentation is at <https://chemparseplot.rgoswami.me>. This includes:
|
|
161
|
+
|
|
162
|
+
- A [quickstart guide](https://chemparseplot.rgoswami.me/quickstart.html)
|
|
163
|
+
- [Tutorials](https://chemparseplot.rgoswami.me/tutorials/index.html) for common workflows
|
|
164
|
+
- [API reference](https://chemparseplot.rgoswami.me/apidocs/index.html)
|
|
165
|
+
|
|
166
|
+
|
|
167
|
+
<a id="orgc77604d"></a>
|
|
168
|
+
|
|
169
|
+
## Contributing
|
|
170
|
+
|
|
171
|
+
Contributions are welcome. See [CONTRIBUTING.md](https://github.com/HaoZeke/chemparseplot/blob/main/CONTRIBUTING.md) for development setup and
|
|
172
|
+
guidelines, and our [Code of Conduct](https://github.com/HaoZeke/chemparseplot/blob/main/CODE_OF_CONDUCT.md).
|
|
173
|
+
|
|
174
|
+
For bug reports or questions, open an issue on [GitHub](https://github.com/HaoZeke/chemparseplot/issues).
|
|
175
|
+
|
|
176
|
+
|
|
177
|
+
<a id="org8180f68"></a>
|
|
178
|
+
|
|
179
|
+
# License
|
|
180
|
+
|
|
181
|
+
MIT. However, this is an academic resource, so **please cite** as much as possible
|
|
182
|
+
via:
|
|
183
|
+
|
|
184
|
+
- The [Zenodo DOI](https://doi.org/10.5281/zenodo.18529752) for general use.
|
|
185
|
+
- The `wailord` paper for ORCA usage
|
|
186
|
+
|
|
187
|
+
|
|
188
|
+
<a id="org7ebb45c"></a>
|
|
189
|
+
|
|
190
|
+
# Acknowledgments
|
|
191
|
+
|
|
192
|
+
This project builds on work supported by the University of Iceland and the
|
|
193
|
+
Icelandic Research Fund. `chemparseplot` relies on [`rgpycrumbs`](https://github.com/HaoZeke/rgpycrumbs) for computational
|
|
194
|
+
modules.
|
|
195
|
+
|
|
196
|
+
|
|
197
|
+
# Footnotes
|
|
198
|
+
|
|
199
|
+
<sup><a id="fn.1" href="#fnr.1">1</a></sup> To distinguish it from my other thin-python wrapper projects
|
|
@@ -28,7 +28,7 @@ version_tuple: VERSION_TUPLE
|
|
|
28
28
|
commit_id: COMMIT_ID
|
|
29
29
|
__commit_id__: COMMIT_ID
|
|
30
30
|
|
|
31
|
-
__version__ = version = '1.
|
|
32
|
-
__version_tuple__ = version_tuple = (1,
|
|
31
|
+
__version__ = version = '1.3.0'
|
|
32
|
+
__version_tuple__ = version_tuple = (1, 3, 0)
|
|
33
33
|
|
|
34
34
|
__commit_id__ = commit_id = None
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
# SPDX-FileCopyrightText: 2023-present Rohit Goswami <rog32@hi.is>
|
|
2
|
+
#
|
|
3
|
+
# SPDX-License-Identifier: MIT
|
|
4
|
+
|
|
5
|
+
from chemparseplot.plot.theme import (
|
|
6
|
+
RUHI_COLORS,
|
|
7
|
+
RUHI_THEME,
|
|
8
|
+
PlotTheme,
|
|
9
|
+
get_theme,
|
|
10
|
+
setup_global_theme,
|
|
11
|
+
setup_publication_theme,
|
|
12
|
+
)
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
# Lazy imports for submodules with heavy deps (cmcrameri, pint, etc.)
|
|
16
|
+
def __getattr__(name):
|
|
17
|
+
if name == "geomscan":
|
|
18
|
+
from chemparseplot.plot import geomscan as _mod
|
|
19
|
+
|
|
20
|
+
return _mod
|
|
21
|
+
if name == "structs":
|
|
22
|
+
from chemparseplot.plot import structs as _mod
|
|
23
|
+
|
|
24
|
+
return _mod
|
|
25
|
+
if name == "chemgp":
|
|
26
|
+
from chemparseplot.plot import chemgp as _mod
|
|
27
|
+
|
|
28
|
+
return _mod
|
|
29
|
+
if name == "ureg":
|
|
30
|
+
from chemparseplot.units import ureg as _ureg
|
|
31
|
+
|
|
32
|
+
_ureg.setup_matplotlib(True)
|
|
33
|
+
_ureg.mpl_formatter = "{:~P}"
|
|
34
|
+
return _ureg
|
|
35
|
+
msg = f"module {__name__!r} has no attribute {name!r}"
|
|
36
|
+
raise AttributeError(msg)
|