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.
Files changed (44) hide show
  1. {chemparseplot-1.2.0 → chemparseplot-1.3.0}/.gitignore +5 -0
  2. chemparseplot-1.3.0/PKG-INFO +199 -0
  3. {chemparseplot-1.2.0 → chemparseplot-1.3.0}/_version.py +2 -2
  4. chemparseplot-1.3.0/chemparseplot/plot/__init__.py +36 -0
  5. chemparseplot-1.3.0/chemparseplot/plot/chemgp.py +1238 -0
  6. {chemparseplot-1.2.0 → chemparseplot-1.3.0}/chemparseplot/plot/neb.py +8 -3
  7. {chemparseplot-1.2.0 → chemparseplot-1.3.0}/chemparseplot/plot/theme.py +24 -0
  8. {chemparseplot-1.2.0 → chemparseplot-1.3.0}/pyproject.toml +26 -5
  9. chemparseplot-1.3.0/readme.md +142 -0
  10. chemparseplot-1.2.0/PKG-INFO +0 -140
  11. chemparseplot-1.2.0/chemparseplot/plot/__init__.py +0 -9
  12. chemparseplot-1.2.0/readme.md +0 -91
  13. {chemparseplot-1.2.0 → chemparseplot-1.3.0}/LICENSE +0 -0
  14. {chemparseplot-1.2.0 → chemparseplot-1.3.0}/chemparseplot/__init__.py +0 -0
  15. {chemparseplot-1.2.0 → chemparseplot-1.3.0}/chemparseplot/parse/__init__.py +0 -0
  16. {chemparseplot-1.2.0 → chemparseplot-1.3.0}/chemparseplot/parse/converter.py +0 -0
  17. {chemparseplot-1.2.0 → chemparseplot-1.3.0}/chemparseplot/parse/eon/gprd.py +0 -0
  18. {chemparseplot-1.2.0 → chemparseplot-1.3.0}/chemparseplot/parse/eon/minimization.py +0 -0
  19. {chemparseplot-1.2.0 → chemparseplot-1.3.0}/chemparseplot/parse/eon/neb.py +0 -0
  20. {chemparseplot-1.2.0 → chemparseplot-1.3.0}/chemparseplot/parse/eon/saddle_search.py +0 -0
  21. {chemparseplot-1.2.0 → chemparseplot-1.3.0}/chemparseplot/parse/file_.py +0 -0
  22. {chemparseplot-1.2.0 → chemparseplot-1.3.0}/chemparseplot/parse/neb_utils.py +0 -0
  23. {chemparseplot-1.2.0 → chemparseplot-1.3.0}/chemparseplot/parse/orca/__init__.py +0 -0
  24. {chemparseplot-1.2.0 → chemparseplot-1.3.0}/chemparseplot/parse/orca/geomscan.py +0 -0
  25. {chemparseplot-1.2.0 → chemparseplot-1.3.0}/chemparseplot/parse/orca/neb/interp.py +0 -0
  26. {chemparseplot-1.2.0 → chemparseplot-1.3.0}/chemparseplot/parse/patterns.py +0 -0
  27. {chemparseplot-1.2.0 → chemparseplot-1.3.0}/chemparseplot/parse/sella/saddle_search.py +0 -0
  28. {chemparseplot-1.2.0 → chemparseplot-1.3.0}/chemparseplot/parse/trajectory/__init__.py +0 -0
  29. {chemparseplot-1.2.0 → chemparseplot-1.3.0}/chemparseplot/parse/trajectory/hdf5.py +0 -0
  30. {chemparseplot-1.2.0 → chemparseplot-1.3.0}/chemparseplot/parse/trajectory/neb.py +0 -0
  31. {chemparseplot-1.2.0 → chemparseplot-1.3.0}/chemparseplot/plot/geomscan.py +0 -0
  32. {chemparseplot-1.2.0 → chemparseplot-1.3.0}/chemparseplot/plot/structs.py +0 -0
  33. {chemparseplot-1.2.0 → chemparseplot-1.3.0}/chemparseplot/units.py +0 -0
  34. {chemparseplot-1.2.0 → chemparseplot-1.3.0}/chemparseplot/util.py +0 -0
  35. {chemparseplot-1.2.0 → chemparseplot-1.3.0}/tests/conftest.py +0 -0
  36. {chemparseplot-1.2.0 → chemparseplot-1.3.0}/tests/parse/orca/test_geomscan.py +0 -0
  37. {chemparseplot-1.2.0 → chemparseplot-1.3.0}/tests/parse/orca/test_interp.py +0 -0
  38. {chemparseplot-1.2.0 → chemparseplot-1.3.0}/tests/parse/test_converter.py +0 -0
  39. {chemparseplot-1.2.0 → chemparseplot-1.3.0}/tests/parse/test_neb_utils.py +0 -0
  40. {chemparseplot-1.2.0 → chemparseplot-1.3.0}/tests/parse/test_patterns.py +0 -0
  41. {chemparseplot-1.2.0 → chemparseplot-1.3.0}/tests/parse/test_trajectory_hdf5.py +0 -0
  42. {chemparseplot-1.2.0 → chemparseplot-1.3.0}/tests/parse/test_trajectory_neb.py +0 -0
  43. {chemparseplot-1.2.0 → chemparseplot-1.3.0}/tests/plot/__init__.py +0 -0
  44. {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
+ ![img](branding/logo/chemparseplot_logo.png)
78
+
79
+ [![Tests](https://github.com/HaoZeke/chemparseplot/actions/workflows/build_test.yml/badge.svg)](https://github.com/HaoZeke/chemparseplot/actions/workflows/build_test.yml)
80
+ [![Linting](https://github.com/HaoZeke/chemparseplot/actions/workflows/ci_prek.yml/badge.svg)](https://github.com/HaoZeke/chemparseplot/actions/workflows/ci_prek.yml)
81
+ [![Docs](https://github.com/HaoZeke/chemparseplot/actions/workflows/build_docs.yml/badge.svg)](https://github.com/HaoZeke/chemparseplot/actions/workflows/build_docs.yml)
82
+ [![PyPI](https://img.shields.io/pypi/v/chemparseplot)](https://pypi.org/project/chemparseplot/)
83
+ [![Python](https://img.shields.io/pypi/pyversions/chemparseplot)](https://pypi.org/project/chemparseplot/)
84
+ [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
85
+ [![One Good Tutorial docs checklist v1: adopted](https://onegoodtutorial.org/badge/adopted-v1.svg)](https://onegoodtutorial.org/about/badge/?v=1)
86
+ [![Hatch project](https://img.shields.io/badge/%F0%9F%A5%9A-Hatch-4051b5.svg)](https://github.com/pypa/hatch)
87
+ [![DOI](https://zenodo.org/badge/725730118.svg)](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
+ ![img](branding/logo/ecosystem.png)
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.2.0'
32
- __version_tuple__ = version_tuple = (1, 2, 0)
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)