In the code below, once the “protonate” step is complete, then both “depositProtonated” & “predictChemShift” steps have the necessary input to run their CWL actors. I am passing this scatterworkflow several thousand input and instead of calling both “depositProtonated” & “predictChemShift”, it will do all the several thousand “depositProtonated” before calling “predictChemShift”.
How do I set up this workflow so that it will run both “depositProtonated” & “predictChemShift” simultaneously?
cwlVersion: v1.0
class: Workflow
requirements:
- class: ScatterFeatureRequirement
- class: MultipleInputFeatureRequirement
inputs:
database_file: File
cfg_file: File
genome_id: string[]
pH_value: float?
temp: float?
cs_predictor: string
task_insertCS: string
outputFormat: string
shift_predict_script: File
pdb_file: File[]
depo_task: string
protonate_method: File
reduce_dict: File
outputs: []
steps:
protonate:
run: addHydrogen_reduce.cwl
scatter: [pdbFile]
scatterMethod: dotproduct
in:
pdbFile: pdb_file
protonateMethod: protonate_method
reduceDict: reduce_dict
out:
- pdbH_File
depositProtonated:
run: depoAFH.cwl
scatter: [AFH_file, genomeID]
scatterMethod: dotproduct
in:
AFH_file: protonate/pdbH_File
databaseFile: database_file
depoTask: depo_task
cfgFile: cfg_file
genomeID: genome_id
out: []
predictChemShift:
run: shiftx2Predict.cwl
scatter: [protonated_pdb]
scatterMethod: dotproduct
in:
protonated_pdb: protonate/pdbH_File
pH: pH_value
temperature: temp
format: outputFormat
shiftPredict_script: shift_predict_script
out:
- CSFile
populateDatabase:
run: populate_afDatabase.cwl
scatter: [AFH_file, genomeID, chemicalShifts]
scatterMethod: dotproduct
in:
AFH_file: protonate/pdbH_File
pyInsertCS: database_file
pH: pH_value
temperature: temp
csPredictor: cs_predictor
chemicalShifts: predictChemShift/CSFile
genomeID: genome_id
cfgFile: cfg_file
taskInsertCS: task_insertCS
out: []