@galaxyproject/orbit 0.0.0 → 0.9.0
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.
- package/CHANGELOG.md +123 -0
- package/LICENSE +21 -0
- package/README.md +760 -5
- package/bin/legacy-mcp-config.js +363 -0
- package/bin/orbit.js +810 -0
- package/bin/pi-extension-path.d.ts +4 -0
- package/bin/pi-extension-path.js +44 -0
- package/bin/provider-auth.d.ts +22 -0
- package/bin/provider-auth.js +77 -0
- package/bin/thinking-pref.js +38 -0
- package/bin/update-check.d.ts +15 -0
- package/bin/update-check.js +137 -0
- package/extensions/cli-update/index.ts +32 -0
- package/extensions/orbit/activity-hooks.ts +141 -0
- package/extensions/orbit/activity.ts +116 -0
- package/extensions/orbit/agent-dir.ts +11 -0
- package/extensions/orbit/auto-resume.ts +352 -0
- package/extensions/orbit/config.ts +3 -0
- package/extensions/orbit/confusables.ts +1 -0
- package/extensions/orbit/context.ts +957 -0
- package/extensions/orbit/dashboard-commands.ts +191 -0
- package/extensions/orbit/dashboard-store.ts +473 -0
- package/extensions/orbit/dashboard-tools.ts +1185 -0
- package/extensions/orbit/empty-completion.ts +99 -0
- package/extensions/orbit/evidence-gate.ts +1276 -0
- package/extensions/orbit/evidence-override-command.ts +294 -0
- package/extensions/orbit/exec-guard/bash-risk.ts +1408 -0
- package/extensions/orbit/exec-guard/gate.ts +181 -0
- package/extensions/orbit/exec-guard/guardian-config.ts +54 -0
- package/extensions/orbit/exec-guard/index.ts +1 -0
- package/extensions/orbit/exec-guard/model-tier.ts +36 -0
- package/extensions/orbit/exec-guard/path-jail.ts +54 -0
- package/extensions/orbit/exec-guard/policy.ts +342 -0
- package/extensions/orbit/exec-guard/runtime-state.ts +15 -0
- package/extensions/orbit/exec-guard/sensitive-read.ts +525 -0
- package/extensions/orbit/exec-guard/types.ts +42 -0
- package/extensions/orbit/execution-commands.ts +134 -0
- package/extensions/orbit/feedback-command.ts +81 -0
- package/extensions/orbit/feedback.ts +96 -0
- package/extensions/orbit/galaxy-api.test.ts +122 -0
- package/extensions/orbit/galaxy-api.ts +606 -0
- package/extensions/orbit/galaxy-artifact-link-guidance.ts +5 -0
- package/extensions/orbit/galaxy-destructive-gate.ts +113 -0
- package/extensions/orbit/galaxy-enrich.ts +1108 -0
- package/extensions/orbit/galaxy-failure.ts +101 -0
- package/extensions/orbit/galaxy-fixture.ts +126 -0
- package/extensions/orbit/galaxy-history-guard.ts +233 -0
- package/extensions/orbit/galaxy-job-block.ts +347 -0
- package/extensions/orbit/galaxy-job-ops.ts +288 -0
- package/extensions/orbit/galaxy-live-source.ts +929 -0
- package/extensions/orbit/galaxy-markdown-adapter.ts +248 -0
- package/extensions/orbit/galaxy-op-policy.ts +332 -0
- package/extensions/orbit/galaxy-ops-tools.ts +326 -0
- package/extensions/orbit/galaxy-output-store.ts +80 -0
- package/extensions/orbit/galaxy-output.ts +346 -0
- package/extensions/orbit/galaxy-page-binding.ts +222 -0
- package/extensions/orbit/galaxy-page-markdown-guidance.ts +15 -0
- package/extensions/orbit/galaxy-page-ops.ts +159 -0
- package/extensions/orbit/galaxy-page-sync.test.ts +417 -0
- package/extensions/orbit/galaxy-page-sync.ts +318 -0
- package/extensions/orbit/galaxy-pages-api.ts +203 -0
- package/extensions/orbit/galaxy-pages-sync.ts +409 -0
- package/extensions/orbit/galaxy-poll-guard.ts +189 -0
- package/extensions/orbit/galaxy-poller.ts +706 -0
- package/extensions/orbit/galaxy-provenance.ts +623 -0
- package/extensions/orbit/galaxy-reconcile.ts +956 -0
- package/extensions/orbit/galaxy-recovery.ts +176 -0
- package/extensions/orbit/galaxy-repeat-guard.ts +55 -0
- package/extensions/orbit/galaxy-submission-capture.ts +707 -0
- package/extensions/orbit/galaxy-submission.ts +502 -0
- package/extensions/orbit/galaxy-tool-source.ts +78 -0
- package/extensions/orbit/galaxy-tool-wrap.ts +234 -0
- package/extensions/orbit/galaxy-udt-block.ts +127 -0
- package/extensions/orbit/galaxy-upload-tus.ts +334 -0
- package/extensions/orbit/galaxy-upload.ts +300 -0
- package/extensions/orbit/galaxy-version-capture.ts +65 -0
- package/extensions/orbit/git.ts +173 -0
- package/extensions/orbit/harness-block-fields.ts +597 -0
- package/extensions/orbit/index.ts +593 -0
- package/extensions/orbit/init-gate.ts +284 -0
- package/extensions/orbit/instructions-command.ts +136 -0
- package/extensions/orbit/invocation-failure-hint.ts +57 -0
- package/extensions/orbit/iwc-plan-check.ts +94 -0
- package/extensions/orbit/lesson-command.ts +303 -0
- package/extensions/orbit/lesson-hint.ts +245 -0
- package/extensions/orbit/lesson-nudge.ts +106 -0
- package/extensions/orbit/lessons/compose.ts +177 -0
- package/extensions/orbit/lessons/counters.ts +120 -0
- package/extensions/orbit/lessons/enabled.ts +116 -0
- package/extensions/orbit/lessons/matcher.ts +346 -0
- package/extensions/orbit/lessons/paths.ts +286 -0
- package/extensions/orbit/lessons/pi-event-contract.ts +105 -0
- package/extensions/orbit/lessons/propose-replay.ts +103 -0
- package/extensions/orbit/lessons/propose-tool.ts +222 -0
- package/extensions/orbit/lessons/propose.ts +502 -0
- package/extensions/orbit/lessons/replay.ts +89 -0
- package/extensions/orbit/lessons/reproduction-index.ts +83 -0
- package/extensions/orbit/lessons/search-tool.ts +99 -0
- package/extensions/orbit/lessons/search.ts +136 -0
- package/extensions/orbit/lessons/store.ts +415 -0
- package/extensions/orbit/lessons/text.ts +36 -0
- package/extensions/orbit/lessons/types.ts +69 -0
- package/extensions/orbit/lessons/user-dir.ts +24 -0
- package/extensions/orbit/lessons/user-lesson.ts +88 -0
- package/extensions/orbit/lessons/wrapper.ts +61 -0
- package/extensions/orbit/lessons-command.ts +147 -0
- package/extensions/orbit/local-exec.ts +39 -0
- package/extensions/orbit/mcp-output.ts +179 -0
- package/extensions/orbit/mcp-servers.test.ts +24 -0
- package/extensions/orbit/mcp-servers.ts +25 -0
- package/extensions/orbit/model-script.ts +351 -0
- package/extensions/orbit/notebook-anchors.ts +342 -0
- package/extensions/orbit/notebook-writer.ts +863 -0
- package/extensions/orbit/observation-allowlists.ts +1109 -0
- package/extensions/orbit/observation-replay.ts +148 -0
- package/extensions/orbit/observation-triggers.ts +563 -0
- package/extensions/orbit/observation-ui.ts +175 -0
- package/extensions/orbit/observations-command.ts +421 -0
- package/extensions/orbit/observations-config.ts +200 -0
- package/extensions/orbit/observations.ts +1381 -0
- package/extensions/orbit/profiles.ts +270 -0
- package/extensions/orbit/progress-updates.ts +95 -0
- package/extensions/orbit/proposal-commands.ts +882 -0
- package/extensions/orbit/provenance-fs-file.ts +59 -0
- package/extensions/orbit/provenance-fs.ts +32 -0
- package/extensions/orbit/provenance-memory-fs.ts +59 -0
- package/extensions/orbit/record-store-file.ts +177 -0
- package/extensions/orbit/record-store-page.ts +77 -0
- package/extensions/orbit/record-store-seam.ts +47 -0
- package/extensions/orbit/record-store.ts +149 -0
- package/extensions/orbit/registry-carrier.ts +107 -0
- package/extensions/orbit/registry-eligibility.ts +95 -0
- package/extensions/orbit/registry-evaluation.ts +403 -0
- package/extensions/orbit/registry-evaluator.ts +519 -0
- package/extensions/orbit/registry-import.ts +91 -0
- package/extensions/orbit/registry-lock.ts +221 -0
- package/extensions/orbit/registry-memory-fs.ts +42 -0
- package/extensions/orbit/registry-page-carrier.ts +103 -0
- package/extensions/orbit/registry-proposal.ts +1348 -0
- package/extensions/orbit/registry-runtime.ts +234 -0
- package/extensions/orbit/registry-schema.ts +735 -0
- package/extensions/orbit/registry-submitter.ts +59 -0
- package/extensions/orbit/registry-templates.ts +346 -0
- package/extensions/orbit/registry.ts +476 -0
- package/extensions/orbit/sandbox/index.ts +120 -0
- package/extensions/orbit/sandbox/sandbox-bash.ts +93 -0
- package/extensions/orbit/sandbox/sandbox-config.ts +87 -0
- package/extensions/orbit/sandbox/sandbox-init-message.ts +28 -0
- package/extensions/orbit/secret-redaction.ts +247 -0
- package/extensions/orbit/session-index/cwd.ts +18 -0
- package/extensions/orbit/session-index/db.ts +56 -0
- package/extensions/orbit/session-index/indexer.ts +154 -0
- package/extensions/orbit/session-index/is-enabled.ts +17 -0
- package/extensions/orbit/session-index/parse.ts +254 -0
- package/extensions/orbit/session-index/query.ts +209 -0
- package/extensions/orbit/session-index/schema.ts +72 -0
- package/extensions/orbit/session-index/tools.ts +152 -0
- package/extensions/orbit/session-lifecycle.ts +321 -0
- package/extensions/orbit/skill-triggers.ts +159 -0
- package/extensions/orbit/skills-command.ts +48 -0
- package/extensions/orbit/skills-discovery.ts +435 -0
- package/extensions/orbit/skills.ts +84 -0
- package/extensions/orbit/sra-import-gate.ts +77 -0
- package/extensions/orbit/state.ts +265 -0
- package/extensions/orbit/submission-replay.ts +147 -0
- package/extensions/orbit/sync-command.ts +157 -0
- package/extensions/orbit/teams/critic-parser.ts +93 -0
- package/extensions/orbit/teams/dispatcher.ts +210 -0
- package/extensions/orbit/teams/is-enabled.ts +22 -0
- package/extensions/orbit/teams/tool.ts +187 -0
- package/extensions/orbit/teams/types.ts +57 -0
- package/extensions/orbit/teams/validate.ts +42 -0
- package/extensions/orbit/tester-id-command.ts +133 -0
- package/extensions/orbit/tools-sync.ts +279 -0
- package/extensions/orbit/tools.ts +1300 -0
- package/extensions/orbit/types.ts +41 -0
- package/extensions/orbit/ui-bridge.ts +55 -0
- package/extensions/orbit/ulid.ts +60 -0
- package/extensions/orbit/user-instructions.ts +388 -0
- package/extensions/orbit/vendor/skills/_catalog.json +68 -0
- package/extensions/orbit/vendor/skills/_manifest.json +1106 -0
- package/extensions/orbit/vendor/skills/advance-galaxy-draft-step/SKILL.md +112 -0
- package/extensions/orbit/vendor/skills/advance-galaxy-draft-step/_provenance.json +218 -0
- package/extensions/orbit/vendor/skills/advance-galaxy-draft-step/_required_tools.json +33 -0
- package/extensions/orbit/vendor/skills/advance-galaxy-draft-step/_verify.json +4 -0
- package/extensions/orbit/vendor/skills/advance-galaxy-draft-step/references/cli/add.json +50 -0
- package/extensions/orbit/vendor/skills/advance-galaxy-draft-step/references/cli/draft-extract.json +51 -0
- package/extensions/orbit/vendor/skills/advance-galaxy-draft-step/references/cli/draft-next-step.json +42 -0
- package/extensions/orbit/vendor/skills/advance-galaxy-draft-step/references/cli/draft-validate.json +140 -0
- package/extensions/orbit/vendor/skills/advance-galaxy-draft-step/references/cli/list.json +32 -0
- package/extensions/orbit/vendor/skills/advance-galaxy-draft-step/references/notes/galaxy-tool-job-failure-reference.md +137 -0
- package/extensions/orbit/vendor/skills/advance-galaxy-draft-step/references/notes/open-requirements-ledger.md +173 -0
- package/extensions/orbit/vendor/skills/advance-galaxy-draft-step/references/schemas/galaxy-tool-summary.schema.json +175 -0
- package/extensions/orbit/vendor/skills/advance-galaxy-draft-step/references/schemas/galaxy-workflow-draft.schema.json +2727 -0
- package/extensions/orbit/vendor/skills/apply-galaxy-workflow-changeset/SKILL.md +82 -0
- package/extensions/orbit/vendor/skills/apply-galaxy-workflow-changeset/_provenance.json +133 -0
- package/extensions/orbit/vendor/skills/apply-galaxy-workflow-changeset/_required_tools.json +16 -0
- package/extensions/orbit/vendor/skills/apply-galaxy-workflow-changeset/_verify.json +4 -0
- package/extensions/orbit/vendor/skills/apply-galaxy-workflow-changeset/references/cli/draft-validate.json +140 -0
- package/extensions/orbit/vendor/skills/apply-galaxy-workflow-changeset/references/notes/galaxy-workflow-draft-format.md +135 -0
- package/extensions/orbit/vendor/skills/apply-galaxy-workflow-changeset/references/notes/open-requirements-ledger.md +173 -0
- package/extensions/orbit/vendor/skills/apply-galaxy-workflow-changeset/references/schemas/galaxy-workflow-draft.schema.json +2727 -0
- package/extensions/orbit/vendor/skills/changeset-to-galaxy-test-plan/SKILL.md +84 -0
- package/extensions/orbit/vendor/skills/changeset-to-galaxy-test-plan/_provenance.json +166 -0
- package/extensions/orbit/vendor/skills/changeset-to-galaxy-test-plan/_verify.json +29 -0
- package/extensions/orbit/vendor/skills/changeset-to-galaxy-test-plan/references/notes/galaxy-workflow-testability-design.md +136 -0
- package/extensions/orbit/vendor/skills/changeset-to-galaxy-test-plan/references/notes/iwc-shortcuts-anti-patterns.md +357 -0
- package/extensions/orbit/vendor/skills/changeset-to-galaxy-test-plan/references/notes/iwc-test-data-conventions.md +308 -0
- package/extensions/orbit/vendor/skills/changeset-to-galaxy-test-plan/references/notes/planemo-asserts-idioms.md +246 -0
- package/extensions/orbit/vendor/skills/changeset-to-galaxy-test-plan/references/notes/planemo-workflow-test-architecture.md +151 -0
- package/extensions/orbit/vendor/skills/changeset-to-galaxy-test-plan/references/schemas/galaxy-workflow-test-plan.schema.json +552 -0
- package/extensions/orbit/vendor/skills/changeset-to-galaxy-test-plan/references/schemas/summary-galaxy-workflow.schema.json +687 -0
- package/extensions/orbit/vendor/skills/changeset-to-galaxy-test-plan/references/schemas/tests-format.schema.json +7328 -0
- package/extensions/orbit/vendor/skills/compare-against-iwc-exemplar/SKILL.md +127 -0
- package/extensions/orbit/vendor/skills/compare-against-iwc-exemplar/_provenance.json +198 -0
- package/extensions/orbit/vendor/skills/compare-against-iwc-exemplar/_required_tools.json +16 -0
- package/extensions/orbit/vendor/skills/compare-against-iwc-exemplar/_verify.json +4 -0
- package/extensions/orbit/vendor/skills/compare-against-iwc-exemplar/references/cli/convert.json +123 -0
- package/extensions/orbit/vendor/skills/compare-against-iwc-exemplar/references/notes/galaxy-data-flow-draft-contract.md +129 -0
- package/extensions/orbit/vendor/skills/compare-against-iwc-exemplar/references/notes/iwc-shortcuts-anti-patterns.md +357 -0
- package/extensions/orbit/vendor/skills/compare-against-iwc-exemplar/references/notes/iwc-test-data-conventions.md +308 -0
- package/extensions/orbit/vendor/skills/compare-against-iwc-exemplar/references/notes/open-requirements-ledger.md +173 -0
- package/extensions/orbit/vendor/skills/debug-galaxy-workflow-output/SKILL.md +73 -0
- package/extensions/orbit/vendor/skills/debug-galaxy-workflow-output/_provenance.json +160 -0
- package/extensions/orbit/vendor/skills/debug-galaxy-workflow-output/_verify.json +4 -0
- package/extensions/orbit/vendor/skills/debug-galaxy-workflow-output/references/notes/galaxy-collection-semantics.md +43 -0
- package/extensions/orbit/vendor/skills/debug-galaxy-workflow-output/references/notes/galaxy-collection-semantics.yml +1250 -0
- package/extensions/orbit/vendor/skills/debug-galaxy-workflow-output/references/notes/galaxy-tool-job-failure-reference.md +137 -0
- package/extensions/orbit/vendor/skills/debug-galaxy-workflow-output/references/notes/galaxy-workflow-invocation-failure-reference.md +138 -0
- package/extensions/orbit/vendor/skills/debug-galaxy-workflow-output/references/notes/iwc-shortcuts-anti-patterns.md +357 -0
- package/extensions/orbit/vendor/skills/debug-galaxy-workflow-output/references/notes/nextflow-operators-to-galaxy-collection-recipes.md +98 -0
- package/extensions/orbit/vendor/skills/debug-galaxy-workflow-output/references/notes/planemo-asserts-idioms.md +246 -0
- package/extensions/orbit/vendor/skills/debug-galaxy-workflow-output/references/notes/planemo-workflow-test-architecture.md +151 -0
- package/extensions/orbit/vendor/skills/discover-shed-tool/SKILL.md +174 -0
- package/extensions/orbit/vendor/skills/discover-shed-tool/_provenance.json +130 -0
- package/extensions/orbit/vendor/skills/discover-shed-tool/_required_tools.json +18 -0
- package/extensions/orbit/vendor/skills/discover-shed-tool/_verify.json +17 -0
- package/extensions/orbit/vendor/skills/discover-shed-tool/references/cli/tool-revisions.json +48 -0
- package/extensions/orbit/vendor/skills/discover-shed-tool/references/cli/tool-search.json +95 -0
- package/extensions/orbit/vendor/skills/discover-shed-tool/references/cli/tool-versions.json +39 -0
- package/extensions/orbit/vendor/skills/discover-shed-tool/references/notes/component-tool-shed-search.md +230 -0
- package/extensions/orbit/vendor/skills/discover-shed-tool/references/schemas/galaxy-tool-discovery.schema.json +231 -0
- package/extensions/orbit/vendor/skills/implement-galaxy-workflow-test/SKILL.md +93 -0
- package/extensions/orbit/vendor/skills/implement-galaxy-workflow-test/_provenance.json +201 -0
- package/extensions/orbit/vendor/skills/implement-galaxy-workflow-test/_required_tools.json +28 -0
- package/extensions/orbit/vendor/skills/implement-galaxy-workflow-test/_verify.json +17 -0
- package/extensions/orbit/vendor/skills/implement-galaxy-workflow-test/references/cli/planemo.md +44 -0
- package/extensions/orbit/vendor/skills/implement-galaxy-workflow-test/references/cli/validate-tests.json +40 -0
- package/extensions/orbit/vendor/skills/implement-galaxy-workflow-test/references/notes/galaxy-workflow-testability-design.md +136 -0
- package/extensions/orbit/vendor/skills/implement-galaxy-workflow-test/references/notes/iwc-shortcuts-anti-patterns.md +357 -0
- package/extensions/orbit/vendor/skills/implement-galaxy-workflow-test/references/notes/iwc-test-data-conventions.md +308 -0
- package/extensions/orbit/vendor/skills/implement-galaxy-workflow-test/references/notes/planemo-asserts-idioms.md +246 -0
- package/extensions/orbit/vendor/skills/implement-galaxy-workflow-test/references/notes/planemo-workflow-test-architecture.md +151 -0
- package/extensions/orbit/vendor/skills/implement-galaxy-workflow-test/references/schemas/galaxy-workflow-test-plan.schema.json +552 -0
- package/extensions/orbit/vendor/skills/implement-galaxy-workflow-test/references/schemas/tests-format.schema.json +7328 -0
- package/extensions/orbit/vendor/skills/interview-to-galaxy-workflow-changeset/SKILL.md +81 -0
- package/extensions/orbit/vendor/skills/interview-to-galaxy-workflow-changeset/_provenance.json +93 -0
- package/extensions/orbit/vendor/skills/interview-to-galaxy-workflow-changeset/_verify.json +17 -0
- package/extensions/orbit/vendor/skills/interview-to-galaxy-workflow-changeset/references/notes/open-requirements-ledger.md +173 -0
- package/extensions/orbit/vendor/skills/interview-to-galaxy-workflow-changeset/references/schemas/summary-galaxy-workflow.schema.json +687 -0
- package/extensions/orbit/vendor/skills/pipeline-update-interview-to-galaxy/SKILL.md +81 -0
- package/extensions/orbit/vendor/skills/pipeline-update-interview-to-galaxy/_assembly.json +23 -0
- package/extensions/orbit/vendor/skills/run-workflow-test/SKILL.md +79 -0
- package/extensions/orbit/vendor/skills/run-workflow-test/_provenance.json +125 -0
- package/extensions/orbit/vendor/skills/run-workflow-test/_required_tools.json +28 -0
- package/extensions/orbit/vendor/skills/run-workflow-test/_verify.json +4 -0
- package/extensions/orbit/vendor/skills/run-workflow-test/references/cli/planemo.md +44 -0
- package/extensions/orbit/vendor/skills/run-workflow-test/references/cli/validate-tests.json +40 -0
- package/extensions/orbit/vendor/skills/run-workflow-test/references/notes/galaxy-workflow-invocation-failure-reference.md +138 -0
- package/extensions/orbit/vendor/skills/run-workflow-test/references/notes/planemo-asserts-idioms.md +246 -0
- package/extensions/orbit/vendor/skills/run-workflow-test/references/notes/planemo-workflow-test-architecture.md +151 -0
- package/extensions/orbit/vendor/skills/run-workflow-test/references/schemas/tests-format.schema.json +7328 -0
- package/extensions/orbit/vendor/skills/skills/LICENSE +21 -0
- package/extensions/orbit/vendor/skills/skills/collection-manipulation/README.md +39 -0
- package/extensions/orbit/vendor/skills/skills/collection-manipulation/SKILL.md +892 -0
- package/extensions/orbit/vendor/skills/skills/collection-manipulation/references/api-patterns.md +927 -0
- package/extensions/orbit/vendor/skills/skills/collection-manipulation/references/apply-rules.md +1482 -0
- package/extensions/orbit/vendor/skills/skills/collection-manipulation/references/test-patterns.md +996 -0
- package/extensions/orbit/vendor/skills/skills/collection-manipulation/references/tools.md +609 -0
- package/extensions/orbit/vendor/skills/skills/galaxy-data-libraries/SKILL.md +170 -0
- package/extensions/orbit/vendor/skills/skills/galaxy-integration/README.md +162 -0
- package/extensions/orbit/vendor/skills/skills/galaxy-integration/SKILL.md +99 -0
- package/extensions/orbit/vendor/skills/skills/galaxy-integration/examples/README.md +119 -0
- package/extensions/orbit/vendor/skills/skills/galaxy-integration/examples/tool-checking.md +419 -0
- package/extensions/orbit/vendor/skills/skills/galaxy-integration/examples/workflow-testing.md +617 -0
- package/extensions/orbit/vendor/skills/skills/galaxy-integration/galaxy-integration.md +614 -0
- package/extensions/orbit/vendor/skills/skills/galaxy-integration/jupyterlite/SKILL.md +144 -0
- package/extensions/orbit/vendor/skills/skills/galaxy-integration/jupyterlite/examples/average_col3.ipynb +68 -0
- package/extensions/orbit/vendor/skills/skills/galaxy-integration/jupyterlite/examples/extract_sample_metadata.ipynb +190 -0
- package/extensions/orbit/vendor/skills/skills/galaxy-integration/jupyterlite/examples/variant_annotation.ipynb +816 -0
- package/extensions/orbit/vendor/skills/skills/galaxy-integration/jupyterlite/examples/vcp_variant_map.ipynb +443 -0
- package/extensions/orbit/vendor/skills/skills/galaxy-integration/scripts/README.md +165 -0
- package/extensions/orbit/vendor/skills/skills/galaxy-integration/scripts/galaxy_tool_checker.py +521 -0
- package/extensions/orbit/vendor/skills/skills/galaxy-mcp-reference/SKILL.md +128 -0
- package/extensions/orbit/vendor/skills/skills/galaxy-mcp-reference/gotchas.md +135 -0
- package/extensions/orbit/vendor/skills/skills/galaxy-mcp-reference/history-access.md +132 -0
- package/extensions/orbit/vendor/skills/skills/reproduciblify/SKILL.md +146 -0
- package/extensions/orbit/vendor/skills/skills/reproduciblify/references/directives.yml +496 -0
- package/extensions/orbit/vendor/skills/skills/udt-authoring/SKILL.md +245 -0
- package/extensions/orbit/vendor/skills/skills/udt-authoring/examples/01-minimal-echo.yml +27 -0
- package/extensions/orbit/vendor/skills/skills/udt-authoring/examples/02-single-data-in-out.yml +27 -0
- package/extensions/orbit/vendor/skills/skills/udt-authoring/examples/03-multiple-data-js.yml +28 -0
- package/extensions/orbit/vendor/skills/skills/udt-authoring/examples/04-select-integer-boolean.yml +41 -0
- package/extensions/orbit/vendor/skills/skills/udt-authoring/examples/05-resource-requirements.yml +25 -0
- package/extensions/orbit/vendor/skills/skills/udt-authoring/examples/06-biocontainer-tool.yml +38 -0
- package/extensions/orbit/vendor/skills/skills/udt-authoring/examples/07-inline-python-script.yml +56 -0
- package/extensions/orbit/vendor/skills/skills/udt-authoring/examples/08-configfile-script.yml +74 -0
- package/extensions/orbit/vendor/skills/skills/udt-authoring/references/common-mistakes.md +76 -0
- package/extensions/orbit/vendor/skills/skills/udt-authoring/references/schema-reference.md +155 -0
- package/extensions/orbit/vendor/skills/skills/udt-authoring/references/templating.md +196 -0
- package/extensions/orbit/vendor/skills/skills/udt-authoring/scripts/validate.py +109 -0
- package/extensions/orbit/vendor/skills/skills/workflow-reports/README.md +71 -0
- package/extensions/orbit/vendor/skills/skills/workflow-reports/SKILL.md +190 -0
- package/extensions/orbit/vendor/skills/skills/workflow-reports/examples/histology-staining.md +145 -0
- package/extensions/orbit/vendor/skills/skills/workflow-reports/examples/tissue-microarray-analysis.md +176 -0
- package/extensions/orbit/vendor/skills/skills/workflow-reports/references/directives.md +415 -0
- package/extensions/orbit/vendor/skills/summarize-galaxy-workflow/SKILL.md +98 -0
- package/extensions/orbit/vendor/skills/summarize-galaxy-workflow/_provenance.json +93 -0
- package/extensions/orbit/vendor/skills/summarize-galaxy-workflow/_required_tools.json +28 -0
- package/extensions/orbit/vendor/skills/summarize-galaxy-workflow/_verify.json +17 -0
- package/extensions/orbit/vendor/skills/summarize-galaxy-workflow/references/cli/convert.json +123 -0
- package/extensions/orbit/vendor/skills/summarize-galaxy-workflow/references/cli/foundry.md +25 -0
- package/extensions/orbit/vendor/skills/summarize-galaxy-workflow/references/cli/validate.json +142 -0
- package/extensions/orbit/vendor/skills/summarize-galaxy-workflow/references/schemas/summary-galaxy-workflow.schema.json +687 -0
- package/extensions/orbit/vendor/skills/validate-galaxy-workflow/SKILL.md +74 -0
- package/extensions/orbit/vendor/skills/validate-galaxy-workflow/_provenance.json +71 -0
- package/extensions/orbit/vendor/skills/validate-galaxy-workflow/_required_tools.json +16 -0
- package/extensions/orbit/vendor/skills/validate-galaxy-workflow/_verify.json +4 -0
- package/extensions/orbit/vendor/skills/validate-galaxy-workflow/references/cli/validate.json +142 -0
- package/extensions/orbit/vendor/skills/validate-galaxy-workflow/references/notes/galaxy-workflow-invocation-failure-reference.md +138 -0
- package/extensions/orbit/vendor/skills/validate-galaxy-workflow/references/notes/galaxy-workflow-testability-design.md +136 -0
- package/extensions/orbit/vendor-skills.ts +283 -0
- package/extensions/orbit/workspace-state-dir.ts +46 -0
- package/extensions/orbit-handoff/index.ts +73 -0
- package/extensions/orbit-handoff/orbit-launcher.ts +142 -0
- package/extensions/whats-new/index.ts +98 -0
- package/lessons/LICENSE +17 -0
- package/lessons/README.md +117 -0
- package/lessons/SCHEMA.md +187 -0
- package/lessons/build-snapshot.mjs +311 -0
- package/lessons/data/downloaded-file-is-not-what-its-extension-says.md +61 -0
- package/lessons/galaxy-api/403-history-is-a-hard-stop.md +57 -0
- package/lessons/galaxy-api/collection-into-single-dataset-input.md +61 -0
- package/lessons/galaxy-api/connectedvalue-in-command-line.md +62 -0
- package/lessons/galaxy-api/hid-is-not-an-id.md +59 -0
- package/lessons/galaxy-api/invoke-workflow-inputs-not-params.md +60 -0
- package/lessons/galaxy-api/repeat-param-pipe-keys.md +63 -0
- package/lessons/galaxy-api/run-tool-returns-on-submit.md +61 -0
- package/lessons/galaxy-tools/reference-index-not-on-server.md +62 -0
- package/lessons/log.md +42 -0
- package/lessons/reproduction/input-population-mismatch.md +59 -0
- package/lessons/reproduction/methods-text-vs-executed-parameters.md +62 -0
- package/lessons/snapshot.json +1004 -0
- package/lessons/stats/de-contrast-direction-and-sample-labels.md +63 -0
- package/lessons/stats/na-coerced-to-zero-in-filters.md +59 -0
- package/lessons/validate.mjs +1219 -0
- package/package.json +103 -5
- package/shared/agent-prompt.d.ts +8 -0
- package/shared/agent-prompt.js +15 -0
- package/shared/approval-prompt.d.ts +4 -0
- package/shared/approval-prompt.js +61 -0
- package/shared/brain-env.d.ts +14 -0
- package/shared/brain-env.js +108 -0
- package/shared/brain-exit.d.ts +20 -0
- package/shared/brain-exit.js +149 -0
- package/shared/capability-profile.d.ts +16 -0
- package/shared/capability-profile.js +75 -0
- package/shared/config-source.d.ts +13 -0
- package/shared/config-source.js +17 -0
- package/shared/confusables.d.ts +3 -0
- package/shared/confusables.js +93 -0
- package/shared/custom-provider.d.ts +45 -0
- package/shared/custom-provider.js +169 -0
- package/shared/dashboard-contract.d.ts +123 -0
- package/shared/dashboard-contract.js +560 -0
- package/shared/dashboard-layout-store.d.ts +44 -0
- package/shared/dashboard-layout-store.js +281 -0
- package/shared/feedback-contract.d.ts +61 -0
- package/shared/feedback-contract.js +146 -0
- package/shared/galaxy-artifact-links.d.ts +30 -0
- package/shared/galaxy-artifact-links.js +166 -0
- package/shared/galaxy-credentials.d.ts +26 -0
- package/shared/galaxy-credentials.js +71 -0
- package/shared/galaxy-destructive.d.ts +21 -0
- package/shared/galaxy-destructive.js +269 -0
- package/shared/galaxy-guidance.d.ts +2 -0
- package/shared/galaxy-guidance.js +53 -0
- package/shared/galaxy-live-contract.d.ts +92 -0
- package/shared/galaxy-live-contract.js +180 -0
- package/shared/galaxy-page-cells.d.ts +2 -0
- package/shared/galaxy-page-cells.js +22 -0
- package/shared/galaxy-tool-family.d.ts +5 -0
- package/shared/galaxy-tool-family.js +27 -0
- package/shared/galaxy-url.d.ts +1 -0
- package/shared/galaxy-url.js +48 -0
- package/shared/gtn.d.ts +31 -0
- package/shared/gtn.js +253 -0
- package/shared/handled-prompt.d.ts +3 -0
- package/shared/handled-prompt.js +26 -0
- package/shared/known-provider.d.ts +11 -0
- package/shared/known-provider.js +89 -0
- package/shared/lesson-hint-marker.d.ts +7 -0
- package/shared/lesson-hint-marker.js +32 -0
- package/shared/lesson-rules.d.ts +150 -0
- package/shared/lesson-rules.js +203 -0
- package/shared/malformed-object-ids.d.ts +1 -0
- package/shared/malformed-object-ids.js +37 -0
- package/shared/markdown-sections.d.ts +10 -0
- package/shared/markdown-sections.js +118 -0
- package/shared/notebook-fences.d.ts +12 -0
- package/shared/notebook-fences.js +53 -0
- package/shared/observation-contract.d.ts +91 -0
- package/shared/observation-contract.js +544 -0
- package/shared/orbit-config.d.ts +226 -0
- package/shared/orbit-config.js +189 -0
- package/shared/orbit-env.d.ts +13 -0
- package/shared/orbit-env.js +124 -0
- package/shared/orbit-shell-contract.d.ts +74 -0
- package/shared/orbit-shell-contract.js +30 -0
- package/shared/page-content-hash.d.ts +1 -0
- package/shared/page-content-hash.js +13 -0
- package/shared/pi-default-model.d.ts +7 -0
- package/shared/pi-default-model.js +41 -0
- package/shared/prompt-blocks.d.ts +87 -0
- package/shared/prompt-blocks.js +898 -0
- package/shared/provider-auth-caps.d.ts +22 -0
- package/shared/provider-auth-caps.js +57 -0
- package/shared/random.d.ts +2 -0
- package/shared/random.js +15 -0
- package/shared/record-excerpt.d.ts +4 -0
- package/shared/record-excerpt.js +16 -0
- package/shared/redirect-guard.d.ts +36 -0
- package/shared/redirect-guard.js +235 -0
- package/shared/skills-pin.d.ts +8 -0
- package/shared/skills-pin.js +9 -0
- package/shared/skills-router.d.ts +17 -0
- package/shared/skills-router.js +63 -0
- package/shared/sra-import.d.ts +34 -0
- package/shared/sra-import.js +206 -0
- package/shared/state-dir.d.ts +21 -0
- package/shared/state-dir.js +240 -0
- package/shared/team-dispatch-contract.d.ts +28 -0
- package/shared/team-dispatch-contract.js +1 -0
- package/shared/truncate-middle.d.ts +11 -0
- package/shared/truncate-middle.js +68 -0
- package/shared/version-compare.d.ts +10 -0
- package/shared/version-compare.js +74 -0
- package/shared/whats-new.d.ts +31 -0
- package/shared/whats-new.js +83 -0
- package/shared/wsl.d.ts +10 -0
- package/shared/wsl.js +24 -0
package/extensions/orbit/vendor/skills/skills/collection-manipulation/references/api-patterns.md
ADDED
|
@@ -0,0 +1,927 @@
|
|
|
1
|
+
# Galaxy Tools API Research
|
|
2
|
+
|
|
3
|
+
## Context
|
|
4
|
+
|
|
5
|
+
This document describes the Galaxy Tools API and demonstrates how to invoke collection operation tools programmatically. Per project goals, **Claude should recommend using Galaxy's native collection operation tools through the API** rather than implementing custom collection manipulation logic, ensuring reproducibility and workflow compatibility.
|
|
6
|
+
|
|
7
|
+
## API Endpoint
|
|
8
|
+
|
|
9
|
+
**Primary tool execution endpoint:** `POST /api/tools`
|
|
10
|
+
|
|
11
|
+
## Tool Invocation Structure
|
|
12
|
+
|
|
13
|
+
### Basic Payload Format
|
|
14
|
+
|
|
15
|
+
```python
|
|
16
|
+
{
|
|
17
|
+
"tool_id": "tool_identifier",
|
|
18
|
+
"inputs": {
|
|
19
|
+
# JSON-encoded tool inputs
|
|
20
|
+
},
|
|
21
|
+
"history_id": "history_id_string"
|
|
22
|
+
}
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
### Complete Payload Options
|
|
26
|
+
|
|
27
|
+
```python
|
|
28
|
+
{
|
|
29
|
+
"tool_id": "tool_identifier", # Required (unless tool_uuid provided)
|
|
30
|
+
"tool_uuid": "uuid", # Alternative to tool_id
|
|
31
|
+
"tool_version": "1.0.0", # Optional: specify tool version
|
|
32
|
+
"inputs": { # Required: tool-specific parameters
|
|
33
|
+
# ... input parameters ...
|
|
34
|
+
},
|
|
35
|
+
"history_id": "history_id_string", # Required: target history
|
|
36
|
+
"input_format": "legacy", # Optional: "legacy" (default) or "21.01"
|
|
37
|
+
"use_cached_job": false, # Optional: reuse existing job results
|
|
38
|
+
"__tags": ["#tag1", "#tag2"] # Optional: tags to apply to outputs
|
|
39
|
+
}
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
**Key Point:** The `inputs` field is JSON-encoded when sent via API (as a string), but the structure is a nested dictionary.
|
|
43
|
+
|
|
44
|
+
## Collection Input Formats
|
|
45
|
+
|
|
46
|
+
### Dataset Collection Input Structure
|
|
47
|
+
|
|
48
|
+
Collections are referenced using a source/ID structure:
|
|
49
|
+
|
|
50
|
+
```python
|
|
51
|
+
{
|
|
52
|
+
"src": "hdca", # History Dataset Collection Association
|
|
53
|
+
"id": "collection_id_string"
|
|
54
|
+
}
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
### Single Dataset Input
|
|
58
|
+
|
|
59
|
+
```python
|
|
60
|
+
{
|
|
61
|
+
"src": "hda", # History Dataset Association
|
|
62
|
+
"id": "dataset_id_string"
|
|
63
|
+
}
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
### Example: Simple Collection Input
|
|
67
|
+
|
|
68
|
+
```python
|
|
69
|
+
inputs = {
|
|
70
|
+
"input": {
|
|
71
|
+
"src": "hdca",
|
|
72
|
+
"id": "f2db41e1fa331b3e"
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
## Collection Operation Tool Examples
|
|
78
|
+
|
|
79
|
+
### 1. Unzip Collection (`__UNZIP_COLLECTION__`)
|
|
80
|
+
|
|
81
|
+
**Purpose:** Split paired collection into forward/reverse lists
|
|
82
|
+
|
|
83
|
+
```python
|
|
84
|
+
payload = {
|
|
85
|
+
"tool_id": "__UNZIP_COLLECTION__",
|
|
86
|
+
"history_id": "abc123",
|
|
87
|
+
"inputs": {
|
|
88
|
+
"input": {
|
|
89
|
+
"src": "hdca",
|
|
90
|
+
"id": "paired_collection_id"
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
response = requests.post(f"{galaxy_url}/api/tools", json=payload, headers=headers)
|
|
96
|
+
```
|
|
97
|
+
|
|
98
|
+
**Response Structure:**
|
|
99
|
+
```python
|
|
100
|
+
{
|
|
101
|
+
"outputs": [
|
|
102
|
+
{
|
|
103
|
+
"id": "forward_collection_id",
|
|
104
|
+
"name": "forward",
|
|
105
|
+
# ... dataset details
|
|
106
|
+
},
|
|
107
|
+
{
|
|
108
|
+
"id": "reverse_collection_id",
|
|
109
|
+
"name": "reverse",
|
|
110
|
+
# ... dataset details
|
|
111
|
+
}
|
|
112
|
+
],
|
|
113
|
+
"jobs": [
|
|
114
|
+
{
|
|
115
|
+
"id": "job_id",
|
|
116
|
+
# ... job details
|
|
117
|
+
}
|
|
118
|
+
]
|
|
119
|
+
}
|
|
120
|
+
```
|
|
121
|
+
|
|
122
|
+
---
|
|
123
|
+
|
|
124
|
+
### 2. Zip Collections (`__ZIP_COLLECTION__`)
|
|
125
|
+
|
|
126
|
+
**Purpose:** Combine two datasets/collections into paired collection
|
|
127
|
+
|
|
128
|
+
```python
|
|
129
|
+
payload = {
|
|
130
|
+
"tool_id": "__ZIP_COLLECTION__",
|
|
131
|
+
"history_id": "abc123",
|
|
132
|
+
"inputs": {
|
|
133
|
+
"input_forward": {
|
|
134
|
+
"src": "hda", # or "hdca" for collection
|
|
135
|
+
"id": "forward_dataset_id"
|
|
136
|
+
},
|
|
137
|
+
"input_reverse": {
|
|
138
|
+
"src": "hda", # or "hdca" for collection
|
|
139
|
+
"id": "reverse_dataset_id"
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
```
|
|
144
|
+
|
|
145
|
+
**Response Structure:**
|
|
146
|
+
```python
|
|
147
|
+
{
|
|
148
|
+
"output_collections": [
|
|
149
|
+
{
|
|
150
|
+
"id": "paired_collection_id",
|
|
151
|
+
"hid": 5,
|
|
152
|
+
"collection_type": "paired",
|
|
153
|
+
# ... collection details
|
|
154
|
+
}
|
|
155
|
+
],
|
|
156
|
+
"jobs": [ ... ]
|
|
157
|
+
}
|
|
158
|
+
```
|
|
159
|
+
|
|
160
|
+
---
|
|
161
|
+
|
|
162
|
+
### 3. Filter Collection (`__FILTER_FROM_FILE__`)
|
|
163
|
+
|
|
164
|
+
**Purpose:** Filter collection elements using identifier file
|
|
165
|
+
|
|
166
|
+
```python
|
|
167
|
+
payload = {
|
|
168
|
+
"tool_id": "__FILTER_FROM_FILE__",
|
|
169
|
+
"history_id": "abc123",
|
|
170
|
+
"inputs": {
|
|
171
|
+
"input": {
|
|
172
|
+
"src": "hdca",
|
|
173
|
+
"id": "collection_id"
|
|
174
|
+
},
|
|
175
|
+
"how": {
|
|
176
|
+
"how_filter": "remove_if_absent", # or "remove_if_present"
|
|
177
|
+
"filter_source": {
|
|
178
|
+
"src": "hda",
|
|
179
|
+
"id": "identifier_file_id"
|
|
180
|
+
}
|
|
181
|
+
}
|
|
182
|
+
}
|
|
183
|
+
}
|
|
184
|
+
```
|
|
185
|
+
|
|
186
|
+
**Response Structure:**
|
|
187
|
+
```python
|
|
188
|
+
{
|
|
189
|
+
"output_collections": [
|
|
190
|
+
{
|
|
191
|
+
"name": "output_filtered",
|
|
192
|
+
# ... filtered collection
|
|
193
|
+
},
|
|
194
|
+
{
|
|
195
|
+
"name": "output_discarded",
|
|
196
|
+
# ... discarded elements
|
|
197
|
+
}
|
|
198
|
+
],
|
|
199
|
+
"jobs": [ ... ]
|
|
200
|
+
}
|
|
201
|
+
```
|
|
202
|
+
|
|
203
|
+
---
|
|
204
|
+
|
|
205
|
+
### 4. Flatten Collection (`__FLATTEN__`)
|
|
206
|
+
|
|
207
|
+
**Purpose:** Flatten nested collection to simple list
|
|
208
|
+
|
|
209
|
+
```python
|
|
210
|
+
payload = {
|
|
211
|
+
"tool_id": "__FLATTEN__",
|
|
212
|
+
"history_id": "abc123",
|
|
213
|
+
"inputs": {
|
|
214
|
+
"input": {
|
|
215
|
+
"src": "hdca",
|
|
216
|
+
"id": "nested_collection_id"
|
|
217
|
+
},
|
|
218
|
+
"join_identifier": "_" # String to join identifier levels
|
|
219
|
+
}
|
|
220
|
+
}
|
|
221
|
+
```
|
|
222
|
+
|
|
223
|
+
---
|
|
224
|
+
|
|
225
|
+
### 5. Relabel Identifiers (`__RELABEL_FROM_FILE__`)
|
|
226
|
+
|
|
227
|
+
**Purpose:** Rename collection elements using mapping file
|
|
228
|
+
|
|
229
|
+
```python
|
|
230
|
+
payload = {
|
|
231
|
+
"tool_id": "__RELABEL_FROM_FILE__",
|
|
232
|
+
"history_id": "abc123",
|
|
233
|
+
"inputs": {
|
|
234
|
+
"input": {
|
|
235
|
+
"src": "hdca",
|
|
236
|
+
"id": "collection_id"
|
|
237
|
+
},
|
|
238
|
+
"how": {
|
|
239
|
+
"how_select": "tabular", # or "txt" or "tabular_extended"
|
|
240
|
+
"labels": {
|
|
241
|
+
"src": "hda",
|
|
242
|
+
"id": "mapping_file_id"
|
|
243
|
+
},
|
|
244
|
+
"strict": False # Optional: enforce exact matching
|
|
245
|
+
}
|
|
246
|
+
}
|
|
247
|
+
}
|
|
248
|
+
```
|
|
249
|
+
|
|
250
|
+
---
|
|
251
|
+
|
|
252
|
+
### 6. Sort Collection (`__SORTLIST__`)
|
|
253
|
+
|
|
254
|
+
**Purpose:** Sort collection elements
|
|
255
|
+
|
|
256
|
+
```python
|
|
257
|
+
payload = {
|
|
258
|
+
"tool_id": "__SORTLIST__",
|
|
259
|
+
"history_id": "abc123",
|
|
260
|
+
"inputs": {
|
|
261
|
+
"input": {
|
|
262
|
+
"src": "hdca",
|
|
263
|
+
"id": "collection_id"
|
|
264
|
+
},
|
|
265
|
+
"sort_type": {
|
|
266
|
+
"sort_type": "alpha" # or "numeric" or "file"
|
|
267
|
+
# If "file":
|
|
268
|
+
# "sort_file": {"src": "hda", "id": "sort_order_file_id"}
|
|
269
|
+
}
|
|
270
|
+
}
|
|
271
|
+
}
|
|
272
|
+
```
|
|
273
|
+
|
|
274
|
+
---
|
|
275
|
+
|
|
276
|
+
### 7. Merge Collections (`__MERGE_COLLECTION__`)
|
|
277
|
+
|
|
278
|
+
**Purpose:** Merge multiple collections into one
|
|
279
|
+
|
|
280
|
+
```python
|
|
281
|
+
payload = {
|
|
282
|
+
"tool_id": "__MERGE_COLLECTION__",
|
|
283
|
+
"history_id": "abc123",
|
|
284
|
+
"inputs": {
|
|
285
|
+
"inputs_0|input": {
|
|
286
|
+
"src": "hdca",
|
|
287
|
+
"id": "collection1_id"
|
|
288
|
+
},
|
|
289
|
+
"inputs_1|input": {
|
|
290
|
+
"src": "hdca",
|
|
291
|
+
"id": "collection2_id"
|
|
292
|
+
},
|
|
293
|
+
"advanced": {
|
|
294
|
+
"conflict": {
|
|
295
|
+
"duplicate_options": "keep_first", # or other options
|
|
296
|
+
"suffix_pattern": "_#" # for suffix modes
|
|
297
|
+
}
|
|
298
|
+
}
|
|
299
|
+
}
|
|
300
|
+
}
|
|
301
|
+
```
|
|
302
|
+
|
|
303
|
+
---
|
|
304
|
+
|
|
305
|
+
### 8. Build List (`__BUILD_LIST__`)
|
|
306
|
+
|
|
307
|
+
**Purpose:** Build list collection from datasets
|
|
308
|
+
|
|
309
|
+
```python
|
|
310
|
+
payload = {
|
|
311
|
+
"tool_id": "__BUILD_LIST__",
|
|
312
|
+
"history_id": "abc123",
|
|
313
|
+
"inputs": {
|
|
314
|
+
"datasets_0|input": {
|
|
315
|
+
"src": "hda",
|
|
316
|
+
"id": "dataset1_id"
|
|
317
|
+
},
|
|
318
|
+
"datasets_1|input": {
|
|
319
|
+
"src": "hda",
|
|
320
|
+
"id": "dataset2_id"
|
|
321
|
+
}
|
|
322
|
+
}
|
|
323
|
+
}
|
|
324
|
+
```
|
|
325
|
+
|
|
326
|
+
---
|
|
327
|
+
|
|
328
|
+
### 9. Extract Dataset (`__EXTRACT_DATASET__`)
|
|
329
|
+
|
|
330
|
+
**Purpose:** Extract single dataset from collection
|
|
331
|
+
|
|
332
|
+
```python
|
|
333
|
+
payload = {
|
|
334
|
+
"tool_id": "__EXTRACT_DATASET__",
|
|
335
|
+
"history_id": "abc123",
|
|
336
|
+
"inputs": {
|
|
337
|
+
"input": {
|
|
338
|
+
"src": "hdca",
|
|
339
|
+
"id": "collection_id"
|
|
340
|
+
},
|
|
341
|
+
"which": {
|
|
342
|
+
"which_dataset": "by_identifier", # or "first" or "by_index"
|
|
343
|
+
"identifier": "element_name" # if by_identifier
|
|
344
|
+
# "index": 0 # if by_index
|
|
345
|
+
}
|
|
346
|
+
}
|
|
347
|
+
}
|
|
348
|
+
```
|
|
349
|
+
|
|
350
|
+
---
|
|
351
|
+
|
|
352
|
+
### 10. Filter Empty/Failed Datasets
|
|
353
|
+
|
|
354
|
+
**Filter Empty:**
|
|
355
|
+
```python
|
|
356
|
+
payload = {
|
|
357
|
+
"tool_id": "__FILTER_EMPTY_DATASETS__",
|
|
358
|
+
"history_id": "abc123",
|
|
359
|
+
"inputs": {
|
|
360
|
+
"input": {
|
|
361
|
+
"src": "hdca",
|
|
362
|
+
"id": "collection_id"
|
|
363
|
+
}
|
|
364
|
+
}
|
|
365
|
+
}
|
|
366
|
+
```
|
|
367
|
+
|
|
368
|
+
**Filter Failed:**
|
|
369
|
+
```python
|
|
370
|
+
payload = {
|
|
371
|
+
"tool_id": "__FILTER_FAILED_DATASETS__",
|
|
372
|
+
"history_id": "abc123",
|
|
373
|
+
"inputs": {
|
|
374
|
+
"input": {
|
|
375
|
+
"src": "hdca",
|
|
376
|
+
"id": "collection_id"
|
|
377
|
+
},
|
|
378
|
+
"replacement": { # Optional
|
|
379
|
+
"src": "hda",
|
|
380
|
+
"id": "replacement_dataset_id"
|
|
381
|
+
}
|
|
382
|
+
}
|
|
383
|
+
}
|
|
384
|
+
```
|
|
385
|
+
|
|
386
|
+
---
|
|
387
|
+
|
|
388
|
+
### 11. Apply Rules (`__APPLY_RULES__`)
|
|
389
|
+
|
|
390
|
+
**Purpose:** Advanced collection restructuring
|
|
391
|
+
|
|
392
|
+
```python
|
|
393
|
+
payload = {
|
|
394
|
+
"tool_id": "__APPLY_RULES__",
|
|
395
|
+
"history_id": "abc123",
|
|
396
|
+
"inputs": {
|
|
397
|
+
"input": {
|
|
398
|
+
"src": "hdca",
|
|
399
|
+
"id": "collection_id"
|
|
400
|
+
},
|
|
401
|
+
"rules": {
|
|
402
|
+
# Complex rules structure (JSON rule definition)
|
|
403
|
+
# See references/apply-rules.md for rule builder syntax
|
|
404
|
+
}
|
|
405
|
+
}
|
|
406
|
+
}
|
|
407
|
+
```
|
|
408
|
+
|
|
409
|
+
**Note:** Apply Rules typically requires interactive rule building. Rules can be exported as JSON and reused programmatically.
|
|
410
|
+
|
|
411
|
+
---
|
|
412
|
+
|
|
413
|
+
## Advanced Collection Operations
|
|
414
|
+
|
|
415
|
+
### Map-Over Behavior (Batch Processing)
|
|
416
|
+
|
|
417
|
+
When tools process collections element-by-element, use the batch flag:
|
|
418
|
+
|
|
419
|
+
```python
|
|
420
|
+
inputs = {
|
|
421
|
+
"input1": {
|
|
422
|
+
"batch": True,
|
|
423
|
+
"values": [
|
|
424
|
+
{
|
|
425
|
+
"src": "hdca",
|
|
426
|
+
"id": "collection_id"
|
|
427
|
+
}
|
|
428
|
+
]
|
|
429
|
+
}
|
|
430
|
+
}
|
|
431
|
+
```
|
|
432
|
+
|
|
433
|
+
**Result:** Tool runs once per collection element, creating implicit output collection.
|
|
434
|
+
|
|
435
|
+
---
|
|
436
|
+
|
|
437
|
+
### Map-Over Multiple Collections (Linked)
|
|
438
|
+
|
|
439
|
+
Process two collections together, element-by-element:
|
|
440
|
+
|
|
441
|
+
```python
|
|
442
|
+
inputs = {
|
|
443
|
+
"input1": {
|
|
444
|
+
"batch": True,
|
|
445
|
+
"values": [
|
|
446
|
+
{"src": "hdca", "id": "collection1_id"}
|
|
447
|
+
]
|
|
448
|
+
},
|
|
449
|
+
"input2": {
|
|
450
|
+
"batch": True,
|
|
451
|
+
"values": [
|
|
452
|
+
{"src": "hdca", "id": "collection2_id"}
|
|
453
|
+
]
|
|
454
|
+
}
|
|
455
|
+
}
|
|
456
|
+
```
|
|
457
|
+
|
|
458
|
+
**Result:** Corresponding elements processed together (forward with forward, reverse with reverse).
|
|
459
|
+
|
|
460
|
+
---
|
|
461
|
+
|
|
462
|
+
### Map-Over Multiple Collections (Unlinked)
|
|
463
|
+
|
|
464
|
+
Process all combinations of elements from two collections:
|
|
465
|
+
|
|
466
|
+
```python
|
|
467
|
+
inputs = {
|
|
468
|
+
"input1": {
|
|
469
|
+
"batch": True,
|
|
470
|
+
"linked": False,
|
|
471
|
+
"values": [
|
|
472
|
+
{"src": "hdca", "id": "collection1_id"}
|
|
473
|
+
]
|
|
474
|
+
},
|
|
475
|
+
"input2": {
|
|
476
|
+
"batch": True,
|
|
477
|
+
"linked": False,
|
|
478
|
+
"values": [
|
|
479
|
+
{"src": "hdca", "id": "collection2_id"}
|
|
480
|
+
]
|
|
481
|
+
}
|
|
482
|
+
}
|
|
483
|
+
```
|
|
484
|
+
|
|
485
|
+
**Result:** Cartesian product - all pairs processed (collection1[0] with collection2[0], collection1[0] with collection2[1], etc.).
|
|
486
|
+
|
|
487
|
+
**Alternative:** Use `__CROSS_PRODUCT_FLAT__` tool for explicit all-vs-all comparisons.
|
|
488
|
+
|
|
489
|
+
---
|
|
490
|
+
|
|
491
|
+
### Map-Over Nested Collections
|
|
492
|
+
|
|
493
|
+
For nested collections (e.g., list:paired), specify which level to map over:
|
|
494
|
+
|
|
495
|
+
```python
|
|
496
|
+
inputs = {
|
|
497
|
+
"input": {
|
|
498
|
+
"batch": True,
|
|
499
|
+
"values": [
|
|
500
|
+
{
|
|
501
|
+
"src": "hdca",
|
|
502
|
+
"map_over_type": "paired", # Map over paired level
|
|
503
|
+
"id": "nested_collection_id"
|
|
504
|
+
}
|
|
505
|
+
]
|
|
506
|
+
}
|
|
507
|
+
}
|
|
508
|
+
```
|
|
509
|
+
|
|
510
|
+
---
|
|
511
|
+
|
|
512
|
+
## Response Structure
|
|
513
|
+
|
|
514
|
+
### Successful Tool Execution
|
|
515
|
+
|
|
516
|
+
```python
|
|
517
|
+
{
|
|
518
|
+
"id": "invocation_id",
|
|
519
|
+
"model_class": "WorkflowInvocation",
|
|
520
|
+
"outputs": [
|
|
521
|
+
{
|
|
522
|
+
"id": "output_dataset_id",
|
|
523
|
+
"hid": 10,
|
|
524
|
+
"name": "Output name",
|
|
525
|
+
"history_id": "abc123",
|
|
526
|
+
# ... dataset details
|
|
527
|
+
}
|
|
528
|
+
],
|
|
529
|
+
"output_collections": [
|
|
530
|
+
{
|
|
531
|
+
"id": "output_collection_id",
|
|
532
|
+
"hid": 11,
|
|
533
|
+
"name": "Collection name",
|
|
534
|
+
"collection_type": "list",
|
|
535
|
+
"history_id": "abc123",
|
|
536
|
+
# ... collection details
|
|
537
|
+
}
|
|
538
|
+
],
|
|
539
|
+
"jobs": [
|
|
540
|
+
{
|
|
541
|
+
"id": "job_id",
|
|
542
|
+
"tool_id": "tool_id",
|
|
543
|
+
"state": "new",
|
|
544
|
+
# ... job details
|
|
545
|
+
}
|
|
546
|
+
],
|
|
547
|
+
"implicit_collections": [
|
|
548
|
+
{
|
|
549
|
+
"id": "implicit_collection_id",
|
|
550
|
+
"hid": 12,
|
|
551
|
+
"name": "Implicit collection name",
|
|
552
|
+
# ... created by map-over operations
|
|
553
|
+
}
|
|
554
|
+
]
|
|
555
|
+
}
|
|
556
|
+
```
|
|
557
|
+
|
|
558
|
+
### Key Response Fields
|
|
559
|
+
|
|
560
|
+
- **`outputs`**: Individual dataset outputs
|
|
561
|
+
- **`output_collections`**: Explicitly created collection outputs
|
|
562
|
+
- **`jobs`**: Job records for execution tracking
|
|
563
|
+
- **`implicit_collections`**: Collections created by map-over/batch operations
|
|
564
|
+
|
|
565
|
+
---
|
|
566
|
+
|
|
567
|
+
## Error Handling
|
|
568
|
+
|
|
569
|
+
### Common Error Responses
|
|
570
|
+
|
|
571
|
+
**Permission Denied:**
|
|
572
|
+
```python
|
|
573
|
+
{
|
|
574
|
+
"err_msg": "User does not have permission to access dataset.",
|
|
575
|
+
"err_code": 403003
|
|
576
|
+
}
|
|
577
|
+
```
|
|
578
|
+
|
|
579
|
+
**Invalid Parameters:**
|
|
580
|
+
```python
|
|
581
|
+
{
|
|
582
|
+
"err_msg": "Tool parameter validation failed.",
|
|
583
|
+
"err_code": 400001
|
|
584
|
+
}
|
|
585
|
+
```
|
|
586
|
+
|
|
587
|
+
**Tool Not Found:**
|
|
588
|
+
```python
|
|
589
|
+
{
|
|
590
|
+
"err_msg": "Tool not found: tool_id",
|
|
591
|
+
"err_code": 404001
|
|
592
|
+
}
|
|
593
|
+
```
|
|
594
|
+
|
|
595
|
+
---
|
|
596
|
+
|
|
597
|
+
## Input Format Versions
|
|
598
|
+
|
|
599
|
+
### Legacy Format (Default)
|
|
600
|
+
|
|
601
|
+
Inputs nested in conditionals/repeats use pipe notation:
|
|
602
|
+
|
|
603
|
+
```python
|
|
604
|
+
{
|
|
605
|
+
"conditional_name|input_name": value,
|
|
606
|
+
"repeat_0|input_name": value,
|
|
607
|
+
"repeat_1|input_name": value
|
|
608
|
+
}
|
|
609
|
+
```
|
|
610
|
+
|
|
611
|
+
### 21.01 Format
|
|
612
|
+
|
|
613
|
+
Inputs nested in conditionals/repeats are nested objects:
|
|
614
|
+
|
|
615
|
+
```python
|
|
616
|
+
{
|
|
617
|
+
"conditional_name": {
|
|
618
|
+
"input_name": value
|
|
619
|
+
},
|
|
620
|
+
"repeat": [
|
|
621
|
+
{"input_name": value},
|
|
622
|
+
{"input_name": value}
|
|
623
|
+
]
|
|
624
|
+
}
|
|
625
|
+
```
|
|
626
|
+
|
|
627
|
+
Specify format in payload:
|
|
628
|
+
```python
|
|
629
|
+
{
|
|
630
|
+
"input_format": "21.01",
|
|
631
|
+
# ...
|
|
632
|
+
}
|
|
633
|
+
```
|
|
634
|
+
|
|
635
|
+
---
|
|
636
|
+
|
|
637
|
+
## Best Practices for API-Based Collection Operations
|
|
638
|
+
|
|
639
|
+
### 1. Always Use Collection Operation Tools
|
|
640
|
+
|
|
641
|
+
**Don't do this:**
|
|
642
|
+
```python
|
|
643
|
+
# Fetch collection metadata via API
|
|
644
|
+
collection = get_collection_details(collection_id)
|
|
645
|
+
|
|
646
|
+
# Manipulate in Python
|
|
647
|
+
filtered_elements = [e for e in collection["elements"] if condition(e)]
|
|
648
|
+
|
|
649
|
+
# Create new collection via API
|
|
650
|
+
create_new_collection(filtered_elements)
|
|
651
|
+
```
|
|
652
|
+
|
|
653
|
+
**Do this:**
|
|
654
|
+
```python
|
|
655
|
+
# Use Filter from File tool
|
|
656
|
+
create_identifier_file(identifiers_to_keep)
|
|
657
|
+
payload = {
|
|
658
|
+
"tool_id": "__FILTER_FROM_FILE__",
|
|
659
|
+
"inputs": {
|
|
660
|
+
"input": {"src": "hdca", "id": collection_id},
|
|
661
|
+
"how": {
|
|
662
|
+
"how_filter": "remove_if_absent",
|
|
663
|
+
"filter_source": {"src": "hda", "id": identifier_file_id}
|
|
664
|
+
}
|
|
665
|
+
}
|
|
666
|
+
}
|
|
667
|
+
```
|
|
668
|
+
|
|
669
|
+
**Why:** Tool-based operations are:
|
|
670
|
+
- Reproducible (captured in history)
|
|
671
|
+
- Workflow-compatible (can be extracted)
|
|
672
|
+
- Tested and validated
|
|
673
|
+
- Properly handle edge cases
|
|
674
|
+
|
|
675
|
+
---
|
|
676
|
+
|
|
677
|
+
### 2. Chain Operations Through History
|
|
678
|
+
|
|
679
|
+
Operations naturally flow through history:
|
|
680
|
+
|
|
681
|
+
```python
|
|
682
|
+
# Step 1: Filter collection
|
|
683
|
+
filter_result = execute_tool("__FILTER_FROM_FILE__", ...)
|
|
684
|
+
filtered_collection_id = filter_result["output_collections"][0]["id"]
|
|
685
|
+
|
|
686
|
+
# Step 2: Sort filtered collection
|
|
687
|
+
sort_result = execute_tool("__SORTLIST__", {
|
|
688
|
+
"input": {"src": "hdca", "id": filtered_collection_id},
|
|
689
|
+
# ...
|
|
690
|
+
})
|
|
691
|
+
```
|
|
692
|
+
|
|
693
|
+
**Benefit:** Complete audit trail in Galaxy history.
|
|
694
|
+
|
|
695
|
+
---
|
|
696
|
+
|
|
697
|
+
### 3. Wait for Job Completion
|
|
698
|
+
|
|
699
|
+
Jobs execute asynchronously. Poll job status:
|
|
700
|
+
|
|
701
|
+
```python
|
|
702
|
+
def wait_for_job(job_id):
|
|
703
|
+
while True:
|
|
704
|
+
response = requests.get(f"{galaxy_url}/api/jobs/{job_id}")
|
|
705
|
+
job = response.json()
|
|
706
|
+
if job["state"] in ["ok", "error"]:
|
|
707
|
+
return job
|
|
708
|
+
time.sleep(2)
|
|
709
|
+
|
|
710
|
+
result = execute_tool(...)
|
|
711
|
+
for job in result["jobs"]:
|
|
712
|
+
wait_for_job(job["id"])
|
|
713
|
+
```
|
|
714
|
+
|
|
715
|
+
---
|
|
716
|
+
|
|
717
|
+
### 4. Use Appropriate Tools for Operations
|
|
718
|
+
|
|
719
|
+
**Filtering:**
|
|
720
|
+
- Simple: `__FILTER_EMPTY_DATASETS__`, `__FILTER_FAILED_DATASETS__`
|
|
721
|
+
- By identifiers: `__FILTER_FROM_FILE__`
|
|
722
|
+
- Single element: `__EXTRACT_DATASET__`
|
|
723
|
+
|
|
724
|
+
**Restructuring:**
|
|
725
|
+
- Flatten: `__FLATTEN__`
|
|
726
|
+
- Nest: `__NEST__`
|
|
727
|
+
- Zip/Unzip: `__ZIP_COLLECTION__`, `__UNZIP_COLLECTION__`
|
|
728
|
+
- Complex: `__APPLY_RULES__`
|
|
729
|
+
|
|
730
|
+
**Organization:**
|
|
731
|
+
- Rename: `__RELABEL_FROM_FILE__`
|
|
732
|
+
- Sort: `__SORTLIST__`
|
|
733
|
+
- Merge: `__MERGE_COLLECTION__`
|
|
734
|
+
|
|
735
|
+
---
|
|
736
|
+
|
|
737
|
+
### 5. Leverage Map-Over for Batch Processing
|
|
738
|
+
|
|
739
|
+
Instead of iterating in code:
|
|
740
|
+
|
|
741
|
+
```python
|
|
742
|
+
# Process collection elements automatically
|
|
743
|
+
payload = {
|
|
744
|
+
"tool_id": "analysis_tool",
|
|
745
|
+
"inputs": {
|
|
746
|
+
"input": {
|
|
747
|
+
"batch": True,
|
|
748
|
+
"values": [{"src": "hdca", "id": collection_id}]
|
|
749
|
+
}
|
|
750
|
+
}
|
|
751
|
+
}
|
|
752
|
+
```
|
|
753
|
+
|
|
754
|
+
Galaxy handles parallelization and creates output collection automatically.
|
|
755
|
+
|
|
756
|
+
---
|
|
757
|
+
|
|
758
|
+
## Complete Example: Multi-Step Collection Pipeline
|
|
759
|
+
|
|
760
|
+
```python
|
|
761
|
+
import requests
|
|
762
|
+
import time
|
|
763
|
+
|
|
764
|
+
galaxy_url = "https://usegalaxy.org"
|
|
765
|
+
api_key = "your_api_key"
|
|
766
|
+
headers = {"x-api-key": api_key}
|
|
767
|
+
|
|
768
|
+
def execute_tool(tool_id, history_id, inputs):
|
|
769
|
+
"""Execute tool and wait for completion"""
|
|
770
|
+
payload = {
|
|
771
|
+
"tool_id": tool_id,
|
|
772
|
+
"history_id": history_id,
|
|
773
|
+
"inputs": inputs
|
|
774
|
+
}
|
|
775
|
+
response = requests.post(
|
|
776
|
+
f"{galaxy_url}/api/tools",
|
|
777
|
+
json=payload,
|
|
778
|
+
headers=headers
|
|
779
|
+
)
|
|
780
|
+
result = response.json()
|
|
781
|
+
|
|
782
|
+
# Wait for jobs
|
|
783
|
+
for job in result["jobs"]:
|
|
784
|
+
wait_for_job(job["id"])
|
|
785
|
+
|
|
786
|
+
return result
|
|
787
|
+
|
|
788
|
+
def wait_for_job(job_id):
|
|
789
|
+
"""Poll job until complete"""
|
|
790
|
+
while True:
|
|
791
|
+
response = requests.get(
|
|
792
|
+
f"{galaxy_url}/api/jobs/{job_id}",
|
|
793
|
+
headers=headers
|
|
794
|
+
)
|
|
795
|
+
job = response.json()
|
|
796
|
+
if job["state"] == "ok":
|
|
797
|
+
return True
|
|
798
|
+
elif job["state"] == "error":
|
|
799
|
+
raise Exception(f"Job {job_id} failed")
|
|
800
|
+
time.sleep(2)
|
|
801
|
+
|
|
802
|
+
# Pipeline: Filter → Sort → Relabel
|
|
803
|
+
history_id = "abc123"
|
|
804
|
+
collection_id = "original_collection"
|
|
805
|
+
|
|
806
|
+
# Step 1: Filter failed datasets
|
|
807
|
+
result1 = execute_tool(
|
|
808
|
+
"__FILTER_FAILED_DATASETS__",
|
|
809
|
+
history_id,
|
|
810
|
+
{"input": {"src": "hdca", "id": collection_id}}
|
|
811
|
+
)
|
|
812
|
+
filtered_id = result1["output_collections"][0]["id"]
|
|
813
|
+
|
|
814
|
+
# Step 2: Sort alphabetically
|
|
815
|
+
result2 = execute_tool(
|
|
816
|
+
"__SORTLIST__",
|
|
817
|
+
history_id,
|
|
818
|
+
{
|
|
819
|
+
"input": {"src": "hdca", "id": filtered_id},
|
|
820
|
+
"sort_type": {"sort_type": "alpha"}
|
|
821
|
+
}
|
|
822
|
+
)
|
|
823
|
+
sorted_id = result2["output_collections"][0]["id"]
|
|
824
|
+
|
|
825
|
+
# Step 3: Relabel with mapping file
|
|
826
|
+
mapping_file_id = "uploaded_mapping_file"
|
|
827
|
+
result3 = execute_tool(
|
|
828
|
+
"__RELABEL_FROM_FILE__",
|
|
829
|
+
history_id,
|
|
830
|
+
{
|
|
831
|
+
"input": {"src": "hdca", "id": sorted_id},
|
|
832
|
+
"how": {
|
|
833
|
+
"how_select": "tabular",
|
|
834
|
+
"labels": {"src": "hda", "id": mapping_file_id}
|
|
835
|
+
}
|
|
836
|
+
}
|
|
837
|
+
)
|
|
838
|
+
|
|
839
|
+
final_collection_id = result3["output_collections"][0]["id"]
|
|
840
|
+
print(f"Pipeline complete. Final collection: {final_collection_id}")
|
|
841
|
+
```
|
|
842
|
+
|
|
843
|
+
---
|
|
844
|
+
|
|
845
|
+
## Why API Tool Invocation Over Direct Manipulation
|
|
846
|
+
|
|
847
|
+
### Reproducibility
|
|
848
|
+
|
|
849
|
+
**Direct API manipulation:**
|
|
850
|
+
- Operations lost after execution
|
|
851
|
+
- Cannot recreate analysis
|
|
852
|
+
- No audit trail
|
|
853
|
+
|
|
854
|
+
**Tool-based approach:**
|
|
855
|
+
- All operations in history
|
|
856
|
+
- Complete provenance tracking
|
|
857
|
+
- Re-executable
|
|
858
|
+
|
|
859
|
+
### Workflow Compatibility
|
|
860
|
+
|
|
861
|
+
**Direct API manipulation:**
|
|
862
|
+
- Cannot extract to workflow
|
|
863
|
+
- Not shareable
|
|
864
|
+
|
|
865
|
+
**Tool-based approach:**
|
|
866
|
+
- Workflow-extractable
|
|
867
|
+
- Shareable with community
|
|
868
|
+
- Published methods remain executable
|
|
869
|
+
|
|
870
|
+
### Reliability
|
|
871
|
+
|
|
872
|
+
**Direct API manipulation:**
|
|
873
|
+
- Custom logic may have bugs
|
|
874
|
+
- Edge cases not handled
|
|
875
|
+
- No validation
|
|
876
|
+
|
|
877
|
+
**Tool-based approach:**
|
|
878
|
+
- Tested and validated
|
|
879
|
+
- Handles edge cases
|
|
880
|
+
- Built-in validation
|
|
881
|
+
|
|
882
|
+
---
|
|
883
|
+
|
|
884
|
+
## Summary: The Galaxy API Way
|
|
885
|
+
|
|
886
|
+
When working with collections via API:
|
|
887
|
+
|
|
888
|
+
1. **Identify the operation needed** (filter, sort, merge, etc.)
|
|
889
|
+
2. **Select appropriate collection operation tool** (see `references/tools.md`)
|
|
890
|
+
3. **Construct tool payload** with collection references
|
|
891
|
+
4. **Execute via POST /api/tools**
|
|
892
|
+
5. **Use output collection ID** for next operation
|
|
893
|
+
|
|
894
|
+
**Result:** Reproducible, workflow-compatible, shareable collection operations that align with Galaxy best practices.
|
|
895
|
+
|
|
896
|
+
---
|
|
897
|
+
|
|
898
|
+
## Additional Resources
|
|
899
|
+
|
|
900
|
+
- **Tool Catalog:** See `references/tools.md` for complete list of collection operation tools
|
|
901
|
+
- **Apply Rules DSL:** See `references/apply-rules.md` for rule builder syntax
|
|
902
|
+
- **Galaxy API Documentation:** https://docs.galaxyproject.org/en/master/api_doc.html
|
|
903
|
+
- **BioBlend Library:** https://bioblend.readthedocs.io/ (Python wrapper for Galaxy API)
|
|
904
|
+
|
|
905
|
+
---
|
|
906
|
+
|
|
907
|
+
## Quick Reference: Common Tool IDs
|
|
908
|
+
|
|
909
|
+
| Operation | Tool ID |
|
|
910
|
+
|-----------|---------|
|
|
911
|
+
| Filter by file | `__FILTER_FROM_FILE__` |
|
|
912
|
+
| Filter empty | `__FILTER_EMPTY_DATASETS__` |
|
|
913
|
+
| Filter failed | `__FILTER_FAILED_DATASETS__` |
|
|
914
|
+
| Keep success | `__KEEP_SUCCESS_DATASETS__` |
|
|
915
|
+
| Extract dataset | `__EXTRACT_DATASET__` |
|
|
916
|
+
| Flatten | `__FLATTEN__` |
|
|
917
|
+
| Zip | `__ZIP_COLLECTION__` |
|
|
918
|
+
| Unzip | `__UNZIP_COLLECTION__` |
|
|
919
|
+
| Nest | `__NEST__` |
|
|
920
|
+
| Build list | `__BUILD_LIST__` |
|
|
921
|
+
| Merge | `__MERGE_COLLECTION__` |
|
|
922
|
+
| Relabel | `__RELABEL_FROM_FILE__` |
|
|
923
|
+
| Sort | `__SORTLIST__` |
|
|
924
|
+
| Tag | `__TAG_FROM_FILE__` |
|
|
925
|
+
| Apply rules | `__APPLY_RULES__` |
|
|
926
|
+
| Cross product | `__CROSS_PRODUCT_FLAT__` |
|
|
927
|
+
| Duplicate | `__DUPLICATE_FILE_TO_COLLECTION__` |
|