molop 0.2.2__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.
- molop-0.2.2/.gitignore +289 -0
- molop-0.2.2/LICENSE +9 -0
- molop-0.2.2/PKG-INFO +227 -0
- molop-0.2.2/README.md +184 -0
- molop-0.2.2/README.zh.md +177 -0
- molop-0.2.2/pyproject.toml +230 -0
- molop-0.2.2/src/molop/__init__.py +29 -0
- molop-0.2.2/src/molop/cli/__init__.py +0 -0
- molop-0.2.2/src/molop/cli/app.py +788 -0
- molop-0.2.2/src/molop/cli/app.pyi +74 -0
- molop-0.2.2/src/molop/cli/shared/__init__.py +7 -0
- molop-0.2.2/src/molop/cli/shared/frames.py +25 -0
- molop-0.2.2/src/molop/cli/state_machine.py +548 -0
- molop-0.2.2/src/molop/config/__init__.py +182 -0
- molop-0.2.2/src/molop/io/FileBatchModelDisk.py +838 -0
- molop-0.2.2/src/molop/io/FileBatchParserDisk.py +350 -0
- molop-0.2.2/src/molop/io/__init__.py +147 -0
- molop-0.2.2/src/molop/io/_batch_format_transform.py +71 -0
- molop-0.2.2/src/molop/io/_batch_format_transform.pyi +771 -0
- molop-0.2.2/src/molop/io/_typing_catalog.py +17 -0
- molop-0.2.2/src/molop/io/_typing_catalog.pyi +51 -0
- molop-0.2.2/src/molop/io/base_models/Bases.py +423 -0
- molop-0.2.2/src/molop/io/base_models/ChemFile.py +511 -0
- molop-0.2.2/src/molop/io/base_models/ChemFileFrame.py +1110 -0
- molop-0.2.2/src/molop/io/base_models/DataClasses.py +2771 -0
- molop-0.2.2/src/molop/io/base_models/FileParser.py +1018 -0
- molop-0.2.2/src/molop/io/base_models/FrameParser.py +60 -0
- molop-0.2.2/src/molop/io/base_models/Mixins.py +145 -0
- molop-0.2.2/src/molop/io/base_models/Molecule.py +703 -0
- molop-0.2.2/src/molop/io/base_models/ParseContainers.py +90 -0
- molop-0.2.2/src/molop/io/base_models/SearchPattern.py +371 -0
- molop-0.2.2/src/molop/io/base_models/__init__.py +0 -0
- molop-0.2.2/src/molop/io/base_models/_format_transform.py +142 -0
- molop-0.2.2/src/molop/io/base_models/_format_transform.pyi +1373 -0
- molop-0.2.2/src/molop/io/base_models/source.py +320 -0
- molop-0.2.2/src/molop/io/base_models/summary.py +99 -0
- molop-0.2.2/src/molop/io/codec_exceptions.py +21 -0
- molop-0.2.2/src/molop/io/codec_registry.py +904 -0
- molop-0.2.2/src/molop/io/codec_types.py +59 -0
- molop-0.2.2/src/molop/io/codecs/__init__.py +32 -0
- molop-0.2.2/src/molop/io/codecs/_shared/__init__.py +0 -0
- molop-0.2.2/src/molop/io/codecs/_shared/reader_helpers.py +53 -0
- molop-0.2.2/src/molop/io/codecs/_shared/writer_helpers.py +182 -0
- molop-0.2.2/src/molop/io/codecs/catalog.py +181 -0
- molop-0.2.2/src/molop/io/codecs/cml_codec.py +125 -0
- molop-0.2.2/src/molop/io/codecs/openbabel_reader.py +137 -0
- molop-0.2.2/src/molop/io/frame_selection.py +31 -0
- molop-0.2.2/src/molop/io/logic/__init__.py +0 -0
- molop-0.2.2/src/molop/io/logic/coords/__init__.py +0 -0
- molop-0.2.2/src/molop/io/logic/coords/frame_models/SDFFileFrame.py +38 -0
- molop-0.2.2/src/molop/io/logic/coords/frame_models/SMIFileFrame.py +29 -0
- molop-0.2.2/src/molop/io/logic/coords/frame_models/XYZFileFrame.py +41 -0
- molop-0.2.2/src/molop/io/logic/coords/frame_models/__init__.py +0 -0
- molop-0.2.2/src/molop/io/logic/coords/frame_models/_coords_renderers.py +32 -0
- molop-0.2.2/src/molop/io/logic/coords/frame_parsers/SDFFileFrameParser.py +32 -0
- molop-0.2.2/src/molop/io/logic/coords/frame_parsers/SMIFileFrameParser.py +32 -0
- molop-0.2.2/src/molop/io/logic/coords/frame_parsers/XYZFileFrameParser.py +32 -0
- molop-0.2.2/src/molop/io/logic/coords/frame_parsers/__init__.py +0 -0
- molop-0.2.2/src/molop/io/logic/coords/frame_parsers/_coords_extractors.py +103 -0
- molop-0.2.2/src/molop/io/logic/coords/frame_parsers/_xyz_patterns.py +28 -0
- molop-0.2.2/src/molop/io/logic/coords/models/SDFFile.py +85 -0
- molop-0.2.2/src/molop/io/logic/coords/models/SMIFile.py +85 -0
- molop-0.2.2/src/molop/io/logic/coords/models/XYZFile.py +85 -0
- molop-0.2.2/src/molop/io/logic/coords/models/__init__.py +0 -0
- molop-0.2.2/src/molop/io/logic/coords/parsers/SDFFileParser.py +96 -0
- molop-0.2.2/src/molop/io/logic/coords/parsers/SMIFileParser.py +96 -0
- molop-0.2.2/src/molop/io/logic/coords/parsers/XYZFileParser.py +96 -0
- molop-0.2.2/src/molop/io/logic/coords/parsers/__init__.py +0 -0
- molop-0.2.2/src/molop/io/logic/coords/parsers/_coords_file_extractors.py +79 -0
- molop-0.2.2/src/molop/io/logic/gaussian/__init__.py +1 -0
- molop-0.2.2/src/molop/io/logic/gaussian/fchk/__init__.py +1 -0
- molop-0.2.2/src/molop/io/logic/gaussian/fchk/output/__init__.py +1 -0
- molop-0.2.2/src/molop/io/logic/gaussian/fchk/output/frame_models/G16FchkFileFrame.py +28 -0
- molop-0.2.2/src/molop/io/logic/gaussian/fchk/output/frame_models/__init__.py +1 -0
- molop-0.2.2/src/molop/io/logic/gaussian/fchk/output/frame_parsers/G16FchkFileFrameParser.py +222 -0
- molop-0.2.2/src/molop/io/logic/gaussian/fchk/output/frame_parsers/__init__.py +1 -0
- molop-0.2.2/src/molop/io/logic/gaussian/fchk/output/locators.py +11 -0
- molop-0.2.2/src/molop/io/logic/gaussian/fchk/output/models/G16FchkFile.py +34 -0
- molop-0.2.2/src/molop/io/logic/gaussian/fchk/output/models/__init__.py +1 -0
- molop-0.2.2/src/molop/io/logic/gaussian/fchk/output/parsers/G16FchkFileParser.py +145 -0
- molop-0.2.2/src/molop/io/logic/gaussian/fchk/output/parsers/__init__.py +1 -0
- molop-0.2.2/src/molop/io/logic/gaussian/fchk/output/parsers/_fchk_extractors.py +522 -0
- molop-0.2.2/src/molop/io/logic/gaussian/fchk/output/parsers/_fchk_patterns.py +11 -0
- molop-0.2.2/src/molop/io/logic/gaussian/fchk/output/parsers/_fchk_records.py +157 -0
- molop-0.2.2/src/molop/io/logic/gaussian/input/GaussianInput.py +890 -0
- molop-0.2.2/src/molop/io/logic/gaussian/input/GaussianInputParsing.py +676 -0
- molop-0.2.2/src/molop/io/logic/gaussian/input/GaussianInputPatterns.py +79 -0
- molop-0.2.2/src/molop/io/logic/gaussian/input/GaussianLink0.py +102 -0
- molop-0.2.2/src/molop/io/logic/gaussian/input/GaussianRoute.py +638 -0
- molop-0.2.2/src/molop/io/logic/gaussian/input/GaussianRouteParsing.py +851 -0
- molop-0.2.2/src/molop/io/logic/gaussian/input/__init__.py +0 -0
- molop-0.2.2/src/molop/io/logic/gaussian/input/frame_models/GJFFileFrame.py +382 -0
- molop-0.2.2/src/molop/io/logic/gaussian/input/frame_models/__init__.py +0 -0
- molop-0.2.2/src/molop/io/logic/gaussian/input/frame_parsers/GJFFileFrameParser.py +210 -0
- molop-0.2.2/src/molop/io/logic/gaussian/input/frame_parsers/__init__.py +0 -0
- molop-0.2.2/src/molop/io/logic/gaussian/input/frame_parsers/_gjf_extractors.py +118 -0
- molop-0.2.2/src/molop/io/logic/gaussian/input/models/GJFFile.py +88 -0
- molop-0.2.2/src/molop/io/logic/gaussian/input/models/__init__.py +0 -0
- molop-0.2.2/src/molop/io/logic/gaussian/input/parsers/GJFFileParser.py +107 -0
- molop-0.2.2/src/molop/io/logic/gaussian/input/parsers/__init__.py +0 -0
- molop-0.2.2/src/molop/io/logic/gaussian/input/parsers/_gjf_file_extractors.py +58 -0
- molop-0.2.2/src/molop/io/logic/gaussian/log/__init__.py +0 -0
- molop-0.2.2/src/molop/io/logic/gaussian/log/frame_models/G16Components.py +1520 -0
- molop-0.2.2/src/molop/io/logic/gaussian/log/frame_models/G16LogFileFrame.py +146 -0
- molop-0.2.2/src/molop/io/logic/gaussian/log/frame_models/__init__.py +0 -0
- molop-0.2.2/src/molop/io/logic/gaussian/log/frame_parsers/G16LogFileFrameParser.py +342 -0
- molop-0.2.2/src/molop/io/logic/gaussian/log/frame_parsers/__init__.py +0 -0
- molop-0.2.2/src/molop/io/logic/gaussian/log/frame_parsers/_g16_extractors.py +888 -0
- molop-0.2.2/src/molop/io/logic/gaussian/log/frame_parsers/_g16_shared.py +217 -0
- molop-0.2.2/src/molop/io/logic/gaussian/log/locators.py +73 -0
- molop-0.2.2/src/molop/io/logic/gaussian/log/models/G16LogFile.py +373 -0
- molop-0.2.2/src/molop/io/logic/gaussian/log/models/__init__.py +0 -0
- molop-0.2.2/src/molop/io/logic/gaussian/log/parsers/G16LogFileParser.py +345 -0
- molop-0.2.2/src/molop/io/logic/gaussian/log/parsers/__init__.py +0 -0
- molop-0.2.2/src/molop/io/logic/gaussian/log/parsers/_g16_log_file_extractors.py +208 -0
- molop-0.2.2/src/molop/io/logic/gaussian/log/parsers/_g16_log_patterns.py +791 -0
- molop-0.2.2/src/molop/io/logic/gaussian/log/parsers/_g16log_archive_tail.py +302 -0
- molop-0.2.2/src/molop/io/logic/orca/__init__.py +1 -0
- molop-0.2.2/src/molop/io/logic/orca/common.py +330 -0
- molop-0.2.2/src/molop/io/logic/orca/input/__init__.py +0 -0
- molop-0.2.2/src/molop/io/logic/orca/input/_orca_inp_renderer.py +277 -0
- molop-0.2.2/src/molop/io/logic/orca/input/frame_models/ORCAInpFileFrame.py +113 -0
- molop-0.2.2/src/molop/io/logic/orca/input/frame_models/__init__.py +0 -0
- molop-0.2.2/src/molop/io/logic/orca/input/frame_parsers/ORCAInpFileFrameParser.py +188 -0
- molop-0.2.2/src/molop/io/logic/orca/input/frame_parsers/__init__.py +0 -0
- molop-0.2.2/src/molop/io/logic/orca/input/frame_parsers/_orca_inp_blocks.py +186 -0
- molop-0.2.2/src/molop/io/logic/orca/input/frame_parsers/_orca_inp_geometry.py +593 -0
- molop-0.2.2/src/molop/io/logic/orca/input/frame_parsers/_orca_inp_patterns.py +44 -0
- molop-0.2.2/src/molop/io/logic/orca/input/frame_parsers/_orca_inp_resources.py +73 -0
- molop-0.2.2/src/molop/io/logic/orca/input/frame_parsers/_orca_inp_semantics.py +1302 -0
- molop-0.2.2/src/molop/io/logic/orca/input/frame_parsers/_orca_inp_tokens.py +51 -0
- molop-0.2.2/src/molop/io/logic/orca/input/models/ORCAInpFile.py +88 -0
- molop-0.2.2/src/molop/io/logic/orca/input/models/__init__.py +0 -0
- molop-0.2.2/src/molop/io/logic/orca/input/parsers/ORCAInpFileParser.py +115 -0
- molop-0.2.2/src/molop/io/logic/orca/input/parsers/__init__.py +0 -0
- molop-0.2.2/src/molop/io/logic/orca/input/parsers/_orca_inp_file_extractors.py +102 -0
- molop-0.2.2/src/molop/io/logic/orca/input/parsers/_orca_inp_metadata.py +15 -0
- molop-0.2.2/src/molop/io/logic/orca/log/__init__.py +0 -0
- molop-0.2.2/src/molop/io/logic/orca/log/frame_models/ORCALogFileFrame.py +39 -0
- molop-0.2.2/src/molop/io/logic/orca/log/frame_models/__init__.py +0 -0
- molop-0.2.2/src/molop/io/logic/orca/log/frame_parsers/ORCALogFileFrameParser.py +204 -0
- molop-0.2.2/src/molop/io/logic/orca/log/frame_parsers/__init__.py +0 -0
- molop-0.2.2/src/molop/io/logic/orca/log/frame_parsers/_orca_extractors.py +655 -0
- molop-0.2.2/src/molop/io/logic/orca/log/locators.py +74 -0
- molop-0.2.2/src/molop/io/logic/orca/log/models/ORCALogFile.py +36 -0
- molop-0.2.2/src/molop/io/logic/orca/log/models/__init__.py +0 -0
- molop-0.2.2/src/molop/io/logic/orca/log/parsers/ORCALogFileParser.py +253 -0
- molop-0.2.2/src/molop/io/logic/orca/log/parsers/__init__.py +0 -0
- molop-0.2.2/src/molop/io/logic/orca/log/parsers/_orca_log_file_extractors.py +67 -0
- molop-0.2.2/src/molop/io/logic/orca/log/parsers/_orca_log_patterns.py +220 -0
- molop-0.2.2/src/molop/io/logic/orca/log/parsers/_orca_log_shared.py +48 -0
- molop-0.2.2/src/molop/io/logic/xtb/__init__.py +1 -0
- molop-0.2.2/src/molop/io/logic/xtb/common.py +49 -0
- molop-0.2.2/src/molop/io/logic/xtb/output/__init__.py +1 -0
- molop-0.2.2/src/molop/io/logic/xtb/output/frame_models/XTBOutputFileFrame.py +65 -0
- molop-0.2.2/src/molop/io/logic/xtb/output/frame_models/__init__.py +1 -0
- molop-0.2.2/src/molop/io/logic/xtb/output/frame_parsers/XTBOutputFileFrameParser.py +182 -0
- molop-0.2.2/src/molop/io/logic/xtb/output/frame_parsers/__init__.py +1 -0
- molop-0.2.2/src/molop/io/logic/xtb/output/locators.py +34 -0
- molop-0.2.2/src/molop/io/logic/xtb/output/models/XTBOutputFile.py +48 -0
- molop-0.2.2/src/molop/io/logic/xtb/output/models/__init__.py +1 -0
- molop-0.2.2/src/molop/io/logic/xtb/output/parsers/XTBOutputFileParser.py +173 -0
- molop-0.2.2/src/molop/io/logic/xtb/output/parsers/__init__.py +1 -0
- molop-0.2.2/src/molop/io/logic/xtb/output/parsers/_xtb_output_extractors.py +765 -0
- molop-0.2.2/src/molop/io/logic/xtb/output/parsers/_xtb_output_patterns.py +281 -0
- molop-0.2.2/src/molop/py.typed +1 -0
- molop-0.2.2/src/molop/structure/FormatConverter.py +152 -0
- molop-0.2.2/src/molop/structure/GeometryTransformation.py +491 -0
- molop-0.2.2/src/molop/structure/StructureTransformation.py +1222 -0
- molop-0.2.2/src/molop/structure/__init__.py +7 -0
- molop-0.2.2/src/molop/structure/utils.py +108 -0
- molop-0.2.2/src/molop/unit/__init__.py +35 -0
- molop-0.2.2/src/molop/utils/__init__.py +7 -0
- molop-0.2.2/src/molop/utils/consts.py +440 -0
- molop-0.2.2/src/molop/utils/errors.py +19 -0
- molop-0.2.2/src/molop/utils/functions.py +163 -0
- molop-0.2.2/src/molop/utils/progressbar.py +215 -0
- molop-0.2.2/src/molop/utils/types.py +123 -0
molop-0.2.2/.gitignore
ADDED
|
@@ -0,0 +1,289 @@
|
|
|
1
|
+
# ---> Python
|
|
2
|
+
# Byte-compiled / optimized / DLL files
|
|
3
|
+
__pycache__/
|
|
4
|
+
*.py[cod]
|
|
5
|
+
*$py.class
|
|
6
|
+
|
|
7
|
+
# C extensions
|
|
8
|
+
*.so
|
|
9
|
+
|
|
10
|
+
# Distribution / packaging
|
|
11
|
+
.Python
|
|
12
|
+
build/
|
|
13
|
+
develop-eggs/
|
|
14
|
+
dist/
|
|
15
|
+
downloads/
|
|
16
|
+
eggs/
|
|
17
|
+
.eggs/
|
|
18
|
+
lib/
|
|
19
|
+
lib64/
|
|
20
|
+
parts/
|
|
21
|
+
sdist/
|
|
22
|
+
var/
|
|
23
|
+
wheels/
|
|
24
|
+
share/python-wheels/
|
|
25
|
+
*.egg-info/
|
|
26
|
+
.installed.cfg
|
|
27
|
+
*.egg
|
|
28
|
+
MANIFEST
|
|
29
|
+
|
|
30
|
+
# PyInstaller
|
|
31
|
+
# Usually these files are written by a python script from a template
|
|
32
|
+
# before PyInstaller builds the exe, so as to inject date/other infos into it.
|
|
33
|
+
*.manifest
|
|
34
|
+
*.spec
|
|
35
|
+
|
|
36
|
+
# Installer logs
|
|
37
|
+
pip-log.txt
|
|
38
|
+
pip-delete-this-directory.txt
|
|
39
|
+
|
|
40
|
+
# Unit test / coverage reports
|
|
41
|
+
htmlcov/
|
|
42
|
+
.tox/
|
|
43
|
+
.nox/
|
|
44
|
+
.coverage
|
|
45
|
+
.coverage.*
|
|
46
|
+
.cache
|
|
47
|
+
nosetests.xml
|
|
48
|
+
coverage.xml
|
|
49
|
+
*.cover
|
|
50
|
+
*.py,cover
|
|
51
|
+
.hypothesis/
|
|
52
|
+
.pytest_cache/
|
|
53
|
+
cover/
|
|
54
|
+
|
|
55
|
+
# Translations
|
|
56
|
+
*.mo
|
|
57
|
+
*.pot
|
|
58
|
+
|
|
59
|
+
# Django stuff:
|
|
60
|
+
# *.log
|
|
61
|
+
local_settings.py
|
|
62
|
+
db.sqlite3
|
|
63
|
+
db.sqlite3-journal
|
|
64
|
+
|
|
65
|
+
# Flask stuff:
|
|
66
|
+
instance/
|
|
67
|
+
.webassets-cache
|
|
68
|
+
|
|
69
|
+
# Scrapy stuff:
|
|
70
|
+
.scrapy
|
|
71
|
+
|
|
72
|
+
# Sphinx documentation
|
|
73
|
+
docs/_build/
|
|
74
|
+
|
|
75
|
+
# MkDocs output
|
|
76
|
+
public/
|
|
77
|
+
.omm/
|
|
78
|
+
|
|
79
|
+
# Temporary local venvs
|
|
80
|
+
.tmpdocsvenv/
|
|
81
|
+
|
|
82
|
+
# PyBuilder
|
|
83
|
+
.pybuilder/
|
|
84
|
+
target/
|
|
85
|
+
|
|
86
|
+
# Jupyter Notebook
|
|
87
|
+
.ipynb_checkpoints
|
|
88
|
+
|
|
89
|
+
# IPython
|
|
90
|
+
profile_default/
|
|
91
|
+
ipython_config.py
|
|
92
|
+
|
|
93
|
+
# pyenv
|
|
94
|
+
# For a library or package, you might want to ignore these files since the code is
|
|
95
|
+
# intended to run in multiple environments; otherwise, check them in:
|
|
96
|
+
# .python-version
|
|
97
|
+
|
|
98
|
+
# pipenv
|
|
99
|
+
# According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control.
|
|
100
|
+
# However, in case of collaboration, if having platform-specific dependencies or dependencies
|
|
101
|
+
# having no cross-platform support, pipenv may install dependencies that don't work, or not
|
|
102
|
+
# install all needed dependencies.
|
|
103
|
+
#Pipfile.lock
|
|
104
|
+
|
|
105
|
+
# poetry
|
|
106
|
+
# Similar to Pipfile.lock, it is generally recommended to include poetry.lock in version control.
|
|
107
|
+
# This is especially recommended for binary packages to ensure reproducibility, and is more
|
|
108
|
+
# commonly ignored for libraries.
|
|
109
|
+
# https://python-poetry.org/docs/basic-usage/#commit-your-poetrylock-file-to-version-control
|
|
110
|
+
#poetry.lock
|
|
111
|
+
|
|
112
|
+
# pdm
|
|
113
|
+
# Similar to Pipfile.lock, it is generally recommended to include pdm.lock in version control.
|
|
114
|
+
#pdm.lock
|
|
115
|
+
# pdm stores project-wide configurations in .pdm.toml, but it is recommended to not include it
|
|
116
|
+
# in version control.
|
|
117
|
+
# https://pdm.fming.dev/#use-with-ide
|
|
118
|
+
.pdm.toml
|
|
119
|
+
|
|
120
|
+
# PEP 582; used by e.g. github.com/David-OConnor/pyflow and github.com/pdm-project/pdm
|
|
121
|
+
__pypackages__/
|
|
122
|
+
|
|
123
|
+
# Celery stuff
|
|
124
|
+
celerybeat-schedule
|
|
125
|
+
celerybeat.pid
|
|
126
|
+
|
|
127
|
+
# SageMath parsed files
|
|
128
|
+
*.sage.py
|
|
129
|
+
|
|
130
|
+
# Environments
|
|
131
|
+
.env
|
|
132
|
+
.venv
|
|
133
|
+
env/
|
|
134
|
+
venv/
|
|
135
|
+
ENV/
|
|
136
|
+
env.bak/
|
|
137
|
+
venv.bak/
|
|
138
|
+
|
|
139
|
+
# Spyder project settings
|
|
140
|
+
.spyderproject
|
|
141
|
+
.spyproject
|
|
142
|
+
|
|
143
|
+
# Rope project settings
|
|
144
|
+
.ropeproject
|
|
145
|
+
|
|
146
|
+
# mkdocs documentation
|
|
147
|
+
/site
|
|
148
|
+
|
|
149
|
+
# mypy
|
|
150
|
+
.mypy_cache/
|
|
151
|
+
.dmypy.json
|
|
152
|
+
dmypy.json
|
|
153
|
+
|
|
154
|
+
# Pyre type checker
|
|
155
|
+
.pyre/
|
|
156
|
+
|
|
157
|
+
# pytype static type analyzer
|
|
158
|
+
.pytype/
|
|
159
|
+
|
|
160
|
+
# Cython debug symbols
|
|
161
|
+
cython_debug/
|
|
162
|
+
|
|
163
|
+
# PyCharm
|
|
164
|
+
# JetBrains specific template is maintained in a separate JetBrains.gitignore that can
|
|
165
|
+
# be found at https://github.com/github/gitignore/blob/main/Global/JetBrains.gitignore
|
|
166
|
+
# and can be added to the global gitignore or merged into this file. For a more nuclear
|
|
167
|
+
# option (not recommended) you can uncomment the following to ignore the entire idea folder.
|
|
168
|
+
#.idea/
|
|
169
|
+
|
|
170
|
+
# ---> JupyterNotebooks
|
|
171
|
+
# gitignore template for Jupyter Notebooks
|
|
172
|
+
# website: http://jupyter.org/
|
|
173
|
+
|
|
174
|
+
.ipynb_checkpoints
|
|
175
|
+
*/.ipynb_checkpoints/*
|
|
176
|
+
|
|
177
|
+
# IPython
|
|
178
|
+
profile_default/
|
|
179
|
+
ipython_config.py
|
|
180
|
+
|
|
181
|
+
# Remove previous ipynb_checkpoints
|
|
182
|
+
# git rm -r .ipynb_checkpoints/
|
|
183
|
+
|
|
184
|
+
# ---> VisualStudioCode
|
|
185
|
+
.vscode/*
|
|
186
|
+
.vscode/settings.json
|
|
187
|
+
!.vscode/tasks.json
|
|
188
|
+
!.vscode/launch.json
|
|
189
|
+
!.vscode/extensions.json
|
|
190
|
+
!.vscode/*.code-snippets
|
|
191
|
+
|
|
192
|
+
# Local History for Visual Studio Code
|
|
193
|
+
.history/
|
|
194
|
+
|
|
195
|
+
# Built Visual Studio Code Extensions
|
|
196
|
+
*.vsix
|
|
197
|
+
|
|
198
|
+
# ---> macOS
|
|
199
|
+
# General
|
|
200
|
+
.DS_Store
|
|
201
|
+
.AppleDouble
|
|
202
|
+
.LSOverride
|
|
203
|
+
|
|
204
|
+
# Icon must end with two \r
|
|
205
|
+
Icon
|
|
206
|
+
|
|
207
|
+
# OhMyOpenCode agent instructions
|
|
208
|
+
AGENTS.md
|
|
209
|
+
|
|
210
|
+
|
|
211
|
+
# Thumbnails
|
|
212
|
+
._*
|
|
213
|
+
|
|
214
|
+
# Files that might appear in the root of a volume
|
|
215
|
+
.DocumentRevisions-V100
|
|
216
|
+
.fseventsd
|
|
217
|
+
.Spotlight-V100
|
|
218
|
+
.TemporaryItems
|
|
219
|
+
.Trashes
|
|
220
|
+
.VolumeIcon.icns
|
|
221
|
+
.com.apple.timemachine.donotpresent
|
|
222
|
+
|
|
223
|
+
# Directories potentially created on remote AFP share
|
|
224
|
+
.AppleDB
|
|
225
|
+
.AppleDesktop
|
|
226
|
+
Network Trash Folder
|
|
227
|
+
Temporary Items
|
|
228
|
+
.apdisk
|
|
229
|
+
|
|
230
|
+
# ---> Windows
|
|
231
|
+
# Windows thumbnail cache files
|
|
232
|
+
Thumbs.db
|
|
233
|
+
Thumbs.db:encryptable
|
|
234
|
+
ehthumbs.db
|
|
235
|
+
ehthumbs_vista.db
|
|
236
|
+
|
|
237
|
+
# Dump file
|
|
238
|
+
*.stackdump
|
|
239
|
+
|
|
240
|
+
# Folder config file
|
|
241
|
+
[Dd]esktop.ini
|
|
242
|
+
|
|
243
|
+
# Recycle Bin used on file shares
|
|
244
|
+
$RECYCLE.BIN/
|
|
245
|
+
|
|
246
|
+
# Windows Installer files
|
|
247
|
+
*.cab
|
|
248
|
+
*.msi
|
|
249
|
+
*.msix
|
|
250
|
+
*.msm
|
|
251
|
+
*.msp
|
|
252
|
+
|
|
253
|
+
# Windows shortcuts
|
|
254
|
+
*.lnk
|
|
255
|
+
|
|
256
|
+
# ---> Linux
|
|
257
|
+
*~
|
|
258
|
+
|
|
259
|
+
# temporary files which can be created if a process still has a handle open of a deleted file
|
|
260
|
+
.fuse_hidden*
|
|
261
|
+
|
|
262
|
+
# KDE directory preferences
|
|
263
|
+
.directory
|
|
264
|
+
|
|
265
|
+
# Linux trash folder which might appear on any partition or disk
|
|
266
|
+
.Trash-*
|
|
267
|
+
|
|
268
|
+
# .nfs files are created when an open file is removed but is still being accessed
|
|
269
|
+
.nfs*
|
|
270
|
+
|
|
271
|
+
test.ipynb
|
|
272
|
+
molop.log
|
|
273
|
+
temp.ipynb
|
|
274
|
+
temp/
|
|
275
|
+
docs/en/*/*.png
|
|
276
|
+
docs/zh/*/*.png
|
|
277
|
+
optional.json
|
|
278
|
+
*.json
|
|
279
|
+
!pyrightconfig.json
|
|
280
|
+
ts_inital_log
|
|
281
|
+
GEMINI.md
|
|
282
|
+
.pyscn
|
|
283
|
+
|
|
284
|
+
.sisyphus
|
|
285
|
+
|
|
286
|
+
public
|
|
287
|
+
.ci-docs-venv
|
|
288
|
+
|
|
289
|
+
tmp/
|
molop-0.2.2/LICENSE
ADDED
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2023 tmj
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
|
|
6
|
+
|
|
7
|
+
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
|
|
8
|
+
|
|
9
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
molop-0.2.2/PKG-INFO
ADDED
|
@@ -0,0 +1,227 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: molop
|
|
3
|
+
Version: 0.2.2
|
|
4
|
+
Summary: A Python library and command-line tool for parsing and processing computational chemistry files.
|
|
5
|
+
Project-URL: Homepage, https://github.com/gentle1999/MolOP
|
|
6
|
+
Project-URL: Repository, https://github.com/gentle1999/MolOP
|
|
7
|
+
Project-URL: Documentation, https://gentle1999.github.io/MolOP/
|
|
8
|
+
Project-URL: Issues, https://github.com/gentle1999/MolOP/issues
|
|
9
|
+
Project-URL: Changelog, https://gentle1999.github.io/MolOP/en/changelog/
|
|
10
|
+
Author-email: Miao-jiong Tang <mj_t@zju.edu.cn>
|
|
11
|
+
Maintainer-email: Miao-jiong Tang <mj_t@zju.edu.cn>
|
|
12
|
+
License-Expression: MIT
|
|
13
|
+
License-File: LICENSE
|
|
14
|
+
Keywords: Gaussian,ORCA,cheminformatics,computational chemistry,parser,quantum chemistry,xTB,xyz2mol
|
|
15
|
+
Classifier: Development Status :: 4 - Beta
|
|
16
|
+
Classifier: Intended Audience :: Developers
|
|
17
|
+
Classifier: Intended Audience :: Science/Research
|
|
18
|
+
Classifier: License :: OSI Approved :: MIT License
|
|
19
|
+
Classifier: Operating System :: OS Independent
|
|
20
|
+
Classifier: Programming Language :: Python :: 3
|
|
21
|
+
Classifier: Programming Language :: Python :: 3 :: Only
|
|
22
|
+
Classifier: Programming Language :: Python :: 3.10
|
|
23
|
+
Classifier: Programming Language :: Python :: 3.11
|
|
24
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
25
|
+
Classifier: Programming Language :: Python :: 3.13
|
|
26
|
+
Classifier: Programming Language :: Python :: 3.14
|
|
27
|
+
Classifier: Topic :: Scientific/Engineering :: Chemistry
|
|
28
|
+
Classifier: Typing :: Typed
|
|
29
|
+
Requires-Python: >=3.10
|
|
30
|
+
Requires-Dist: click>=8.1
|
|
31
|
+
Requires-Dist: joblib>=1.5.1
|
|
32
|
+
Requires-Dist: molgr>=0.1.2
|
|
33
|
+
Requires-Dist: pandas>=2.3.1
|
|
34
|
+
Requires-Dist: pint>=0.24.2
|
|
35
|
+
Requires-Dist: pydantic>=2.11.7
|
|
36
|
+
Requires-Dist: rdkit-dof>=0.1.4
|
|
37
|
+
Requires-Dist: rdkit>=2023.9.6
|
|
38
|
+
Requires-Dist: regex<=2025.7.33
|
|
39
|
+
Requires-Dist: scipy>=1.15.3
|
|
40
|
+
Requires-Dist: tabulate>=0.9.0
|
|
41
|
+
Requires-Dist: tqdm>=4.67.1
|
|
42
|
+
Description-Content-Type: text/markdown
|
|
43
|
+
|
|
44
|
+
# MolOP (Molecule OPerator)
|
|
45
|
+
|
|
46
|
+
[中文](https://github.com/gentle1999/MolOP/blob/main/README.zh.md) |
|
|
47
|
+
[English](https://github.com/gentle1999/MolOP/blob/main/README.md)
|
|
48
|
+
|
|
49
|
+
[](https://pypi.org/project/molop/)
|
|
50
|
+
[](https://pypi.org/project/molop/)
|
|
51
|
+
[](https://typing.python.org/en/latest/spec/distributing.html#packaging-type-information)
|
|
52
|
+
[](https://pypi.org/project/molop/)
|
|
53
|
+
[](https://pypi.org/project/molop/)
|
|
54
|
+
[](https://pypi.org/project/molop/)
|
|
55
|
+
[](https://github.com/gentle1999/MolOP/actions/workflows/ci.yaml)
|
|
56
|
+
[](https://gentle1999.github.io/MolOP/)
|
|
57
|
+
[](https://github.com/gentle1999/MolOP/blob/main/LICENSE)
|
|
58
|
+
[](https://github.com/gentle1999/MolOP/commits/main/)
|
|
59
|
+
[](https://github.com/gentle1999/MolOP/issues)
|
|
60
|
+
[](https://github.com/gentle1999/MolOP/stargazers)
|
|
61
|
+
[](https://github.com/gentle1999/MolOP/network/members)
|
|
62
|
+
|
|
63
|
+
MolOP is a Python 3.10+ library and command-line tool for computational chemistry files. It selects
|
|
64
|
+
a registered reader from file content and maps different quantum-chemistry programs and structure
|
|
65
|
+
formats into common batch, file, frame, and scientific-result containers. Downstream processing does
|
|
66
|
+
not need a separate extraction path for every program.
|
|
67
|
+
|
|
68
|
+
## Installation
|
|
69
|
+
|
|
70
|
+
```bash
|
|
71
|
+
pip install molop
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
Verify the installation:
|
|
75
|
+
|
|
76
|
+
```bash
|
|
77
|
+
python -c "import molop; print(molop.__version__)"
|
|
78
|
+
molop --help
|
|
79
|
+
```
|
|
80
|
+
|
|
81
|
+
`molop --help` should list the `parse` command.
|
|
82
|
+
|
|
83
|
+
<details>
|
|
84
|
+
<summary>Verification output shape</summary>
|
|
85
|
+
|
|
86
|
+
```text
|
|
87
|
+
<version>
|
|
88
|
+
Usage: molop [OPTIONS] COMMAND [ARGS]...
|
|
89
|
+
...
|
|
90
|
+
parse Parse files into a FileBatchModelDisk state, then run...
|
|
91
|
+
```
|
|
92
|
+
|
|
93
|
+
</details>
|
|
94
|
+
|
|
95
|
+
## Read different quantum-chemistry files through one model
|
|
96
|
+
|
|
97
|
+
This workflow uses the [Gaussian 16 example](https://gentle1999.github.io/MolOP/assets/examples/mn_complex_sp.log)
|
|
98
|
+
and [ORCA 6 example](https://gentle1999.github.io/MolOP/assets/examples/water_mp2.out) as two
|
|
99
|
+
representative inputs. Save both files in the current directory, then run:
|
|
100
|
+
|
|
101
|
+
```python
|
|
102
|
+
from molop import AutoParser
|
|
103
|
+
|
|
104
|
+
batch = AutoParser(["mn_complex_sp.log", "water_mp2.out"], n_jobs=1)
|
|
105
|
+
print(type(batch).__name__, len(batch))
|
|
106
|
+
|
|
107
|
+
for parsed_file in batch:
|
|
108
|
+
frame = parsed_file[-1]
|
|
109
|
+
energy = frame.energies.total_energy.m_as("hartree")
|
|
110
|
+
print(parsed_file.detected_format_id, frame.qm_software, frame.method, energy)
|
|
111
|
+
```
|
|
112
|
+
|
|
113
|
+
<details>
|
|
114
|
+
<summary>Output</summary>
|
|
115
|
+
|
|
116
|
+
```text
|
|
117
|
+
FileBatchModelDisk 2
|
|
118
|
+
g16log Gaussian DFT -2182.472195
|
|
119
|
+
orcaout ORCA MP2 -74.999374598107
|
|
120
|
+
```
|
|
121
|
+
|
|
122
|
+
</details>
|
|
123
|
+
|
|
124
|
+
Both samples enter one `FileBatchModelDisk` and expose results through the same public fields. New
|
|
125
|
+
readers follow the same container contract. Missing fields remain `None`; MolOP does not synthesize
|
|
126
|
+
scientific results that the source did not provide.
|
|
127
|
+
|
|
128
|
+
## Common tasks
|
|
129
|
+
|
|
130
|
+
### Export a batch CSV
|
|
131
|
+
|
|
132
|
+
```python
|
|
133
|
+
from molop import AutoParser
|
|
134
|
+
|
|
135
|
+
batch = AutoParser("water_mp2.out", n_jobs=1)
|
|
136
|
+
summary = batch.to_summary_df(
|
|
137
|
+
frame=-1,
|
|
138
|
+
brief=False,
|
|
139
|
+
flatten_columns=True,
|
|
140
|
+
)
|
|
141
|
+
summary.to_csv("summary.csv", index=False)
|
|
142
|
+
print(summary.shape)
|
|
143
|
+
```
|
|
144
|
+
|
|
145
|
+
For the bundled `water_mp2.out` example, the complete table has one row and 23 columns. Replace the
|
|
146
|
+
input with a path or glob for a batch:
|
|
147
|
+
|
|
148
|
+
<details>
|
|
149
|
+
<summary>Output</summary>
|
|
150
|
+
|
|
151
|
+
```text
|
|
152
|
+
(1, 23)
|
|
153
|
+
```
|
|
154
|
+
|
|
155
|
+
</details>
|
|
156
|
+
|
|
157
|
+
The result is `summary.csv` with one row per successfully parsed file and unit-bearing columns such
|
|
158
|
+
as `Energy.total_energy.hartree`. [Notebook 02](https://gentle1999.github.io/MolOP/en/examples/02-batch-summary-filter-select/)
|
|
159
|
+
renders the complete DataFrame from this call without selecting a temporary subset of columns.
|
|
160
|
+
|
|
161
|
+
### Filter and export structures
|
|
162
|
+
|
|
163
|
+
```bash
|
|
164
|
+
molop -q parse "water_mp2.out" --n-jobs 1 \
|
|
165
|
+
filter-state --state normal \
|
|
166
|
+
format-transform --format xyz --output-dir structures
|
|
167
|
+
```
|
|
168
|
+
|
|
169
|
+
The command creates:
|
|
170
|
+
|
|
171
|
+
<details>
|
|
172
|
+
<summary>Created files</summary>
|
|
173
|
+
|
|
174
|
+
```text
|
|
175
|
+
structures/water_mp2.xyz
|
|
176
|
+
```
|
|
177
|
+
|
|
178
|
+
</details>
|
|
179
|
+
|
|
180
|
+
Replace `water_mp2.out` with a path or glob for your own batch.
|
|
181
|
+
|
|
182
|
+
## Supported scope
|
|
183
|
+
|
|
184
|
+
- QM outputs: Gaussian log/fchk, ORCA output, and xTB output.
|
|
185
|
+
- QM inputs: Gaussian and ORCA input reading and canonical writing.
|
|
186
|
+
- Structure formats: XYZ, SDF/MOL, SMILES, and a CML writer.
|
|
187
|
+
- Common results: structures, energies, thermochemistry, vibrations, orbitals,
|
|
188
|
+
atomic populations, dipole/polarizability, NMR, and calculation status,
|
|
189
|
+
depending on the format and printed source content.
|
|
190
|
+
|
|
191
|
+
See the
|
|
192
|
+
[format overview](https://gentle1999.github.io/MolOP/en/reference/format_support/)
|
|
193
|
+
for exact reader/writer status and field boundaries.
|
|
194
|
+
|
|
195
|
+
MolOP does not run quantum chemistry calculations and is not a dedicated
|
|
196
|
+
molecular viewer or molecular dynamics engine.
|
|
197
|
+
|
|
198
|
+
## Documentation
|
|
199
|
+
|
|
200
|
+
- [5-minute start](https://gentle1999.github.io/MolOP/en/getting_started/quickstart/)
|
|
201
|
+
- [Read calculation results](https://gentle1999.github.io/MolOP/en/guides/results/)
|
|
202
|
+
- [Batch summaries](https://gentle1999.github.io/MolOP/en/guides/batch/)
|
|
203
|
+
- [Filter and select](https://gentle1999.github.io/MolOP/en/guides/filtering/)
|
|
204
|
+
- [Convert and export](https://gentle1999.github.io/MolOP/en/guides/conversion/)
|
|
205
|
+
- [Optional structure recovery and graph visualization](https://gentle1999.github.io/MolOP/en/guides/structure-recovery/)
|
|
206
|
+
- [Contributing](https://gentle1999.github.io/MolOP/en/contributing/)
|
|
207
|
+
|
|
208
|
+
## Development
|
|
209
|
+
|
|
210
|
+
```bash
|
|
211
|
+
git clone https://github.com/gentle1999/MolOP.git
|
|
212
|
+
cd MolOP
|
|
213
|
+
uv sync
|
|
214
|
+
make check
|
|
215
|
+
```
|
|
216
|
+
|
|
217
|
+
See the documentation site's Developer section for implementation contracts
|
|
218
|
+
and quality gates.
|
|
219
|
+
|
|
220
|
+
## Citation and license
|
|
221
|
+
|
|
222
|
+
If MolOP helps your research, please cite:
|
|
223
|
+
|
|
224
|
+
> MolOP (Molecule OPerator), <https://github.com/gentle1999/MolOP>
|
|
225
|
+
|
|
226
|
+
This project is licensed under the
|
|
227
|
+
[MIT License](https://github.com/gentle1999/MolOP/blob/main/LICENSE).
|
molop-0.2.2/README.md
ADDED
|
@@ -0,0 +1,184 @@
|
|
|
1
|
+
# MolOP (Molecule OPerator)
|
|
2
|
+
|
|
3
|
+
[中文](https://github.com/gentle1999/MolOP/blob/main/README.zh.md) |
|
|
4
|
+
[English](https://github.com/gentle1999/MolOP/blob/main/README.md)
|
|
5
|
+
|
|
6
|
+
[](https://pypi.org/project/molop/)
|
|
7
|
+
[](https://pypi.org/project/molop/)
|
|
8
|
+
[](https://typing.python.org/en/latest/spec/distributing.html#packaging-type-information)
|
|
9
|
+
[](https://pypi.org/project/molop/)
|
|
10
|
+
[](https://pypi.org/project/molop/)
|
|
11
|
+
[](https://pypi.org/project/molop/)
|
|
12
|
+
[](https://github.com/gentle1999/MolOP/actions/workflows/ci.yaml)
|
|
13
|
+
[](https://gentle1999.github.io/MolOP/)
|
|
14
|
+
[](https://github.com/gentle1999/MolOP/blob/main/LICENSE)
|
|
15
|
+
[](https://github.com/gentle1999/MolOP/commits/main/)
|
|
16
|
+
[](https://github.com/gentle1999/MolOP/issues)
|
|
17
|
+
[](https://github.com/gentle1999/MolOP/stargazers)
|
|
18
|
+
[](https://github.com/gentle1999/MolOP/network/members)
|
|
19
|
+
|
|
20
|
+
MolOP is a Python 3.10+ library and command-line tool for computational chemistry files. It selects
|
|
21
|
+
a registered reader from file content and maps different quantum-chemistry programs and structure
|
|
22
|
+
formats into common batch, file, frame, and scientific-result containers. Downstream processing does
|
|
23
|
+
not need a separate extraction path for every program.
|
|
24
|
+
|
|
25
|
+
## Installation
|
|
26
|
+
|
|
27
|
+
```bash
|
|
28
|
+
pip install molop
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
Verify the installation:
|
|
32
|
+
|
|
33
|
+
```bash
|
|
34
|
+
python -c "import molop; print(molop.__version__)"
|
|
35
|
+
molop --help
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
`molop --help` should list the `parse` command.
|
|
39
|
+
|
|
40
|
+
<details>
|
|
41
|
+
<summary>Verification output shape</summary>
|
|
42
|
+
|
|
43
|
+
```text
|
|
44
|
+
<version>
|
|
45
|
+
Usage: molop [OPTIONS] COMMAND [ARGS]...
|
|
46
|
+
...
|
|
47
|
+
parse Parse files into a FileBatchModelDisk state, then run...
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
</details>
|
|
51
|
+
|
|
52
|
+
## Read different quantum-chemistry files through one model
|
|
53
|
+
|
|
54
|
+
This workflow uses the [Gaussian 16 example](https://gentle1999.github.io/MolOP/assets/examples/mn_complex_sp.log)
|
|
55
|
+
and [ORCA 6 example](https://gentle1999.github.io/MolOP/assets/examples/water_mp2.out) as two
|
|
56
|
+
representative inputs. Save both files in the current directory, then run:
|
|
57
|
+
|
|
58
|
+
```python
|
|
59
|
+
from molop import AutoParser
|
|
60
|
+
|
|
61
|
+
batch = AutoParser(["mn_complex_sp.log", "water_mp2.out"], n_jobs=1)
|
|
62
|
+
print(type(batch).__name__, len(batch))
|
|
63
|
+
|
|
64
|
+
for parsed_file in batch:
|
|
65
|
+
frame = parsed_file[-1]
|
|
66
|
+
energy = frame.energies.total_energy.m_as("hartree")
|
|
67
|
+
print(parsed_file.detected_format_id, frame.qm_software, frame.method, energy)
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
<details>
|
|
71
|
+
<summary>Output</summary>
|
|
72
|
+
|
|
73
|
+
```text
|
|
74
|
+
FileBatchModelDisk 2
|
|
75
|
+
g16log Gaussian DFT -2182.472195
|
|
76
|
+
orcaout ORCA MP2 -74.999374598107
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
</details>
|
|
80
|
+
|
|
81
|
+
Both samples enter one `FileBatchModelDisk` and expose results through the same public fields. New
|
|
82
|
+
readers follow the same container contract. Missing fields remain `None`; MolOP does not synthesize
|
|
83
|
+
scientific results that the source did not provide.
|
|
84
|
+
|
|
85
|
+
## Common tasks
|
|
86
|
+
|
|
87
|
+
### Export a batch CSV
|
|
88
|
+
|
|
89
|
+
```python
|
|
90
|
+
from molop import AutoParser
|
|
91
|
+
|
|
92
|
+
batch = AutoParser("water_mp2.out", n_jobs=1)
|
|
93
|
+
summary = batch.to_summary_df(
|
|
94
|
+
frame=-1,
|
|
95
|
+
brief=False,
|
|
96
|
+
flatten_columns=True,
|
|
97
|
+
)
|
|
98
|
+
summary.to_csv("summary.csv", index=False)
|
|
99
|
+
print(summary.shape)
|
|
100
|
+
```
|
|
101
|
+
|
|
102
|
+
For the bundled `water_mp2.out` example, the complete table has one row and 23 columns. Replace the
|
|
103
|
+
input with a path or glob for a batch:
|
|
104
|
+
|
|
105
|
+
<details>
|
|
106
|
+
<summary>Output</summary>
|
|
107
|
+
|
|
108
|
+
```text
|
|
109
|
+
(1, 23)
|
|
110
|
+
```
|
|
111
|
+
|
|
112
|
+
</details>
|
|
113
|
+
|
|
114
|
+
The result is `summary.csv` with one row per successfully parsed file and unit-bearing columns such
|
|
115
|
+
as `Energy.total_energy.hartree`. [Notebook 02](https://gentle1999.github.io/MolOP/en/examples/02-batch-summary-filter-select/)
|
|
116
|
+
renders the complete DataFrame from this call without selecting a temporary subset of columns.
|
|
117
|
+
|
|
118
|
+
### Filter and export structures
|
|
119
|
+
|
|
120
|
+
```bash
|
|
121
|
+
molop -q parse "water_mp2.out" --n-jobs 1 \
|
|
122
|
+
filter-state --state normal \
|
|
123
|
+
format-transform --format xyz --output-dir structures
|
|
124
|
+
```
|
|
125
|
+
|
|
126
|
+
The command creates:
|
|
127
|
+
|
|
128
|
+
<details>
|
|
129
|
+
<summary>Created files</summary>
|
|
130
|
+
|
|
131
|
+
```text
|
|
132
|
+
structures/water_mp2.xyz
|
|
133
|
+
```
|
|
134
|
+
|
|
135
|
+
</details>
|
|
136
|
+
|
|
137
|
+
Replace `water_mp2.out` with a path or glob for your own batch.
|
|
138
|
+
|
|
139
|
+
## Supported scope
|
|
140
|
+
|
|
141
|
+
- QM outputs: Gaussian log/fchk, ORCA output, and xTB output.
|
|
142
|
+
- QM inputs: Gaussian and ORCA input reading and canonical writing.
|
|
143
|
+
- Structure formats: XYZ, SDF/MOL, SMILES, and a CML writer.
|
|
144
|
+
- Common results: structures, energies, thermochemistry, vibrations, orbitals,
|
|
145
|
+
atomic populations, dipole/polarizability, NMR, and calculation status,
|
|
146
|
+
depending on the format and printed source content.
|
|
147
|
+
|
|
148
|
+
See the
|
|
149
|
+
[format overview](https://gentle1999.github.io/MolOP/en/reference/format_support/)
|
|
150
|
+
for exact reader/writer status and field boundaries.
|
|
151
|
+
|
|
152
|
+
MolOP does not run quantum chemistry calculations and is not a dedicated
|
|
153
|
+
molecular viewer or molecular dynamics engine.
|
|
154
|
+
|
|
155
|
+
## Documentation
|
|
156
|
+
|
|
157
|
+
- [5-minute start](https://gentle1999.github.io/MolOP/en/getting_started/quickstart/)
|
|
158
|
+
- [Read calculation results](https://gentle1999.github.io/MolOP/en/guides/results/)
|
|
159
|
+
- [Batch summaries](https://gentle1999.github.io/MolOP/en/guides/batch/)
|
|
160
|
+
- [Filter and select](https://gentle1999.github.io/MolOP/en/guides/filtering/)
|
|
161
|
+
- [Convert and export](https://gentle1999.github.io/MolOP/en/guides/conversion/)
|
|
162
|
+
- [Optional structure recovery and graph visualization](https://gentle1999.github.io/MolOP/en/guides/structure-recovery/)
|
|
163
|
+
- [Contributing](https://gentle1999.github.io/MolOP/en/contributing/)
|
|
164
|
+
|
|
165
|
+
## Development
|
|
166
|
+
|
|
167
|
+
```bash
|
|
168
|
+
git clone https://github.com/gentle1999/MolOP.git
|
|
169
|
+
cd MolOP
|
|
170
|
+
uv sync
|
|
171
|
+
make check
|
|
172
|
+
```
|
|
173
|
+
|
|
174
|
+
See the documentation site's Developer section for implementation contracts
|
|
175
|
+
and quality gates.
|
|
176
|
+
|
|
177
|
+
## Citation and license
|
|
178
|
+
|
|
179
|
+
If MolOP helps your research, please cite:
|
|
180
|
+
|
|
181
|
+
> MolOP (Molecule OPerator), <https://github.com/gentle1999/MolOP>
|
|
182
|
+
|
|
183
|
+
This project is licensed under the
|
|
184
|
+
[MIT License](https://github.com/gentle1999/MolOP/blob/main/LICENSE).
|