MultiOptPy 1.20.2__py3-none-any.whl → 1.20.3__py3-none-any.whl
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.
- multioptpy/Calculator/ase_calculation_tools.py +13 -0
- multioptpy/Calculator/ase_tools/fairchem.py +12 -7
- multioptpy/Constraint/constraint_condition.py +208 -245
- multioptpy/ModelFunction/binary_image_ts_search_model_function.py +111 -18
- multioptpy/ModelFunction/opt_meci.py +94 -27
- multioptpy/ModelFunction/opt_mesx.py +47 -15
- multioptpy/ModelFunction/opt_mesx_2.py +35 -18
- multioptpy/Optimizer/crsirfo.py +182 -0
- multioptpy/Optimizer/mf_rsirfo.py +266 -0
- multioptpy/Optimizer/mode_following.py +273 -0
- multioptpy/Utils/calc_tools.py +1 -0
- multioptpy/fileio.py +13 -6
- multioptpy/interface.py +3 -2
- multioptpy/optimization.py +2139 -1259
- multioptpy/optimizer.py +158 -6
- {multioptpy-1.20.2.dist-info → multioptpy-1.20.3.dist-info}/METADATA +497 -438
- {multioptpy-1.20.2.dist-info → multioptpy-1.20.3.dist-info}/RECORD +21 -18
- {multioptpy-1.20.2.dist-info → multioptpy-1.20.3.dist-info}/WHEEL +0 -0
- {multioptpy-1.20.2.dist-info → multioptpy-1.20.3.dist-info}/entry_points.txt +0 -0
- {multioptpy-1.20.2.dist-info → multioptpy-1.20.3.dist-info}/licenses/LICENSE +0 -0
- {multioptpy-1.20.2.dist-info → multioptpy-1.20.3.dist-info}/top_level.txt +0 -0
|
@@ -1,438 +1,497 @@
|
|
|
1
|
-
Metadata-Version: 2.4
|
|
2
|
-
Name: MultiOptPy
|
|
3
|
-
Version: 1.20.
|
|
4
|
-
Summary: Multifunctional geometry optimization tools for quantum chemical calculations.
|
|
5
|
-
Author-email: ss0832 <highlighty876@gmail.com>
|
|
6
|
-
License: GPLv3
|
|
7
|
-
Requires-Python: >=3.12
|
|
8
|
-
Description-Content-Type: text/markdown
|
|
9
|
-
License-File: LICENSE
|
|
10
|
-
Requires-Dist: numpy~=2.2.0
|
|
11
|
-
Requires-Dist: scipy>=1.13.0
|
|
12
|
-
Requires-Dist: matplotlib~=3.10.0
|
|
13
|
-
Requires-Dist: torch~=2.6.0
|
|
14
|
-
Requires-Dist: pyscf~=2.9.0
|
|
15
|
-
Requires-Dist: tblite~=0.4.0
|
|
16
|
-
Requires-Dist: ase~=3.26.0
|
|
17
|
-
Requires-Dist: fairchem-core~=2.7.0
|
|
18
|
-
Requires-Dist: sympy~=1.13.0
|
|
19
|
-
Dynamic: license-file
|
|
20
|
-
|
|
21
|
-
# MultiOptPy
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
- https://ss0832.github.io/
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
#
|
|
67
|
-
#
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
##
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
conda create -
|
|
101
|
-
conda activate
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
#
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
#
|
|
117
|
-
#
|
|
118
|
-
#
|
|
119
|
-
#
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
```
|
|
162
|
-
|
|
163
|
-
```
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
```
|
|
168
|
-
python
|
|
169
|
-
```
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
```
|
|
179
|
-
python
|
|
180
|
-
```
|
|
181
|
-
|
|
182
|
-
```
|
|
183
|
-
|
|
184
|
-
```
|
|
185
|
-
For
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
(
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
`-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
Example
|
|
275
|
-
|
|
276
|
-
Calculate using
|
|
277
|
-
|
|
278
|
-
`-
|
|
279
|
-
|
|
280
|
-
Specify the
|
|
281
|
-
|
|
282
|
-
Example 1) `-
|
|
283
|
-
|
|
284
|
-
Calculate using
|
|
285
|
-
|
|
286
|
-
`-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
`-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
Example 1) `-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
`
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
|
|
391
|
-
|
|
392
|
-
|
|
393
|
-
|
|
394
|
-
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
|
|
407
|
-
|
|
408
|
-
|
|
409
|
-
|
|
410
|
-
|
|
411
|
-
|
|
412
|
-
|
|
413
|
-
|
|
414
|
-
|
|
415
|
-
|
|
416
|
-
|
|
417
|
-
|
|
418
|
-
|
|
419
|
-
|
|
420
|
-
|
|
421
|
-
|
|
422
|
-
|
|
423
|
-
|
|
424
|
-
|
|
425
|
-
|
|
426
|
-
|
|
427
|
-
|
|
428
|
-
|
|
429
|
-
|
|
430
|
-
|
|
431
|
-
|
|
432
|
-
|
|
433
|
-
|
|
434
|
-
|
|
435
|
-
|
|
436
|
-
|
|
437
|
-
|
|
438
|
-
```
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: MultiOptPy
|
|
3
|
+
Version: 1.20.3
|
|
4
|
+
Summary: Multifunctional geometry optimization tools for quantum chemical calculations.
|
|
5
|
+
Author-email: ss0832 <highlighty876@gmail.com>
|
|
6
|
+
License: GPLv3
|
|
7
|
+
Requires-Python: >=3.12
|
|
8
|
+
Description-Content-Type: text/markdown
|
|
9
|
+
License-File: LICENSE
|
|
10
|
+
Requires-Dist: numpy~=2.2.0
|
|
11
|
+
Requires-Dist: scipy>=1.13.0
|
|
12
|
+
Requires-Dist: matplotlib~=3.10.0
|
|
13
|
+
Requires-Dist: torch~=2.6.0
|
|
14
|
+
Requires-Dist: pyscf~=2.9.0
|
|
15
|
+
Requires-Dist: tblite~=0.4.0
|
|
16
|
+
Requires-Dist: ase~=3.26.0
|
|
17
|
+
Requires-Dist: fairchem-core~=2.7.0
|
|
18
|
+
Requires-Dist: sympy~=1.13.0
|
|
19
|
+
Dynamic: license-file
|
|
20
|
+
|
|
21
|
+
# MultiOptPy
|
|
22
|
+
|
|
23
|
+
[](https://colab.research.google.com/drive/1wpW8YO8r9gq20GACyzdaEsFK4Va1JQs4?usp=sharing) (Test 1, only use GFN2-xTB)
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
[](https://colab.research.google.com/drive/1lfvyd7lv6ChjRC7xfPdrBZtGME4gakhz?usp=sharing) (Test 2, GFN2-xTB + PySCF(HF/STO-3G))
|
|
27
|
+
|
|
28
|
+
|
|
29
|
+
[](https://buymeacoffee.com/ss0832)
|
|
30
|
+
|
|
31
|
+
[](https://pepy.tech/projects/multioptpy)
|
|
32
|
+
[](https://doi.org/10.5281/zenodo.17839100)
|
|
33
|
+
|
|
34
|
+
If this tool helped your studies, education, or saved your time, I'd appreciate a coffee!
|
|
35
|
+
Your support serves as a great encouragement for this personal project and fuels my next journey.
|
|
36
|
+
I also welcome contributions, bug reports, and pull requests to improve this tool.
|
|
37
|
+
|
|
38
|
+
Note on Contributions: While bug reports and pull requests are welcome, please note that this is a personal project maintained in my spare time. Responses to issues and PRs may be delayed or not guaranteed. I appreciate your patience and understanding.
|
|
39
|
+
|
|
40
|
+
Multifunctional geometry optimization tools for quantum chemical calculations
|
|
41
|
+
|
|
42
|
+
This program implements many geometry optimization methods in Python for learning purposes.
|
|
43
|
+
|
|
44
|
+
This program can also automatically calculate the transition-state structure from a single equilibrium geometry.
|
|
45
|
+
|
|
46
|
+
**Notice:** This program has NOT been experimentally validated in laboratory settings. I release this code to enable community contributions and collaborative development. Use at your own discretion and validate results independently.
|
|
47
|
+
|
|
48
|
+
(Caution: Using Japanese to explain) Instructions on how to use:
|
|
49
|
+
- https://ss0832.github.io/
|
|
50
|
+
- https://ss0832.github.io/posts/20251130_mop_usage_menschutkin_reaction_uma_en/ (In English, auto-translated)
|
|
51
|
+
|
|
52
|
+
## Video Demo
|
|
53
|
+
|
|
54
|
+
[](https://www.youtube.com/watch?v=AE61iY2HZ8Y)
|
|
55
|
+
|
|
56
|
+
|
|
57
|
+
## Features
|
|
58
|
+
|
|
59
|
+
- It is intended to be used in a linux environment.
|
|
60
|
+
- It can be used not only with AFIR functions, but also with other bias potentials.
|
|
61
|
+
|
|
62
|
+
|
|
63
|
+
|
|
64
|
+
## Quick Start (for Linux)
|
|
65
|
+
```
|
|
66
|
+
# Below is an example showing how to use GFN2-xTB to calculate a transition-state structure.
|
|
67
|
+
# These commands are intended for users who want a straightforward, ready-to-run setup on Linux.
|
|
68
|
+
|
|
69
|
+
## 1. Download and install Anaconda:
|
|
70
|
+
cd ~
|
|
71
|
+
wget https://repo.anaconda.com/archive/Anaconda3-2025.06-1-Linux-x86_64.sh
|
|
72
|
+
bash Anaconda3-2025.06-1-Linux-x86_64.sh
|
|
73
|
+
source .bashrc
|
|
74
|
+
# if the conda command is not available, you need to manually add Anaconda to your PATH:
|
|
75
|
+
# (example command) echo 'export PATH="$HOME/anaconda3/bin:$PATH"' >> ~/.bashrc
|
|
76
|
+
source ~/.bashrc
|
|
77
|
+
|
|
78
|
+
## 2. Create and activate a conda environment:
|
|
79
|
+
conda create -n test_mop python=3.12.7
|
|
80
|
+
conda activate test_mop
|
|
81
|
+
|
|
82
|
+
## 3. Download and install MultiOptPy:
|
|
83
|
+
wget https://github.com/ss0832/MultiOptPy/archive/refs/tags/v1.20.3.zip
|
|
84
|
+
unzip v1.20.3.zip
|
|
85
|
+
cd MultiOptPy-1.20.3
|
|
86
|
+
pip install -r requirements.txt
|
|
87
|
+
|
|
88
|
+
## 4. Copy the test configuration file and run the AutoTS workflow:
|
|
89
|
+
cp test/config_autots_run_xtb_test.json .
|
|
90
|
+
python run_autots.py aldol_rxn.xyz -cfg config_autots_run_xtb_test.json
|
|
91
|
+
|
|
92
|
+
|
|
93
|
+
# Installation via environment.yml (Linux / conda-forge)
|
|
94
|
+
|
|
95
|
+
## 1. Download and install MultiOptPy:
|
|
96
|
+
git clone -b stable-v1.0 https://github.com/ss0832/MultiOptPy.git
|
|
97
|
+
cd MultiOptPy
|
|
98
|
+
|
|
99
|
+
## 2. Create and activate a conda environment:
|
|
100
|
+
conda env create -f environment.yml
|
|
101
|
+
conda activate test_mop
|
|
102
|
+
|
|
103
|
+
## 3. Copy the test configuration file and run the AutoTS workflow:
|
|
104
|
+
cp test/config_autots_run_xtb_test.json .
|
|
105
|
+
python run_autots.py aldol_rxn.xyz -cfg config_autots_run_xtb_test.json
|
|
106
|
+
|
|
107
|
+
# Installation via pip (Linux)
|
|
108
|
+
conda create -n <env-name> python=3.12 pip
|
|
109
|
+
conda activate <env-name>
|
|
110
|
+
pip install git+https://github.com/ss0832/MultiOptPy.git@v1.20.3
|
|
111
|
+
wget https://github.com/ss0832/MultiOptPy/archive/refs/tags/v1.20.3.zip
|
|
112
|
+
unzip v1.20.3.zip
|
|
113
|
+
cd MultiOptPy-1.20.3
|
|
114
|
+
|
|
115
|
+
## 💻 Command Line Interface (CLI) Functionality (v1.20.2)
|
|
116
|
+
# The following eight core functionalities are available as direct executable commands in your terminal after installation:
|
|
117
|
+
# optmain (Logic from optmain.py):
|
|
118
|
+
# Function: Executes the Core Geometry Optimization functionality.
|
|
119
|
+
# nebmain (Logic from nebmain.py):
|
|
120
|
+
# Function: Executes the Nudged Elastic Band (NEB) path optimization tool for transition state searches.
|
|
121
|
+
# confsearch (Logic from conformation_search.py):
|
|
122
|
+
# Function: Utilizes the comprehensive Conformational Search routine.
|
|
123
|
+
# run_autots (Logic from run_autots.py):
|
|
124
|
+
# Function: Launches the Automated Transition State (AutoTS) workflow.
|
|
125
|
+
# mdmain (Logic from mdmain.py):
|
|
126
|
+
# Function: Initiates Molecular Dynamics (MD) simulation functionality.
|
|
127
|
+
# relaxedscan (Logic from relaxed_scan.py):
|
|
128
|
+
# Function: Executes the Relaxed Potential Energy Surface (PES) Scanning functionality.
|
|
129
|
+
# orientsearch (Logic from orientation_search.py):
|
|
130
|
+
# Function: Executes the molecular Orientation Sampling and Search utility.
|
|
131
|
+
|
|
132
|
+
```
|
|
133
|
+
|
|
134
|
+
## Required Modules
|
|
135
|
+
```
|
|
136
|
+
cd <directory of repository files>
|
|
137
|
+
pip install -r requirements.txt
|
|
138
|
+
```
|
|
139
|
+
- psi4 (Official page:https://psicode.org/) or PySCF
|
|
140
|
+
- numpy
|
|
141
|
+
- matplotlib
|
|
142
|
+
- scipy
|
|
143
|
+
- pytorch (for calculating derivatives)
|
|
144
|
+
|
|
145
|
+
Optional
|
|
146
|
+
|
|
147
|
+
- tblite (If you use extended tight binding (xTB) method, this module is required.)
|
|
148
|
+
- dxtb (same as above)
|
|
149
|
+
- ASE
|
|
150
|
+
|
|
151
|
+
## References
|
|
152
|
+
|
|
153
|
+
References are given in the source code.
|
|
154
|
+
|
|
155
|
+
## Usage
|
|
156
|
+
|
|
157
|
+
After downloading the repository using git clone or similar commands, move to the generated directory and run the following:
|
|
158
|
+
python command
|
|
159
|
+
```
|
|
160
|
+
python optmain.py SN2.xyz -ma 150 1 6 -pyscf -elec 0 -spin 0 -opt rsirfo_block_fsb -modelhess
|
|
161
|
+
```
|
|
162
|
+
CLI command (arbitrary directory)
|
|
163
|
+
```
|
|
164
|
+
optmain SN2.xyz -ma 150 1 6 -pyscf -elec 0 -spin 0 -opt rsirfo_block_fsb -modelhess
|
|
165
|
+
```
|
|
166
|
+
python command
|
|
167
|
+
```
|
|
168
|
+
python optmain.py aldol_rxn.xyz -ma 95 1 5 50 3 11 -pyscf -elec 0 -spin 0 -opt rsirfo_block_fsb -modelhess
|
|
169
|
+
```
|
|
170
|
+
CLI command (arbitrary directory)
|
|
171
|
+
```
|
|
172
|
+
optmain aldol_rxn.xyz -ma 95 1 5 50 3 11 -pyscf -elec 0 -spin 0 -opt rsirfo_block_fsb -modelhess
|
|
173
|
+
```
|
|
174
|
+
|
|
175
|
+
For SADDLE calculation
|
|
176
|
+
|
|
177
|
+
python command
|
|
178
|
+
```
|
|
179
|
+
python optmain.py aldol_rxn_PT.xyz -xtb GFN2-xTB -opt rsirfo_block_bofill -order 1 -fc 5
|
|
180
|
+
```
|
|
181
|
+
CLI command (arbitrary directory)
|
|
182
|
+
```
|
|
183
|
+
optmain aldol_rxn_PT.xyz -xtb GFN2-xTB -opt rsirfo_block_bofill -order 1 -fc 5
|
|
184
|
+
```
|
|
185
|
+
##### For NEB method
|
|
186
|
+
python command
|
|
187
|
+
```
|
|
188
|
+
python nebmain.py aldol_rxn -xtb GFN2-xTB -ns 50 -adpred 1 -nd 0.5
|
|
189
|
+
```
|
|
190
|
+
CLI command (arbitrary directory)
|
|
191
|
+
```
|
|
192
|
+
nebmain aldol_rxn -xtb GFN2-xTB -ns 50 -adpred 1 -nd 0.5
|
|
193
|
+
```
|
|
194
|
+
|
|
195
|
+
##### For iEIP method
|
|
196
|
+
python command
|
|
197
|
+
```
|
|
198
|
+
python ieipmain.py ieip_test -xtb GFN2-xTB
|
|
199
|
+
```
|
|
200
|
+
CLI command (arbitrary directory)
|
|
201
|
+
```
|
|
202
|
+
ieipmain ieip_test -xtb GFN2-xTB
|
|
203
|
+
```
|
|
204
|
+
##### For Molecular Dynamics (MD)
|
|
205
|
+
python command
|
|
206
|
+
```
|
|
207
|
+
python mdmain.py aldol_rxn_PT.xyz -xtb GFN2-xTB -temp 298 -traj 1 -time 100000
|
|
208
|
+
```
|
|
209
|
+
CLI command (arbitrary directory)
|
|
210
|
+
```
|
|
211
|
+
mdmain aldol_rxn_PT.xyz -xtb GFN2-xTB -temp 298 -traj 1 -time 100000
|
|
212
|
+
```
|
|
213
|
+
(Default deterministic algorithm for MD is Nosé–Hoover thermostat.)
|
|
214
|
+
|
|
215
|
+
For orientation search
|
|
216
|
+
```
|
|
217
|
+
python orientation_search.py aldol_rxn.xyz -part 1-4 -ma 95 1 5 50 3 11 -nsample 5 -xtb GFN2-xTB -opt rsirfo_block_fsb -modelhess
|
|
218
|
+
```
|
|
219
|
+
For conformation search
|
|
220
|
+
```
|
|
221
|
+
python conformation_search.py s8_for_confomation_search_test.xyz -xtb GFN2-xTB -ns 2000
|
|
222
|
+
```
|
|
223
|
+
For relaxed scan (Similar to functions implemented in Gaussian)
|
|
224
|
+
```
|
|
225
|
+
python relaxed_scan.py SN2.xyz -nsample 8 -scan bond 1,2 1.3,2.6 -elec -1 -spin 0 -xtb GFN2-xTB -opt crsirfo_block_fsb -modelhess
|
|
226
|
+
```
|
|
227
|
+
## Options
|
|
228
|
+
(optmain.py)
|
|
229
|
+
|
|
230
|
+
**`-opt`**
|
|
231
|
+
|
|
232
|
+
Specify the algorithm to be used for structural optimization.
|
|
233
|
+
|
|
234
|
+
example 1) `-opt FIRE`.
|
|
235
|
+
|
|
236
|
+
Perform structural optimization using the FIRE method.
|
|
237
|
+
|
|
238
|
+
|
|
239
|
+
Available optimization methods:
|
|
240
|
+
|
|
241
|
+
Recommended optimization methods:
|
|
242
|
+
|
|
243
|
+
- FIRE (Robust method)
|
|
244
|
+
- TR_LBFGS (Limited-memory BFGS method with trust radius method, Faster convergence than FIRE without Hessian)
|
|
245
|
+
- rsirfo_block_fsb
|
|
246
|
+
- rsirfo_block_bofill (for calculation of saddle point)
|
|
247
|
+
|
|
248
|
+
`-ma`
|
|
249
|
+
|
|
250
|
+
Add the potential by AFIR function.
|
|
251
|
+
Energy (kJ/mol) Atom 1 or fragment 1 to which potential is added Atom 2 or fragment 2 to which potential is added.
|
|
252
|
+
|
|
253
|
+
Example 1) `-ma 195 1 5`
|
|
254
|
+
|
|
255
|
+
Apply a potential of 195 kJ/mol (pushing force) to the first atom and the fifth atom as a pair.
|
|
256
|
+
|
|
257
|
+
Example 2) `-ma 195 1 5 195 3 11`
|
|
258
|
+
|
|
259
|
+
Multiply the potential of 195 kJ/mol (pushing force) by the pair of the first atom and the fifth atom. Then multiply the potential of 195 kJ/mol (pushing force) by the pair of the third atom and the eleventh atom.
|
|
260
|
+
|
|
261
|
+
Example 3) `-ma -195 1-3 5,6`
|
|
262
|
+
|
|
263
|
+
Multiply the potential of -195 kJ/mol (pulling force) by the fragment consisting of the 1st-3rd atoms paired with the fragments consisting of the 5th and 6th atoms.
|
|
264
|
+
|
|
265
|
+
|
|
266
|
+
`-bs`
|
|
267
|
+
|
|
268
|
+
Specifies the basis function. The default is 6-31G*.
|
|
269
|
+
|
|
270
|
+
Example 1) `-bs 6-31G*`
|
|
271
|
+
|
|
272
|
+
Calculate using 6-31G* as the basis function.
|
|
273
|
+
|
|
274
|
+
Example 2) `-bs sto-3g`
|
|
275
|
+
|
|
276
|
+
Calculate using STO-3G as the basis function.
|
|
277
|
+
|
|
278
|
+
`-func`
|
|
279
|
+
|
|
280
|
+
Specify the functionals in the DFT (specify the calculation method). The default is b3lyp.
|
|
281
|
+
|
|
282
|
+
Example 1) `-func b3lyp`
|
|
283
|
+
|
|
284
|
+
Calculate using B3LYP as the functional.
|
|
285
|
+
|
|
286
|
+
Example 2) `-func hf`
|
|
287
|
+
|
|
288
|
+
Calculate using the Hartree-Fock method.
|
|
289
|
+
|
|
290
|
+
`-sub_bs`
|
|
291
|
+
|
|
292
|
+
Specify a specific basis function for a given atom.
|
|
293
|
+
|
|
294
|
+
Example 1) `-sub_bs I LanL2DZ`
|
|
295
|
+
|
|
296
|
+
Assign the basis function LanL2DZ to the iodine atom, and if -bs is the default, assign 6-31G* to non-iodine atoms for calculation.
|
|
297
|
+
|
|
298
|
+
`-ns`
|
|
299
|
+
|
|
300
|
+
Specifies the maximum number of times the gradient is calculated for structural optimization. The default is a maximum of 300 calculations.
|
|
301
|
+
|
|
302
|
+
Example 1) `-ns 400`
|
|
303
|
+
|
|
304
|
+
Calculate gradient up to 400 iterations.
|
|
305
|
+
|
|
306
|
+
|
|
307
|
+
|
|
308
|
+
`-core`
|
|
309
|
+
|
|
310
|
+
Specify the number of CPU cores to be used in the calculation. By default, 8 cores are used. (Adjust according to your own environment.)
|
|
311
|
+
|
|
312
|
+
Example 1) `-core 4`
|
|
313
|
+
|
|
314
|
+
Calculate using 4 CPU cores.
|
|
315
|
+
|
|
316
|
+
`-mem`
|
|
317
|
+
|
|
318
|
+
Specify the memory to be used for calculations. The default is 1GB. (Adjust according to your own environment.)
|
|
319
|
+
|
|
320
|
+
Example 1) `-mem 2GB`
|
|
321
|
+
|
|
322
|
+
Calculate using 2GB of memory.
|
|
323
|
+
|
|
324
|
+
`-d`
|
|
325
|
+
|
|
326
|
+
Specifies the size of the step width after gradient calculation. The larger the value, the faster the convergence, but it is not possible to follow carefully on the potential hypersurface.
|
|
327
|
+
|
|
328
|
+
Example 1) `-d 0.05`
|
|
329
|
+
|
|
330
|
+
|
|
331
|
+
|
|
332
|
+
`-kp`
|
|
333
|
+
|
|
334
|
+
Multiply the potential calculated from the following equation (a potential based on the harmonic approximation) by the two atom pairs. This is used when you want to fix the distance between atoms to some extent.
|
|
335
|
+
|
|
336
|
+
$V(r) = 0.5k(r - r_0)^2$
|
|
337
|
+
|
|
338
|
+
`spring const. k (a.u.) keep distance [$ r_0] (ang.) atom1,atom2 ...`
|
|
339
|
+
|
|
340
|
+
Example 1) `-kp 2.0 1.0 1,2`
|
|
341
|
+
|
|
342
|
+
Apply harmonic approximation potentials to the 1st and 2nd atoms with spring constant 2.0 a.u. and equilibrium distance 1.0 Å.
|
|
343
|
+
|
|
344
|
+
`-akp`
|
|
345
|
+
|
|
346
|
+
The potential (based on anharmonic approximation, Morse potential) calculated from the following equation is applied to two atomic pairs. This is used when you want to fix the distance between atoms to some extent. Unlike -kp, the depth of the potential is adjustable.
|
|
347
|
+
|
|
348
|
+
$V(r) = D_e [1 - exp(- \sqrt(\frac{k}{2D_e})(r - r_0))]^2$
|
|
349
|
+
|
|
350
|
+
`potential well depth (a.u.) spring const.(a.u.) keep distance (ang.) atom1,atom2 ...`
|
|
351
|
+
|
|
352
|
+
Example 1) `-ukp 2.0 2.0 1.0 1,2`
|
|
353
|
+
|
|
354
|
+
Anharmonic approximate potential (Mohs potential) is applied to the first and second atoms as equilibrium distance 1.0 Å with a potential depth of 2.0 a.u. and a spring constant of 2.0 a.u.
|
|
355
|
+
|
|
356
|
+
`-ka`
|
|
357
|
+
|
|
358
|
+
The potential calculated from the following equation (potential based on the harmonic approximation) is applied to a group of three atoms, which is used when you want to fix the angle (bond angle) between the three atoms to some extent.
|
|
359
|
+
|
|
360
|
+
$V(\theta) = 0.5k(\theta - \theta_0)^2$
|
|
361
|
+
|
|
362
|
+
`spring const.(a.u.) keep angle (degrees) atom1,atom2,atom3`
|
|
363
|
+
|
|
364
|
+
Example 1) `-ka 2.0 60 1,2,3`
|
|
365
|
+
|
|
366
|
+
Assuming a spring constant of 2.0 a.u. and an equilibrium angle of 60 degrees, apply a potential so that the angle between the first, second, and third atoms approaches 60 degrees.
|
|
367
|
+
|
|
368
|
+
`-kda`
|
|
369
|
+
|
|
370
|
+
The potential (based on the harmonic approximation) calculated from the following equation is applied to a group of 4 atoms to fix the dihedral angle of the 4 atoms to a certain degree.
|
|
371
|
+
|
|
372
|
+
$V(\phi) = 0.5k(\phi - \phi_0)^2$
|
|
373
|
+
|
|
374
|
+
`spring const.(a.u.) keep dihedral angle (degrees) atom1,atom2,atom3,atom4 ...`
|
|
375
|
+
|
|
376
|
+
Example 1) `-kda 2.0 60 1,2,3,4`
|
|
377
|
+
|
|
378
|
+
With a spring constant of 2.0 a.u. and an equilibrium angle of 60 degrees, apply a potential so that the dihedral angles of the planes formed by the 1st, 2nd, and 3rd atoms and the 2nd, 3rd, and 4th atoms approach 60 degrees.
|
|
379
|
+
|
|
380
|
+
`-xtb`
|
|
381
|
+
|
|
382
|
+
Use extended tight binding method. (It is required tblite (python module).)
|
|
383
|
+
|
|
384
|
+
Example 1) `-xtb GFN2-xTB`
|
|
385
|
+
|
|
386
|
+
Use GFN2-xTB method to optimize molecular structure.
|
|
387
|
+
|
|
388
|
+
- Other options are experimental.
|
|
389
|
+
|
|
390
|
+
|
|
391
|
+
## Author
|
|
392
|
+
|
|
393
|
+
Author of this program is ss0832.
|
|
394
|
+
|
|
395
|
+
## License
|
|
396
|
+
|
|
397
|
+
GNU Affero General Public License v3.0
|
|
398
|
+
|
|
399
|
+
|
|
400
|
+
## Contact
|
|
401
|
+
|
|
402
|
+
highlighty876[at]gmail.com
|
|
403
|
+
|
|
404
|
+
## Citation
|
|
405
|
+
|
|
406
|
+
If you use MultiOptPy in your research, please cite it as follows:
|
|
407
|
+
|
|
408
|
+
```bibtex
|
|
409
|
+
@software{ss0832_multioptpy_2025,
|
|
410
|
+
author = {ss0832},
|
|
411
|
+
title = {MultiOptPy: Multifunctional geometry optimization tools for quantum chemical calculations},
|
|
412
|
+
month = dec,
|
|
413
|
+
year = 2025,
|
|
414
|
+
publisher = {Zenodo},
|
|
415
|
+
version = {v1.20.2},
|
|
416
|
+
doi = {10.5281/zenodo.17839100},
|
|
417
|
+
url = {[https://doi.org/10.5281/zenodo.17839100](https://doi.org/10.5281/zenodo.17839100)}
|
|
418
|
+
}
|
|
419
|
+
```
|
|
420
|
+
```
|
|
421
|
+
ss0832. (2025). MultiOptPy: Multifunctional geometry optimization tools for quantum chemical calculations (v1.20.2). Zenodo. https://doi.org/10.5281/zenodo.17839100
|
|
422
|
+
```
|
|
423
|
+
|
|
424
|
+
## Setting Up an Environment for Using NNP(UMA) on Windows 11
|
|
425
|
+
|
|
426
|
+
### 1. Install Anaconda
|
|
427
|
+
|
|
428
|
+
Download and install **Anaconda3-2025.06-1-Windows-x86_64.exe** from:
|
|
429
|
+
|
|
430
|
+
[https://repo.anaconda.com/archive/](https://repo.anaconda.com/archive/)
|
|
431
|
+
|
|
432
|
+
### 2. Launch the Anaconda PowerShell Prompt
|
|
433
|
+
|
|
434
|
+
Open **"Anaconda PowerShell Prompt"** from the Windows Start menu.
|
|
435
|
+
|
|
436
|
+
### 3. Create a New Virtual Environment
|
|
437
|
+
|
|
438
|
+
```
|
|
439
|
+
conda create -n <env_name> python=3.12.7
|
|
440
|
+
```
|
|
441
|
+
|
|
442
|
+
### 4. Activate the Environment
|
|
443
|
+
|
|
444
|
+
```
|
|
445
|
+
conda activate <env_name>
|
|
446
|
+
```
|
|
447
|
+
|
|
448
|
+
### 5. Install Required Libraries
|
|
449
|
+
|
|
450
|
+
```
|
|
451
|
+
pip install ase==3.26.0 fairchem-core==2.7.1 torch==2.6.0
|
|
452
|
+
```
|
|
453
|
+
|
|
454
|
+
* **fairchem-core**: Required for running NNP models provided by FAIR Chemistry.
|
|
455
|
+
* **ase**: Interface for passing molecular structures to the NNP.
|
|
456
|
+
* **torch**: PyTorch library for neural network execution.
|
|
457
|
+
|
|
458
|
+
---
|
|
459
|
+
|
|
460
|
+
## Setting Up the Model File (.pt) for Your NNP Library
|
|
461
|
+
|
|
462
|
+
### 1. Download the Model File
|
|
463
|
+
|
|
464
|
+
Download **uma-s-1p1.pt** from the following page:
|
|
465
|
+
|
|
466
|
+
[https://huggingface.co/facebook/UMA](https://huggingface.co/facebook/UMA)
|
|
467
|
+
|
|
468
|
+
(Ensure that you have permission to use the file.)
|
|
469
|
+
|
|
470
|
+
### 2. Add the Model Path to MultiOptPy
|
|
471
|
+
|
|
472
|
+
Open the file `software_path.conf` inside the **MultiOptPy** directory.
|
|
473
|
+
|
|
474
|
+
Add the following line using the absolute path to the model file:
|
|
475
|
+
|
|
476
|
+
```
|
|
477
|
+
uma-s-1p1::<absolute_path_to/uma-s-1p1.pt>
|
|
478
|
+
```
|
|
479
|
+
|
|
480
|
+
This enables **MultiOptPy** to use the **uma-s-1p1 NNP model**.
|
|
481
|
+
|
|
482
|
+
### references of UMA
|
|
483
|
+
- arXiv preprint arXiv:2505.08762 (2025).
|
|
484
|
+
- https://github.com/facebookresearch/fairchem
|
|
485
|
+
|
|
486
|
+
## Create environment for Win11 / UMA(NNP) using conda
|
|
487
|
+
|
|
488
|
+
```
|
|
489
|
+
conda env create -f environment_win11uma.yml
|
|
490
|
+
conda activate test_mop_win11_uma
|
|
491
|
+
```
|
|
492
|
+
|
|
493
|
+
|
|
494
|
+
---
|
|
495
|
+
|
|
496
|
+
> **Status: Maintenance Mode / Frozen**
|
|
497
|
+
> *This project has reached its initial stability goals (v1.20.2) and is currently frozen. No new features are planned by the original author, but the codebase remains open for the community to fork and explore the roadmap above.*
|