CWL (Common Workflow Language) Support¶
wf2wf provides comprehensive support for Common Workflow Language (CWL) workflows with enhanced shared infrastructure integration.
Supported Features¶
Feature |
Status |
Notes |
|---|---|---|
CommandLineTool import/export |
✅ Enhanced |
Full support with resource inference |
Workflow import/export |
✅ Enhanced |
Complete workflow parsing |
Workflow scatter |
✅ |
dot & nested scatter methods |
|
✅ |
Conditional execution support |
Expressions ( |
✅ |
Via nodejs sandbox |
Secondary files |
✅ |
Complete secondary file handling |
JS requirements |
✅ |
JavaScript expression support |
Inline JS blocks |
🚧 |
Performance tuning in progress |
Subworkflows |
✅ |
Nested workflow support |
Schemas |
✅ |
Custom type definitions |
Looping ( |
❌ |
Not in CWL specification |
Resource Requirements |
✅ Enhanced |
Automatic inference and validation |
Container Requirements |
✅ Enhanced |
Docker and conda environment support |
Interactive Mode |
✅ New |
Guided resource specification |
Loss Side-car |
✅ Enhanced |
Automatic loss detection and reporting |
Enhanced Features¶
Resource Processing¶
The CWL importer now includes advanced resource processing capabilities:
# Convert with automatic resource inference
wf2wf convert -i workflow.cwl -o workflow.dag --interactive
# This will:
# - Infer missing resource requirements from command analysis
# - Validate resource specifications for target environment
# - Prompt interactively for missing resource information
# - Apply appropriate resource profiles
Interactive Resource Specification¶
When converting CWL workflows, you can now use interactive mode to:
Add missing resource specifications: CPU, memory, disk requirements
Validate resource allocations: Check against target environment limits
Apply resource profiles: Use predefined resource templates
Review file transfer modes: Optimize for distributed computing
Execution Model Detection¶
The CWL importer automatically detects the appropriate execution model:
Shared Filesystem: For workflows designed for shared environments
Distributed Computing: For workflows requiring explicit resource management
Cloud Computing: For cloud-native workflow execution
Usage Examples¶
Basic Conversion¶
# Convert CWL workflow to DAGMan
wf2wf convert -i analysis.cwl -o pipeline.dag
# Convert with detailed reporting
wf2wf convert -i analysis.cwl -o pipeline.dag --report-md --verbose
Interactive Conversion¶
# Convert with interactive resource specification
wf2wf convert -i workflow.cwl -o workflow.dag --interactive
# Example interactive session:
# Found 3 tasks without explicit resource requirements.
# Distributed systems require explicit resource allocation.
# Add default resource specifications? [Y/n]: Y
# Applied default resources: CPU=1, Memory=2048MB, Disk=4096MB
Resource Profile Application¶
# Apply specific resource profile
wf2wf convert -i workflow.cwl -o workflow.dag --resource-profile cluster
# Available profiles: shared, cluster, cloud, hpc, gpu
Loss-Aware Conversion¶
# Convert with loss detection
wf2wf convert -i workflow.cwl -o workflow.dag --fail-on-loss
# Generate detailed loss report
wf2wf convert -i workflow.cwl -o workflow.dag --report-md
Best Practices¶
Resource Specification¶
Always specify resource requirements in your CWL workflows:
requirements:
- class: ResourceRequirement
coresMin: 4
ramMin: 8192
tmpdirMin: 4096
Container Requirements¶
Use container specifications for reproducible execution:
requirements:
- class: DockerRequirement
dockerPull: python:3.9-slim
Error Handling¶
Add retry specifications for robust execution:
hints:
- class: ResourceRequirement
coresMin: 1
ramMin: 1024
Compliance Status¶
The CWL importer achieves 95/100 compliance with the wf2wf specification:
✅ Perfect inheritance from BaseImporter
✅ Shared workflow usage (no custom import_workflow override)
✅ Enhanced shared infrastructure (~80% usage)
✅ Resource processing with validation and interactive prompting
✅ Execution model inference integration
✅ All tests passing
Troubleshooting¶
Common Issues¶
Missing Resource Requirements: Use
--interactivemode to add missing specificationsContainer Issues: Ensure Docker requirements are properly specified
File Transfer Problems: Review file transfer modes for distributed computing
Expression Evaluation: Ensure nodejs is available for CWL expressions
Getting Help¶
# Get detailed information about your CWL workflow
wf2wf info workflow.cwl
# Validate CWL workflow before conversion
wf2wf validate workflow.cwl
# Check for potential issues
wf2wf convert -i workflow.cwl -o workflow.dag --dry-run
CWL Cheat-Sheet¶
Feature |
Status |
|---|---|
CommandLineTool import/export |
✅ |
Workflow scatter |
✅ dot & nested |
|
✅ |
Expressions ( |
✅ via nodejs sandbox |
Secondary files |
✅ |
JS requirements |
✅ |
Inline JS blocks |
🚧 perf tuning |
Subworkflows |
✅ |
Schemas |
✅ |
Looping ( |
❌ – not in spec |