Cannot make job: :1:1: Expression evaluation error:
See original GitHub issueExpected Behavior
This was a working WF at version 1.0.20170622090721, should execute to completion. I cleaned out ~/.local
then pip install --user cwltool
Actual Behavior
Fails on first step, see below.
Workflow Code
#!/usr/bin/env cwl-runner
class: Workflow
cwlVersion: v1.0
requirements:
- $import: tools/trimmomatic-types.yml
- $import: tools/envvar-global.yml
- class: InlineJavascriptRequirement
expressionLib:
- var rename_trim_file = function() {
if ( self == null ) {
return null;
} else {
var xx = self.basename.split('.');
var id = xx.indexOf('fastq');
xx.splice(id, 1);
return xx.join('.');
}
};
- class: ScatterFeatureRequirement
- class: StepInputExpressionRequirement
inputs:
read1: File
read2: File
outputs:
# trim with trimmomatic and rename
trim-logs:
type: File
outputSource: trim/output_log
rename_reads1_trimmed_file:
type: File
outputSource: rename_reads1_trimmed/renamed
rename_reads2_trimmed_paired_file:
type: File
outputSource: trim/reads2_trimmed_unpaired
reads1_trimmed_unpaired_file:
type: File
outputSource: trim/reads1_trimmed_unpaired
reads2_trimmed_unpaired_file:
type: File
outputSource: trim/reads2_trimmed_unpaired
# align to mouse with bowtie2
mouse-aligned:
type: File
outputSource: align-to-mouse/aligned-file
# align to human with bowtie2
human-aligned:
type: File
outputSource: align-to-human/aligned-file
# convert
human-sorted:
type: File
streamable: true
outputSource: convert-human/output
# sort and compress
human-compress:
type: File
outputSource: sort-human/sorted
# Index human bam
human-index:
type: File
outputSource: index-human/index
# compare genomes with xenomapper
primary_specific:
type: File?
outputSource: xenomapping/primary_specific
secondary_specific:
type: File?
outputSource: xenomapping/secondary_specific
primary_multi:
type: File?
outputSource: xenomapping/primary_multi
secondary_multi:
type: File?
outputSource: xenomapping/secondary_multi
unassigned:
type: File?
outputSource: xenomapping/unassigned
unresolved:
type: File?
outputSource: xenomapping/unresolved
# pileip
human-mpileup:
type: File
outputSource: mpileup-human/output
# varscan output
varscan:
type: File
outputSource: varscan-human/output
# platypus output
platypus-vcf:
type: File
outputSource: platypus/output
# gridss
gridss:
type: File
outputSource: gridss-human/output
steps:
#
# trim with trimmomatic
#
trim:
run: tools/trimmomatic.cwl
in:
reads1:
source: read1
valueFrom: >
${
self.format = "http://edamontology.org/format_1930";
return self;
}
reads2:
source: read2
valueFrom: >
${
self.format = "http://edamontology.org/format_1930";
return self;
}
end_mode:
default: PE
nthreads:
valueFrom: ${ return 8; }
illuminaClip:
default:
adapters:
class: File
location: "/stornext/System/data/apps/trimmomatic/trimmomatic-0.36/adapters/TruSeq3-PE.fa"
seedMismatches: 1
palindromeClipThreshold: 20
simpleClipThreshold: 20
minAdapterLength: 4
keepBothReads: "true"
out: [output_log, reads1_trimmed, reads1_trimmed_unpaired, reads2_trimmed_paired, reads2_trimmed_unpaired]
#
# rename trimmed files by removing redundant '.fastq' from the filename
#
rename_reads1_trimmed:
run: tools/rename-file.cwl
in:
infile: trim/reads1_trimmed
outfile:
source: trim/reads1_trimmed
valueFrom: >
${
return rename_trim_file();
}
out: [renamed]
rename_reads2_trimmed_paired:
run: tools/rename-file.cwl
in:
infile: trim/reads2_trimmed_paired
outfile:
source: trim/reads2_trimmed_paired
valueFrom: >
${
return rename_trim_file();
}
out: [renamed]
#
# align to mouse reference with bowtie2
#
align-to-mouse:
run: tools/bowtie2.cwl
in:
samout:
source: rename_reads1_trimmed/renamed
valueFrom: >
${
return self.nameroot + '.mouse.sam'
}
threads:
valueFrom: ${ return 8; }
one:
source: trim/reads1_trimmed
valueFrom: >
${
return [self];
}
two:
source: rename_reads2_trimmed_paired/renamed
valueFrom: >
${
if ( self == null ) {
return null;
} else {
return [self];
}
}
unpaired:
source: trim/reads1_trimmed_unpaired
valueFrom: >
${
if ( self == null ) {
return null;
} else {
return [self];
}
}
bt2-idx:
default: /stornext/HPCScratch/PapenfussLab/reference_genomes/bowtie2/GRCm38
local:
default: true
reorder:
default: true
out: [aligned-file]
#
# align to human reference with bowtie2
#
align-to-human:
run: tools/bowtie2.cwl
in:
samout:
source: rename_reads1_trimmed/renamed
valueFrom: >
${
return self.nameroot + '.human.sam'
}
threads:
valueFrom: ${ return 8; }
one:
source: rename_reads1_trimmed/renamed
valueFrom: >
${
return [self];
}
two:
source: rename_reads2_trimmed_paired/renamed
valueFrom: >
${
if ( self == null ) {
return null;
} else {
return [self];
}
}
unpaired:
source: trim/reads1_trimmed_unpaired
valueFrom: >
${
if ( self == null ) {
return null;
} else {
return [self];
}
}
bt2-idx:
default: /wehisan/bioinf/bioinf-data/Papenfuss_lab/projects/reference_genomes/human_new/no_alt/hg38_no_alt.fa
local:
default: true
reorder:
default: true
out: [aligned-file]
#
# convert human
#
convert-human:
run: tools/samtools-view.cwl
in:
input:
align-to-human/aligned-file
output_name:
source: rename_reads1_trimmed/renamed
valueFrom: >
${
return self.nameroot + '.human.bam'
}
threads:
valueFrom: ${ return 8; }
out: [output]
#
# sort and compress human
#
sort-human:
run: tools/samtools-sort.cwl
in:
input:
source: convert-human/output
output_name:
source: rename_reads1_trimmed/renamed
valueFrom: >
${
return self.nameroot + '.sorted.human.bam'
}
threads:
valueFrom: ${ return 8; }
out: [sorted]
#
# index human bam
#
index-human:
run: tools/samtools-index.cwl
in:
input:
source: sort-human/sorted
out: [index]
#
# human pileup file
#
mpileup-human:
run: tools/samtools-mpileup.cwl
in:
bamFiles:
source: sort-human/sorted
valueFrom: >
${
if ( self == null ) {
return null;
} else {
return [self];
}
}
output_fn:
source: sort-human/sorted
valueFrom: >
${
return self.nameroot + '.pileup'
}
out: [output]
#
# varscan human
#
varscan-human:
run: tools/varscan-mpileup2snp.cwl
in:
input:
source: mpileup-human/output
output-vcf:
valueFrom: >
${
return true;
}
out: [output]
#
# GRIDSS that human
#
gridss-human:
run: tools/gridss-callvariants.cwl
in:
INPUT:
source: sort-human/sorted
valueFrom: >
${
if ( self == null ) {
return null;
} else {
return [self];
}
}
REFERENCE_SEQUENCE:
default: /wehisan/bioinf/bioinf-data/Papenfuss_lab/projects/reference_genomes/human_new/no_alt/hg38_no_alt.fa
OUTPUT:
source: sort-human/sorted
valueFrom: >
${
return self.nameroot + '.gridss.vcf'
}
ASSEMBLY:
source: sort-human/sorted
valueFrom: >
${
return self.nameroot + '.gridss.bam'
}
out: [output]
#
# xenomapper
#
xenomapping:
run: tools/xenomapper.cwl
in:
primary_sam:
source: align-to-human/aligned-file
secondary_sam:
source: align-to-mouse/aligned-file
primary_specific_fn:
source: rename_reads1_trimmed/renamed
valueFrom: >
${
return self.nameroot + '.human_specific.sam'
}
secondary_specific_fn:
source: rename_reads1_trimmed/renamed
valueFrom: >
${
return self.nameroot + '.mouse_specific.sam'
}
primary_multi_fn:
source: rename_reads1_trimmed/renamed
valueFrom: >
${
return self.nameroot + '.human_multi.sam'
}
secondary_multi_fn:
source: rename_reads1_trimmed/renamed
valueFrom: >
${
return self.nameroot + '.mouse_multi.sam'
}
unassigned_fn:
source: rename_reads1_trimmed/renamed
valueFrom: >
${
return self.nameroot + '.unassigned.sam'
}
unresolved_fn:
source: rename_reads1_trimmed/renamed
valueFrom: >
${
return self.nameroot + '.unresolved.sam'
}
out: [primary_specific, secondary_specific, primary_multi, secondary_multi, unassigned, unresolved]
#
# Gather human bam and index into one dependency
#
gather:
run:
class: ExpressionTool
inputs:
bamFile:
type: File
bamIndex:
type: File
outputs:
combined:
type: File
expression: >
${
var ret = inputs.bamFile;
ret["secondaryFiles"] = [
inputs.bamIndex
];
return {"combined" : ret};
}
in:
bamFile:
source: sort-human/sorted
bamIndex:
source: index-human/index
out: [combined]
#
# Call with platypus
#
platypus:
run: tools/platypus.cwl
in:
bamFiles:
source: gather/combined
valueFrom: >
${
if ( self == null ) {
return null;
} else {
return [self];
}
}
refFile:
default: /wehisan/bioinf/bioinf-data/Papenfuss_lab/projects/reference_genomes/human_new/no_alt/hg38_no_alt.fa
outputFileName:
source: sort-human/sorted
valueFrom: >
${
return self.nameroot + '.platypus.vcf'
}
verbosity:
valueFrom: >
${
return 0;
}
out: [output]
Full Traceback
$ cwltool --debug ../src/pdx-pl.cwl --read1 data/S1_R1.fastq.gz --read2 data/S1_R2.fastq.gz
/home/thomas.e/.local/bin/cwltool 1.0.20170803160545
Resolved '../src/pdx-pl.cwl' to 'file:///stornext/Home/data/allstaff/t/thomas.e/dev/pdx-genome/src/pdx-pl.cwl'
No handlers could be found for logger "rdflib.term"
Workflow checker warning:
../src/pdx-pl.cwl:140:39: Source 'reads1_trimmed_unpaired' of type ["null", "File"] is partially incompatible
../src/pdx-pl.cwl:40:5: with sink 'reads1_trimmed_unpaired_file' of type "File"
../src/pdx-pl.cwl:140:87: Source 'reads2_trimmed_unpaired' of type ["null", "File"] is partially incompatible
../src/pdx-pl.cwl:43:5: with sink 'reads2_trimmed_unpaired_file' of type "File"
../src/pdx-pl.cwl:140:87: Source 'reads2_trimmed_unpaired' of type ["null", "File"] is partially incompatible
../src/pdx-pl.cwl:37:5: with sink 'rename_reads2_trimmed_paired_file' of type "File"
Parsed job order from command line: {
"read1": {
"class": "File",
"location": "file:///stornext/Home/data/allstaff/t/thomas.e/dev/pdx-genome/test/data/S1_R1.fastq.gz"
},
"read2": {
"class": "File",
"location": "file:///stornext/Home/data/allstaff/t/thomas.e/dev/pdx-genome/test/data/S1_R2.fastq.gz"
},
"id": "../src/pdx-pl.cwl"
}
[workflow pdx-pl.cwl] initialized from file:///stornext/Home/data/allstaff/t/thomas.e/dev/pdx-genome/src/pdx-pl.cwl
[workflow pdx-pl.cwl] start
[workflow pdx-pl.cwl] job step file:///stornext/Home/data/allstaff/t/thomas.e/dev/pdx-genome/src/pdx-pl.cwl#rename_reads2_trimmed_paired not ready
[workflow pdx-pl.cwl] job step file:///stornext/Home/data/allstaff/t/thomas.e/dev/pdx-genome/src/pdx-pl.cwl#platypus not ready
[workflow pdx-pl.cwl] job step file:///stornext/Home/data/allstaff/t/thomas.e/dev/pdx-genome/src/pdx-pl.cwl#convert-human not ready
[workflow pdx-pl.cwl] job step file:///stornext/Home/data/allstaff/t/thomas.e/dev/pdx-genome/src/pdx-pl.cwl#align-to-mouse not ready
[workflow pdx-pl.cwl] job step file:///stornext/Home/data/allstaff/t/thomas.e/dev/pdx-genome/src/pdx-pl.cwl#gather not ready
[workflow pdx-pl.cwl] job step file:///stornext/Home/data/allstaff/t/thomas.e/dev/pdx-genome/src/pdx-pl.cwl#gridss-human not ready
[workflow pdx-pl.cwl] job step file:///stornext/Home/data/allstaff/t/thomas.e/dev/pdx-genome/src/pdx-pl.cwl#varscan-human not ready
[workflow pdx-pl.cwl] job step file:///stornext/Home/data/allstaff/t/thomas.e/dev/pdx-genome/src/pdx-pl.cwl#align-to-human not ready
[workflow pdx-pl.cwl] job step file:///stornext/Home/data/allstaff/t/thomas.e/dev/pdx-genome/src/pdx-pl.cwl#index-human not ready
[workflow pdx-pl.cwl] job step file:///stornext/Home/data/allstaff/t/thomas.e/dev/pdx-genome/src/pdx-pl.cwl#sort-human not ready
[workflow pdx-pl.cwl] job step file:///stornext/Home/data/allstaff/t/thomas.e/dev/pdx-genome/src/pdx-pl.cwl#xenomapping not ready
[workflow pdx-pl.cwl] job step file:///stornext/Home/data/allstaff/t/thomas.e/dev/pdx-genome/src/pdx-pl.cwl#mpileup-human not ready
[workflow pdx-pl.cwl] job step file:///stornext/Home/data/allstaff/t/thomas.e/dev/pdx-genome/src/pdx-pl.cwl#rename_reads1_trimmed not ready
[workflow pdx-pl.cwl] starting step trim
[job step trim] job input {
"file:///stornext/Home/data/allstaff/t/thomas.e/dev/pdx-genome/src/pdx-pl.cwl#trim/illuminaClip": {
"adapters": {
"class": "File",
"location": "file:///stornext/System/data/apps/trimmomatic/trimmomatic-0.36/adapters/TruSeq3-PE.fa"
},
"seedMismatches": 1,
"palindromeClipThreshold": 20,
"simpleClipThreshold": 20,
"minAdapterLength": 4,
"keepBothReads": "true"
},
"file:///stornext/Home/data/allstaff/t/thomas.e/dev/pdx-genome/src/pdx-pl.cwl#trim/reads1": {
"basename": "S1_R1.fastq.gz",
"nameroot": "S1_R1.fastq",
"nameext": ".gz",
"location": "file:///stornext/Home/data/allstaff/t/thomas.e/dev/pdx-genome/test/data/S1_R1.fastq.gz",
"class": "File",
"size": 2678369
},
"file:///stornext/Home/data/allstaff/t/thomas.e/dev/pdx-genome/src/pdx-pl.cwl#trim/end_mode": "PE",
"file:///stornext/Home/data/allstaff/t/thomas.e/dev/pdx-genome/src/pdx-pl.cwl#trim/nthreads": 1,
"file:///stornext/Home/data/allstaff/t/thomas.e/dev/pdx-genome/src/pdx-pl.cwl#trim/reads2": {
"basename": "S1_R2.fastq.gz",
"nameroot": "S1_R2.fastq",
"nameext": ".gz",
"location": "file:///stornext/Home/data/allstaff/t/thomas.e/dev/pdx-genome/test/data/S1_R2.fastq.gz",
"class": "File",
"size": 2746137
}
}
[job step trim] evaluated job input to {
"file:///stornext/Home/data/allstaff/t/thomas.e/dev/pdx-genome/src/pdx-pl.cwl#trim/illuminaClip": {
"adapters": {
"class": "File",
"location": "file:///stornext/System/data/apps/trimmomatic/trimmomatic-0.36/adapters/TruSeq3-PE.fa"
},
"seedMismatches": 1,
"palindromeClipThreshold": 20,
"simpleClipThreshold": 20,
"minAdapterLength": 4,
"keepBothReads": "true"
},
"file:///stornext/Home/data/allstaff/t/thomas.e/dev/pdx-genome/src/pdx-pl.cwl#trim/reads1": {
"format": "http://edamontology.org/format_1930",
"basename": "S1_R1.fastq.gz",
"nameroot": "S1_R1.fastq",
"nameext": ".gz",
"location": "file:///stornext/Home/data/allstaff/t/thomas.e/dev/pdx-genome/test/data/S1_R1.fastq.gz",
"class": "File",
"size": 2678369
},
"file:///stornext/Home/data/allstaff/t/thomas.e/dev/pdx-genome/src/pdx-pl.cwl#trim/end_mode": "PE",
"file:///stornext/Home/data/allstaff/t/thomas.e/dev/pdx-genome/src/pdx-pl.cwl#trim/nthreads": 8,
"file:///stornext/Home/data/allstaff/t/thomas.e/dev/pdx-genome/src/pdx-pl.cwl#trim/reads2": {
"format": "http://edamontology.org/format_1930",
"basename": "S1_R2.fastq.gz",
"nameroot": "S1_R2.fastq",
"nameext": ".gz",
"location": "file:///stornext/Home/data/allstaff/t/thomas.e/dev/pdx-genome/test/data/S1_R2.fastq.gz",
"class": "File",
"size": 2746137
}
}
[step trim] start
[job trim] initializing from file:///stornext/Home/data/allstaff/t/thomas.e/dev/pdx-genome/src/tools/trimmomatic.cwl as part of step trim
[job trim] {
"nthreads": 8,
"illuminaClip": {
"adapters": {
"class": "File",
"location": "file:///stornext/System/data/apps/trimmomatic/trimmomatic-0.36/adapters/TruSeq3-PE.fa"
},
"seedMismatches": 1,
"palindromeClipThreshold": 20,
"simpleClipThreshold": 20,
"minAdapterLength": 4,
"keepBothReads": "true"
},
"reads2": {
"format": "http://edamontology.org/format_1930",
"basename": "S1_R2.fastq.gz",
"nameroot": "S1_R2.fastq",
"nameext": ".gz",
"location": "file:///stornext/Home/data/allstaff/t/thomas.e/dev/pdx-genome/test/data/S1_R2.fastq.gz",
"class": "File",
"size": 2746137
},
"reads1": {
"format": "http://edamontology.org/format_1930",
"basename": "S1_R1.fastq.gz",
"nameroot": "S1_R1.fastq",
"nameext": ".gz",
"location": "file:///stornext/Home/data/allstaff/t/thomas.e/dev/pdx-genome/test/data/S1_R1.fastq.gz",
"class": "File",
"size": 2678369
},
"end_mode": "PE"
}
[job trim] path mappings is {
"file:///stornext/System/data/apps/trimmomatic/trimmomatic-0.36/adapters/TruSeq3-PE.fa": [
"/stornext/System/data/apps/trimmomatic/trimmomatic-0.36/adapters/TruSeq3-PE.fa",
"/stornext/HPCScratch/home/thomas.e/tmp/tmpuZP2X2/stg1c25dd07-8d1c-444a-bf77-30bc58e43107/TruSeq3-PE.fa",
"File",
true
],
"file:///stornext/Home/data/allstaff/t/thomas.e/dev/pdx-genome/test/data/S1_R2.fastq.gz": [
"/stornext/Home/data/allstaff/t/thomas.e/dev/pdx-genome/test/data/S1_R2.fastq.gz",
"/stornext/HPCScratch/home/thomas.e/tmp/tmpuZP2X2/stg1bb23088-b117-4be7-853e-2f65d472c0dd/S1_R2.fastq.gz",
"File",
true
],
"file:///stornext/Home/data/allstaff/t/thomas.e/dev/pdx-genome/test/data/S1_R1.fastq.gz": [
"/stornext/Home/data/allstaff/t/thomas.e/dev/pdx-genome/test/data/S1_R1.fastq.gz",
"/stornext/HPCScratch/home/thomas.e/tmp/tmpuZP2X2/stge58b1ea3-9f2b-4644-97a9-5f2706585424/S1_R1.fastq.gz",
"File",
true
]
}
[job trim] command line bindings is [
{
"position": [
-1000000,
0
],
"datum": "java"
},
{
"position": [
-1000000,
1
],
"datum": "org.usadellab.trimmomatic.Trimmomatic"
},
{
"position": [
1,
"java_opts"
],
"shellQuote": false,
"datum": null
},
{
"position": [
3,
"end_mode"
],
"datum": "PE"
},
{
"valueFrom": "$(inputs.reads1.nameroot).log",
"prefix": "-trimlog",
"position": [
4,
0
]
},
{
"position": [
4,
"nthreads"
],
"prefix": "-threads",
"datum": 8
},
{
"prefix": "-phred",
"separate": false,
"position": [
4,
"phred"
],
"datum": "64"
},
{
"position": [
5,
"reads1"
],
"datum": {
"format": "http://edamontology.org/format_1930",
"basename": "S1_R1.fastq.gz",
"nameroot": "S1_R1.fastq",
"nameext": ".gz",
"location": "file:///stornext/Home/data/allstaff/t/thomas.e/dev/pdx-genome/test/data/S1_R1.fastq.gz",
"path": "/stornext/HPCScratch/home/thomas.e/tmp/tmpuZP2X2/stge58b1ea3-9f2b-4644-97a9-5f2706585424/S1_R1.fastq.gz",
"dirname": "/stornext/HPCScratch/home/thomas.e/tmp/tmpuZP2X2/stge58b1ea3-9f2b-4644-97a9-5f2706585424",
"class": "File",
"size": 2678369
}
},
{
"position": [
6,
"reads2"
],
"datum": {
"format": "http://edamontology.org/format_1930",
"basename": "S1_R2.fastq.gz",
"nameroot": "S1_R2.fastq",
"nameext": ".gz",
"location": "file:///stornext/Home/data/allstaff/t/thomas.e/dev/pdx-genome/test/data/S1_R2.fastq.gz",
"path": "/stornext/HPCScratch/home/thomas.e/tmp/tmpuZP2X2/stg1bb23088-b117-4be7-853e-2f65d472c0dd/S1_R2.fastq.gz",
"dirname": "/stornext/HPCScratch/home/thomas.e/tmp/tmpuZP2X2/stg1bb23088-b117-4be7-853e-2f65d472c0dd",
"class": "File",
"size": 2746137
}
},
{
"valueFrom": "$(inputs.reads1.nameroot).trimmed.fastq",
"position": [
7,
1
]
},
{
"valueFrom": "${\n if (inputs.end_mode == \"PE\" && inputs.reads1) {\n return inputs.reads1.nameroot + '.trimmed.unpaired.fastq';\n } else {\n return null;\n }\n}\n",
"position": [
8,
2
]
},
{
"valueFrom": "${\n if (inputs.end_mode == \"PE\" && inputs.reads2) {\n return inputs.reads2.nameroot + '.trimmed.fastq';\n } else {\n return null;\n }\n}\n",
"position": [
9,
3
]
},
{
"valueFrom": "${\n if (inputs.end_mode == \"PE\" && inputs.reads2) {\n return inputs.reads2.nameroot + '.trimmed.unpaired.fastq';\n } else {\n return null;\n }\n}\n",
"position": [
10,
4
]
},
{
"valueFrom": "ILLUMINACLIP:$(inputs.illuminaClip.adapters.path):$(self.seedMismatches):$(self.palindromeClipThreshold):$(self.simpleClipThreshold):$(self.minAdapterLength):$(self.keepBothReads)\n",
"position": [
11,
"illuminaClip"
],
"datum": {
"adapters": {
"class": "File",
"location": "file:///stornext/System/data/apps/trimmomatic/trimmomatic-0.36/adapters/TruSeq3-PE.fa",
"basename": "TruSeq3-PE.fa",
"nameroot": "TruSeq3-PE",
"nameext": ".fa",
"path": "/stornext/HPCScratch/home/thomas.e/tmp/tmpuZP2X2/stg1c25dd07-8d1c-444a-bf77-30bc58e43107/TruSeq3-PE.fa",
"dirname": "/stornext/HPCScratch/home/thomas.e/tmp/tmpuZP2X2/stg1c25dd07-8d1c-444a-bf77-30bc58e43107"
},
"seedMismatches": 1,
"palindromeClipThreshold": 20,
"simpleClipThreshold": 20,
"minAdapterLength": 4,
"keepBothReads": "true"
}
},
{
"position": [
12,
"tophred33"
],
"prefix": "TOPHRED33",
"separate": false,
"datum": null
},
{
"position": [
12,
"tophred64"
],
"prefix": "TOPHRED64",
"separate": false,
"datum": null
},
{
"position": [
13,
"crop"
],
"prefix": "CROP:",
"separate": false,
"datum": null
},
{
"position": [
13,
"headcrop"
],
"prefix": "HEADCROP:",
"separate": false,
"datum": null
},
{
"position": [
14,
"leading"
],
"prefix": "LEADING:",
"separate": false,
"datum": null
},
{
"position": [
14,
"trailing"
],
"prefix": "TRAILING:",
"separate": false,
"datum": null
},
{
"position": [
15,
"maxinfo"
],
"valueFrom": "MAXINFO:$(self.targetLength):$(strictness)\n",
"datum": null
},
{
"position": [
15,
"slidingwindow"
],
"valueFrom": "'SLIDINGWINDOW:'$(self.windowSize)':'$(self.requiredQuality)\n",
"datum": null
},
{
"position": [
100,
"minlen"
],
"prefix": "MINLEN:",
"separate": false,
"datum": null
},
{
"position": [
101,
"avgqual"
],
"prefix": "AVGQUAL:",
"separate": false,
"datum": null
}
]
Exception on step 'trim'
[step trim] Cannot make job: :1:1: Expression evaluation error:
:1:1: self is a NoneType, cannot index on string 'targetLength'
Traceback (most recent call last):
File "/home/thomas.e/.local/lib/python2.7/site-packages/cwltool/workflow.py", line 480, in job
for newjob in step.iterable:
File "/home/thomas.e/.local/lib/python2.7/site-packages/cwltool/workflow.py", line 427, in try_make_job
for j in jobs:
File "/home/thomas.e/.local/lib/python2.7/site-packages/cwltool/workflow.py", line 263, in job
for j in self.step.job(joborder, output_callback, **kwargs):
File "/home/thomas.e/.local/lib/python2.7/site-packages/cwltool/workflow.py", line 806, in job
**kwargs):
File "/home/thomas.e/.local/lib/python2.7/site-packages/cwltool/draft2tool.py", line 478, in job
arg = builder.generate_arg(b)
File "/home/thomas.e/.local/lib/python2.7/site-packages/cwltool/builder.py", line 199, in generate_arg
value = self.do_eval(binding["valueFrom"], context=value)
File "/home/thomas.e/.local/lib/python2.7/site-packages/schema_salad/sourceline.py", line 152, in __exit__
raise self.makeError(six.text_type(exc_value))
WorkflowException: :1:1: Expression evaluation error:
:1:1: self is a NoneType, cannot index on string 'targetLength'
[workflow pdx-pl.cwl] completed permanentFail
Removing intermediate output directory /home/thomas.e/tmp/tmp9QQs3v
{
"secondary_specific": null,
"secondary_multi": null,
"mouse-aligned": null,
"human-aligned": null,
"human-compress": null,
"primary_specific": null,
"unassigned": null,
"primary_multi": null,
"varscan": null,
"human-index": null,
"rename_reads1_trimmed_file": null,
"unresolved": null,
"trim-logs": null,
"reads1_trimmed_unpaired_file": null,
"reads2_trimmed_unpaired_file": null,
"human-mpileup": null,
"gridss": null,
"rename_reads2_trimmed_paired_file": null,
"platypus-vcf": null,
"human-sorted": null
}
Final process status is permanentFail
Your Environment
- cwltool version:
Check using
cwltool --version
$ cwltool --version
/home/thomas.e/.local/bin/cwltool 1.0.20170803160545
Issue Analytics
- State:
- Created 6 years ago
- Comments:12 (8 by maintainers)
Top Results From Across the Web
While debugging Java, 'Cannot evaluate because of ... - GitHub
While debugging Java, 'Cannot evaluate because of compilation error(s): Evaluations must contain either an expression or a block of well-formed statements' ...
Read more >Expression evaluation error at function a!formLayout
Hi team,. i am refering appian application tutorial. i have interface 1 and interface 2, i wanna reuse interface 2 into into interface...
Read more >"Cannot evaluate expression because the code of the current ...
I get this error "Cannot evaluate expression because the code of the current method is optimized". Even a line like: int i =...
Read more >Azure Data Factory: Job failed due to reason Expression ...
I am attempting to use a pipeline parameter in a ForEach activity, however I am receiving a "DF-Executor-ParseError" error with no details:
Read more >Expression Evaluation - GeeksforGeeks
Arithmetic Expressions can be written in one of three forms: Infix Notation: Operators are written between the operands they operate on, e.g. 3 ......
Read more >Top Related Medium Post
No results found
Top Related StackOverflow Question
No results found
Troubleshoot Live Code
Lightrun enables developers to add logs, metrics and snapshots to live code - no restarts or redeploys required.
Start FreeTop Related Reddit Thread
No results found
Top Related Hackernoon Post
No results found
Top Related Tweet
No results found
Top Related Dev.to Post
No results found
Top Related Hashnode Post
No results found
Top GitHub Comments
@mr-c Ok, thanks for fixing this. I will integrate this into my WF soon.
Turns out
cwltool
was not fully following the spec, now it is. See https://github.com/common-workflow-language/workflows/pull/139 for the sorts of changes you’ll need