|
| 1 | +--- |
| 2 | +phase: 07-turn-join-read-classifications-py-script-into-a-wdl-pipeline-task-in-task-utils |
| 3 | +plan: 02 |
| 4 | +subsystem: metagenomics |
| 5 | +tags: [wdl, dockstore, workflow-wrapper, parquet, kallisto, kraken2, virnucpro, genomad] |
| 6 | + |
| 7 | +# Dependency graph |
| 8 | +requires: |
| 9 | + - phase: 07-01 |
| 10 | + provides: join_read_classifications WDL task in tasks_metagenomics.wdl |
| 11 | +provides: |
| 12 | + - join_read_classifications standalone workflow wrapper |
| 13 | + - Placeholder test input JSON for join_read_classifications |
| 14 | + - Dockstore registration entry for join_read_classifications |
| 15 | +affects: |
| 16 | + - Dockstore discoverability of join_read_classifications on Terra/DNAnexus |
| 17 | + |
| 18 | +# Tech tracking |
| 19 | +tech-stack: |
| 20 | + added: [] |
| 21 | + patterns: |
| 22 | + - Standalone workflow wrapper importing tasks_metagenomics.wdl with task alias (as join_reads) |
| 23 | + - allowNestedInputs: true for Terra-compatible placeholder test JSON |
| 24 | + |
| 25 | +key-files: |
| 26 | + created: |
| 27 | + - pipes/WDL/workflows/join_read_classifications.wdl |
| 28 | + - test/input/WDL/miniwdl-local/test_inputs-join_read_classifications-local.json |
| 29 | + modified: |
| 30 | + - .dockstore.yml |
| 31 | + |
| 32 | +key-decisions: |
| 33 | + - "Call alias as join_reads — WDL disallows call name = containing workflow name (D-10)" |
| 34 | + - "No testParameterFiles in Dockstore entry — placeholder paths not CI-runnable (D-09)" |
| 35 | + - "allowNestedInputs: true — required for Terra-compatible test JSON with workflow-level input keys" |
| 36 | + |
| 37 | +patterns-established: |
| 38 | + - "Workflow wrapper with task alias avoids call-name = workflow-name collision" |
| 39 | + |
| 40 | +requirements-completed: |
| 41 | + - JRC-02 |
| 42 | + - JRC-03 |
| 43 | + - JRC-04 |
| 44 | + |
| 45 | +# Metrics |
| 46 | +duration: 2min |
| 47 | +completed: 2026-04-02 |
| 48 | +--- |
| 49 | + |
| 50 | +# Phase 7 Plan 02: join_read_classifications Workflow Wrapper Summary |
| 51 | + |
| 52 | +**Standalone workflow wrapper + placeholder test JSON + Dockstore entry for join_read_classifications — completing full task+workflow+test+registration treatment consistent with all prior phases** |
| 53 | + |
| 54 | +## Performance |
| 55 | + |
| 56 | +- **Duration:** 2 min |
| 57 | +- **Started:** 2026-04-02T21:37:02Z |
| 58 | +- **Completed:** 2026-04-02T21:38:35Z |
| 59 | +- **Tasks:** 2 |
| 60 | +- **Files modified:** 3 |
| 61 | + |
| 62 | +## Accomplishments |
| 63 | + |
| 64 | +- Created `join_read_classifications.wdl` workflow wrapper importing `tasks_metagenomics.wdl` and calling the task with alias `join_reads` (per D-10) |
| 65 | +- Added `allowNestedInputs: true` in meta block for Terra-compatible test JSON |
| 66 | +- All 4 optional `File?` inputs and required `String sample_id` passed through to task; `classifications_parquet` exposed as workflow output |
| 67 | +- `miniwdl check` exits 0 with no errors |
| 68 | +- Created placeholder test input JSON with workflow-level keys for all 5 inputs |
| 69 | +- Appended `join_read_classifications` entry to `.dockstore.yml` with `subclass: WDL`, no `testParameterFiles` |
| 70 | + |
| 71 | +## Task Commits |
| 72 | + |
| 73 | +Each task was committed atomically: |
| 74 | + |
| 75 | +1. **Task 1: Create standalone workflow wrapper** - `d05801d0` (feat) |
| 76 | +2. **Task 2: Create test input JSON and Dockstore entry** - `a812d49b` (feat) |
| 77 | + |
| 78 | +## Files Created/Modified |
| 79 | + |
| 80 | +- `pipes/WDL/workflows/join_read_classifications.wdl` - Standalone workflow wrapper (33 lines) |
| 81 | +- `test/input/WDL/miniwdl-local/test_inputs-join_read_classifications-local.json` - Placeholder test JSON (7 lines) |
| 82 | +- `.dockstore.yml` - Appended join_read_classifications entry (3 lines added) |
| 83 | + |
| 84 | +## Decisions Made |
| 85 | + |
| 86 | +- Used call alias `as join_reads` — WDL disallows a call with the same name as the enclosing workflow. This follows the established pattern (`parse_reads`, `classify_contigs`, `classify_reads`). |
| 87 | +- No `testParameterFiles` in Dockstore entry — placeholder paths are not CI-runnable (consistent with all prior phase entries per STATE.md decision log). |
| 88 | +- `allowNestedInputs: true` added to meta — required for Terra to accept the `workflow.input` key format in test JSON. |
| 89 | + |
| 90 | +## Deviations from Plan |
| 91 | + |
| 92 | +None - plan executed exactly as written. |
| 93 | + |
| 94 | +## Issues Encountered |
| 95 | + |
| 96 | +None. |
| 97 | + |
| 98 | +## User Setup Required |
| 99 | + |
| 100 | +None - no external service configuration required. |
| 101 | + |
| 102 | +## Next Phase Readiness |
| 103 | + |
| 104 | +- Phase 07 is complete — `join_read_classifications` task + workflow + test + registration fully implemented |
| 105 | +- The workflow is discoverable on Dockstore and callable as a standalone workflow on Terra/DNAnexus |
| 106 | + |
| 107 | +## Self-Check: PASSED |
| 108 | + |
| 109 | +- FOUND: pipes/WDL/workflows/join_read_classifications.wdl |
| 110 | +- FOUND: test/input/WDL/miniwdl-local/test_inputs-join_read_classifications-local.json |
| 111 | +- FOUND: join_read_classifications entry in .dockstore.yml |
| 112 | +- FOUND: commit d05801d0 |
| 113 | +- FOUND: commit a812d49b |
| 114 | + |
| 115 | +--- |
| 116 | +*Phase: 07-turn-join-read-classifications-py-script-into-a-wdl-pipeline-task-in-task-utils* |
| 117 | +*Completed: 2026-04-02* |
0 commit comments