rdworks 0.39.1__tar.gz → 0.40.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 (85) hide show
  1. {rdworks-0.39.1 → rdworks-0.40.1}/PKG-INFO +1 -1
  2. {rdworks-0.39.1 → rdworks-0.40.1}/src/rdworks/__init__.py +1 -1
  3. {rdworks-0.39.1 → rdworks-0.40.1}/src/rdworks/conf.py +14 -5
  4. {rdworks-0.39.1 → rdworks-0.40.1}/src/rdworks/mol.py +9 -3
  5. rdworks-0.40.1/src/rdworks/testdata.py +24 -0
  6. {rdworks-0.39.1 → rdworks-0.40.1}/src/rdworks/utils.py +29 -0
  7. {rdworks-0.39.1 → rdworks-0.40.1}/src/rdworks.egg-info/PKG-INFO +1 -1
  8. {rdworks-0.39.1 → rdworks-0.40.1}/src/rdworks.egg-info/SOURCES.txt +1 -0
  9. {rdworks-0.39.1 → rdworks-0.40.1}/tests/test_basics.py +4 -0
  10. {rdworks-0.39.1 → rdworks-0.40.1}/LICENSE +0 -0
  11. {rdworks-0.39.1 → rdworks-0.40.1}/README.md +0 -0
  12. {rdworks-0.39.1 → rdworks-0.40.1}/pyproject.toml +0 -0
  13. {rdworks-0.39.1 → rdworks-0.40.1}/setup.cfg +0 -0
  14. {rdworks-0.39.1 → rdworks-0.40.1}/src/rdworks/autograph/__init__.py +0 -0
  15. {rdworks-0.39.1 → rdworks-0.40.1}/src/rdworks/autograph/autograph.py +0 -0
  16. {rdworks-0.39.1 → rdworks-0.40.1}/src/rdworks/autograph/centroid.py +0 -0
  17. {rdworks-0.39.1 → rdworks-0.40.1}/src/rdworks/autograph/dynamictreecut.py +0 -0
  18. {rdworks-0.39.1 → rdworks-0.40.1}/src/rdworks/autograph/nmrclust.py +0 -0
  19. {rdworks-0.39.1 → rdworks-0.40.1}/src/rdworks/autograph/rckmeans.py +0 -0
  20. {rdworks-0.39.1 → rdworks-0.40.1}/src/rdworks/bitqt/__init__.py +0 -0
  21. {rdworks-0.39.1 → rdworks-0.40.1}/src/rdworks/bitqt/bitqt.py +0 -0
  22. {rdworks-0.39.1 → rdworks-0.40.1}/src/rdworks/descriptor.py +0 -0
  23. {rdworks-0.39.1 → rdworks-0.40.1}/src/rdworks/display.py +0 -0
  24. {rdworks-0.39.1 → rdworks-0.40.1}/src/rdworks/ionized.py +0 -0
  25. {rdworks-0.39.1 → rdworks-0.40.1}/src/rdworks/matchedseries.py +0 -0
  26. {rdworks-0.39.1 → rdworks-0.40.1}/src/rdworks/mollibr.py +0 -0
  27. {rdworks-0.39.1 → rdworks-0.40.1}/src/rdworks/pka.py +0 -0
  28. {rdworks-0.39.1 → rdworks-0.40.1}/src/rdworks/predefined/Asinex_fragment.xml +0 -0
  29. {rdworks-0.39.1 → rdworks-0.40.1}/src/rdworks/predefined/Astex_RO3.xml +0 -0
  30. {rdworks-0.39.1 → rdworks-0.40.1}/src/rdworks/predefined/Baell2010_PAINS/Baell2010A.xml +0 -0
  31. {rdworks-0.39.1 → rdworks-0.40.1}/src/rdworks/predefined/Baell2010_PAINS/Baell2010B.xml +0 -0
  32. {rdworks-0.39.1 → rdworks-0.40.1}/src/rdworks/predefined/Baell2010_PAINS/Baell2010C.xml +0 -0
  33. {rdworks-0.39.1 → rdworks-0.40.1}/src/rdworks/predefined/Baell2010_PAINS/PAINS-less-than-015-hits.xml +0 -0
  34. {rdworks-0.39.1 → rdworks-0.40.1}/src/rdworks/predefined/Baell2010_PAINS/PAINS-less-than-150-hits.xml +0 -0
  35. {rdworks-0.39.1 → rdworks-0.40.1}/src/rdworks/predefined/Baell2010_PAINS/PAINS-more-than-150-hits.xml +0 -0
  36. {rdworks-0.39.1 → rdworks-0.40.1}/src/rdworks/predefined/Baell2010_PAINS/makexml.py +0 -0
  37. {rdworks-0.39.1 → rdworks-0.40.1}/src/rdworks/predefined/Brenk2008_Dundee/makexml.py +0 -0
  38. {rdworks-0.39.1 → rdworks-0.40.1}/src/rdworks/predefined/CNS.xml +0 -0
  39. {rdworks-0.39.1 → rdworks-0.40.1}/src/rdworks/predefined/ChEMBL_Walters/BMS.xml +0 -0
  40. {rdworks-0.39.1 → rdworks-0.40.1}/src/rdworks/predefined/ChEMBL_Walters/Dundee.xml +0 -0
  41. {rdworks-0.39.1 → rdworks-0.40.1}/src/rdworks/predefined/ChEMBL_Walters/Glaxo.xml +0 -0
  42. {rdworks-0.39.1 → rdworks-0.40.1}/src/rdworks/predefined/ChEMBL_Walters/Inpharmatica.xml +0 -0
  43. {rdworks-0.39.1 → rdworks-0.40.1}/src/rdworks/predefined/ChEMBL_Walters/LINT.xml +0 -0
  44. {rdworks-0.39.1 → rdworks-0.40.1}/src/rdworks/predefined/ChEMBL_Walters/MLSMR.xml +0 -0
  45. {rdworks-0.39.1 → rdworks-0.40.1}/src/rdworks/predefined/ChEMBL_Walters/PAINS.xml +0 -0
  46. {rdworks-0.39.1 → rdworks-0.40.1}/src/rdworks/predefined/ChEMBL_Walters/SureChEMBL.xml +0 -0
  47. {rdworks-0.39.1 → rdworks-0.40.1}/src/rdworks/predefined/ChEMBL_Walters/makexml.py +0 -0
  48. {rdworks-0.39.1 → rdworks-0.40.1}/src/rdworks/predefined/Hann1999_Glaxo/Hann1999.xml +0 -0
  49. {rdworks-0.39.1 → rdworks-0.40.1}/src/rdworks/predefined/Hann1999_Glaxo/Hann1999Acid.xml +0 -0
  50. {rdworks-0.39.1 → rdworks-0.40.1}/src/rdworks/predefined/Hann1999_Glaxo/Hann1999Base.xml +0 -0
  51. {rdworks-0.39.1 → rdworks-0.40.1}/src/rdworks/predefined/Hann1999_Glaxo/Hann1999ElPh.xml +0 -0
  52. {rdworks-0.39.1 → rdworks-0.40.1}/src/rdworks/predefined/Hann1999_Glaxo/Hann1999NuPh.xml +0 -0
  53. {rdworks-0.39.1 → rdworks-0.40.1}/src/rdworks/predefined/Hann1999_Glaxo/makexml.py +0 -0
  54. {rdworks-0.39.1 → rdworks-0.40.1}/src/rdworks/predefined/Kazius2005/Kazius2005.xml +0 -0
  55. {rdworks-0.39.1 → rdworks-0.40.1}/src/rdworks/predefined/Kazius2005/makexml.py +0 -0
  56. {rdworks-0.39.1 → rdworks-0.40.1}/src/rdworks/predefined/ZINC_druglike.xml +0 -0
  57. {rdworks-0.39.1 → rdworks-0.40.1}/src/rdworks/predefined/ZINC_fragment.xml +0 -0
  58. {rdworks-0.39.1 → rdworks-0.40.1}/src/rdworks/predefined/ZINC_leadlike.xml +0 -0
  59. {rdworks-0.39.1 → rdworks-0.40.1}/src/rdworks/predefined/fragment.xml +0 -0
  60. {rdworks-0.39.1 → rdworks-0.40.1}/src/rdworks/predefined/ionized/simple_smarts_pattern.csv +0 -0
  61. {rdworks-0.39.1 → rdworks-0.40.1}/src/rdworks/predefined/ionized/smarts_pattern.csv +0 -0
  62. {rdworks-0.39.1 → rdworks-0.40.1}/src/rdworks/predefined/misc/makexml.py +0 -0
  63. {rdworks-0.39.1 → rdworks-0.40.1}/src/rdworks/predefined/misc/reactive-part-2.xml +0 -0
  64. {rdworks-0.39.1 → rdworks-0.40.1}/src/rdworks/predefined/misc/reactive-part-3.xml +0 -0
  65. {rdworks-0.39.1 → rdworks-0.40.1}/src/rdworks/predefined/misc/reactive.xml +0 -0
  66. {rdworks-0.39.1 → rdworks-0.40.1}/src/rdworks/readin.py +0 -0
  67. {rdworks-0.39.1 → rdworks-0.40.1}/src/rdworks/rgroup.py +0 -0
  68. {rdworks-0.39.1 → rdworks-0.40.1}/src/rdworks/scaffold.py +0 -0
  69. {rdworks-0.39.1 → rdworks-0.40.1}/src/rdworks/std.py +0 -0
  70. {rdworks-0.39.1 → rdworks-0.40.1}/src/rdworks/stereoisomers.py +0 -0
  71. {rdworks-0.39.1 → rdworks-0.40.1}/src/rdworks/tautomers.py +0 -0
  72. {rdworks-0.39.1 → rdworks-0.40.1}/src/rdworks/torsion.py +0 -0
  73. {rdworks-0.39.1 → rdworks-0.40.1}/src/rdworks/units.py +0 -0
  74. {rdworks-0.39.1 → rdworks-0.40.1}/src/rdworks/xml.py +0 -0
  75. {rdworks-0.39.1 → rdworks-0.40.1}/src/rdworks/xtb/__init__.py +0 -0
  76. {rdworks-0.39.1 → rdworks-0.40.1}/src/rdworks/xtb/wrapper.py +0 -0
  77. {rdworks-0.39.1 → rdworks-0.40.1}/src/rdworks.egg-info/dependency_links.txt +0 -0
  78. {rdworks-0.39.1 → rdworks-0.40.1}/src/rdworks.egg-info/requires.txt +0 -0
  79. {rdworks-0.39.1 → rdworks-0.40.1}/src/rdworks.egg-info/top_level.txt +0 -0
  80. {rdworks-0.39.1 → rdworks-0.40.1}/tests/test_decimals.py +0 -0
  81. {rdworks-0.39.1 → rdworks-0.40.1}/tests/test_gypsumdl.py +0 -0
  82. {rdworks-0.39.1 → rdworks-0.40.1}/tests/test_iupac_name.py +0 -0
  83. {rdworks-0.39.1 → rdworks-0.40.1}/tests/test_nn_xtb.py +0 -0
  84. {rdworks-0.39.1 → rdworks-0.40.1}/tests/test_web.py +0 -0
  85. {rdworks-0.39.1 → rdworks-0.40.1}/tests/test_xtb_wrapper.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: rdworks
3
- Version: 0.39.1
3
+ Version: 0.40.1
4
4
  Summary: Frequently used 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.39.1'
1
+ __version__ = '0.40.1'
2
2
 
3
3
  from rdworks.conf import Conf
4
4
  from rdworks.mol import Mol
@@ -19,7 +19,7 @@ from PIL import Image
19
19
  from rdworks.std import clean_2d
20
20
  from rdworks.torsion import get_torsion_atoms, create_torsion_fragment
21
21
  from rdworks.units import ev2kcalpermol, pm2angstrom
22
- from rdworks.utils import recursive_round
22
+ from rdworks.utils import recursive_round, compress_string, decompress_string
23
23
  from rdworks.xtb.wrapper import GFN2xTB
24
24
  from rdworks.display import render_png, render_svg
25
25
 
@@ -581,7 +581,7 @@ class Conf:
581
581
  return json.dumps(self.props)
582
582
 
583
583
 
584
- def serialize(self, decimals: int = 3) -> str:
584
+ def serialize(self, decimals: int = 3, compressed: bool = False) -> str:
585
585
  """Serialize information necessary to rebuild a Conf object.
586
586
  Args:
587
587
  decimals (int, optional): number of decimal places for float data type. Defaults to 3.
@@ -598,10 +598,13 @@ class Conf:
598
598
  'molblock' : self.to_molblock(),
599
599
  })
600
600
 
601
+ if compressed:
602
+ serialized = compress_string(serialized)
603
+
601
604
  return serialized
602
605
 
603
606
 
604
- def deserialize(self, serialized: str) -> Self:
607
+ def deserialize(self, serialized: str, compressed: bool = False) -> Self:
605
608
  """De-serialize information and rebuild a Conf object.
606
609
 
607
610
  Example:
@@ -614,6 +617,9 @@ class Conf:
614
617
  Returns:
615
618
  Self: modified self.
616
619
  """
620
+ if compressed:
621
+ serialized = decompress_string(serialized)
622
+
617
623
  data = json.loads(serialized)
618
624
 
619
625
  self.name = data['name']
@@ -626,9 +632,12 @@ class Conf:
626
632
  return self
627
633
 
628
634
 
629
- def to_molblock(self) -> str:
635
+ def to_molblock(self, compressed: bool = False) -> str:
630
636
  """Returns MolBlock"""
631
- return Chem.MolToMolBlock(self.rdmol)
637
+ molblock = Chem.MolToMolBlock(self.rdmol)
638
+ if compressed:
639
+ molblock = compress_string(molblock)
640
+ return molblock
632
641
 
633
642
 
634
643
  def to_xyz(self) -> str:
@@ -37,7 +37,7 @@ from rdworks.std import generate_inchi_key, desalt_smiles, standardize, clean_2d
37
37
  from rdworks.xml import list_predefined_xml, get_predefined_xml, parse_xml
38
38
  from rdworks.scaffold import rigid_fragment_indices
39
39
  from rdworks.descriptor import rd_descriptor, rd_descriptor_f
40
- from rdworks.utils import convert_tril_to_symm, QT, recursive_round
40
+ from rdworks.utils import convert_tril_to_symm, QT, recursive_round, compress_string, decompress_string
41
41
  from rdworks.units import ev2kcalpermol
42
42
  from rdworks.autograph import NMRCLUST, DynamicTreeCut, RCKmeans, AutoGraph
43
43
  from rdworks.bitqt import BitQT
@@ -1558,7 +1558,7 @@ class Mol:
1558
1558
  return json.dumps(props)
1559
1559
 
1560
1560
 
1561
- def serialize(self, decimals: int = 2) -> str:
1561
+ def serialize(self, decimals: int = 2, compressed: bool = False) -> str:
1562
1562
  """Serialize information necessary to rebuild a Mol object.
1563
1563
 
1564
1564
  Args:
@@ -1575,10 +1575,13 @@ class Mol:
1575
1575
  'confs' : [conf.serialize() for conf in self.confs],
1576
1576
  })
1577
1577
 
1578
+ if compressed:
1579
+ serialized = compress_string(serialized)
1580
+
1578
1581
  return serialized
1579
1582
 
1580
1583
 
1581
- def deserialize(self, serialized: str) -> Self:
1584
+ def deserialize(self, serialized: str, compressed: bool = False) -> Self:
1582
1585
  """De-serialize the information and build a new Mol object.
1583
1586
 
1584
1587
  Example:
@@ -1591,6 +1594,9 @@ class Mol:
1591
1594
  Returns:
1592
1595
  Self: modified self.
1593
1596
  """
1597
+ if compressed:
1598
+ serialized = decompress_string(serialized)
1599
+
1594
1600
  data = json.loads(serialized)
1595
1601
 
1596
1602
  self.name = data['name']
@@ -0,0 +1,24 @@
1
+ drugs = {
2
+ 'Acetaminophen': 'CC(=O)Nc1ccc(O)cc1',
3
+ 'Aspirin': 'CC(=O)OC1=CC=CC=C1C(=O)O',
4
+ 'Atorvastatin': 'CC(C)C1=C(C(=C(N1CC[C@H](C[C@H](CC(=O)O)O)O)C2=CC=C(C=C2)F)C3=CC=CC=C3)C(=O)NC4=CC=CC=C4',
5
+ 'Atovaquone': 'C1CC(CCC1C2=CC=C(C=C2)Cl)C3=C(C4=CC=CC=C4C(=O)C3=O)O',
6
+ 'Cefdinir': 'C=CC1=C(N2[C@@H]([C@@H](C2=O)NC(=O)/C(=N\\O)/C3=CSC(=N3)N)SC1)C(=O)O',
7
+ 'Chlorprothixene': 'CN(CC/C=C1C2=CC=CC=C2SC3=C/1C=C(Cl)C=C3)C',
8
+ 'Cimetidine': 'CC1=C(N=CN1)CSCCNC(=NC)NC#N',
9
+ 'Clomipramine': 'CN(C)CCCN1C2=CC=CC=C2CCC3=C1C=C(C=C3)Cl',
10
+ 'Ethopropazine': 'CCN(CC)C(C)CN1C2=CC=CC=C2SC3=CC=CC=C31',
11
+ 'Famotidine': 'C1=C(N=C(S1)N=C(N)N)CSCC/C(=N/S(=O)(=O)N)/N',
12
+ 'Fluconazole': 'C1=CC(=C(C=C1F)F)C(CN2C=NC=N2)(CN3C=NC=N3)O',
13
+ 'Granisetron': 'CN1[C@@H]2CCC[C@H]1CC(C2)NC(=O)C3=NN(C4=CC=CC=C43)C',
14
+ 'Leflunomide': 'CC1=C(C=NO1)C(=O)NC2=CC=C(C=C2)C(F)(F)F',
15
+ 'Linezolid': 'CC(=O)NC[C@H]1CN(C(=O)O1)C2=CC(=C(C=C2)N3CCOCC3)F',
16
+ 'Methixene': 'CN1CCCC(C1)CC2C3=CC=CC=C3SC4=CC=CC=C24',
17
+ 'Molindone': 'CCC1=C(NC2=C1C(=O)C(CC2)CN3CCOCC3)C',
18
+ 'Paroxetine': 'C1CNC[C@H]([C@@H]1C2=CC=C(C=C2)F)COC3=CC4=C(C=C3)OCO4',
19
+ 'Pergolide': 'CCCN1C[C@@H](C[C@H]2[C@H]1CC3=CNC4=CC=CC2=C34)CSC',
20
+ 'Rifampin': 'C[C@H]1/C=C/C=C(\\C(=O)NC2=C(C(=C3C(=C2O)C(=C(C4=C3C(=O)[C@](O4)(O/C=C/[C@@H]([C@H]([C@H]([C@@H]([C@@H]([C@@H]([C@H]1O)C)O)C)OC(=O)C)C)OC)C)C)O)O)/C=N/N5CCN(CC5)C)/C',
21
+ 'Simvastatin': 'O=C(O[C@@H]1[C@H]3C(=C/[C@H](C)C1)\\C=C/[C@@H]([C@@H]3CC[C@H]2OC(=O)C[C@H](O)C2)C)C(C)(C)CC',
22
+ 'Sitagliptin': 'Fc1cc(c(F)cc1F)C[C@@H](N)CC(=O)N3Cc2nnc(n2CC3)C(F)(F)F',
23
+ 'Sofosbuvir': 'C[C@@H](C(OC(C)C)=O)N[P@](OC[C@@H]1[C@H]([C@@](F)([C@@H](O1)N2C=CC(NC2=O)=O)C)O)(OC3=CC=CC=C3)=O',
24
+ }
@@ -1,6 +1,8 @@
1
1
  import numpy as np
2
2
  import math
3
3
  import operator
4
+ import gzip
5
+ import base64
4
6
 
5
7
  from pathlib import Path
6
8
  from types import SimpleNamespace
@@ -14,6 +16,33 @@ from rdkit import Chem
14
16
  from rdworks.autograph.centroid import centroid_medoid
15
17
 
16
18
 
19
+ def compress_string(text: str) -> str:
20
+ """compress string to base64-encoded string.
21
+
22
+ Args:
23
+ text (str): original string.
24
+
25
+ Returns:
26
+ str: base64-encoded compressed string.
27
+ """
28
+ compressed_bytes = gzip.compress(text.encode('utf-8'))
29
+ return base64.b64encode(compressed_bytes).decode('utf-8')
30
+
31
+
32
+ def decompress_string(compressed_text: str) -> str:
33
+ """decompress base64-encoded string to original string.
34
+
35
+ Args:
36
+ compressed_text (str): base64-encoded compressed string.
37
+
38
+ Returns:
39
+ str: original string.
40
+ """
41
+ compressed_bytes = base64.b64decode(compressed_text)
42
+ decompressed_text = gzip.decompress(compressed_bytes).decode('utf-8')
43
+ return decompressed_text
44
+
45
+
17
46
  def compute(fn:Callable, largs: list, **kwargs) -> list:
18
47
  max_workers = kwargs.get('max_workers', 1)
19
48
  chunksize = kwargs.get('chunksize', 10)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: rdworks
3
- Version: 0.39.1
3
+ Version: 0.40.1
4
4
  Summary: Frequently used 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>
@@ -16,6 +16,7 @@ src/rdworks/scaffold.py
16
16
  src/rdworks/std.py
17
17
  src/rdworks/stereoisomers.py
18
18
  src/rdworks/tautomers.py
19
+ src/rdworks/testdata.py
19
20
  src/rdworks/torsion.py
20
21
  src/rdworks/units.py
21
22
  src/rdworks/utils.py
@@ -42,6 +42,8 @@ drug_smiles = [
42
42
  "CC(=O)OC1=CC=CC=C1C(=O)O",
43
43
  "C1=CC(=C(C=C1F)F)C(CN2C=NC=N2)(CN3C=NC=N3)O",
44
44
  "CC(=O)NC[C@H]1CN(C(=O)O1)C2=CC(=C(C=C2)N3CCOCC3)F", # [19]
45
+ "CC(C)C1=C(C(=C(N1CC[C@H](C[C@H](CC(=O)O)O)O)C2=CC=C(C=C2)F)C3=CC=CC=C3)C(=O)NC4=CC=CC=C4",
46
+ "CC(=O)Nc1ccc(O)cc1",
45
47
  ]
46
48
 
47
49
  drug_names = [
@@ -49,6 +51,7 @@ drug_names = [
49
51
  "Granisetron", "Pergolide", "Molindone", "Rifampin", "Cefdinir",
50
52
  "Cimetidine", "Famotidine", "Atovaquone", "Chlorprothixene", "Clomipramine",
51
53
  "Methixene", "Ethopropazine", "Aspirin", "Fluconazole", "Linezolid",
54
+ "Atorvastatin", "Acetaminophen"
52
55
  ]
53
56
 
54
57
  # Lahey, S.-L. J., Thien Phuc, T. N. & Rowley, C. N.
@@ -511,6 +514,7 @@ def test_torsion_fragment_from_conf():
511
514
  assert frag_ijkl == ta2[0]
512
515
 
513
516
  ref_conf2 = ref_conf2.torsion_energies(calculator='MMFF94', interval=15)
517
+ ref_conf3 = ref_conf2.torsion_energies_one(calculator='MMFF94', indices=frag_ijkl)
514
518
 
515
519
 
516
520
  def test_torsion_energies():
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