nebscape 0.1.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.
@@ -0,0 +1,99 @@
1
+ Metadata-Version: 2.3
2
+ Name: nebscape
3
+ Version: 0.1.0
4
+ Summary: Automated workflow for surface reactions.
5
+ Keywords: chemistry,materials,catalyst
6
+ Author: Hyunwook Jung
7
+ Author-email: Hyunwook Jung <hjung@fhi.mpg.de>
8
+ License: MIT
9
+ Classifier: Programming Language :: Python :: 3
10
+ Classifier: Programming Language :: Python :: 3.12
11
+ Requires-Dist: pandas>=2.2.3,<3.0.0
12
+ Requires-Dist: rdkit>=2024.9.6,<2025.0.0
13
+ Requires-Dist: igraph>=0.11.8,<0.12.0
14
+ Requires-Dist: networkx>=3.4.2,<4.0.0
15
+ Requires-Dist: dscribe>=2.1.1,<3.0.0
16
+ Requires-Dist: ase>=3.25.0,<4.0.0
17
+ Requires-Dist: wfl>=0.3.5
18
+ Requires-Dist: scikit-learn>=1.6.1,<2.0.0
19
+ Requires-Dist: pymatgen==2025.10.7
20
+ Requires-Dist: pytest ; extra == 'dev'
21
+ Requires-Dist: ruff ; extra == 'dev'
22
+ Requires-Dist: pre-commit ; extra == 'dev'
23
+ Requires-Python: >=3.10
24
+ Provides-Extra: dev
25
+ Description-Content-Type: text/markdown
26
+
27
+ # NEBscape
28
+ [![ChemRxiv](https://img.shields.io/badge/ChemRxiv-Preprint-blue)](https://doi.org/10.26434/chemrxiv.15002133/v1)
29
+ [![DOI](https://img.shields.io/badge/DOI-10.26434%2Fchemrxiv.15000180-blue)](https://doi.org/10.26434/chemrxiv.15002133/v1)
30
+
31
+ [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
32
+
33
+ [![Tests Passing](https://img.shields.io/badge/tests-passing-brightgreen.svg)](https://gitlab.mpcdf.mpg.de/hjung/nebscape)
34
+ ![Ruff](https://img.shields.io/badge/lint-ruff-success?logo=ruff)
35
+
36
+ Automated workflow for sampling minimum energy path for surface reactions with minimal human input.
37
+
38
+ ![image](./docs/workflow.png)
39
+
40
+ ## Installation from source
41
+ ```
42
+ git clone https://gitlab.mpcdf.mpg.de/hjung/nebscape.git
43
+ pip install .
44
+ ```
45
+
46
+ ## Required Inputs
47
+ This workflow prepares initial and final geometry with global optimization (e.g. minima hopping) and provides automatic atom-mapping and generates possbile permutation of symmetric atoms. Only following three inputs are required.
48
+
49
+ 1. List of reaction SMILES string in `reaction_smiles.txt`
50
+ (e.g. `O=[C][CH2][O]>>[C-]#[O+].[CH2]=O`)
51
+ 2. slab information in `slab.xyz`
52
+ (Slab should use tag to indicate which atoms are fixed (tag=0) and which atoms are relaxsed(tag=1))
53
+ 3. Calculator (e.g. MLIP like MACE)
54
+
55
+ ## Setting
56
+ This workflow uses [wfl](https://github.com/libAtoms/workflow) and [expyre](https://github.com/libAtoms/ExPyRe) for remote submission, so it is advised to configure related settings
57
+ - `config.json` file has to be set for remote submission to HPC (Can be found in `/example`)
58
+ - According to `config.json`, several `remote_info` should also be adapted on user's environment.
59
+
60
+ ## Documentation
61
+
62
+ * **[Home](https://gitlab.mpcdf.mpg.de/hjung/nebscape/-/wikis/home)** - overview
63
+ * **[Installation](https://gitlab.mpcdf.mpg.de/hjung/nebscape/-/wikis/page-1)** - installation
64
+ * **[Setting up local environment](https://gitlab.mpcdf.mpg.de/hjung/nebscape/-/wikis/page-2)** - setting for wfl and expyre
65
+ * **[Input preparation](https://gitlab.mpcdf.mpg.de/hjung/nebscape/-/wikis/Input-Preparation)** - input file preparation
66
+ * **[Geometry generation](https://gitlab.mpcdf.mpg.de/hjung/nebscape/-/wikis/page-4)** - running minima hopping
67
+ * **[Interpolation generation](https://gitlab.mpcdf.mpg.de/hjung/nebscape/-/wikis/Interpolation-generation)** - generating initial minimum energy paths
68
+
69
+ (We are currently working on improving the documentation / tutorial. Let us know if you need help or suggestions.)
70
+
71
+
72
+ ## References
73
+ If you use this code, please cite our paper:
74
+
75
+ Hyunwook Jung, Emanuel Colombi Manzi, Tiago J. Goncalves, et al. From Global Optimization to Transition State Search: An Automated Workflow for Surface Reaction Barriers. ChemRxiv. 17 April 2026.
76
+
77
+ https://doi.org/10.26434/chemrxiv.15002133/v1
78
+
79
+ ```
80
+ @article{
81
+ doi:10.26434/chemrxiv.15002133/v1,
82
+ author = {Hyunwook Jung and Emanuel Colombi Manzi and Tiago J. Goncalves and Vanessa J. Bukas and Sandip De and Johannes T. Margraf and Karsten Reuter and Hendrik H. Heenen },
83
+ title = {From Global Optimization to Transition State Search: An Automated Workflow for Surface Reaction Barriers},
84
+ journal = {ChemRxiv},
85
+ volume = {2026},
86
+ number = {0417},
87
+ pages = {},
88
+ year = {2026},
89
+ doi = {10.26434/chemrxiv.15002133/v1},
90
+ URL = {https://chemrxiv.org/doi/abs/10.26434/chemrxiv.15002133/v1},
91
+ eprint = {https://chemrxiv.org/doi/pdf/10.26434/chemrxiv.15002133/v1}}
92
+ ```
93
+
94
+ ## Contact
95
+ If you have any questions, please contact us at hjung@fhi.mpg.de
96
+ Also for any bugs or issues, you can use [gitlab issues](https://gitlab.mpcdf.mpg.de/hjung/nebscape/-/issues).
97
+
98
+ ## License
99
+ The NEBscape code is published and distributed under the [MIT License](LICENSE).
@@ -0,0 +1,73 @@
1
+ # NEBscape
2
+ [![ChemRxiv](https://img.shields.io/badge/ChemRxiv-Preprint-blue)](https://doi.org/10.26434/chemrxiv.15002133/v1)
3
+ [![DOI](https://img.shields.io/badge/DOI-10.26434%2Fchemrxiv.15000180-blue)](https://doi.org/10.26434/chemrxiv.15002133/v1)
4
+
5
+ [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
6
+
7
+ [![Tests Passing](https://img.shields.io/badge/tests-passing-brightgreen.svg)](https://gitlab.mpcdf.mpg.de/hjung/nebscape)
8
+ ![Ruff](https://img.shields.io/badge/lint-ruff-success?logo=ruff)
9
+
10
+ Automated workflow for sampling minimum energy path for surface reactions with minimal human input.
11
+
12
+ ![image](./docs/workflow.png)
13
+
14
+ ## Installation from source
15
+ ```
16
+ git clone https://gitlab.mpcdf.mpg.de/hjung/nebscape.git
17
+ pip install .
18
+ ```
19
+
20
+ ## Required Inputs
21
+ This workflow prepares initial and final geometry with global optimization (e.g. minima hopping) and provides automatic atom-mapping and generates possbile permutation of symmetric atoms. Only following three inputs are required.
22
+
23
+ 1. List of reaction SMILES string in `reaction_smiles.txt`
24
+ (e.g. `O=[C][CH2][O]>>[C-]#[O+].[CH2]=O`)
25
+ 2. slab information in `slab.xyz`
26
+ (Slab should use tag to indicate which atoms are fixed (tag=0) and which atoms are relaxsed(tag=1))
27
+ 3. Calculator (e.g. MLIP like MACE)
28
+
29
+ ## Setting
30
+ This workflow uses [wfl](https://github.com/libAtoms/workflow) and [expyre](https://github.com/libAtoms/ExPyRe) for remote submission, so it is advised to configure related settings
31
+ - `config.json` file has to be set for remote submission to HPC (Can be found in `/example`)
32
+ - According to `config.json`, several `remote_info` should also be adapted on user's environment.
33
+
34
+ ## Documentation
35
+
36
+ * **[Home](https://gitlab.mpcdf.mpg.de/hjung/nebscape/-/wikis/home)** - overview
37
+ * **[Installation](https://gitlab.mpcdf.mpg.de/hjung/nebscape/-/wikis/page-1)** - installation
38
+ * **[Setting up local environment](https://gitlab.mpcdf.mpg.de/hjung/nebscape/-/wikis/page-2)** - setting for wfl and expyre
39
+ * **[Input preparation](https://gitlab.mpcdf.mpg.de/hjung/nebscape/-/wikis/Input-Preparation)** - input file preparation
40
+ * **[Geometry generation](https://gitlab.mpcdf.mpg.de/hjung/nebscape/-/wikis/page-4)** - running minima hopping
41
+ * **[Interpolation generation](https://gitlab.mpcdf.mpg.de/hjung/nebscape/-/wikis/Interpolation-generation)** - generating initial minimum energy paths
42
+
43
+ (We are currently working on improving the documentation / tutorial. Let us know if you need help or suggestions.)
44
+
45
+
46
+ ## References
47
+ If you use this code, please cite our paper:
48
+
49
+ Hyunwook Jung, Emanuel Colombi Manzi, Tiago J. Goncalves, et al. From Global Optimization to Transition State Search: An Automated Workflow for Surface Reaction Barriers. ChemRxiv. 17 April 2026.
50
+
51
+ https://doi.org/10.26434/chemrxiv.15002133/v1
52
+
53
+ ```
54
+ @article{
55
+ doi:10.26434/chemrxiv.15002133/v1,
56
+ author = {Hyunwook Jung and Emanuel Colombi Manzi and Tiago J. Goncalves and Vanessa J. Bukas and Sandip De and Johannes T. Margraf and Karsten Reuter and Hendrik H. Heenen },
57
+ title = {From Global Optimization to Transition State Search: An Automated Workflow for Surface Reaction Barriers},
58
+ journal = {ChemRxiv},
59
+ volume = {2026},
60
+ number = {0417},
61
+ pages = {},
62
+ year = {2026},
63
+ doi = {10.26434/chemrxiv.15002133/v1},
64
+ URL = {https://chemrxiv.org/doi/abs/10.26434/chemrxiv.15002133/v1},
65
+ eprint = {https://chemrxiv.org/doi/pdf/10.26434/chemrxiv.15002133/v1}}
66
+ ```
67
+
68
+ ## Contact
69
+ If you have any questions, please contact us at hjung@fhi.mpg.de
70
+ Also for any bugs or issues, you can use [gitlab issues](https://gitlab.mpcdf.mpg.de/hjung/nebscape/-/issues).
71
+
72
+ ## License
73
+ The NEBscape code is published and distributed under the [MIT License](LICENSE).
@@ -0,0 +1,66 @@
1
+ [project]
2
+ name = "nebscape"
3
+ version = "0.1.0"
4
+ description = "Automated workflow for surface reactions."
5
+ license = { text = "MIT" } # or your actual license
6
+ keywords = ["chemistry", "materials", "catalyst"]
7
+ classifiers = [
8
+ "Programming Language :: Python :: 3",
9
+ "Programming Language :: Python :: 3.12",
10
+ ]
11
+ authors = [
12
+ {name = "Hyunwook Jung",email = "hjung@fhi.mpg.de"}
13
+ ]
14
+ readme = { file = "README.md", content-type = "text/markdown" }
15
+ requires-python = ">=3.10"
16
+ dependencies = [
17
+ "pandas (>=2.2.3,<3.0.0)",
18
+ "rdkit (>=2024.9.6,<2025.0.0)",
19
+ "igraph (>=0.11.8,<0.12.0)",
20
+ "networkx (>=3.4.2,<4.0.0)",
21
+ "dscribe (>=2.1.1,<3.0.0)",
22
+ "ase (>=3.25.0,<4.0.0)",
23
+ "wfl (>=0.3.5)",
24
+ "scikit-learn (>=1.6.1,<2.0.0)",
25
+ "pymatgen==2025.10.7",
26
+ ]
27
+
28
+
29
+ [build-system]
30
+ requires = ["uv_build >= 0.10.10, <0.11.0"]
31
+ build-backend = "uv_build"
32
+
33
+ [tool.pytest.ini_options]
34
+ testpaths = ["tests"]
35
+
36
+ [tool.ruff]
37
+ line-length = 100
38
+
39
+ [project.optional-dependencies]
40
+ dev = [
41
+ "pytest",
42
+ "ruff",
43
+ "pre-commit",
44
+ ]
45
+
46
+ [tool.numpydoc_validation]
47
+ checks = [
48
+ "all", # report on all checks, except the below
49
+ "EX01",
50
+ "SA01",
51
+ "ES01",
52
+ "PR08",
53
+ "PR09"
54
+ ]
55
+ exclude = [
56
+ "RT02",
57
+ "\\._.*" # ignore private methods
58
+ ]
59
+
60
+ [dependency-groups]
61
+ dev = [
62
+ "pytest>=9.0.2",
63
+ ]
64
+
65
+ [tool.uv.extra-build-dependencies]
66
+ torch-scatter = ["torch"]
@@ -0,0 +1,3 @@
1
+ from .nebscape import NEBscape, get_molecules_reactive_states
2
+
3
+ __all__ = ["NEBscape", "get_molecules_reactive_states"]