Syntactic Sugar for CWL with the�POLUS Workflow Inference Compiler
Jake Fennick1,2, Nazanin Donyapour1,2, Brandon Walker1,2,
Sam G. Michael2, Nathan Hotaling1,2, Hythem Sidky1,2,*
federal contractor for
label: Molecular Dynamics
steps:
- min.yml:
- equil.yml:
- prod.yml:
label: Minimization
steps:
- steep.yml:
- cg.yml:
label: Equilibration
steps:
- nvt.yml:
- npt.yml:
label: Steepest Descent
steps:
...
NCATS’ Mission and Workflow Inference Compiler
“to catalyze the generation of innovative methods and technologies that will enhance the development, testing and implementation of diagnostics and therapeutics across a wide range of human diseases and conditions”
Workflow Inference Compiler allows scientists to abstract out implementation details and focus their domain expertise into building pipelines for next-generation therapeutics
Who we are
Jake Fennick
Senior Data Scientist
Molecular modeling, software development,
workflow development
Hythem Sidky, PhD
Senior Data Scientist
Molecular modeling, statistics, ML/DL, software engineering, & clinical data analysis
Nathan Hotaling, PhD
Senior Data Scientist
Statistics, machine learning, deep learning, biomaterials, and tissue engineering
Sam Michael
CIO, NCATS
Nazanin Donyapour, PhD
Senior Data Scientist
Brandon Walker, PhD
Senior Data Scientist
Problem: Complex workflows
Solution: POLUS Workflow Inference Compiler
steps:
- echo:
in:
message: Hello World
$ wic --yaml docs/tutorials/helloworld.yml --run_local --quiet
…
Success! Output files should be in outdir/
$ cat outdir/helloworld/step\ 1\ echo/stdout/stdout
Hello World
#!/usr/bin/env cwl-runner
# This file was autogenerated using the Workflow Inference Compiler, version 0.post0.dev190
# https://github.com/PolusAI/workflow-inference-compiler
steps:
helloworld__step__1__echo:
in:
message:
source: helloworld__step__1__echo___message
run: ../cwl_adapters/echo.cwl
out:
- stdout
cwlVersion: v1.0
class: Workflow
$namespaces:
edam: https://edamontology.org/
$schemas:
- https://raw.githubusercontent.com/edamontology/edamontology/master/EDAM_dev.owl
inputs:
helloworld__step__1__echo___message:
type: string
outputs:
helloworld__step__1__echo___stdout:
type: File
outputSource: helloworld__step__1__echo/stdout
# This file was autogenerated using the Workflow Inference Compiler, version 0.post0.dev190
# https://github.com/PolusAI/workflow-inference-compiler
helloworld__step__1__echo___message: Hello World
Explicit edge syntax
steps:
- pdb:
in:
config:
pdb_code: 1aki
output_pdb_path: '&protein.pdb'
- fix_amides:
in:
input_pdb_path: '*protein.pdb'
output_pdb_path: '&protein_fix_amides.pdb'
- fix_side_chain:
in:
input_pdb_path: '*protein_fix_amides.pdb'
output_pdb_path: '&protein_fix_side_chain.pdb'
- extract_model:
in:
config:
models: [1]
input_structure_path: '*protein_fix_side_chain.pdb'
output_structure_path: '&protein_model_1.pdb'
GraphViz DAGs automatically generated
Edge inference
steps:
- pdb:
in:
config:
pdb_code: 1aki
- fix_amides:
- fix_side_chain:
- extract_model:
in:
config:
models: [1]
output_structure_path: '&protein_model_1.pdb'
Composable reusable building blocks
steps:
- pdb:
in:
config:
pdb_code: 1aki
- fix_protein.yml: # subworkflow
- extract_model:
in:
config:
models: [1]
output_structure_path: '&protein_model_1.pdb'
steps:
- fix_amides:
- fix_side_chain:
Same DAG!
Edge inference
Label: System Setup
steps:
- pdb:
in:
config:
pdb_code: 1aki
- pdb2gmx:
in:
config:
water_type: spce
forcefield: amber99sb-ildn
- gmx_editconf:
in:
align_principal_axes: 0
box_type: cubic
distance_to_molecule: 1.2
- solvate:
- grompp:
in:
config:
mdp:
integrator: steep
- genion:
in:
config:
neutral: True
concentration: 0.05 # mol/liter
- gmx_trjconv_str:
in:
output_str_path: 'system.pdb'
Tooling support
Advanced features
Solutions Team!
Hythem
Andre
Samee
Nazanin
Jesse
Jake
Kristen
Lisa
Brandon
Sunny
Konstantin
Rachel
Aaron
Simo
Swazoo
Xi
Josue
Vlad
Nick
Najib
Nina
Hamdah
Ben
Camilo
Kevin
Nikita
Steve