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.
Files changed (53) hide show
  1. moleditpy/__init__.py +1 -1
  2. moleditpy/__main__.py +1 -1
  3. moleditpy/main.py +1 -1
  4. moleditpy/modules/__init__.py +1 -1
  5. moleditpy/modules/about_dialog.py +1 -1
  6. moleditpy/modules/align_plane_dialog.py +1 -1
  7. moleditpy/modules/alignment_dialog.py +1 -1
  8. moleditpy/modules/analysis_window.py +1 -1
  9. moleditpy/modules/angle_dialog.py +1 -1
  10. moleditpy/modules/atom_item.py +1 -1
  11. moleditpy/modules/bond_item.py +97 -6
  12. moleditpy/modules/bond_length_dialog.py +1 -1
  13. moleditpy/modules/calculation_worker.py +1 -1
  14. moleditpy/modules/color_settings_dialog.py +1 -1
  15. moleditpy/modules/constants.py +2 -2
  16. moleditpy/modules/constrained_optimization_dialog.py +1 -1
  17. moleditpy/modules/custom_interactor_style.py +1 -1
  18. moleditpy/modules/custom_qt_interactor.py +1 -1
  19. moleditpy/modules/dialog3_d_picking_mixin.py +1 -1
  20. moleditpy/modules/dihedral_dialog.py +1 -1
  21. moleditpy/modules/main_window.py +1 -1
  22. moleditpy/modules/main_window_app_state.py +9 -0
  23. moleditpy/modules/main_window_compute.py +7 -1
  24. moleditpy/modules/main_window_dialog_manager.py +1 -1
  25. moleditpy/modules/main_window_edit_3d.py +1 -1
  26. moleditpy/modules/main_window_edit_actions.py +1 -1
  27. moleditpy/modules/main_window_export.py +1 -1
  28. moleditpy/modules/main_window_main_init.py +1 -1
  29. moleditpy/modules/main_window_molecular_parsers.py +1 -1
  30. moleditpy/modules/main_window_project_io.py +1 -1
  31. moleditpy/modules/main_window_string_importers.py +1 -1
  32. moleditpy/modules/main_window_ui_manager.py +1 -1
  33. moleditpy/modules/main_window_view_3d.py +349 -122
  34. moleditpy/modules/main_window_view_loaders.py +1 -1
  35. moleditpy/modules/mirror_dialog.py +1 -1
  36. moleditpy/modules/molecular_data.py +1 -1
  37. moleditpy/modules/molecule_scene.py +8 -4
  38. moleditpy/modules/move_group_dialog.py +1 -1
  39. moleditpy/modules/periodic_table_dialog.py +1 -1
  40. moleditpy/modules/planarize_dialog.py +1 -1
  41. moleditpy/modules/settings_dialog.py +86 -2
  42. moleditpy/modules/template_preview_item.py +1 -1
  43. moleditpy/modules/template_preview_view.py +1 -1
  44. moleditpy/modules/translation_dialog.py +1 -1
  45. moleditpy/modules/user_template_dialog.py +1 -1
  46. moleditpy/modules/zoomable_view.py +22 -2
  47. {moleditpy-1.17.0.dist-info → moleditpy-1.18.0.dist-info}/METADATA +1 -1
  48. moleditpy-1.18.0.dist-info/RECORD +55 -0
  49. moleditpy-1.17.0.dist-info/RECORD +0 -55
  50. {moleditpy-1.17.0.dist-info → moleditpy-1.18.0.dist-info}/WHEEL +0 -0
  51. {moleditpy-1.17.0.dist-info → moleditpy-1.18.0.dist-info}/entry_points.txt +0 -0
  52. {moleditpy-1.17.0.dist-info → moleditpy-1.18.0.dist-info}/licenses/LICENSE +0 -0
  53. {moleditpy-1.17.0.dist-info → moleditpy-1.18.0.dist-info}/top_level.txt +0 -0
moleditpy/__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
 
moleditpy/__main__.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
 
moleditpy/main.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
 
@@ -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
 
@@ -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 (
@@ -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
@@ -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
- line1 = line.translated(offset)
221
- line2 = line.translated(-offset)
222
- painter.drawLine(line1)
223
- painter.drawLine(line2)
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 (
@@ -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.17.0'
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 (
@@ -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
 
@@ -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
 
@@ -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
  """
@@ -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
 
@@ -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
  """
@@ -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
  """
@@ -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
 
@@ -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
  """
@@ -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
  """
@@ -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
  """