caddforge-docs 0.3.0__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (152) hide show
  1. caddforge_docs/__init__.py +1 -0
  2. caddforge_docs/cli.py +20 -0
  3. caddforge_docs/server.py +124 -0
  4. caddforge_docs/site/404.html +2118 -0
  5. caddforge_docs/site/assets/_mkdocstrings.css +237 -0
  6. caddforge_docs/site/assets/images/favicon.png +0 -0
  7. caddforge_docs/site/assets/javascripts/bundle.d7400e89.min.js +16 -0
  8. caddforge_docs/site/assets/javascripts/bundle.d7400e89.min.js.map +7 -0
  9. caddforge_docs/site/assets/javascripts/workers/search.2c215733.min.js +42 -0
  10. caddforge_docs/site/assets/javascripts/workers/search.2c215733.min.js.map +7 -0
  11. caddforge_docs/site/assets/licenses/W3C-Software-and-Document-2015.txt +15 -0
  12. caddforge_docs/site/assets/licenses/autogrid-COPYING-GPL-2.txt +339 -0
  13. caddforge_docs/site/assets/licenses/autogrid-GCC-RUNTIME-COPYING-GPL-3.txt +674 -0
  14. caddforge_docs/site/assets/licenses/autogrid-GCC-RUNTIME-EXCEPTION.txt +73 -0
  15. caddforge_docs/site/assets/licenses/autogrid-GCC-RUNTIME-NOTICE.txt +24 -0
  16. caddforge_docs/site/assets/licenses/caddforge-opencosmors-COPYING.txt +674 -0
  17. caddforge_docs/site/assets/licenses/caddforge-opencosmors-LICENSE.txt +165 -0
  18. caddforge_docs/site/assets/licenses/caddforge-unidock-tools-LICENSE.txt +202 -0
  19. caddforge_docs/site/assets/licenses/clipboard-LICENSE.txt +19 -0
  20. caddforge_docs/site/assets/licenses/escape-html-LICENSE.txt +2 -0
  21. caddforge_docs/site/assets/licenses/focus-visible-LICENSE.txt +4 -0
  22. caddforge_docs/site/assets/licenses/fontawesome-LICENSE.txt +165 -0
  23. caddforge_docs/site/assets/licenses/fuzzaldrin-plus-LICENSE.txt +21 -0
  24. caddforge_docs/site/assets/licenses/lunr-LICENSE.txt +17 -0
  25. caddforge_docs/site/assets/licenses/material-LICENSE.txt +20 -0
  26. caddforge_docs/site/assets/licenses/material-design-color-LICENSE.txt +31 -0
  27. caddforge_docs/site/assets/licenses/material-shadows-LICENSE.txt +31 -0
  28. caddforge_docs/site/assets/licenses/mkdocs-material-LICENSE.txt +19 -0
  29. caddforge_docs/site/assets/licenses/mkdocs-material-extensions-LICENSE.txt +21 -0
  30. caddforge_docs/site/assets/licenses/mkdocs-section-index-LICENSE.txt +21 -0
  31. caddforge_docs/site/assets/licenses/mkdocstrings-LICENSE.txt +15 -0
  32. caddforge_docs/site/assets/licenses/mkdocstrings-python-LICENSE.txt +15 -0
  33. caddforge_docs/site/assets/licenses/octicons-LICENSE.txt +21 -0
  34. caddforge_docs/site/assets/licenses/preact-LICENSE.txt +19 -0
  35. caddforge_docs/site/assets/licenses/properdocs-LICENSE.txt +26 -0
  36. caddforge_docs/site/assets/licenses/pymdown-extensions-LICENSE.txt +113 -0
  37. caddforge_docs/site/assets/licenses/rxjs-LICENSE.txt +180 -0
  38. caddforge_docs/site/assets/licenses/simple-LICENSE.txt +30 -0
  39. caddforge_docs/site/assets/licenses/tiny-emitter-LICENSE.txt +19 -0
  40. caddforge_docs/site/assets/licenses/tslib-LICENSE.txt +12 -0
  41. caddforge_docs/site/assets/licenses/zeno-rocha-components-LICENSE.txt +22 -0
  42. caddforge_docs/site/assets/stylesheets/main.ec1eaa64.min.css +1 -0
  43. caddforge_docs/site/assets/stylesheets/main.ec1eaa64.min.css.map +1 -0
  44. caddforge_docs/site/assets/stylesheets/palette.ab4e12ef.min.css +1 -0
  45. caddforge_docs/site/assets/stylesheets/palette.ab4e12ef.min.css.map +1 -0
  46. caddforge_docs/site/core/cli/index.html +2446 -0
  47. caddforge_docs/site/core/concepts/index.html +2340 -0
  48. caddforge_docs/site/core/configuration/index.html +2300 -0
  49. caddforge_docs/site/core/index.html +2170 -0
  50. caddforge_docs/site/core/jobs-results/index.html +2315 -0
  51. caddforge_docs/site/core/plugins/index.html +2200 -0
  52. caddforge_docs/site/core/slurm/index.html +2562 -0
  53. caddforge_docs/site/development/ci-publishing/index.html +2345 -0
  54. caddforge_docs/site/development/contributing/index.html +2311 -0
  55. caddforge_docs/site/development/documentation/index.html +2380 -0
  56. caddforge_docs/site/development/index.html +2201 -0
  57. caddforge_docs/site/development/release-notes/index.html +2504 -0
  58. caddforge_docs/site/development/release-readiness/index.html +2333 -0
  59. caddforge_docs/site/development/security/index.html +2181 -0
  60. caddforge_docs/site/development/tool-authoring/index.html +2435 -0
  61. caddforge_docs/site/examples/index.html +2465 -0
  62. caddforge_docs/site/examples/manifest.json +158 -0
  63. caddforge_docs/site/examples/minimize/component_overrides.yaml +14 -0
  64. caddforge_docs/site/examples/minimize/ligand_only.yaml +13 -0
  65. caddforge_docs/site/examples/minimize/pipeline_docking.yaml +84 -0
  66. caddforge_docs/site/examples/minimize/pipeline_scatter.yaml +49 -0
  67. caddforge_docs/site/examples/minimize/pocket_free_shell_restrained.yaml +13 -0
  68. caddforge_docs/site/examples/minimize/pocket_restrained.yaml +13 -0
  69. caddforge_docs/site/examples/minimize/prepared_metal.yaml +14 -0
  70. caddforge_docs/site/examples/minimize/sidechains_free_backbone_fixed.yaml +13 -0
  71. caddforge_docs/site/examples/minimize/sidechains_free_backbone_restrained.yaml +13 -0
  72. caddforge_docs/site/examples/pipelines/descriptor-model-and-candidate-filter.yaml +44 -0
  73. caddforge_docs/site/examples/pipelines/dock-extract-and-minimize-poses.yaml +85 -0
  74. caddforge_docs/site/examples/pipelines/docking-screen-and-rescore.yaml +55 -0
  75. caddforge_docs/site/examples/pipelines/flexible-gnina-to-openbpmd-to-md-to-abfe.yaml +189 -0
  76. caddforge_docs/site/examples/pipelines/gnina-flexible-complex-artifacts.yaml +52 -0
  77. caddforge_docs/site/examples/pipelines/minimize-a-multi-pose-sdf.yaml +46 -0
  78. caddforge_docs/site/examples/pipelines/pose-level-md-selection.yaml +95 -0
  79. caddforge_docs/site/examples/pipelines/result-collection-and-diagnostics.yaml +55 -0
  80. caddforge_docs/site/examples/quickstart/diagnostics.yaml +8 -0
  81. caddforge_docs/site/examples/quickstart/index.html +2172 -0
  82. caddforge_docs/site/examples/quickstart/pipeline.yaml +23 -0
  83. caddforge_docs/site/examples/quickstart/run.py +18 -0
  84. caddforge_docs/site/examples/quickstart/run_pipeline.py +6 -0
  85. caddforge_docs/site/examples/quickstart/scores.csv +7 -0
  86. caddforge_docs/site/examples/quickstart/values.csv +31 -0
  87. caddforge_docs/site/examples/run_tool.py +40 -0
  88. caddforge_docs/site/examples/tools/datascience-csv-scatter.yaml +17 -0
  89. caddforge_docs/site/examples/tools/datascience-distribution-diagnostics.yaml +10 -0
  90. caddforge_docs/site/examples/tools/descriptors-ani-conformers.yaml +9 -0
  91. caddforge_docs/site/examples/tools/descriptors-ani-psa.yaml +9 -0
  92. caddforge_docs/site/examples/tools/descriptors-cluster-molecules.yaml +11 -0
  93. caddforge_docs/site/examples/tools/descriptors-phesa.yaml +7 -0
  94. caddforge_docs/site/examples/tools/docking-gnina.yaml +12 -0
  95. caddforge_docs/site/examples/tools/docking-idockya.yaml +8 -0
  96. caddforge_docs/site/examples/tools/docking-unidock.yaml +12 -0
  97. caddforge_docs/site/examples/tools/fep-openfe-abfe.yaml +53 -0
  98. caddforge_docs/site/examples/tools/fep-openfe-rbfe-septop.yaml +23 -0
  99. caddforge_docs/site/examples/tools/md-center-and-align.yaml +16 -0
  100. caddforge_docs/site/examples/tools/md-cluster-representative.yaml +16 -0
  101. caddforge_docs/site/examples/tools/md-extract-frames.yaml +17 -0
  102. caddforge_docs/site/examples/tools/md-fix-structure.yaml +20 -0
  103. caddforge_docs/site/examples/tools/md-grand.yaml +28 -0
  104. caddforge_docs/site/examples/tools/md-inducia.yaml +29 -0
  105. caddforge_docs/site/examples/tools/md-minimize.yaml +13 -0
  106. caddforge_docs/site/examples/tools/md-openbpmd.yaml +11 -0
  107. caddforge_docs/site/examples/tools/md-plain-md.yaml +28 -0
  108. caddforge_docs/site/examples/tools/ml-explore-classifier.yaml +5 -0
  109. caddforge_docs/site/examples/tools/ml-model-factory.yaml +32 -0
  110. caddforge_docs/site/examples/tools/ml-model-zoo.yaml +16 -0
  111. caddforge_docs/site/examples/tools/ml-pca.yaml +10 -0
  112. caddforge_docs/site/examples/tools/ml-simple-gp.yaml +17 -0
  113. caddforge_docs/site/examples/tools/qm-transfer-free-energy.yaml +11 -0
  114. caddforge_docs/site/explanation/references/index.html +2218 -0
  115. caddforge_docs/site/explanation/reproducibility/index.html +2306 -0
  116. caddforge_docs/site/explanation/third-party-notices/index.html +2599 -0
  117. caddforge_docs/site/getting-started/first-pipeline/index.html +2195 -0
  118. caddforge_docs/site/getting-started/first-workflow/index.html +2329 -0
  119. caddforge_docs/site/getting-started/index.html +2200 -0
  120. caddforge_docs/site/getting-started/installation/index.html +2541 -0
  121. caddforge_docs/site/gui/index.html +2267 -0
  122. caddforge_docs/site/gui/plugin-authoring/index.html +2280 -0
  123. caddforge_docs/site/gui/walkthrough/index.html +2181 -0
  124. caddforge_docs/site/how-to/jobs/index.html +2195 -0
  125. caddforge_docs/site/how-to/scatter/index.html +2193 -0
  126. caddforge_docs/site/how-to/troubleshooting/index.html +2429 -0
  127. caddforge_docs/site/index.html +2359 -0
  128. caddforge_docs/site/objects.inv +0 -0
  129. caddforge_docs/site/pipelines/artifacts/index.html +2314 -0
  130. caddforge_docs/site/pipelines/built-ins/index.html +2670 -0
  131. caddforge_docs/site/pipelines/examples/index.html +3186 -0
  132. caddforge_docs/site/pipelines/index.html +2164 -0
  133. caddforge_docs/site/pipelines/specification/index.html +2278 -0
  134. caddforge_docs/site/plugins/datascience/index.html +2405 -0
  135. caddforge_docs/site/plugins/descriptors/index.html +2609 -0
  136. caddforge_docs/site/plugins/docking/index.html +2480 -0
  137. caddforge_docs/site/plugins/fep/index.html +2508 -0
  138. caddforge_docs/site/plugins/index.html +2216 -0
  139. caddforge_docs/site/plugins/md/index.html +3795 -0
  140. caddforge_docs/site/plugins/ml/index.html +2815 -0
  141. caddforge_docs/site/plugins/qm/index.html +2309 -0
  142. caddforge_docs/site/plugins/version-matrix/index.html +2449 -0
  143. caddforge_docs/site/reference/api/index.html +4414 -0
  144. caddforge_docs/site/reference/index.html +2166 -0
  145. caddforge_docs/site/search/search_index.json +1 -0
  146. caddforge_docs/site/sitemap.xml +191 -0
  147. caddforge_docs/site/sitemap.xml.gz +0 -0
  148. caddforge_docs-0.3.0.dist-info/METADATA +158 -0
  149. caddforge_docs-0.3.0.dist-info/RECORD +152 -0
  150. caddforge_docs-0.3.0.dist-info/WHEEL +4 -0
  151. caddforge_docs-0.3.0.dist-info/entry_points.txt +2 -0
  152. caddforge_docs-0.3.0.dist-info/licenses/LICENSE +21 -0
@@ -0,0 +1,3186 @@
1
+
2
+ <!doctype html>
3
+ <html lang="en" class="no-js">
4
+ <head>
5
+
6
+ <meta charset="utf-8">
7
+ <meta name="viewport" content="width=device-width,initial-scale=1">
8
+
9
+ <meta name="description" content="Central documentation for the CADDForge CADD toolbox framework.">
10
+
11
+
12
+
13
+ <link rel="canonical" href="https://idorsia.github.io/caddforge-docs/pipelines/examples/">
14
+
15
+
16
+ <link rel="prev" href="../built-ins/">
17
+
18
+
19
+ <link rel="next" href="../../plugins/">
20
+
21
+
22
+
23
+
24
+
25
+ <link rel="icon" href="../../assets/images/favicon.png">
26
+ <meta name="generator" content="mkdocs-ProperDocs 1.6.7, mkdocs-material-9.7.7">
27
+
28
+
29
+
30
+ <title>Examples - CADDForge</title>
31
+
32
+
33
+
34
+ <link rel="stylesheet" href="../../assets/stylesheets/main.ec1eaa64.min.css">
35
+
36
+
37
+ <link rel="stylesheet" href="../../assets/stylesheets/palette.ab4e12ef.min.css">
38
+
39
+
40
+
41
+
42
+
43
+
44
+
45
+
46
+
47
+
48
+
49
+
50
+ <link rel="stylesheet" href="../../assets/_mkdocstrings.css">
51
+
52
+ <script>__md_scope=new URL("../..",location),__md_hash=e=>[...e].reduce(((e,_)=>(e<<5)-e+_.charCodeAt(0)),0),__md_get=(e,_=localStorage,t=__md_scope)=>JSON.parse(_.getItem(t.pathname+"."+e)),__md_set=(e,_,t=localStorage,a=__md_scope)=>{try{t.setItem(a.pathname+"."+e,JSON.stringify(_))}catch(e){}}</script>
53
+
54
+
55
+
56
+
57
+
58
+ </head>
59
+
60
+
61
+
62
+
63
+
64
+
65
+
66
+
67
+
68
+ <body dir="ltr" data-md-color-scheme="default" data-md-color-primary="blue" data-md-color-accent="teal">
69
+
70
+
71
+ <input class="md-toggle" data-md-toggle="drawer" type="checkbox" id="__drawer" autocomplete="off">
72
+ <input class="md-toggle" data-md-toggle="search" type="checkbox" id="__search" autocomplete="off">
73
+ <label class="md-overlay" for="__drawer"></label>
74
+ <div data-md-component="skip">
75
+
76
+
77
+ <a href="#pipeline-examples" class="md-skip">
78
+ Skip to content
79
+ </a>
80
+
81
+ </div>
82
+ <div data-md-component="announce">
83
+
84
+ </div>
85
+
86
+
87
+
88
+
89
+
90
+
91
+ <header class="md-header md-header--shadow" data-md-component="header">
92
+ <nav class="md-header__inner md-grid" aria-label="Header">
93
+ <a href="../.." title="CADDForge" class="md-header__button md-logo" aria-label="CADDForge" data-md-component="logo">
94
+
95
+
96
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54"/></svg>
97
+
98
+ </a>
99
+ <label class="md-header__button md-icon" for="__drawer">
100
+
101
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M3 6h18v2H3zm0 5h18v2H3zm0 5h18v2H3z"/></svg>
102
+ </label>
103
+ <div class="md-header__title" data-md-component="header-title">
104
+ <div class="md-header__ellipsis">
105
+ <div class="md-header__topic">
106
+ <span class="md-ellipsis">
107
+ CADDForge
108
+ </span>
109
+ </div>
110
+ <div class="md-header__topic" data-md-component="header-topic">
111
+ <span class="md-ellipsis">
112
+
113
+ Examples
114
+
115
+ </span>
116
+ </div>
117
+ </div>
118
+ </div>
119
+
120
+
121
+ <form class="md-header__option" data-md-component="palette">
122
+
123
+
124
+
125
+
126
+ <input class="md-option" data-md-color-media="(prefers-color-scheme: light)" data-md-color-scheme="default" data-md-color-primary="blue" data-md-color-accent="teal" aria-label="Switch to dark mode" type="radio" name="__palette" id="__palette_0">
127
+
128
+ <label class="md-header__button md-icon" title="Switch to dark mode" for="__palette_1" hidden>
129
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="m17.75 4.09-2.53 1.94.91 3.06-2.63-1.81-2.63 1.81.91-3.06-2.53-1.94L12.44 4l1.06-3 1.06 3zm3.5 6.91-1.64 1.25.59 1.98-1.7-1.17-1.7 1.17.59-1.98L15.75 11l2.06-.05L18.5 9l.69 1.95zm-2.28 4.95c.83-.08 1.72 1.1 1.19 1.85-.32.45-.66.87-1.08 1.27C15.17 23 8.84 23 4.94 19.07c-3.91-3.9-3.91-10.24 0-14.14.4-.4.82-.76 1.27-1.08.75-.53 1.93.36 1.85 1.19-.27 2.86.69 5.83 2.89 8.02a9.96 9.96 0 0 0 8.02 2.89m-1.64 2.02a12.08 12.08 0 0 1-7.8-3.47c-2.17-2.19-3.33-5-3.49-7.82-2.81 3.14-2.7 7.96.31 10.98 3.02 3.01 7.84 3.12 10.98.31"/></svg>
130
+ </label>
131
+
132
+
133
+
134
+
135
+
136
+ <input class="md-option" data-md-color-media="(prefers-color-scheme: dark)" data-md-color-scheme="slate" data-md-color-primary="blue" data-md-color-accent="teal" aria-label="Switch to light mode" type="radio" name="__palette" id="__palette_1">
137
+
138
+ <label class="md-header__button md-icon" title="Switch to light mode" for="__palette_0" hidden>
139
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M12 7a5 5 0 0 1 5 5 5 5 0 0 1-5 5 5 5 0 0 1-5-5 5 5 0 0 1 5-5m0 2a3 3 0 0 0-3 3 3 3 0 0 0 3 3 3 3 0 0 0 3-3 3 3 0 0 0-3-3m0-7 2.39 3.42C13.65 5.15 12.84 5 12 5s-1.65.15-2.39.42zM3.34 7l4.16-.35A7.2 7.2 0 0 0 5.94 8.5c-.44.74-.69 1.5-.83 2.29zm.02 10 1.76-3.77a7.131 7.131 0 0 0 2.38 4.14zM20.65 7l-1.77 3.79a7.02 7.02 0 0 0-2.38-4.15zm-.01 10-4.14.36c.59-.51 1.12-1.14 1.54-1.86.42-.73.69-1.5.83-2.29zM12 22l-2.41-3.44c.74.27 1.55.44 2.41.44.82 0 1.63-.17 2.37-.44z"/></svg>
140
+ </label>
141
+
142
+
143
+ </form>
144
+
145
+
146
+
147
+ <script>var palette=__md_get("__palette");if(palette&&palette.color){if("(prefers-color-scheme)"===palette.color.media){var media=matchMedia("(prefers-color-scheme: light)"),input=document.querySelector(media.matches?"[data-md-color-media='(prefers-color-scheme: light)']":"[data-md-color-media='(prefers-color-scheme: dark)']");palette.color.media=input.getAttribute("data-md-color-media"),palette.color.scheme=input.getAttribute("data-md-color-scheme"),palette.color.primary=input.getAttribute("data-md-color-primary"),palette.color.accent=input.getAttribute("data-md-color-accent")}for(var[key,value]of Object.entries(palette.color))document.body.setAttribute("data-md-color-"+key,value)}</script>
148
+
149
+
150
+
151
+
152
+
153
+ <label class="md-header__button md-icon" for="__search">
154
+
155
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5"/></svg>
156
+ </label>
157
+ <div class="md-search" data-md-component="search" role="dialog">
158
+ <label class="md-search__overlay" for="__search"></label>
159
+ <div class="md-search__inner" role="search">
160
+ <form class="md-search__form" name="search">
161
+ <input type="text" class="md-search__input" name="query" aria-label="Search" placeholder="Search" autocapitalize="off" autocorrect="off" autocomplete="off" spellcheck="false" data-md-component="search-query" required>
162
+ <label class="md-search__icon md-icon" for="__search">
163
+
164
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5"/></svg>
165
+
166
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11z"/></svg>
167
+ </label>
168
+ <nav class="md-search__options" aria-label="Search">
169
+
170
+ <button type="reset" class="md-search__icon md-icon" title="Clear" aria-label="Clear" tabindex="-1">
171
+
172
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z"/></svg>
173
+ </button>
174
+ </nav>
175
+
176
+ <div class="md-search__suggest" data-md-component="search-suggest"></div>
177
+
178
+ </form>
179
+ <div class="md-search__output">
180
+ <div class="md-search__scrollwrap" tabindex="0" data-md-scrollfix>
181
+ <div class="md-search-result" data-md-component="search-result">
182
+ <div class="md-search-result__meta">
183
+ Initializing search
184
+ </div>
185
+ <ol class="md-search-result__list" role="presentation"></ol>
186
+ </div>
187
+ </div>
188
+ </div>
189
+ </div>
190
+ </div>
191
+
192
+
193
+
194
+ <div class="md-header__source">
195
+ <a href="https://github.com/idorsia/caddforge-docs" title="Go to repository" class="md-source" data-md-component="source">
196
+ <div class="md-source__icon md-icon">
197
+
198
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--! Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M439.6 236.1 244 40.5c-5.4-5.5-12.8-8.5-20.4-8.5s-15 3-20.4 8.4L162.5 81l51.5 51.5c27.1-9.1 52.7 16.8 43.4 43.7l49.7 49.7c34.2-11.8 61.2 31 35.5 56.7-26.5 26.5-70.2-2.9-56-37.3L240.3 199v121.9c25.3 12.5 22.3 41.8 9.1 55-6.4 6.4-15.2 10.1-24.3 10.1s-17.8-3.6-24.3-10.1c-17.6-17.6-11.1-46.9 11.2-56v-123c-20.8-8.5-24.6-30.7-18.6-45L142.6 101 8.5 235.1C3 240.6 0 247.9 0 255.5s3 15 8.5 20.4l195.6 195.7c5.4 5.4 12.7 8.4 20.4 8.4s15-3 20.4-8.4l194.7-194.7c5.4-5.4 8.4-12.8 8.4-20.4s-3-15-8.4-20.4"/></svg>
199
+ </div>
200
+ <div class="md-source__repository">
201
+ caddforge-docs
202
+ </div>
203
+ </a>
204
+ </div>
205
+
206
+ </nav>
207
+
208
+ </header>
209
+
210
+ <div class="md-container" data-md-component="container">
211
+
212
+
213
+
214
+
215
+
216
+
217
+ <main class="md-main" data-md-component="main">
218
+ <div class="md-main__inner md-grid">
219
+
220
+
221
+
222
+ <div class="md-sidebar md-sidebar--primary" data-md-component="sidebar" data-md-type="navigation" >
223
+ <div class="md-sidebar__scrollwrap">
224
+ <div class="md-sidebar__inner">
225
+
226
+
227
+
228
+
229
+ <nav class="md-nav md-nav--primary" aria-label="Navigation" data-md-level="0">
230
+ <label class="md-nav__title" for="__drawer">
231
+ <a href="../.." title="CADDForge" class="md-nav__button md-logo" aria-label="CADDForge" data-md-component="logo">
232
+
233
+
234
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54"/></svg>
235
+
236
+ </a>
237
+ CADDForge
238
+ </label>
239
+
240
+ <div class="md-nav__source">
241
+ <a href="https://github.com/idorsia/caddforge-docs" title="Go to repository" class="md-source" data-md-component="source">
242
+ <div class="md-source__icon md-icon">
243
+
244
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--! Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M439.6 236.1 244 40.5c-5.4-5.5-12.8-8.5-20.4-8.5s-15 3-20.4 8.4L162.5 81l51.5 51.5c27.1-9.1 52.7 16.8 43.4 43.7l49.7 49.7c34.2-11.8 61.2 31 35.5 56.7-26.5 26.5-70.2-2.9-56-37.3L240.3 199v121.9c25.3 12.5 22.3 41.8 9.1 55-6.4 6.4-15.2 10.1-24.3 10.1s-17.8-3.6-24.3-10.1c-17.6-17.6-11.1-46.9 11.2-56v-123c-20.8-8.5-24.6-30.7-18.6-45L142.6 101 8.5 235.1C3 240.6 0 247.9 0 255.5s3 15 8.5 20.4l195.6 195.7c5.4 5.4 12.7 8.4 20.4 8.4s15-3 20.4-8.4l194.7-194.7c5.4-5.4 8.4-12.8 8.4-20.4s-3-15-8.4-20.4"/></svg>
245
+ </div>
246
+ <div class="md-source__repository">
247
+ caddforge-docs
248
+ </div>
249
+ </a>
250
+ </div>
251
+
252
+ <ul class="md-nav__list" data-md-scrollfix>
253
+
254
+
255
+
256
+
257
+
258
+
259
+
260
+ <li class="md-nav__item">
261
+ <a href="../.." class="md-nav__link">
262
+
263
+
264
+
265
+ <span class="md-ellipsis">
266
+
267
+
268
+ Home
269
+
270
+
271
+
272
+ </span>
273
+
274
+
275
+
276
+ </a>
277
+ </li>
278
+
279
+
280
+
281
+
282
+
283
+
284
+
285
+
286
+
287
+
288
+
289
+
290
+
291
+
292
+
293
+
294
+
295
+
296
+
297
+
298
+
299
+
300
+
301
+
302
+
303
+
304
+
305
+ <li class="md-nav__item md-nav__item--section md-nav__item--nested">
306
+
307
+
308
+
309
+ <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_2" >
310
+
311
+
312
+ <div class="md-nav__link md-nav__container">
313
+ <a href="../../getting-started/" class="md-nav__link ">
314
+
315
+
316
+
317
+ <span class="md-ellipsis">
318
+
319
+
320
+ Getting Started
321
+
322
+
323
+
324
+ </span>
325
+
326
+
327
+
328
+ </a>
329
+
330
+
331
+ <label class="md-nav__link " for="__nav_2" id="__nav_2_label" tabindex="">
332
+ <span class="md-nav__icon md-icon"></span>
333
+ </label>
334
+
335
+ </div>
336
+
337
+ <nav class="md-nav" data-md-level="1" aria-labelledby="__nav_2_label" aria-expanded="false">
338
+ <label class="md-nav__title" for="__nav_2">
339
+ <span class="md-nav__icon md-icon"></span>
340
+
341
+
342
+ Getting Started
343
+
344
+
345
+ </label>
346
+ <ul class="md-nav__list" data-md-scrollfix>
347
+
348
+
349
+
350
+
351
+
352
+
353
+
354
+ <li class="md-nav__item">
355
+ <a href="../../getting-started/installation/" class="md-nav__link">
356
+
357
+
358
+
359
+ <span class="md-ellipsis">
360
+
361
+
362
+ Installation
363
+
364
+
365
+
366
+ </span>
367
+
368
+
369
+
370
+ </a>
371
+ </li>
372
+
373
+
374
+
375
+
376
+
377
+
378
+
379
+
380
+
381
+
382
+ <li class="md-nav__item">
383
+ <a href="../../getting-started/first-workflow/" class="md-nav__link">
384
+
385
+
386
+
387
+ <span class="md-ellipsis">
388
+
389
+
390
+ First Workflow
391
+
392
+
393
+
394
+ </span>
395
+
396
+
397
+
398
+ </a>
399
+ </li>
400
+
401
+
402
+
403
+
404
+
405
+
406
+
407
+
408
+
409
+
410
+ <li class="md-nav__item">
411
+ <a href="../../getting-started/first-pipeline/" class="md-nav__link">
412
+
413
+
414
+
415
+ <span class="md-ellipsis">
416
+
417
+
418
+ First Pipeline
419
+
420
+
421
+
422
+ </span>
423
+
424
+
425
+
426
+ </a>
427
+ </li>
428
+
429
+
430
+
431
+
432
+ </ul>
433
+ </nav>
434
+
435
+ </li>
436
+
437
+
438
+
439
+
440
+
441
+
442
+
443
+
444
+
445
+
446
+
447
+
448
+
449
+
450
+
451
+
452
+
453
+
454
+
455
+
456
+
457
+
458
+
459
+
460
+
461
+
462
+
463
+ <li class="md-nav__item md-nav__item--section md-nav__item--nested">
464
+
465
+
466
+
467
+ <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_3" >
468
+
469
+
470
+ <label class="md-nav__link" for="__nav_3" id="__nav_3_label" tabindex="">
471
+
472
+
473
+
474
+ <span class="md-ellipsis">
475
+
476
+
477
+ How-to Guides
478
+
479
+
480
+
481
+ </span>
482
+
483
+
484
+
485
+ <span class="md-nav__icon md-icon"></span>
486
+ </label>
487
+
488
+ <nav class="md-nav" data-md-level="1" aria-labelledby="__nav_3_label" aria-expanded="false">
489
+ <label class="md-nav__title" for="__nav_3">
490
+ <span class="md-nav__icon md-icon"></span>
491
+
492
+
493
+ How-to Guides
494
+
495
+
496
+ </label>
497
+ <ul class="md-nav__list" data-md-scrollfix>
498
+
499
+
500
+
501
+
502
+
503
+
504
+
505
+ <li class="md-nav__item">
506
+ <a href="../../how-to/jobs/" class="md-nav__link">
507
+
508
+
509
+
510
+ <span class="md-ellipsis">
511
+
512
+
513
+ Jobs and Results
514
+
515
+
516
+
517
+ </span>
518
+
519
+
520
+
521
+ </a>
522
+ </li>
523
+
524
+
525
+
526
+
527
+
528
+
529
+
530
+
531
+
532
+
533
+ <li class="md-nav__item">
534
+ <a href="../../how-to/scatter/" class="md-nav__link">
535
+
536
+
537
+
538
+ <span class="md-ellipsis">
539
+
540
+
541
+ Scatter and Reduce
542
+
543
+
544
+
545
+ </span>
546
+
547
+
548
+
549
+ </a>
550
+ </li>
551
+
552
+
553
+
554
+
555
+
556
+
557
+
558
+
559
+
560
+
561
+ <li class="md-nav__item">
562
+ <a href="../../how-to/troubleshooting/" class="md-nav__link">
563
+
564
+
565
+
566
+ <span class="md-ellipsis">
567
+
568
+
569
+ Troubleshooting
570
+
571
+
572
+
573
+ </span>
574
+
575
+
576
+
577
+ </a>
578
+ </li>
579
+
580
+
581
+
582
+
583
+ </ul>
584
+ </nav>
585
+
586
+ </li>
587
+
588
+
589
+
590
+
591
+
592
+
593
+
594
+
595
+
596
+
597
+
598
+
599
+
600
+
601
+
602
+
603
+
604
+
605
+
606
+
607
+
608
+
609
+
610
+
611
+
612
+
613
+
614
+
615
+
616
+
617
+
618
+
619
+
620
+ <li class="md-nav__item md-nav__item--section md-nav__item--nested">
621
+
622
+
623
+
624
+ <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_4" >
625
+
626
+
627
+ <div class="md-nav__link md-nav__container">
628
+ <a href="../../core/" class="md-nav__link ">
629
+
630
+
631
+
632
+ <span class="md-ellipsis">
633
+
634
+
635
+ Core
636
+
637
+
638
+
639
+ </span>
640
+
641
+
642
+
643
+ </a>
644
+
645
+
646
+ <label class="md-nav__link " for="__nav_4" id="__nav_4_label" tabindex="">
647
+ <span class="md-nav__icon md-icon"></span>
648
+ </label>
649
+
650
+ </div>
651
+
652
+ <nav class="md-nav" data-md-level="1" aria-labelledby="__nav_4_label" aria-expanded="false">
653
+ <label class="md-nav__title" for="__nav_4">
654
+ <span class="md-nav__icon md-icon"></span>
655
+
656
+
657
+ Core
658
+
659
+
660
+ </label>
661
+ <ul class="md-nav__list" data-md-scrollfix>
662
+
663
+
664
+
665
+
666
+
667
+
668
+
669
+ <li class="md-nav__item">
670
+ <a href="../../core/concepts/" class="md-nav__link">
671
+
672
+
673
+
674
+ <span class="md-ellipsis">
675
+
676
+
677
+ Concepts
678
+
679
+
680
+
681
+ </span>
682
+
683
+
684
+
685
+ </a>
686
+ </li>
687
+
688
+
689
+
690
+
691
+
692
+
693
+
694
+
695
+
696
+
697
+ <li class="md-nav__item">
698
+ <a href="../../core/configuration/" class="md-nav__link">
699
+
700
+
701
+
702
+ <span class="md-ellipsis">
703
+
704
+
705
+ Configuration
706
+
707
+
708
+
709
+ </span>
710
+
711
+
712
+
713
+ </a>
714
+ </li>
715
+
716
+
717
+
718
+
719
+
720
+
721
+
722
+
723
+
724
+
725
+ <li class="md-nav__item">
726
+ <a href="../../core/cli/" class="md-nav__link">
727
+
728
+
729
+
730
+ <span class="md-ellipsis">
731
+
732
+
733
+ CLI
734
+
735
+
736
+
737
+ </span>
738
+
739
+
740
+
741
+ </a>
742
+ </li>
743
+
744
+
745
+
746
+
747
+
748
+
749
+
750
+
751
+
752
+
753
+ <li class="md-nav__item">
754
+ <a href="../../core/jobs-results/" class="md-nav__link">
755
+
756
+
757
+
758
+ <span class="md-ellipsis">
759
+
760
+
761
+ Jobs and Results
762
+
763
+
764
+
765
+ </span>
766
+
767
+
768
+
769
+ </a>
770
+ </li>
771
+
772
+
773
+
774
+
775
+
776
+
777
+
778
+
779
+
780
+
781
+ <li class="md-nav__item">
782
+ <a href="../../core/slurm/" class="md-nav__link">
783
+
784
+
785
+
786
+ <span class="md-ellipsis">
787
+
788
+
789
+ Slurm Backend
790
+
791
+
792
+
793
+ </span>
794
+
795
+
796
+
797
+ </a>
798
+ </li>
799
+
800
+
801
+
802
+
803
+
804
+
805
+
806
+
807
+
808
+
809
+ <li class="md-nav__item">
810
+ <a href="../../core/plugins/" class="md-nav__link">
811
+
812
+
813
+
814
+ <span class="md-ellipsis">
815
+
816
+
817
+ Plugins
818
+
819
+
820
+
821
+ </span>
822
+
823
+
824
+
825
+ </a>
826
+ </li>
827
+
828
+
829
+
830
+
831
+ </ul>
832
+ </nav>
833
+
834
+ </li>
835
+
836
+
837
+
838
+
839
+
840
+
841
+
842
+
843
+
844
+
845
+
846
+
847
+
848
+
849
+
850
+
851
+
852
+
853
+
854
+
855
+
856
+
857
+
858
+
859
+
860
+
861
+
862
+
863
+
864
+
865
+
866
+ <li class="md-nav__item md-nav__item--active md-nav__item--section md-nav__item--nested">
867
+
868
+
869
+
870
+ <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_5" checked>
871
+
872
+
873
+ <div class="md-nav__link md-nav__container">
874
+ <a href="../" class="md-nav__link ">
875
+
876
+
877
+
878
+ <span class="md-ellipsis">
879
+
880
+
881
+ Pipelines
882
+
883
+
884
+
885
+ </span>
886
+
887
+
888
+
889
+ </a>
890
+
891
+
892
+ <label class="md-nav__link " for="__nav_5" id="__nav_5_label" tabindex="">
893
+ <span class="md-nav__icon md-icon"></span>
894
+ </label>
895
+
896
+ </div>
897
+
898
+ <nav class="md-nav" data-md-level="1" aria-labelledby="__nav_5_label" aria-expanded="true">
899
+ <label class="md-nav__title" for="__nav_5">
900
+ <span class="md-nav__icon md-icon"></span>
901
+
902
+
903
+ Pipelines
904
+
905
+
906
+ </label>
907
+ <ul class="md-nav__list" data-md-scrollfix>
908
+
909
+
910
+
911
+
912
+
913
+
914
+
915
+ <li class="md-nav__item">
916
+ <a href="../specification/" class="md-nav__link">
917
+
918
+
919
+
920
+ <span class="md-ellipsis">
921
+
922
+
923
+ Specification
924
+
925
+
926
+
927
+ </span>
928
+
929
+
930
+
931
+ </a>
932
+ </li>
933
+
934
+
935
+
936
+
937
+
938
+
939
+
940
+
941
+
942
+
943
+ <li class="md-nav__item">
944
+ <a href="../artifacts/" class="md-nav__link">
945
+
946
+
947
+
948
+ <span class="md-ellipsis">
949
+
950
+
951
+ Artifacts
952
+
953
+
954
+
955
+ </span>
956
+
957
+
958
+
959
+ </a>
960
+ </li>
961
+
962
+
963
+
964
+
965
+
966
+
967
+
968
+
969
+
970
+
971
+ <li class="md-nav__item">
972
+ <a href="../built-ins/" class="md-nav__link">
973
+
974
+
975
+
976
+ <span class="md-ellipsis">
977
+
978
+
979
+ Built-in Stages
980
+
981
+
982
+
983
+ </span>
984
+
985
+
986
+
987
+ </a>
988
+ </li>
989
+
990
+
991
+
992
+
993
+
994
+
995
+
996
+
997
+
998
+
999
+
1000
+
1001
+ <li class="md-nav__item md-nav__item--active">
1002
+
1003
+ <input class="md-nav__toggle md-toggle" type="checkbox" id="__toc">
1004
+
1005
+
1006
+
1007
+
1008
+
1009
+ <label class="md-nav__link md-nav__link--active" for="__toc">
1010
+
1011
+
1012
+
1013
+ <span class="md-ellipsis">
1014
+
1015
+
1016
+ Examples
1017
+
1018
+
1019
+
1020
+ </span>
1021
+
1022
+
1023
+
1024
+ <span class="md-nav__icon md-icon"></span>
1025
+ </label>
1026
+
1027
+ <a href="./" class="md-nav__link md-nav__link--active">
1028
+
1029
+
1030
+
1031
+ <span class="md-ellipsis">
1032
+
1033
+
1034
+ Examples
1035
+
1036
+
1037
+
1038
+ </span>
1039
+
1040
+
1041
+
1042
+ </a>
1043
+
1044
+
1045
+
1046
+ <nav class="md-nav md-nav--secondary" aria-label="Table of contents">
1047
+
1048
+
1049
+
1050
+
1051
+
1052
+
1053
+ <label class="md-nav__title" for="__toc">
1054
+ <span class="md-nav__icon md-icon"></span>
1055
+ Table of contents
1056
+ </label>
1057
+ <ul class="md-nav__list" data-md-component="toc" data-md-scrollfix>
1058
+
1059
+ <li class="md-nav__item">
1060
+ <a href="#download-configurations" class="md-nav__link">
1061
+ <span class="md-ellipsis">
1062
+
1063
+ Download configurations
1064
+
1065
+ </span>
1066
+ </a>
1067
+
1068
+ </li>
1069
+
1070
+ <li class="md-nav__item">
1071
+ <a href="#docking-screen-and-rescore" class="md-nav__link">
1072
+ <span class="md-ellipsis">
1073
+
1074
+ Docking Screen and Rescore
1075
+
1076
+ </span>
1077
+ </a>
1078
+
1079
+ </li>
1080
+
1081
+ <li class="md-nav__item">
1082
+ <a href="#gnina-flexible-complex-artifacts" class="md-nav__link">
1083
+ <span class="md-ellipsis">
1084
+
1085
+ Gnina Flexible Complex Artifacts
1086
+
1087
+ </span>
1088
+ </a>
1089
+
1090
+ </li>
1091
+
1092
+ <li class="md-nav__item">
1093
+ <a href="#flexible-gnina-to-openbpmd-to-md-to-abfe" class="md-nav__link">
1094
+ <span class="md-ellipsis">
1095
+
1096
+ Flexible Gnina to OpenBPMD to MD to ABFE
1097
+
1098
+ </span>
1099
+ </a>
1100
+
1101
+ </li>
1102
+
1103
+ <li class="md-nav__item">
1104
+ <a href="#minimize-a-multi-pose-sdf" class="md-nav__link">
1105
+ <span class="md-ellipsis">
1106
+
1107
+ Minimize a Multi-Pose SDF
1108
+
1109
+ </span>
1110
+ </a>
1111
+
1112
+ </li>
1113
+
1114
+ <li class="md-nav__item">
1115
+ <a href="#dock-extract-and-minimize-poses" class="md-nav__link">
1116
+ <span class="md-ellipsis">
1117
+
1118
+ Dock, Extract, and Minimize Poses
1119
+
1120
+ </span>
1121
+ </a>
1122
+
1123
+ </li>
1124
+
1125
+ <li class="md-nav__item">
1126
+ <a href="#pose-level-md-selection" class="md-nav__link">
1127
+ <span class="md-ellipsis">
1128
+
1129
+ Pose-Level MD Selection
1130
+
1131
+ </span>
1132
+ </a>
1133
+
1134
+ </li>
1135
+
1136
+ <li class="md-nav__item">
1137
+ <a href="#descriptor-model-and-candidate-filter" class="md-nav__link">
1138
+ <span class="md-ellipsis">
1139
+
1140
+ Descriptor, Model, and Candidate Filter
1141
+
1142
+ </span>
1143
+ </a>
1144
+
1145
+ </li>
1146
+
1147
+ <li class="md-nav__item">
1148
+ <a href="#result-collection-and-diagnostics" class="md-nav__link">
1149
+ <span class="md-ellipsis">
1150
+
1151
+ Result Collection and Diagnostics
1152
+
1153
+ </span>
1154
+ </a>
1155
+
1156
+ </li>
1157
+
1158
+ </ul>
1159
+
1160
+ </nav>
1161
+
1162
+ </li>
1163
+
1164
+
1165
+
1166
+
1167
+ </ul>
1168
+ </nav>
1169
+
1170
+ </li>
1171
+
1172
+
1173
+
1174
+
1175
+
1176
+
1177
+
1178
+
1179
+
1180
+
1181
+
1182
+
1183
+
1184
+
1185
+
1186
+
1187
+
1188
+
1189
+
1190
+
1191
+
1192
+
1193
+
1194
+
1195
+
1196
+
1197
+
1198
+
1199
+
1200
+
1201
+
1202
+
1203
+
1204
+
1205
+
1206
+
1207
+
1208
+ <li class="md-nav__item md-nav__item--section md-nav__item--nested">
1209
+
1210
+
1211
+
1212
+ <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_6" >
1213
+
1214
+
1215
+ <div class="md-nav__link md-nav__container">
1216
+ <a href="../../plugins/" class="md-nav__link ">
1217
+
1218
+
1219
+
1220
+ <span class="md-ellipsis">
1221
+
1222
+
1223
+ Plugins
1224
+
1225
+
1226
+
1227
+ </span>
1228
+
1229
+
1230
+
1231
+ </a>
1232
+
1233
+
1234
+ <label class="md-nav__link " for="__nav_6" id="__nav_6_label" tabindex="">
1235
+ <span class="md-nav__icon md-icon"></span>
1236
+ </label>
1237
+
1238
+ </div>
1239
+
1240
+ <nav class="md-nav" data-md-level="1" aria-labelledby="__nav_6_label" aria-expanded="false">
1241
+ <label class="md-nav__title" for="__nav_6">
1242
+ <span class="md-nav__icon md-icon"></span>
1243
+
1244
+
1245
+ Plugins
1246
+
1247
+
1248
+ </label>
1249
+ <ul class="md-nav__list" data-md-scrollfix>
1250
+
1251
+
1252
+
1253
+
1254
+
1255
+
1256
+
1257
+ <li class="md-nav__item">
1258
+ <a href="../../plugins/version-matrix/" class="md-nav__link">
1259
+
1260
+
1261
+
1262
+ <span class="md-ellipsis">
1263
+
1264
+
1265
+ Version Matrix
1266
+
1267
+
1268
+
1269
+ </span>
1270
+
1271
+
1272
+
1273
+ </a>
1274
+ </li>
1275
+
1276
+
1277
+
1278
+
1279
+
1280
+
1281
+
1282
+
1283
+
1284
+
1285
+ <li class="md-nav__item">
1286
+ <a href="../../plugins/docking/" class="md-nav__link">
1287
+
1288
+
1289
+
1290
+ <span class="md-ellipsis">
1291
+
1292
+
1293
+ Docking
1294
+
1295
+
1296
+
1297
+ </span>
1298
+
1299
+
1300
+
1301
+ </a>
1302
+ </li>
1303
+
1304
+
1305
+
1306
+
1307
+
1308
+
1309
+
1310
+
1311
+
1312
+
1313
+ <li class="md-nav__item">
1314
+ <a href="../../plugins/descriptors/" class="md-nav__link">
1315
+
1316
+
1317
+
1318
+ <span class="md-ellipsis">
1319
+
1320
+
1321
+ Descriptors
1322
+
1323
+
1324
+
1325
+ </span>
1326
+
1327
+
1328
+
1329
+ </a>
1330
+ </li>
1331
+
1332
+
1333
+
1334
+
1335
+
1336
+
1337
+
1338
+
1339
+
1340
+
1341
+ <li class="md-nav__item">
1342
+ <a href="../../plugins/md/" class="md-nav__link">
1343
+
1344
+
1345
+
1346
+ <span class="md-ellipsis">
1347
+
1348
+
1349
+ MD
1350
+
1351
+
1352
+
1353
+ </span>
1354
+
1355
+
1356
+
1357
+ </a>
1358
+ </li>
1359
+
1360
+
1361
+
1362
+
1363
+
1364
+
1365
+
1366
+
1367
+
1368
+
1369
+ <li class="md-nav__item">
1370
+ <a href="../../plugins/fep/" class="md-nav__link">
1371
+
1372
+
1373
+
1374
+ <span class="md-ellipsis">
1375
+
1376
+
1377
+ FEP
1378
+
1379
+
1380
+
1381
+ </span>
1382
+
1383
+
1384
+
1385
+ </a>
1386
+ </li>
1387
+
1388
+
1389
+
1390
+
1391
+
1392
+
1393
+
1394
+
1395
+
1396
+
1397
+ <li class="md-nav__item">
1398
+ <a href="../../plugins/qm/" class="md-nav__link">
1399
+
1400
+
1401
+
1402
+ <span class="md-ellipsis">
1403
+
1404
+
1405
+ QM
1406
+
1407
+
1408
+
1409
+ </span>
1410
+
1411
+
1412
+
1413
+ </a>
1414
+ </li>
1415
+
1416
+
1417
+
1418
+
1419
+
1420
+
1421
+
1422
+
1423
+
1424
+
1425
+ <li class="md-nav__item">
1426
+ <a href="../../plugins/ml/" class="md-nav__link">
1427
+
1428
+
1429
+
1430
+ <span class="md-ellipsis">
1431
+
1432
+
1433
+ ML
1434
+
1435
+
1436
+
1437
+ </span>
1438
+
1439
+
1440
+
1441
+ </a>
1442
+ </li>
1443
+
1444
+
1445
+
1446
+
1447
+
1448
+
1449
+
1450
+
1451
+
1452
+
1453
+ <li class="md-nav__item">
1454
+ <a href="../../plugins/datascience/" class="md-nav__link">
1455
+
1456
+
1457
+
1458
+ <span class="md-ellipsis">
1459
+
1460
+
1461
+ Data Science
1462
+
1463
+
1464
+
1465
+ </span>
1466
+
1467
+
1468
+
1469
+ </a>
1470
+ </li>
1471
+
1472
+
1473
+
1474
+
1475
+ </ul>
1476
+ </nav>
1477
+
1478
+ </li>
1479
+
1480
+
1481
+
1482
+
1483
+
1484
+
1485
+
1486
+
1487
+
1488
+
1489
+
1490
+
1491
+
1492
+
1493
+
1494
+
1495
+
1496
+
1497
+
1498
+
1499
+
1500
+
1501
+
1502
+
1503
+
1504
+ <li class="md-nav__item md-nav__item--section md-nav__item--nested">
1505
+
1506
+
1507
+
1508
+ <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_7" >
1509
+
1510
+
1511
+ <div class="md-nav__link md-nav__container">
1512
+ <a href="../../gui/" class="md-nav__link ">
1513
+
1514
+
1515
+
1516
+ <span class="md-ellipsis">
1517
+
1518
+
1519
+ GUI
1520
+
1521
+
1522
+
1523
+ </span>
1524
+
1525
+
1526
+
1527
+ </a>
1528
+
1529
+
1530
+ <label class="md-nav__link " for="__nav_7" id="__nav_7_label" tabindex="">
1531
+ <span class="md-nav__icon md-icon"></span>
1532
+ </label>
1533
+
1534
+ </div>
1535
+
1536
+ <nav class="md-nav" data-md-level="1" aria-labelledby="__nav_7_label" aria-expanded="false">
1537
+ <label class="md-nav__title" for="__nav_7">
1538
+ <span class="md-nav__icon md-icon"></span>
1539
+
1540
+
1541
+ GUI
1542
+
1543
+
1544
+ </label>
1545
+ <ul class="md-nav__list" data-md-scrollfix>
1546
+
1547
+
1548
+
1549
+
1550
+
1551
+
1552
+
1553
+ <li class="md-nav__item">
1554
+ <a href="../../gui/walkthrough/" class="md-nav__link">
1555
+
1556
+
1557
+
1558
+ <span class="md-ellipsis">
1559
+
1560
+
1561
+ Walkthrough
1562
+
1563
+
1564
+
1565
+ </span>
1566
+
1567
+
1568
+
1569
+ </a>
1570
+ </li>
1571
+
1572
+
1573
+
1574
+
1575
+
1576
+
1577
+
1578
+
1579
+
1580
+
1581
+ <li class="md-nav__item">
1582
+ <a href="../../gui/plugin-authoring/" class="md-nav__link">
1583
+
1584
+
1585
+
1586
+ <span class="md-ellipsis">
1587
+
1588
+
1589
+ Plugin GUI Authoring
1590
+
1591
+
1592
+
1593
+ </span>
1594
+
1595
+
1596
+
1597
+ </a>
1598
+ </li>
1599
+
1600
+
1601
+
1602
+
1603
+ </ul>
1604
+ </nav>
1605
+
1606
+ </li>
1607
+
1608
+
1609
+
1610
+
1611
+
1612
+
1613
+
1614
+
1615
+
1616
+
1617
+
1618
+
1619
+
1620
+
1621
+
1622
+
1623
+
1624
+
1625
+
1626
+
1627
+
1628
+
1629
+
1630
+
1631
+
1632
+
1633
+
1634
+ <li class="md-nav__item md-nav__item--section md-nav__item--nested">
1635
+
1636
+
1637
+
1638
+ <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_8" >
1639
+
1640
+
1641
+ <div class="md-nav__link md-nav__container">
1642
+ <a href="../../reference/" class="md-nav__link ">
1643
+
1644
+
1645
+
1646
+ <span class="md-ellipsis">
1647
+
1648
+
1649
+ Reference
1650
+
1651
+
1652
+
1653
+ </span>
1654
+
1655
+
1656
+
1657
+ </a>
1658
+
1659
+
1660
+ <label class="md-nav__link " for="__nav_8" id="__nav_8_label" tabindex="">
1661
+ <span class="md-nav__icon md-icon"></span>
1662
+ </label>
1663
+
1664
+ </div>
1665
+
1666
+ <nav class="md-nav" data-md-level="1" aria-labelledby="__nav_8_label" aria-expanded="false">
1667
+ <label class="md-nav__title" for="__nav_8">
1668
+ <span class="md-nav__icon md-icon"></span>
1669
+
1670
+
1671
+ Reference
1672
+
1673
+
1674
+ </label>
1675
+ <ul class="md-nav__list" data-md-scrollfix>
1676
+
1677
+
1678
+
1679
+
1680
+
1681
+
1682
+
1683
+ <li class="md-nav__item">
1684
+ <a href="../../reference/api/" class="md-nav__link">
1685
+
1686
+
1687
+
1688
+ <span class="md-ellipsis">
1689
+
1690
+
1691
+ Public Python API
1692
+
1693
+
1694
+
1695
+ </span>
1696
+
1697
+
1698
+
1699
+ </a>
1700
+ </li>
1701
+
1702
+
1703
+
1704
+
1705
+
1706
+
1707
+
1708
+
1709
+
1710
+
1711
+ <li class="md-nav__item">
1712
+ <a href="../../examples/" class="md-nav__link">
1713
+
1714
+
1715
+
1716
+ <span class="md-ellipsis">
1717
+
1718
+
1719
+ Example Library
1720
+
1721
+
1722
+
1723
+ </span>
1724
+
1725
+
1726
+
1727
+ </a>
1728
+ </li>
1729
+
1730
+
1731
+
1732
+
1733
+
1734
+
1735
+
1736
+
1737
+
1738
+
1739
+ <li class="md-nav__item">
1740
+ <a href="../../examples/quickstart/" class="md-nav__link">
1741
+
1742
+
1743
+
1744
+ <span class="md-ellipsis">
1745
+
1746
+
1747
+ Example Data Provenance
1748
+
1749
+
1750
+
1751
+ </span>
1752
+
1753
+
1754
+
1755
+ </a>
1756
+ </li>
1757
+
1758
+
1759
+
1760
+
1761
+ </ul>
1762
+ </nav>
1763
+
1764
+ </li>
1765
+
1766
+
1767
+
1768
+
1769
+
1770
+
1771
+
1772
+
1773
+
1774
+
1775
+
1776
+
1777
+
1778
+
1779
+
1780
+
1781
+
1782
+
1783
+
1784
+
1785
+
1786
+
1787
+
1788
+
1789
+
1790
+
1791
+
1792
+ <li class="md-nav__item md-nav__item--section md-nav__item--nested">
1793
+
1794
+
1795
+
1796
+ <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_9" >
1797
+
1798
+
1799
+ <label class="md-nav__link" for="__nav_9" id="__nav_9_label" tabindex="">
1800
+
1801
+
1802
+
1803
+ <span class="md-ellipsis">
1804
+
1805
+
1806
+ Explanation
1807
+
1808
+
1809
+
1810
+ </span>
1811
+
1812
+
1813
+
1814
+ <span class="md-nav__icon md-icon"></span>
1815
+ </label>
1816
+
1817
+ <nav class="md-nav" data-md-level="1" aria-labelledby="__nav_9_label" aria-expanded="false">
1818
+ <label class="md-nav__title" for="__nav_9">
1819
+ <span class="md-nav__icon md-icon"></span>
1820
+
1821
+
1822
+ Explanation
1823
+
1824
+
1825
+ </label>
1826
+ <ul class="md-nav__list" data-md-scrollfix>
1827
+
1828
+
1829
+
1830
+
1831
+
1832
+
1833
+
1834
+ <li class="md-nav__item">
1835
+ <a href="../../explanation/reproducibility/" class="md-nav__link">
1836
+
1837
+
1838
+
1839
+ <span class="md-ellipsis">
1840
+
1841
+
1842
+ Reproducibility
1843
+
1844
+
1845
+
1846
+ </span>
1847
+
1848
+
1849
+
1850
+ </a>
1851
+ </li>
1852
+
1853
+
1854
+
1855
+
1856
+
1857
+
1858
+
1859
+
1860
+
1861
+
1862
+ <li class="md-nav__item">
1863
+ <a href="../../explanation/references/" class="md-nav__link">
1864
+
1865
+
1866
+
1867
+ <span class="md-ellipsis">
1868
+
1869
+
1870
+ Method References
1871
+
1872
+
1873
+
1874
+ </span>
1875
+
1876
+
1877
+
1878
+ </a>
1879
+ </li>
1880
+
1881
+
1882
+
1883
+
1884
+
1885
+
1886
+
1887
+
1888
+
1889
+
1890
+ <li class="md-nav__item">
1891
+ <a href="../../explanation/third-party-notices/" class="md-nav__link">
1892
+
1893
+
1894
+
1895
+ <span class="md-ellipsis">
1896
+
1897
+
1898
+ Third-party Notices
1899
+
1900
+
1901
+
1902
+ </span>
1903
+
1904
+
1905
+
1906
+ </a>
1907
+ </li>
1908
+
1909
+
1910
+
1911
+
1912
+ </ul>
1913
+ </nav>
1914
+
1915
+ </li>
1916
+
1917
+
1918
+
1919
+
1920
+
1921
+
1922
+
1923
+
1924
+
1925
+
1926
+
1927
+
1928
+
1929
+
1930
+
1931
+
1932
+
1933
+
1934
+
1935
+
1936
+
1937
+
1938
+
1939
+
1940
+
1941
+
1942
+
1943
+
1944
+
1945
+
1946
+
1947
+
1948
+
1949
+
1950
+
1951
+ <li class="md-nav__item md-nav__item--section md-nav__item--nested">
1952
+
1953
+
1954
+
1955
+ <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_10" >
1956
+
1957
+
1958
+ <div class="md-nav__link md-nav__container">
1959
+ <a href="../../development/" class="md-nav__link ">
1960
+
1961
+
1962
+
1963
+ <span class="md-ellipsis">
1964
+
1965
+
1966
+ Development
1967
+
1968
+
1969
+
1970
+ </span>
1971
+
1972
+
1973
+
1974
+ </a>
1975
+
1976
+
1977
+ <label class="md-nav__link " for="__nav_10" id="__nav_10_label" tabindex="">
1978
+ <span class="md-nav__icon md-icon"></span>
1979
+ </label>
1980
+
1981
+ </div>
1982
+
1983
+ <nav class="md-nav" data-md-level="1" aria-labelledby="__nav_10_label" aria-expanded="false">
1984
+ <label class="md-nav__title" for="__nav_10">
1985
+ <span class="md-nav__icon md-icon"></span>
1986
+
1987
+
1988
+ Development
1989
+
1990
+
1991
+ </label>
1992
+ <ul class="md-nav__list" data-md-scrollfix>
1993
+
1994
+
1995
+
1996
+
1997
+
1998
+
1999
+
2000
+ <li class="md-nav__item">
2001
+ <a href="../../development/release-notes/" class="md-nav__link">
2002
+
2003
+
2004
+
2005
+ <span class="md-ellipsis">
2006
+
2007
+
2008
+ Release Notes
2009
+
2010
+
2011
+
2012
+ </span>
2013
+
2014
+
2015
+
2016
+ </a>
2017
+ </li>
2018
+
2019
+
2020
+
2021
+
2022
+
2023
+
2024
+
2025
+
2026
+
2027
+
2028
+ <li class="md-nav__item">
2029
+ <a href="../../development/tool-authoring/" class="md-nav__link">
2030
+
2031
+
2032
+
2033
+ <span class="md-ellipsis">
2034
+
2035
+
2036
+ Tool Authoring
2037
+
2038
+
2039
+
2040
+ </span>
2041
+
2042
+
2043
+
2044
+ </a>
2045
+ </li>
2046
+
2047
+
2048
+
2049
+
2050
+
2051
+
2052
+
2053
+
2054
+
2055
+
2056
+ <li class="md-nav__item">
2057
+ <a href="../../development/documentation/" class="md-nav__link">
2058
+
2059
+
2060
+
2061
+ <span class="md-ellipsis">
2062
+
2063
+
2064
+ Documentation
2065
+
2066
+
2067
+
2068
+ </span>
2069
+
2070
+
2071
+
2072
+ </a>
2073
+ </li>
2074
+
2075
+
2076
+
2077
+
2078
+
2079
+
2080
+
2081
+
2082
+
2083
+
2084
+ <li class="md-nav__item">
2085
+ <a href="../../development/contributing/" class="md-nav__link">
2086
+
2087
+
2088
+
2089
+ <span class="md-ellipsis">
2090
+
2091
+
2092
+ Contributing
2093
+
2094
+
2095
+
2096
+ </span>
2097
+
2098
+
2099
+
2100
+ </a>
2101
+ </li>
2102
+
2103
+
2104
+
2105
+
2106
+
2107
+
2108
+
2109
+
2110
+
2111
+
2112
+ <li class="md-nav__item">
2113
+ <a href="../../development/security/" class="md-nav__link">
2114
+
2115
+
2116
+
2117
+ <span class="md-ellipsis">
2118
+
2119
+
2120
+ Security Reporting
2121
+
2122
+
2123
+
2124
+ </span>
2125
+
2126
+
2127
+
2128
+ </a>
2129
+ </li>
2130
+
2131
+
2132
+
2133
+
2134
+
2135
+
2136
+
2137
+
2138
+
2139
+
2140
+ <li class="md-nav__item">
2141
+ <a href="../../development/release-readiness/" class="md-nav__link">
2142
+
2143
+
2144
+
2145
+ <span class="md-ellipsis">
2146
+
2147
+
2148
+ Release Readiness
2149
+
2150
+
2151
+
2152
+ </span>
2153
+
2154
+
2155
+
2156
+ </a>
2157
+ </li>
2158
+
2159
+
2160
+
2161
+
2162
+
2163
+
2164
+
2165
+
2166
+
2167
+
2168
+ <li class="md-nav__item">
2169
+ <a href="../../development/ci-publishing/" class="md-nav__link">
2170
+
2171
+
2172
+
2173
+ <span class="md-ellipsis">
2174
+
2175
+
2176
+ CI and Publishing
2177
+
2178
+
2179
+
2180
+ </span>
2181
+
2182
+
2183
+
2184
+ </a>
2185
+ </li>
2186
+
2187
+
2188
+
2189
+
2190
+ </ul>
2191
+ </nav>
2192
+
2193
+ </li>
2194
+
2195
+
2196
+
2197
+ </ul>
2198
+ </nav>
2199
+ </div>
2200
+ </div>
2201
+ </div>
2202
+
2203
+
2204
+
2205
+ <div class="md-sidebar md-sidebar--secondary" data-md-component="sidebar" data-md-type="toc" >
2206
+ <div class="md-sidebar__scrollwrap">
2207
+ <div class="md-sidebar__inner">
2208
+
2209
+
2210
+ <nav class="md-nav md-nav--secondary" aria-label="Table of contents">
2211
+
2212
+
2213
+
2214
+
2215
+
2216
+
2217
+ <label class="md-nav__title" for="__toc">
2218
+ <span class="md-nav__icon md-icon"></span>
2219
+ Table of contents
2220
+ </label>
2221
+ <ul class="md-nav__list" data-md-component="toc" data-md-scrollfix>
2222
+
2223
+ <li class="md-nav__item">
2224
+ <a href="#download-configurations" class="md-nav__link">
2225
+ <span class="md-ellipsis">
2226
+
2227
+ Download configurations
2228
+
2229
+ </span>
2230
+ </a>
2231
+
2232
+ </li>
2233
+
2234
+ <li class="md-nav__item">
2235
+ <a href="#docking-screen-and-rescore" class="md-nav__link">
2236
+ <span class="md-ellipsis">
2237
+
2238
+ Docking Screen and Rescore
2239
+
2240
+ </span>
2241
+ </a>
2242
+
2243
+ </li>
2244
+
2245
+ <li class="md-nav__item">
2246
+ <a href="#gnina-flexible-complex-artifacts" class="md-nav__link">
2247
+ <span class="md-ellipsis">
2248
+
2249
+ Gnina Flexible Complex Artifacts
2250
+
2251
+ </span>
2252
+ </a>
2253
+
2254
+ </li>
2255
+
2256
+ <li class="md-nav__item">
2257
+ <a href="#flexible-gnina-to-openbpmd-to-md-to-abfe" class="md-nav__link">
2258
+ <span class="md-ellipsis">
2259
+
2260
+ Flexible Gnina to OpenBPMD to MD to ABFE
2261
+
2262
+ </span>
2263
+ </a>
2264
+
2265
+ </li>
2266
+
2267
+ <li class="md-nav__item">
2268
+ <a href="#minimize-a-multi-pose-sdf" class="md-nav__link">
2269
+ <span class="md-ellipsis">
2270
+
2271
+ Minimize a Multi-Pose SDF
2272
+
2273
+ </span>
2274
+ </a>
2275
+
2276
+ </li>
2277
+
2278
+ <li class="md-nav__item">
2279
+ <a href="#dock-extract-and-minimize-poses" class="md-nav__link">
2280
+ <span class="md-ellipsis">
2281
+
2282
+ Dock, Extract, and Minimize Poses
2283
+
2284
+ </span>
2285
+ </a>
2286
+
2287
+ </li>
2288
+
2289
+ <li class="md-nav__item">
2290
+ <a href="#pose-level-md-selection" class="md-nav__link">
2291
+ <span class="md-ellipsis">
2292
+
2293
+ Pose-Level MD Selection
2294
+
2295
+ </span>
2296
+ </a>
2297
+
2298
+ </li>
2299
+
2300
+ <li class="md-nav__item">
2301
+ <a href="#descriptor-model-and-candidate-filter" class="md-nav__link">
2302
+ <span class="md-ellipsis">
2303
+
2304
+ Descriptor, Model, and Candidate Filter
2305
+
2306
+ </span>
2307
+ </a>
2308
+
2309
+ </li>
2310
+
2311
+ <li class="md-nav__item">
2312
+ <a href="#result-collection-and-diagnostics" class="md-nav__link">
2313
+ <span class="md-ellipsis">
2314
+
2315
+ Result Collection and Diagnostics
2316
+
2317
+ </span>
2318
+ </a>
2319
+
2320
+ </li>
2321
+
2322
+ </ul>
2323
+
2324
+ </nav>
2325
+ </div>
2326
+ </div>
2327
+ </div>
2328
+
2329
+
2330
+
2331
+ <div class="md-content" data-md-component="content">
2332
+
2333
+ <article class="md-content__inner md-typeset">
2334
+
2335
+
2336
+
2337
+
2338
+
2339
+
2340
+
2341
+
2342
+ <h1 id="pipeline-examples">Pipeline Examples<a class="headerlink" href="#pipeline-examples" title="Permanent link">&para;</a></h1>
2343
+ <p>These examples show complete pipeline YAML files and the artifact flow between stages. Replace input
2344
+ paths and config filenames with project-specific files.</p>
2345
+ <p>Run any example with:</p>
2346
+ <div class="highlight"><pre><span></span><code><a id="__codelineno-0-1" name="__codelineno-0-1" href="#__codelineno-0-1"></a>caddforge<span class="w"> </span>pipeline<span class="w"> </span>run<span class="w"> </span>--config<span class="w"> </span>pipeline.yaml
2347
+ </code></pre></div>
2348
+ <p>These are advanced configuration templates. They require prepared molecular/data
2349
+ inputs and the runtimes listed in the <a href="../../examples/">example library</a>.
2350
+ Start with the <a href="../../getting-started/first-pipeline/">small runnable pipeline</a>.
2351
+ The supplied configs are schema-checked; full external-engine execution is a separate
2352
+ validation step. Replace all scientific paths and box coordinates before running.</p>
2353
+ <h2 id="download-configurations">Download configurations<a class="headerlink" href="#download-configurations" title="Permanent link">&para;</a></h2>
2354
+ <ul>
2355
+ <li><a href="../../examples/pipelines/docking-screen-and-rescore.yaml">Docking Screen and Rescore</a></li>
2356
+ <li><a href="../../examples/pipelines/gnina-flexible-complex-artifacts.yaml">Gnina Flexible Complex Artifacts</a></li>
2357
+ <li><a href="../../examples/pipelines/flexible-gnina-to-openbpmd-to-md-to-abfe.yaml">Flexible Gnina to OpenBPMD to MD to ABFE</a></li>
2358
+ <li><a href="../../examples/pipelines/minimize-a-multi-pose-sdf.yaml">Minimize a Multi-Pose SDF</a></li>
2359
+ <li><a href="../../examples/pipelines/dock-extract-and-minimize-poses.yaml">Dock, Extract, and Minimize Poses</a></li>
2360
+ <li><a href="../../examples/pipelines/pose-level-md-selection.yaml">Pose-Level MD Selection</a></li>
2361
+ <li><a href="../../examples/pipelines/descriptor-model-and-candidate-filter.yaml">Descriptor, Model, and Candidate Filter</a></li>
2362
+ <li><a href="../../examples/pipelines/result-collection-and-diagnostics.yaml">Result Collection and Diagnostics</a></li>
2363
+ </ul>
2364
+ <h2 id="docking-screen-and-rescore">Docking Screen and Rescore<a class="headerlink" href="#docking-screen-and-rescore" title="Permanent link">&para;</a></h2>
2365
+ <p>This pipeline screens a multi-record SDF with UniDock, filters by score, retains the selected poses,
2366
+ and rescores them with Gnina.</p>
2367
+ <div class="highlight"><pre><span></span><code><a id="__codelineno-1-1" name="__codelineno-1-1" href="#__codelineno-1-1"></a><span class="nt">version</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">1</span>
2368
+ <a id="__codelineno-1-2" name="__codelineno-1-2" href="#__codelineno-1-2"></a><span class="nt">name</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">docking-screen-rescore</span>
2369
+ <a id="__codelineno-1-3" name="__codelineno-1-3" href="#__codelineno-1-3"></a>
2370
+ <a id="__codelineno-1-4" name="__codelineno-1-4" href="#__codelineno-1-4"></a><span class="nt">defaults</span><span class="p">:</span>
2371
+ <a id="__codelineno-1-5" name="__codelineno-1-5" href="#__codelineno-1-5"></a><span class="w"> </span><span class="nt">backend</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">local</span>
2372
+ <a id="__codelineno-1-6" name="__codelineno-1-6" href="#__codelineno-1-6"></a><span class="w"> </span><span class="nt">registry_path</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">runs/job_registry.sqlite</span>
2373
+ <a id="__codelineno-1-7" name="__codelineno-1-7" href="#__codelineno-1-7"></a><span class="w"> </span><span class="nt">job_name</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">docking-screen-rescore</span>
2374
+ <a id="__codelineno-1-8" name="__codelineno-1-8" href="#__codelineno-1-8"></a>
2375
+ <a id="__codelineno-1-9" name="__codelineno-1-9" href="#__codelineno-1-9"></a><span class="nt">stages</span><span class="p">:</span>
2376
+ <a id="__codelineno-1-10" name="__codelineno-1-10" href="#__codelineno-1-10"></a><span class="w"> </span><span class="p p-Indicator">-</span><span class="w"> </span><span class="nt">id</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">unidock_screen</span>
2377
+ <a id="__codelineno-1-11" name="__codelineno-1-11" href="#__codelineno-1-11"></a><span class="w"> </span><span class="nt">tool</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">docking/unidock</span>
2378
+ <a id="__codelineno-1-12" name="__codelineno-1-12" href="#__codelineno-1-12"></a><span class="w"> </span><span class="nt">config</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">configs/unidock.yaml</span>
2379
+ <a id="__codelineno-1-13" name="__codelineno-1-13" href="#__codelineno-1-13"></a><span class="w"> </span><span class="nt">scatter</span><span class="p">:</span>
2380
+ <a id="__codelineno-1-14" name="__codelineno-1-14" href="#__codelineno-1-14"></a><span class="w"> </span><span class="c1"># Split the ligand_multisdf_path field from configs/unidock.yaml into independent shards.</span>
2381
+ <a id="__codelineno-1-15" name="__codelineno-1-15" href="#__codelineno-1-15"></a><span class="w"> </span><span class="nt">by</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">ligand_multisdf_path</span>
2382
+ <a id="__codelineno-1-16" name="__codelineno-1-16" href="#__codelineno-1-16"></a><span class="w"> </span><span class="nt">chunk_size</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">50000</span>
2383
+ <a id="__codelineno-1-17" name="__codelineno-1-17" href="#__codelineno-1-17"></a><span class="w"> </span><span class="nt">outputs</span><span class="p">:</span>
2384
+ <a id="__codelineno-1-18" name="__codelineno-1-18" href="#__codelineno-1-18"></a><span class="w"> </span><span class="c1"># Expose Result.paths["best_scores_csv"] as unidock_screen.scores.</span>
2385
+ <a id="__codelineno-1-19" name="__codelineno-1-19" href="#__codelineno-1-19"></a><span class="w"> </span><span class="nt">scores</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">best_scores_csv</span>
2386
+ <a id="__codelineno-1-20" name="__codelineno-1-20" href="#__codelineno-1-20"></a><span class="w"> </span><span class="c1"># Expose Result.paths["poses_dir"] as unidock_screen.poses.</span>
2387
+ <a id="__codelineno-1-21" name="__codelineno-1-21" href="#__codelineno-1-21"></a><span class="w"> </span><span class="nt">poses</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">poses_dir</span>
2388
+ <a id="__codelineno-1-22" name="__codelineno-1-22" href="#__codelineno-1-22"></a>
2389
+ <a id="__codelineno-1-23" name="__codelineno-1-23" href="#__codelineno-1-23"></a><span class="w"> </span><span class="p p-Indicator">-</span><span class="w"> </span><span class="nt">id</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">top_unidock_scores</span>
2390
+ <a id="__codelineno-1-24" name="__codelineno-1-24" href="#__codelineno-1-24"></a><span class="w"> </span><span class="nt">type</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">filter.tabular</span>
2391
+ <a id="__codelineno-1-25" name="__codelineno-1-25" href="#__codelineno-1-25"></a><span class="w"> </span><span class="nt">inputs</span><span class="p">:</span>
2392
+ <a id="__codelineno-1-26" name="__codelineno-1-26" href="#__codelineno-1-26"></a><span class="w"> </span><span class="c1"># Read the score table produced by the previous stage.</span>
2393
+ <a id="__codelineno-1-27" name="__codelineno-1-27" href="#__codelineno-1-27"></a><span class="w"> </span><span class="nt">table</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">unidock_screen.scores</span>
2394
+ <a id="__codelineno-1-28" name="__codelineno-1-28" href="#__codelineno-1-28"></a><span class="w"> </span><span class="nt">config</span><span class="p">:</span>
2395
+ <a id="__codelineno-1-29" name="__codelineno-1-29" href="#__codelineno-1-29"></a><span class="w"> </span><span class="nt">sort_by</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">best_score</span>
2396
+ <a id="__codelineno-1-30" name="__codelineno-1-30" href="#__codelineno-1-30"></a><span class="w"> </span><span class="nt">ascending</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">true</span>
2397
+ <a id="__codelineno-1-31" name="__codelineno-1-31" href="#__codelineno-1-31"></a><span class="w"> </span><span class="nt">top_n</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">1000</span>
2398
+ <a id="__codelineno-1-32" name="__codelineno-1-32" href="#__codelineno-1-32"></a><span class="w"> </span><span class="nt">output_name</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">top_unidock_scores.csv</span>
2399
+ <a id="__codelineno-1-33" name="__codelineno-1-33" href="#__codelineno-1-33"></a>
2400
+ <a id="__codelineno-1-34" name="__codelineno-1-34" href="#__codelineno-1-34"></a><span class="w"> </span><span class="p p-Indicator">-</span><span class="w"> </span><span class="nt">id</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">retain_unidock_poses</span>
2401
+ <a id="__codelineno-1-35" name="__codelineno-1-35" href="#__codelineno-1-35"></a><span class="w"> </span><span class="nt">type</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">filter.molecules</span>
2402
+ <a id="__codelineno-1-36" name="__codelineno-1-36" href="#__codelineno-1-36"></a><span class="w"> </span><span class="nt">inputs</span><span class="p">:</span>
2403
+ <a id="__codelineno-1-37" name="__codelineno-1-37" href="#__codelineno-1-37"></a><span class="w"> </span><span class="c1"># Filter the pose directory/path collection from UniDock.</span>
2404
+ <a id="__codelineno-1-38" name="__codelineno-1-38" href="#__codelineno-1-38"></a><span class="w"> </span><span class="nt">molecules</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">unidock_screen.poses</span>
2405
+ <a id="__codelineno-1-39" name="__codelineno-1-39" href="#__codelineno-1-39"></a><span class="w"> </span><span class="c1"># Use the filtered table from filter.tabular; this built-in always emits filtered_table.</span>
2406
+ <a id="__codelineno-1-40" name="__codelineno-1-40" href="#__codelineno-1-40"></a><span class="w"> </span><span class="nt">ids</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">top_unidock_scores.filtered_table</span>
2407
+ <a id="__codelineno-1-41" name="__codelineno-1-41" href="#__codelineno-1-41"></a><span class="w"> </span><span class="nt">config</span><span class="p">:</span>
2408
+ <a id="__codelineno-1-42" name="__codelineno-1-42" href="#__codelineno-1-42"></a><span class="w"> </span><span class="c1"># The values in this column are matched against pose metadata or filenames.</span>
2409
+ <a id="__codelineno-1-43" name="__codelineno-1-43" href="#__codelineno-1-43"></a><span class="w"> </span><span class="nt">id_column</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">ligand</span>
2410
+ <a id="__codelineno-1-44" name="__codelineno-1-44" href="#__codelineno-1-44"></a>
2411
+ <a id="__codelineno-1-45" name="__codelineno-1-45" href="#__codelineno-1-45"></a><span class="w"> </span><span class="p p-Indicator">-</span><span class="w"> </span><span class="nt">id</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">gnina_rescore</span>
2412
+ <a id="__codelineno-1-46" name="__codelineno-1-46" href="#__codelineno-1-46"></a><span class="w"> </span><span class="nt">tool</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">docking/gnina</span>
2413
+ <a id="__codelineno-1-47" name="__codelineno-1-47" href="#__codelineno-1-47"></a><span class="w"> </span><span class="nt">config</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">configs/gnina_rescore.yaml</span>
2414
+ <a id="__codelineno-1-48" name="__codelineno-1-48" href="#__codelineno-1-48"></a><span class="w"> </span><span class="nt">inputs</span><span class="p">:</span>
2415
+ <a id="__codelineno-1-49" name="__codelineno-1-49" href="#__codelineno-1-49"></a><span class="w"> </span><span class="c1"># Bind the retained pose path collection to GninaConfig.ligand_paths.</span>
2416
+ <a id="__codelineno-1-50" name="__codelineno-1-50" href="#__codelineno-1-50"></a><span class="w"> </span><span class="nt">ligand_paths</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">retain_unidock_poses.molecules</span>
2417
+ <a id="__codelineno-1-51" name="__codelineno-1-51" href="#__codelineno-1-51"></a><span class="w"> </span><span class="nt">outputs</span><span class="p">:</span>
2418
+ <a id="__codelineno-1-52" name="__codelineno-1-52" href="#__codelineno-1-52"></a><span class="w"> </span><span class="c1"># Expose Gnina result paths for downstream stages.</span>
2419
+ <a id="__codelineno-1-53" name="__codelineno-1-53" href="#__codelineno-1-53"></a><span class="w"> </span><span class="nt">scores</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">best_scores_csv</span>
2420
+ <a id="__codelineno-1-54" name="__codelineno-1-54" href="#__codelineno-1-54"></a><span class="w"> </span><span class="nt">poses</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">poses_dir</span>
2421
+ </code></pre></div>
2422
+ <p>Artifact flow:</p>
2423
+ <ul>
2424
+ <li><code>unidock_screen.scores</code> points to the reduced UniDock <code>best_scores.csv</code>.</li>
2425
+ <li><code>unidock_screen.poses</code> points to the UniDock pose directory or path collection.</li>
2426
+ <li><code>top_unidock_scores.filtered_table</code> is the retained top-N table.</li>
2427
+ <li><code>retain_unidock_poses.molecules</code> is a retained pose path collection.</li>
2428
+ <li><code>gnina_rescore.scores</code> is the rescoring table for downstream ranking.</li>
2429
+ </ul>
2430
+ <h2 id="gnina-flexible-complex-artifacts">Gnina Flexible Complex Artifacts<a class="headerlink" href="#gnina-flexible-complex-artifacts" title="Permanent link">&para;</a></h2>
2431
+ <p>This pipeline runs flexible Gnina docking and uses the default Gnina output ports. The flexible
2432
+ artifact ports are optional: they exist only when flexible docking, <code>write_flex_receptor_output</code>, and
2433
+ <code>write_flexible_complexes</code> are enabled in <code>configs/gnina_flexible.yaml</code>.</p>
2434
+ <div class="highlight"><pre><span></span><code><a id="__codelineno-2-1" name="__codelineno-2-1" href="#__codelineno-2-1"></a><span class="nt">version</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">1</span>
2435
+ <a id="__codelineno-2-2" name="__codelineno-2-2" href="#__codelineno-2-2"></a><span class="nt">name</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">gnina-flexible-artifacts</span>
2436
+ <a id="__codelineno-2-3" name="__codelineno-2-3" href="#__codelineno-2-3"></a>
2437
+ <a id="__codelineno-2-4" name="__codelineno-2-4" href="#__codelineno-2-4"></a><span class="nt">defaults</span><span class="p">:</span>
2438
+ <a id="__codelineno-2-5" name="__codelineno-2-5" href="#__codelineno-2-5"></a><span class="w"> </span><span class="nt">backend</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">local</span>
2439
+ <a id="__codelineno-2-6" name="__codelineno-2-6" href="#__codelineno-2-6"></a><span class="w"> </span><span class="nt">registry_path</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">runs/job_registry.sqlite</span>
2440
+ <a id="__codelineno-2-7" name="__codelineno-2-7" href="#__codelineno-2-7"></a><span class="w"> </span><span class="nt">job_name</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">gnina-flexible-artifacts</span>
2441
+ <a id="__codelineno-2-8" name="__codelineno-2-8" href="#__codelineno-2-8"></a>
2442
+ <a id="__codelineno-2-9" name="__codelineno-2-9" href="#__codelineno-2-9"></a><span class="nt">stages</span><span class="p">:</span>
2443
+ <a id="__codelineno-2-10" name="__codelineno-2-10" href="#__codelineno-2-10"></a><span class="w"> </span><span class="p p-Indicator">-</span><span class="w"> </span><span class="nt">id</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">gnina_flexible</span>
2444
+ <a id="__codelineno-2-11" name="__codelineno-2-11" href="#__codelineno-2-11"></a><span class="w"> </span><span class="nt">tool</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">docking/gnina</span>
2445
+ <a id="__codelineno-2-12" name="__codelineno-2-12" href="#__codelineno-2-12"></a><span class="w"> </span><span class="nt">config</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">configs/gnina_flexible.yaml</span>
2446
+ <a id="__codelineno-2-13" name="__codelineno-2-13" href="#__codelineno-2-13"></a>
2447
+ <a id="__codelineno-2-14" name="__codelineno-2-14" href="#__codelineno-2-14"></a><span class="w"> </span><span class="p p-Indicator">-</span><span class="w"> </span><span class="nt">id</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">first_flexible_pose_per_ligand</span>
2448
+ <a id="__codelineno-2-15" name="__codelineno-2-15" href="#__codelineno-2-15"></a><span class="w"> </span><span class="nt">type</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">filter.tabular</span>
2449
+ <a id="__codelineno-2-16" name="__codelineno-2-16" href="#__codelineno-2-16"></a><span class="w"> </span><span class="nt">inputs</span><span class="p">:</span>
2450
+ <a id="__codelineno-2-17" name="__codelineno-2-17" href="#__codelineno-2-17"></a><span class="w"> </span><span class="c1"># This is the flexible_complexes_manifest.csv emitted by Gnina.</span>
2451
+ <a id="__codelineno-2-18" name="__codelineno-2-18" href="#__codelineno-2-18"></a><span class="w"> </span><span class="nt">table</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">gnina_flexible.flexible_complexes_manifest</span>
2452
+ <a id="__codelineno-2-19" name="__codelineno-2-19" href="#__codelineno-2-19"></a><span class="w"> </span><span class="nt">config</span><span class="p">:</span>
2453
+ <a id="__codelineno-2-20" name="__codelineno-2-20" href="#__codelineno-2-20"></a><span class="w"> </span><span class="nt">group_by</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">ligand</span>
2454
+ <a id="__codelineno-2-21" name="__codelineno-2-21" href="#__codelineno-2-21"></a><span class="w"> </span><span class="nt">sort_by</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">pose_rank</span>
2455
+ <a id="__codelineno-2-22" name="__codelineno-2-22" href="#__codelineno-2-22"></a><span class="w"> </span><span class="nt">ascending</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">true</span>
2456
+ <a id="__codelineno-2-23" name="__codelineno-2-23" href="#__codelineno-2-23"></a><span class="w"> </span><span class="nt">top_n_per_group</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">1</span>
2457
+ <a id="__codelineno-2-24" name="__codelineno-2-24" href="#__codelineno-2-24"></a><span class="w"> </span><span class="nt">output_name</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">first_flexible_pose_per_ligand.csv</span>
2458
+ <a id="__codelineno-2-25" name="__codelineno-2-25" href="#__codelineno-2-25"></a>
2459
+ <a id="__codelineno-2-26" name="__codelineno-2-26" href="#__codelineno-2-26"></a><span class="w"> </span><span class="p p-Indicator">-</span><span class="w"> </span><span class="nt">id</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">retain_ligand_pose_sdfs</span>
2460
+ <a id="__codelineno-2-27" name="__codelineno-2-27" href="#__codelineno-2-27"></a><span class="w"> </span><span class="nt">type</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">filter.molecules</span>
2461
+ <a id="__codelineno-2-28" name="__codelineno-2-28" href="#__codelineno-2-28"></a><span class="w"> </span><span class="nt">inputs</span><span class="p">:</span>
2462
+ <a id="__codelineno-2-29" name="__codelineno-2-29" href="#__codelineno-2-29"></a><span class="w"> </span><span class="c1"># Manifest-backed path collection from the ligand_pose_file column.</span>
2463
+ <a id="__codelineno-2-30" name="__codelineno-2-30" href="#__codelineno-2-30"></a><span class="w"> </span><span class="nt">molecules</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">gnina_flexible.flexible_ligand_poses</span>
2464
+ <a id="__codelineno-2-31" name="__codelineno-2-31" href="#__codelineno-2-31"></a><span class="w"> </span><span class="nt">ids</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">first_flexible_pose_per_ligand.filtered_table</span>
2465
+ <a id="__codelineno-2-32" name="__codelineno-2-32" href="#__codelineno-2-32"></a><span class="w"> </span><span class="nt">config</span><span class="p">:</span>
2466
+ <a id="__codelineno-2-33" name="__codelineno-2-33" href="#__codelineno-2-33"></a><span class="w"> </span><span class="nt">path_column</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">ligand_pose_file</span>
2467
+ <a id="__codelineno-2-34" name="__codelineno-2-34" href="#__codelineno-2-34"></a>
2468
+ <a id="__codelineno-2-35" name="__codelineno-2-35" href="#__codelineno-2-35"></a><span class="w"> </span><span class="p p-Indicator">-</span><span class="w"> </span><span class="nt">id</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">retain_protein_pdbs</span>
2469
+ <a id="__codelineno-2-36" name="__codelineno-2-36" href="#__codelineno-2-36"></a><span class="w"> </span><span class="nt">type</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">filter.molecules</span>
2470
+ <a id="__codelineno-2-37" name="__codelineno-2-37" href="#__codelineno-2-37"></a><span class="w"> </span><span class="nt">inputs</span><span class="p">:</span>
2471
+ <a id="__codelineno-2-38" name="__codelineno-2-38" href="#__codelineno-2-38"></a><span class="w"> </span><span class="c1"># Manifest-backed path collection from the protein_file column.</span>
2472
+ <a id="__codelineno-2-39" name="__codelineno-2-39" href="#__codelineno-2-39"></a><span class="w"> </span><span class="nt">molecules</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">gnina_flexible.flexible_proteins</span>
2473
+ <a id="__codelineno-2-40" name="__codelineno-2-40" href="#__codelineno-2-40"></a><span class="w"> </span><span class="nt">ids</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">first_flexible_pose_per_ligand.filtered_table</span>
2474
+ <a id="__codelineno-2-41" name="__codelineno-2-41" href="#__codelineno-2-41"></a><span class="w"> </span><span class="nt">config</span><span class="p">:</span>
2475
+ <a id="__codelineno-2-42" name="__codelineno-2-42" href="#__codelineno-2-42"></a><span class="w"> </span><span class="nt">path_column</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">protein_file</span>
2476
+ <a id="__codelineno-2-43" name="__codelineno-2-43" href="#__codelineno-2-43"></a>
2477
+ <a id="__codelineno-2-44" name="__codelineno-2-44" href="#__codelineno-2-44"></a><span class="w"> </span><span class="p p-Indicator">-</span><span class="w"> </span><span class="nt">id</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">retain_complex_pdbs</span>
2478
+ <a id="__codelineno-2-45" name="__codelineno-2-45" href="#__codelineno-2-45"></a><span class="w"> </span><span class="nt">type</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">filter.molecules</span>
2479
+ <a id="__codelineno-2-46" name="__codelineno-2-46" href="#__codelineno-2-46"></a><span class="w"> </span><span class="nt">inputs</span><span class="p">:</span>
2480
+ <a id="__codelineno-2-47" name="__codelineno-2-47" href="#__codelineno-2-47"></a><span class="w"> </span><span class="c1"># Manifest-backed path collection from the complex_file column.</span>
2481
+ <a id="__codelineno-2-48" name="__codelineno-2-48" href="#__codelineno-2-48"></a><span class="w"> </span><span class="nt">molecules</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">gnina_flexible.flexible_complexes</span>
2482
+ <a id="__codelineno-2-49" name="__codelineno-2-49" href="#__codelineno-2-49"></a><span class="w"> </span><span class="nt">ids</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">first_flexible_pose_per_ligand.filtered_table</span>
2483
+ <a id="__codelineno-2-50" name="__codelineno-2-50" href="#__codelineno-2-50"></a><span class="w"> </span><span class="nt">config</span><span class="p">:</span>
2484
+ <a id="__codelineno-2-51" name="__codelineno-2-51" href="#__codelineno-2-51"></a><span class="w"> </span><span class="nt">path_column</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">complex_file</span>
2485
+ </code></pre></div>
2486
+ <p>Artifact flow:</p>
2487
+ <ul>
2488
+ <li><code>gnina_flexible.scores</code> is the normal <code>best_scores.csv</code>.</li>
2489
+ <li><code>gnina_flexible.flexible_complexes_manifest</code> is the per-pose flexible artifact manifest.</li>
2490
+ <li><code>gnina_flexible.flexible_ligand_poses</code>, <code>gnina_flexible.flexible_proteins</code>, and
2491
+ <code>gnina_flexible.flexible_complexes</code> are manifest-backed path collections.</li>
2492
+ <li>The retained artifacts contain matched ligand-only SDFs, protein-only PDBs, and complex PDBs for
2493
+ the selected flexible pose per ligand.</li>
2494
+ </ul>
2495
+ <h2 id="flexible-gnina-to-openbpmd-to-md-to-abfe">Flexible Gnina to OpenBPMD to MD to ABFE<a class="headerlink" href="#flexible-gnina-to-openbpmd-to-md-to-abfe" title="Permanent link">&para;</a></h2>
2496
+ <p>This pipeline keeps ligands whose best Gnina score is <code>&lt;= -12</code>, selects the top 4 flexible poses per
2497
+ retained ligand by <code>CNNscore</code> (larger is better), runs OpenBPMD on those protein-ligand complexes,
2498
+ keeps the pose with the best OpenBPMD <code>comp_score</code>, runs 10 ns plain MD for that complex, centers
2499
+ and aligns the MD trajectory, extracts a whole-frame cluster representative, and runs OpenFE ABFE on
2500
+ the representative protein-only PDB plus representative ligand-only SDF.</p>
2501
+ <div class="highlight"><pre><span></span><code><a id="__codelineno-3-1" name="__codelineno-3-1" href="#__codelineno-3-1"></a><span class="nt">version</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">1</span>
2502
+ <a id="__codelineno-3-2" name="__codelineno-3-2" href="#__codelineno-3-2"></a><span class="nt">name</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">flexible-gnina-openbpmd-md-abfe</span>
2503
+ <a id="__codelineno-3-3" name="__codelineno-3-3" href="#__codelineno-3-3"></a>
2504
+ <a id="__codelineno-3-4" name="__codelineno-3-4" href="#__codelineno-3-4"></a><span class="nt">defaults</span><span class="p">:</span>
2505
+ <a id="__codelineno-3-5" name="__codelineno-3-5" href="#__codelineno-3-5"></a><span class="w"> </span><span class="nt">backend</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">slurm</span>
2506
+ <a id="__codelineno-3-6" name="__codelineno-3-6" href="#__codelineno-3-6"></a><span class="w"> </span><span class="nt">registry_path</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">runs/job_registry.sqlite</span>
2507
+ <a id="__codelineno-3-7" name="__codelineno-3-7" href="#__codelineno-3-7"></a><span class="w"> </span><span class="nt">job_name</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">flexible-gnina-openbpmd-md-abfe</span>
2508
+ <a id="__codelineno-3-8" name="__codelineno-3-8" href="#__codelineno-3-8"></a>
2509
+ <a id="__codelineno-3-9" name="__codelineno-3-9" href="#__codelineno-3-9"></a><span class="nt">stages</span><span class="p">:</span>
2510
+ <a id="__codelineno-3-10" name="__codelineno-3-10" href="#__codelineno-3-10"></a><span class="w"> </span><span class="p p-Indicator">-</span><span class="w"> </span><span class="nt">id</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">gnina_flexible</span>
2511
+ <a id="__codelineno-3-11" name="__codelineno-3-11" href="#__codelineno-3-11"></a><span class="w"> </span><span class="nt">tool</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">docking/gnina</span>
2512
+ <a id="__codelineno-3-12" name="__codelineno-3-12" href="#__codelineno-3-12"></a><span class="w"> </span><span class="nt">config</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">configs/gnina_flexible.yaml</span>
2513
+ <a id="__codelineno-3-13" name="__codelineno-3-13" href="#__codelineno-3-13"></a>
2514
+ <a id="__codelineno-3-14" name="__codelineno-3-14" href="#__codelineno-3-14"></a><span class="w"> </span><span class="p p-Indicator">-</span><span class="w"> </span><span class="nt">id</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">retained_ligands</span>
2515
+ <a id="__codelineno-3-15" name="__codelineno-3-15" href="#__codelineno-3-15"></a><span class="w"> </span><span class="nt">type</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">filter.tabular</span>
2516
+ <a id="__codelineno-3-16" name="__codelineno-3-16" href="#__codelineno-3-16"></a><span class="w"> </span><span class="nt">inputs</span><span class="p">:</span>
2517
+ <a id="__codelineno-3-17" name="__codelineno-3-17" href="#__codelineno-3-17"></a><span class="w"> </span><span class="c1"># One row per ligand; best_score is lower-is-better affinity.</span>
2518
+ <a id="__codelineno-3-18" name="__codelineno-3-18" href="#__codelineno-3-18"></a><span class="w"> </span><span class="nt">table</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">gnina_flexible.scores</span>
2519
+ <a id="__codelineno-3-19" name="__codelineno-3-19" href="#__codelineno-3-19"></a><span class="w"> </span><span class="nt">config</span><span class="p">:</span>
2520
+ <a id="__codelineno-3-20" name="__codelineno-3-20" href="#__codelineno-3-20"></a><span class="w"> </span><span class="nt">filters</span><span class="p">:</span>
2521
+ <a id="__codelineno-3-21" name="__codelineno-3-21" href="#__codelineno-3-21"></a><span class="w"> </span><span class="p p-Indicator">-</span><span class="w"> </span><span class="nt">column</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">best_score</span>
2522
+ <a id="__codelineno-3-22" name="__codelineno-3-22" href="#__codelineno-3-22"></a><span class="w"> </span><span class="nt">op</span><span class="p">:</span><span class="w"> </span><span class="s">"&lt;="</span>
2523
+ <a id="__codelineno-3-23" name="__codelineno-3-23" href="#__codelineno-3-23"></a><span class="w"> </span><span class="nt">value</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">-12.0</span>
2524
+ <a id="__codelineno-3-24" name="__codelineno-3-24" href="#__codelineno-3-24"></a><span class="w"> </span><span class="nt">columns</span><span class="p">:</span><span class="w"> </span><span class="p p-Indicator">[</span><span class="nv">ligand</span><span class="p p-Indicator">,</span><span class="w"> </span><span class="nv">best_score</span><span class="p p-Indicator">]</span>
2525
+ <a id="__codelineno-3-25" name="__codelineno-3-25" href="#__codelineno-3-25"></a><span class="w"> </span><span class="nt">output_name</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">retained_ligands.csv</span>
2526
+ <a id="__codelineno-3-26" name="__codelineno-3-26" href="#__codelineno-3-26"></a>
2527
+ <a id="__codelineno-3-27" name="__codelineno-3-27" href="#__codelineno-3-27"></a><span class="w"> </span><span class="p p-Indicator">-</span><span class="w"> </span><span class="nt">id</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">top4_flexible_poses</span>
2528
+ <a id="__codelineno-3-28" name="__codelineno-3-28" href="#__codelineno-3-28"></a><span class="w"> </span><span class="nt">type</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">filter.tabular</span>
2529
+ <a id="__codelineno-3-29" name="__codelineno-3-29" href="#__codelineno-3-29"></a><span class="w"> </span><span class="nt">inputs</span><span class="p">:</span>
2530
+ <a id="__codelineno-3-30" name="__codelineno-3-30" href="#__codelineno-3-30"></a><span class="w"> </span><span class="c1"># One row per generated flexible pose, with complex_file/protein_file/ligand_pose_file.</span>
2531
+ <a id="__codelineno-3-31" name="__codelineno-3-31" href="#__codelineno-3-31"></a><span class="w"> </span><span class="nt">table</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">gnina_flexible.flexible_complexes_manifest</span>
2532
+ <a id="__codelineno-3-32" name="__codelineno-3-32" href="#__codelineno-3-32"></a><span class="w"> </span><span class="c1"># Retain all poses belonging to ligands that passed the best-score cutoff.</span>
2533
+ <a id="__codelineno-3-33" name="__codelineno-3-33" href="#__codelineno-3-33"></a><span class="w"> </span><span class="nt">ids</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">retained_ligands.filtered_table</span>
2534
+ <a id="__codelineno-3-34" name="__codelineno-3-34" href="#__codelineno-3-34"></a><span class="w"> </span><span class="nt">config</span><span class="p">:</span>
2535
+ <a id="__codelineno-3-35" name="__codelineno-3-35" href="#__codelineno-3-35"></a><span class="w"> </span><span class="nt">id_column</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">ligand</span>
2536
+ <a id="__codelineno-3-36" name="__codelineno-3-36" href="#__codelineno-3-36"></a><span class="w"> </span><span class="nt">ids_column</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">ligand</span>
2537
+ <a id="__codelineno-3-37" name="__codelineno-3-37" href="#__codelineno-3-37"></a><span class="w"> </span><span class="nt">group_by</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">ligand</span>
2538
+ <a id="__codelineno-3-38" name="__codelineno-3-38" href="#__codelineno-3-38"></a><span class="w"> </span><span class="nt">sort_by</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">CNNscore</span>
2539
+ <a id="__codelineno-3-39" name="__codelineno-3-39" href="#__codelineno-3-39"></a><span class="w"> </span><span class="nt">ascending</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">false</span>
2540
+ <a id="__codelineno-3-40" name="__codelineno-3-40" href="#__codelineno-3-40"></a><span class="w"> </span><span class="nt">top_n_per_group</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">4</span>
2541
+ <a id="__codelineno-3-41" name="__codelineno-3-41" href="#__codelineno-3-41"></a><span class="w"> </span><span class="nt">columns</span><span class="p">:</span>
2542
+ <a id="__codelineno-3-42" name="__codelineno-3-42" href="#__codelineno-3-42"></a><span class="w"> </span><span class="p p-Indicator">-</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">ligand</span>
2543
+ <a id="__codelineno-3-43" name="__codelineno-3-43" href="#__codelineno-3-43"></a><span class="w"> </span><span class="p p-Indicator">-</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">pose_rank</span>
2544
+ <a id="__codelineno-3-44" name="__codelineno-3-44" href="#__codelineno-3-44"></a><span class="w"> </span><span class="p p-Indicator">-</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">minimizedAffinity</span>
2545
+ <a id="__codelineno-3-45" name="__codelineno-3-45" href="#__codelineno-3-45"></a><span class="w"> </span><span class="p p-Indicator">-</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">CNNscore</span>
2546
+ <a id="__codelineno-3-46" name="__codelineno-3-46" href="#__codelineno-3-46"></a><span class="w"> </span><span class="p p-Indicator">-</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">complex_file</span>
2547
+ <a id="__codelineno-3-47" name="__codelineno-3-47" href="#__codelineno-3-47"></a><span class="w"> </span><span class="p p-Indicator">-</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">protein_file</span>
2548
+ <a id="__codelineno-3-48" name="__codelineno-3-48" href="#__codelineno-3-48"></a><span class="w"> </span><span class="p p-Indicator">-</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">ligand_pose_file</span>
2549
+ <a id="__codelineno-3-49" name="__codelineno-3-49" href="#__codelineno-3-49"></a><span class="w"> </span><span class="nt">output_name</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">top4_flexible_poses.csv</span>
2550
+ <a id="__codelineno-3-50" name="__codelineno-3-50" href="#__codelineno-3-50"></a>
2551
+ <a id="__codelineno-3-51" name="__codelineno-3-51" href="#__codelineno-3-51"></a><span class="w"> </span><span class="p p-Indicator">-</span><span class="w"> </span><span class="nt">id</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">retain_top4_complexes</span>
2552
+ <a id="__codelineno-3-52" name="__codelineno-3-52" href="#__codelineno-3-52"></a><span class="w"> </span><span class="nt">type</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">filter.molecules</span>
2553
+ <a id="__codelineno-3-53" name="__codelineno-3-53" href="#__codelineno-3-53"></a><span class="w"> </span><span class="nt">inputs</span><span class="p">:</span>
2554
+ <a id="__codelineno-3-54" name="__codelineno-3-54" href="#__codelineno-3-54"></a><span class="w"> </span><span class="c1"># OpenBPMD should receive the full protein-ligand complex PDB.</span>
2555
+ <a id="__codelineno-3-55" name="__codelineno-3-55" href="#__codelineno-3-55"></a><span class="w"> </span><span class="nt">molecules</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">gnina_flexible.flexible_complexes</span>
2556
+ <a id="__codelineno-3-56" name="__codelineno-3-56" href="#__codelineno-3-56"></a><span class="w"> </span><span class="nt">ids</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">top4_flexible_poses.filtered_table</span>
2557
+ <a id="__codelineno-3-57" name="__codelineno-3-57" href="#__codelineno-3-57"></a><span class="w"> </span><span class="nt">config</span><span class="p">:</span>
2558
+ <a id="__codelineno-3-58" name="__codelineno-3-58" href="#__codelineno-3-58"></a><span class="w"> </span><span class="nt">path_column</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">complex_file</span>
2559
+ <a id="__codelineno-3-59" name="__codelineno-3-59" href="#__codelineno-3-59"></a>
2560
+ <a id="__codelineno-3-60" name="__codelineno-3-60" href="#__codelineno-3-60"></a><span class="w"> </span><span class="p p-Indicator">-</span><span class="w"> </span><span class="nt">id</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">openbpmd_top4</span>
2561
+ <a id="__codelineno-3-61" name="__codelineno-3-61" href="#__codelineno-3-61"></a><span class="w"> </span><span class="nt">tool</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">md/openbpmd</span>
2562
+ <a id="__codelineno-3-62" name="__codelineno-3-62" href="#__codelineno-3-62"></a><span class="w"> </span><span class="nt">config</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">configs/openbpmd_pose.yaml</span>
2563
+ <a id="__codelineno-3-63" name="__codelineno-3-63" href="#__codelineno-3-63"></a><span class="w"> </span><span class="nt">inputs</span><span class="p">:</span>
2564
+ <a id="__codelineno-3-64" name="__codelineno-3-64" href="#__codelineno-3-64"></a><span class="w"> </span><span class="c1"># Bind each selected complex PDB to OpenBPMDConfig.complex_pdb_path.</span>
2565
+ <a id="__codelineno-3-65" name="__codelineno-3-65" href="#__codelineno-3-65"></a><span class="w"> </span><span class="nt">complex_pdb_path</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">retain_top4_complexes.molecules</span>
2566
+ <a id="__codelineno-3-66" name="__codelineno-3-66" href="#__codelineno-3-66"></a><span class="w"> </span><span class="nt">scatter</span><span class="p">:</span>
2567
+ <a id="__codelineno-3-67" name="__codelineno-3-67" href="#__codelineno-3-67"></a><span class="w"> </span><span class="nt">by</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">complex_pdb_path</span>
2568
+ <a id="__codelineno-3-68" name="__codelineno-3-68" href="#__codelineno-3-68"></a><span class="w"> </span><span class="nt">chunk_size</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">1</span>
2569
+ <a id="__codelineno-3-69" name="__codelineno-3-69" href="#__codelineno-3-69"></a><span class="w"> </span><span class="nt">outputs</span><span class="p">:</span>
2570
+ <a id="__codelineno-3-70" name="__codelineno-3-70" href="#__codelineno-3-70"></a><span class="w"> </span><span class="c1"># results.collect resolves the sibling result_record.json from this path.</span>
2571
+ <a id="__codelineno-3-71" name="__codelineno-3-71" href="#__codelineno-3-71"></a><span class="w"> </span><span class="nt">result_record</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">results_json</span>
2572
+ <a id="__codelineno-3-72" name="__codelineno-3-72" href="#__codelineno-3-72"></a>
2573
+ <a id="__codelineno-3-73" name="__codelineno-3-73" href="#__codelineno-3-73"></a><span class="w"> </span><span class="p p-Indicator">-</span><span class="w"> </span><span class="nt">id</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">collect_openbpmd</span>
2574
+ <a id="__codelineno-3-74" name="__codelineno-3-74" href="#__codelineno-3-74"></a><span class="w"> </span><span class="nt">type</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">results.collect</span>
2575
+ <a id="__codelineno-3-75" name="__codelineno-3-75" href="#__codelineno-3-75"></a><span class="w"> </span><span class="nt">inputs</span><span class="p">:</span>
2576
+ <a id="__codelineno-3-76" name="__codelineno-3-76" href="#__codelineno-3-76"></a><span class="w"> </span><span class="nt">results</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">openbpmd_top4.result_record</span>
2577
+ <a id="__codelineno-3-77" name="__codelineno-3-77" href="#__codelineno-3-77"></a><span class="w"> </span><span class="c1"># Preserve ligand, pose_rank, and the exact flexible artifact paths.</span>
2578
+ <a id="__codelineno-3-78" name="__codelineno-3-78" href="#__codelineno-3-78"></a><span class="w"> </span><span class="nt">table</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">top4_flexible_poses.filtered_table</span>
2579
+ <a id="__codelineno-3-79" name="__codelineno-3-79" href="#__codelineno-3-79"></a><span class="w"> </span><span class="nt">config</span><span class="p">:</span>
2580
+ <a id="__codelineno-3-80" name="__codelineno-3-80" href="#__codelineno-3-80"></a><span class="w"> </span><span class="nt">metrics</span><span class="p">:</span>
2581
+ <a id="__codelineno-3-81" name="__codelineno-3-81" href="#__codelineno-3-81"></a><span class="w"> </span><span class="nt">comp_score</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">metrics.comp_score</span>
2582
+ <a id="__codelineno-3-82" name="__codelineno-3-82" href="#__codelineno-3-82"></a><span class="w"> </span><span class="nt">pose_score</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">metrics.pose_score</span>
2583
+ <a id="__codelineno-3-83" name="__codelineno-3-83" href="#__codelineno-3-83"></a><span class="w"> </span><span class="nt">output_name</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">openbpmd_top4_metrics.csv</span>
2584
+ <a id="__codelineno-3-84" name="__codelineno-3-84" href="#__codelineno-3-84"></a>
2585
+ <a id="__codelineno-3-85" name="__codelineno-3-85" href="#__codelineno-3-85"></a><span class="w"> </span><span class="p p-Indicator">-</span><span class="w"> </span><span class="nt">id</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">best_openbpmd_pose</span>
2586
+ <a id="__codelineno-3-86" name="__codelineno-3-86" href="#__codelineno-3-86"></a><span class="w"> </span><span class="nt">type</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">filter.tabular</span>
2587
+ <a id="__codelineno-3-87" name="__codelineno-3-87" href="#__codelineno-3-87"></a><span class="w"> </span><span class="nt">inputs</span><span class="p">:</span>
2588
+ <a id="__codelineno-3-88" name="__codelineno-3-88" href="#__codelineno-3-88"></a><span class="w"> </span><span class="nt">table</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">collect_openbpmd.table</span>
2589
+ <a id="__codelineno-3-89" name="__codelineno-3-89" href="#__codelineno-3-89"></a><span class="w"> </span><span class="nt">config</span><span class="p">:</span>
2590
+ <a id="__codelineno-3-90" name="__codelineno-3-90" href="#__codelineno-3-90"></a><span class="w"> </span><span class="nt">group_by</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">ligand</span>
2591
+ <a id="__codelineno-3-91" name="__codelineno-3-91" href="#__codelineno-3-91"></a><span class="w"> </span><span class="nt">sort_by</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">comp_score</span>
2592
+ <a id="__codelineno-3-92" name="__codelineno-3-92" href="#__codelineno-3-92"></a><span class="w"> </span><span class="nt">ascending</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">true</span>
2593
+ <a id="__codelineno-3-93" name="__codelineno-3-93" href="#__codelineno-3-93"></a><span class="w"> </span><span class="nt">top_n_per_group</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">1</span>
2594
+ <a id="__codelineno-3-94" name="__codelineno-3-94" href="#__codelineno-3-94"></a><span class="w"> </span><span class="nt">columns</span><span class="p">:</span>
2595
+ <a id="__codelineno-3-95" name="__codelineno-3-95" href="#__codelineno-3-95"></a><span class="w"> </span><span class="p p-Indicator">-</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">ligand</span>
2596
+ <a id="__codelineno-3-96" name="__codelineno-3-96" href="#__codelineno-3-96"></a><span class="w"> </span><span class="p p-Indicator">-</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">pose_rank</span>
2597
+ <a id="__codelineno-3-97" name="__codelineno-3-97" href="#__codelineno-3-97"></a><span class="w"> </span><span class="p p-Indicator">-</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">comp_score</span>
2598
+ <a id="__codelineno-3-98" name="__codelineno-3-98" href="#__codelineno-3-98"></a><span class="w"> </span><span class="p p-Indicator">-</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">pose_score</span>
2599
+ <a id="__codelineno-3-99" name="__codelineno-3-99" href="#__codelineno-3-99"></a><span class="w"> </span><span class="p p-Indicator">-</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">complex_file</span>
2600
+ <a id="__codelineno-3-100" name="__codelineno-3-100" href="#__codelineno-3-100"></a><span class="w"> </span><span class="p p-Indicator">-</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">protein_file</span>
2601
+ <a id="__codelineno-3-101" name="__codelineno-3-101" href="#__codelineno-3-101"></a><span class="w"> </span><span class="p p-Indicator">-</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">ligand_pose_file</span>
2602
+ <a id="__codelineno-3-102" name="__codelineno-3-102" href="#__codelineno-3-102"></a><span class="w"> </span><span class="p p-Indicator">-</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">result_file</span>
2603
+ <a id="__codelineno-3-103" name="__codelineno-3-103" href="#__codelineno-3-103"></a><span class="w"> </span><span class="nt">output_name</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">best_openbpmd_pose_per_ligand.csv</span>
2604
+ <a id="__codelineno-3-104" name="__codelineno-3-104" href="#__codelineno-3-104"></a>
2605
+ <a id="__codelineno-3-105" name="__codelineno-3-105" href="#__codelineno-3-105"></a><span class="w"> </span><span class="p p-Indicator">-</span><span class="w"> </span><span class="nt">id</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">retain_best_complexes</span>
2606
+ <a id="__codelineno-3-106" name="__codelineno-3-106" href="#__codelineno-3-106"></a><span class="w"> </span><span class="nt">type</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">filter.molecules</span>
2607
+ <a id="__codelineno-3-107" name="__codelineno-3-107" href="#__codelineno-3-107"></a><span class="w"> </span><span class="nt">inputs</span><span class="p">:</span>
2608
+ <a id="__codelineno-3-108" name="__codelineno-3-108" href="#__codelineno-3-108"></a><span class="w"> </span><span class="c1"># Plain MD receives the full protein-ligand complex PDB for the selected pose.</span>
2609
+ <a id="__codelineno-3-109" name="__codelineno-3-109" href="#__codelineno-3-109"></a><span class="w"> </span><span class="nt">molecules</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">gnina_flexible.flexible_complexes</span>
2610
+ <a id="__codelineno-3-110" name="__codelineno-3-110" href="#__codelineno-3-110"></a><span class="w"> </span><span class="nt">ids</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">best_openbpmd_pose.filtered_table</span>
2611
+ <a id="__codelineno-3-111" name="__codelineno-3-111" href="#__codelineno-3-111"></a><span class="w"> </span><span class="nt">config</span><span class="p">:</span>
2612
+ <a id="__codelineno-3-112" name="__codelineno-3-112" href="#__codelineno-3-112"></a><span class="w"> </span><span class="nt">path_column</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">complex_file</span>
2613
+ <a id="__codelineno-3-113" name="__codelineno-3-113" href="#__codelineno-3-113"></a>
2614
+ <a id="__codelineno-3-114" name="__codelineno-3-114" href="#__codelineno-3-114"></a><span class="w"> </span><span class="p p-Indicator">-</span><span class="w"> </span><span class="nt">id</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">retain_best_ligands</span>
2615
+ <a id="__codelineno-3-115" name="__codelineno-3-115" href="#__codelineno-3-115"></a><span class="w"> </span><span class="nt">type</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">filter.molecules</span>
2616
+ <a id="__codelineno-3-116" name="__codelineno-3-116" href="#__codelineno-3-116"></a><span class="w"> </span><span class="nt">inputs</span><span class="p">:</span>
2617
+ <a id="__codelineno-3-117" name="__codelineno-3-117" href="#__codelineno-3-117"></a><span class="w"> </span><span class="c1"># Plain MD needs the ligand-only SDF for non-standard ligand parameterization.</span>
2618
+ <a id="__codelineno-3-118" name="__codelineno-3-118" href="#__codelineno-3-118"></a><span class="w"> </span><span class="nt">molecules</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">gnina_flexible.flexible_ligand_poses</span>
2619
+ <a id="__codelineno-3-119" name="__codelineno-3-119" href="#__codelineno-3-119"></a><span class="w"> </span><span class="nt">ids</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">best_openbpmd_pose.filtered_table</span>
2620
+ <a id="__codelineno-3-120" name="__codelineno-3-120" href="#__codelineno-3-120"></a><span class="w"> </span><span class="nt">config</span><span class="p">:</span>
2621
+ <a id="__codelineno-3-121" name="__codelineno-3-121" href="#__codelineno-3-121"></a><span class="w"> </span><span class="nt">path_column</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">ligand_pose_file</span>
2622
+ <a id="__codelineno-3-122" name="__codelineno-3-122" href="#__codelineno-3-122"></a>
2623
+ <a id="__codelineno-3-123" name="__codelineno-3-123" href="#__codelineno-3-123"></a><span class="w"> </span><span class="p p-Indicator">-</span><span class="w"> </span><span class="nt">id</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">plain_md_10ns</span>
2624
+ <a id="__codelineno-3-124" name="__codelineno-3-124" href="#__codelineno-3-124"></a><span class="w"> </span><span class="nt">tool</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">md/plain-md</span>
2625
+ <a id="__codelineno-3-125" name="__codelineno-3-125" href="#__codelineno-3-125"></a><span class="w"> </span><span class="nt">config</span><span class="p">:</span>
2626
+ <a id="__codelineno-3-126" name="__codelineno-3-126" href="#__codelineno-3-126"></a><span class="w"> </span><span class="nt">simulation_time_ns</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">10.0</span>
2627
+ <a id="__codelineno-3-127" name="__codelineno-3-127" href="#__codelineno-3-127"></a><span class="w"> </span><span class="nt">trajectory_filename</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">traj.xtc</span>
2628
+ <a id="__codelineno-3-128" name="__codelineno-3-128" href="#__codelineno-3-128"></a><span class="w"> </span><span class="nt">output_dir_name</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">output</span>
2629
+ <a id="__codelineno-3-129" name="__codelineno-3-129" href="#__codelineno-3-129"></a><span class="w"> </span><span class="nt">inputs</span><span class="p">:</span>
2630
+ <a id="__codelineno-3-130" name="__codelineno-3-130" href="#__codelineno-3-130"></a><span class="w"> </span><span class="nt">system_pdb_path</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">retain_best_complexes.molecules</span>
2631
+ <a id="__codelineno-3-131" name="__codelineno-3-131" href="#__codelineno-3-131"></a><span class="w"> </span><span class="nt">molecule_sdf_paths</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">retain_best_ligands.molecules</span>
2632
+ <a id="__codelineno-3-132" name="__codelineno-3-132" href="#__codelineno-3-132"></a><span class="w"> </span><span class="nt">scatter</span><span class="p">:</span>
2633
+ <a id="__codelineno-3-133" name="__codelineno-3-133" href="#__codelineno-3-133"></a><span class="w"> </span><span class="c1"># Scatter over complex PDBs. The matching ligand SDF is bound as a one-item</span>
2634
+ <a id="__codelineno-3-134" name="__codelineno-3-134" href="#__codelineno-3-134"></a><span class="w"> </span><span class="c1"># molecule_sdf_paths list for the same shard.</span>
2635
+ <a id="__codelineno-3-135" name="__codelineno-3-135" href="#__codelineno-3-135"></a><span class="w"> </span><span class="nt">by</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">system_pdb_path</span>
2636
+ <a id="__codelineno-3-136" name="__codelineno-3-136" href="#__codelineno-3-136"></a><span class="w"> </span><span class="nt">chunk_size</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">1</span>
2637
+ <a id="__codelineno-3-137" name="__codelineno-3-137" href="#__codelineno-3-137"></a>
2638
+ <a id="__codelineno-3-138" name="__codelineno-3-138" href="#__codelineno-3-138"></a><span class="w"> </span><span class="p p-Indicator">-</span><span class="w"> </span><span class="nt">id</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">center_align_md</span>
2639
+ <a id="__codelineno-3-139" name="__codelineno-3-139" href="#__codelineno-3-139"></a><span class="w"> </span><span class="nt">tool</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">md/center-and-align</span>
2640
+ <a id="__codelineno-3-140" name="__codelineno-3-140" href="#__codelineno-3-140"></a><span class="w"> </span><span class="nt">config</span><span class="p">:</span>
2641
+ <a id="__codelineno-3-141" name="__codelineno-3-141" href="#__codelineno-3-141"></a><span class="w"> </span><span class="nt">center_selection</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">protein or resname LIG</span>
2642
+ <a id="__codelineno-3-142" name="__codelineno-3-142" href="#__codelineno-3-142"></a><span class="w"> </span><span class="nt">keep_selection</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">protein or resname LIG</span>
2643
+ <a id="__codelineno-3-143" name="__codelineno-3-143" href="#__codelineno-3-143"></a><span class="w"> </span><span class="nt">align_selection</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">protein and backbone</span>
2644
+ <a id="__codelineno-3-144" name="__codelineno-3-144" href="#__codelineno-3-144"></a><span class="w"> </span><span class="nt">output_trajectory_filename</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">traj-centered.xtc</span>
2645
+ <a id="__codelineno-3-145" name="__codelineno-3-145" href="#__codelineno-3-145"></a><span class="w"> </span><span class="nt">output_structure_filename</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">traj-centered.pdb</span>
2646
+ <a id="__codelineno-3-146" name="__codelineno-3-146" href="#__codelineno-3-146"></a><span class="w"> </span><span class="nt">inputs</span><span class="p">:</span>
2647
+ <a id="__codelineno-3-147" name="__codelineno-3-147" href="#__codelineno-3-147"></a><span class="w"> </span><span class="c1"># The plain-md trajectory uses the prepared solvated system topology.</span>
2648
+ <a id="__codelineno-3-148" name="__codelineno-3-148" href="#__codelineno-3-148"></a><span class="w"> </span><span class="nt">topology_path</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">plain_md_10ns.prepared_structure</span>
2649
+ <a id="__codelineno-3-149" name="__codelineno-3-149" href="#__codelineno-3-149"></a><span class="w"> </span><span class="nt">trajectory_path</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">plain_md_10ns.trajectory</span>
2650
+ <a id="__codelineno-3-150" name="__codelineno-3-150" href="#__codelineno-3-150"></a><span class="w"> </span><span class="nt">scatter</span><span class="p">:</span>
2651
+ <a id="__codelineno-3-151" name="__codelineno-3-151" href="#__codelineno-3-151"></a><span class="w"> </span><span class="nt">by</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">trajectory_path</span>
2652
+ <a id="__codelineno-3-152" name="__codelineno-3-152" href="#__codelineno-3-152"></a><span class="w"> </span><span class="nt">chunk_size</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">1</span>
2653
+ <a id="__codelineno-3-153" name="__codelineno-3-153" href="#__codelineno-3-153"></a><span class="w"> </span><span class="nt">outputs</span><span class="p">:</span>
2654
+ <a id="__codelineno-3-154" name="__codelineno-3-154" href="#__codelineno-3-154"></a><span class="w"> </span><span class="nt">centered_structure</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">output_structure</span>
2655
+ <a id="__codelineno-3-155" name="__codelineno-3-155" href="#__codelineno-3-155"></a><span class="w"> </span><span class="nt">centered_trajectory</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">output_trajectory</span>
2656
+ <a id="__codelineno-3-156" name="__codelineno-3-156" href="#__codelineno-3-156"></a>
2657
+ <a id="__codelineno-3-157" name="__codelineno-3-157" href="#__codelineno-3-157"></a><span class="w"> </span><span class="p p-Indicator">-</span><span class="w"> </span><span class="nt">id</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">cluster_representative</span>
2658
+ <a id="__codelineno-3-158" name="__codelineno-3-158" href="#__codelineno-3-158"></a><span class="w"> </span><span class="nt">tool</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">md/cluster-representative</span>
2659
+ <a id="__codelineno-3-159" name="__codelineno-3-159" href="#__codelineno-3-159"></a><span class="w"> </span><span class="nt">config</span><span class="p">:</span>
2660
+ <a id="__codelineno-3-160" name="__codelineno-3-160" href="#__codelineno-3-160"></a><span class="w"> </span><span class="nt">ligand_resname</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">LIG</span>
2661
+ <a id="__codelineno-3-161" name="__codelineno-3-161" href="#__codelineno-3-161"></a><span class="w"> </span><span class="nt">cluster_selection</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">all</span>
2662
+ <a id="__codelineno-3-162" name="__codelineno-3-162" href="#__codelineno-3-162"></a><span class="w"> </span><span class="nt">extract_selection</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">all</span>
2663
+ <a id="__codelineno-3-163" name="__codelineno-3-163" href="#__codelineno-3-163"></a><span class="w"> </span><span class="nt">last_ns</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">10.0</span>
2664
+ <a id="__codelineno-3-164" name="__codelineno-3-164" href="#__codelineno-3-164"></a><span class="w"> </span><span class="nt">output_complex_filename</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">representative_complex.pdb</span>
2665
+ <a id="__codelineno-3-165" name="__codelineno-3-165" href="#__codelineno-3-165"></a><span class="w"> </span><span class="nt">output_protein_filename</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">representative_protein.pdb</span>
2666
+ <a id="__codelineno-3-166" name="__codelineno-3-166" href="#__codelineno-3-166"></a><span class="w"> </span><span class="nt">output_ligand_sdf_filename</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">representative_ligand.sdf</span>
2667
+ <a id="__codelineno-3-167" name="__codelineno-3-167" href="#__codelineno-3-167"></a><span class="w"> </span><span class="nt">inputs</span><span class="p">:</span>
2668
+ <a id="__codelineno-3-168" name="__codelineno-3-168" href="#__codelineno-3-168"></a><span class="w"> </span><span class="nt">topology</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">center_align_md.centered_structure</span>
2669
+ <a id="__codelineno-3-169" name="__codelineno-3-169" href="#__codelineno-3-169"></a><span class="w"> </span><span class="nt">trajectory</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">center_align_md.centered_trajectory</span>
2670
+ <a id="__codelineno-3-170" name="__codelineno-3-170" href="#__codelineno-3-170"></a><span class="w"> </span><span class="c1"># The ligand template preserves bond orders, hydrogens, and formal charges in the exported SDF.</span>
2671
+ <a id="__codelineno-3-171" name="__codelineno-3-171" href="#__codelineno-3-171"></a><span class="w"> </span><span class="nt">ligand_template</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">retain_best_ligands.molecules</span>
2672
+ <a id="__codelineno-3-172" name="__codelineno-3-172" href="#__codelineno-3-172"></a><span class="w"> </span><span class="nt">scatter</span><span class="p">:</span>
2673
+ <a id="__codelineno-3-173" name="__codelineno-3-173" href="#__codelineno-3-173"></a><span class="w"> </span><span class="nt">by</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">trajectory_path</span>
2674
+ <a id="__codelineno-3-174" name="__codelineno-3-174" href="#__codelineno-3-174"></a><span class="w"> </span><span class="nt">chunk_size</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">1</span>
2675
+ <a id="__codelineno-3-175" name="__codelineno-3-175" href="#__codelineno-3-175"></a>
2676
+ <a id="__codelineno-3-176" name="__codelineno-3-176" href="#__codelineno-3-176"></a><span class="w"> </span><span class="p p-Indicator">-</span><span class="w"> </span><span class="nt">id</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">openfe_abfe</span>
2677
+ <a id="__codelineno-3-177" name="__codelineno-3-177" href="#__codelineno-3-177"></a><span class="w"> </span><span class="nt">tool</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">fep/openfe-abfe</span>
2678
+ <a id="__codelineno-3-178" name="__codelineno-3-178" href="#__codelineno-3-178"></a><span class="w"> </span><span class="nt">config</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">configs/openfe_abfe.yaml</span>
2679
+ <a id="__codelineno-3-179" name="__codelineno-3-179" href="#__codelineno-3-179"></a><span class="w"> </span><span class="nt">inputs</span><span class="p">:</span>
2680
+ <a id="__codelineno-3-180" name="__codelineno-3-180" href="#__codelineno-3-180"></a><span class="w"> </span><span class="c1"># ABFE receives separate files from the representative frame, not the original docked pose.</span>
2681
+ <a id="__codelineno-3-181" name="__codelineno-3-181" href="#__codelineno-3-181"></a><span class="w"> </span><span class="nt">ligand_sdf</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">cluster_representative.ligand</span>
2682
+ <a id="__codelineno-3-182" name="__codelineno-3-182" href="#__codelineno-3-182"></a><span class="w"> </span><span class="nt">protein_pdb</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">cluster_representative.protein</span>
2683
+ <a id="__codelineno-3-183" name="__codelineno-3-183" href="#__codelineno-3-183"></a><span class="w"> </span><span class="nt">scatter</span><span class="p">:</span>
2684
+ <a id="__codelineno-3-184" name="__codelineno-3-184" href="#__codelineno-3-184"></a><span class="w"> </span><span class="c1"># Scatter over ligand_sdf; the matching representative protein_pdb is bound by row order.</span>
2685
+ <a id="__codelineno-3-185" name="__codelineno-3-185" href="#__codelineno-3-185"></a><span class="w"> </span><span class="nt">by</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">ligand_sdf</span>
2686
+ <a id="__codelineno-3-186" name="__codelineno-3-186" href="#__codelineno-3-186"></a><span class="w"> </span><span class="nt">chunk_size</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">1</span>
2687
+ <a id="__codelineno-3-187" name="__codelineno-3-187" href="#__codelineno-3-187"></a><span class="w"> </span><span class="nt">outputs</span><span class="p">:</span>
2688
+ <a id="__codelineno-3-188" name="__codelineno-3-188" href="#__codelineno-3-188"></a><span class="w"> </span><span class="nt">results</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">results_json</span>
2689
+ </code></pre></div>
2690
+ <p>Input choices:</p>
2691
+ <ul>
2692
+ <li>Flexible Gnina must be configured with a PDB receptor, <code>output_format: sdf</code>,
2693
+ <code>write_flex_receptor_output: true</code>, and <code>write_flexible_complexes: true</code>.</li>
2694
+ <li>OpenBPMD receives <code>complex_pdb_path</code> from <code>gnina_flexible.flexible_complexes</code> because it operates
2695
+ on a full protein-ligand complex.</li>
2696
+ <li>Plain MD receives the selected complex PDB as <code>system_pdb_path</code> and the matching ligand-only SDF
2697
+ as a one-item <code>molecule_sdf_paths</code> list for ligand parameterization.</li>
2698
+ <li>The <code>LIG</code> residue name in <code>center_align_md</code> and <code>cluster_representative</code> must match
2699
+ <code>flexible_complex_ligand_resname</code> from the Gnina config.</li>
2700
+ <li><code>center_align_md</code> uses <code>plain_md_10ns.prepared_structure</code> as topology and
2701
+ <code>plain_md_10ns.trajectory</code> as trajectory.</li>
2702
+ <li><code>cluster_representative</code> uses the centered structure/trajectory and the matching ligand template
2703
+ SDF. <code>cluster_selection: all</code> makes the representative frame come from the whole retained
2704
+ centered system rather than ligand-only clustering.</li>
2705
+ <li>ABFE receives <code>ligand_sdf</code> and <code>protein_pdb</code> from the cluster representative. It does not receive
2706
+ the original docked ligand SDF, the original flexible protein PDB, or the representative complex
2707
+ PDB.</li>
2708
+ </ul>
2709
+ <h2 id="minimize-a-multi-pose-sdf">Minimize a Multi-Pose SDF<a class="headerlink" href="#minimize-a-multi-pose-sdf" title="Permanent link">&para;</a></h2>
2710
+ <p>Use <a href="../../plugins/md/#minimize"><code>md/minimize</code></a> to clean up already prepared poses
2711
+ against one receptor snapshot. Install a plugin revision containing <code>minimize</code>
2712
+ (see the <a href="../../plugins/version-matrix/">version matrix</a>). Each SDF record must
2713
+ contain one explicitly hydrogenated 3D molecule with authoritative chemistry,
2714
+ already positioned in the receptor coordinate frame. The receptor PDB must have
2715
+ complete protein heavy atoms and no target ligand. A separate ligand file is not
2716
+ aligned automatically.</p>
2717
+ <p><a href="../../examples/minimize/pipeline_scatter.yaml">Download the SDF scatter pipeline</a>.
2718
+ Save it as <code>pipeline_scatter.yaml</code>, update the paths, and run:</p>
2719
+ <div class="highlight"><pre><span></span><code><a id="__codelineno-4-1" name="__codelineno-4-1" href="#__codelineno-4-1"></a>caddforge<span class="w"> </span>pipeline<span class="w"> </span>run<span class="w"> </span>--config<span class="w"> </span>pipeline_scatter.yaml
2720
+ </code></pre></div>
2721
+ <div class="highlight"><pre><span></span><code><a id="__codelineno-5-1" name="__codelineno-5-1" href="#__codelineno-5-1"></a><span class="c1"># Poses must share receptor coordinates and contain explicit hydrogens.</span>
2722
+ <a id="__codelineno-5-2" name="__codelineno-5-2" href="#__codelineno-5-2"></a><span class="c1"># Paths resolve relative to the submission working directory.</span>
2723
+ <a id="__codelineno-5-3" name="__codelineno-5-3" href="#__codelineno-5-3"></a><span class="nt">version</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">1</span>
2724
+ <a id="__codelineno-5-4" name="__codelineno-5-4" href="#__codelineno-5-4"></a><span class="nt">name</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">pose-cleanup</span>
2725
+ <a id="__codelineno-5-5" name="__codelineno-5-5" href="#__codelineno-5-5"></a>
2726
+ <a id="__codelineno-5-6" name="__codelineno-5-6" href="#__codelineno-5-6"></a><span class="nt">defaults</span><span class="p">:</span>
2727
+ <a id="__codelineno-5-7" name="__codelineno-5-7" href="#__codelineno-5-7"></a><span class="w"> </span><span class="nt">backend</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">local</span>
2728
+ <a id="__codelineno-5-8" name="__codelineno-5-8" href="#__codelineno-5-8"></a><span class="w"> </span><span class="nt">run_directory</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">runs/pose-cleanup</span>
2729
+ <a id="__codelineno-5-9" name="__codelineno-5-9" href="#__codelineno-5-9"></a><span class="w"> </span><span class="nt">registry_path</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">runs/job_registry.sqlite</span>
2730
+ <a id="__codelineno-5-10" name="__codelineno-5-10" href="#__codelineno-5-10"></a><span class="w"> </span><span class="nt">export_results</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">false</span>
2731
+ <a id="__codelineno-5-11" name="__codelineno-5-11" href="#__codelineno-5-11"></a>
2732
+ <a id="__codelineno-5-12" name="__codelineno-5-12" href="#__codelineno-5-12"></a><span class="nt">stages</span><span class="p">:</span>
2733
+ <a id="__codelineno-5-13" name="__codelineno-5-13" href="#__codelineno-5-13"></a><span class="w"> </span><span class="p p-Indicator">-</span><span class="w"> </span><span class="nt">id</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">minimize</span>
2734
+ <a id="__codelineno-5-14" name="__codelineno-5-14" href="#__codelineno-5-14"></a><span class="w"> </span><span class="nt">tool</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">md/minimize</span>
2735
+ <a id="__codelineno-5-15" name="__codelineno-5-15" href="#__codelineno-5-15"></a><span class="w"> </span><span class="nt">config</span><span class="p">:</span>
2736
+ <a id="__codelineno-5-16" name="__codelineno-5-16" href="#__codelineno-5-16"></a><span class="w"> </span><span class="nt">protein_pdb_path</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">receptor.pdb</span>
2737
+ <a id="__codelineno-5-17" name="__codelineno-5-17" href="#__codelineno-5-17"></a><span class="w"> </span><span class="nt">ligand_path</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">poses.sdf</span>
2738
+ <a id="__codelineno-5-18" name="__codelineno-5-18" href="#__codelineno-5-18"></a><span class="w"> </span><span class="nt">mode</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">ligand_only</span>
2739
+ <a id="__codelineno-5-19" name="__codelineno-5-19" href="#__codelineno-5-19"></a><span class="w"> </span><span class="nt">scatter</span><span class="p">:</span>
2740
+ <a id="__codelineno-5-20" name="__codelineno-5-20" href="#__codelineno-5-20"></a><span class="w"> </span><span class="nt">by</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">ligand_path</span>
2741
+ <a id="__codelineno-5-21" name="__codelineno-5-21" href="#__codelineno-5-21"></a><span class="w"> </span><span class="nt">chunk_size</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">1</span>
2742
+ <a id="__codelineno-5-22" name="__codelineno-5-22" href="#__codelineno-5-22"></a><span class="w"> </span><span class="nt">outputs</span><span class="p">:</span>
2743
+ <a id="__codelineno-5-23" name="__codelineno-5-23" href="#__codelineno-5-23"></a><span class="w"> </span><span class="nt">results</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">result_record</span>
2744
+ <a id="__codelineno-5-24" name="__codelineno-5-24" href="#__codelineno-5-24"></a><span class="w"> </span><span class="nt">ligands</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">minimized_ligand</span>
2745
+ <a id="__codelineno-5-25" name="__codelineno-5-25" href="#__codelineno-5-25"></a>
2746
+ <a id="__codelineno-5-26" name="__codelineno-5-26" href="#__codelineno-5-26"></a><span class="w"> </span><span class="p p-Indicator">-</span><span class="w"> </span><span class="nt">id</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">collect</span>
2747
+ <a id="__codelineno-5-27" name="__codelineno-5-27" href="#__codelineno-5-27"></a><span class="w"> </span><span class="nt">type</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">results.collect</span>
2748
+ <a id="__codelineno-5-28" name="__codelineno-5-28" href="#__codelineno-5-28"></a><span class="w"> </span><span class="nt">inputs</span><span class="p">:</span>
2749
+ <a id="__codelineno-5-29" name="__codelineno-5-29" href="#__codelineno-5-29"></a><span class="w"> </span><span class="nt">results</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">minimize.results</span>
2750
+ <a id="__codelineno-5-30" name="__codelineno-5-30" href="#__codelineno-5-30"></a><span class="w"> </span><span class="nt">config</span><span class="p">:</span>
2751
+ <a id="__codelineno-5-31" name="__codelineno-5-31" href="#__codelineno-5-31"></a><span class="w"> </span><span class="nt">metrics</span><span class="p">:</span>
2752
+ <a id="__codelineno-5-32" name="__codelineno-5-32" href="#__codelineno-5-32"></a><span class="w"> </span><span class="nt">quality_passed</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">metrics.quality_passed</span>
2753
+ <a id="__codelineno-5-33" name="__codelineno-5-33" href="#__codelineno-5-33"></a><span class="w"> </span><span class="nt">convergence</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">metrics.convergence_status</span>
2754
+ <a id="__codelineno-5-34" name="__codelineno-5-34" href="#__codelineno-5-34"></a><span class="w"> </span><span class="nt">ligand_rmsd_angstrom</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">metrics.ligand_heavy_atom_rmsd_angstrom</span>
2755
+ <a id="__codelineno-5-35" name="__codelineno-5-35" href="#__codelineno-5-35"></a><span class="w"> </span><span class="nt">minimized_ligand_file</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">paths.minimized_ligand</span>
2756
+ <a id="__codelineno-5-36" name="__codelineno-5-36" href="#__codelineno-5-36"></a>
2757
+ <a id="__codelineno-5-37" name="__codelineno-5-37" href="#__codelineno-5-37"></a><span class="w"> </span><span class="p p-Indicator">-</span><span class="w"> </span><span class="nt">id</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">accepted</span>
2758
+ <a id="__codelineno-5-38" name="__codelineno-5-38" href="#__codelineno-5-38"></a><span class="w"> </span><span class="nt">type</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">filter.tabular</span>
2759
+ <a id="__codelineno-5-39" name="__codelineno-5-39" href="#__codelineno-5-39"></a><span class="w"> </span><span class="nt">inputs</span><span class="p">:</span>
2760
+ <a id="__codelineno-5-40" name="__codelineno-5-40" href="#__codelineno-5-40"></a><span class="w"> </span><span class="nt">table</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">collect.table</span>
2761
+ <a id="__codelineno-5-41" name="__codelineno-5-41" href="#__codelineno-5-41"></a><span class="w"> </span><span class="nt">config</span><span class="p">:</span>
2762
+ <a id="__codelineno-5-42" name="__codelineno-5-42" href="#__codelineno-5-42"></a><span class="w"> </span><span class="nt">filters</span><span class="p">:</span>
2763
+ <a id="__codelineno-5-43" name="__codelineno-5-43" href="#__codelineno-5-43"></a><span class="w"> </span><span class="p p-Indicator">-</span><span class="w"> </span><span class="nt">column</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">quality_passed</span>
2764
+ <a id="__codelineno-5-44" name="__codelineno-5-44" href="#__codelineno-5-44"></a><span class="w"> </span><span class="nt">op</span><span class="p">:</span><span class="w"> </span><span class="s">'=='</span>
2765
+ <a id="__codelineno-5-45" name="__codelineno-5-45" href="#__codelineno-5-45"></a><span class="w"> </span><span class="nt">value</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">1</span>
2766
+ </code></pre></div>
2767
+ <p><code>minimize.results</code> is the collection of canonical result records;
2768
+ <code>minimize.ligands</code> is the merged minimized SDF. <code>collect.table</code> has one row per
2769
+ job, while <code>accepted.filtered_table</code> retains only rows without quality flags.
2770
+ Its <code>minimized_ligand_file</code> column points to each <strong>final</strong> ligand SDF. No accepted
2771
+ rows is a valid result: inspect the rejected diagnostics before changing review
2772
+ thresholds. The table filter does not itself filter the merged SDF.</p>
2773
+ <p>SDF titles and properties survive minimization. For explicit <code>ligand</code> and
2774
+ <code>pose_id</code> columns joined by core scatter provenance, use the extracted path
2775
+ collection in the next example. Total minimization energy is local cleanup
2776
+ information, not a binding score or a basis for ranking unrelated ligands.</p>
2777
+ <h2 id="dock-extract-and-minimize-poses">Dock, Extract, and Minimize Poses<a class="headerlink" href="#dock-extract-and-minimize-poses" title="Permanent link">&para;</a></h2>
2778
+ <p>This example runs rigid-receptor GNINA docking, extracts one SDF per pose, restores
2779
+ explicit hydrogens, and scatters minimization over that path collection. It uses
2780
+ the same receptor PDB for docking and cleanup. Supply a GNINA executable and the
2781
+ <a href="../../plugins/docking/#gnina">GNINA requirements</a>, plus the minimize runtime.</p>
2782
+ <p><a href="../../examples/minimize/pipeline_docking.yaml">Download the docking/minimization pipeline</a>.
2783
+ Run it with <code>caddforge pipeline run --config pipeline_docking.yaml</code> after replacing
2784
+ the <code>data/</code> paths.</p>
2785
+ <div class="highlight"><pre><span></span><code><a id="__codelineno-6-1" name="__codelineno-6-1" href="#__codelineno-6-1"></a><span class="c1"># Rigid-receptor GNINA docking followed by local OpenMM pose cleanup.</span>
2786
+ <a id="__codelineno-6-2" name="__codelineno-6-2" href="#__codelineno-6-2"></a><span class="c1"># Supply GNINA on PATH and authoritative ligand chemistry in the input SDF.</span>
2787
+ <a id="__codelineno-6-3" name="__codelineno-6-3" href="#__codelineno-6-3"></a><span class="nt">version</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">1</span>
2788
+ <a id="__codelineno-6-4" name="__codelineno-6-4" href="#__codelineno-6-4"></a><span class="nt">name</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">dock-extract-minimize</span>
2789
+ <a id="__codelineno-6-5" name="__codelineno-6-5" href="#__codelineno-6-5"></a>
2790
+ <a id="__codelineno-6-6" name="__codelineno-6-6" href="#__codelineno-6-6"></a><span class="nt">defaults</span><span class="p">:</span>
2791
+ <a id="__codelineno-6-7" name="__codelineno-6-7" href="#__codelineno-6-7"></a><span class="w"> </span><span class="nt">backend</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">local</span>
2792
+ <a id="__codelineno-6-8" name="__codelineno-6-8" href="#__codelineno-6-8"></a><span class="w"> </span><span class="nt">run_directory</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">runs/dock-extract-minimize</span>
2793
+ <a id="__codelineno-6-9" name="__codelineno-6-9" href="#__codelineno-6-9"></a><span class="w"> </span><span class="nt">registry_path</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">runs/job_registry.sqlite</span>
2794
+ <a id="__codelineno-6-10" name="__codelineno-6-10" href="#__codelineno-6-10"></a><span class="w"> </span><span class="nt">export_results</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">false</span>
2795
+ <a id="__codelineno-6-11" name="__codelineno-6-11" href="#__codelineno-6-11"></a>
2796
+ <a id="__codelineno-6-12" name="__codelineno-6-12" href="#__codelineno-6-12"></a><span class="nt">stages</span><span class="p">:</span>
2797
+ <a id="__codelineno-6-13" name="__codelineno-6-13" href="#__codelineno-6-13"></a><span class="w"> </span><span class="p p-Indicator">-</span><span class="w"> </span><span class="nt">id</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">dock</span>
2798
+ <a id="__codelineno-6-14" name="__codelineno-6-14" href="#__codelineno-6-14"></a><span class="w"> </span><span class="nt">tool</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">docking/gnina</span>
2799
+ <a id="__codelineno-6-15" name="__codelineno-6-15" href="#__codelineno-6-15"></a><span class="w"> </span><span class="nt">config</span><span class="p">:</span>
2800
+ <a id="__codelineno-6-16" name="__codelineno-6-16" href="#__codelineno-6-16"></a><span class="w"> </span><span class="nt">receptor_path</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">data/receptor.pdb</span>
2801
+ <a id="__codelineno-6-17" name="__codelineno-6-17" href="#__codelineno-6-17"></a><span class="w"> </span><span class="nt">ligand_path</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">data/ligands.sdf</span>
2802
+ <a id="__codelineno-6-18" name="__codelineno-6-18" href="#__codelineno-6-18"></a><span class="w"> </span><span class="nt">autobox_ligand_path</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">data/reference_ligand.sdf</span>
2803
+ <a id="__codelineno-6-19" name="__codelineno-6-19" href="#__codelineno-6-19"></a><span class="w"> </span><span class="nt">output_format</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">sdf</span>
2804
+ <a id="__codelineno-6-20" name="__codelineno-6-20" href="#__codelineno-6-20"></a><span class="w"> </span><span class="nt">outputs</span><span class="p">:</span>
2805
+ <a id="__codelineno-6-21" name="__codelineno-6-21" href="#__codelineno-6-21"></a><span class="w"> </span><span class="nt">poses</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">poses_dir</span>
2806
+ <a id="__codelineno-6-22" name="__codelineno-6-22" href="#__codelineno-6-22"></a><span class="w"> </span><span class="nt">scores</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">best_scores_csv</span>
2807
+ <a id="__codelineno-6-23" name="__codelineno-6-23" href="#__codelineno-6-23"></a>
2808
+ <a id="__codelineno-6-24" name="__codelineno-6-24" href="#__codelineno-6-24"></a><span class="w"> </span><span class="p p-Indicator">-</span><span class="w"> </span><span class="nt">id</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">extract</span>
2809
+ <a id="__codelineno-6-25" name="__codelineno-6-25" href="#__codelineno-6-25"></a><span class="w"> </span><span class="nt">type</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">poses.extract</span>
2810
+ <a id="__codelineno-6-26" name="__codelineno-6-26" href="#__codelineno-6-26"></a><span class="w"> </span><span class="nt">inputs</span><span class="p">:</span>
2811
+ <a id="__codelineno-6-27" name="__codelineno-6-27" href="#__codelineno-6-27"></a><span class="w"> </span><span class="nt">poses</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">dock.poses</span>
2812
+ <a id="__codelineno-6-28" name="__codelineno-6-28" href="#__codelineno-6-28"></a><span class="w"> </span><span class="nt">table</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">dock.scores</span>
2813
+ <a id="__codelineno-6-29" name="__codelineno-6-29" href="#__codelineno-6-29"></a><span class="w"> </span><span class="nt">config</span><span class="p">:</span>
2814
+ <a id="__codelineno-6-30" name="__codelineno-6-30" href="#__codelineno-6-30"></a><span class="w"> </span><span class="nt">ligand_column</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">ligand</span>
2815
+ <a id="__codelineno-6-31" name="__codelineno-6-31" href="#__codelineno-6-31"></a><span class="w"> </span><span class="nt">path_column</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">pose_file</span>
2816
+ <a id="__codelineno-6-32" name="__codelineno-6-32" href="#__codelineno-6-32"></a><span class="w"> </span><span class="nt">output_name</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">pose_manifest.csv</span>
2817
+ <a id="__codelineno-6-33" name="__codelineno-6-33" href="#__codelineno-6-33"></a>
2818
+ <a id="__codelineno-6-34" name="__codelineno-6-34" href="#__codelineno-6-34"></a><span class="w"> </span><span class="p p-Indicator">-</span><span class="w"> </span><span class="nt">id</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">hydrogenate</span>
2819
+ <a id="__codelineno-6-35" name="__codelineno-6-35" href="#__codelineno-6-35"></a><span class="w"> </span><span class="nt">type</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">molecules.hydrogenate</span>
2820
+ <a id="__codelineno-6-36" name="__codelineno-6-36" href="#__codelineno-6-36"></a><span class="w"> </span><span class="nt">inputs</span><span class="p">:</span>
2821
+ <a id="__codelineno-6-37" name="__codelineno-6-37" href="#__codelineno-6-37"></a><span class="w"> </span><span class="nt">molecules</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">extract.poses</span>
2822
+ <a id="__codelineno-6-38" name="__codelineno-6-38" href="#__codelineno-6-38"></a><span class="w"> </span><span class="nt">table</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">extract.manifest</span>
2823
+ <a id="__codelineno-6-39" name="__codelineno-6-39" href="#__codelineno-6-39"></a><span class="w"> </span><span class="nt">config</span><span class="p">:</span>
2824
+ <a id="__codelineno-6-40" name="__codelineno-6-40" href="#__codelineno-6-40"></a><span class="w"> </span><span class="nt">on_template_failure</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">fail</span>
2825
+ <a id="__codelineno-6-41" name="__codelineno-6-41" href="#__codelineno-6-41"></a><span class="w"> </span><span class="nt">on_failure</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">fail</span>
2826
+ <a id="__codelineno-6-42" name="__codelineno-6-42" href="#__codelineno-6-42"></a><span class="w"> </span><span class="nt">add_coords</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">true</span>
2827
+ <a id="__codelineno-6-43" name="__codelineno-6-43" href="#__codelineno-6-43"></a>
2828
+ <a id="__codelineno-6-44" name="__codelineno-6-44" href="#__codelineno-6-44"></a><span class="w"> </span><span class="p p-Indicator">-</span><span class="w"> </span><span class="nt">id</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">minimize</span>
2829
+ <a id="__codelineno-6-45" name="__codelineno-6-45" href="#__codelineno-6-45"></a><span class="w"> </span><span class="nt">tool</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">md/minimize</span>
2830
+ <a id="__codelineno-6-46" name="__codelineno-6-46" href="#__codelineno-6-46"></a><span class="w"> </span><span class="nt">config</span><span class="p">:</span>
2831
+ <a id="__codelineno-6-47" name="__codelineno-6-47" href="#__codelineno-6-47"></a><span class="w"> </span><span class="nt">protein_pdb_path</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">data/receptor.pdb</span>
2832
+ <a id="__codelineno-6-48" name="__codelineno-6-48" href="#__codelineno-6-48"></a><span class="w"> </span><span class="nt">mode</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">sidechains_free_backbone_restrained</span>
2833
+ <a id="__codelineno-6-49" name="__codelineno-6-49" href="#__codelineno-6-49"></a><span class="w"> </span><span class="nt">backbone_restraint_strength</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">moderate</span>
2834
+ <a id="__codelineno-6-50" name="__codelineno-6-50" href="#__codelineno-6-50"></a><span class="w"> </span><span class="nt">strict_quality</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">false</span>
2835
+ <a id="__codelineno-6-51" name="__codelineno-6-51" href="#__codelineno-6-51"></a><span class="w"> </span><span class="nt">inputs</span><span class="p">:</span>
2836
+ <a id="__codelineno-6-52" name="__codelineno-6-52" href="#__codelineno-6-52"></a><span class="w"> </span><span class="nt">ligand</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">hydrogenate.molecules</span>
2837
+ <a id="__codelineno-6-53" name="__codelineno-6-53" href="#__codelineno-6-53"></a><span class="w"> </span><span class="nt">scatter</span><span class="p">:</span>
2838
+ <a id="__codelineno-6-54" name="__codelineno-6-54" href="#__codelineno-6-54"></a><span class="w"> </span><span class="nt">by</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">ligand_path</span>
2839
+ <a id="__codelineno-6-55" name="__codelineno-6-55" href="#__codelineno-6-55"></a><span class="w"> </span><span class="nt">chunk_size</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">1</span>
2840
+ <a id="__codelineno-6-56" name="__codelineno-6-56" href="#__codelineno-6-56"></a><span class="w"> </span><span class="nt">outputs</span><span class="p">:</span>
2841
+ <a id="__codelineno-6-57" name="__codelineno-6-57" href="#__codelineno-6-57"></a><span class="w"> </span><span class="nt">results</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">result_record</span>
2842
+ <a id="__codelineno-6-58" name="__codelineno-6-58" href="#__codelineno-6-58"></a><span class="w"> </span><span class="nt">ligands</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">minimized_ligand</span>
2843
+ <a id="__codelineno-6-59" name="__codelineno-6-59" href="#__codelineno-6-59"></a>
2844
+ <a id="__codelineno-6-60" name="__codelineno-6-60" href="#__codelineno-6-60"></a><span class="w"> </span><span class="p p-Indicator">-</span><span class="w"> </span><span class="nt">id</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">collect</span>
2845
+ <a id="__codelineno-6-61" name="__codelineno-6-61" href="#__codelineno-6-61"></a><span class="w"> </span><span class="nt">type</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">results.collect</span>
2846
+ <a id="__codelineno-6-62" name="__codelineno-6-62" href="#__codelineno-6-62"></a><span class="w"> </span><span class="nt">inputs</span><span class="p">:</span>
2847
+ <a id="__codelineno-6-63" name="__codelineno-6-63" href="#__codelineno-6-63"></a><span class="w"> </span><span class="nt">results</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">minimize.results</span>
2848
+ <a id="__codelineno-6-64" name="__codelineno-6-64" href="#__codelineno-6-64"></a><span class="w"> </span><span class="nt">config</span><span class="p">:</span>
2849
+ <a id="__codelineno-6-65" name="__codelineno-6-65" href="#__codelineno-6-65"></a><span class="w"> </span><span class="nt">metrics</span><span class="p">:</span>
2850
+ <a id="__codelineno-6-66" name="__codelineno-6-66" href="#__codelineno-6-66"></a><span class="w"> </span><span class="nt">quality_passed</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">metrics.quality_passed</span>
2851
+ <a id="__codelineno-6-67" name="__codelineno-6-67" href="#__codelineno-6-67"></a><span class="w"> </span><span class="nt">quality_flag_count</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">metrics.quality_flag_count</span>
2852
+ <a id="__codelineno-6-68" name="__codelineno-6-68" href="#__codelineno-6-68"></a><span class="w"> </span><span class="nt">convergence</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">metrics.convergence_status</span>
2853
+ <a id="__codelineno-6-69" name="__codelineno-6-69" href="#__codelineno-6-69"></a><span class="w"> </span><span class="nt">ligand_rmsd_angstrom</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">metrics.ligand_heavy_atom_rmsd_angstrom</span>
2854
+ <a id="__codelineno-6-70" name="__codelineno-6-70" href="#__codelineno-6-70"></a><span class="w"> </span><span class="nt">minimized_complex_file</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">paths.minimized_complex</span>
2855
+ <a id="__codelineno-6-71" name="__codelineno-6-71" href="#__codelineno-6-71"></a><span class="w"> </span><span class="nt">minimized_ligand_file</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">paths.minimized_ligand</span>
2856
+ <a id="__codelineno-6-72" name="__codelineno-6-72" href="#__codelineno-6-72"></a><span class="w"> </span><span class="nt">diagnostics_file</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">paths.diagnostics</span>
2857
+ <a id="__codelineno-6-73" name="__codelineno-6-73" href="#__codelineno-6-73"></a><span class="w"> </span><span class="nt">output_name</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">minimized_pose_metrics.csv</span>
2858
+ <a id="__codelineno-6-74" name="__codelineno-6-74" href="#__codelineno-6-74"></a>
2859
+ <a id="__codelineno-6-75" name="__codelineno-6-75" href="#__codelineno-6-75"></a><span class="w"> </span><span class="p p-Indicator">-</span><span class="w"> </span><span class="nt">id</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">accepted</span>
2860
+ <a id="__codelineno-6-76" name="__codelineno-6-76" href="#__codelineno-6-76"></a><span class="w"> </span><span class="nt">type</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">filter.tabular</span>
2861
+ <a id="__codelineno-6-77" name="__codelineno-6-77" href="#__codelineno-6-77"></a><span class="w"> </span><span class="nt">inputs</span><span class="p">:</span>
2862
+ <a id="__codelineno-6-78" name="__codelineno-6-78" href="#__codelineno-6-78"></a><span class="w"> </span><span class="nt">table</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">collect.table</span>
2863
+ <a id="__codelineno-6-79" name="__codelineno-6-79" href="#__codelineno-6-79"></a><span class="w"> </span><span class="nt">config</span><span class="p">:</span>
2864
+ <a id="__codelineno-6-80" name="__codelineno-6-80" href="#__codelineno-6-80"></a><span class="w"> </span><span class="nt">filters</span><span class="p">:</span>
2865
+ <a id="__codelineno-6-81" name="__codelineno-6-81" href="#__codelineno-6-81"></a><span class="w"> </span><span class="p p-Indicator">-</span><span class="w"> </span><span class="nt">column</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">quality_passed</span>
2866
+ <a id="__codelineno-6-82" name="__codelineno-6-82" href="#__codelineno-6-82"></a><span class="w"> </span><span class="nt">op</span><span class="p">:</span><span class="w"> </span><span class="s">'=='</span>
2867
+ <a id="__codelineno-6-83" name="__codelineno-6-83" href="#__codelineno-6-83"></a><span class="w"> </span><span class="nt">value</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">1</span>
2868
+ <a id="__codelineno-6-84" name="__codelineno-6-84" href="#__codelineno-6-84"></a><span class="w"> </span><span class="nt">output_name</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">accepted_minimized_poses.csv</span>
2869
+ </code></pre></div>
2870
+ <ul>
2871
+ <li><code>extract.poses</code> contains one SDF per pose; <code>extract.manifest</code> records ligand and
2872
+ pose IDs. Hydrogenation preserves those IDs in its output manifest.</li>
2873
+ <li>The minimize <strong>input port</strong> is <code>ligand</code>; the <strong>scatter config field</strong> is
2874
+ <code>ligand_path</code>. Each shard receives exactly one pose.</li>
2875
+ <li><code>results.collect</code> automatically joins the path-collection scatter manifest,
2876
+ preserving <code>ligand</code> and <code>pose_id</code> alongside minimization metrics.</li>
2877
+ <li><code>accepted.filtered_table</code> points to the minimized ligand and complex files.
2878
+ Original provenance columns such as <code>pose_file</code> or <code>output_file</code> can still
2879
+ identify the input poses; consume the explicit <code>minimized_*_file</code> columns for
2880
+ final structures, including any relaxed receptor coordinates.</li>
2881
+ </ul>
2882
+ <p>Direct hydrogen addition relies on the docking SDF's chemistry and cannot recover
2883
+ missing bond orders or an intended protonation state. Confirm those upstream. When
2884
+ an upstream stage provides authoritative templates, bind its artifact as
2885
+ <code>templates</code> on <code>hydrogenate</code> (see <a href="../built-ins/#moleculeshydrogenate">template-based repair</a>).
2886
+ <code>on_template_failure: fail</code> prevents fallback if a configured template repair
2887
+ fails; it does not require a template to be present.</p>
2888
+ <p>For flexible-receptor docking, carry the matching per-pose receptor/complex through
2889
+ paired scatter; do not combine all ligand poses with the original rigid receptor.
2890
+ Keep <code>strict_quality: false</code> while collecting finite flagged poses for review.
2891
+ Strict mode deliberately fails rejected jobs and may stop the pipeline before
2892
+ collection. Hard chemistry, parameterization, and nonfinite-state errors always
2893
+ fail. A quality pass alone does not establish pose accuracy.</p>
2894
+ <p>For Slurm, change <code>defaults.backend</code> to <code>slurm</code> and supply the environment/resources
2895
+ from the <a href="../../core/slurm/">Slurm guide</a>. Choose resources per tool: the minimize
2896
+ stage defaults to CPU even when the upstream docking stage uses a GPU.</p>
2897
+ <h2 id="pose-level-md-selection">Pose-Level MD Selection<a class="headerlink" href="#pose-level-md-selection" title="Permanent link">&para;</a></h2>
2898
+ <p>This pipeline extracts one file per docking pose, repairs explicit hydrogens after docking, scatters
2899
+ OpenBPMD over each repaired pose, collects per-pose metrics, selects the best pose per ligand, and
2900
+ retains exact pose files.</p>
2901
+ <div class="highlight"><pre><span></span><code><a id="__codelineno-7-1" name="__codelineno-7-1" href="#__codelineno-7-1"></a><span class="nt">version</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">1</span>
2902
+ <a id="__codelineno-7-2" name="__codelineno-7-2" href="#__codelineno-7-2"></a><span class="nt">name</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">pose-level-openbpmd-selection</span>
2903
+ <a id="__codelineno-7-3" name="__codelineno-7-3" href="#__codelineno-7-3"></a>
2904
+ <a id="__codelineno-7-4" name="__codelineno-7-4" href="#__codelineno-7-4"></a><span class="nt">defaults</span><span class="p">:</span>
2905
+ <a id="__codelineno-7-5" name="__codelineno-7-5" href="#__codelineno-7-5"></a><span class="w"> </span><span class="nt">backend</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">slurm</span>
2906
+ <a id="__codelineno-7-6" name="__codelineno-7-6" href="#__codelineno-7-6"></a><span class="w"> </span><span class="nt">registry_path</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">runs/job_registry.sqlite</span>
2907
+ <a id="__codelineno-7-7" name="__codelineno-7-7" href="#__codelineno-7-7"></a><span class="w"> </span><span class="nt">job_name</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">pose-level-openbpmd-selection</span>
2908
+ <a id="__codelineno-7-8" name="__codelineno-7-8" href="#__codelineno-7-8"></a>
2909
+ <a id="__codelineno-7-9" name="__codelineno-7-9" href="#__codelineno-7-9"></a><span class="nt">stages</span><span class="p">:</span>
2910
+ <a id="__codelineno-7-10" name="__codelineno-7-10" href="#__codelineno-7-10"></a><span class="w"> </span><span class="p p-Indicator">-</span><span class="w"> </span><span class="nt">id</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">gnina_docking</span>
2911
+ <a id="__codelineno-7-11" name="__codelineno-7-11" href="#__codelineno-7-11"></a><span class="w"> </span><span class="nt">tool</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">docking/gnina</span>
2912
+ <a id="__codelineno-7-12" name="__codelineno-7-12" href="#__codelineno-7-12"></a><span class="w"> </span><span class="nt">config</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">configs/gnina_docking.yaml</span>
2913
+ <a id="__codelineno-7-13" name="__codelineno-7-13" href="#__codelineno-7-13"></a><span class="w"> </span><span class="nt">outputs</span><span class="p">:</span>
2914
+ <a id="__codelineno-7-14" name="__codelineno-7-14" href="#__codelineno-7-14"></a><span class="w"> </span><span class="c1"># Expose the score CSV and pose directory from Result.paths.</span>
2915
+ <a id="__codelineno-7-15" name="__codelineno-7-15" href="#__codelineno-7-15"></a><span class="w"> </span><span class="nt">scores</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">best_scores_csv</span>
2916
+ <a id="__codelineno-7-16" name="__codelineno-7-16" href="#__codelineno-7-16"></a><span class="w"> </span><span class="nt">poses</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">poses_dir</span>
2917
+ <a id="__codelineno-7-17" name="__codelineno-7-17" href="#__codelineno-7-17"></a>
2918
+ <a id="__codelineno-7-18" name="__codelineno-7-18" href="#__codelineno-7-18"></a><span class="w"> </span><span class="p p-Indicator">-</span><span class="w"> </span><span class="nt">id</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">extract_poses</span>
2919
+ <a id="__codelineno-7-19" name="__codelineno-7-19" href="#__codelineno-7-19"></a><span class="w"> </span><span class="nt">type</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">poses.extract</span>
2920
+ <a id="__codelineno-7-20" name="__codelineno-7-20" href="#__codelineno-7-20"></a><span class="w"> </span><span class="nt">inputs</span><span class="p">:</span>
2921
+ <a id="__codelineno-7-21" name="__codelineno-7-21" href="#__codelineno-7-21"></a><span class="w"> </span><span class="c1"># Split every SDF/SDFGZ pose from Gnina into a normalized one-pose SDF file.</span>
2922
+ <a id="__codelineno-7-22" name="__codelineno-7-22" href="#__codelineno-7-22"></a><span class="w"> </span><span class="nt">poses</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">gnina_docking.poses</span>
2923
+ <a id="__codelineno-7-23" name="__codelineno-7-23" href="#__codelineno-7-23"></a><span class="w"> </span><span class="c1"># Optional but useful: carries score-table metadata into the pose manifest.</span>
2924
+ <a id="__codelineno-7-24" name="__codelineno-7-24" href="#__codelineno-7-24"></a><span class="w"> </span><span class="nt">table</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">gnina_docking.scores</span>
2925
+ <a id="__codelineno-7-25" name="__codelineno-7-25" href="#__codelineno-7-25"></a><span class="w"> </span><span class="nt">config</span><span class="p">:</span>
2926
+ <a id="__codelineno-7-26" name="__codelineno-7-26" href="#__codelineno-7-26"></a><span class="w"> </span><span class="nt">output_name</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">pose_manifest.csv</span>
2927
+ <a id="__codelineno-7-27" name="__codelineno-7-27" href="#__codelineno-7-27"></a><span class="w"> </span><span class="nt">ligand_column</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">ligand</span>
2928
+ <a id="__codelineno-7-28" name="__codelineno-7-28" href="#__codelineno-7-28"></a><span class="w"> </span><span class="nt">path_column</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">pose_file</span>
2929
+ <a id="__codelineno-7-29" name="__codelineno-7-29" href="#__codelineno-7-29"></a>
2930
+ <a id="__codelineno-7-30" name="__codelineno-7-30" href="#__codelineno-7-30"></a><span class="w"> </span><span class="p p-Indicator">-</span><span class="w"> </span><span class="nt">id</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">repair_pose_hydrogens</span>
2931
+ <a id="__codelineno-7-31" name="__codelineno-7-31" href="#__codelineno-7-31"></a><span class="w"> </span><span class="nt">type</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">molecules.hydrogenate</span>
2932
+ <a id="__codelineno-7-32" name="__codelineno-7-32" href="#__codelineno-7-32"></a><span class="w"> </span><span class="nt">inputs</span><span class="p">:</span>
2933
+ <a id="__codelineno-7-33" name="__codelineno-7-33" href="#__codelineno-7-33"></a><span class="w"> </span><span class="c1"># Hydrogenate the extracted pose path collection before handing poses to OpenBPMD.</span>
2934
+ <a id="__codelineno-7-34" name="__codelineno-7-34" href="#__codelineno-7-34"></a><span class="w"> </span><span class="nt">molecules</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">extract_poses.poses</span>
2935
+ <a id="__codelineno-7-35" name="__codelineno-7-35" href="#__codelineno-7-35"></a><span class="w"> </span><span class="c1"># Reuse the pose manifest so ligand, pose_id, and pose_file provenance are preserved.</span>
2936
+ <a id="__codelineno-7-36" name="__codelineno-7-36" href="#__codelineno-7-36"></a><span class="w"> </span><span class="nt">table</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">extract_poses.manifest</span>
2937
+ <a id="__codelineno-7-37" name="__codelineno-7-37" href="#__codelineno-7-37"></a><span class="w"> </span><span class="nt">config</span><span class="p">:</span>
2938
+ <a id="__codelineno-7-38" name="__codelineno-7-38" href="#__codelineno-7-38"></a><span class="w"> </span><span class="nt">ligand_column</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">ligand</span>
2939
+ <a id="__codelineno-7-39" name="__codelineno-7-39" href="#__codelineno-7-39"></a><span class="w"> </span><span class="nt">pose_id_column</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">pose_id</span>
2940
+ <a id="__codelineno-7-40" name="__codelineno-7-40" href="#__codelineno-7-40"></a><span class="w"> </span><span class="c1"># Without a templates input, hydrogens are added directly to each pose.</span>
2941
+ <a id="__codelineno-7-41" name="__codelineno-7-41" href="#__codelineno-7-41"></a><span class="w"> </span><span class="c1"># See the built-in stage docs for template-based bond-order repair.</span>
2942
+ <a id="__codelineno-7-42" name="__codelineno-7-42" href="#__codelineno-7-42"></a><span class="w"> </span><span class="nt">on_template_failure</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">warn</span>
2943
+ <a id="__codelineno-7-43" name="__codelineno-7-43" href="#__codelineno-7-43"></a><span class="w"> </span><span class="nt">on_failure</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">fail</span>
2944
+ <a id="__codelineno-7-44" name="__codelineno-7-44" href="#__codelineno-7-44"></a><span class="w"> </span><span class="nt">add_coords</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">true</span>
2945
+ <a id="__codelineno-7-45" name="__codelineno-7-45" href="#__codelineno-7-45"></a><span class="w"> </span><span class="nt">output_name</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">hydrogenated_pose_manifest.csv</span>
2946
+ <a id="__codelineno-7-46" name="__codelineno-7-46" href="#__codelineno-7-46"></a>
2947
+ <a id="__codelineno-7-47" name="__codelineno-7-47" href="#__codelineno-7-47"></a><span class="w"> </span><span class="p p-Indicator">-</span><span class="w"> </span><span class="nt">id</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">openbpmd_per_pose</span>
2948
+ <a id="__codelineno-7-48" name="__codelineno-7-48" href="#__codelineno-7-48"></a><span class="w"> </span><span class="nt">tool</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">md/openbpmd</span>
2949
+ <a id="__codelineno-7-49" name="__codelineno-7-49" href="#__codelineno-7-49"></a><span class="w"> </span><span class="nt">config</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">configs/openbpmd_pose.yaml</span>
2950
+ <a id="__codelineno-7-50" name="__codelineno-7-50" href="#__codelineno-7-50"></a><span class="w"> </span><span class="nt">inputs</span><span class="p">:</span>
2951
+ <a id="__codelineno-7-51" name="__codelineno-7-51" href="#__codelineno-7-51"></a><span class="w"> </span><span class="c1"># Bind each hydrogenated pose file to OpenBPMDConfig.ligand_path.</span>
2952
+ <a id="__codelineno-7-52" name="__codelineno-7-52" href="#__codelineno-7-52"></a><span class="w"> </span><span class="nt">ligand_path</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">repair_pose_hydrogens.molecules</span>
2953
+ <a id="__codelineno-7-53" name="__codelineno-7-53" href="#__codelineno-7-53"></a><span class="w"> </span><span class="nt">scatter</span><span class="p">:</span>
2954
+ <a id="__codelineno-7-54" name="__codelineno-7-54" href="#__codelineno-7-54"></a><span class="w"> </span><span class="c1"># Path-collection scatter submits each ligand_path shard independently.</span>
2955
+ <a id="__codelineno-7-55" name="__codelineno-7-55" href="#__codelineno-7-55"></a><span class="w"> </span><span class="nt">by</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">ligand_path</span>
2956
+ <a id="__codelineno-7-56" name="__codelineno-7-56" href="#__codelineno-7-56"></a><span class="w"> </span><span class="nt">chunk_size</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">1</span>
2957
+ <a id="__codelineno-7-57" name="__codelineno-7-57" href="#__codelineno-7-57"></a><span class="w"> </span><span class="nt">outputs</span><span class="p">:</span>
2958
+ <a id="__codelineno-7-58" name="__codelineno-7-58" href="#__codelineno-7-58"></a><span class="w"> </span><span class="c1"># Expose canonical per-shard result records for collection.</span>
2959
+ <a id="__codelineno-7-59" name="__codelineno-7-59" href="#__codelineno-7-59"></a><span class="w"> </span><span class="nt">result_record</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">result_record_json</span>
2960
+ <a id="__codelineno-7-60" name="__codelineno-7-60" href="#__codelineno-7-60"></a>
2961
+ <a id="__codelineno-7-61" name="__codelineno-7-61" href="#__codelineno-7-61"></a><span class="w"> </span><span class="p p-Indicator">-</span><span class="w"> </span><span class="nt">id</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">collect_pose_metrics</span>
2962
+ <a id="__codelineno-7-62" name="__codelineno-7-62" href="#__codelineno-7-62"></a><span class="w"> </span><span class="nt">type</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">results.collect</span>
2963
+ <a id="__codelineno-7-63" name="__codelineno-7-63" href="#__codelineno-7-63"></a><span class="w"> </span><span class="nt">inputs</span><span class="p">:</span>
2964
+ <a id="__codelineno-7-64" name="__codelineno-7-64" href="#__codelineno-7-64"></a><span class="w"> </span><span class="c1"># Collect metrics from every scattered OpenBPMD result record.</span>
2965
+ <a id="__codelineno-7-65" name="__codelineno-7-65" href="#__codelineno-7-65"></a><span class="w"> </span><span class="nt">results</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">openbpmd_per_pose.result_record</span>
2966
+ <a id="__codelineno-7-66" name="__codelineno-7-66" href="#__codelineno-7-66"></a><span class="w"> </span><span class="c1"># Join explicit hydrogenation metadata to the collected metrics.</span>
2967
+ <a id="__codelineno-7-67" name="__codelineno-7-67" href="#__codelineno-7-67"></a><span class="w"> </span><span class="nt">table</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">repair_pose_hydrogens.manifest</span>
2968
+ <a id="__codelineno-7-68" name="__codelineno-7-68" href="#__codelineno-7-68"></a><span class="w"> </span><span class="nt">config</span><span class="p">:</span>
2969
+ <a id="__codelineno-7-69" name="__codelineno-7-69" href="#__codelineno-7-69"></a><span class="w"> </span><span class="nt">metrics</span><span class="p">:</span>
2970
+ <a id="__codelineno-7-70" name="__codelineno-7-70" href="#__codelineno-7-70"></a><span class="w"> </span><span class="nt">comp_score</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">metrics.comp_score</span>
2971
+ <a id="__codelineno-7-71" name="__codelineno-7-71" href="#__codelineno-7-71"></a><span class="w"> </span><span class="nt">pose_score</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">metrics.pose_score</span>
2972
+ <a id="__codelineno-7-72" name="__codelineno-7-72" href="#__codelineno-7-72"></a><span class="w"> </span><span class="nt">output_name</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">openbpmd_pose_metrics.csv</span>
2973
+ <a id="__codelineno-7-73" name="__codelineno-7-73" href="#__codelineno-7-73"></a>
2974
+ <a id="__codelineno-7-74" name="__codelineno-7-74" href="#__codelineno-7-74"></a><span class="w"> </span><span class="p p-Indicator">-</span><span class="w"> </span><span class="nt">id</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">best_pose_per_ligand</span>
2975
+ <a id="__codelineno-7-75" name="__codelineno-7-75" href="#__codelineno-7-75"></a><span class="w"> </span><span class="nt">type</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">filter.tabular</span>
2976
+ <a id="__codelineno-7-76" name="__codelineno-7-76" href="#__codelineno-7-76"></a><span class="w"> </span><span class="nt">inputs</span><span class="p">:</span>
2977
+ <a id="__codelineno-7-77" name="__codelineno-7-77" href="#__codelineno-7-77"></a><span class="w"> </span><span class="c1"># results.collect always emits collect_pose_metrics.table.</span>
2978
+ <a id="__codelineno-7-78" name="__codelineno-7-78" href="#__codelineno-7-78"></a><span class="w"> </span><span class="nt">table</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">collect_pose_metrics.table</span>
2979
+ <a id="__codelineno-7-79" name="__codelineno-7-79" href="#__codelineno-7-79"></a><span class="w"> </span><span class="nt">config</span><span class="p">:</span>
2980
+ <a id="__codelineno-7-80" name="__codelineno-7-80" href="#__codelineno-7-80"></a><span class="w"> </span><span class="nt">group_by</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">ligand</span>
2981
+ <a id="__codelineno-7-81" name="__codelineno-7-81" href="#__codelineno-7-81"></a><span class="w"> </span><span class="nt">sort_by</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">comp_score</span>
2982
+ <a id="__codelineno-7-82" name="__codelineno-7-82" href="#__codelineno-7-82"></a><span class="w"> </span><span class="nt">ascending</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">true</span>
2983
+ <a id="__codelineno-7-83" name="__codelineno-7-83" href="#__codelineno-7-83"></a><span class="w"> </span><span class="nt">top_n_per_group</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">1</span>
2984
+ <a id="__codelineno-7-84" name="__codelineno-7-84" href="#__codelineno-7-84"></a><span class="w"> </span><span class="nt">output_name</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">best_pose_per_ligand.csv</span>
2985
+ <a id="__codelineno-7-85" name="__codelineno-7-85" href="#__codelineno-7-85"></a>
2986
+ <a id="__codelineno-7-86" name="__codelineno-7-86" href="#__codelineno-7-86"></a><span class="w"> </span><span class="p p-Indicator">-</span><span class="w"> </span><span class="nt">id</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">retain_best_poses</span>
2987
+ <a id="__codelineno-7-87" name="__codelineno-7-87" href="#__codelineno-7-87"></a><span class="w"> </span><span class="nt">type</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">filter.molecules</span>
2988
+ <a id="__codelineno-7-88" name="__codelineno-7-88" href="#__codelineno-7-88"></a><span class="w"> </span><span class="nt">inputs</span><span class="p">:</span>
2989
+ <a id="__codelineno-7-89" name="__codelineno-7-89" href="#__codelineno-7-89"></a><span class="w"> </span><span class="c1"># Filter the hydrogenated pose files, not the pre-repair Gnina poses.</span>
2990
+ <a id="__codelineno-7-90" name="__codelineno-7-90" href="#__codelineno-7-90"></a><span class="w"> </span><span class="nt">molecules</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">repair_pose_hydrogens.molecules</span>
2991
+ <a id="__codelineno-7-91" name="__codelineno-7-91" href="#__codelineno-7-91"></a><span class="w"> </span><span class="nt">ids</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">best_pose_per_ligand.filtered_table</span>
2992
+ <a id="__codelineno-7-92" name="__codelineno-7-92" href="#__codelineno-7-92"></a><span class="w"> </span><span class="nt">config</span><span class="p">:</span>
2993
+ <a id="__codelineno-7-93" name="__codelineno-7-93" href="#__codelineno-7-93"></a><span class="w"> </span><span class="c1"># Prefer exact file paths from the filtered table over filename matching.</span>
2994
+ <a id="__codelineno-7-94" name="__codelineno-7-94" href="#__codelineno-7-94"></a><span class="w"> </span><span class="nt">path_column</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">output_file</span>
2995
+ </code></pre></div>
2996
+ <p>Artifact flow:</p>
2997
+ <ul>
2998
+ <li><code>extract_poses.poses</code> is a path collection with one SDF per pose.</li>
2999
+ <li><code>repair_pose_hydrogens.molecules</code> is the repaired path collection used by OpenBPMD.</li>
3000
+ <li>Path-collection scatter creates one OpenBPMD shard per repaired pose.</li>
3001
+ <li><code>results.collect</code> joins per-pose metrics to pose/hydrogenation provenance.</li>
3002
+ <li><code>filter.tabular</code> uses <code>group_by: ligand</code>; this selects the best pose per ligand rather than the
3003
+ globally best poses.</li>
3004
+ <li><code>retain_best_poses.molecules</code> contains exact selected repaired pose files.</li>
3005
+ </ul>
3006
+ <h2 id="descriptor-model-and-candidate-filter">Descriptor, Model, and Candidate Filter<a class="headerlink" href="#descriptor-model-and-candidate-filter" title="Permanent link">&para;</a></h2>
3007
+ <p>This pipeline computes descriptors, trains an ML model, and filters candidates by predicted value.
3008
+ The example assumes the descriptor and ML configs agree on the generated table columns.</p>
3009
+ <div class="highlight"><pre><span></span><code><a id="__codelineno-8-1" name="__codelineno-8-1" href="#__codelineno-8-1"></a><span class="nt">version</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">1</span>
3010
+ <a id="__codelineno-8-2" name="__codelineno-8-2" href="#__codelineno-8-2"></a><span class="nt">name</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">descriptor-ml-filter</span>
3011
+ <a id="__codelineno-8-3" name="__codelineno-8-3" href="#__codelineno-8-3"></a>
3012
+ <a id="__codelineno-8-4" name="__codelineno-8-4" href="#__codelineno-8-4"></a><span class="nt">defaults</span><span class="p">:</span>
3013
+ <a id="__codelineno-8-5" name="__codelineno-8-5" href="#__codelineno-8-5"></a><span class="w"> </span><span class="nt">backend</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">local</span>
3014
+ <a id="__codelineno-8-6" name="__codelineno-8-6" href="#__codelineno-8-6"></a><span class="w"> </span><span class="nt">registry_path</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">runs/job_registry.sqlite</span>
3015
+ <a id="__codelineno-8-7" name="__codelineno-8-7" href="#__codelineno-8-7"></a>
3016
+ <a id="__codelineno-8-8" name="__codelineno-8-8" href="#__codelineno-8-8"></a><span class="nt">stages</span><span class="p">:</span>
3017
+ <a id="__codelineno-8-9" name="__codelineno-8-9" href="#__codelineno-8-9"></a><span class="w"> </span><span class="p p-Indicator">-</span><span class="w"> </span><span class="nt">id</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">psa_descriptors</span>
3018
+ <a id="__codelineno-8-10" name="__codelineno-8-10" href="#__codelineno-8-10"></a><span class="w"> </span><span class="nt">tool</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">descriptors/ani-psa</span>
3019
+ <a id="__codelineno-8-11" name="__codelineno-8-11" href="#__codelineno-8-11"></a><span class="w"> </span><span class="nt">config</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">configs/ani_psa_batch.yaml</span>
3020
+ <a id="__codelineno-8-12" name="__codelineno-8-12" href="#__codelineno-8-12"></a><span class="w"> </span><span class="nt">outputs</span><span class="p">:</span>
3021
+ <a id="__codelineno-8-13" name="__codelineno-8-13" href="#__codelineno-8-13"></a><span class="w"> </span><span class="c1"># Expose Result.paths["results_csv"] as psa_descriptors.table.</span>
3022
+ <a id="__codelineno-8-14" name="__codelineno-8-14" href="#__codelineno-8-14"></a><span class="w"> </span><span class="nt">table</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">results_csv</span>
3023
+ <a id="__codelineno-8-15" name="__codelineno-8-15" href="#__codelineno-8-15"></a>
3024
+ <a id="__codelineno-8-16" name="__codelineno-8-16" href="#__codelineno-8-16"></a><span class="w"> </span><span class="p p-Indicator">-</span><span class="w"> </span><span class="nt">id</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">train_gp</span>
3025
+ <a id="__codelineno-8-17" name="__codelineno-8-17" href="#__codelineno-8-17"></a><span class="w"> </span><span class="nt">tool</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">ml/simple-gp</span>
3026
+ <a id="__codelineno-8-18" name="__codelineno-8-18" href="#__codelineno-8-18"></a><span class="w"> </span><span class="nt">config</span><span class="p">:</span>
3027
+ <a id="__codelineno-8-19" name="__codelineno-8-19" href="#__codelineno-8-19"></a><span class="w"> </span><span class="nt">train_path</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">data/training_descriptors.csv</span>
3028
+ <a id="__codelineno-8-20" name="__codelineno-8-20" href="#__codelineno-8-20"></a><span class="w"> </span><span class="nt">target_column</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">measured_property</span>
3029
+ <a id="__codelineno-8-21" name="__codelineno-8-21" href="#__codelineno-8-21"></a><span class="w"> </span><span class="c1"># Use the table artifact from the descriptor stage as the GP test/prediction set.</span>
3030
+ <a id="__codelineno-8-22" name="__codelineno-8-22" href="#__codelineno-8-22"></a><span class="w"> </span><span class="nt">test_path</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">psa_descriptors.table</span>
3031
+ <a id="__codelineno-8-23" name="__codelineno-8-23" href="#__codelineno-8-23"></a><span class="w"> </span><span class="nt">feature_columns</span><span class="p">:</span><span class="w"> </span><span class="p p-Indicator">[</span><span class="nv">ani_psa</span><span class="p p-Indicator">,</span><span class="w"> </span><span class="nv">heavy_atom_count</span><span class="p p-Indicator">]</span>
3032
+ <a id="__codelineno-8-24" name="__codelineno-8-24" href="#__codelineno-8-24"></a><span class="w"> </span><span class="nt">kernel</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">rbf</span>
3033
+ <a id="__codelineno-8-25" name="__codelineno-8-25" href="#__codelineno-8-25"></a><span class="w"> </span><span class="nt">mode</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">train</span>
3034
+ <a id="__codelineno-8-26" name="__codelineno-8-26" href="#__codelineno-8-26"></a><span class="w"> </span><span class="nt">model_path</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">artifacts/simple_gp_model.joblib</span>
3035
+ <a id="__codelineno-8-27" name="__codelineno-8-27" href="#__codelineno-8-27"></a><span class="w"> </span><span class="nt">outputs</span><span class="p">:</span>
3036
+ <a id="__codelineno-8-28" name="__codelineno-8-28" href="#__codelineno-8-28"></a><span class="w"> </span><span class="c1"># Expose Result.paths["predictions_csv"] as train_gp.predictions.</span>
3037
+ <a id="__codelineno-8-29" name="__codelineno-8-29" href="#__codelineno-8-29"></a><span class="w"> </span><span class="nt">predictions</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">predictions_csv</span>
3038
+ <a id="__codelineno-8-30" name="__codelineno-8-30" href="#__codelineno-8-30"></a>
3039
+ <a id="__codelineno-8-31" name="__codelineno-8-31" href="#__codelineno-8-31"></a><span class="w"> </span><span class="p p-Indicator">-</span><span class="w"> </span><span class="nt">id</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">promising_candidates</span>
3040
+ <a id="__codelineno-8-32" name="__codelineno-8-32" href="#__codelineno-8-32"></a><span class="w"> </span><span class="nt">type</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">filter.tabular</span>
3041
+ <a id="__codelineno-8-33" name="__codelineno-8-33" href="#__codelineno-8-33"></a><span class="w"> </span><span class="nt">inputs</span><span class="p">:</span>
3042
+ <a id="__codelineno-8-34" name="__codelineno-8-34" href="#__codelineno-8-34"></a><span class="w"> </span><span class="nt">table</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">train_gp.predictions</span>
3043
+ <a id="__codelineno-8-35" name="__codelineno-8-35" href="#__codelineno-8-35"></a><span class="w"> </span><span class="nt">config</span><span class="p">:</span>
3044
+ <a id="__codelineno-8-36" name="__codelineno-8-36" href="#__codelineno-8-36"></a><span class="w"> </span><span class="nt">filters</span><span class="p">:</span>
3045
+ <a id="__codelineno-8-37" name="__codelineno-8-37" href="#__codelineno-8-37"></a><span class="w"> </span><span class="p p-Indicator">-</span><span class="w"> </span><span class="nt">column</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">y_pred</span>
3046
+ <a id="__codelineno-8-38" name="__codelineno-8-38" href="#__codelineno-8-38"></a><span class="w"> </span><span class="nt">op</span><span class="p">:</span><span class="w"> </span><span class="s">"&gt;="</span>
3047
+ <a id="__codelineno-8-39" name="__codelineno-8-39" href="#__codelineno-8-39"></a><span class="w"> </span><span class="nt">value</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">7.0</span>
3048
+ <a id="__codelineno-8-40" name="__codelineno-8-40" href="#__codelineno-8-40"></a><span class="w"> </span><span class="nt">sort_by</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">y_pred</span>
3049
+ <a id="__codelineno-8-41" name="__codelineno-8-41" href="#__codelineno-8-41"></a><span class="w"> </span><span class="nt">ascending</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">false</span>
3050
+ <a id="__codelineno-8-42" name="__codelineno-8-42" href="#__codelineno-8-42"></a><span class="w"> </span><span class="nt">top_n</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">250</span>
3051
+ <a id="__codelineno-8-43" name="__codelineno-8-43" href="#__codelineno-8-43"></a><span class="w"> </span><span class="nt">output_name</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">promising_candidates.csv</span>
3052
+ </code></pre></div>
3053
+ <p>Artifact flow:</p>
3054
+ <ul>
3055
+ <li><code>psa_descriptors.table</code> is the descriptor table.</li>
3056
+ <li><code>train_gp.predictions</code> is the model prediction table.</li>
3057
+ <li><code>promising_candidates.filtered_table</code> is the ranked filtered candidate list.</li>
3058
+ </ul>
3059
+ <h2 id="result-collection-and-diagnostics">Result Collection and Diagnostics<a class="headerlink" href="#result-collection-and-diagnostics" title="Permanent link">&para;</a></h2>
3060
+ <p>This pipeline collects scattered JSON results, filters the collected metrics, and produces a
3061
+ distribution diagnostic report.</p>
3062
+ <div class="highlight"><pre><span></span><code><a id="__codelineno-9-1" name="__codelineno-9-1" href="#__codelineno-9-1"></a><span class="nt">version</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">1</span>
3063
+ <a id="__codelineno-9-2" name="__codelineno-9-2" href="#__codelineno-9-2"></a><span class="nt">name</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">collect-and-diagnose</span>
3064
+ <a id="__codelineno-9-3" name="__codelineno-9-3" href="#__codelineno-9-3"></a>
3065
+ <a id="__codelineno-9-4" name="__codelineno-9-4" href="#__codelineno-9-4"></a><span class="nt">defaults</span><span class="p">:</span>
3066
+ <a id="__codelineno-9-5" name="__codelineno-9-5" href="#__codelineno-9-5"></a><span class="w"> </span><span class="nt">backend</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">local</span>
3067
+ <a id="__codelineno-9-6" name="__codelineno-9-6" href="#__codelineno-9-6"></a><span class="w"> </span><span class="nt">registry_path</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">runs/job_registry.sqlite</span>
3068
+ <a id="__codelineno-9-7" name="__codelineno-9-7" href="#__codelineno-9-7"></a>
3069
+ <a id="__codelineno-9-8" name="__codelineno-9-8" href="#__codelineno-9-8"></a><span class="nt">stages</span><span class="p">:</span>
3070
+ <a id="__codelineno-9-9" name="__codelineno-9-9" href="#__codelineno-9-9"></a><span class="w"> </span><span class="p p-Indicator">-</span><span class="w"> </span><span class="nt">id</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">scattered_transfer</span>
3071
+ <a id="__codelineno-9-10" name="__codelineno-9-10" href="#__codelineno-9-10"></a><span class="w"> </span><span class="nt">tool</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">qm/transfer-free-energy</span>
3072
+ <a id="__codelineno-9-11" name="__codelineno-9-11" href="#__codelineno-9-11"></a><span class="w"> </span><span class="nt">config</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">configs/transfer_free_energy.yaml</span>
3073
+ <a id="__codelineno-9-12" name="__codelineno-9-12" href="#__codelineno-9-12"></a><span class="w"> </span><span class="nt">scatter</span><span class="p">:</span>
3074
+ <a id="__codelineno-9-13" name="__codelineno-9-13" href="#__codelineno-9-13"></a><span class="w"> </span><span class="c1"># Split the ligand SDF into one-molecule transfer calculations.</span>
3075
+ <a id="__codelineno-9-14" name="__codelineno-9-14" href="#__codelineno-9-14"></a><span class="w"> </span><span class="nt">by</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">ligand_sdf</span>
3076
+ <a id="__codelineno-9-15" name="__codelineno-9-15" href="#__codelineno-9-15"></a><span class="w"> </span><span class="nt">chunk_size</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">1</span>
3077
+ <a id="__codelineno-9-16" name="__codelineno-9-16" href="#__codelineno-9-16"></a><span class="w"> </span><span class="nt">outputs</span><span class="p">:</span>
3078
+ <a id="__codelineno-9-17" name="__codelineno-9-17" href="#__codelineno-9-17"></a><span class="w"> </span><span class="c1"># Expose per-shard canonical result records.</span>
3079
+ <a id="__codelineno-9-18" name="__codelineno-9-18" href="#__codelineno-9-18"></a><span class="w"> </span><span class="nt">result_record</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">result_record_json</span>
3080
+ <a id="__codelineno-9-19" name="__codelineno-9-19" href="#__codelineno-9-19"></a>
3081
+ <a id="__codelineno-9-20" name="__codelineno-9-20" href="#__codelineno-9-20"></a><span class="w"> </span><span class="p p-Indicator">-</span><span class="w"> </span><span class="nt">id</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">collect_transfer</span>
3082
+ <a id="__codelineno-9-21" name="__codelineno-9-21" href="#__codelineno-9-21"></a><span class="w"> </span><span class="nt">type</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">results.collect</span>
3083
+ <a id="__codelineno-9-22" name="__codelineno-9-22" href="#__codelineno-9-22"></a><span class="w"> </span><span class="nt">inputs</span><span class="p">:</span>
3084
+ <a id="__codelineno-9-23" name="__codelineno-9-23" href="#__codelineno-9-23"></a><span class="w"> </span><span class="nt">results</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">scattered_transfer.result_record</span>
3085
+ <a id="__codelineno-9-24" name="__codelineno-9-24" href="#__codelineno-9-24"></a><span class="w"> </span><span class="nt">config</span><span class="p">:</span>
3086
+ <a id="__codelineno-9-25" name="__codelineno-9-25" href="#__codelineno-9-25"></a><span class="w"> </span><span class="nt">metrics</span><span class="p">:</span>
3087
+ <a id="__codelineno-9-26" name="__codelineno-9-26" href="#__codelineno-9-26"></a><span class="w"> </span><span class="c1"># Copy payload["metrics"]["delta_g_kcal_mol"] into a table column.</span>
3088
+ <a id="__codelineno-9-27" name="__codelineno-9-27" href="#__codelineno-9-27"></a><span class="w"> </span><span class="nt">delta_g_kcal_mol</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">metrics.delta_g_kcal_mol</span>
3089
+ <a id="__codelineno-9-28" name="__codelineno-9-28" href="#__codelineno-9-28"></a><span class="w"> </span><span class="nt">output_name</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">transfer_metrics.csv</span>
3090
+ <a id="__codelineno-9-29" name="__codelineno-9-29" href="#__codelineno-9-29"></a>
3091
+ <a id="__codelineno-9-30" name="__codelineno-9-30" href="#__codelineno-9-30"></a><span class="w"> </span><span class="p p-Indicator">-</span><span class="w"> </span><span class="nt">id</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">filter_transfer</span>
3092
+ <a id="__codelineno-9-31" name="__codelineno-9-31" href="#__codelineno-9-31"></a><span class="w"> </span><span class="nt">type</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">filter.tabular</span>
3093
+ <a id="__codelineno-9-32" name="__codelineno-9-32" href="#__codelineno-9-32"></a><span class="w"> </span><span class="nt">inputs</span><span class="p">:</span>
3094
+ <a id="__codelineno-9-33" name="__codelineno-9-33" href="#__codelineno-9-33"></a><span class="w"> </span><span class="c1"># results.collect emits collect_solvation.table.</span>
3095
+ <a id="__codelineno-9-34" name="__codelineno-9-34" href="#__codelineno-9-34"></a><span class="w"> </span><span class="nt">table</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">collect_transfer.table</span>
3096
+ <a id="__codelineno-9-35" name="__codelineno-9-35" href="#__codelineno-9-35"></a><span class="w"> </span><span class="nt">config</span><span class="p">:</span>
3097
+ <a id="__codelineno-9-36" name="__codelineno-9-36" href="#__codelineno-9-36"></a><span class="w"> </span><span class="nt">filters</span><span class="p">:</span>
3098
+ <a id="__codelineno-9-37" name="__codelineno-9-37" href="#__codelineno-9-37"></a><span class="w"> </span><span class="p p-Indicator">-</span><span class="w"> </span><span class="nt">column</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">delta_g_kcal_mol</span>
3099
+ <a id="__codelineno-9-38" name="__codelineno-9-38" href="#__codelineno-9-38"></a><span class="w"> </span><span class="nt">op</span><span class="p">:</span><span class="w"> </span><span class="s">"&lt;="</span>
3100
+ <a id="__codelineno-9-39" name="__codelineno-9-39" href="#__codelineno-9-39"></a><span class="w"> </span><span class="nt">value</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">-3.0</span>
3101
+ <a id="__codelineno-9-40" name="__codelineno-9-40" href="#__codelineno-9-40"></a><span class="w"> </span><span class="nt">sort_by</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">delta_g_kcal_mol</span>
3102
+ <a id="__codelineno-9-41" name="__codelineno-9-41" href="#__codelineno-9-41"></a><span class="w"> </span><span class="nt">ascending</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">true</span>
3103
+ <a id="__codelineno-9-42" name="__codelineno-9-42" href="#__codelineno-9-42"></a><span class="w"> </span><span class="nt">output_name</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">favorable_transfer.csv</span>
3104
+ <a id="__codelineno-9-43" name="__codelineno-9-43" href="#__codelineno-9-43"></a>
3105
+ <a id="__codelineno-9-44" name="__codelineno-9-44" href="#__codelineno-9-44"></a><span class="w"> </span><span class="p p-Indicator">-</span><span class="w"> </span><span class="nt">id</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">distribution_report</span>
3106
+ <a id="__codelineno-9-45" name="__codelineno-9-45" href="#__codelineno-9-45"></a><span class="w"> </span><span class="nt">tool</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">datascience/distribution-diagnostics</span>
3107
+ <a id="__codelineno-9-46" name="__codelineno-9-46" href="#__codelineno-9-46"></a><span class="w"> </span><span class="nt">config</span><span class="p">:</span>
3108
+ <a id="__codelineno-9-47" name="__codelineno-9-47" href="#__codelineno-9-47"></a><span class="w"> </span><span class="c1"># Built-in stage outputs can be bound into inline tool config fields.</span>
3109
+ <a id="__codelineno-9-48" name="__codelineno-9-48" href="#__codelineno-9-48"></a><span class="w"> </span><span class="nt">csv_path</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">filter_transfer.filtered_table</span>
3110
+ <a id="__codelineno-9-49" name="__codelineno-9-49" href="#__codelineno-9-49"></a><span class="w"> </span><span class="nt">column</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">delta_g_kcal_mol</span>
3111
+ <a id="__codelineno-9-50" name="__codelineno-9-50" href="#__codelineno-9-50"></a><span class="w"> </span><span class="nt">bins</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">50</span>
3112
+ <a id="__codelineno-9-51" name="__codelineno-9-51" href="#__codelineno-9-51"></a><span class="w"> </span><span class="nt">include_log</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">false</span>
3113
+ <a id="__codelineno-9-52" name="__codelineno-9-52" href="#__codelineno-9-52"></a><span class="w"> </span><span class="nt">outputs</span><span class="p">:</span>
3114
+ <a id="__codelineno-9-53" name="__codelineno-9-53" href="#__codelineno-9-53"></a><span class="w"> </span><span class="nt">report</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">report_json</span>
3115
+ <a id="__codelineno-9-54" name="__codelineno-9-54" href="#__codelineno-9-54"></a><span class="w"> </span><span class="nt">plot</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">plot_png</span>
3116
+ </code></pre></div>
3117
+ <p>Artifact flow:</p>
3118
+ <ul>
3119
+ <li><code>scattered_transfer.result_record</code> is a reduced collection of result records.</li>
3120
+ <li><code>collect_transfer.table</code> joins JSON metrics to scatter provenance.</li>
3121
+ <li><code>filter_transfer.filtered_table</code> is a subset table.</li>
3122
+ <li><code>distribution_report.report</code> and <code>distribution_report.plot</code> summarize the filtered distribution.</li>
3123
+ </ul>
3124
+
3125
+
3126
+
3127
+
3128
+
3129
+
3130
+
3131
+
3132
+
3133
+
3134
+
3135
+
3136
+
3137
+ </article>
3138
+ </div>
3139
+
3140
+
3141
+ <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script>
3142
+ </div>
3143
+
3144
+ <button type="button" class="md-top md-icon" data-md-component="top" hidden>
3145
+
3146
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg>
3147
+ Back to top
3148
+ </button>
3149
+
3150
+ </main>
3151
+
3152
+ <footer class="md-footer">
3153
+
3154
+ <div class="md-footer-meta md-typeset">
3155
+ <div class="md-footer-meta__inner md-grid">
3156
+ <div class="md-copyright">
3157
+
3158
+
3159
+ Made with
3160
+ <a href="https://squidfunk.github.io/mkdocs-material/" target="_blank" rel="noopener">
3161
+ Material for MkDocs
3162
+ </a>
3163
+
3164
+ </div>
3165
+
3166
+ </div>
3167
+ </div>
3168
+ </footer>
3169
+
3170
+ </div>
3171
+ <div class="md-dialog" data-md-component="dialog">
3172
+ <div class="md-dialog__inner md-typeset"></div>
3173
+ </div>
3174
+
3175
+
3176
+
3177
+
3178
+
3179
+ <script id="__config" type="application/json">{"annotate": null, "base": "../..", "features": ["navigation.instant", "navigation.sections", "navigation.indexes", "navigation.top", "search.highlight", "search.suggest", "content.code.copy"], "search": "../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script>
3180
+
3181
+
3182
+ <script src="../../assets/javascripts/bundle.d7400e89.min.js"></script>
3183
+
3184
+
3185
+ </body>
3186
+ </html>