pdbeccdutils 0.5.9__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 (95) hide show
  1. Users/lpravda/anaconda3/envs/rdkit-env/bin/process_components_cif +33 -0
  2. Users/lpravda/anaconda3/envs/rdkit-env/bin/setup_pubchem_library +33 -0
  3. Users/lpravda/anaconda3/envs/rdkit-env/lib/python3.7/site-packages/doc/__pycache__/conf.cpython-37.pyc +0 -0
  4. Users/lpravda/anaconda3/envs/rdkit-env/lib/python3.7/site-packages/doc/conf.py +208 -0
  5. Users/lpravda/anaconda3/envs/rdkit-env/lib/python3.7/site-packages/pdbeccdutils/__init__.py +1 -0
  6. Users/lpravda/anaconda3/envs/rdkit-env/lib/python3.7/site-packages/pdbeccdutils/__pycache__/__init__.cpython-37.pyc +0 -0
  7. Users/lpravda/anaconda3/envs/rdkit-env/lib/python3.7/site-packages/pdbeccdutils/computations/__init__.py +0 -0
  8. Users/lpravda/anaconda3/envs/rdkit-env/lib/python3.7/site-packages/pdbeccdutils/computations/__pycache__/__init__.cpython-37.pyc +0 -0
  9. Users/lpravda/anaconda3/envs/rdkit-env/lib/python3.7/site-packages/pdbeccdutils/computations/__pycache__/parity_method.cpython-37.pyc +0 -0
  10. Users/lpravda/anaconda3/envs/rdkit-env/lib/python3.7/site-packages/pdbeccdutils/computations/parity_method.py +123 -0
  11. Users/lpravda/anaconda3/envs/rdkit-env/lib/python3.7/site-packages/pdbeccdutils/core/__init__.py +0 -0
  12. Users/lpravda/anaconda3/envs/rdkit-env/lib/python3.7/site-packages/pdbeccdutils/core/__pycache__/__init__.cpython-37.pyc +0 -0
  13. Users/lpravda/anaconda3/envs/rdkit-env/lib/python3.7/site-packages/pdbeccdutils/core/__pycache__/ccd_reader.cpython-37.pyc +0 -0
  14. Users/lpravda/anaconda3/envs/rdkit-env/lib/python3.7/site-packages/pdbeccdutils/core/__pycache__/ccd_writer.cpython-37.pyc +0 -0
  15. Users/lpravda/anaconda3/envs/rdkit-env/lib/python3.7/site-packages/pdbeccdutils/core/__pycache__/component.cpython-37.pyc +0 -0
  16. Users/lpravda/anaconda3/envs/rdkit-env/lib/python3.7/site-packages/pdbeccdutils/core/__pycache__/depictions.cpython-37.pyc +0 -0
  17. Users/lpravda/anaconda3/envs/rdkit-env/lib/python3.7/site-packages/pdbeccdutils/core/__pycache__/exceptions.cpython-37.pyc +0 -0
  18. Users/lpravda/anaconda3/envs/rdkit-env/lib/python3.7/site-packages/pdbeccdutils/core/__pycache__/fragment_library.cpython-37.pyc +0 -0
  19. Users/lpravda/anaconda3/envs/rdkit-env/lib/python3.7/site-packages/pdbeccdutils/core/__pycache__/models.cpython-37.pyc +0 -0
  20. Users/lpravda/anaconda3/envs/rdkit-env/lib/python3.7/site-packages/pdbeccdutils/core/ccd_reader.py +456 -0
  21. Users/lpravda/anaconda3/envs/rdkit-env/lib/python3.7/site-packages/pdbeccdutils/core/ccd_writer.py +1457 -0
  22. Users/lpravda/anaconda3/envs/rdkit-env/lib/python3.7/site-packages/pdbeccdutils/core/component.py +737 -0
  23. Users/lpravda/anaconda3/envs/rdkit-env/lib/python3.7/site-packages/pdbeccdutils/core/depictions.py +460 -0
  24. Users/lpravda/anaconda3/envs/rdkit-env/lib/python3.7/site-packages/pdbeccdutils/core/exceptions.py +4 -0
  25. Users/lpravda/anaconda3/envs/rdkit-env/lib/python3.7/site-packages/pdbeccdutils/core/fragment_library.py +120 -0
  26. Users/lpravda/anaconda3/envs/rdkit-env/lib/python3.7/site-packages/pdbeccdutils/core/models.py +219 -0
  27. Users/lpravda/anaconda3/envs/rdkit-env/lib/python3.7/site-packages/pdbeccdutils/data/coordgen_templates/templates.mae +405 -0
  28. Users/lpravda/anaconda3/envs/rdkit-env/lib/python3.7/site-packages/pdbeccdutils/data/fragment_library.tsv +2158 -0
  29. Users/lpravda/anaconda3/envs/rdkit-env/lib/python3.7/site-packages/pdbeccdutils/data/general_templates/adamantane.sdf +28 -0
  30. Users/lpravda/anaconda3/envs/rdkit-env/lib/python3.7/site-packages/pdbeccdutils/data/general_templates/cube.sdf +25 -0
  31. Users/lpravda/anaconda3/envs/rdkit-env/lib/python3.7/site-packages/pdbeccdutils/data/general_templates/decahydrocorrin.sdf +56 -0
  32. Users/lpravda/anaconda3/envs/rdkit-env/lib/python3.7/site-packages/pdbeccdutils/data/general_templates/hem.sdf +64 -0
  33. Users/lpravda/anaconda3/envs/rdkit-env/lib/python3.7/site-packages/pdbeccdutils/data/general_templates/nonbornane.sdf +21 -0
  34. Users/lpravda/anaconda3/envs/rdkit-env/lib/python3.7/site-packages/pdbeccdutils/data/general_templates/phorbine.sdf +67 -0
  35. Users/lpravda/anaconda3/envs/rdkit-env/lib/python3.7/site-packages/pdbeccdutils/data/general_templates/porphin.sdf +58 -0
  36. Users/lpravda/anaconda3/envs/rdkit-env/lib/python3.7/site-packages/pdbeccdutils/data/general_templates/porphycene.sdf +63 -0
  37. Users/lpravda/anaconda3/envs/rdkit-env/lib/python3.7/site-packages/pdbeccdutils/data/general_templates/ru_complex.sdf +93 -0
  38. Users/lpravda/anaconda3/envs/rdkit-env/lib/python3.7/site-packages/pdbeccdutils/data/general_templates/ru_complex2.sdf +88 -0
  39. Users/lpravda/anaconda3/envs/rdkit-env/lib/python3.7/site-packages/pdbeccdutils/helpers/__init__.py +0 -0
  40. Users/lpravda/anaconda3/envs/rdkit-env/lib/python3.7/site-packages/pdbeccdutils/helpers/__pycache__/__init__.cpython-37.pyc +0 -0
  41. Users/lpravda/anaconda3/envs/rdkit-env/lib/python3.7/site-packages/pdbeccdutils/helpers/__pycache__/conversions.cpython-37.pyc +0 -0
  42. Users/lpravda/anaconda3/envs/rdkit-env/lib/python3.7/site-packages/pdbeccdutils/helpers/__pycache__/drawing.cpython-37.pyc +0 -0
  43. Users/lpravda/anaconda3/envs/rdkit-env/lib/python3.7/site-packages/pdbeccdutils/helpers/__pycache__/logging.cpython-37.pyc +0 -0
  44. Users/lpravda/anaconda3/envs/rdkit-env/lib/python3.7/site-packages/pdbeccdutils/helpers/__pycache__/mol_tools.cpython-37.pyc +0 -0
  45. Users/lpravda/anaconda3/envs/rdkit-env/lib/python3.7/site-packages/pdbeccdutils/helpers/conversions.py +62 -0
  46. Users/lpravda/anaconda3/envs/rdkit-env/lib/python3.7/site-packages/pdbeccdutils/helpers/drawing.py +412 -0
  47. Users/lpravda/anaconda3/envs/rdkit-env/lib/python3.7/site-packages/pdbeccdutils/helpers/logging.py +24 -0
  48. Users/lpravda/anaconda3/envs/rdkit-env/lib/python3.7/site-packages/pdbeccdutils/helpers/mol_tools.py +187 -0
  49. Users/lpravda/anaconda3/envs/rdkit-env/lib/python3.7/site-packages/pdbeccdutils/scripts/__init__.py +0 -0
  50. Users/lpravda/anaconda3/envs/rdkit-env/lib/python3.7/site-packages/pdbeccdutils/scripts/__pycache__/__init__.cpython-37.pyc +0 -0
  51. Users/lpravda/anaconda3/envs/rdkit-env/lib/python3.7/site-packages/pdbeccdutils/scripts/__pycache__/process_components_cif_cli.cpython-37.pyc +0 -0
  52. Users/lpravda/anaconda3/envs/rdkit-env/lib/python3.7/site-packages/pdbeccdutils/scripts/__pycache__/setup_pubchem_library_cli.cpython-37.pyc +0 -0
  53. Users/lpravda/anaconda3/envs/rdkit-env/lib/python3.7/site-packages/pdbeccdutils/scripts/process_components_cif_cli.py +451 -0
  54. Users/lpravda/anaconda3/envs/rdkit-env/lib/python3.7/site-packages/pdbeccdutils/scripts/setup_pubchem_library_cli.py +52 -0
  55. Users/lpravda/anaconda3/envs/rdkit-env/lib/python3.7/site-packages/pdbeccdutils/tests/__pycache__/conftest.cpython-37.pyc +0 -0
  56. Users/lpravda/anaconda3/envs/rdkit-env/lib/python3.7/site-packages/pdbeccdutils/tests/__pycache__/test_file_writing.cpython-37.pyc +0 -0
  57. Users/lpravda/anaconda3/envs/rdkit-env/lib/python3.7/site-packages/pdbeccdutils/tests/__pycache__/test_fragment_library.cpython-37.pyc +0 -0
  58. Users/lpravda/anaconda3/envs/rdkit-env/lib/python3.7/site-packages/pdbeccdutils/tests/__pycache__/test_inchi_key_matches.cpython-37.pyc +0 -0
  59. Users/lpravda/anaconda3/envs/rdkit-env/lib/python3.7/site-packages/pdbeccdutils/tests/__pycache__/test_load_eoh_cif.cpython-37.pyc +0 -0
  60. Users/lpravda/anaconda3/envs/rdkit-env/lib/python3.7/site-packages/pdbeccdutils/tests/__pycache__/test_parity.cpython-37.pyc +0 -0
  61. Users/lpravda/anaconda3/envs/rdkit-env/lib/python3.7/site-packages/pdbeccdutils/tests/__pycache__/test_process_components_cif_cli.cpython-37.pyc +0 -0
  62. Users/lpravda/anaconda3/envs/rdkit-env/lib/python3.7/site-packages/pdbeccdutils/tests/__pycache__/test_property_generation.cpython-37.pyc +0 -0
  63. Users/lpravda/anaconda3/envs/rdkit-env/lib/python3.7/site-packages/pdbeccdutils/tests/__pycache__/test_rdkit_fixtures.cpython-37.pyc +0 -0
  64. Users/lpravda/anaconda3/envs/rdkit-env/lib/python3.7/site-packages/pdbeccdutils/tests/__pycache__/test_scaffold_generation.cpython-37.pyc +0 -0
  65. Users/lpravda/anaconda3/envs/rdkit-env/lib/python3.7/site-packages/pdbeccdutils/tests/__pycache__/test_web_services.cpython-37.pyc +0 -0
  66. Users/lpravda/anaconda3/envs/rdkit-env/lib/python3.7/site-packages/pdbeccdutils/tests/__pycache__/test_write_img.cpython-37.pyc +0 -0
  67. Users/lpravda/anaconda3/envs/rdkit-env/lib/python3.7/site-packages/pdbeccdutils/tests/__pycache__/tst_utilities.cpython-37.pyc +0 -0
  68. Users/lpravda/anaconda3/envs/rdkit-env/lib/python3.7/site-packages/pdbeccdutils/tests/conftest.py +25 -0
  69. Users/lpravda/anaconda3/envs/rdkit-env/lib/python3.7/site-packages/pdbeccdutils/tests/test_file_writing.py +161 -0
  70. Users/lpravda/anaconda3/envs/rdkit-env/lib/python3.7/site-packages/pdbeccdutils/tests/test_fragment_library.py +31 -0
  71. Users/lpravda/anaconda3/envs/rdkit-env/lib/python3.7/site-packages/pdbeccdutils/tests/test_inchi_key_matches.py +9 -0
  72. Users/lpravda/anaconda3/envs/rdkit-env/lib/python3.7/site-packages/pdbeccdutils/tests/test_load_eoh_cif.py +117 -0
  73. Users/lpravda/anaconda3/envs/rdkit-env/lib/python3.7/site-packages/pdbeccdutils/tests/test_parity.py +29 -0
  74. Users/lpravda/anaconda3/envs/rdkit-env/lib/python3.7/site-packages/pdbeccdutils/tests/test_process_components_cif_cli.py +164 -0
  75. Users/lpravda/anaconda3/envs/rdkit-env/lib/python3.7/site-packages/pdbeccdutils/tests/test_property_generation.py +56 -0
  76. Users/lpravda/anaconda3/envs/rdkit-env/lib/python3.7/site-packages/pdbeccdutils/tests/test_rdkit_fixtures.py +57 -0
  77. Users/lpravda/anaconda3/envs/rdkit-env/lib/python3.7/site-packages/pdbeccdutils/tests/test_scaffold_generation.py +54 -0
  78. Users/lpravda/anaconda3/envs/rdkit-env/lib/python3.7/site-packages/pdbeccdutils/tests/test_web_services.py +56 -0
  79. Users/lpravda/anaconda3/envs/rdkit-env/lib/python3.7/site-packages/pdbeccdutils/tests/test_write_img.py +166 -0
  80. Users/lpravda/anaconda3/envs/rdkit-env/lib/python3.7/site-packages/pdbeccdutils/tests/tst_utilities.py +57 -0
  81. Users/lpravda/anaconda3/envs/rdkit-env/lib/python3.7/site-packages/pdbeccdutils/utils/__init__.py +0 -0
  82. Users/lpravda/anaconda3/envs/rdkit-env/lib/python3.7/site-packages/pdbeccdutils/utils/__pycache__/__init__.cpython-37.pyc +0 -0
  83. Users/lpravda/anaconda3/envs/rdkit-env/lib/python3.7/site-packages/pdbeccdutils/utils/__pycache__/config.cpython-37.pyc +0 -0
  84. Users/lpravda/anaconda3/envs/rdkit-env/lib/python3.7/site-packages/pdbeccdutils/utils/__pycache__/pubchem_downloader.cpython-37.pyc +0 -0
  85. Users/lpravda/anaconda3/envs/rdkit-env/lib/python3.7/site-packages/pdbeccdutils/utils/__pycache__/web_services.cpython-37.pyc +0 -0
  86. Users/lpravda/anaconda3/envs/rdkit-env/lib/python3.7/site-packages/pdbeccdutils/utils/config.py +14 -0
  87. Users/lpravda/anaconda3/envs/rdkit-env/lib/python3.7/site-packages/pdbeccdutils/utils/pubchem_downloader.py +143 -0
  88. Users/lpravda/anaconda3/envs/rdkit-env/lib/python3.7/site-packages/pdbeccdutils/utils/web_services.py +150 -0
  89. Users/lpravda/anaconda3/envs/rdkit-env/lib/python3.7/site-packages/pdbeccdutils-0.5.9-py3.7.egg-info/PKG-INFO +111 -0
  90. Users/lpravda/anaconda3/envs/rdkit-env/lib/python3.7/site-packages/pdbeccdutils-0.5.9-py3.7.egg-info/SOURCES.txt +59 -0
  91. Users/lpravda/anaconda3/envs/rdkit-env/lib/python3.7/site-packages/pdbeccdutils-0.5.9-py3.7.egg-info/dependency_links.txt +1 -0
  92. Users/lpravda/anaconda3/envs/rdkit-env/lib/python3.7/site-packages/pdbeccdutils-0.5.9-py3.7.egg-info/entry_points.txt +4 -0
  93. Users/lpravda/anaconda3/envs/rdkit-env/lib/python3.7/site-packages/pdbeccdutils-0.5.9-py3.7.egg-info/not-zip-safe +1 -0
  94. Users/lpravda/anaconda3/envs/rdkit-env/lib/python3.7/site-packages/pdbeccdutils-0.5.9-py3.7.egg-info/requires.txt +18 -0
  95. Users/lpravda/anaconda3/envs/rdkit-env/lib/python3.7/site-packages/pdbeccdutils-0.5.9-py3.7.egg-info/top_level.txt +5 -0
@@ -0,0 +1,33 @@
1
+ #!/Users/lpravda/anaconda3/envs/rdkit-env/bin/python
2
+ # EASY-INSTALL-ENTRY-SCRIPT: 'pdbeccdutils==0.5.9','console_scripts','process_components_cif'
3
+ import re
4
+ import sys
5
+
6
+ # for compatibility with easy_install; see #2198
7
+ __requires__ = 'pdbeccdutils==0.5.9'
8
+
9
+ try:
10
+ from importlib.metadata import distribution
11
+ except ImportError:
12
+ try:
13
+ from importlib_metadata import distribution
14
+ except ImportError:
15
+ from pkg_resources import load_entry_point
16
+
17
+
18
+ def importlib_load_entry_point(spec, group, name):
19
+ dist_name, _, _ = spec.partition('==')
20
+ matches = (
21
+ entry_point
22
+ for entry_point in distribution(dist_name).entry_points
23
+ if entry_point.group == group and entry_point.name == name
24
+ )
25
+ return next(matches).load()
26
+
27
+
28
+ globals().setdefault('load_entry_point', importlib_load_entry_point)
29
+
30
+
31
+ if __name__ == '__main__':
32
+ sys.argv[0] = re.sub(r'(-script\.pyw?|\.exe)?$', '', sys.argv[0])
33
+ sys.exit(load_entry_point('pdbeccdutils==0.5.9', 'console_scripts', 'process_components_cif')())
@@ -0,0 +1,33 @@
1
+ #!/Users/lpravda/anaconda3/envs/rdkit-env/bin/python
2
+ # EASY-INSTALL-ENTRY-SCRIPT: 'pdbeccdutils==0.5.9','console_scripts','setup_pubchem_library'
3
+ import re
4
+ import sys
5
+
6
+ # for compatibility with easy_install; see #2198
7
+ __requires__ = 'pdbeccdutils==0.5.9'
8
+
9
+ try:
10
+ from importlib.metadata import distribution
11
+ except ImportError:
12
+ try:
13
+ from importlib_metadata import distribution
14
+ except ImportError:
15
+ from pkg_resources import load_entry_point
16
+
17
+
18
+ def importlib_load_entry_point(spec, group, name):
19
+ dist_name, _, _ = spec.partition('==')
20
+ matches = (
21
+ entry_point
22
+ for entry_point in distribution(dist_name).entry_points
23
+ if entry_point.group == group and entry_point.name == name
24
+ )
25
+ return next(matches).load()
26
+
27
+
28
+ globals().setdefault('load_entry_point', importlib_load_entry_point)
29
+
30
+
31
+ if __name__ == '__main__':
32
+ sys.argv[0] = re.sub(r'(-script\.pyw?|\.exe)?$', '', sys.argv[0])
33
+ sys.exit(load_entry_point('pdbeccdutils==0.5.9', 'console_scripts', 'setup_pubchem_library')())
@@ -0,0 +1,208 @@
1
+ # -*- coding: utf-8 -*-
2
+ #
3
+ # Configuration file for the Sphinx documentation builder.
4
+ #
5
+ # This file does only contain a selection of the most common options. For a
6
+ # full list see the documentation:
7
+ # http://www.sphinx-doc.org/en/stable/config
8
+
9
+ # -- Path setup --------------------------------------------------------------
10
+
11
+ # If extensions (or modules to document with autodoc) are in another directory,
12
+ # add these directories to sys.path here. If the directory is relative to the
13
+ # documentation root, use os.path.abspath to make it absolute, like shown here.
14
+ #
15
+ from recommonmark.transform import AutoStructify
16
+ import pdbeccdutils
17
+
18
+ # region Project information
19
+ project = "pdbeccdutils"
20
+ copyright = "2020, Protein Data Bank in Europe"
21
+ author = "Protein Data Bank in Europe"
22
+
23
+ # The short X.Y version
24
+ version = pdbeccdutils.__version__
25
+ # The full version, including alpha/beta/rc tags
26
+ release = pdbeccdutils.__version__
27
+
28
+ # endregion
29
+
30
+ # region General configuration
31
+
32
+ # If your documentation needs a minimal Sphinx version, state it here.
33
+ #
34
+ # needs_sphinx = '1.0'
35
+
36
+ # Add any Sphinx extension module names here, as strings. They can be
37
+ # extensions coming with Sphinx (named 'sphinx.ext.*') or your custom
38
+ # ones.
39
+ extensions = [
40
+ "sphinx.ext.autodoc",
41
+ "sphinx.ext.napoleon",
42
+ "sphinx.ext.todo",
43
+ "sphinx_markdown_tables",
44
+ "sphinx.ext.coverage",
45
+ "sphinx.ext.intersphinx",
46
+ "recommonmark",
47
+ ]
48
+ intersphinx_mapping = {
49
+ "python": ("https://docs.python.org/3", None),
50
+ "rdkit": ("https://www.rdkit.org/docs/", None),
51
+ }
52
+
53
+ # Add any paths that contain templates here, relative to this directory.
54
+ templates_path = ["_templates"]
55
+
56
+ source_parsers = {".rst": "restructuredtext", ".txt": "markdown", ".md": "markdown"}
57
+
58
+ # The master toctree document.
59
+ master_doc = "index"
60
+
61
+ # The language for content autogenerated by Sphinx. Refer to documentation
62
+ # for a list of supported languages.
63
+ #
64
+ # This is also used if you do content translation via gettext catalogs.
65
+ # Usually you set "language" from the command line for these cases.
66
+ language = "en"
67
+
68
+ # List of patterns, relative to source directory, that match files and
69
+ # directories to ignore when looking for source files.
70
+ # This pattern also affects html_static_path and html_extra_path .
71
+ exclude_patterns = ["_build", "Thumbs.db", ".DS_Store"]
72
+
73
+ # The name of the Pygments (syntax highlighting) style to use.
74
+ pygments_style = "sphinx"
75
+
76
+ # endregion
77
+
78
+ # region Options for HTML output
79
+
80
+ # The theme to use for HTML and HTML Help pages. See the documentation for
81
+ # a list of builtin themes.
82
+ #
83
+ html_theme = "sphinx_rtd_theme"
84
+
85
+ # Theme options are theme-specific and customize the look and feel of a theme
86
+ # further. For a list of options available for each theme, see the
87
+ # documentation.
88
+ #
89
+ html_theme_options = {
90
+ "collapse_navigation": False,
91
+ "sticky_navigation": True,
92
+ "navigation_depth": 4,
93
+ "logo_only": False,
94
+ "display_version": True,
95
+ "prev_next_buttons_location": "bottom",
96
+ }
97
+ html_logo = "logo.png"
98
+ # Add any paths that contain custom static files (such as style sheets) here,
99
+ # relative to this directory. They are copied after the builtin static files,
100
+ # so a file named "default.css" will overwrite the builtin "default.css".
101
+ html_static_path = ["_static"]
102
+ # html_css_files = ["css/styles.css"]
103
+
104
+ # Custom sidebar templates, must be a dictionary that maps document names
105
+ # to template names.
106
+ #
107
+ # The default sidebars (for documents that don't match any pattern) are
108
+ # defined by theme itself. Builtin themes are using these templates by
109
+ # default: ``['localtoc.html', 'relations.html', 'sourcelink.html',
110
+ # 'searchbox.html']``.
111
+ #
112
+ # html_sidebars = {}
113
+ # end region
114
+
115
+ # region Options for HTMLHelp output
116
+
117
+ # Output file base name for HTML help builder.
118
+ htmlhelp_basename = "pdbeccdutilsdoc"
119
+
120
+ # endregion
121
+
122
+ # region Options for LaTeX output
123
+
124
+ latex_elements = {
125
+ # The paper size ('letterpaper' or 'a4paper').
126
+ #
127
+ # 'papersize': 'letterpaper',
128
+ # The font size ('10pt', '11pt' or '12pt').
129
+ #
130
+ # 'pointsize': '10pt',
131
+ # Additional stuff for the LaTeX preamble.
132
+ #
133
+ # 'preamble': '',
134
+ # Latex figure (float) alignment
135
+ #
136
+ # 'figure_align': 'htbp',
137
+ }
138
+
139
+ # Grouping the document tree into LaTeX files. List of tuples
140
+ # (source start file, target name, title,
141
+ # author, documentclass [howto, manual, or own class]).
142
+ latex_documents = [
143
+ (
144
+ master_doc,
145
+ "pdbeccdutils.tex",
146
+ "pdbeccdutils Documentation",
147
+ "Protein Data Bank in Europe",
148
+ "manual",
149
+ ),
150
+ ]
151
+ # endregion
152
+
153
+ # region Options for manual page output
154
+
155
+ # One entry per manual page. List of tuples
156
+ # (source start file, name, description, authors, manual section).
157
+ man_pages = [(master_doc, "pdbeccdutils", "pdbeccdutils Documentation", [author], 1)]
158
+ # endregion
159
+
160
+ # region Options for Texinfo output
161
+
162
+ # Grouping the document tree into Texinfo files. List of tuples
163
+ # (source start file, target name, title, author,
164
+ # dir menu entry, description, category)
165
+ texinfo_documents = [
166
+ (
167
+ master_doc,
168
+ "pdbeccdutils",
169
+ "pdbeccdutils Documentation",
170
+ author,
171
+ "pdbeccdutils",
172
+ "One line description of project.",
173
+ "Miscellaneous",
174
+ ),
175
+ ]
176
+
177
+ # endregion
178
+
179
+ # region Extension configuration
180
+ github_doc_root = "https://github.com/rtfd/recommonmark/tree/master/doc/"
181
+
182
+
183
+ def setup(app):
184
+ app.add_config_value(
185
+ "recommonmark_config",
186
+ {
187
+ "url_resolver": lambda url: github_doc_root + url,
188
+ "auto_toc_tree_section": "Contents",
189
+ },
190
+ True,
191
+ )
192
+ app.add_transform(AutoStructify)
193
+ app.connect(
194
+ "autodoc-process-docstring",
195
+ no_namedtuple_attrib_docstring,
196
+ )
197
+
198
+
199
+ def no_namedtuple_attrib_docstring(app, what, name, obj, options, lines):
200
+ is_namedtuple_docstring = len(lines) == 1 and lines[0].startswith(
201
+ "Alias for field number"
202
+ )
203
+ if is_namedtuple_docstring:
204
+ # We don't return, so we need to purge in-place
205
+ del lines[:]
206
+
207
+
208
+ # endregion
@@ -0,0 +1,123 @@
1
+ """Lightweight implementation of the `parity method <https://doi.org/10.1016/j.str.2018.02.009>`_ provided by
2
+ Jon Tyzack.
3
+ """
4
+
5
+ from rdkit import Chem
6
+ from rdkit.Chem import rdFMCS
7
+
8
+ from pdbeccdutils.core.models import ParityResult
9
+
10
+
11
+ def _get_matches(mol, smarts):
12
+ """Gets the subgraph match for the parity method.
13
+
14
+ Args:
15
+ mol (rdkit.Chem.rdchem.Mol): Molecule to be queried
16
+ smarts (str): Molecule representation in SMARTS.
17
+
18
+ Returns:
19
+ int: Molecular subgraph matches.
20
+ """
21
+
22
+ patt = Chem.MolFromSmarts(smarts)
23
+ matches = mol.GetSubstructMatches(patt, uniquify=False)
24
+ return matches
25
+
26
+
27
+ def _generate_sim_score(template, query, smarts):
28
+ """Given the two moleculs and their common subgraph represented as
29
+ smarts string returns similarity score.
30
+
31
+ Args:
32
+ template (rdkit.Chem.rdchem.Mol): template molecule.
33
+ query (rdkit.Chem.Mol): query molecule.
34
+ smarts (str): common subgraph in the SMARTS format.
35
+
36
+ Returns:
37
+ tuple[dict[int, int], float]: atom id mapping for a common
38
+ subgraph and the similarity score.
39
+ """
40
+
41
+ if template.GetNumAtoms() == 1:
42
+ smarts = Chem.MolToSmarts(template)
43
+ elif query.GetNumAtoms() == 1:
44
+ smarts = Chem.MolToSmarts(query)
45
+ if smarts is None:
46
+ substructure = {}
47
+ best_sim_score = 0.0
48
+ else:
49
+ matches_1 = _get_matches(template, smarts)
50
+ matches_2 = _get_matches(query, smarts)
51
+ best_matches = 0
52
+ substructure = {}
53
+ size_1 = template.GetNumAtoms()
54
+ size_2 = query.GetNumAtoms()
55
+
56
+ for match_1 in matches_1:
57
+ for match_2 in matches_2:
58
+ matches = 0
59
+ for i, value in enumerate(match_1):
60
+ atom_1 = template.GetAtomWithIdx(value)
61
+ atom_2 = query.GetAtomWithIdx(match_2[i])
62
+ symbol_1 = atom_1.GetSymbol()
63
+ symbol_2 = atom_2.GetSymbol()
64
+ if symbol_1 == symbol_2:
65
+ matches += 1
66
+ if matches > best_matches:
67
+ best_matches = matches
68
+ substructure = dict(zip(match_1, match_2))
69
+ best_sim_score = float(best_matches) / float(size_1 + size_2 - best_matches)
70
+
71
+ return (substructure, best_sim_score)
72
+
73
+
74
+ def compare_molecules(template, query, thresh=0.01, exact_match=False):
75
+ """Given the two molecules calculates their similarity score.
76
+ If expected similarity score is lower than the threshold nothing
77
+ is calculated.
78
+
79
+ Args:
80
+ template (rdkit.Chem.rdchem.Mol): Template molecule
81
+ query (rdkit.Chem.rdchem.Mol): Query molecule
82
+ thresh (float, optional): Threshold score for
83
+ the match to be considered. Defaults to 0.01.
84
+ exact_match (bool, optional): Controls whether atom type and
85
+ bond order should be checked too. Defaults to False.
86
+
87
+ Returns:
88
+ ParityResult: Result of the PARITY comparison.
89
+ """
90
+
91
+ template_atoms = template.GetNumAtoms()
92
+ query_atoms = query.GetNumAtoms()
93
+
94
+ min_num_atoms = min(template_atoms, query_atoms)
95
+ max_sim_score = float(min_num_atoms) / float(
96
+ template_atoms + query_atoms - min_num_atoms
97
+ )
98
+
99
+ if max_sim_score < thresh:
100
+ return ParityResult({}, 0.0)
101
+
102
+ if not exact_match:
103
+ mcs_graph = rdFMCS.FindMCS(
104
+ [template, query],
105
+ bondCompare=rdFMCS.BondCompare.CompareAny,
106
+ atomCompare=rdFMCS.AtomCompare.CompareAny,
107
+ timeout=40,
108
+ completeRingsOnly=True,
109
+ )
110
+ else:
111
+ mcs_graph = rdFMCS.FindMCS(
112
+ [template, query],
113
+ bondCompare=rdFMCS.BondCompare.CompareOrderExact,
114
+ atomCompare=rdFMCS.AtomCompare.CompareElements,
115
+ timeout=40,
116
+ completeRingsOnly=True,
117
+ )
118
+
119
+ substructure, sim_score = _generate_sim_score(
120
+ template, query, mcs_graph.smartsString
121
+ )
122
+
123
+ return ParityResult(substructure, sim_score)