MoleditPy 1.17.0__py3-none-any.whl → 1.18.0__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.
- moleditpy/__init__.py +1 -1
- moleditpy/__main__.py +1 -1
- moleditpy/main.py +1 -1
- moleditpy/modules/__init__.py +1 -1
- moleditpy/modules/about_dialog.py +1 -1
- moleditpy/modules/align_plane_dialog.py +1 -1
- moleditpy/modules/alignment_dialog.py +1 -1
- moleditpy/modules/analysis_window.py +1 -1
- moleditpy/modules/angle_dialog.py +1 -1
- moleditpy/modules/atom_item.py +1 -1
- moleditpy/modules/bond_item.py +97 -6
- moleditpy/modules/bond_length_dialog.py +1 -1
- moleditpy/modules/calculation_worker.py +1 -1
- moleditpy/modules/color_settings_dialog.py +1 -1
- moleditpy/modules/constants.py +2 -2
- moleditpy/modules/constrained_optimization_dialog.py +1 -1
- moleditpy/modules/custom_interactor_style.py +1 -1
- moleditpy/modules/custom_qt_interactor.py +1 -1
- moleditpy/modules/dialog3_d_picking_mixin.py +1 -1
- moleditpy/modules/dihedral_dialog.py +1 -1
- moleditpy/modules/main_window.py +1 -1
- moleditpy/modules/main_window_app_state.py +9 -0
- moleditpy/modules/main_window_compute.py +7 -1
- moleditpy/modules/main_window_dialog_manager.py +1 -1
- moleditpy/modules/main_window_edit_3d.py +1 -1
- moleditpy/modules/main_window_edit_actions.py +1 -1
- moleditpy/modules/main_window_export.py +1 -1
- moleditpy/modules/main_window_main_init.py +1 -1
- moleditpy/modules/main_window_molecular_parsers.py +1 -1
- moleditpy/modules/main_window_project_io.py +1 -1
- moleditpy/modules/main_window_string_importers.py +1 -1
- moleditpy/modules/main_window_ui_manager.py +1 -1
- moleditpy/modules/main_window_view_3d.py +349 -122
- moleditpy/modules/main_window_view_loaders.py +1 -1
- moleditpy/modules/mirror_dialog.py +1 -1
- moleditpy/modules/molecular_data.py +1 -1
- moleditpy/modules/molecule_scene.py +8 -4
- moleditpy/modules/move_group_dialog.py +1 -1
- moleditpy/modules/periodic_table_dialog.py +1 -1
- moleditpy/modules/planarize_dialog.py +1 -1
- moleditpy/modules/settings_dialog.py +86 -2
- moleditpy/modules/template_preview_item.py +1 -1
- moleditpy/modules/template_preview_view.py +1 -1
- moleditpy/modules/translation_dialog.py +1 -1
- moleditpy/modules/user_template_dialog.py +1 -1
- moleditpy/modules/zoomable_view.py +22 -2
- {moleditpy-1.17.0.dist-info → moleditpy-1.18.0.dist-info}/METADATA +1 -1
- moleditpy-1.18.0.dist-info/RECORD +55 -0
- moleditpy-1.17.0.dist-info/RECORD +0 -55
- {moleditpy-1.17.0.dist-info → moleditpy-1.18.0.dist-info}/WHEEL +0 -0
- {moleditpy-1.17.0.dist-info → moleditpy-1.18.0.dist-info}/entry_points.txt +0 -0
- {moleditpy-1.17.0.dist-info → moleditpy-1.18.0.dist-info}/licenses/LICENSE +0 -0
- {moleditpy-1.17.0.dist-info → moleditpy-1.18.0.dist-info}/top_level.txt +0 -0
moleditpy/__init__.py
CHANGED
moleditpy/__main__.py
CHANGED
moleditpy/main.py
CHANGED
moleditpy/modules/__init__.py
CHANGED
|
@@ -7,7 +7,7 @@ MoleditPy — A Python-based molecular editing software
|
|
|
7
7
|
Author: Hiromichi Yokoyama
|
|
8
8
|
License: GPL-3.0 license
|
|
9
9
|
Repo: https://github.com/HiroYokoyama/python_molecular_editor
|
|
10
|
-
DOI 10.5281/zenodo.17268532
|
|
10
|
+
DOI: 10.5281/zenodo.17268532
|
|
11
11
|
"""
|
|
12
12
|
|
|
13
13
|
from PyQt6.QtWidgets import (
|
|
@@ -7,7 +7,7 @@ MoleditPy — A Python-based molecular editing software
|
|
|
7
7
|
Author: Hiromichi Yokoyama
|
|
8
8
|
License: GPL-3.0 license
|
|
9
9
|
Repo: https://github.com/HiroYokoyama/python_molecular_editor
|
|
10
|
-
DOI 10.5281/zenodo.17268532
|
|
10
|
+
DOI: 10.5281/zenodo.17268532
|
|
11
11
|
"""
|
|
12
12
|
|
|
13
13
|
from PyQt6.QtWidgets import (
|
|
@@ -7,7 +7,7 @@ MoleditPy — A Python-based molecular editing software
|
|
|
7
7
|
Author: Hiromichi Yokoyama
|
|
8
8
|
License: GPL-3.0 license
|
|
9
9
|
Repo: https://github.com/HiroYokoyama/python_molecular_editor
|
|
10
|
-
DOI 10.5281/zenodo.17268532
|
|
10
|
+
DOI: 10.5281/zenodo.17268532
|
|
11
11
|
"""
|
|
12
12
|
|
|
13
13
|
from PyQt6.QtWidgets import (
|
|
@@ -7,7 +7,7 @@ MoleditPy — A Python-based molecular editing software
|
|
|
7
7
|
Author: Hiromichi Yokoyama
|
|
8
8
|
License: GPL-3.0 license
|
|
9
9
|
Repo: https://github.com/HiroYokoyama/python_molecular_editor
|
|
10
|
-
DOI 10.5281/zenodo.17268532
|
|
10
|
+
DOI: 10.5281/zenodo.17268532
|
|
11
11
|
"""
|
|
12
12
|
|
|
13
13
|
from PyQt6.QtWidgets import (
|
|
@@ -7,7 +7,7 @@ MoleditPy — A Python-based molecular editing software
|
|
|
7
7
|
Author: Hiromichi Yokoyama
|
|
8
8
|
License: GPL-3.0 license
|
|
9
9
|
Repo: https://github.com/HiroYokoyama/python_molecular_editor
|
|
10
|
-
DOI 10.5281/zenodo.17268532
|
|
10
|
+
DOI: 10.5281/zenodo.17268532
|
|
11
11
|
"""
|
|
12
12
|
|
|
13
13
|
from PyQt6.QtWidgets import (
|
moleditpy/modules/atom_item.py
CHANGED
|
@@ -7,7 +7,7 @@ MoleditPy — A Python-based molecular editing software
|
|
|
7
7
|
Author: Hiromichi Yokoyama
|
|
8
8
|
License: GPL-3.0 license
|
|
9
9
|
Repo: https://github.com/HiroYokoyama/python_molecular_editor
|
|
10
|
-
DOI 10.5281/zenodo.17268532
|
|
10
|
+
DOI: 10.5281/zenodo.17268532
|
|
11
11
|
"""
|
|
12
12
|
|
|
13
13
|
from PyQt6.QtWidgets import QGraphicsItem
|
moleditpy/modules/bond_item.py
CHANGED
|
@@ -7,7 +7,7 @@ MoleditPy — A Python-based molecular editing software
|
|
|
7
7
|
Author: Hiromichi Yokoyama
|
|
8
8
|
License: GPL-3.0 license
|
|
9
9
|
Repo: https://github.com/HiroYokoyama/python_molecular_editor
|
|
10
|
-
DOI 10.5281/zenodo.17268532
|
|
10
|
+
DOI: 10.5281/zenodo.17268532
|
|
11
11
|
"""
|
|
12
12
|
|
|
13
13
|
from PyQt6.QtWidgets import QGraphicsItem, QGraphicsScene
|
|
@@ -216,11 +216,102 @@ class BondItem(QGraphicsItem):
|
|
|
216
216
|
offset = QPointF(v.dx(), v.dy()) * BOND_OFFSET
|
|
217
217
|
|
|
218
218
|
if self.order == 2:
|
|
219
|
-
#
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
219
|
+
# 環構造かどうかを判定し、描画方法を変更
|
|
220
|
+
is_in_ring = False
|
|
221
|
+
ring_center = None
|
|
222
|
+
|
|
223
|
+
try:
|
|
224
|
+
# シーンからRDKit分子を取得
|
|
225
|
+
sc = self.scene()
|
|
226
|
+
if sc and hasattr(sc, 'window') and sc.window:
|
|
227
|
+
# 2DデータからRDKit分子を生成
|
|
228
|
+
mol = sc.window.data.to_rdkit_mol(use_2d_stereo=False)
|
|
229
|
+
if mol:
|
|
230
|
+
# この結合に対応するRDKitボンドを探す
|
|
231
|
+
atom1_id = self.atom1.atom_id
|
|
232
|
+
atom2_id = self.atom2.atom_id
|
|
233
|
+
|
|
234
|
+
# RDKitインデックスを取得
|
|
235
|
+
rdkit_idx1 = None
|
|
236
|
+
rdkit_idx2 = None
|
|
237
|
+
for atom in mol.GetAtoms():
|
|
238
|
+
if atom.HasProp("_original_atom_id"):
|
|
239
|
+
orig_id = atom.GetIntProp("_original_atom_id")
|
|
240
|
+
if orig_id == atom1_id:
|
|
241
|
+
rdkit_idx1 = atom.GetIdx()
|
|
242
|
+
elif orig_id == atom2_id:
|
|
243
|
+
rdkit_idx2 = atom.GetIdx()
|
|
244
|
+
|
|
245
|
+
if rdkit_idx1 is not None and rdkit_idx2 is not None:
|
|
246
|
+
bond = mol.GetBondBetweenAtoms(rdkit_idx1, rdkit_idx2)
|
|
247
|
+
if bond and bond.IsInRing():
|
|
248
|
+
is_in_ring = True
|
|
249
|
+
# 環の中心を計算(この結合を含む最小環)
|
|
250
|
+
from rdkit import Chem
|
|
251
|
+
ring_info = mol.GetRingInfo()
|
|
252
|
+
for ring in ring_info.AtomRings():
|
|
253
|
+
if rdkit_idx1 in ring and rdkit_idx2 in ring:
|
|
254
|
+
# 環の原子位置の平均を計算
|
|
255
|
+
ring_positions = []
|
|
256
|
+
for atom_idx in ring:
|
|
257
|
+
# 対応するエディタ側の原子を探す
|
|
258
|
+
rdkit_atom = mol.GetAtomWithIdx(atom_idx)
|
|
259
|
+
if rdkit_atom.HasProp("_original_atom_id"):
|
|
260
|
+
editor_atom_id = rdkit_atom.GetIntProp("_original_atom_id")
|
|
261
|
+
if editor_atom_id in sc.window.data.atoms:
|
|
262
|
+
atom_item = sc.window.data.atoms[editor_atom_id]['item']
|
|
263
|
+
if atom_item:
|
|
264
|
+
ring_positions.append(atom_item.pos())
|
|
265
|
+
|
|
266
|
+
if ring_positions:
|
|
267
|
+
# 環の中心を計算
|
|
268
|
+
center_x = sum(p.x() for p in ring_positions) / len(ring_positions)
|
|
269
|
+
center_y = sum(p.y() for p in ring_positions) / len(ring_positions)
|
|
270
|
+
ring_center = QPointF(center_x, center_y)
|
|
271
|
+
break
|
|
272
|
+
except Exception as e:
|
|
273
|
+
# エラーが発生した場合は通常の描画にフォールバック
|
|
274
|
+
is_in_ring = False
|
|
275
|
+
|
|
276
|
+
v = line.unitVector().normalVector()
|
|
277
|
+
offset = QPointF(v.dx(), v.dy()) * BOND_OFFSET
|
|
278
|
+
|
|
279
|
+
if is_in_ring and ring_center:
|
|
280
|
+
# 環構造: 1本の中心線(単結合位置) + 1本の短い内側線
|
|
281
|
+
# 結合の中心から環の中心への方向を計算
|
|
282
|
+
bond_center = line.center()
|
|
283
|
+
|
|
284
|
+
# ローカル座標系での環中心方向
|
|
285
|
+
local_ring_center = self.mapFromScene(ring_center)
|
|
286
|
+
local_bond_center = line.center()
|
|
287
|
+
inward_vec = local_ring_center - local_bond_center
|
|
288
|
+
|
|
289
|
+
# offsetとinward_vecの内積で内側を判定
|
|
290
|
+
if QPointF.dotProduct(offset, inward_vec) > 0:
|
|
291
|
+
# offsetが内側方向(2倍のオフセット)
|
|
292
|
+
inner_offset = offset * 2
|
|
293
|
+
else:
|
|
294
|
+
# -offsetが内側方向(2倍のオフセット)
|
|
295
|
+
inner_offset = -offset * 2
|
|
296
|
+
|
|
297
|
+
# 中心線を描画(単結合と同じ位置)
|
|
298
|
+
painter.drawLine(line)
|
|
299
|
+
|
|
300
|
+
# 内側の短い線を描画(80%の長さ)
|
|
301
|
+
inner_line = line.translated(inner_offset)
|
|
302
|
+
shorten_factor = 0.8
|
|
303
|
+
p1 = inner_line.p1()
|
|
304
|
+
p2 = inner_line.p2()
|
|
305
|
+
center = QPointF((p1.x() + p2.x()) / 2, (p1.y() + p2.y()) / 2)
|
|
306
|
+
shortened_p1 = center + (p1 - center) * shorten_factor
|
|
307
|
+
shortened_p2 = center + (p2 - center) * shorten_factor
|
|
308
|
+
painter.drawLine(QLineF(shortened_p1, shortened_p2))
|
|
309
|
+
else:
|
|
310
|
+
# 非環構造: 従来の2本の平行線
|
|
311
|
+
line1 = line.translated(offset)
|
|
312
|
+
line2 = line.translated(-offset)
|
|
313
|
+
painter.drawLine(line1)
|
|
314
|
+
painter.drawLine(line2)
|
|
224
315
|
|
|
225
316
|
# E/Z ラベルの描画処理
|
|
226
317
|
if self.stereo in [3, 4]:
|
|
@@ -7,7 +7,7 @@ MoleditPy — A Python-based molecular editing software
|
|
|
7
7
|
Author: Hiromichi Yokoyama
|
|
8
8
|
License: GPL-3.0 license
|
|
9
9
|
Repo: https://github.com/HiroYokoyama/python_molecular_editor
|
|
10
|
-
DOI 10.5281/zenodo.17268532
|
|
10
|
+
DOI: 10.5281/zenodo.17268532
|
|
11
11
|
"""
|
|
12
12
|
|
|
13
13
|
from PyQt6.QtWidgets import (
|
|
@@ -7,7 +7,7 @@ MoleditPy — A Python-based molecular editing software
|
|
|
7
7
|
Author: Hiromichi Yokoyama
|
|
8
8
|
License: GPL-3.0 license
|
|
9
9
|
Repo: https://github.com/HiroYokoyama/python_molecular_editor
|
|
10
|
-
DOI 10.5281/zenodo.17268532
|
|
10
|
+
DOI: 10.5281/zenodo.17268532
|
|
11
11
|
"""
|
|
12
12
|
|
|
13
13
|
from PyQt6.QtCore import QObject
|
|
@@ -7,7 +7,7 @@ MoleditPy — A Python-based molecular editing software
|
|
|
7
7
|
Author: Hiromichi Yokoyama
|
|
8
8
|
License: GPL-3.0 license
|
|
9
9
|
Repo: https://github.com/HiroYokoyama/python_molecular_editor
|
|
10
|
-
DOI 10.5281/zenodo.17268532
|
|
10
|
+
DOI: 10.5281/zenodo.17268532
|
|
11
11
|
"""
|
|
12
12
|
|
|
13
13
|
from PyQt6.QtWidgets import (
|
moleditpy/modules/constants.py
CHANGED
|
@@ -7,7 +7,7 @@ MoleditPy — A Python-based molecular editing software
|
|
|
7
7
|
Author: Hiromichi Yokoyama
|
|
8
8
|
License: GPL-3.0 license
|
|
9
9
|
Repo: https://github.com/HiroYokoyama/python_molecular_editor
|
|
10
|
-
DOI 10.5281/zenodo.17268532
|
|
10
|
+
DOI: 10.5281/zenodo.17268532
|
|
11
11
|
"""
|
|
12
12
|
|
|
13
13
|
# --- Constants ---
|
|
@@ -16,7 +16,7 @@ from PyQt6.QtGui import QFont, QColor
|
|
|
16
16
|
from rdkit import Chem
|
|
17
17
|
|
|
18
18
|
#Version
|
|
19
|
-
VERSION = '1.
|
|
19
|
+
VERSION = '1.18.0'
|
|
20
20
|
|
|
21
21
|
ATOM_RADIUS = 18
|
|
22
22
|
BOND_OFFSET = 3.5
|
|
@@ -7,7 +7,7 @@ MoleditPy — A Python-based molecular editing software
|
|
|
7
7
|
Author: Hiromichi Yokoyama
|
|
8
8
|
License: GPL-3.0 license
|
|
9
9
|
Repo: https://github.com/HiroYokoyama/python_molecular_editor
|
|
10
|
-
DOI 10.5281/zenodo.17268532
|
|
10
|
+
DOI: 10.5281/zenodo.17268532
|
|
11
11
|
"""
|
|
12
12
|
|
|
13
13
|
from PyQt6.QtWidgets import (
|
|
@@ -7,7 +7,7 @@ MoleditPy — A Python-based molecular editing software
|
|
|
7
7
|
Author: Hiromichi Yokoyama
|
|
8
8
|
License: GPL-3.0 license
|
|
9
9
|
Repo: https://github.com/HiroYokoyama/python_molecular_editor
|
|
10
|
-
DOI 10.5281/zenodo.17268532
|
|
10
|
+
DOI: 10.5281/zenodo.17268532
|
|
11
11
|
"""
|
|
12
12
|
|
|
13
13
|
import numpy as np
|
|
@@ -7,7 +7,7 @@ MoleditPy — A Python-based molecular editing software
|
|
|
7
7
|
Author: Hiromichi Yokoyama
|
|
8
8
|
License: GPL-3.0 license
|
|
9
9
|
Repo: https://github.com/HiroYokoyama/python_molecular_editor
|
|
10
|
-
DOI 10.5281/zenodo.17268532
|
|
10
|
+
DOI: 10.5281/zenodo.17268532
|
|
11
11
|
"""
|
|
12
12
|
|
|
13
13
|
from pyvistaqt import QtInteractor
|
|
@@ -7,7 +7,7 @@ MoleditPy — A Python-based molecular editing software
|
|
|
7
7
|
Author: Hiromichi Yokoyama
|
|
8
8
|
License: GPL-3.0 license
|
|
9
9
|
Repo: https://github.com/HiroYokoyama/python_molecular_editor
|
|
10
|
-
DOI 10.5281/zenodo.17268532
|
|
10
|
+
DOI: 10.5281/zenodo.17268532
|
|
11
11
|
"""
|
|
12
12
|
|
|
13
13
|
from PyQt6.QtCore import Qt, QEvent
|
|
@@ -7,7 +7,7 @@ MoleditPy — A Python-based molecular editing software
|
|
|
7
7
|
Author: Hiromichi Yokoyama
|
|
8
8
|
License: GPL-3.0 license
|
|
9
9
|
Repo: https://github.com/HiroYokoyama/python_molecular_editor
|
|
10
|
-
DOI 10.5281/zenodo.17268532
|
|
10
|
+
DOI: 10.5281/zenodo.17268532
|
|
11
11
|
"""
|
|
12
12
|
|
|
13
13
|
from PyQt6.QtWidgets import (
|
moleditpy/modules/main_window.py
CHANGED
|
@@ -7,7 +7,7 @@ MoleditPy — A Python-based molecular editing software
|
|
|
7
7
|
Author: Hiromichi Yokoyama
|
|
8
8
|
License: GPL-3.0 license
|
|
9
9
|
Repo: https://github.com/HiroYokoyama/python_molecular_editor
|
|
10
|
-
DOI 10.5281/zenodo.17268532
|
|
10
|
+
DOI: 10.5281/zenodo.17268532
|
|
11
11
|
"""
|
|
12
12
|
|
|
13
13
|
import traceback
|
|
@@ -1,6 +1,15 @@
|
|
|
1
1
|
#!/usr/bin/env python3
|
|
2
2
|
# -*- coding: utf-8 -*-
|
|
3
3
|
|
|
4
|
+
"""
|
|
5
|
+
MoleditPy — A Python-based molecular editing software
|
|
6
|
+
|
|
7
|
+
Author: Hiromichi Yokoyama
|
|
8
|
+
License: GPL-3.0 license
|
|
9
|
+
Repo: https://github.com/HiroYokoyama/python_molecular_editor
|
|
10
|
+
DOI: 10.5281/zenodo.17268532
|
|
11
|
+
"""
|
|
12
|
+
|
|
4
13
|
"""
|
|
5
14
|
main_window_app_state.py
|
|
6
15
|
MainWindow (main_window.py) から分離されたモジュール
|
|
@@ -7,7 +7,7 @@ MoleditPy — A Python-based molecular editing software
|
|
|
7
7
|
Author: Hiromichi Yokoyama
|
|
8
8
|
License: GPL-3.0 license
|
|
9
9
|
Repo: https://github.com/HiroYokoyama/python_molecular_editor
|
|
10
|
-
DOI 10.5281/zenodo.17268532
|
|
10
|
+
DOI: 10.5281/zenodo.17268532
|
|
11
11
|
"""
|
|
12
12
|
|
|
13
13
|
"""
|
|
@@ -958,6 +958,12 @@ class MainWindowCompute(object):
|
|
|
958
958
|
try:
|
|
959
959
|
if mol.GetNumConformers() > 0:
|
|
960
960
|
# 初回変換では、2Dで設定したwedge/dashボンドの立体情報を保持
|
|
961
|
+
|
|
962
|
+
# 3D立体化学計算で上書きされる前に、2D由来の立体化学情報をプロパティとして保存
|
|
963
|
+
for bond in mol.GetBonds():
|
|
964
|
+
if bond.GetBondType() == Chem.BondType.DOUBLE:
|
|
965
|
+
bond.SetIntProp("_original_2d_stereo", bond.GetStereo())
|
|
966
|
+
|
|
961
967
|
# 立体化学の割り当てを行うが、既存の2D立体情報を尊重
|
|
962
968
|
Chem.AssignStereochemistry(mol, cleanIt=False, force=True)
|
|
963
969
|
|