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.
Files changed (178) hide show
  1. molop-0.2.2/.gitignore +289 -0
  2. molop-0.2.2/LICENSE +9 -0
  3. molop-0.2.2/PKG-INFO +227 -0
  4. molop-0.2.2/README.md +184 -0
  5. molop-0.2.2/README.zh.md +177 -0
  6. molop-0.2.2/pyproject.toml +230 -0
  7. molop-0.2.2/src/molop/__init__.py +29 -0
  8. molop-0.2.2/src/molop/cli/__init__.py +0 -0
  9. molop-0.2.2/src/molop/cli/app.py +788 -0
  10. molop-0.2.2/src/molop/cli/app.pyi +74 -0
  11. molop-0.2.2/src/molop/cli/shared/__init__.py +7 -0
  12. molop-0.2.2/src/molop/cli/shared/frames.py +25 -0
  13. molop-0.2.2/src/molop/cli/state_machine.py +548 -0
  14. molop-0.2.2/src/molop/config/__init__.py +182 -0
  15. molop-0.2.2/src/molop/io/FileBatchModelDisk.py +838 -0
  16. molop-0.2.2/src/molop/io/FileBatchParserDisk.py +350 -0
  17. molop-0.2.2/src/molop/io/__init__.py +147 -0
  18. molop-0.2.2/src/molop/io/_batch_format_transform.py +71 -0
  19. molop-0.2.2/src/molop/io/_batch_format_transform.pyi +771 -0
  20. molop-0.2.2/src/molop/io/_typing_catalog.py +17 -0
  21. molop-0.2.2/src/molop/io/_typing_catalog.pyi +51 -0
  22. molop-0.2.2/src/molop/io/base_models/Bases.py +423 -0
  23. molop-0.2.2/src/molop/io/base_models/ChemFile.py +511 -0
  24. molop-0.2.2/src/molop/io/base_models/ChemFileFrame.py +1110 -0
  25. molop-0.2.2/src/molop/io/base_models/DataClasses.py +2771 -0
  26. molop-0.2.2/src/molop/io/base_models/FileParser.py +1018 -0
  27. molop-0.2.2/src/molop/io/base_models/FrameParser.py +60 -0
  28. molop-0.2.2/src/molop/io/base_models/Mixins.py +145 -0
  29. molop-0.2.2/src/molop/io/base_models/Molecule.py +703 -0
  30. molop-0.2.2/src/molop/io/base_models/ParseContainers.py +90 -0
  31. molop-0.2.2/src/molop/io/base_models/SearchPattern.py +371 -0
  32. molop-0.2.2/src/molop/io/base_models/__init__.py +0 -0
  33. molop-0.2.2/src/molop/io/base_models/_format_transform.py +142 -0
  34. molop-0.2.2/src/molop/io/base_models/_format_transform.pyi +1373 -0
  35. molop-0.2.2/src/molop/io/base_models/source.py +320 -0
  36. molop-0.2.2/src/molop/io/base_models/summary.py +99 -0
  37. molop-0.2.2/src/molop/io/codec_exceptions.py +21 -0
  38. molop-0.2.2/src/molop/io/codec_registry.py +904 -0
  39. molop-0.2.2/src/molop/io/codec_types.py +59 -0
  40. molop-0.2.2/src/molop/io/codecs/__init__.py +32 -0
  41. molop-0.2.2/src/molop/io/codecs/_shared/__init__.py +0 -0
  42. molop-0.2.2/src/molop/io/codecs/_shared/reader_helpers.py +53 -0
  43. molop-0.2.2/src/molop/io/codecs/_shared/writer_helpers.py +182 -0
  44. molop-0.2.2/src/molop/io/codecs/catalog.py +181 -0
  45. molop-0.2.2/src/molop/io/codecs/cml_codec.py +125 -0
  46. molop-0.2.2/src/molop/io/codecs/openbabel_reader.py +137 -0
  47. molop-0.2.2/src/molop/io/frame_selection.py +31 -0
  48. molop-0.2.2/src/molop/io/logic/__init__.py +0 -0
  49. molop-0.2.2/src/molop/io/logic/coords/__init__.py +0 -0
  50. molop-0.2.2/src/molop/io/logic/coords/frame_models/SDFFileFrame.py +38 -0
  51. molop-0.2.2/src/molop/io/logic/coords/frame_models/SMIFileFrame.py +29 -0
  52. molop-0.2.2/src/molop/io/logic/coords/frame_models/XYZFileFrame.py +41 -0
  53. molop-0.2.2/src/molop/io/logic/coords/frame_models/__init__.py +0 -0
  54. molop-0.2.2/src/molop/io/logic/coords/frame_models/_coords_renderers.py +32 -0
  55. molop-0.2.2/src/molop/io/logic/coords/frame_parsers/SDFFileFrameParser.py +32 -0
  56. molop-0.2.2/src/molop/io/logic/coords/frame_parsers/SMIFileFrameParser.py +32 -0
  57. molop-0.2.2/src/molop/io/logic/coords/frame_parsers/XYZFileFrameParser.py +32 -0
  58. molop-0.2.2/src/molop/io/logic/coords/frame_parsers/__init__.py +0 -0
  59. molop-0.2.2/src/molop/io/logic/coords/frame_parsers/_coords_extractors.py +103 -0
  60. molop-0.2.2/src/molop/io/logic/coords/frame_parsers/_xyz_patterns.py +28 -0
  61. molop-0.2.2/src/molop/io/logic/coords/models/SDFFile.py +85 -0
  62. molop-0.2.2/src/molop/io/logic/coords/models/SMIFile.py +85 -0
  63. molop-0.2.2/src/molop/io/logic/coords/models/XYZFile.py +85 -0
  64. molop-0.2.2/src/molop/io/logic/coords/models/__init__.py +0 -0
  65. molop-0.2.2/src/molop/io/logic/coords/parsers/SDFFileParser.py +96 -0
  66. molop-0.2.2/src/molop/io/logic/coords/parsers/SMIFileParser.py +96 -0
  67. molop-0.2.2/src/molop/io/logic/coords/parsers/XYZFileParser.py +96 -0
  68. molop-0.2.2/src/molop/io/logic/coords/parsers/__init__.py +0 -0
  69. molop-0.2.2/src/molop/io/logic/coords/parsers/_coords_file_extractors.py +79 -0
  70. molop-0.2.2/src/molop/io/logic/gaussian/__init__.py +1 -0
  71. molop-0.2.2/src/molop/io/logic/gaussian/fchk/__init__.py +1 -0
  72. molop-0.2.2/src/molop/io/logic/gaussian/fchk/output/__init__.py +1 -0
  73. molop-0.2.2/src/molop/io/logic/gaussian/fchk/output/frame_models/G16FchkFileFrame.py +28 -0
  74. molop-0.2.2/src/molop/io/logic/gaussian/fchk/output/frame_models/__init__.py +1 -0
  75. molop-0.2.2/src/molop/io/logic/gaussian/fchk/output/frame_parsers/G16FchkFileFrameParser.py +222 -0
  76. molop-0.2.2/src/molop/io/logic/gaussian/fchk/output/frame_parsers/__init__.py +1 -0
  77. molop-0.2.2/src/molop/io/logic/gaussian/fchk/output/locators.py +11 -0
  78. molop-0.2.2/src/molop/io/logic/gaussian/fchk/output/models/G16FchkFile.py +34 -0
  79. molop-0.2.2/src/molop/io/logic/gaussian/fchk/output/models/__init__.py +1 -0
  80. molop-0.2.2/src/molop/io/logic/gaussian/fchk/output/parsers/G16FchkFileParser.py +145 -0
  81. molop-0.2.2/src/molop/io/logic/gaussian/fchk/output/parsers/__init__.py +1 -0
  82. molop-0.2.2/src/molop/io/logic/gaussian/fchk/output/parsers/_fchk_extractors.py +522 -0
  83. molop-0.2.2/src/molop/io/logic/gaussian/fchk/output/parsers/_fchk_patterns.py +11 -0
  84. molop-0.2.2/src/molop/io/logic/gaussian/fchk/output/parsers/_fchk_records.py +157 -0
  85. molop-0.2.2/src/molop/io/logic/gaussian/input/GaussianInput.py +890 -0
  86. molop-0.2.2/src/molop/io/logic/gaussian/input/GaussianInputParsing.py +676 -0
  87. molop-0.2.2/src/molop/io/logic/gaussian/input/GaussianInputPatterns.py +79 -0
  88. molop-0.2.2/src/molop/io/logic/gaussian/input/GaussianLink0.py +102 -0
  89. molop-0.2.2/src/molop/io/logic/gaussian/input/GaussianRoute.py +638 -0
  90. molop-0.2.2/src/molop/io/logic/gaussian/input/GaussianRouteParsing.py +851 -0
  91. molop-0.2.2/src/molop/io/logic/gaussian/input/__init__.py +0 -0
  92. molop-0.2.2/src/molop/io/logic/gaussian/input/frame_models/GJFFileFrame.py +382 -0
  93. molop-0.2.2/src/molop/io/logic/gaussian/input/frame_models/__init__.py +0 -0
  94. molop-0.2.2/src/molop/io/logic/gaussian/input/frame_parsers/GJFFileFrameParser.py +210 -0
  95. molop-0.2.2/src/molop/io/logic/gaussian/input/frame_parsers/__init__.py +0 -0
  96. molop-0.2.2/src/molop/io/logic/gaussian/input/frame_parsers/_gjf_extractors.py +118 -0
  97. molop-0.2.2/src/molop/io/logic/gaussian/input/models/GJFFile.py +88 -0
  98. molop-0.2.2/src/molop/io/logic/gaussian/input/models/__init__.py +0 -0
  99. molop-0.2.2/src/molop/io/logic/gaussian/input/parsers/GJFFileParser.py +107 -0
  100. molop-0.2.2/src/molop/io/logic/gaussian/input/parsers/__init__.py +0 -0
  101. molop-0.2.2/src/molop/io/logic/gaussian/input/parsers/_gjf_file_extractors.py +58 -0
  102. molop-0.2.2/src/molop/io/logic/gaussian/log/__init__.py +0 -0
  103. molop-0.2.2/src/molop/io/logic/gaussian/log/frame_models/G16Components.py +1520 -0
  104. molop-0.2.2/src/molop/io/logic/gaussian/log/frame_models/G16LogFileFrame.py +146 -0
  105. molop-0.2.2/src/molop/io/logic/gaussian/log/frame_models/__init__.py +0 -0
  106. molop-0.2.2/src/molop/io/logic/gaussian/log/frame_parsers/G16LogFileFrameParser.py +342 -0
  107. molop-0.2.2/src/molop/io/logic/gaussian/log/frame_parsers/__init__.py +0 -0
  108. molop-0.2.2/src/molop/io/logic/gaussian/log/frame_parsers/_g16_extractors.py +888 -0
  109. molop-0.2.2/src/molop/io/logic/gaussian/log/frame_parsers/_g16_shared.py +217 -0
  110. molop-0.2.2/src/molop/io/logic/gaussian/log/locators.py +73 -0
  111. molop-0.2.2/src/molop/io/logic/gaussian/log/models/G16LogFile.py +373 -0
  112. molop-0.2.2/src/molop/io/logic/gaussian/log/models/__init__.py +0 -0
  113. molop-0.2.2/src/molop/io/logic/gaussian/log/parsers/G16LogFileParser.py +345 -0
  114. molop-0.2.2/src/molop/io/logic/gaussian/log/parsers/__init__.py +0 -0
  115. molop-0.2.2/src/molop/io/logic/gaussian/log/parsers/_g16_log_file_extractors.py +208 -0
  116. molop-0.2.2/src/molop/io/logic/gaussian/log/parsers/_g16_log_patterns.py +791 -0
  117. molop-0.2.2/src/molop/io/logic/gaussian/log/parsers/_g16log_archive_tail.py +302 -0
  118. molop-0.2.2/src/molop/io/logic/orca/__init__.py +1 -0
  119. molop-0.2.2/src/molop/io/logic/orca/common.py +330 -0
  120. molop-0.2.2/src/molop/io/logic/orca/input/__init__.py +0 -0
  121. molop-0.2.2/src/molop/io/logic/orca/input/_orca_inp_renderer.py +277 -0
  122. molop-0.2.2/src/molop/io/logic/orca/input/frame_models/ORCAInpFileFrame.py +113 -0
  123. molop-0.2.2/src/molop/io/logic/orca/input/frame_models/__init__.py +0 -0
  124. molop-0.2.2/src/molop/io/logic/orca/input/frame_parsers/ORCAInpFileFrameParser.py +188 -0
  125. molop-0.2.2/src/molop/io/logic/orca/input/frame_parsers/__init__.py +0 -0
  126. molop-0.2.2/src/molop/io/logic/orca/input/frame_parsers/_orca_inp_blocks.py +186 -0
  127. molop-0.2.2/src/molop/io/logic/orca/input/frame_parsers/_orca_inp_geometry.py +593 -0
  128. molop-0.2.2/src/molop/io/logic/orca/input/frame_parsers/_orca_inp_patterns.py +44 -0
  129. molop-0.2.2/src/molop/io/logic/orca/input/frame_parsers/_orca_inp_resources.py +73 -0
  130. molop-0.2.2/src/molop/io/logic/orca/input/frame_parsers/_orca_inp_semantics.py +1302 -0
  131. molop-0.2.2/src/molop/io/logic/orca/input/frame_parsers/_orca_inp_tokens.py +51 -0
  132. molop-0.2.2/src/molop/io/logic/orca/input/models/ORCAInpFile.py +88 -0
  133. molop-0.2.2/src/molop/io/logic/orca/input/models/__init__.py +0 -0
  134. molop-0.2.2/src/molop/io/logic/orca/input/parsers/ORCAInpFileParser.py +115 -0
  135. molop-0.2.2/src/molop/io/logic/orca/input/parsers/__init__.py +0 -0
  136. molop-0.2.2/src/molop/io/logic/orca/input/parsers/_orca_inp_file_extractors.py +102 -0
  137. molop-0.2.2/src/molop/io/logic/orca/input/parsers/_orca_inp_metadata.py +15 -0
  138. molop-0.2.2/src/molop/io/logic/orca/log/__init__.py +0 -0
  139. molop-0.2.2/src/molop/io/logic/orca/log/frame_models/ORCALogFileFrame.py +39 -0
  140. molop-0.2.2/src/molop/io/logic/orca/log/frame_models/__init__.py +0 -0
  141. molop-0.2.2/src/molop/io/logic/orca/log/frame_parsers/ORCALogFileFrameParser.py +204 -0
  142. molop-0.2.2/src/molop/io/logic/orca/log/frame_parsers/__init__.py +0 -0
  143. molop-0.2.2/src/molop/io/logic/orca/log/frame_parsers/_orca_extractors.py +655 -0
  144. molop-0.2.2/src/molop/io/logic/orca/log/locators.py +74 -0
  145. molop-0.2.2/src/molop/io/logic/orca/log/models/ORCALogFile.py +36 -0
  146. molop-0.2.2/src/molop/io/logic/orca/log/models/__init__.py +0 -0
  147. molop-0.2.2/src/molop/io/logic/orca/log/parsers/ORCALogFileParser.py +253 -0
  148. molop-0.2.2/src/molop/io/logic/orca/log/parsers/__init__.py +0 -0
  149. molop-0.2.2/src/molop/io/logic/orca/log/parsers/_orca_log_file_extractors.py +67 -0
  150. molop-0.2.2/src/molop/io/logic/orca/log/parsers/_orca_log_patterns.py +220 -0
  151. molop-0.2.2/src/molop/io/logic/orca/log/parsers/_orca_log_shared.py +48 -0
  152. molop-0.2.2/src/molop/io/logic/xtb/__init__.py +1 -0
  153. molop-0.2.2/src/molop/io/logic/xtb/common.py +49 -0
  154. molop-0.2.2/src/molop/io/logic/xtb/output/__init__.py +1 -0
  155. molop-0.2.2/src/molop/io/logic/xtb/output/frame_models/XTBOutputFileFrame.py +65 -0
  156. molop-0.2.2/src/molop/io/logic/xtb/output/frame_models/__init__.py +1 -0
  157. molop-0.2.2/src/molop/io/logic/xtb/output/frame_parsers/XTBOutputFileFrameParser.py +182 -0
  158. molop-0.2.2/src/molop/io/logic/xtb/output/frame_parsers/__init__.py +1 -0
  159. molop-0.2.2/src/molop/io/logic/xtb/output/locators.py +34 -0
  160. molop-0.2.2/src/molop/io/logic/xtb/output/models/XTBOutputFile.py +48 -0
  161. molop-0.2.2/src/molop/io/logic/xtb/output/models/__init__.py +1 -0
  162. molop-0.2.2/src/molop/io/logic/xtb/output/parsers/XTBOutputFileParser.py +173 -0
  163. molop-0.2.2/src/molop/io/logic/xtb/output/parsers/__init__.py +1 -0
  164. molop-0.2.2/src/molop/io/logic/xtb/output/parsers/_xtb_output_extractors.py +765 -0
  165. molop-0.2.2/src/molop/io/logic/xtb/output/parsers/_xtb_output_patterns.py +281 -0
  166. molop-0.2.2/src/molop/py.typed +1 -0
  167. molop-0.2.2/src/molop/structure/FormatConverter.py +152 -0
  168. molop-0.2.2/src/molop/structure/GeometryTransformation.py +491 -0
  169. molop-0.2.2/src/molop/structure/StructureTransformation.py +1222 -0
  170. molop-0.2.2/src/molop/structure/__init__.py +7 -0
  171. molop-0.2.2/src/molop/structure/utils.py +108 -0
  172. molop-0.2.2/src/molop/unit/__init__.py +35 -0
  173. molop-0.2.2/src/molop/utils/__init__.py +7 -0
  174. molop-0.2.2/src/molop/utils/consts.py +440 -0
  175. molop-0.2.2/src/molop/utils/errors.py +19 -0
  176. molop-0.2.2/src/molop/utils/functions.py +163 -0
  177. molop-0.2.2/src/molop/utils/progressbar.py +215 -0
  178. 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
+ [![PyPI](https://img.shields.io/pypi/v/molop.svg)](https://pypi.org/project/molop/)
50
+ [![Python](https://img.shields.io/pypi/pyversions/molop.svg)](https://pypi.org/project/molop/)
51
+ [![Typing: Typed](https://img.shields.io/badge/typing-typed-blue.svg)](https://typing.python.org/en/latest/spec/distributing.html#packaging-type-information)
52
+ [![Status](https://img.shields.io/pypi/status/molop.svg)](https://pypi.org/project/molop/)
53
+ [![Wheel](https://img.shields.io/pypi/wheel/molop.svg)](https://pypi.org/project/molop/)
54
+ [![Downloads](https://img.shields.io/pypi/dm/molop.svg)](https://pypi.org/project/molop/)
55
+ [![CI](https://github.com/gentle1999/MolOP/actions/workflows/ci.yaml/badge.svg?branch=main)](https://github.com/gentle1999/MolOP/actions/workflows/ci.yaml)
56
+ [![Docs](https://github.com/gentle1999/MolOP/actions/workflows/docs-deploy.yml/badge.svg?branch=main)](https://gentle1999.github.io/MolOP/)
57
+ [![License](https://img.shields.io/github/license/gentle1999/MolOP.svg)](https://github.com/gentle1999/MolOP/blob/main/LICENSE)
58
+ [![Last commit](https://img.shields.io/github/last-commit/gentle1999/MolOP.svg)](https://github.com/gentle1999/MolOP/commits/main/)
59
+ [![Issues](https://img.shields.io/github/issues/gentle1999/MolOP.svg)](https://github.com/gentle1999/MolOP/issues)
60
+ [![Stars](https://img.shields.io/github/stars/gentle1999/MolOP.svg)](https://github.com/gentle1999/MolOP/stargazers)
61
+ [![Forks](https://img.shields.io/github/forks/gentle1999/MolOP.svg)](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
+ [![PyPI](https://img.shields.io/pypi/v/molop.svg)](https://pypi.org/project/molop/)
7
+ [![Python](https://img.shields.io/pypi/pyversions/molop.svg)](https://pypi.org/project/molop/)
8
+ [![Typing: Typed](https://img.shields.io/badge/typing-typed-blue.svg)](https://typing.python.org/en/latest/spec/distributing.html#packaging-type-information)
9
+ [![Status](https://img.shields.io/pypi/status/molop.svg)](https://pypi.org/project/molop/)
10
+ [![Wheel](https://img.shields.io/pypi/wheel/molop.svg)](https://pypi.org/project/molop/)
11
+ [![Downloads](https://img.shields.io/pypi/dm/molop.svg)](https://pypi.org/project/molop/)
12
+ [![CI](https://github.com/gentle1999/MolOP/actions/workflows/ci.yaml/badge.svg?branch=main)](https://github.com/gentle1999/MolOP/actions/workflows/ci.yaml)
13
+ [![Docs](https://github.com/gentle1999/MolOP/actions/workflows/docs-deploy.yml/badge.svg?branch=main)](https://gentle1999.github.io/MolOP/)
14
+ [![License](https://img.shields.io/github/license/gentle1999/MolOP.svg)](https://github.com/gentle1999/MolOP/blob/main/LICENSE)
15
+ [![Last commit](https://img.shields.io/github/last-commit/gentle1999/MolOP.svg)](https://github.com/gentle1999/MolOP/commits/main/)
16
+ [![Issues](https://img.shields.io/github/issues/gentle1999/MolOP.svg)](https://github.com/gentle1999/MolOP/issues)
17
+ [![Stars](https://img.shields.io/github/stars/gentle1999/MolOP.svg)](https://github.com/gentle1999/MolOP/stargazers)
18
+ [![Forks](https://img.shields.io/github/forks/gentle1999/MolOP.svg)](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).