acellera-konnektor 0.4.0__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 (193) hide show
  1. acellera_konnektor-0.4.0/.coveragerc +12 -0
  2. acellera_konnektor-0.4.0/.git-blame-ignore-revs +5 -0
  3. acellera_konnektor-0.4.0/.github/pull_request_template.md +25 -0
  4. acellera_konnektor-0.4.0/.github/workflows/ci.yaml +87 -0
  5. acellera_konnektor-0.4.0/.gitignore +139 -0
  6. acellera_konnektor-0.4.0/.img/Divesity_network.png +0 -0
  7. acellera_konnektor-0.4.0/.img/KonnektorLogo_trasnp.png +0 -0
  8. acellera_konnektor-0.4.0/.img/Network_Overview.png +0 -0
  9. acellera_konnektor-0.4.0/.img/example_out.png +0 -0
  10. acellera_konnektor-0.4.0/.img/konnektor_logo_1.png +0 -0
  11. acellera_konnektor-0.4.0/.img/konnektor_logo_2.png +0 -0
  12. acellera_konnektor-0.4.0/.img/konnektor_logo_3.png +0 -0
  13. acellera_konnektor-0.4.0/.img/konnektor_logo_4.png +0 -0
  14. acellera_konnektor-0.4.0/.img/konnektor_logo_5.png +0 -0
  15. acellera_konnektor-0.4.0/.img/konnektor_logo_6.png +0 -0
  16. acellera_konnektor-0.4.0/.img/konnektor_logo_style1.png +0 -0
  17. acellera_konnektor-0.4.0/.img/konnektor_logo_style2.png +0 -0
  18. acellera_konnektor-0.4.0/.img/konnektor_logo_style3.png +0 -0
  19. acellera_konnektor-0.4.0/.img/konnektor_logo_style4.png +0 -0
  20. acellera_konnektor-0.4.0/.img/konnektor_logo_style5.png +0 -0
  21. acellera_konnektor-0.4.0/.pre-commit-config.yaml +37 -0
  22. acellera_konnektor-0.4.0/.readthedocs.yaml +19 -0
  23. acellera_konnektor-0.4.0/CITATION.cff +31 -0
  24. acellera_konnektor-0.4.0/LICENSE +21 -0
  25. acellera_konnektor-0.4.0/MANIFEST.in +3 -0
  26. acellera_konnektor-0.4.0/PKG-INFO +130 -0
  27. acellera_konnektor-0.4.0/README.md +100 -0
  28. acellera_konnektor-0.4.0/dev/advanced_topics.ipynb +836 -0
  29. acellera_konnektor-0.4.0/dev/cligands.sdf +10669 -0
  30. acellera_konnektor-0.4.0/dev/cluster_graphs.ipynb +436 -0
  31. acellera_konnektor-0.4.0/dev/cyclic_Graph_generation.ipynb +394 -0
  32. acellera_konnektor-0.4.0/dev/greedy/cycGraph.png +0 -0
  33. acellera_konnektor-0.4.0/dev/greedy/dgreedy.py +28 -0
  34. acellera_konnektor-0.4.0/dev/greedy/greedy.py +27 -0
  35. acellera_konnektor-0.4.0/dev/greedy/param_graphs.png +0 -0
  36. acellera_konnektor-0.4.0/dev/greedy/test.py +40 -0
  37. acellera_konnektor-0.4.0/dev/greedy/test_params.py +66 -0
  38. acellera_konnektor-0.4.0/dev/large_set/lig.pdb +62 -0
  39. acellera_konnektor-0.4.0/dev/large_set/molecule-set-evd68_3c_early_p1_fecs.csv +1560 -0
  40. acellera_konnektor-0.4.0/dev/new_features.ipynb +650 -0
  41. acellera_konnektor-0.4.0/docs/CHANGELOG.rst +73 -0
  42. acellera_konnektor-0.4.0/docs/Makefile +20 -0
  43. acellera_konnektor-0.4.0/docs/_static/.gitkeep +0 -0
  44. acellera_konnektor-0.4.0/docs/_static/img/advanced_network_planning.png +0 -0
  45. acellera_konnektor-0.4.0/docs/_static/img/advanced_networking.png +0 -0
  46. acellera_konnektor-0.4.0/docs/_static/img/logo/konnektor_logo_style1.ico +0 -0
  47. acellera_konnektor-0.4.0/docs/_static/img/logo/konnektor_logo_style1.png +0 -0
  48. acellera_konnektor-0.4.0/docs/_static/img/logo/konnektor_logo_style2.png +0 -0
  49. acellera_konnektor-0.4.0/docs/_static/img/logo/konnektor_logo_style2_borderless.png +0 -0
  50. acellera_konnektor-0.4.0/docs/_static/img/logo/konnektor_logo_style3.png +0 -0
  51. acellera_konnektor-0.4.0/docs/_static/img/logo/konnektor_logo_style4.png +0 -0
  52. acellera_konnektor-0.4.0/docs/_static/img/logo/konnektor_logo_style5.png +0 -0
  53. acellera_konnektor-0.4.0/docs/_static/img/network_layouts.png +0 -0
  54. acellera_konnektor-0.4.0/docs/_static/img/network_operations_small.png +0 -0
  55. acellera_konnektor-0.4.0/docs/_static/img/networks.png +0 -0
  56. acellera_konnektor-0.4.0/docs/api/analysis.rst +8 -0
  57. acellera_konnektor-0.4.0/docs/api/data.rst +8 -0
  58. acellera_konnektor-0.4.0/docs/api/planners.rst +57 -0
  59. acellera_konnektor-0.4.0/docs/api/tools.rst +41 -0
  60. acellera_konnektor-0.4.0/docs/api/utils.rst +8 -0
  61. acellera_konnektor-0.4.0/docs/api/visualization.rst +19 -0
  62. acellera_konnektor-0.4.0/docs/api.rst +13 -0
  63. acellera_konnektor-0.4.0/docs/conf.py +94 -0
  64. acellera_konnektor-0.4.0/docs/environment.yaml +26 -0
  65. acellera_konnektor-0.4.0/docs/guide/edge_intermediator.rst +6 -0
  66. acellera_konnektor-0.4.0/docs/guide/index.rst +13 -0
  67. acellera_konnektor-0.4.0/docs/guide/introduction.rst +15 -0
  68. acellera_konnektor-0.4.0/docs/guide/network_planner.rst +59 -0
  69. acellera_konnektor-0.4.0/docs/guide/node_clusterer.rst +11 -0
  70. acellera_konnektor-0.4.0/docs/index.rst +25 -0
  71. acellera_konnektor-0.4.0/docs/installation.rst +40 -0
  72. acellera_konnektor-0.4.0/docs/make.bat +35 -0
  73. acellera_konnektor-0.4.0/docs/tutorials/basic_network_generation.ipynb +436 -0
  74. acellera_konnektor-0.4.0/docs/tutorials/index.rst +41 -0
  75. acellera_konnektor-0.4.0/docs/tutorials/network_generation_algorithms.ipynb +1285 -0
  76. acellera_konnektor-0.4.0/environment.yaml +34 -0
  77. acellera_konnektor-0.4.0/news/TEMPLATE.rst +23 -0
  78. acellera_konnektor-0.4.0/pyproject.toml +80 -0
  79. acellera_konnektor-0.4.0/rever.xsh +7 -0
  80. acellera_konnektor-0.4.0/setup.cfg +4 -0
  81. acellera_konnektor-0.4.0/src/acellera_konnektor.egg-info/PKG-INFO +130 -0
  82. acellera_konnektor-0.4.0/src/acellera_konnektor.egg-info/SOURCES.txt +191 -0
  83. acellera_konnektor-0.4.0/src/acellera_konnektor.egg-info/dependency_links.txt +1 -0
  84. acellera_konnektor-0.4.0/src/acellera_konnektor.egg-info/requires.txt +14 -0
  85. acellera_konnektor-0.4.0/src/acellera_konnektor.egg-info/top_level.txt +1 -0
  86. acellera_konnektor-0.4.0/src/konnektor/__init__.py +49 -0
  87. acellera_konnektor-0.4.0/src/konnektor/data/__init__.py +60 -0
  88. acellera_konnektor-0.4.0/src/konnektor/data/benzenes_RHFE.sdf +1055 -0
  89. acellera_konnektor-0.4.0/src/konnektor/data/charged_ligands.sdf +5122 -0
  90. acellera_konnektor-0.4.0/src/konnektor/data/hif2a_ligands.sdf +7653 -0
  91. acellera_konnektor-0.4.0/src/konnektor/network_analysis/__init__.py +22 -0
  92. acellera_konnektor-0.4.0/src/konnektor/network_analysis/network_analysis.py +250 -0
  93. acellera_konnektor-0.4.0/src/konnektor/network_planners/NetworkPlanner.py +69 -0
  94. acellera_konnektor-0.4.0/src/konnektor/network_planners/__init__.py +50 -0
  95. acellera_konnektor-0.4.0/src/konnektor/network_planners/_map_scoring.py +208 -0
  96. acellera_konnektor-0.4.0/src/konnektor/network_planners/_networkx_implementations/__init__.py +22 -0
  97. acellera_konnektor-0.4.0/src/konnektor/network_planners/_networkx_implementations/_abstract_network_algorithm.py +30 -0
  98. acellera_konnektor-0.4.0/src/konnektor/network_planners/_networkx_implementations/bipartite_match_algorithm.py +57 -0
  99. acellera_konnektor-0.4.0/src/konnektor/network_planners/_networkx_implementations/cyclic_network_algorithm.py +332 -0
  100. acellera_konnektor-0.4.0/src/konnektor/network_planners/_networkx_implementations/mst_network_algorithm.py +43 -0
  101. acellera_konnektor-0.4.0/src/konnektor/network_planners/_networkx_implementations/n_nodes_edges_network_algorithm.py +53 -0
  102. acellera_konnektor-0.4.0/src/konnektor/network_planners/_networkx_implementations/radial_network_algorithm.py +101 -0
  103. acellera_konnektor-0.4.0/src/konnektor/network_planners/concatenators/__init__.py +1 -0
  104. acellera_konnektor-0.4.0/src/konnektor/network_planners/concatenators/_abstract_network_concatenator.py +75 -0
  105. acellera_konnektor-0.4.0/src/konnektor/network_planners/concatenators/cyclic_concatenator.py +103 -0
  106. acellera_konnektor-0.4.0/src/konnektor/network_planners/concatenators/max_concatenator.py +98 -0
  107. acellera_konnektor-0.4.0/src/konnektor/network_planners/concatenators/mst_concatenator.py +122 -0
  108. acellera_konnektor-0.4.0/src/konnektor/network_planners/generators/__init__.py +0 -0
  109. acellera_konnektor-0.4.0/src/konnektor/network_planners/generators/_abstract_network_generator.py +88 -0
  110. acellera_konnektor-0.4.0/src/konnektor/network_planners/generators/clustered_network_generator.py +244 -0
  111. acellera_konnektor-0.4.0/src/konnektor/network_planners/generators/cyclic_network_generator.py +116 -0
  112. acellera_konnektor-0.4.0/src/konnektor/network_planners/generators/explicit_network_generator.py +174 -0
  113. acellera_konnektor-0.4.0/src/konnektor/network_planners/generators/heuristic_maximal_network_generator.py +109 -0
  114. acellera_konnektor-0.4.0/src/konnektor/network_planners/generators/maximal_network_generator.py +109 -0
  115. acellera_konnektor-0.4.0/src/konnektor/network_planners/generators/minimal_spanning_tree_network_generator.py +108 -0
  116. acellera_konnektor-0.4.0/src/konnektor/network_planners/generators/n_node_edges_network_generator.py +112 -0
  117. acellera_konnektor-0.4.0/src/konnektor/network_planners/generators/redundant_minimal_spanning_tree_network_generator.py +142 -0
  118. acellera_konnektor-0.4.0/src/konnektor/network_planners/generators/star_network_generator.py +143 -0
  119. acellera_konnektor-0.4.0/src/konnektor/network_planners/generators/twin_star_network_generator.py +108 -0
  120. acellera_konnektor-0.4.0/src/konnektor/network_tools/__init__.py +23 -0
  121. acellera_konnektor-0.4.0/src/konnektor/network_tools/clustering/__init__.py +0 -0
  122. acellera_konnektor-0.4.0/src/konnektor/network_tools/clustering/_abstract_clusterer.py +16 -0
  123. acellera_konnektor-0.4.0/src/konnektor/network_tools/clustering/auxilliary_featurizer.py +25 -0
  124. acellera_konnektor-0.4.0/src/konnektor/network_tools/clustering/charge_clustering.py +40 -0
  125. acellera_konnektor-0.4.0/src/konnektor/network_tools/clustering/component_diversity_clustering.py +83 -0
  126. acellera_konnektor-0.4.0/src/konnektor/network_tools/clustering/scaffold_clustering.py +245 -0
  127. acellera_konnektor-0.4.0/src/konnektor/network_tools/intermediate_generators/__init__.py +0 -0
  128. acellera_konnektor-0.4.0/src/konnektor/network_tools/intermediate_generators/_abstract_intermediator.py +55 -0
  129. acellera_konnektor-0.4.0/src/konnektor/network_tools/intermediate_generators/imerge_intermediator.py +89 -0
  130. acellera_konnektor-0.4.0/src/konnektor/network_tools/network_handling/__init__.py +14 -0
  131. acellera_konnektor-0.4.0/src/konnektor/network_tools/network_handling/concatenate.py +67 -0
  132. acellera_konnektor-0.4.0/src/konnektor/network_tools/network_handling/delete.py +85 -0
  133. acellera_konnektor-0.4.0/src/konnektor/network_tools/network_handling/merge.py +68 -0
  134. acellera_konnektor-0.4.0/src/konnektor/network_tools/network_handling/misc.py +22 -0
  135. acellera_konnektor-0.4.0/src/konnektor/tests/__init__.py +0 -0
  136. acellera_konnektor-0.4.0/src/konnektor/tests/conftest.py +35 -0
  137. acellera_konnektor-0.4.0/src/konnektor/tests/data/1,3,7-trimethylnaphthalene.mol2 +63 -0
  138. acellera_konnektor-0.4.0/src/konnektor/tests/data/1-butyl-4-methylbenzene.mol2 +62 -0
  139. acellera_konnektor-0.4.0/src/konnektor/tests/data/2,6-dimethylnaphthalene.mol2 +57 -0
  140. acellera_konnektor-0.4.0/src/konnektor/tests/data/2-methyl-6-propylnaphthalene.mol2 +69 -0
  141. acellera_konnektor-0.4.0/src/konnektor/tests/data/2-methylnaphthalene.mol2 +51 -0
  142. acellera_konnektor-0.4.0/src/konnektor/tests/data/2-naftanol.mol2 +47 -0
  143. acellera_konnektor-0.4.0/src/konnektor/tests/data/README.md +1 -0
  144. acellera_konnektor-0.4.0/src/konnektor/tests/data/__init__.py +0 -0
  145. acellera_konnektor-0.4.0/src/konnektor/tests/data/benzene_modifications.sdf +240 -0
  146. acellera_konnektor-0.4.0/src/konnektor/tests/data/conf.py +98 -0
  147. acellera_konnektor-0.4.0/src/konnektor/tests/data/methylcyclohexane.mol2 +50 -0
  148. acellera_konnektor-0.4.0/src/konnektor/tests/data/toluene.mol2 +38 -0
  149. acellera_konnektor-0.4.0/src/konnektor/tests/network_planners/__init__.py +0 -0
  150. acellera_konnektor-0.4.0/src/konnektor/tests/network_planners/_networkx_implemenations/__init__.py +0 -0
  151. acellera_konnektor-0.4.0/src/konnektor/tests/network_planners/_networkx_implemenations/conftest.py +98 -0
  152. acellera_konnektor-0.4.0/src/konnektor/tests/network_planners/_networkx_implemenations/test_bipartite_match_algorithm.py +25 -0
  153. acellera_konnektor-0.4.0/src/konnektor/tests/network_planners/_networkx_implemenations/test_cyclic_graph_generator.py +91 -0
  154. acellera_konnektor-0.4.0/src/konnektor/tests/network_planners/_networkx_implemenations/test_mst_graph_generator.py +31 -0
  155. acellera_konnektor-0.4.0/src/konnektor/tests/network_planners/_networkx_implemenations/test_n_edge_graph_generator.py +34 -0
  156. acellera_konnektor-0.4.0/src/konnektor/tests/network_planners/_networkx_implemenations/test_radial_graph_generator.py +69 -0
  157. acellera_konnektor-0.4.0/src/konnektor/tests/network_planners/concatenators/__init__.py +0 -0
  158. acellera_konnektor-0.4.0/src/konnektor/tests/network_planners/concatenators/test_bipartite_MST_connector.py +28 -0
  159. acellera_konnektor-0.4.0/src/konnektor/tests/network_planners/concatenators/test_bipartite_max_concatenator.py +31 -0
  160. acellera_konnektor-0.4.0/src/konnektor/tests/network_planners/conf.py +126 -0
  161. acellera_konnektor-0.4.0/src/konnektor/tests/network_planners/conftest.py +22 -0
  162. acellera_konnektor-0.4.0/src/konnektor/tests/network_planners/generators/__init__.py +0 -0
  163. acellera_konnektor-0.4.0/src/konnektor/tests/network_planners/generators/test_clustered_network_generator.py +46 -0
  164. acellera_konnektor-0.4.0/src/konnektor/tests/network_planners/generators/test_cyclic_network_planner.py +37 -0
  165. acellera_konnektor-0.4.0/src/konnektor/tests/network_planners/generators/test_explicit_network_planner.py +168 -0
  166. acellera_konnektor-0.4.0/src/konnektor/tests/network_planners/generators/test_heuristic_maximal_network_planner.py +74 -0
  167. acellera_konnektor-0.4.0/src/konnektor/tests/network_planners/generators/test_maximal_network_planner.py +147 -0
  168. acellera_konnektor-0.4.0/src/konnektor/tests/network_planners/generators/test_mst_network_planner.py +107 -0
  169. acellera_konnektor-0.4.0/src/konnektor/tests/network_planners/generators/test_nedges_network_planner.py +32 -0
  170. acellera_konnektor-0.4.0/src/konnektor/tests/network_planners/generators/test_rmst_network_planner.py +106 -0
  171. acellera_konnektor-0.4.0/src/konnektor/tests/network_planners/generators/test_star_network_planner.py +125 -0
  172. acellera_konnektor-0.4.0/src/konnektor/tests/network_planners/generators/test_starry_sky_network_generator.py +40 -0
  173. acellera_konnektor-0.4.0/src/konnektor/tests/network_planners/generators/test_twin_star_network_planner.py +28 -0
  174. acellera_konnektor-0.4.0/src/konnektor/tests/network_planners/test_parallel_pattern.py +76 -0
  175. acellera_konnektor-0.4.0/src/konnektor/tests/network_tools/__init__.py +0 -0
  176. acellera_konnektor-0.4.0/src/konnektor/tests/network_tools/test_charge_clustering.py +44 -0
  177. acellera_konnektor-0.4.0/src/konnektor/tests/network_tools/test_clustering.py +69 -0
  178. acellera_konnektor-0.4.0/src/konnektor/tests/network_tools/test_concatenate.py +83 -0
  179. acellera_konnektor-0.4.0/src/konnektor/tests/network_tools/test_intermediator.py +39 -0
  180. acellera_konnektor-0.4.0/src/konnektor/tests/network_tools/test_merge.py +34 -0
  181. acellera_konnektor-0.4.0/src/konnektor/tests/network_tools/test_misc.py +83 -0
  182. acellera_konnektor-0.4.0/src/konnektor/tests/test_data.py +27 -0
  183. acellera_konnektor-0.4.0/src/konnektor/tests/test_network_analysis.py +207 -0
  184. acellera_konnektor-0.4.0/src/konnektor/tests/test_network_visualization.py +35 -0
  185. acellera_konnektor-0.4.0/src/konnektor/tests/test_toy_data.py +123 -0
  186. acellera_konnektor-0.4.0/src/konnektor/tests/utils.py +7 -0
  187. acellera_konnektor-0.4.0/src/konnektor/utils/__init__.py +0 -0
  188. acellera_konnektor-0.4.0/src/konnektor/utils/optional_import.py +44 -0
  189. acellera_konnektor-0.4.0/src/konnektor/utils/toy_data.py +233 -0
  190. acellera_konnektor-0.4.0/src/konnektor/visualization/__init__.py +8 -0
  191. acellera_konnektor-0.4.0/src/konnektor/visualization/color_schemes.py +41 -0
  192. acellera_konnektor-0.4.0/src/konnektor/visualization/visualization.py +91 -0
  193. acellera_konnektor-0.4.0/src/konnektor/visualization/widget.py +272 -0
@@ -0,0 +1,12 @@
1
+ [run]
2
+ omit =
3
+ */_version.py
4
+ */tests/dev/*py
5
+
6
+ [report]
7
+ exclude_lines =
8
+ pragma: no cover
9
+ pragma: no-cover
10
+ -no-cov
11
+ raise NotImplementedError
12
+ \.\.\.
@@ -0,0 +1,5 @@
1
+ # applying ruff formatting by atravitz in https://github.com/OpenFreeEnergy/konnektor/pull/109
2
+ 52f9e1018ebc66c3f624e2a89f772f3aa7edd11f
3
+
4
+ # black formatting by riesben in https://github.com/OpenFreeEnergy/konnektor/pull/62
5
+ e18c6abf5297a44cba65c88131b73f813a93dc42
@@ -0,0 +1,25 @@
1
+ <!--
2
+ Thank you for pull request.
3
+ Below are a few things we ask you kindly to self-check before getting a review. Remove checks that are not relevant.
4
+ -->
5
+
6
+ <!--
7
+ Please note any issues this fixes using [closing keywords]( https://help.github.com/articles/closing-issues-using-keywords/ ):
8
+ -->
9
+
10
+ ## PR Author Checklist
11
+ - [ ] added news item, or changes are not user-facing
12
+ - [ ] pre-commit CI passes (comment `pre-commit.ci autofix` to auto-format your PR).
13
+
14
+ ## Tips
15
+ * Comment `pre-commit.ci autofix` to have pre-commit.ci auto-format your PR.
16
+ Since this will create a commit, it is best to make this comment when you are finished with your work.
17
+
18
+ ## Developers certificate of origin
19
+ - [ ] I certify that this contribution is covered by the MIT License [here](https://github.com/OpenFreeEnergy/openfe/blob/main/LICENSE) and the **Developer Certificate of Origin** at <https://developercertificate.org/>.
20
+
21
+
22
+ ## Reviewer Checklist
23
+ - [ ] news entry has been added if necessary
24
+ - [ ] pre-commit auto fix has been run
25
+ - [ ] any API breaks have been documented
@@ -0,0 +1,87 @@
1
+ name: "CI"
2
+ on:
3
+ workflow_dispatch:
4
+ pull_request:
5
+ branches:
6
+ - main
7
+ # Skip CI if changed files only affect the following folders
8
+ # See here for more details: https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#example-excluding-paths
9
+ paths-ignore:
10
+ - "docs/*"
11
+ push:
12
+ branches:
13
+ - main
14
+ schedule:
15
+ # Run a cron job once daily
16
+ - cron: "0 0 * * *"
17
+
18
+ concurrency:
19
+ group: "${{ github.workflow }}-${{ github.ref }}"
20
+ cancel-in-progress: true
21
+
22
+ defaults:
23
+ run:
24
+ shell: bash -leo pipefail {0}
25
+
26
+ jobs:
27
+ tests:
28
+ runs-on: ${{ matrix.OS }}-latest
29
+ name: "tests"
30
+ strategy:
31
+ fail-fast: false
32
+ matrix:
33
+ os: ['ubuntu',]
34
+ python-version:
35
+ - "3.11"
36
+ - "3.12"
37
+ - "3.13"
38
+ include:
39
+ - os: 'macos'
40
+ python-version: "3.12"
41
+
42
+ steps:
43
+ - uses: actions/checkout@v6
44
+ - name: Get current date
45
+ id: date
46
+ run: echo "date=$(date +%Y-%m-%d)" >> "${GITHUB_OUTPUT}"
47
+ - uses: mamba-org/setup-micromamba@v3
48
+ with:
49
+ environment-file: environment.yaml
50
+ environment-name: konnektor
51
+ cache-environment: true
52
+ cache-downloads: true
53
+ cache-environment-key: environment-${{ steps.date.outputs.date }}
54
+ cache-downloads-key: downloads-${{ steps.date.outputs.date }}
55
+ create-args: >-
56
+ python=${{ matrix.python-version }}
57
+
58
+ - name: "Install"
59
+ run: pip install --no-deps -e .
60
+
61
+ - name: "Test imports"
62
+ run: |
63
+ # if we add more to this, consider changing to for + env vars
64
+ python -Ic "import konnektor"
65
+ - name: "Environment Information"
66
+ run: |
67
+ micromamba info
68
+ micromamba list
69
+ - name: "Run tests"
70
+ run: |
71
+ pytest -n auto -v --cov=konnektor --cov-report=xml
72
+ - name: "Test Notebooks"
73
+ run: |
74
+ # another dep I don't want to include in the env
75
+ pip install --no-deps git+https://github.com/OpenFreeEnergy/kartograf.git
76
+ # Only need to test the notebook(s) in tutorials/
77
+ pytest -v --nbval-lax docs/tutorials/
78
+
79
+ - name: codecov
80
+ if: ${{ github.repository == 'OpenFreeEnergy/konnektor' && github.event != 'schedule'}}
81
+ uses: codecov/codecov-action@v6
82
+ with:
83
+ token: ${{ secrets.CODECOV_TOKEN }}
84
+ file: ./coverage.xml
85
+ env_vars: OS,PYTHON
86
+ fail_ci_if_error: True
87
+ verbose: True
@@ -0,0 +1,139 @@
1
+ # Byte-compiled / optimized / DLL files
2
+ __pycache__/
3
+ *.py[cod]
4
+ *$py.class
5
+
6
+ # C extensions
7
+ *.so
8
+
9
+ # Distribution / packaging
10
+ .Python
11
+ build/
12
+ develop-eggs/
13
+ dist/
14
+ downloads/
15
+ eggs/
16
+ .eggs/
17
+ lib/
18
+ lib64/
19
+ parts/
20
+ sdist/
21
+ var/
22
+ wheels/
23
+ pip-wheel-metadata/
24
+ share/python-wheels/
25
+ *.egg-info/
26
+ .installed.cfg
27
+ *.egg
28
+ MANIFEST
29
+
30
+ # PyInstaller
31
+ # Usually these files are written by a python script from a template
32
+ # before PyInstaller builds the exe, so as to inject date/other infos into it.
33
+ *.manifest
34
+ *.spec
35
+
36
+ # Installer logs
37
+ pip-log.txt
38
+ pip-delete-this-directory.txt
39
+
40
+ # Unit test / coverage reports
41
+ htmlcov/
42
+ .tox/
43
+ .nox/
44
+ .coverage
45
+ .coverage.*
46
+ .cache
47
+ nosetests.xml
48
+ coverage.xml
49
+ *.cover
50
+ *.py,cover
51
+ .hypothesis/
52
+ .pytest_cache/
53
+
54
+ # Translations
55
+ *.mo
56
+ *.pot
57
+
58
+ # Django stuff:
59
+ *.log
60
+ local_settings.py
61
+ db.sqlite3
62
+ db.sqlite3-journal
63
+
64
+ # Flask stuff:
65
+ instance/
66
+ .webassets-cache
67
+
68
+ # Scrapy stuff:
69
+ .scrapy
70
+
71
+ # Sphinx documentation
72
+ docs/_build/
73
+
74
+ # PyBuilder
75
+ target/
76
+
77
+ # Jupyter Notebook
78
+ .ipynb_checkpoints
79
+
80
+ # IPython
81
+ profile_default/
82
+ ipython_config.py
83
+
84
+ # pyenv
85
+ .python-version
86
+
87
+ # pipenv
88
+ # According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control.
89
+ # However, in case of collaboration, if having platform-specific dependencies or dependencies
90
+ # having no cross-platform support, pipenv may install dependencies that don't work, or not
91
+ # install all needed dependencies.
92
+ #Pipfile.lock
93
+
94
+ # PEP 582; used by e.g. github.com/David-OConnor/pyflow
95
+ __pypackages__/
96
+
97
+ # Celery stuff
98
+ celerybeat-schedule
99
+ celerybeat.pid
100
+
101
+ # SageMath parsed files
102
+ *.sage.py
103
+
104
+ # Environments
105
+ .env
106
+ .venv
107
+ env/
108
+ venv/
109
+ ENV/
110
+ env.bak/
111
+ venv.bak/
112
+
113
+ # Spyder project settings
114
+ .spyderproject
115
+ .spyproject
116
+
117
+ # Rope project settings
118
+ .ropeproject
119
+
120
+ # mkdocs documentation
121
+ /site
122
+
123
+ # mypy
124
+ .mypy_cache/
125
+ .dmypy.json
126
+ dmypy.json
127
+
128
+ # Pyre type checker
129
+ .pyre/
130
+
131
+ #version
132
+ _version.py
133
+
134
+ #IDE
135
+ .idea
136
+ .vscode
137
+
138
+ # rever
139
+ rever/
@@ -0,0 +1,37 @@
1
+ # See https://pre-commit.com for more information
2
+ # See https://pre-commit.com/hooks.html for more hooks
3
+
4
+ # comment / label "pre-commit.ci autofix" to a pull request to manually trigger auto-fixing
5
+ ci:
6
+ autofix_prs: false
7
+ autoupdate_schedule: monthly
8
+ repos:
9
+ - repo: https://github.com/pre-commit/pre-commit-hooks
10
+ rev: v6.0.0
11
+ hooks:
12
+ - id: trailing-whitespace
13
+ exclude: '\.(pdb|gro|top|sdf|xml|cif|graphml)$'
14
+ - id: check-added-large-files
15
+ args: ["--maxkb=4000"]
16
+ - id: check-case-conflict
17
+ - id: check-symlinks
18
+ - id: check-toml
19
+ - id: check-yaml
20
+ - id: debug-statements
21
+ - id: destroyed-symlinks
22
+ - id: end-of-file-fixer
23
+ exclude: '\.(graphml)$'
24
+
25
+ - repo: https://github.com/tox-dev/pyproject-fmt
26
+ rev: "v2.23.0"
27
+ hooks:
28
+ - id: pyproject-fmt
29
+
30
+ - repo: https://github.com/astral-sh/ruff-pre-commit
31
+ rev: v0.15.15
32
+ hooks:
33
+ # Run the linter.
34
+ - id: ruff
35
+ args: [--fix ]
36
+ # Run the formatter.
37
+ - id: ruff-format
@@ -0,0 +1,19 @@
1
+ version: 2
2
+
3
+ build:
4
+ os: ubuntu-24.04
5
+ tools:
6
+ python: "miniconda3-3.12-24.9"
7
+
8
+ sphinx:
9
+ configuration: docs/conf.py
10
+ fail_on_warning: true
11
+
12
+ conda:
13
+ environment: docs/environment.yaml
14
+
15
+ python:
16
+ # Install our python package before building the docs so setuptools-scm generates the version for RTD to find.
17
+ install:
18
+ - method: pip
19
+ path: .
@@ -0,0 +1,31 @@
1
+ cff-version: 1.2.0
2
+ message: "If you use this software, please cite it as below."
3
+ authors:
4
+ - family-names: "Ries"
5
+ given-names: "Benjamin"
6
+ orcid: "https://orcid.org/0000-0002-0945-8304"
7
+ - family-names: "Gowers"
8
+ given-names: "Richard J."
9
+ orcid: "https://orcid.org/0000-0002-3241-1846"
10
+ - family-names: "Baumann"
11
+ given-names: "Hannah M."
12
+ orcid: "https://orcid.org/0000-0002-1736-7744"
13
+ - family-names: "Swenson"
14
+ given-names: "David W.H."
15
+ orcid: "https://orcid.org/0000-0001-9922-7923"
16
+ - family-names: "Alibay"
17
+ given-names: "Irfan"
18
+ orcid: "https://orcid.org/0000-0001-5787-9130"
19
+ - family-names: "Henry"
20
+ given-names: "Michael M."
21
+ orcid: "https://orcid.org/0000-0002-3870-9993"
22
+ - family-names: "Eastwood"
23
+ given-names: "James R. B."
24
+ orcid: "https://orcid.org/0000-0003-3895-5227"
25
+ - family-names: "Travitz"
26
+ given-names: "Alyssa"
27
+ orcid: "https://orcid.org/0000-0001-5953-8807"
28
+ title: "Konnektor: A Tool for Planning Free Energy Networks"
29
+ url: "https://openfree.energy/"
30
+ repository-code: "https://github.com/OpenFreeEnergy/konnektor"
31
+ # doi: -
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2023 Open Free Energy
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
@@ -0,0 +1,3 @@
1
+ include src/konnektor/tests/data/*.sdf
2
+ include src/konnektor/tests/data/*.mol2
3
+ include src/konnektor/data/*.sdf
@@ -0,0 +1,130 @@
1
+ Metadata-Version: 2.4
2
+ Name: acellera-konnektor
3
+ Version: 0.4.0
4
+ Summary: Konnektor is a package for calculating networks.
5
+ Author-email: Alyssa Travitz <alyssa.travitz@omsf.io>, Benjamin Ries <benjamin-ries@outlook.com>, David Swenson <dwhswenson@gmail.com>, Hannah Baumann <hannah.baumann@omsf.io>, Irfan Alibay <irfan.alibay@gmail.com>, Mike Henry <mike.henry@choderalab.org>, Richard J Gowers <richardjgowers@gmail.com>
6
+ License-Expression: MIT
7
+ Project-URL: Homepage, https://github.com/OpenFreeEnergy/konnektor
8
+ Classifier: Operating System :: OS Independent
9
+ Classifier: Programming Language :: Python :: 3 :: Only
10
+ Classifier: Programming Language :: Python :: 3.10
11
+ Classifier: Programming Language :: Python :: 3.11
12
+ Classifier: Programming Language :: Python :: 3.12
13
+ Classifier: Programming Language :: Python :: 3.13
14
+ Requires-Python: <3.14,>=3.10
15
+ Description-Content-Type: text/markdown
16
+ License-File: LICENSE
17
+ Requires-Dist: ipycytoscape
18
+ Requires-Dist: networkx
19
+ Requires-Dist: numpy
20
+ Requires-Dist: rdkit
21
+ Requires-Dist: scikit-learn
22
+ Requires-Dist: scikit-mol
23
+ Requires-Dist: tqdm
24
+ Provides-Extra: dev
25
+ Requires-Dist: pre-commit; extra == "dev"
26
+ Provides-Extra: test
27
+ Requires-Dist: pytest; extra == "test"
28
+ Requires-Dist: pytest-cov[all]; extra == "test"
29
+ Dynamic: license-file
30
+
31
+ [//]: # (Badges)
32
+ [![Logo](https://img.shields.io/badge/OSMF-OpenFreeEnergy-%23002f4a)](https://openfree.energy/)
33
+ [![build](https://github.com/OpenFreeEnergy/konnektor/actions/workflows/ci.yaml/badge.svg)](https://github.com/OpenFreeEnergy/konnektor/actions/workflows/ci.yaml)
34
+ [![coverage](https://codecov.io/gh/OpenFreeEnergy/konnektor/branch/main/graph/badge.svg)](https://codecov.io/gh/OpenFreeEnergy/konnektor)
35
+ [![Documentation Status](https://readthedocs.org/projects/konnektor/badge/?version=latest)](https://konnektor.readthedocs.io/en/latest/?badge=latest)
36
+ [![pre-commit.ci status](https://results.pre-commit.ci/badge/github/OpenFreeEnergy/konnektor/main.svg)](https://results.pre-commit.ci/latest/github/OpenFreeEnergy/konnektor/main)
37
+ [![DOI](https://zenodo.org/badge/614010709.svg)](https://doi.org/10.5281/zenodo.18868798)
38
+
39
+ <p align="center">
40
+ <picture align="center">
41
+ <source media="(prefers-color-scheme: dark)" srcset="https://github.com/OpenFreeEnergy/konnektor/blob/2e52eadb32a4a2813bc81fc3d0499f7563c8b4e6/.img/konnektor_logo_5.png">
42
+ <source media="(prefers-color-scheme: light)" srcset="https://github.com/OpenFreeEnergy/konnektor/blob/2e52eadb32a4a2813bc81fc3d0499f7563c8b4e6/.img/konnektor_logo_4.png">
43
+ <img alt="Konnektor`s fancy logo" src="https://github.com/OpenFreeEnergy/konnektor/blob/2e52eadb32a4a2813bc81fc3d0499f7563c8b4e6/.img/konnektor_logo_4.png" width=35% >
44
+ </picture>
45
+ </p>
46
+
47
+ Konnektor: A library for planning networks for use in free energy calculations
48
+ ==============================================================================
49
+
50
+ Check out our article on Konnektor in the Journal of Chemical Information and Modeling: [Konnektor: A Framework for Using Graph Theory to Plan Networks for Free Energy Calculations - Benjamin Ries*, Richard J. Gowers, Hannah M. Baumann, David W. H. Swenson, Michael M. Henry, James R. B. Eastwood, Irfan Alibay, and David Mobley](https://pubs.acs.org/doi/10.1021/acs.jcim.4c01710).
51
+
52
+ You can also find our pre-print on [ChemRxiv](https://chemrxiv.org/engage/chemrxiv/article-details/66d9b574cec5d6c1423643e4).
53
+
54
+
55
+ ## Content
56
+ ### Implemented Network Layouts
57
+ Several Network layout generating algorithms are implemented in Konnektor, with different advantages and disadvantages.
58
+ From an algorithmic perspective most of the algorithms are actually a reduction method of the Maximal Network.
59
+ To speed-up the Maximal Network Algorithm we implemented an parallelization scheme to it. Below you can find some of our layouts:
60
+
61
+ ![image](docs/_static/img/network_layouts.png)
62
+
63
+ ### Tools for handling Networks
64
+ Konnektor implements tools, that allow for example to merge (if a node is shared in the networks) or concatenate (if no node is shared) networks,
65
+ append single molecules (nodes) to a network or delete transformations/molecules from a network.
66
+
67
+ ![image](docs/_static/img/network_operations_small.png)
68
+
69
+ ### Enable More Complex Higher Order Networks
70
+ Another goal of Konnektor is to go beyond the standard network layout algorihtms and allow easy implementation of more complex network algorithms.
71
+ This is achieved by combining the Tools and Network Generator Algorithms, to build up to more advanced workflows.
72
+
73
+ ![image](docs/_static/img/advanced_networking.png)
74
+
75
+ ## Code Example
76
+
77
+ ```python3
78
+ # Here we generate some input data.
79
+ from konnektor.data import get_benzene_ligands
80
+
81
+ compounds = list(filter(lambda x: not x.name in ["lig_2", "lig_3", "lig_4", "lig_7"],
82
+ get_benzene_ligands()))
83
+
84
+ # Pick your Favourite Network layout with favourite AtomMapper and Scorer
85
+ from openfe.setup import KartografAtomMapper, lomap_scorers
86
+ from konnektor.network_planners import CyclicNetworkGenerator
87
+
88
+ networker = CyclicNetworkGenerator(mappers=KartografAtomMapper(),
89
+ scorer=lomap_scorers.default_lomap_score)
90
+
91
+ # Generate Network
92
+ network = networker.generate_ligand_network(compounds)
93
+ network.name = "Cyclic Network"
94
+
95
+ # Visualize the generated network
96
+ from konnektor.visualization import draw_ligand_network
97
+ fig = draw_ligand_network(network=network, title=network.name)
98
+
99
+ fig.show()
100
+ ```
101
+ ![example fig](.img/example_out.png)
102
+
103
+
104
+ ## Installation
105
+
106
+ See our [installation guide](https://konnektor.openfree.energy/en/latest/install.html) for full details, or see below for developer install instructions.
107
+
108
+ ### Developer Install
109
+ The development version of **konnektor** can be install directly from this repo:
110
+
111
+ ```shell
112
+ git clone https://github.com/OpenFreeEnergy/konnektor.git
113
+
114
+ cd konnektor
115
+ micromamba env create -f environment.yaml
116
+
117
+ micromamba activate konnektor
118
+ pip install -e .
119
+
120
+ ```
121
+
122
+ ## License
123
+ This library is made available under the MIT open source license.
124
+
125
+ ## Authors
126
+
127
+ The OpenFE development team.
128
+
129
+ ## Acknowledgments
130
+ Thanks to Enrico Ruijsenaars, Jenke Scheen, and Josh Horton for great discussions!
@@ -0,0 +1,100 @@
1
+ [//]: # (Badges)
2
+ [![Logo](https://img.shields.io/badge/OSMF-OpenFreeEnergy-%23002f4a)](https://openfree.energy/)
3
+ [![build](https://github.com/OpenFreeEnergy/konnektor/actions/workflows/ci.yaml/badge.svg)](https://github.com/OpenFreeEnergy/konnektor/actions/workflows/ci.yaml)
4
+ [![coverage](https://codecov.io/gh/OpenFreeEnergy/konnektor/branch/main/graph/badge.svg)](https://codecov.io/gh/OpenFreeEnergy/konnektor)
5
+ [![Documentation Status](https://readthedocs.org/projects/konnektor/badge/?version=latest)](https://konnektor.readthedocs.io/en/latest/?badge=latest)
6
+ [![pre-commit.ci status](https://results.pre-commit.ci/badge/github/OpenFreeEnergy/konnektor/main.svg)](https://results.pre-commit.ci/latest/github/OpenFreeEnergy/konnektor/main)
7
+ [![DOI](https://zenodo.org/badge/614010709.svg)](https://doi.org/10.5281/zenodo.18868798)
8
+
9
+ <p align="center">
10
+ <picture align="center">
11
+ <source media="(prefers-color-scheme: dark)" srcset="https://github.com/OpenFreeEnergy/konnektor/blob/2e52eadb32a4a2813bc81fc3d0499f7563c8b4e6/.img/konnektor_logo_5.png">
12
+ <source media="(prefers-color-scheme: light)" srcset="https://github.com/OpenFreeEnergy/konnektor/blob/2e52eadb32a4a2813bc81fc3d0499f7563c8b4e6/.img/konnektor_logo_4.png">
13
+ <img alt="Konnektor`s fancy logo" src="https://github.com/OpenFreeEnergy/konnektor/blob/2e52eadb32a4a2813bc81fc3d0499f7563c8b4e6/.img/konnektor_logo_4.png" width=35% >
14
+ </picture>
15
+ </p>
16
+
17
+ Konnektor: A library for planning networks for use in free energy calculations
18
+ ==============================================================================
19
+
20
+ Check out our article on Konnektor in the Journal of Chemical Information and Modeling: [Konnektor: A Framework for Using Graph Theory to Plan Networks for Free Energy Calculations - Benjamin Ries*, Richard J. Gowers, Hannah M. Baumann, David W. H. Swenson, Michael M. Henry, James R. B. Eastwood, Irfan Alibay, and David Mobley](https://pubs.acs.org/doi/10.1021/acs.jcim.4c01710).
21
+
22
+ You can also find our pre-print on [ChemRxiv](https://chemrxiv.org/engage/chemrxiv/article-details/66d9b574cec5d6c1423643e4).
23
+
24
+
25
+ ## Content
26
+ ### Implemented Network Layouts
27
+ Several Network layout generating algorithms are implemented in Konnektor, with different advantages and disadvantages.
28
+ From an algorithmic perspective most of the algorithms are actually a reduction method of the Maximal Network.
29
+ To speed-up the Maximal Network Algorithm we implemented an parallelization scheme to it. Below you can find some of our layouts:
30
+
31
+ ![image](docs/_static/img/network_layouts.png)
32
+
33
+ ### Tools for handling Networks
34
+ Konnektor implements tools, that allow for example to merge (if a node is shared in the networks) or concatenate (if no node is shared) networks,
35
+ append single molecules (nodes) to a network or delete transformations/molecules from a network.
36
+
37
+ ![image](docs/_static/img/network_operations_small.png)
38
+
39
+ ### Enable More Complex Higher Order Networks
40
+ Another goal of Konnektor is to go beyond the standard network layout algorihtms and allow easy implementation of more complex network algorithms.
41
+ This is achieved by combining the Tools and Network Generator Algorithms, to build up to more advanced workflows.
42
+
43
+ ![image](docs/_static/img/advanced_networking.png)
44
+
45
+ ## Code Example
46
+
47
+ ```python3
48
+ # Here we generate some input data.
49
+ from konnektor.data import get_benzene_ligands
50
+
51
+ compounds = list(filter(lambda x: not x.name in ["lig_2", "lig_3", "lig_4", "lig_7"],
52
+ get_benzene_ligands()))
53
+
54
+ # Pick your Favourite Network layout with favourite AtomMapper and Scorer
55
+ from openfe.setup import KartografAtomMapper, lomap_scorers
56
+ from konnektor.network_planners import CyclicNetworkGenerator
57
+
58
+ networker = CyclicNetworkGenerator(mappers=KartografAtomMapper(),
59
+ scorer=lomap_scorers.default_lomap_score)
60
+
61
+ # Generate Network
62
+ network = networker.generate_ligand_network(compounds)
63
+ network.name = "Cyclic Network"
64
+
65
+ # Visualize the generated network
66
+ from konnektor.visualization import draw_ligand_network
67
+ fig = draw_ligand_network(network=network, title=network.name)
68
+
69
+ fig.show()
70
+ ```
71
+ ![example fig](.img/example_out.png)
72
+
73
+
74
+ ## Installation
75
+
76
+ See our [installation guide](https://konnektor.openfree.energy/en/latest/install.html) for full details, or see below for developer install instructions.
77
+
78
+ ### Developer Install
79
+ The development version of **konnektor** can be install directly from this repo:
80
+
81
+ ```shell
82
+ git clone https://github.com/OpenFreeEnergy/konnektor.git
83
+
84
+ cd konnektor
85
+ micromamba env create -f environment.yaml
86
+
87
+ micromamba activate konnektor
88
+ pip install -e .
89
+
90
+ ```
91
+
92
+ ## License
93
+ This library is made available under the MIT open source license.
94
+
95
+ ## Authors
96
+
97
+ The OpenFE development team.
98
+
99
+ ## Acknowledgments
100
+ Thanks to Enrico Ruijsenaars, Jenke Scheen, and Josh Horton for great discussions!