MoleditPy 2.2.0__py3-none-any.whl → 2.2.0a1__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.
Files changed (28) hide show
  1. moleditpy/modules/constants.py +1 -1
  2. moleditpy/modules/main_window_main_init.py +13 -31
  3. moleditpy/modules/main_window_ui_manager.py +2 -21
  4. moleditpy/modules/plugin_interface.py +10 -1
  5. moleditpy/modules/plugin_manager.py +3 -0
  6. moleditpy/plugins/Analysis/ms_spectrum_neo.py +919 -0
  7. moleditpy/plugins/File/animated_xyz_giffer.py +583 -0
  8. moleditpy/plugins/File/cube_viewer.py +689 -0
  9. moleditpy/plugins/File/gaussian_fchk_freq_analyzer.py +1148 -0
  10. moleditpy/plugins/File/mapped_cube_viewer.py +552 -0
  11. moleditpy/plugins/File/orca_out_freq_analyzer.py +1226 -0
  12. moleditpy/plugins/File/paste_xyz.py +336 -0
  13. moleditpy/plugins/Input Generator/gaussian_input_generator_neo.py +930 -0
  14. moleditpy/plugins/Input Generator/orca_input_generator_neo.py +1028 -0
  15. moleditpy/plugins/Input Generator/orca_xyz2inp_gui.py +286 -0
  16. moleditpy/plugins/Optimization/all-trans_optimizer.py +65 -0
  17. moleditpy/plugins/Optimization/complex_molecule_untangler.py +268 -0
  18. moleditpy/plugins/Optimization/conf_search.py +224 -0
  19. moleditpy/plugins/Utility/atom_colorizer.py +547 -0
  20. moleditpy/plugins/Utility/console.py +163 -0
  21. moleditpy/plugins/Utility/pubchem_ressolver.py +244 -0
  22. moleditpy/plugins/Utility/vdw_radii_overlay.py +303 -0
  23. {moleditpy-2.2.0.dist-info → moleditpy-2.2.0a1.dist-info}/METADATA +1 -1
  24. {moleditpy-2.2.0.dist-info → moleditpy-2.2.0a1.dist-info}/RECORD +28 -11
  25. {moleditpy-2.2.0.dist-info → moleditpy-2.2.0a1.dist-info}/WHEEL +0 -0
  26. {moleditpy-2.2.0.dist-info → moleditpy-2.2.0a1.dist-info}/entry_points.txt +0 -0
  27. {moleditpy-2.2.0.dist-info → moleditpy-2.2.0a1.dist-info}/licenses/LICENSE +0 -0
  28. {moleditpy-2.2.0.dist-info → moleditpy-2.2.0a1.dist-info}/top_level.txt +0 -0
@@ -0,0 +1,303 @@
1
+
2
+ import os
3
+ import json
4
+ import traceback
5
+ import pyvista as pv
6
+ import numpy as np
7
+ import functools
8
+ import types
9
+ from PyQt6.QtWidgets import (QDialog, QVBoxLayout, QLabel,
10
+ QSlider, QHBoxLayout, QPushButton)
11
+ from PyQt6.QtGui import QAction
12
+ from PyQt6.QtCore import Qt, QTimer
13
+
14
+ # Try to import VDW radii from constants, fallback if needed
15
+ try:
16
+ from moleditpy.modules.constants import pt, CPK_COLORS_PV
17
+ except ImportError:
18
+ try:
19
+ from modules.constants import pt, CPK_COLORS_PV
20
+ except ImportError:
21
+ try:
22
+ from rdkit import Chem
23
+ pt = Chem.GetPeriodicTable()
24
+ except Exception:
25
+ pt = None
26
+ CPK_COLORS_PV = {} # Last resort fallback
27
+
28
+
29
+ # Plugin Metadata
30
+ __version__="2025.12.17"
31
+ __author__="HiroYokoyama"
32
+ PLUGIN_NAME = "VDW Radii Overlay"
33
+ SETTINGS_FILE = os.path.join(os.path.dirname(os.path.abspath(__file__)), "vdw_radii_overlay.json")
34
+
35
+ # Global State
36
+ _config_window = None
37
+ _vdw_settings = {
38
+ "occupancy": 0.3 # Opacity (0.0 - 1.0)
39
+ }
40
+
41
+ def load_settings():
42
+ global _vdw_settings
43
+ try:
44
+ if os.path.exists(SETTINGS_FILE):
45
+ with open(SETTINGS_FILE, 'r') as f:
46
+ saved = json.load(f)
47
+ # Filter to only keep occupancy
48
+ if "occupancy" in saved:
49
+ _vdw_settings["occupancy"] = float(saved["occupancy"])
50
+ except Exception as e:
51
+ print(f"Error loading VDW settings: {e}")
52
+
53
+ def save_settings():
54
+ try:
55
+ with open(SETTINGS_FILE, 'w') as f:
56
+ json.dump(_vdw_settings, f, indent=4)
57
+ except Exception as e:
58
+ print(f"Error saving VDW settings: {e}")
59
+
60
+ class VDWConfigWindow(QDialog):
61
+ def __init__(self, main_window):
62
+ super().__init__(parent=main_window)
63
+ self.mw = main_window
64
+ self.setWindowTitle("VDW Overlay Settings")
65
+ self.setModal(False)
66
+ self.resize(300, 100)
67
+ self.init_ui()
68
+
69
+ def init_ui(self):
70
+ layout = QVBoxLayout()
71
+
72
+ # Occupancy Slider
73
+ occ_layout = QHBoxLayout()
74
+ occ_layout.addWidget(QLabel("Occupancy:"))
75
+ self.slider_occ = QSlider(Qt.Orientation.Horizontal)
76
+ self.slider_occ.setRange(0, 100)
77
+ current_occ = int(_vdw_settings.get("occupancy", 0.3) * 100)
78
+ self.slider_occ.setValue(current_occ)
79
+ self.slider_occ.valueChanged.connect(self.on_occupancy_changed)
80
+ occ_layout.addWidget(self.slider_occ)
81
+ self.lbl_occ_val = QLabel(f"{current_occ}%")
82
+ occ_layout.addWidget(self.lbl_occ_val)
83
+ layout.addLayout(occ_layout)
84
+
85
+ # Close Button
86
+ btn_close = QPushButton("Close")
87
+ btn_close.clicked.connect(self.close)
88
+ layout.addWidget(btn_close)
89
+
90
+ self.setLayout(layout)
91
+
92
+ def on_occupancy_changed(self, value):
93
+ opacity = value / 100.0
94
+ _vdw_settings["occupancy"] = opacity
95
+ self.lbl_occ_val.setText(f"{value}%")
96
+ save_settings()
97
+ self.update_view()
98
+
99
+ def update_view(self):
100
+ # Trigger redraw if we are in the correct mode
101
+ if hasattr(self.mw, 'current_3d_style') and self.mw.current_3d_style == "vdw_overlay":
102
+ if getattr(self.mw, 'current_mol', None):
103
+ # Trigger redraw
104
+ if hasattr(self.mw, 'draw_molecule_3d'):
105
+ self.mw.draw_molecule_3d(self.mw.current_mol)
106
+
107
+ def draw_vdw_overlay(mw, mol):
108
+ """
109
+ Callback for drawing the VDW overlay style.
110
+ Registered via context.register_3d_style.
111
+ """
112
+ # 1. Draw standard Ball & Stick
113
+ # Attempt to locate the standard draw method
114
+ draw_std = None
115
+ if hasattr(mw, 'main_window_view_3d') and hasattr(mw.main_window_view_3d, 'draw_standard_3d_style'):
116
+ draw_std = mw.main_window_view_3d.draw_standard_3d_style
117
+ elif hasattr(mw, 'view3d') and hasattr(mw.view3d, 'draw_standard_3d_style'):
118
+ draw_std = mw.view3d.draw_standard_3d_style
119
+
120
+ if draw_std:
121
+ draw_std(mol, style_override='ball_and_stick')
122
+ else:
123
+ print("VDW Plugin Error: could not find draw_standard_3d_style")
124
+ return
125
+
126
+ # 2. Draw VDW Surface Overlay
127
+ if mol and mol.GetNumAtoms() > 0:
128
+ try:
129
+ positions = []
130
+ radii = []
131
+ atom_colors = []
132
+
133
+ # Use custom colors if available, otherwise CPK
134
+ custom_map = getattr(mw, 'custom_atom_colors', {})
135
+
136
+ if mol.GetNumConformers() > 0:
137
+ conf = mol.GetConformer()
138
+ for i in range(mol.GetNumAtoms()):
139
+ atom = mol.GetAtomWithIdx(i)
140
+ pos = conf.GetAtomPosition(i)
141
+ positions.append([pos.x, pos.y, pos.z])
142
+
143
+ sym = atom.GetSymbol()
144
+ # GetRvdw returns standard VDW radius.
145
+ r = 1.5 # Default
146
+ if pt:
147
+ r = pt.GetRvdw(atom.GetAtomicNum())
148
+ radii.append(r)
149
+
150
+ # Color handling
151
+ if i in custom_map:
152
+ c = custom_map[i]
153
+ # Normalize 0-255 to 0-1 if needed
154
+ if any(x > 1.0 for x in c):
155
+ c = [x/255.0 for x in c]
156
+ else:
157
+ c = CPK_COLORS_PV.get(sym, [0.8, 0.8, 0.8]) # Default grey if missing
158
+ atom_colors.append(c)
159
+
160
+ if positions:
161
+ positions = np.array(positions)
162
+ radii = np.array(radii)
163
+ atom_colors = np.array(atom_colors)
164
+
165
+ # --- Generate Merged Surface (SDF) ---
166
+
167
+ # 1. Define Grid Bounds
168
+ padding = radii.max() + 1.0
169
+ min_bounds = positions.min(axis=0) - padding
170
+ max_bounds = positions.max(axis=0) + padding
171
+
172
+ # Resolution (voxel size in Angstroms)
173
+ spacing = (0.125, 0.125, 0.125)
174
+
175
+ dims = np.ceil((max_bounds - min_bounds) / spacing).astype(int)
176
+
177
+ grid = pv.ImageData()
178
+ grid.dimensions = dims
179
+ grid.origin = min_bounds
180
+ grid.spacing = spacing
181
+
182
+ grid_points = grid.points
183
+ n_points = grid_points.shape[0]
184
+ values = np.empty(n_points)
185
+
186
+ # Process in chunks of 100k points
187
+ chunk_size = 100000
188
+ for start_idx in range(0, n_points, chunk_size):
189
+ end_idx = min(start_idx + chunk_size, n_points)
190
+ chunk_pts = grid_points[start_idx:end_idx]
191
+
192
+ d = np.linalg.norm(chunk_pts[:, np.newaxis, :] - positions[np.newaxis, :, :], axis=2)
193
+ d_surface = d - radii[np.newaxis, :]
194
+ values[start_idx:end_idx] = d_surface.min(axis=1)
195
+
196
+ grid.point_data["values"] = values
197
+
198
+ # 3. Contour at iso-value 0 to get the surface
199
+ mesh = grid.contour([0], scalars="values")
200
+
201
+ # 4. Map Colors to Surface Vertices
202
+ mesh_points = mesh.points
203
+ if mesh_points.shape[0] > 0:
204
+ n_mesh_pts = mesh_points.shape[0]
205
+ mesh_colors = np.zeros((n_mesh_pts, 3))
206
+
207
+ chunk_size = 50000
208
+ for start_idx in range(0, n_mesh_pts, chunk_size):
209
+ end_idx = min(start_idx + chunk_size, n_mesh_pts)
210
+ chunk_pts = mesh_points[start_idx:end_idx]
211
+
212
+ d_center = np.linalg.norm(chunk_pts[:, np.newaxis, :] - positions[np.newaxis, :, :], axis=2)
213
+ d_surface = d_center - radii[np.newaxis, :]
214
+ nearest_atom_indices = np.argmin(d_surface, axis=1)
215
+ mesh_colors[start_idx:end_idx] = atom_colors[nearest_atom_indices]
216
+
217
+ mesh.point_data["AtomColors"] = mesh_colors
218
+
219
+ opacity = _vdw_settings.get("occupancy", 0.3)
220
+
221
+ # Assume mw.plotter is available
222
+ if hasattr(mw, 'plotter'):
223
+ mw.plotter.add_mesh(
224
+ mesh,
225
+ scalars="AtomColors",
226
+ rgb=True,
227
+ opacity=opacity,
228
+ smooth_shading=True,
229
+ specular=0.2,
230
+ name="vdw_overlay_mesh"
231
+ )
232
+
233
+ except Exception as e:
234
+ print(f"VDW Overlay Error: {e}")
235
+ traceback.print_exc()
236
+
237
+ def run(mw):
238
+ global _config_window
239
+ load_settings()
240
+
241
+ if _config_window is None:
242
+ _config_window = VDWConfigWindow(mw)
243
+ _config_window.finished.connect(lambda: _cleanup_config())
244
+
245
+ _config_window.show()
246
+ _config_window.raise_()
247
+ _config_window.activateWindow()
248
+
249
+ def initialize(context):
250
+ """
251
+ New Plugin System Entry Point
252
+ """
253
+ mw = context.get_main_window()
254
+ load_settings()
255
+
256
+ # Register 3D Style
257
+ if hasattr(context, 'register_3d_style'):
258
+ context.register_3d_style("vdw_overlay", draw_vdw_overlay)
259
+ else:
260
+ print("Error: PluginContext does not support register_3d_style")
261
+
262
+ # 1. Register Configuration Menu - REMOVED in favor of run()
263
+ # (Managed by run() function now)
264
+
265
+ # 2. Inject into Style Menu (Legacy behavior preserved via mw access)
266
+ def add_menu_item():
267
+ # Locate the "3D Style" tool button on the main toolbar
268
+ style_button = getattr(mw, 'style_button', None)
269
+
270
+ if style_button and style_button.menu():
271
+ style_menu = style_button.menu()
272
+
273
+ # Check if already added
274
+ exists = False
275
+ for a in style_menu.actions():
276
+ if a.text() == "VDW Overlay":
277
+ exists = True
278
+ break
279
+
280
+ if not exists:
281
+ # Add to action group for mutual exclusion
282
+ existing_actions = style_menu.actions()
283
+ group = None
284
+ if existing_actions:
285
+ group = existing_actions[0].actionGroup()
286
+
287
+ action = QAction("VDW Overlay", mw)
288
+ action.setCheckable(True)
289
+
290
+ if group:
291
+ group.addAction(action)
292
+
293
+ # Connect to set_3d_style
294
+ action.triggered.connect(lambda: mw.set_3d_style("vdw_overlay"))
295
+
296
+ style_menu.addAction(action)
297
+
298
+ # Run after 2000ms to ensure UI is ready
299
+ QTimer.singleShot(2000, add_menu_item)
300
+
301
+ def _cleanup_config():
302
+ global _config_window
303
+ _config_window = None
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: MoleditPy
3
- Version: 2.2.0
3
+ Version: 2.2.0a1
4
4
  Summary: A cross-platform, simple, and intuitive molecular structure editor built in Python. It allows 2D molecular drawing and 3D structure visualization. It supports exporting structure files for input to DFT calculation software.
5
5
  Author-email: HiroYokoyama <titech.yoko.hiro@gmail.com>
6
6
  License: GNU GENERAL PUBLIC LICENSE
@@ -12,7 +12,7 @@ moleditpy/modules/bond_item.py,sha256=eVkEeKvM4igYI67DYxpey3FllqDyt_iWDo4VPYMhaP
12
12
  moleditpy/modules/bond_length_dialog.py,sha256=k5x_DhK9Q8CSwouKhEo_kLRRdaYHDaK84KDNmuDNLvY,14868
13
13
  moleditpy/modules/calculation_worker.py,sha256=KiGQY7i-QCQofEoE0r65KoQgpEGFcbhmxWv6egfkUdc,42324
14
14
  moleditpy/modules/color_settings_dialog.py,sha256=Ow44BhCOLo0AFb6klO001k6B4drOgKX9DeNBQhZLp5o,15474
15
- moleditpy/modules/constants.py,sha256=hdfz_yUW2nYenApAz_N45ia1Qo8bZKhuYC0lw9WOozM,4702
15
+ moleditpy/modules/constants.py,sha256=FeDinXswiCE3mVvn04ts1K8_wT2lsxft6PqIEAGHnSA,4704
16
16
  moleditpy/modules/constrained_optimization_dialog.py,sha256=IEdNVhFoNSEMeA5ABpUH9Q88-YzDXFloQM2gwnPwnHY,30150
17
17
  moleditpy/modules/custom_interactor_style.py,sha256=NjsXE2a43IDNEanZBlcG9eR4ZIERT1MsQC6lbfesapQ,38453
18
18
  moleditpy/modules/custom_qt_interactor.py,sha256=MFaTuDh-FPeFBS4303CqxsxmsOIOW4QXUz6USwI8PHQ,2451
@@ -25,11 +25,11 @@ moleditpy/modules/main_window_dialog_manager.py,sha256=S1ROCWqzB2uVSKHY4o5CbTtJA
25
25
  moleditpy/modules/main_window_edit_3d.py,sha256=uY203adPg3CLyAdbG2NCThG2Am0WduzPDan9rXAlc14,19841
26
26
  moleditpy/modules/main_window_edit_actions.py,sha256=lUFxNFTUQzeXN8CNlb4_4S9j4M1EEq8kpJmh9dCzM3M,64818
27
27
  moleditpy/modules/main_window_export.py,sha256=e0HA_jeaokIOBunQqGxUn5QKdniCmE8GrsE1Igy6zm8,38351
28
- moleditpy/modules/main_window_main_init.py,sha256=AZb2GZmvUYsVBhV2c54FEoWmFXRPkdSMlsshKraOGPs,89315
28
+ moleditpy/modules/main_window_main_init.py,sha256=2MWBLY_u4UoSC4orjhDh1WcfR8FoWEnhR9ibUeA_fnE,88438
29
29
  moleditpy/modules/main_window_molecular_parsers.py,sha256=Ex4-urYsKf6PyHp4XToOhgXzuYWa_n7q--QmHci4OCU,48401
30
30
  moleditpy/modules/main_window_project_io.py,sha256=q1vEmWQDqla32HVkmk8-j0OY9ut5TI5NJ4ikahewkEo,17259
31
31
  moleditpy/modules/main_window_string_importers.py,sha256=mQVDv2Dj4MwnPgMRe2IqdAAKnB_quE6QfYeAgCjfv28,10892
32
- moleditpy/modules/main_window_ui_manager.py,sha256=HofI6T9EvcSSzPbsdPqkYEEDoB6Hui1Uj2Ll-wwczGA,24016
32
+ moleditpy/modules/main_window_ui_manager.py,sha256=dqnBzvYZdE5Da6x4IAeGYSgwHp4EUO13THudf2hUePo,22843
33
33
  moleditpy/modules/main_window_view_3d.py,sha256=TKRerktpCTYxX9HU-dSOnIhx4OyZaVrRYj4pEOUXmGc,74088
34
34
  moleditpy/modules/main_window_view_loaders.py,sha256=Dbdgv4TY_ZkX8Qyaevwr-mBJYJ59CBzRTEks-U1FiGw,14462
35
35
  moleditpy/modules/mirror_dialog.py,sha256=c3v4qY6R4FAljzk4EPaDjL9ZdZMjLQSFLqDMXz2fBUk,4696
@@ -38,8 +38,8 @@ moleditpy/modules/molecule_scene.py,sha256=khdt7h9Mk_D1cMbYeHGtq7P9aFXo0xG-hcShU
38
38
  moleditpy/modules/move_group_dialog.py,sha256=65HVXTJSaQ9lp03XFhI1l7OzUsXmH_aqd8OgwjpjfGg,27174
39
39
  moleditpy/modules/periodic_table_dialog.py,sha256=ItEZUts1XCietz9paY-spvbzxh6SXak3GnikwqkHZCw,4006
40
40
  moleditpy/modules/planarize_dialog.py,sha256=yY8o-SxT8vGEHVWnjDTXecRv5NUaEejEsXH-836Xk8g,8681
41
- moleditpy/modules/plugin_interface.py,sha256=W6Hw1OLqMkcg8XU-S347v2sDBMEoo6iiCSbmL6MjZrA,7639
42
- moleditpy/modules/plugin_manager.py,sha256=cxbqIE7Rb_KeBd-cG1vF2ySY2qNx8IJVRXjVPyQMFDc,13457
41
+ moleditpy/modules/plugin_interface.py,sha256=54zMHkjf9TCyXyAqYeYvnG-R4mWhTaSZ8oIQt3lHqvQ,8082
42
+ moleditpy/modules/plugin_manager.py,sha256=ghIKOBsWlTmzsQJXtncH9nyfQJUF_dwBOKrU4iBlNo0,13576
43
43
  moleditpy/modules/plugin_manager_window.py,sha256=m2lJ-UltwoXQ2SYA1im6Q0v-5SfqWL2HcOBCTzUmiBw,9963
44
44
  moleditpy/modules/settings_dialog.py,sha256=Nr7yE8UmYRi3VObWvRlrnv0DnjSjmYXbvqryZ02O12k,65348
45
45
  moleditpy/modules/template_preview_item.py,sha256=djdq3tz73d_fJGOvai3E-V9Hk9q9ZW7skx7BV59mooA,6556
@@ -50,9 +50,26 @@ moleditpy/modules/zoomable_view.py,sha256=hjwljui13QpvjvxJHY4Evot4jMQvxRBQUNH5HU
50
50
  moleditpy/modules/assets/icon.icns,sha256=wD5R6-Vw7K662tVKhu2E1ImN0oUuyAP4youesEQsn9c,139863
51
51
  moleditpy/modules/assets/icon.ico,sha256=RfgFcx7-dHY_2STdsOQCQziY5SNhDr3gPnjO6jzEDPI,147975
52
52
  moleditpy/modules/assets/icon.png,sha256=kCFN1WacYIdy0GN6SFEbNA00ef39pCczBnFdkkBI8Bs,147110
53
- moleditpy-2.2.0.dist-info/licenses/LICENSE,sha256=OXLcl0T2SZ8Pmy2_dmlvKuetivmyPd5m1q-Gyd-zaYY,35149
54
- moleditpy-2.2.0.dist-info/METADATA,sha256=H70VL50a9I7mF8SFXSCHD5No6-Y9j4g931eYke8RzP8,59275
55
- moleditpy-2.2.0.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
56
- moleditpy-2.2.0.dist-info/entry_points.txt,sha256=yH1h9JjALhok1foXT3-hYrC4ufoZt8b7oiBcsdnGNNM,54
57
- moleditpy-2.2.0.dist-info/top_level.txt,sha256=ARICrS4ihlPXqywlKl6o-oJa3Qz3gZRWu_VZsQ3_c44,10
58
- moleditpy-2.2.0.dist-info/RECORD,,
53
+ moleditpy/plugins/Analysis/ms_spectrum_neo.py,sha256=dmTh48f9to2efOX0-jpQXSQVq7OoKpA_r0U6SScFAV8,35533
54
+ moleditpy/plugins/File/animated_xyz_giffer.py,sha256=yCCgl9Gladki7eNJ6j-82dx8SloB6zwuzNvEHRTp2lo,20716
55
+ moleditpy/plugins/File/cube_viewer.py,sha256=_An7KX89FIxbCF7WJbbNiZXKZPfC55NCfT7Y-7suxx8,24836
56
+ moleditpy/plugins/File/gaussian_fchk_freq_analyzer.py,sha256=tBQs8xQYIPWab26G2tpadoW4rqYcDSuXaR4a3HaFATs,45152
57
+ moleditpy/plugins/File/mapped_cube_viewer.py,sha256=tO1hbjXG2xp0pRXmwVBNCO0c0HUu1HU7zIFJ4S7buls,19557
58
+ moleditpy/plugins/File/orca_out_freq_analyzer.py,sha256=6opjTpcK3B2XUIPk8fpOKlZ_IjaBCNZAREYOO3OJsuk,48219
59
+ moleditpy/plugins/File/paste_xyz.py,sha256=kV-_CMmXLcqMIyFNRAeiwsOECPE64GCizT3hDCNfaXk,15112
60
+ moleditpy/plugins/Input Generator/gaussian_input_generator_neo.py,sha256=3EXzxcxmJmgxVF9F-jFOPYJksubUdxZxvmNoUx7DTW4,37769
61
+ moleditpy/plugins/Input Generator/orca_input_generator_neo.py,sha256=vqMpwJ9NaUw2SLcSqgIhWpdUaaJjnBvWHc4S0vtA7FI,40013
62
+ moleditpy/plugins/Input Generator/orca_xyz2inp_gui.py,sha256=bWwkLwauyXZkjxGMztdCgESnD3fZw0WsvqdNwnxDLes,11050
63
+ moleditpy/plugins/Optimization/all-trans_optimizer.py,sha256=_7zAnYIRShPquIOFUf8_5N1o0g7iIXKFmcD0Eey8Lac,2532
64
+ moleditpy/plugins/Optimization/complex_molecule_untangler.py,sha256=kGJ1nIWdLCcSxmKJOHLhTW4SAQSrESMkKsILeDqKbhA,10837
65
+ moleditpy/plugins/Optimization/conf_search.py,sha256=equ6W02Yf2DAYSj1jSNeVrQSYPPpdlNrPDt3lm_Bek8,9110
66
+ moleditpy/plugins/Utility/atom_colorizer.py,sha256=vysv-nmNZFVgfDA5tbJtMvEU2qkeHxrwNU7BxaEvePY,22824
67
+ moleditpy/plugins/Utility/console.py,sha256=4_WgDiEHhalDFOLJGmYNRa1odzxdtg46qr9DUz_ht4I,5943
68
+ moleditpy/plugins/Utility/pubchem_ressolver.py,sha256=w1Zfm_2LTDhuU6uYKQSSaGpyU36-14kvDssc0L8hsDc,10048
69
+ moleditpy/plugins/Utility/vdw_radii_overlay.py,sha256=TtufVe8Gowmpd2O-JmN4nECBoCphfcwXy4LlpVt_LMc,11390
70
+ moleditpy-2.2.0a1.dist-info/licenses/LICENSE,sha256=OXLcl0T2SZ8Pmy2_dmlvKuetivmyPd5m1q-Gyd-zaYY,35149
71
+ moleditpy-2.2.0a1.dist-info/METADATA,sha256=IE4vrtPdPiLDEfMQfz_vV5bazWJvsglrxiN6gs8OKwk,59277
72
+ moleditpy-2.2.0a1.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
73
+ moleditpy-2.2.0a1.dist-info/entry_points.txt,sha256=yH1h9JjALhok1foXT3-hYrC4ufoZt8b7oiBcsdnGNNM,54
74
+ moleditpy-2.2.0a1.dist-info/top_level.txt,sha256=ARICrS4ihlPXqywlKl6o-oJa3Qz3gZRWu_VZsQ3_c44,10
75
+ moleditpy-2.2.0a1.dist-info/RECORD,,