Updating readme and reorganization
[arvados-tutorial.git] / WGS-processing / cwl / helper / getfastq.cwl
1 $namespaces:
2   arv: "http://arvados.org/cwl#"
3   cwltool: "http://commonwl.org/cwltool#"
4 class: ExpressionTool
5 cwlVersion: v1.1
6 label: Create array of gvcfs to process
7 requirements:
8   InlineJavascriptRequirement: {}
9 inputs:
10   fastqdir:
11     type: Directory
12     label: Input directory of fastqs
13     loadListing: 'shallow_listing' 
14 outputs:
15   fastq1: 
16     type: File[]
17   fastq2:
18     type: File[]
19   sample:
20     type: string[]
21 expression: |
22   ${function compare(a, b) {
23     var baseA = a.basename;
24     var baseB = b.basename;
25
26     var comparison = 0;
27     if (baseA > baseB) {
28     comparison = 1;
29     } else if (baseA < baseB) {
30     comparison = -1;
31     }
32     return comparison;
33     }
34
35     var fastq1 = [];
36     var fastq2 = [];
37     for (var i = 0; i < inputs.fastqdir.listing.length; i++) {
38       var name = inputs.fastqdir.listing[i];
39       if (name.basename.indexOf('_1.fastq.gz') != -1 ) {
40         fastq1.push(name);
41       }
42       if (name.basename.indexOf('_2.fastq.gz') != -1 ) {
43         fastq2.push(name);
44       }
45     }
46   
47     fastq1 = fastq1.sort(compare)
48     fastq2 = fastq2.sort(compare)
49
50     var sample = [];
51
52     for (var i = 0; i < fastq1.length; i++) {
53       var name = fastq1[i].basename;
54       var samplename = name.replace(/_1.fastq.gz/,'');
55       sample.push(samplename);
56       }
57
58  
59     return {"fastq1": fastq1, "fastq2": fastq2, "sample": sample};
60   }