rdworks 0.49.1__tar.gz → 0.50.1__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 (83) hide show
  1. {rdworks-0.49.1 → rdworks-0.50.1}/PKG-INFO +1 -1
  2. {rdworks-0.49.1 → rdworks-0.50.1}/src/rdworks/__init__.py +1 -1
  3. {rdworks-0.49.1 → rdworks-0.50.1}/src/rdworks/xtb/wrapper.py +44 -7
  4. {rdworks-0.49.1 → rdworks-0.50.1}/src/rdworks.egg-info/PKG-INFO +1 -1
  5. {rdworks-0.49.1 → rdworks-0.50.1}/tests/test_xtb.py +7 -7
  6. {rdworks-0.49.1 → rdworks-0.50.1}/LICENSE +0 -0
  7. {rdworks-0.49.1 → rdworks-0.50.1}/README.md +0 -0
  8. {rdworks-0.49.1 → rdworks-0.50.1}/pyproject.toml +0 -0
  9. {rdworks-0.49.1 → rdworks-0.50.1}/setup.cfg +0 -0
  10. {rdworks-0.49.1 → rdworks-0.50.1}/src/rdworks/autograph/__init__.py +0 -0
  11. {rdworks-0.49.1 → rdworks-0.50.1}/src/rdworks/autograph/autograph.py +0 -0
  12. {rdworks-0.49.1 → rdworks-0.50.1}/src/rdworks/autograph/centroid.py +0 -0
  13. {rdworks-0.49.1 → rdworks-0.50.1}/src/rdworks/autograph/dynamictreecut.py +0 -0
  14. {rdworks-0.49.1 → rdworks-0.50.1}/src/rdworks/autograph/nmrclust.py +0 -0
  15. {rdworks-0.49.1 → rdworks-0.50.1}/src/rdworks/autograph/rckmeans.py +0 -0
  16. {rdworks-0.49.1 → rdworks-0.50.1}/src/rdworks/bitqt/__init__.py +0 -0
  17. {rdworks-0.49.1 → rdworks-0.50.1}/src/rdworks/bitqt/bitqt.py +0 -0
  18. {rdworks-0.49.1 → rdworks-0.50.1}/src/rdworks/conf.py +0 -0
  19. {rdworks-0.49.1 → rdworks-0.50.1}/src/rdworks/descriptor.py +0 -0
  20. {rdworks-0.49.1 → rdworks-0.50.1}/src/rdworks/display.py +0 -0
  21. {rdworks-0.49.1 → rdworks-0.50.1}/src/rdworks/ionized.py +0 -0
  22. {rdworks-0.49.1 → rdworks-0.50.1}/src/rdworks/matchedseries.py +0 -0
  23. {rdworks-0.49.1 → rdworks-0.50.1}/src/rdworks/mol.py +0 -0
  24. {rdworks-0.49.1 → rdworks-0.50.1}/src/rdworks/mollibr.py +0 -0
  25. {rdworks-0.49.1 → rdworks-0.50.1}/src/rdworks/pka.py +0 -0
  26. {rdworks-0.49.1 → rdworks-0.50.1}/src/rdworks/predefined/Asinex_fragment.xml +0 -0
  27. {rdworks-0.49.1 → rdworks-0.50.1}/src/rdworks/predefined/Astex_RO3.xml +0 -0
  28. {rdworks-0.49.1 → rdworks-0.50.1}/src/rdworks/predefined/Baell2010_PAINS/Baell2010A.xml +0 -0
  29. {rdworks-0.49.1 → rdworks-0.50.1}/src/rdworks/predefined/Baell2010_PAINS/Baell2010B.xml +0 -0
  30. {rdworks-0.49.1 → rdworks-0.50.1}/src/rdworks/predefined/Baell2010_PAINS/Baell2010C.xml +0 -0
  31. {rdworks-0.49.1 → rdworks-0.50.1}/src/rdworks/predefined/Baell2010_PAINS/PAINS-less-than-015-hits.xml +0 -0
  32. {rdworks-0.49.1 → rdworks-0.50.1}/src/rdworks/predefined/Baell2010_PAINS/PAINS-less-than-150-hits.xml +0 -0
  33. {rdworks-0.49.1 → rdworks-0.50.1}/src/rdworks/predefined/Baell2010_PAINS/PAINS-more-than-150-hits.xml +0 -0
  34. {rdworks-0.49.1 → rdworks-0.50.1}/src/rdworks/predefined/Baell2010_PAINS/makexml.py +0 -0
  35. {rdworks-0.49.1 → rdworks-0.50.1}/src/rdworks/predefined/Brenk2008_Dundee/makexml.py +0 -0
  36. {rdworks-0.49.1 → rdworks-0.50.1}/src/rdworks/predefined/CNS.xml +0 -0
  37. {rdworks-0.49.1 → rdworks-0.50.1}/src/rdworks/predefined/ChEMBL_Walters/BMS.xml +0 -0
  38. {rdworks-0.49.1 → rdworks-0.50.1}/src/rdworks/predefined/ChEMBL_Walters/Dundee.xml +0 -0
  39. {rdworks-0.49.1 → rdworks-0.50.1}/src/rdworks/predefined/ChEMBL_Walters/Glaxo.xml +0 -0
  40. {rdworks-0.49.1 → rdworks-0.50.1}/src/rdworks/predefined/ChEMBL_Walters/Inpharmatica.xml +0 -0
  41. {rdworks-0.49.1 → rdworks-0.50.1}/src/rdworks/predefined/ChEMBL_Walters/LINT.xml +0 -0
  42. {rdworks-0.49.1 → rdworks-0.50.1}/src/rdworks/predefined/ChEMBL_Walters/MLSMR.xml +0 -0
  43. {rdworks-0.49.1 → rdworks-0.50.1}/src/rdworks/predefined/ChEMBL_Walters/PAINS.xml +0 -0
  44. {rdworks-0.49.1 → rdworks-0.50.1}/src/rdworks/predefined/ChEMBL_Walters/SureChEMBL.xml +0 -0
  45. {rdworks-0.49.1 → rdworks-0.50.1}/src/rdworks/predefined/ChEMBL_Walters/makexml.py +0 -0
  46. {rdworks-0.49.1 → rdworks-0.50.1}/src/rdworks/predefined/Hann1999_Glaxo/Hann1999.xml +0 -0
  47. {rdworks-0.49.1 → rdworks-0.50.1}/src/rdworks/predefined/Hann1999_Glaxo/Hann1999Acid.xml +0 -0
  48. {rdworks-0.49.1 → rdworks-0.50.1}/src/rdworks/predefined/Hann1999_Glaxo/Hann1999Base.xml +0 -0
  49. {rdworks-0.49.1 → rdworks-0.50.1}/src/rdworks/predefined/Hann1999_Glaxo/Hann1999ElPh.xml +0 -0
  50. {rdworks-0.49.1 → rdworks-0.50.1}/src/rdworks/predefined/Hann1999_Glaxo/Hann1999NuPh.xml +0 -0
  51. {rdworks-0.49.1 → rdworks-0.50.1}/src/rdworks/predefined/Hann1999_Glaxo/makexml.py +0 -0
  52. {rdworks-0.49.1 → rdworks-0.50.1}/src/rdworks/predefined/Kazius2005/Kazius2005.xml +0 -0
  53. {rdworks-0.49.1 → rdworks-0.50.1}/src/rdworks/predefined/Kazius2005/makexml.py +0 -0
  54. {rdworks-0.49.1 → rdworks-0.50.1}/src/rdworks/predefined/ZINC_druglike.xml +0 -0
  55. {rdworks-0.49.1 → rdworks-0.50.1}/src/rdworks/predefined/ZINC_fragment.xml +0 -0
  56. {rdworks-0.49.1 → rdworks-0.50.1}/src/rdworks/predefined/ZINC_leadlike.xml +0 -0
  57. {rdworks-0.49.1 → rdworks-0.50.1}/src/rdworks/predefined/fragment.xml +0 -0
  58. {rdworks-0.49.1 → rdworks-0.50.1}/src/rdworks/predefined/ionized/simple_smarts_pattern.csv +0 -0
  59. {rdworks-0.49.1 → rdworks-0.50.1}/src/rdworks/predefined/ionized/smarts_pattern.csv +0 -0
  60. {rdworks-0.49.1 → rdworks-0.50.1}/src/rdworks/predefined/misc/makexml.py +0 -0
  61. {rdworks-0.49.1 → rdworks-0.50.1}/src/rdworks/predefined/misc/reactive-part-2.xml +0 -0
  62. {rdworks-0.49.1 → rdworks-0.50.1}/src/rdworks/predefined/misc/reactive-part-3.xml +0 -0
  63. {rdworks-0.49.1 → rdworks-0.50.1}/src/rdworks/predefined/misc/reactive.xml +0 -0
  64. {rdworks-0.49.1 → rdworks-0.50.1}/src/rdworks/readin.py +0 -0
  65. {rdworks-0.49.1 → rdworks-0.50.1}/src/rdworks/rgroup.py +0 -0
  66. {rdworks-0.49.1 → rdworks-0.50.1}/src/rdworks/scaffold.py +0 -0
  67. {rdworks-0.49.1 → rdworks-0.50.1}/src/rdworks/std.py +0 -0
  68. {rdworks-0.49.1 → rdworks-0.50.1}/src/rdworks/stereoisomers.py +0 -0
  69. {rdworks-0.49.1 → rdworks-0.50.1}/src/rdworks/tautomers.py +0 -0
  70. {rdworks-0.49.1 → rdworks-0.50.1}/src/rdworks/testdata.py +0 -0
  71. {rdworks-0.49.1 → rdworks-0.50.1}/src/rdworks/torsion.py +0 -0
  72. {rdworks-0.49.1 → rdworks-0.50.1}/src/rdworks/units.py +0 -0
  73. {rdworks-0.49.1 → rdworks-0.50.1}/src/rdworks/utils.py +0 -0
  74. {rdworks-0.49.1 → rdworks-0.50.1}/src/rdworks/xml.py +0 -0
  75. {rdworks-0.49.1 → rdworks-0.50.1}/src/rdworks/xtb/__init__.py +0 -0
  76. {rdworks-0.49.1 → rdworks-0.50.1}/src/rdworks.egg-info/SOURCES.txt +0 -0
  77. {rdworks-0.49.1 → rdworks-0.50.1}/src/rdworks.egg-info/dependency_links.txt +0 -0
  78. {rdworks-0.49.1 → rdworks-0.50.1}/src/rdworks.egg-info/requires.txt +0 -0
  79. {rdworks-0.49.1 → rdworks-0.50.1}/src/rdworks.egg-info/top_level.txt +0 -0
  80. {rdworks-0.49.1 → rdworks-0.50.1}/tests/test_basics.py +0 -0
  81. {rdworks-0.49.1 → rdworks-0.50.1}/tests/test_ionized.py +0 -0
  82. {rdworks-0.49.1 → rdworks-0.50.1}/tests/test_round.py +0 -0
  83. {rdworks-0.49.1 → rdworks-0.50.1}/tests/test_torsion.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: rdworks
3
- Version: 0.49.1
3
+ Version: 0.50.1
4
4
  Summary: Routine tasks built on RDKit and other tools
5
5
  Author-email: Sung-Hun Bae <sunghun.bae@gmail.com>
6
6
  Maintainer-email: Sung-Hun Bae <sunghun.bae@gmail.com>
@@ -1,4 +1,4 @@
1
- __version__ = '0.49.1'
1
+ __version__ = '0.50.1'
2
2
 
3
3
  from rdworks.conf import Conf
4
4
  from rdworks.mol import Mol
@@ -59,6 +59,43 @@ class GFN2xTB:
59
59
  return shutil.which('xtb') is not None
60
60
 
61
61
 
62
+ @staticmethod
63
+ def is_optimize_ready() -> bool:
64
+ try:
65
+ h2o = [
66
+ '$coord',
67
+ ' 0.00000000000000 0.00000000000000 -0.73578586109551 o',
68
+ ' 1.44183152868459 0.00000000000000 0.36789293054775 h',
69
+ '-1.44183152868459 0.00000000000000 0.36789293054775 h',
70
+ '$end',
71
+ ]
72
+
73
+ with tempfile.TemporaryDirectory() as temp_dir:
74
+ test_geometry = os.path.join(temp_dir, 'coord')
75
+ with open(test_geometry, 'w') as f:
76
+ f.write('\n'.join(h2o))
77
+ proc = subprocess.run(['xtb', test_geometry, '--opt'],
78
+ capture_output=True,
79
+ text=True)
80
+ assert proc.returncode == 0
81
+
82
+ return True
83
+
84
+ except:
85
+ print("""
86
+ Conda installed xTB has the Fortran runtime error in geometry optimization.
87
+ Please install xtb using the compiled binary:
88
+
89
+ $ wget https://github.com/grimme-lab/xtb/releases/download/v6.7.1/xtb-6.7.1-linux-x86_64.tar.xz
90
+ $ tar -xf xtb-6.7.1-linux-x86_64.tar.xz
91
+ $ cp -r xtb-dist/bin/* /usr/local/bin/
92
+ $ cp -r xtb-dist/lib/* /usr/local/lib/
93
+ $ cp -r xtb-dist/include/* /usr/local/include/
94
+ $ cp -r xtb-dist/share /usr/local/ """)
95
+
96
+ return False
97
+
98
+
62
99
  @staticmethod
63
100
  def is_cpx_ready() -> bool:
64
101
  """Checks if the CPCM-X command-line tool, `cpx`, is accessible in the system.
@@ -70,7 +107,7 @@ class GFN2xTB:
70
107
 
71
108
 
72
109
  @staticmethod
73
- def is_cpcmx_option_ready() -> bool:
110
+ def is_cpcmx_ready() -> bool:
74
111
  """Checks if xtb works with the `--cpcmx` option.
75
112
 
76
113
  xtb distributed by the conda does not include CPCM-X function (as of June 17, 2025).
@@ -101,7 +138,8 @@ class GFN2xTB:
101
138
  """
102
139
  return all([GFN2xTB.is_xtb_ready(),
103
140
  GFN2xTB.is_cpx_ready(),
104
- GFN2xTB.is_cpcmx_option_ready()])
141
+ GFN2xTB.is_cpcmx_ready(),
142
+ GFN2xTB.is_optimize_ready()])
105
143
 
106
144
 
107
145
  @staticmethod
@@ -115,10 +153,9 @@ class GFN2xTB:
115
153
  cmd = ['xtb', '--version']
116
154
  proc = subprocess.run(cmd, capture_output=True, text=True)
117
155
  assert proc.returncode == 0, "GFN2xTB() Error: xtb not available"
118
- for line in proc.stdout.split('\n'):
119
- line = line.strip()
120
- if 'version' in line:
121
- return line
156
+ match = re.search('xtb\s+version\s+(?P<version>[\d.]+)', proc.stdout)
157
+ if match:
158
+ return match.group('version')
122
159
 
123
160
  return None
124
161
 
@@ -362,7 +399,7 @@ class GFN2xTB:
362
399
  elif water == 'alpb':
363
400
  options += ['--alpb', 'water']
364
401
  # it does not provide Gsolv contribution to the total energy
365
- elif water == 'cpcmx' and self.is_cpcmx_option_ready():
402
+ elif water == 'cpcmx' and self.is_cpcmx_ready():
366
403
  options += ['--cpcmx', 'water']
367
404
 
368
405
  if verbose:
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: rdworks
3
- Version: 0.49.1
3
+ Version: 0.50.1
4
4
  Summary: Routine tasks built on RDKit and other tools
5
5
  Author-email: Sung-Hun Bae <sunghun.bae@gmail.com>
6
6
  Maintainer-email: Sung-Hun Bae <sunghun.bae@gmail.com>
@@ -27,7 +27,7 @@ def test_xtb_wrapper():
27
27
  from rdworks.xtb.wrapper import GFN2xTB
28
28
  assert GFN2xTB.is_xtb_ready() == True
29
29
  assert GFN2xTB.is_cpx_ready() == True
30
- assert GFN2xTB.is_cpcmx_option_ready() == True
30
+ assert GFN2xTB.is_cpcmx_ready() == True
31
31
  assert GFN2xTB.is_ready() == True
32
32
  assert GFN2xTB.version() is not None
33
33
 
@@ -38,7 +38,7 @@ def test_singlepoint():
38
38
  print("number of conformers=", mol.count())
39
39
  print("number of atoms=", mol.confs[0].natoms)
40
40
 
41
- gfn2xtb = GFN2xTB(mol.confs[0].rdmol, ncores=8)
41
+ gfn2xtb = GFN2xTB(mol.confs[0].rdmol)
42
42
 
43
43
  print("GFN2xTB.singlepoint()")
44
44
  outdict = gfn2xtb.singlepoint()
@@ -65,7 +65,7 @@ def test_optimize():
65
65
  mol = testmol.copy()
66
66
  print("number of conformers=", mol.count())
67
67
  print("GFN2xTB.optimize()")
68
- outdict = GFN2xTB(mol.confs[0].rdmol, ncores=8).optimize(verbose=True)
68
+ outdict = GFN2xTB(mol.confs[0].rdmol).optimize(verbose=True)
69
69
  print(outdict)
70
70
  print()
71
71
 
@@ -92,7 +92,7 @@ def test_state_generate():
92
92
  mol = mol.optimize_confs(calculator='MMFF94', verbose=True)
93
93
  mol = mol.drop_confs(similar=True, similar_rmsd=0.3, verbose=True)
94
94
  mol = mol.sort_confs(calculator='xTB', verbose=True)
95
- mol = mol.drop_confs(k=10, window=10.0, verbose=True) # enforcing both conditions
95
+ mol = mol.drop_confs(k=10, window=15.0, verbose=True) # enforcing both conditions
96
96
  _PE = []
97
97
  for conf in mol.confs:
98
98
  conf = conf.optimize(calculator='xTB', verbose=True)
@@ -154,7 +154,7 @@ def test_state_generate():
154
154
 
155
155
 
156
156
  if __name__ == '__main__':
157
- # test_xtb_wrapper()
158
- # test_singlepoint()
159
- # test_optimize()
157
+ test_xtb_wrapper()
158
+ test_singlepoint()
159
+ test_optimize()
160
160
  test_state_generate()
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes