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,2435 @@
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/development/tool-authoring/">
14
+
15
+
16
+ <link rel="prev" href="../release-notes/">
17
+
18
+
19
+ <link rel="next" href="../documentation/">
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>Tool Authoring - 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="#tool-authoring" 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
+ Tool Authoring
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
+ <li class="md-nav__item md-nav__item--section md-nav__item--nested">
865
+
866
+
867
+
868
+ <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_5" >
869
+
870
+
871
+ <div class="md-nav__link md-nav__container">
872
+ <a href="../../pipelines/" class="md-nav__link ">
873
+
874
+
875
+
876
+ <span class="md-ellipsis">
877
+
878
+
879
+ Pipelines
880
+
881
+
882
+
883
+ </span>
884
+
885
+
886
+
887
+ </a>
888
+
889
+
890
+ <label class="md-nav__link " for="__nav_5" id="__nav_5_label" tabindex="">
891
+ <span class="md-nav__icon md-icon"></span>
892
+ </label>
893
+
894
+ </div>
895
+
896
+ <nav class="md-nav" data-md-level="1" aria-labelledby="__nav_5_label" aria-expanded="false">
897
+ <label class="md-nav__title" for="__nav_5">
898
+ <span class="md-nav__icon md-icon"></span>
899
+
900
+
901
+ Pipelines
902
+
903
+
904
+ </label>
905
+ <ul class="md-nav__list" data-md-scrollfix>
906
+
907
+
908
+
909
+
910
+
911
+
912
+
913
+ <li class="md-nav__item">
914
+ <a href="../../pipelines/specification/" class="md-nav__link">
915
+
916
+
917
+
918
+ <span class="md-ellipsis">
919
+
920
+
921
+ Specification
922
+
923
+
924
+
925
+ </span>
926
+
927
+
928
+
929
+ </a>
930
+ </li>
931
+
932
+
933
+
934
+
935
+
936
+
937
+
938
+
939
+
940
+
941
+ <li class="md-nav__item">
942
+ <a href="../../pipelines/artifacts/" class="md-nav__link">
943
+
944
+
945
+
946
+ <span class="md-ellipsis">
947
+
948
+
949
+ Artifacts
950
+
951
+
952
+
953
+ </span>
954
+
955
+
956
+
957
+ </a>
958
+ </li>
959
+
960
+
961
+
962
+
963
+
964
+
965
+
966
+
967
+
968
+
969
+ <li class="md-nav__item">
970
+ <a href="../../pipelines/built-ins/" class="md-nav__link">
971
+
972
+
973
+
974
+ <span class="md-ellipsis">
975
+
976
+
977
+ Built-in Stages
978
+
979
+
980
+
981
+ </span>
982
+
983
+
984
+
985
+ </a>
986
+ </li>
987
+
988
+
989
+
990
+
991
+
992
+
993
+
994
+
995
+
996
+
997
+ <li class="md-nav__item">
998
+ <a href="../../pipelines/examples/" class="md-nav__link">
999
+
1000
+
1001
+
1002
+ <span class="md-ellipsis">
1003
+
1004
+
1005
+ Examples
1006
+
1007
+
1008
+
1009
+ </span>
1010
+
1011
+
1012
+
1013
+ </a>
1014
+ </li>
1015
+
1016
+
1017
+
1018
+
1019
+ </ul>
1020
+ </nav>
1021
+
1022
+ </li>
1023
+
1024
+
1025
+
1026
+
1027
+
1028
+
1029
+
1030
+
1031
+
1032
+
1033
+
1034
+
1035
+
1036
+
1037
+
1038
+
1039
+
1040
+
1041
+
1042
+
1043
+
1044
+
1045
+
1046
+
1047
+
1048
+
1049
+
1050
+
1051
+
1052
+
1053
+
1054
+
1055
+
1056
+
1057
+
1058
+
1059
+
1060
+ <li class="md-nav__item md-nav__item--section md-nav__item--nested">
1061
+
1062
+
1063
+
1064
+ <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_6" >
1065
+
1066
+
1067
+ <div class="md-nav__link md-nav__container">
1068
+ <a href="../../plugins/" class="md-nav__link ">
1069
+
1070
+
1071
+
1072
+ <span class="md-ellipsis">
1073
+
1074
+
1075
+ Plugins
1076
+
1077
+
1078
+
1079
+ </span>
1080
+
1081
+
1082
+
1083
+ </a>
1084
+
1085
+
1086
+ <label class="md-nav__link " for="__nav_6" id="__nav_6_label" tabindex="">
1087
+ <span class="md-nav__icon md-icon"></span>
1088
+ </label>
1089
+
1090
+ </div>
1091
+
1092
+ <nav class="md-nav" data-md-level="1" aria-labelledby="__nav_6_label" aria-expanded="false">
1093
+ <label class="md-nav__title" for="__nav_6">
1094
+ <span class="md-nav__icon md-icon"></span>
1095
+
1096
+
1097
+ Plugins
1098
+
1099
+
1100
+ </label>
1101
+ <ul class="md-nav__list" data-md-scrollfix>
1102
+
1103
+
1104
+
1105
+
1106
+
1107
+
1108
+
1109
+ <li class="md-nav__item">
1110
+ <a href="../../plugins/version-matrix/" class="md-nav__link">
1111
+
1112
+
1113
+
1114
+ <span class="md-ellipsis">
1115
+
1116
+
1117
+ Version Matrix
1118
+
1119
+
1120
+
1121
+ </span>
1122
+
1123
+
1124
+
1125
+ </a>
1126
+ </li>
1127
+
1128
+
1129
+
1130
+
1131
+
1132
+
1133
+
1134
+
1135
+
1136
+
1137
+ <li class="md-nav__item">
1138
+ <a href="../../plugins/docking/" class="md-nav__link">
1139
+
1140
+
1141
+
1142
+ <span class="md-ellipsis">
1143
+
1144
+
1145
+ Docking
1146
+
1147
+
1148
+
1149
+ </span>
1150
+
1151
+
1152
+
1153
+ </a>
1154
+ </li>
1155
+
1156
+
1157
+
1158
+
1159
+
1160
+
1161
+
1162
+
1163
+
1164
+
1165
+ <li class="md-nav__item">
1166
+ <a href="../../plugins/descriptors/" class="md-nav__link">
1167
+
1168
+
1169
+
1170
+ <span class="md-ellipsis">
1171
+
1172
+
1173
+ Descriptors
1174
+
1175
+
1176
+
1177
+ </span>
1178
+
1179
+
1180
+
1181
+ </a>
1182
+ </li>
1183
+
1184
+
1185
+
1186
+
1187
+
1188
+
1189
+
1190
+
1191
+
1192
+
1193
+ <li class="md-nav__item">
1194
+ <a href="../../plugins/md/" class="md-nav__link">
1195
+
1196
+
1197
+
1198
+ <span class="md-ellipsis">
1199
+
1200
+
1201
+ MD
1202
+
1203
+
1204
+
1205
+ </span>
1206
+
1207
+
1208
+
1209
+ </a>
1210
+ </li>
1211
+
1212
+
1213
+
1214
+
1215
+
1216
+
1217
+
1218
+
1219
+
1220
+
1221
+ <li class="md-nav__item">
1222
+ <a href="../../plugins/fep/" class="md-nav__link">
1223
+
1224
+
1225
+
1226
+ <span class="md-ellipsis">
1227
+
1228
+
1229
+ FEP
1230
+
1231
+
1232
+
1233
+ </span>
1234
+
1235
+
1236
+
1237
+ </a>
1238
+ </li>
1239
+
1240
+
1241
+
1242
+
1243
+
1244
+
1245
+
1246
+
1247
+
1248
+
1249
+ <li class="md-nav__item">
1250
+ <a href="../../plugins/qm/" class="md-nav__link">
1251
+
1252
+
1253
+
1254
+ <span class="md-ellipsis">
1255
+
1256
+
1257
+ QM
1258
+
1259
+
1260
+
1261
+ </span>
1262
+
1263
+
1264
+
1265
+ </a>
1266
+ </li>
1267
+
1268
+
1269
+
1270
+
1271
+
1272
+
1273
+
1274
+
1275
+
1276
+
1277
+ <li class="md-nav__item">
1278
+ <a href="../../plugins/ml/" class="md-nav__link">
1279
+
1280
+
1281
+
1282
+ <span class="md-ellipsis">
1283
+
1284
+
1285
+ ML
1286
+
1287
+
1288
+
1289
+ </span>
1290
+
1291
+
1292
+
1293
+ </a>
1294
+ </li>
1295
+
1296
+
1297
+
1298
+
1299
+
1300
+
1301
+
1302
+
1303
+
1304
+
1305
+ <li class="md-nav__item">
1306
+ <a href="../../plugins/datascience/" class="md-nav__link">
1307
+
1308
+
1309
+
1310
+ <span class="md-ellipsis">
1311
+
1312
+
1313
+ Data Science
1314
+
1315
+
1316
+
1317
+ </span>
1318
+
1319
+
1320
+
1321
+ </a>
1322
+ </li>
1323
+
1324
+
1325
+
1326
+
1327
+ </ul>
1328
+ </nav>
1329
+
1330
+ </li>
1331
+
1332
+
1333
+
1334
+
1335
+
1336
+
1337
+
1338
+
1339
+
1340
+
1341
+
1342
+
1343
+
1344
+
1345
+
1346
+
1347
+
1348
+
1349
+
1350
+
1351
+
1352
+
1353
+
1354
+
1355
+
1356
+ <li class="md-nav__item md-nav__item--section md-nav__item--nested">
1357
+
1358
+
1359
+
1360
+ <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_7" >
1361
+
1362
+
1363
+ <div class="md-nav__link md-nav__container">
1364
+ <a href="../../gui/" class="md-nav__link ">
1365
+
1366
+
1367
+
1368
+ <span class="md-ellipsis">
1369
+
1370
+
1371
+ GUI
1372
+
1373
+
1374
+
1375
+ </span>
1376
+
1377
+
1378
+
1379
+ </a>
1380
+
1381
+
1382
+ <label class="md-nav__link " for="__nav_7" id="__nav_7_label" tabindex="">
1383
+ <span class="md-nav__icon md-icon"></span>
1384
+ </label>
1385
+
1386
+ </div>
1387
+
1388
+ <nav class="md-nav" data-md-level="1" aria-labelledby="__nav_7_label" aria-expanded="false">
1389
+ <label class="md-nav__title" for="__nav_7">
1390
+ <span class="md-nav__icon md-icon"></span>
1391
+
1392
+
1393
+ GUI
1394
+
1395
+
1396
+ </label>
1397
+ <ul class="md-nav__list" data-md-scrollfix>
1398
+
1399
+
1400
+
1401
+
1402
+
1403
+
1404
+
1405
+ <li class="md-nav__item">
1406
+ <a href="../../gui/walkthrough/" class="md-nav__link">
1407
+
1408
+
1409
+
1410
+ <span class="md-ellipsis">
1411
+
1412
+
1413
+ Walkthrough
1414
+
1415
+
1416
+
1417
+ </span>
1418
+
1419
+
1420
+
1421
+ </a>
1422
+ </li>
1423
+
1424
+
1425
+
1426
+
1427
+
1428
+
1429
+
1430
+
1431
+
1432
+
1433
+ <li class="md-nav__item">
1434
+ <a href="../../gui/plugin-authoring/" class="md-nav__link">
1435
+
1436
+
1437
+
1438
+ <span class="md-ellipsis">
1439
+
1440
+
1441
+ Plugin GUI Authoring
1442
+
1443
+
1444
+
1445
+ </span>
1446
+
1447
+
1448
+
1449
+ </a>
1450
+ </li>
1451
+
1452
+
1453
+
1454
+
1455
+ </ul>
1456
+ </nav>
1457
+
1458
+ </li>
1459
+
1460
+
1461
+
1462
+
1463
+
1464
+
1465
+
1466
+
1467
+
1468
+
1469
+
1470
+
1471
+
1472
+
1473
+
1474
+
1475
+
1476
+
1477
+
1478
+
1479
+
1480
+
1481
+
1482
+
1483
+
1484
+
1485
+
1486
+ <li class="md-nav__item md-nav__item--section md-nav__item--nested">
1487
+
1488
+
1489
+
1490
+ <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_8" >
1491
+
1492
+
1493
+ <div class="md-nav__link md-nav__container">
1494
+ <a href="../../reference/" class="md-nav__link ">
1495
+
1496
+
1497
+
1498
+ <span class="md-ellipsis">
1499
+
1500
+
1501
+ Reference
1502
+
1503
+
1504
+
1505
+ </span>
1506
+
1507
+
1508
+
1509
+ </a>
1510
+
1511
+
1512
+ <label class="md-nav__link " for="__nav_8" id="__nav_8_label" tabindex="">
1513
+ <span class="md-nav__icon md-icon"></span>
1514
+ </label>
1515
+
1516
+ </div>
1517
+
1518
+ <nav class="md-nav" data-md-level="1" aria-labelledby="__nav_8_label" aria-expanded="false">
1519
+ <label class="md-nav__title" for="__nav_8">
1520
+ <span class="md-nav__icon md-icon"></span>
1521
+
1522
+
1523
+ Reference
1524
+
1525
+
1526
+ </label>
1527
+ <ul class="md-nav__list" data-md-scrollfix>
1528
+
1529
+
1530
+
1531
+
1532
+
1533
+
1534
+
1535
+ <li class="md-nav__item">
1536
+ <a href="../../reference/api/" class="md-nav__link">
1537
+
1538
+
1539
+
1540
+ <span class="md-ellipsis">
1541
+
1542
+
1543
+ Public Python API
1544
+
1545
+
1546
+
1547
+ </span>
1548
+
1549
+
1550
+
1551
+ </a>
1552
+ </li>
1553
+
1554
+
1555
+
1556
+
1557
+
1558
+
1559
+
1560
+
1561
+
1562
+
1563
+ <li class="md-nav__item">
1564
+ <a href="../../examples/" class="md-nav__link">
1565
+
1566
+
1567
+
1568
+ <span class="md-ellipsis">
1569
+
1570
+
1571
+ Example Library
1572
+
1573
+
1574
+
1575
+ </span>
1576
+
1577
+
1578
+
1579
+ </a>
1580
+ </li>
1581
+
1582
+
1583
+
1584
+
1585
+
1586
+
1587
+
1588
+
1589
+
1590
+
1591
+ <li class="md-nav__item">
1592
+ <a href="../../examples/quickstart/" class="md-nav__link">
1593
+
1594
+
1595
+
1596
+ <span class="md-ellipsis">
1597
+
1598
+
1599
+ Example Data Provenance
1600
+
1601
+
1602
+
1603
+ </span>
1604
+
1605
+
1606
+
1607
+ </a>
1608
+ </li>
1609
+
1610
+
1611
+
1612
+
1613
+ </ul>
1614
+ </nav>
1615
+
1616
+ </li>
1617
+
1618
+
1619
+
1620
+
1621
+
1622
+
1623
+
1624
+
1625
+
1626
+
1627
+
1628
+
1629
+
1630
+
1631
+
1632
+
1633
+
1634
+
1635
+
1636
+
1637
+
1638
+
1639
+
1640
+
1641
+
1642
+
1643
+
1644
+ <li class="md-nav__item md-nav__item--section md-nav__item--nested">
1645
+
1646
+
1647
+
1648
+ <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_9" >
1649
+
1650
+
1651
+ <label class="md-nav__link" for="__nav_9" id="__nav_9_label" tabindex="">
1652
+
1653
+
1654
+
1655
+ <span class="md-ellipsis">
1656
+
1657
+
1658
+ Explanation
1659
+
1660
+
1661
+
1662
+ </span>
1663
+
1664
+
1665
+
1666
+ <span class="md-nav__icon md-icon"></span>
1667
+ </label>
1668
+
1669
+ <nav class="md-nav" data-md-level="1" aria-labelledby="__nav_9_label" aria-expanded="false">
1670
+ <label class="md-nav__title" for="__nav_9">
1671
+ <span class="md-nav__icon md-icon"></span>
1672
+
1673
+
1674
+ Explanation
1675
+
1676
+
1677
+ </label>
1678
+ <ul class="md-nav__list" data-md-scrollfix>
1679
+
1680
+
1681
+
1682
+
1683
+
1684
+
1685
+
1686
+ <li class="md-nav__item">
1687
+ <a href="../../explanation/reproducibility/" class="md-nav__link">
1688
+
1689
+
1690
+
1691
+ <span class="md-ellipsis">
1692
+
1693
+
1694
+ Reproducibility
1695
+
1696
+
1697
+
1698
+ </span>
1699
+
1700
+
1701
+
1702
+ </a>
1703
+ </li>
1704
+
1705
+
1706
+
1707
+
1708
+
1709
+
1710
+
1711
+
1712
+
1713
+
1714
+ <li class="md-nav__item">
1715
+ <a href="../../explanation/references/" class="md-nav__link">
1716
+
1717
+
1718
+
1719
+ <span class="md-ellipsis">
1720
+
1721
+
1722
+ Method References
1723
+
1724
+
1725
+
1726
+ </span>
1727
+
1728
+
1729
+
1730
+ </a>
1731
+ </li>
1732
+
1733
+
1734
+
1735
+
1736
+
1737
+
1738
+
1739
+
1740
+
1741
+
1742
+ <li class="md-nav__item">
1743
+ <a href="../../explanation/third-party-notices/" class="md-nav__link">
1744
+
1745
+
1746
+
1747
+ <span class="md-ellipsis">
1748
+
1749
+
1750
+ Third-party Notices
1751
+
1752
+
1753
+
1754
+ </span>
1755
+
1756
+
1757
+
1758
+ </a>
1759
+ </li>
1760
+
1761
+
1762
+
1763
+
1764
+ </ul>
1765
+ </nav>
1766
+
1767
+ </li>
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
+
1793
+
1794
+
1795
+
1796
+
1797
+
1798
+
1799
+
1800
+
1801
+
1802
+
1803
+
1804
+
1805
+ <li class="md-nav__item md-nav__item--active md-nav__item--section md-nav__item--nested">
1806
+
1807
+
1808
+
1809
+ <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_10" checked>
1810
+
1811
+
1812
+ <div class="md-nav__link md-nav__container">
1813
+ <a href="../" class="md-nav__link ">
1814
+
1815
+
1816
+
1817
+ <span class="md-ellipsis">
1818
+
1819
+
1820
+ Development
1821
+
1822
+
1823
+
1824
+ </span>
1825
+
1826
+
1827
+
1828
+ </a>
1829
+
1830
+
1831
+ <label class="md-nav__link " for="__nav_10" id="__nav_10_label" tabindex="">
1832
+ <span class="md-nav__icon md-icon"></span>
1833
+ </label>
1834
+
1835
+ </div>
1836
+
1837
+ <nav class="md-nav" data-md-level="1" aria-labelledby="__nav_10_label" aria-expanded="true">
1838
+ <label class="md-nav__title" for="__nav_10">
1839
+ <span class="md-nav__icon md-icon"></span>
1840
+
1841
+
1842
+ Development
1843
+
1844
+
1845
+ </label>
1846
+ <ul class="md-nav__list" data-md-scrollfix>
1847
+
1848
+
1849
+
1850
+
1851
+
1852
+
1853
+
1854
+ <li class="md-nav__item">
1855
+ <a href="../release-notes/" class="md-nav__link">
1856
+
1857
+
1858
+
1859
+ <span class="md-ellipsis">
1860
+
1861
+
1862
+ Release Notes
1863
+
1864
+
1865
+
1866
+ </span>
1867
+
1868
+
1869
+
1870
+ </a>
1871
+ </li>
1872
+
1873
+
1874
+
1875
+
1876
+
1877
+
1878
+
1879
+
1880
+
1881
+
1882
+
1883
+
1884
+ <li class="md-nav__item md-nav__item--active">
1885
+
1886
+ <input class="md-nav__toggle md-toggle" type="checkbox" id="__toc">
1887
+
1888
+
1889
+
1890
+
1891
+
1892
+ <label class="md-nav__link md-nav__link--active" for="__toc">
1893
+
1894
+
1895
+
1896
+ <span class="md-ellipsis">
1897
+
1898
+
1899
+ Tool Authoring
1900
+
1901
+
1902
+
1903
+ </span>
1904
+
1905
+
1906
+
1907
+ <span class="md-nav__icon md-icon"></span>
1908
+ </label>
1909
+
1910
+ <a href="./" class="md-nav__link md-nav__link--active">
1911
+
1912
+
1913
+
1914
+ <span class="md-ellipsis">
1915
+
1916
+
1917
+ Tool Authoring
1918
+
1919
+
1920
+
1921
+ </span>
1922
+
1923
+
1924
+
1925
+ </a>
1926
+
1927
+
1928
+
1929
+ <nav class="md-nav md-nav--secondary" aria-label="Table of contents">
1930
+
1931
+
1932
+
1933
+
1934
+
1935
+
1936
+ <label class="md-nav__title" for="__toc">
1937
+ <span class="md-nav__icon md-icon"></span>
1938
+ Table of contents
1939
+ </label>
1940
+ <ul class="md-nav__list" data-md-component="toc" data-md-scrollfix>
1941
+
1942
+ <li class="md-nav__item">
1943
+ <a href="#distribution-dependencies" class="md-nav__link">
1944
+ <span class="md-ellipsis">
1945
+
1946
+ Distribution dependencies
1947
+
1948
+ </span>
1949
+ </a>
1950
+
1951
+ </li>
1952
+
1953
+ <li class="md-nav__item">
1954
+ <a href="#optional-cli-commands" class="md-nav__link">
1955
+ <span class="md-ellipsis">
1956
+
1957
+ Optional CLI commands
1958
+
1959
+ </span>
1960
+ </a>
1961
+
1962
+ </li>
1963
+
1964
+ <li class="md-nav__item">
1965
+ <a href="#required-pieces" class="md-nav__link">
1966
+ <span class="md-ellipsis">
1967
+
1968
+ Required pieces
1969
+
1970
+ </span>
1971
+ </a>
1972
+
1973
+ </li>
1974
+
1975
+ <li class="md-nav__item">
1976
+ <a href="#pipeline-contracts" class="md-nav__link">
1977
+ <span class="md-ellipsis">
1978
+
1979
+ Pipeline contracts
1980
+
1981
+ </span>
1982
+ </a>
1983
+
1984
+ <nav class="md-nav" aria-label="Pipeline contracts">
1985
+ <ul class="md-nav__list">
1986
+
1987
+ <li class="md-nav__item">
1988
+ <a href="#runtime-input-and-compression-contracts" class="md-nav__link">
1989
+ <span class="md-ellipsis">
1990
+
1991
+ Runtime input and compression contracts
1992
+
1993
+ </span>
1994
+ </a>
1995
+
1996
+ </li>
1997
+
1998
+ </ul>
1999
+ </nav>
2000
+
2001
+ </li>
2002
+
2003
+ <li class="md-nav__item">
2004
+ <a href="#scratch-publication-helpers" class="md-nav__link">
2005
+ <span class="md-ellipsis">
2006
+
2007
+ Scratch publication helpers
2008
+
2009
+ </span>
2010
+ </a>
2011
+
2012
+ </li>
2013
+
2014
+ <li class="md-nav__item">
2015
+ <a href="#backends" class="md-nav__link">
2016
+ <span class="md-ellipsis">
2017
+
2018
+ Backends
2019
+
2020
+ </span>
2021
+ </a>
2022
+
2023
+ </li>
2024
+
2025
+ </ul>
2026
+
2027
+ </nav>
2028
+
2029
+ </li>
2030
+
2031
+
2032
+
2033
+
2034
+
2035
+
2036
+
2037
+
2038
+
2039
+
2040
+ <li class="md-nav__item">
2041
+ <a href="../documentation/" class="md-nav__link">
2042
+
2043
+
2044
+
2045
+ <span class="md-ellipsis">
2046
+
2047
+
2048
+ Documentation
2049
+
2050
+
2051
+
2052
+ </span>
2053
+
2054
+
2055
+
2056
+ </a>
2057
+ </li>
2058
+
2059
+
2060
+
2061
+
2062
+
2063
+
2064
+
2065
+
2066
+
2067
+
2068
+ <li class="md-nav__item">
2069
+ <a href="../contributing/" class="md-nav__link">
2070
+
2071
+
2072
+
2073
+ <span class="md-ellipsis">
2074
+
2075
+
2076
+ Contributing
2077
+
2078
+
2079
+
2080
+ </span>
2081
+
2082
+
2083
+
2084
+ </a>
2085
+ </li>
2086
+
2087
+
2088
+
2089
+
2090
+
2091
+
2092
+
2093
+
2094
+
2095
+
2096
+ <li class="md-nav__item">
2097
+ <a href="../security/" class="md-nav__link">
2098
+
2099
+
2100
+
2101
+ <span class="md-ellipsis">
2102
+
2103
+
2104
+ Security Reporting
2105
+
2106
+
2107
+
2108
+ </span>
2109
+
2110
+
2111
+
2112
+ </a>
2113
+ </li>
2114
+
2115
+
2116
+
2117
+
2118
+
2119
+
2120
+
2121
+
2122
+
2123
+
2124
+ <li class="md-nav__item">
2125
+ <a href="../release-readiness/" class="md-nav__link">
2126
+
2127
+
2128
+
2129
+ <span class="md-ellipsis">
2130
+
2131
+
2132
+ Release Readiness
2133
+
2134
+
2135
+
2136
+ </span>
2137
+
2138
+
2139
+
2140
+ </a>
2141
+ </li>
2142
+
2143
+
2144
+
2145
+
2146
+
2147
+
2148
+
2149
+
2150
+
2151
+
2152
+ <li class="md-nav__item">
2153
+ <a href="../ci-publishing/" class="md-nav__link">
2154
+
2155
+
2156
+
2157
+ <span class="md-ellipsis">
2158
+
2159
+
2160
+ CI and Publishing
2161
+
2162
+
2163
+
2164
+ </span>
2165
+
2166
+
2167
+
2168
+ </a>
2169
+ </li>
2170
+
2171
+
2172
+
2173
+
2174
+ </ul>
2175
+ </nav>
2176
+
2177
+ </li>
2178
+
2179
+
2180
+
2181
+ </ul>
2182
+ </nav>
2183
+ </div>
2184
+ </div>
2185
+ </div>
2186
+
2187
+
2188
+
2189
+ <div class="md-sidebar md-sidebar--secondary" data-md-component="sidebar" data-md-type="toc" >
2190
+ <div class="md-sidebar__scrollwrap">
2191
+ <div class="md-sidebar__inner">
2192
+
2193
+
2194
+ <nav class="md-nav md-nav--secondary" aria-label="Table of contents">
2195
+
2196
+
2197
+
2198
+
2199
+
2200
+
2201
+ <label class="md-nav__title" for="__toc">
2202
+ <span class="md-nav__icon md-icon"></span>
2203
+ Table of contents
2204
+ </label>
2205
+ <ul class="md-nav__list" data-md-component="toc" data-md-scrollfix>
2206
+
2207
+ <li class="md-nav__item">
2208
+ <a href="#distribution-dependencies" class="md-nav__link">
2209
+ <span class="md-ellipsis">
2210
+
2211
+ Distribution dependencies
2212
+
2213
+ </span>
2214
+ </a>
2215
+
2216
+ </li>
2217
+
2218
+ <li class="md-nav__item">
2219
+ <a href="#optional-cli-commands" class="md-nav__link">
2220
+ <span class="md-ellipsis">
2221
+
2222
+ Optional CLI commands
2223
+
2224
+ </span>
2225
+ </a>
2226
+
2227
+ </li>
2228
+
2229
+ <li class="md-nav__item">
2230
+ <a href="#required-pieces" class="md-nav__link">
2231
+ <span class="md-ellipsis">
2232
+
2233
+ Required pieces
2234
+
2235
+ </span>
2236
+ </a>
2237
+
2238
+ </li>
2239
+
2240
+ <li class="md-nav__item">
2241
+ <a href="#pipeline-contracts" class="md-nav__link">
2242
+ <span class="md-ellipsis">
2243
+
2244
+ Pipeline contracts
2245
+
2246
+ </span>
2247
+ </a>
2248
+
2249
+ <nav class="md-nav" aria-label="Pipeline contracts">
2250
+ <ul class="md-nav__list">
2251
+
2252
+ <li class="md-nav__item">
2253
+ <a href="#runtime-input-and-compression-contracts" class="md-nav__link">
2254
+ <span class="md-ellipsis">
2255
+
2256
+ Runtime input and compression contracts
2257
+
2258
+ </span>
2259
+ </a>
2260
+
2261
+ </li>
2262
+
2263
+ </ul>
2264
+ </nav>
2265
+
2266
+ </li>
2267
+
2268
+ <li class="md-nav__item">
2269
+ <a href="#scratch-publication-helpers" class="md-nav__link">
2270
+ <span class="md-ellipsis">
2271
+
2272
+ Scratch publication helpers
2273
+
2274
+ </span>
2275
+ </a>
2276
+
2277
+ </li>
2278
+
2279
+ <li class="md-nav__item">
2280
+ <a href="#backends" class="md-nav__link">
2281
+ <span class="md-ellipsis">
2282
+
2283
+ Backends
2284
+
2285
+ </span>
2286
+ </a>
2287
+
2288
+ </li>
2289
+
2290
+ </ul>
2291
+
2292
+ </nav>
2293
+ </div>
2294
+ </div>
2295
+ </div>
2296
+
2297
+
2298
+
2299
+ <div class="md-content" data-md-component="content">
2300
+
2301
+ <article class="md-content__inner md-typeset">
2302
+
2303
+
2304
+
2305
+
2306
+
2307
+
2308
+
2309
+
2310
+ <h1 id="tool-authoring">Tool Authoring<a class="headerlink" href="#tool-authoring" title="Permanent link">&para;</a></h1>
2311
+ <p>A tool plugin should provide a narrow integration layer around scientific workflow logic.</p>
2312
+ <h2 id="distribution-dependencies">Distribution dependencies<a class="headerlink" href="#distribution-dependencies" title="Permanent link">&para;</a></h2>
2313
+ <p>Declare <code>caddforge-core&gt;=0.21.0</code> in plugin <code>project.dependencies</code>; do not depend on
2314
+ <code>caddforge</code>, which is the complete toolbox bundle. Keep Python imports and entry-point
2315
+ groups under <code>caddforge</code>. Adding a public plugin to the bundle requires an explicit,
2316
+ exact dependency pin and a newly tested bundle release. Only reviewed public components belong in the public bundle.</p>
2317
+ <h2 id="optional-cli-commands">Optional CLI commands<a class="headerlink" href="#optional-cli-commands" title="Permanent link">&para;</a></h2>
2318
+ <p>An installed package can add a top-level CLI command through the <code>caddforge.cli_commands</code>
2319
+ entry-point group. Core 0.21.0 introduces this interface. The entry-point name becomes the command
2320
+ name; its target is a callable with a Typer-compatible signature and help docstring:</p>
2321
+ <div class="highlight"><pre><span></span><code><a id="__codelineno-0-1" name="__codelineno-0-1" href="#__codelineno-0-1"></a><span class="k">[project.entry-points.</span><span class="s2">"caddforge.cli_commands"</span><span class="k">]</span>
2322
+ <a id="__codelineno-0-2" name="__codelineno-0-2" href="#__codelineno-0-2"></a><span class="n">docs</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s2">"caddforge_docs.cli:docs"</span>
2323
+ </code></pre></div>
2324
+ <p>Core registers these commands after its built-in commands and groups. Conflicts, duplicate command
2325
+ names, and extensions that fail to load or have unsupported signatures are logged and skipped,
2326
+ leaving built-in commands available. Keep extension imports lightweight and load expensive runtime
2327
+ dependencies only when the command executes. Removing the providing package removes its command
2328
+ from subsequent CLI invocations. Plugins that only expose scientific tools should continue to use
2329
+ the <code>caddforge.tools</code> group.</p>
2330
+ <h2 id="required-pieces">Required pieces<a class="headerlink" href="#required-pieces" title="Permanent link">&para;</a></h2>
2331
+ <ul>
2332
+ <li>Config model with validation and YAML/JSON loading support.</li>
2333
+ <li>Workflow class that prepares and runs jobs.</li>
2334
+ <li>Tool metadata class registered through <code>caddforge.tools</code> entry points.</li>
2335
+ <li>Canonical <code>Result</code> output with metrics and paths.</li>
2336
+ <li>Tests for config validation, workflow setup, and result generation.</li>
2337
+ </ul>
2338
+ <h2 id="pipeline-contracts">Pipeline contracts<a class="headerlink" href="#pipeline-contracts" title="Permanent link">&para;</a></h2>
2339
+ <p>Expose pipeline ports when a tool should participate in pipelines:</p>
2340
+ <div class="highlight"><pre><span></span><code><a id="__codelineno-1-1" name="__codelineno-1-1" href="#__codelineno-1-1"></a><span class="n">InputPort</span><span class="p">(</span><span class="n">name</span><span class="o">=</span><span class="s2">"ligands"</span><span class="p">,</span> <span class="n">kind</span><span class="o">=</span><span class="n">ArtifactKind</span><span class="o">.</span><span class="n">MOLECULE_COLLECTION</span><span class="p">,</span> <span class="n">config_field</span><span class="o">=</span><span class="s2">"ligand_paths"</span><span class="p">)</span>
2341
+ <a id="__codelineno-1-2" name="__codelineno-1-2" href="#__codelineno-1-2"></a><span class="n">OutputPort</span><span class="p">(</span><span class="n">name</span><span class="o">=</span><span class="s2">"scores"</span><span class="p">,</span> <span class="n">kind</span><span class="o">=</span><span class="n">ArtifactKind</span><span class="o">.</span><span class="n">TABULAR_SCORES</span><span class="p">,</span> <span class="n">result_path_key</span><span class="o">=</span><span class="s2">"best_scores_csv"</span><span class="p">)</span>
2342
+ <a id="__codelineno-1-3" name="__codelineno-1-3" href="#__codelineno-1-3"></a><span class="n">OutputPort</span><span class="p">(</span>
2343
+ <a id="__codelineno-1-4" name="__codelineno-1-4" href="#__codelineno-1-4"></a> <span class="n">name</span><span class="o">=</span><span class="s2">"pose_files"</span><span class="p">,</span>
2344
+ <a id="__codelineno-1-5" name="__codelineno-1-5" href="#__codelineno-1-5"></a> <span class="n">kind</span><span class="o">=</span><span class="n">ArtifactKind</span><span class="o">.</span><span class="n">POSE_COLLECTION</span><span class="p">,</span>
2345
+ <a id="__codelineno-1-6" name="__codelineno-1-6" href="#__codelineno-1-6"></a> <span class="n">result_path_key</span><span class="o">=</span><span class="s2">"pose_manifest_csv"</span><span class="p">,</span>
2346
+ <a id="__codelineno-1-7" name="__codelineno-1-7" href="#__codelineno-1-7"></a> <span class="n">required</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span>
2347
+ <a id="__codelineno-1-8" name="__codelineno-1-8" href="#__codelineno-1-8"></a> <span class="n">path_collection_column</span><span class="o">=</span><span class="s2">"pose_file"</span><span class="p">,</span>
2348
+ <a id="__codelineno-1-9" name="__codelineno-1-9" href="#__codelineno-1-9"></a><span class="p">)</span>
2349
+ </code></pre></div>
2350
+ <p>Use declared ports or explicit <code>outputs</code> mappings. Do not force downstream stages to infer paths
2351
+ from tool-specific output directories.</p>
2352
+ <h3 id="runtime-input-and-compression-contracts">Runtime input and compression contracts<a class="headerlink" href="#runtime-input-and-compression-contracts" title="Permanent link">&para;</a></h3>
2353
+ <p>Set <code>InputPort.config_field</code> to the configuration path that receives a pipeline artifact. Core also
2354
+ uses declared inputs to materialize transparent gzip wrappers immediately before execution. For a
2355
+ nested collection, set <code>runtime_selector</code>, for example <code>input_files[].path</code>. Mark a selector with
2356
+ <code>InputCompressionPolicy.NATIVE</code> when the scientific tool consumes the compressed stream itself.</p>
2357
+ <p>Outputs requested with a <code>.gz</code> suffix require an <code>OutputPort.config_field</code> so core can distinguish
2358
+ the requested destination from an existing compressed input and finalize it atomically.</p>
2359
+ <p>Structured collection fields can declare a <code>SplitContract</code> that identifies the path member to
2360
+ split, preserves sibling metadata in every shard, and selects a deterministic reducer for shard
2361
+ outputs.</p>
2362
+ <h2 id="scratch-publication-helpers">Scratch publication helpers<a class="headerlink" href="#scratch-publication-helpers" title="Permanent link">&para;</a></h2>
2363
+ <p>Use <code>LogSync</code> for mutable stdout, stderr, or progress snapshots written in scratch. Set
2364
+ <code>atomic=True</code> for structured snapshots and inspect its <code>LogSyncReport</code> when the final publication
2365
+ state belongs in the result. Synchronization failures are retried and must not change scientific
2366
+ job status.</p>
2367
+ <p>Use <code>ArtifactSyncQueue</code> for completed immutable artifacts. It publishes by atomic replacement,
2368
+ retries transient failures, and reports unresolved files after the final pass. Do not place
2369
+ tool-specific behavior in these core helpers.</p>
2370
+ <h2 id="backends">Backends<a class="headerlink" href="#backends" title="Permanent link">&para;</a></h2>
2371
+ <p>Workflow code should not contain Slurm-specific or local-process orchestration. Submit and track jobs
2372
+ through the core backend interfaces.</p>
2373
+
2374
+
2375
+
2376
+
2377
+
2378
+
2379
+
2380
+
2381
+
2382
+
2383
+
2384
+
2385
+
2386
+ </article>
2387
+ </div>
2388
+
2389
+
2390
+ <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script>
2391
+ </div>
2392
+
2393
+ <button type="button" class="md-top md-icon" data-md-component="top" hidden>
2394
+
2395
+ <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>
2396
+ Back to top
2397
+ </button>
2398
+
2399
+ </main>
2400
+
2401
+ <footer class="md-footer">
2402
+
2403
+ <div class="md-footer-meta md-typeset">
2404
+ <div class="md-footer-meta__inner md-grid">
2405
+ <div class="md-copyright">
2406
+
2407
+
2408
+ Made with
2409
+ <a href="https://squidfunk.github.io/mkdocs-material/" target="_blank" rel="noopener">
2410
+ Material for MkDocs
2411
+ </a>
2412
+
2413
+ </div>
2414
+
2415
+ </div>
2416
+ </div>
2417
+ </footer>
2418
+
2419
+ </div>
2420
+ <div class="md-dialog" data-md-component="dialog">
2421
+ <div class="md-dialog__inner md-typeset"></div>
2422
+ </div>
2423
+
2424
+
2425
+
2426
+
2427
+
2428
+ <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>
2429
+
2430
+
2431
+ <script src="../../assets/javascripts/bundle.d7400e89.min.js"></script>
2432
+
2433
+
2434
+ </body>
2435
+ </html>