question-mark
Stuck on an issue?

Lightrun Answers was designed to reduce the constant googling that comes with debugging 3rd party libraries. It collects links to all the places you might be looking at while hunting down a tough bug.

And, if you’re still stuck at the end, we’re happy to hop on a call to see how we can help out.

Cannot make job: :1:1: Expression evaluation error:

See original GitHub issue

Expected 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:closed
  • Created 6 years ago
  • Comments:12 (8 by maintainers)

github_iconTop GitHub Comments

1reaction
evan-wehicommented, Aug 10, 2017

@mr-c Ok, thanks for fixing this. I will integrate this into my WF soon.

0reactions
mr-ccommented, Aug 9, 2017

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

Read more comments on GitHub >

github_iconTop 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 >

github_iconTop Related Medium Post

No results found

github_iconTop Related StackOverflow Question

No results found

github_iconTroubleshoot Live Code

Lightrun enables developers to add logs, metrics and snapshots to live code - no restarts or redeploys required.
Start Free

github_iconTop Related Reddit Thread

No results found

github_iconTop Related Hackernoon Post

No results found

github_iconTop Related Tweet

No results found

github_iconTop Related Dev.to Post

No results found

github_iconTop Related Hashnode Post

No results found