So I am new to CWL and I am trying to implement my very first workflow to call some python scripts.
So far I’ve done some tests with basic python scripts and got them working, but when I want to use my real python scripts I encounter some issues regarding the import of certain python modules, i.e: “ModuleNotFoundError”. The modules are installed on my system and I can import them outside the CWL environment, so I guess I get the error because the module does not exist in the CWL container? How could I solve this issue?
Is there a way to install all the necessary modules at the begining of the workflow? The python modules that I need to import are used by several python scripts that will be called at different steps of the workflow.
Here are my CWL codes: the main one that calls the others for each step (so far I have just one step), and the one that calls the python script.
Thanks in advance!
#!/usr/bin/env cwl-runner cwlVersion: v1.0 class: Workflow inputs: zipFile: string outputs: b1: type: Directory outputSource: unzip_files/b1 t1: type: Directory outputSource: unzip_files/t1 t2_am: type: Directory outputSource: unzip_files/t2_am t2_ph: type: Directory outputSource: unzip_files/t2_ph segmentation: type: Directory outputSource: unzip_files/segmentation steps: unzip_files: run: unzip.cwl in: zipFileIn: zipFile out: [b1, t1, t2_am, t2_ph, segmentation]
cwlVersion: v1.0 class: CommandLineTool baseCommand: python inputs: outPutDir: type: string default: $(runtime.outdir) inputBinding: position: 3 zipFileIn: type: string inputBinding: position: 2 script: type: File inputBinding: position: 1 default: class: File location: ./QSM_pipeline/01_unzip.py outputs: b1: type: Directory outputBinding: glob: "01-b1" t1: type: Directory outputBinding: glob: 02-t1" t2_am: type: Directory outputBinding: glob: "03-t2" t2_ph: type: Directory outputBinding: glob: "04-t2" segmentation: type: Directory outputBinding: glob: "05-segmentation"