convert_app: Convert App or a CWL JSON file to Tool or Flow object

Description Usage Arguments Details Value appType Examples

View source: R/class-app.R

Description

Convert App or a CWL JSON file to Tool or Flow object

Usage

1
2
3

Arguments

from

an App object or a CWL JSON

x

a App object

Details

This function import CWL JSON file, based on its class: CommandLineTool or Worklfow to relevant object in R, Tool object or Flow object.

Value

Tool or Flow object depends on CWL type.

appType

this function return class of a App object.

Examples

1
2
3
4
5
6
tool.in <- system.file("extdata/app", "tool_star.json", package = "sevenbridges")
flow.in <- system.file("extdata/app", "flow_star.json", package = "sevenbridges")
# convert to Tool object
convert_app(tool.in)
# convert to Flow object
convert_app(flow.in)

Example output

sbg:validationErrors: []
sbg:sbgMaintained: no
sbg:latestRevision: 4
sbg:job:
  allocatedResources:
    mem: 60000
    cpu: 15
  inputs:
    alignWindowsPerReadNmax: 0
    outSAMheaderPG: outSAMheaderPG
    GENOME_DIR_NAME: ''
    outFilterMatchNminOverLread: 0
    rg_platform_unit_id: rg_platform_unit
    readMapNumber: 0
    alignSplicedMateMapLminOverLmate: 0
    alignMatesGapMax: 0
    outFilterMultimapNmax: 0
    clip5pNbases:
    - 0
    outSAMstrandField: None
    readMatesLengthsIn: NotEqual
    outSAMattributes: Standard
    seedMultimapNmax: 0
    rg_mfl: rg_mfl
    chimSegmentMin: 0
    winAnchorDistNbins: 0
    outSortingType: SortedByCoordinate
    outFilterMultimapScoreRange: 0
    sjdbInsertSave: Basic
    clip3pAfterAdapterNbases:
    - 0
    twopassMode: Basic
    outFilterMatchNmin: 0
    twopass1readsN: 0
    outSAMunmapped: None
    genome:
      size: 0
      secondaryFiles: []
      class: File
      path: genome.ext
    sjdbGTFtagExonParentTranscript: ''
    limitBAMsortRAM: 0
    alignEndsType: Local
    seedNoneLociPerWindow: 0
    rg_sample_id: rg_sample
    sjdbGTFtagExonParentGene: ''
    chimScoreMin: 0
    outSJfilterIntronMaxVsReadN:
    - 0
    alignSplicedMateMapLmin: 0
    seedSearchStartLmaxOverLread: 0
    outSJfilterCountTotalMin:
    - 3
    - 1
    - 1
    - 1
    outSAMorder: Paired
    outSAMflagAND: 0
    scoreDelBase: 0
    alignIntronMax: 0
    alignSJoverhangMin: 0
    outFilterScoreMin: 0
    outSAMtype: BAM
    seedSearchStartLmax: 0
    scoreGapGCAG: 0
    scoreGenomicLengthLog2scale: 0
    outFilterIntronMotifs: None
    quantTranscriptomeBan: IndelSoftclipSingleend
    reads:
    - size: 0
      secondaryFiles: []
      class: File
      metadata:
        format: fastq
        paired_end: '1'
        seq_center: illumina
      path: /test-data/mate_1.fastq.bz2
    scoreGap: 0
    outSJfilterOverhangMin:
    - 30
    - 12
    - 12
    - 12
    outSAMflagOR: 0
    outSAMmode: Full
    sjdbScore: ~
    winFlankNbins: 0
    chimScoreJunctionNonGTAG: 0
    clip3pAdapterSeq:
    - clip3pAdapterSeq
    chimScoreDropMax: 0
    scoreGapATAC: 0
    rg_platform: Ion Torrent PGM
    clip3pAdapterMMp:
    - 0
    sjdbGTFfeatureExon: ''
    outQSconversionAdd: 0
    alignSoftClipAtReferenceEnds: 'Yes'
    quantMode: TranscriptomeSAM
    alignIntronMin: 0
    scoreInsBase: 0
    outSAMreadID: Standard
    scoreGapNoncan: 0
    seedSearchLmax: 0
    outSJfilterDistToOtherSJmin:
    - 0
    outFilterScoreMinOverLread: 0
    alignSJDBoverhangMin: 0
    limitOutSJcollapsed: 0
    winAnchorMultimapNmax: 0
    outFilterMismatchNoverLmax: 0
    rg_seq_center: ''
    outSAMheaderHD: outSAMheaderHD
    chimOutType: Within
    outFilterMismatchNmax: 0
    limitOutSJoneRead: 0
    alignTranscriptsPerWindowNmax: 0
    sjdbOverhang: ~
    outReadsUnmapped: Fastx
    scoreStitchSJshift: 0
    seedPerWindowNmax: 0
    outSJfilterCountUniqueMin:
    - 3
    - 1
    - 1
    - 1
    scoreDelOpen: 0
    sjdbGTFfile:
    - path: /demo/test-data/chr20.gtf
    clip3pNbases:
    - 0
    - 3
    winBinNbits: 0
    outFilterType: Normal
    outSJfilterReads: All
    chimScoreSeparation: 0
    seedPerReadNmax: 0
    outFilterMismatchNoverReadLmax: 0
    rg_library_id: ''
    sjdbGTFchrPrefix: chrPrefix
    outSAMprimaryFlag: OneBestScore
    alignTranscriptsPerReadNmax: 0
    scoreInsOpen: 0
    chimJunctionOverhangMin: 0
    limitSjdbInsertNsj: 0
    outSAMmapqUnique: 0
sbg:toolAuthor: Alexander Dobin/CSHL
sbg:createdOn: 1453799778
sbg:categories:
- Alignment
sbg:contributors:
- sevenbridges
sbg:links:
- id: https://github.com/alexdobin/STAR
  label: Homepage
- id: https://github.com/alexdobin/STAR/releases
  label: Releases
- id: https://github.com/alexdobin/STAR/blob/master/doc/STARmanual.pdf
  label: Manual
- id: https://groups.google.com/forum/#!forum/rna-star
  label: Support
- id: http://www.ncbi.nlm.nih.gov/pubmed/23104886
  label: Publication
sbg:project: sevenbridges/public-apps
sbg:createdBy: sevenbridges
sbg:toolkitVersion: 2.4.2a
sbg:id: https://api.sbgenomics.com/v2/apps/sevenbridges/public-apps/star/4/raw/
sbg:license: GNU General Public License v3.0 only
sbg:revision: 4
sbg:cmdPreview: tar -xvf genome.ext && /opt/STAR --runThreadN 15  --readFilesCommand
  bzcat  --sjdbGTFfile /demo/test-data/chr20.gtf  --sjdbGTFchrPrefix chrPrefix --sjdbInsertSave
  Basic  --twopass1readsN 0  --chimOutType WithinBAM  --outSAMattrRGline ID:1 CN:illumina
  PI:rg_mfl PL:Ion_Torrent_PGM PU:rg_platform_unit SM:rg_sample  --quantMode TranscriptomeSAM
  --outFileNamePrefix ./mate_1.fastq.bz2.  --readFilesIn /test-data/mate_1.fastq.bz2  &&
  tar -vcf mate_1.fastq.bz2._STARgenome.tar ./mate_1.fastq.bz2._STARgenome  && mv
  mate_1.fastq.bz2.Unmapped.out.mate1 mate_1.fastq.bz2.Unmapped.out.mate1.fastq
sbg:modifiedOn: 1462904151
sbg:modifiedBy: sevenbridges
sbg:revisionsInfo:
- sbg:modifiedBy: sevenbridges
  sbg:modifiedOn: 1453799778
  sbg:revision: 0
- sbg:modifiedBy: sevenbridges
  sbg:modifiedOn: 1453799780
  sbg:revision: 1
- sbg:modifiedBy: sevenbridges
  sbg:modifiedOn: 1453799782
  sbg:revision: 2
- sbg:modifiedBy: sevenbridges
  sbg:modifiedOn: 1462904151
  sbg:revision: 3
- sbg:modifiedBy: sevenbridges
  sbg:modifiedOn: 1462904151
  sbg:revision: 4
sbg:toolkit: STAR
id: https://api.sbgenomics.com/v2/apps/sevenbridges/public-apps/star/4/raw/
inputs:
- type:
  - items: File
    type: array
  label: Read sequence
  description: Read sequence.
  streamable: no
  id: '#reads'
  inputBinding:
    position: 10
    separate: yes
    itemSeparator: ' '
    valueFrom:
      engine: '#cwl-js-engine'
      script: "{\t\n  var list = [].concat($job.inputs.reads)\n  \n  var resp = []\n
        \ \n  if (list.length == 1){\n    resp.push(list[0].path)\n    \n  }else if
        (list.length == 2){    \n    \n    left = \"\"\n    right = \"\"\n      \n
        \   for (index = 0; index < list.length; ++index) {\n      \n      if (list[index].metadata
        != null){\n        if (list[index].metadata.paired_end == 1){\n          left
        = list[index].path\n        }else if (list[index].metadata.paired_end == 2){\n
        \         right = list[index].path\n        }\n      }\n    }\n    \n    if
        (left != \"\" && right != \"\"){      \n      resp.push(left)\n      resp.push(right)\n
        \   }\n  }\n  else if (list.length > 2){\n    left = []\n    right = []\n
        \     \n    for (index = 0; index < list.length; ++index) {\n      \n      if
        (list[index].metadata != null){\n        if (list[index].metadata.paired_end
        == 1){\n          left.push(list[index].path)\n        }else if (list[index].metadata.paired_end
        == 2){\n          right.push(list[index].path)\n        }\n      }\n    }\n
        \   left_join = left.join()\n    right_join = right.join()\n    if (left !=
        [] && right != []){      \n      resp.push(left_join)\n      resp.push(right_join)\n
        \   }\t\n  }\n  \n  if(resp.length > 0){    \n    return \"--readFilesIn \".concat(resp.join(\"
        \"))\n  }\n}"
      class: Expression
    sbg:cmdInclude: yes
  sbg:category: Basic
  sbg:fileTypes: FASTA, FASTQ, FA, FQ, FASTQ.GZ, FQ.GZ, FASTQ.BZ2, FQ.BZ2
  required: yes
- type:
  - 'null'
  - name: readMatesLengthsIn
    symbols:
    - NotEqual
    - Equal
    type: enum
  label: Reads lengths
  description: Equal/Not equal - lengths of names, sequences, qualities for both mates
    are the same/not the same. "Not equal" is safe in all situations.
  streamable: no
  id: '#readMatesLengthsIn'
  inputBinding:
    position: 0
    prefix: --readMatesLengthsIn
    separate: yes
    sbg:cmdInclude: yes
  sbg:category: Read parameters
  sbg:toolDefaultValue: NotEqual
  required: no
- type:
  - 'null'
  - int
  label: Reads to map
  description: Number of reads to map from the beginning of the file.
  streamable: no
  id: '#readMapNumber'
  inputBinding:
    position: 0
    prefix: --readMapNumber
    separate: yes
    sbg:cmdInclude: yes
  sbg:category: Read parameters
  sbg:toolDefaultValue: '-1'
  required: no
- type:
  - 'null'
  - int
  label: Junctions max number
  description: Max number of junctions for one read (including all multi-mappers).
  streamable: no
  id: '#limitOutSJoneRead'
  inputBinding:
    position: 0
    prefix: --limitOutSJoneRead
    separate: yes
    sbg:cmdInclude: yes
  sbg:category: Limits
  sbg:toolDefaultValue: '1000'
  required: no
- type:
  - 'null'
  - int
  label: Collapsed junctions max number
  description: Max number of collapsed junctions.
  streamable: no
  id: '#limitOutSJcollapsed'
  inputBinding:
    position: 0
    prefix: --limitOutSJcollapsed
    separate: yes
    sbg:cmdInclude: yes
  sbg:category: Limits
  sbg:toolDefaultValue: '1000000'
  required: no
- type:
  - 'null'
  - name: outReadsUnmapped
    symbols:
    - None
    - Fastx
    type: enum
  label: Output unmapped reads
  description: 'Output of unmapped reads (besides SAM). None: no output; Fastx: output
    in separate fasta/fastq files, Unmapped.out.mate1/2.'
  streamable: no
  id: '#outReadsUnmapped'
  inputBinding:
    position: 0
    prefix: --outReadsUnmapped
    separate: yes
    sbg:cmdInclude: yes
  sbg:category: Output
  sbg:toolDefaultValue: None
  required: no
- type:
  - 'null'
  - int
  label: Quality conversion
  description: Add this number to the quality score (e.g. to convert from Illumina
    to Sanger, use -31).
  streamable: no
  id: '#outQSconversionAdd'
  inputBinding:
    position: 0
    prefix: --outQSconversionAdd
    separate: yes
    sbg:cmdInclude: yes
  sbg:category: Output
  sbg:toolDefaultValue: '0'
  required: no
- type:
  - 'null'
  - name: outSAMtype
    symbols:
    - SAM
    - BAM
    type: enum
  label: Output format
  description: Format of output alignments.
  streamable: no
  id: '#outSAMtype'
  inputBinding:
    position: 0
    separate: yes
    valueFrom:
      engine: '#cwl-js-engine'
      script: |-
        {
          SAM_type = $job.inputs.outSAMtype
          SORT_type = $job.inputs.outSortingType
          if (SAM_type && SORT_type) {
            return "--outSAMtype ".concat(SAM_type, " ", SORT_type)
          }
        }
      class: Expression
    sbg:cmdInclude: yes
  sbg:category: Output
  sbg:toolDefaultValue: SAM
  required: no
- type:
  - 'null'
  - name: outSortingType
    symbols:
    - Unsorted
    - SortedByCoordinate
    - Unsorted SortedByCoordinate
    type: enum
  label: Output sorting type
  description: Type of output sorting.
  streamable: no
  id: '#outSortingType'
  sbg:category: Output
  sbg:toolDefaultValue: SortedByCoordinate
  required: no
- type:
  - 'null'
  - name: outSAMmode
    symbols:
    - Full
    - NoQS
    type: enum
  label: SAM mode
  description: 'Mode of SAM output. Full: full SAM output; NoQS: full SAM but without
    quality scores.'
  streamable: no
  id: '#outSAMmode'
  inputBinding:
    position: 0
    prefix: --outSAMmode
    separate: yes
    sbg:cmdInclude: yes
  sbg:category: Output
  sbg:toolDefaultValue: Full
  required: no
- type:
  - 'null'
  - name: outSAMstrandField
    symbols:
    - None
    - intronMotif
    type: enum
  label: Strand field flag
  description: 'Cufflinks-like strand field flag. None: not used; intronMotif: strand
    derived from the intron motif. Reads with inconsistent and/or non-canonical introns
    are filtered out.'
  streamable: no
  id: '#outSAMstrandField'
  inputBinding:
    position: 0
    prefix: --outSAMstrandField
    separate: yes
    sbg:cmdInclude: yes
  sbg:category: Output
  sbg:toolDefaultValue: None
  required: no
- type:
  - 'null'
  - name: outSAMattributes
    symbols:
    - Standard
    - NH
    - All
    - None
    type: enum
  label: SAM attributes
  description: 'Desired SAM attributes, in the order desired for the output SAM. NH:
    any combination in any order; Standard: NH HI AS nM; All: NH HI AS nM NM MD jM
    jI; None: no attributes.'
  streamable: no
  id: '#outSAMattributes'
  inputBinding:
    position: 0
    prefix: --outSAMattributes
    separate: yes
    sbg:cmdInclude: yes
  sbg:category: Output
  sbg:toolDefaultValue: Standard
  required: no
- type:
  - 'null'
  - name: outSAMunmapped
    symbols:
    - None
    - Within
    type: enum
  label: Write unmapped in SAM
  description: 'Output of unmapped reads in the SAM format. None: no output Within:
    output unmapped reads within the main SAM file (i.e. Aligned.out.sam).'
  streamable: no
  id: '#outSAMunmapped'
  inputBinding:
    position: 0
    prefix: --outSAMunmapped
    separate: yes
    sbg:cmdInclude: yes
  sbg:category: Output
  sbg:toolDefaultValue: None
  required: no
- type:
  - 'null'
  - name: outSAMorder
    symbols:
    - Paired
    - PairedKeepInputOrder
    type: enum
  label: Sorting in SAM
  description: 'Type of sorting for the SAM output. Paired: one mate after the other
    for all paired alignments; PairedKeepInputOrder: one mate after the other for
    all paired alignments, the order is kept the same as in the input FASTQ files.'
  streamable: no
  id: '#outSAMorder'
  inputBinding:
    position: 0
    prefix: --outSAMorder
    separate: yes
    sbg:cmdInclude: yes
  sbg:category: Output
  sbg:toolDefaultValue: Paired
  required: no
- type:
  - 'null'
  - name: outSAMprimaryFlag
    symbols:
    - OneBestScore
    - AllBestScore
    type: enum
  label: Primary alignments
  description: 'Which alignments are considered primary - all others will be marked
    with 0x100 bit in the FLAG. OneBestScore: only one alignment with the best score
    is primary; AllBestScore: all alignments with the best score are primary.'
  streamable: no
  id: '#outSAMprimaryFlag'
  inputBinding:
    position: 0
    prefix: --outSAMprimaryFlag
    separate: yes
    sbg:cmdInclude: yes
  sbg:category: Output
  sbg:toolDefaultValue: OneBestScore
  required: no
- type:
  - 'null'
  - name: outSAMreadID
    symbols:
    - Standard
    - Number
    type: enum
  label: Read ID
  description: 'Read ID record type. Standard: first word (until space) from the FASTx
    read ID line, removing /1,/2 from the end; Number: read number (index) in the
    FASTx file.'
  streamable: no
  id: '#outSAMreadID'
  inputBinding:
    position: 0
    prefix: --outSAMreadID
    separate: yes
    sbg:cmdInclude: yes
  sbg:category: Output
  sbg:toolDefaultValue: Standard
  required: no
- type:
  - 'null'
  - int
  label: MAPQ value
  description: MAPQ value for unique mappers (0 to 255).
  streamable: no
  id: '#outSAMmapqUnique'
  inputBinding:
    position: 0
    prefix: --outSAMmapqUnique
    separate: yes
    sbg:cmdInclude: yes
  sbg:category: Output
  sbg:toolDefaultValue: '255'
  required: no
- type:
  - 'null'
  - int
  label: OR SAM flag
  description: Set specific bits of the SAM FLAG.
  streamable: no
  id: '#outSAMflagOR'
  inputBinding:
    position: 0
    prefix: --outSAMflagOR
    separate: yes
    sbg:cmdInclude: yes
  sbg:category: Output
  sbg:toolDefaultValue: '0'
  required: no
- type:
  - 'null'
  - int
  label: AND SAM flag
  description: Set specific bits of the SAM FLAG.
  streamable: no
  id: '#outSAMflagAND'
  inputBinding:
    position: 0
    prefix: --outSAMflagAND
    separate: yes
    sbg:cmdInclude: yes
  sbg:category: Output
  sbg:toolDefaultValue: '65535'
  required: no
- type:
  - 'null'
  - string
  label: SAM header @HD
  description: '@HD (header) line of the SAM header.'
  streamable: no
  id: '#outSAMheaderHD'
  inputBinding:
    position: 0
    prefix: --outSAMheaderHD
    separate: yes
    sbg:cmdInclude: yes
  sbg:category: Output
  sbg:toolDefaultValue: '-'
  required: no
- type:
  - 'null'
  - string
  label: SAM header @PG
  description: Extra @PG (software) line of the SAM header (in addition to STAR).
  streamable: no
  id: '#outSAMheaderPG'
  inputBinding:
    position: 0
    prefix: --outSAMheaderPG
    separate: yes
    sbg:cmdInclude: yes
  sbg:category: Output
  sbg:toolDefaultValue: '-'
  required: no
- type:
  - 'null'
  - string
  label: Sequencing center
  description: Specify the sequencing center for RG line.
  streamable: no
  id: '#rg_seq_center'
  sbg:category: Read group
  sbg:toolDefaultValue: Inferred from metadata
  required: no
- type:
  - 'null'
  - string
  label: Library ID
  description: Specify the library ID for RG line.
  streamable: no
  id: '#rg_library_id'
  sbg:category: Read group
  sbg:toolDefaultValue: Inferred from metadata
  required: no
- type:
  - 'null'
  - string
  label: Median fragment length
  description: Specify the median fragment length for RG line.
  streamable: no
  id: '#rg_mfl'
  sbg:category: Read group
  sbg:toolDefaultValue: Inferred from metadata
  required: no
- type:
  - 'null'
  - name: rg_platform
    symbols:
    - LS 454
    - Helicos
    - Illumina
    - ABI SOLiD
    - Ion Torrent PGM
    - PacBio
    type: enum
  label: Platform
  description: Specify the version of the technology that was used for sequencing
    or assaying.
  streamable: no
  id: '#rg_platform'
  sbg:category: Read group
  sbg:toolDefaultValue: Inferred from metadata
  required: no
- type:
  - 'null'
  - string
  label: Platform unit ID
  description: Specify the platform unit ID for RG line.
  streamable: no
  id: '#rg_platform_unit_id'
  sbg:category: Read group
  sbg:toolDefaultValue: Inferred from metadata
  required: no
- type:
  - 'null'
  - string
  label: Sample ID
  description: Specify the sample ID for RG line.
  streamable: no
  id: '#rg_sample_id'
  sbg:category: Read group
  sbg:toolDefaultValue: Inferred from metadata
  required: no
- type:
  - 'null'
  - name: outFilterType
    symbols:
    - Normal
    - BySJout
    type: enum
  label: Filtering type
  description: 'Type of filtering. Normal: standard filtering using only current alignment;
    BySJout: keep only those reads that contain junctions that passed filtering into
    SJ.out.tab.'
  streamable: no
  id: '#outFilterType'
  inputBinding:
    position: 0
    prefix: --outFilterType
    separate: yes
    sbg:cmdInclude: yes
  sbg:category: Output filtering
  sbg:toolDefaultValue: Normal
  required: no
- type:
  - 'null'
  - int
  label: Multimapping score range
  description: The score range below the maximum score for multimapping alignments.
  streamable: no
  id: '#outFilterMultimapScoreRange'
  inputBinding:
    position: 0
    prefix: --outFilterMultimapScoreRange
    separate: yes
    sbg:cmdInclude: yes
  sbg:category: Output filtering
  sbg:toolDefaultValue: '1'
  required: no
- type:
  - 'null'
  - int
  label: Max number of mappings
  description: Read alignments will be output only if the read maps fewer than this
    value, otherwise no alignments will be output.
  streamable: no
  id: '#outFilterMultimapNmax'
  inputBinding:
    position: 0
    prefix: --outFilterMultimapNmax
    separate: yes
    sbg:cmdInclude: yes
  sbg:category: Output filtering
  sbg:toolDefaultValue: '10'
  required: no
- type:
  - 'null'
  - int
  label: Max number of mismatches
  description: Alignment will be output only if it has fewer mismatches than this
    value.
  streamable: no
  id: '#outFilterMismatchNmax'
  inputBinding:
    position: 0
    prefix: --outFilterMismatchNmax
    separate: yes
    sbg:cmdInclude: yes
  sbg:category: Output filtering
  sbg:toolDefaultValue: '10'
  required: no
- type:
  - 'null'
  - float
  label: Mismatches to *mapped* length
  description: Alignment will be output only if its ratio of mismatches to *mapped*
    length is less than this value.
  streamable: no
  id: '#outFilterMismatchNoverLmax'
  inputBinding:
    position: 0
    prefix: --outFilterMismatchNoverLmax
    separate: yes
    sbg:cmdInclude: yes
  sbg:category: Output filtering
  sbg:toolDefaultValue: '0.3'
  required: no
- type:
  - 'null'
  - float
  label: Mismatches to *read* length
  description: Alignment will be output only if its ratio of mismatches to *read*
    length is less than this value.
  streamable: no
  id: '#outFilterMismatchNoverReadLmax'
  inputBinding:
    position: 0
    prefix: --outFilterMismatchNoverReadLmax
    separate: yes
    sbg:cmdInclude: yes
  sbg:category: Output filtering
  sbg:toolDefaultValue: '1'
  required: no
- type:
  - 'null'
  - int
  label: Min score
  description: Alignment will be output only if its score is higher than this value.
  streamable: no
  id: '#outFilterScoreMin'
  inputBinding:
    position: 0
    prefix: --outFilterScoreMin
    separate: yes
    sbg:cmdInclude: yes
  sbg:category: Output filtering
  sbg:toolDefaultValue: '0'
  required: no
- type:
  - 'null'
  - float
  label: Min score normalized
  description: '''Minimum score'' normalized to read length (sum of mates'' lengths
    for paired-end reads).'
  streamable: no
  id: '#outFilterScoreMinOverLread'
  inputBinding:
    position: 0
    prefix: --outFilterScoreMinOverLread
    separate: yes
    sbg:cmdInclude: yes
  sbg:category: Output filtering
  sbg:toolDefaultValue: '0.66'
  required: no
- type:
  - 'null'
  - int
  label: Min matched bases
  description: Alignment will be output only if the number of matched bases is higher
    than this value.
  streamable: no
  id: '#outFilterMatchNmin'
  inputBinding:
    position: 0
    prefix: --outFilterMatchNmin
    separate: yes
    sbg:cmdInclude: yes
  sbg:category: Output filtering
  sbg:toolDefaultValue: '0'
  required: no
- type:
  - 'null'
  - float
  label: Min matched bases normalized
  description: '''Minimum matched bases'' normalized to read length (sum of mates
    lengths for paired-end reads).'
  streamable: no
  id: '#outFilterMatchNminOverLread'
  inputBinding:
    position: 0
    prefix: --outFilterMatchNminOverLread
    separate: yes
    sbg:cmdInclude: yes
  sbg:category: Output filtering
  sbg:toolDefaultValue: '0.66'
  required: no
- type:
  - 'null'
  - name: outFilterIntronMotifs
    symbols:
    - None
    - RemoveNoncanonical
    - RemoveNoncanonicalUnannotated
    type: enum
  label: Motifs filtering
  description: 'Filter alignment using their motifs. None: no filtering; RemoveNoncanonical:
    filter out alignments that contain non-canonical junctions; RemoveNoncanonicalUnannotated:
    filter out alignments that contain non-canonical unannotated junctions when using
    annotated splice junctions database. The annotated non-canonical junctions will
    be kept.'
  streamable: no
  id: '#outFilterIntronMotifs'
  inputBinding:
    position: 0
    prefix: --outFilterIntronMotifs
    separate: yes
    sbg:cmdInclude: yes
  sbg:category: Output filtering
  sbg:toolDefaultValue: None
  required: no
- type:
  - 'null'
  - name: outSJfilterReads
    symbols:
    - All
    - Unique
    type: enum
  label: Collapsed junctions reads
  description: 'Which reads to consider for collapsed splice junctions output. All:
    all reads, unique- and multi-mappers; Unique: uniquely mapping reads only.'
  streamable: no
  id: '#outSJfilterReads'
  inputBinding:
    position: 0
    prefix: --outSJfilterReads
    separate: yes
    sbg:cmdInclude: yes
  sbg:category: 'Output filtering: splice junctions'
  sbg:toolDefaultValue: All
  required: no
- type:
  - 'null'
  - items: int
    type: array
  label: Min overhang SJ
  description: Minimum overhang length for splice junctions on both sides for each
    of the motifs. To set no output for desired motif, assign -1 to the corresponding
    field. Does not apply to annotated junctions.
  streamable: no
  id: '#outSJfilterOverhangMin'
  inputBinding:
    position: 0
    prefix: --outSJfilterOverhangMin
    separate: yes
    itemSeparator: ' '
    sbg:cmdInclude: yes
  sbg:category: 'Output filtering: splice junctions'
  sbg:toolDefaultValue: 30 12 12 12
  required: no
- type:
  - 'null'
  - items: int
    type: array
  label: Min unique count
  description: Minimum uniquely mapping read count per junction for each of the motifs.
    To set no output for desired motif, assign -1 to the corresponding field. Junctions
    are output if one of --outSJfilterCountUniqueMin OR --outSJfilterCountTotalMin
    conditions are satisfied. Does not apply to annotated junctions.
  streamable: no
  id: '#outSJfilterCountUniqueMin'
  inputBinding:
    position: 0
    prefix: --outSJfilterCountUniqueMin
    separate: yes
    itemSeparator: ' '
    sbg:cmdInclude: yes
  sbg:category: 'Output filtering: splice junctions'
  sbg:toolDefaultValue: 3 1 1 1
  required: no
- type:
  - 'null'
  - items: int
    type: array
  label: Min total count
  description: Minimum total (multi-mapping+unique) read count per junction for each
    of the motifs. To set no output for desired motif, assign -1 to the corresponding
    field. Junctions are output if one of --outSJfilterCountUniqueMin OR --outSJfilterCountTotalMin
    conditions are satisfied. Does not apply to annotated junctions.
  streamable: no
  id: '#outSJfilterCountTotalMin'
  inputBinding:
    position: 0
    prefix: --outSJfilterCountTotalMin
    separate: yes
    itemSeparator: ' '
    sbg:cmdInclude: yes
  sbg:category: 'Output filtering: splice junctions'
  sbg:toolDefaultValue: 3 1 1 1
  required: no
- type:
  - 'null'
  - items: int
    type: array
  label: Min distance to other donor/acceptor
  description: Minimum allowed distance to other junctions' donor/acceptor for each
    of the motifs (int >= 0). Does not apply to annotated junctions.
  streamable: no
  id: '#outSJfilterDistToOtherSJmin'
  inputBinding:
    position: 0
    prefix: --outSJfilterDistToOtherSJmin
    separate: yes
    itemSeparator: ' '
    sbg:cmdInclude: yes
  sbg:category: 'Output filtering: splice junctions'
  sbg:toolDefaultValue: 10 0 5 10
  required: no
- type:
  - 'null'
  - items: int
    type: array
  label: Max gap allowed
  description: 'Maximum gap allowed for junctions supported by 1,2,3...N reads (int
    >= 0) i.e. by default junctions supported by 1 read can have gaps <=50000b, by
    2 reads: <=100000b, by 3 reads: <=200000. By 4 or more reads: any gap <=alignIntronMax.
    Does not apply to annotated junctions.'
  streamable: no
  id: '#outSJfilterIntronMaxVsReadN'
  inputBinding:
    position: 0
    prefix: --outSJfilterIntronMaxVsReadN
    separate: yes
    itemSeparator: ' '
    sbg:cmdInclude: yes
  sbg:category: 'Output filtering: splice junctions'
  sbg:toolDefaultValue: 50000 100000 200000
  required: no
- type:
  - 'null'
  - int
  label: Gap open penalty
  description: Gap open penalty.
  streamable: no
  id: '#scoreGap'
  inputBinding:
    position: 0
    prefix: --scoreGap
    separate: yes
    sbg:cmdInclude: yes
  sbg:category: Scoring
  sbg:toolDefaultValue: '0'
  required: no
- type:
  - 'null'
  - int
  label: Non-canonical gap open
  description: Non-canonical gap open penalty (in addition to --scoreGap).
  streamable: no
  id: '#scoreGapNoncan'
  inputBinding:
    position: 0
    prefix: --scoreGapNoncan
    separate: yes
    sbg:cmdInclude: yes
  sbg:category: Scoring
  sbg:toolDefaultValue: '-8'
  required: no
- type:
  - 'null'
  - int
  label: GC/AG and CT/GC gap open
  description: GC/AG and CT/GC gap open penalty (in addition to --scoreGap).
  streamable: no
  id: '#scoreGapGCAG'
  inputBinding:
    position: 0
    prefix: --scoreGapGCAG
    separate: yes
    sbg:cmdInclude: yes
  sbg:category: Scoring
  sbg:toolDefaultValue: '-4'
  required: no
- type:
  - 'null'
  - int
  label: AT/AC and GT/AT gap open
  description: AT/AC and GT/AT gap open penalty (in addition to --scoreGap).
  streamable: no
  id: '#scoreGapATAC'
  inputBinding:
    position: 0
    prefix: --scoreGapATAC
    separate: yes
    sbg:cmdInclude: yes
  sbg:category: Scoring
  sbg:toolDefaultValue: '-8'
  required: no
- type:
  - 'null'
  - float
  label: Log scaled score
  description: 'Extra score logarithmically scaled with genomic length of the alignment:
    <int>*log2(genomicLength).'
  streamable: no
  id: '#scoreGenomicLengthLog2scale'
  inputBinding:
    position: 0
    prefix: --scoreGenomicLengthLog2scale
    separate: yes
    sbg:cmdInclude: yes
  sbg:category: Scoring
  sbg:toolDefaultValue: '-0.25'
  required: no
- type:
  - 'null'
  - int
  label: Deletion open penalty
  description: Deletion open penalty.
  streamable: no
  id: '#scoreDelOpen'
  inputBinding:
    position: 0
    prefix: --scoreDelOpen
    separate: yes
    sbg:cmdInclude: yes
  sbg:category: Scoring
  sbg:toolDefaultValue: '-2'
  required: no
- type:
  - 'null'
  - int
  label: Deletion extension penalty
  description: Deletion extension penalty per base (in addition to --scoreDelOpen).
  streamable: no
  id: '#scoreDelBase'
  inputBinding:
    position: 0
    prefix: --scoreDelBase
    separate: yes
    sbg:cmdInclude: yes
  sbg:category: Scoring
  sbg:toolDefaultValue: '-2'
  required: no
- type:
  - 'null'
  - int
  label: Insertion Open Penalty
  description: Insertion open penalty.
  streamable: no
  id: '#scoreInsOpen'
  inputBinding:
    position: 0
    prefix: --scoreInsOpen
    separate: yes
    sbg:cmdInclude: yes
  sbg:category: Scoring
  sbg:toolDefaultValue: '-2'
  required: no
- type:
  - 'null'
  - int
  label: Insertion extension penalty
  description: Insertion extension penalty per base (in addition to --scoreInsOpen).
  streamable: no
  id: '#scoreInsBase'
  inputBinding:
    position: 0
    prefix: --scoreInsBase
    separate: yes
    sbg:cmdInclude: yes
  sbg:category: Scoring
  sbg:toolDefaultValue: '-2'
  required: no
- type:
  - 'null'
  - int
  label: Max score reduction
  description: Maximum score reduction while searching for SJ boundaries in the stitching
    step.
  streamable: no
  id: '#scoreStitchSJshift'
  inputBinding:
    position: 0
    prefix: --scoreStitchSJshift
    separate: yes
    sbg:cmdInclude: yes
  sbg:category: Scoring
  sbg:toolDefaultValue: '1'
  required: no
- type:
  - 'null'
  - int
  label: Search start point
  description: Defines the search start point through the read - the read is split
    into pieces no longer than this value (int>0).
  streamable: no
  id: '#seedSearchStartLmax'
  inputBinding:
    position: 0
    prefix: --seedSearchStartLmax
    separate: yes
    sbg:cmdInclude: yes
  sbg:category: Alignments and Seeding
  sbg:toolDefaultValue: '50'
  required: no
- type:
  - 'null'
  - float
  label: Search start point normalized
  description: seedSearchStartLmax normalized to read length (sum of mates' lengths
    for paired-end reads).
  streamable: no
  id: '#seedSearchStartLmaxOverLread'
  inputBinding:
    position: 0
    prefix: --seedSearchStartLmaxOverLread
    separate: yes
    sbg:cmdInclude: yes
  sbg:category: Alignments and Seeding
  sbg:toolDefaultValue: '1.0'
  required: no
- type:
  - 'null'
  - int
  label: Max seed length
  description: Defines the maximum length of the seeds, if =0 max seed length is infinite
    (int>=0).
  streamable: no
  id: '#seedSearchLmax'
  inputBinding:
    position: 0
    prefix: --seedSearchLmax
    separate: yes
    sbg:cmdInclude: yes
  sbg:category: Alignments and Seeding
  sbg:toolDefaultValue: '0'
  required: no
- type:
  - 'null'
  - int
  label: Filter pieces for stitching
  description: Only pieces that map fewer than this value are utilized in the stitching
    procedure (int>=0).
  streamable: no
  id: '#seedMultimapNmax'
  inputBinding:
    position: 0
    prefix: --seedMultimapNmax
    separate: yes
    sbg:cmdInclude: yes
  sbg:category: Alignments and Seeding
  sbg:toolDefaultValue: '10000'
  required: no
- type:
  - 'null'
  - int
  label: Max seeds per read
  description: Max number of seeds per read (int>=0).
  streamable: no
  id: '#seedPerReadNmax'
  inputBinding:
    position: 0
    prefix: --seedPerReadNmax
    separate: yes
    sbg:cmdInclude: yes
  sbg:category: Alignments and Seeding
  sbg:toolDefaultValue: '1000'
  required: no
- type:
  - 'null'
  - int
  label: Max seeds per window
  description: Max number of seeds per window (int>=0).
  streamable: no
  id: '#seedPerWindowNmax'
  inputBinding:
    position: 0
    prefix: --seedPerWindowNmax
    separate: yes
    sbg:cmdInclude: yes
  sbg:category: Alignments and Seeding
  sbg:toolDefaultValue: '50'
  required: no
- type:
  - 'null'
  - int
  label: Max one-seed loci per window
  description: Max number of one seed loci per window (int>=0).
  streamable: no
  id: '#seedNoneLociPerWindow'
  inputBinding:
    position: 0
    prefix: --seedNoneLociPerWindow
    separate: yes
    sbg:cmdInclude: yes
  sbg:category: Alignments and Seeding
  sbg:toolDefaultValue: '10'
  required: no
- type:
  - 'null'
  - int
  label: Min intron size
  description: 'Minimum intron size: genomic gap is considered intron if its length
    >= alignIntronMin, otherwise it is considered Deletion (int>=0).'
  streamable: no
  id: '#alignIntronMin'
  inputBinding:
    position: 0
    prefix: --alignIntronMin
    separate: yes
    sbg:cmdInclude: yes
  sbg:category: Alignments and Seeding
  sbg:toolDefaultValue: '21'
  required: no
- type:
  - 'null'
  - int
  label: Max intron size
  description: Maximum intron size, if 0, max intron size will be determined by (2^winBinNbits)*winAnchorDistNbins.
  streamable: no
  id: '#alignIntronMax'
  inputBinding:
    position: 0
    prefix: --alignIntronMax
    separate: yes
    sbg:cmdInclude: yes
  sbg:category: Alignments and Seeding
  sbg:toolDefaultValue: '0'
  required: no
- type:
  - 'null'
  - int
  label: Max mates gap
  description: Maximum gap between two mates, if 0, max intron gap will be determined
    by (2^winBinNbits)*winAnchorDistNbins.
  streamable: no
  id: '#alignMatesGapMax'
  inputBinding:
    position: 0
    prefix: --alignMatesGapMax
    separate: yes
    sbg:cmdInclude: yes
  sbg:category: Alignments and Seeding
  sbg:toolDefaultValue: '0'
  required: no
- type:
  - 'null'
  - int
  label: Min overhang
  description: Minimum overhang (i.e. block size) for spliced alignments (int>0).
  streamable: no
  id: '#alignSJoverhangMin'
  inputBinding:
    position: 0
    prefix: --alignSJoverhangMin
    separate: yes
    sbg:cmdInclude: yes
  sbg:category: Alignments and Seeding
  sbg:toolDefaultValue: '5'
  required: no
- type:
  - 'null'
  - int
  label: 'Min overhang: annotated'
  description: Minimum overhang (i.e. block size) for annotated (sjdb) spliced alignments
    (int>0).
  streamable: no
  id: '#alignSJDBoverhangMin'
  inputBinding:
    position: 0
    prefix: --alignSJDBoverhangMin
    separate: yes
    sbg:cmdInclude: yes
  sbg:category: Alignments and Seeding
  sbg:toolDefaultValue: '3'
  required: no
- type:
  - 'null'
  - int
  label: Min mapped length
  description: Minimum mapped length for a read mate that is spliced (int>0).
  streamable: no
  id: '#alignSplicedMateMapLmin'
  inputBinding:
    position: 0
    prefix: --alignSplicedMateMapLmin
    separate: yes
    sbg:cmdInclude: yes
  sbg:category: Alignments and Seeding
  sbg:toolDefaultValue: '0'
  required: no
- type:
  - 'null'
  - float
  label: Min mapped length normalized
  description: alignSplicedMateMapLmin normalized to mate length (float>0).
  streamable: no
  id: '#alignSplicedMateMapLminOverLmate'
  inputBinding:
    position: 0
    prefix: --alignSplicedMateMapLminOverLmate
    separate: yes
    sbg:cmdInclude: yes
  sbg:category: Alignments and Seeding
  sbg:toolDefaultValue: '0.66'
  required: no
- type:
  - 'null'
  - float
  label: Max windows per read
  description: Max number of windows per read (int>0).
  streamable: no
  id: '#alignWindowsPerReadNmax'
  inputBinding:
    position: 0
    prefix: --alignWindowsPerReadNmax
    separate: yes
    sbg:cmdInclude: yes
  sbg:category: Alignments and Seeding
  sbg:toolDefaultValue: '10000'
  required: no
- type:
  - 'null'
  - int
  label: Max transcripts per window
  description: Max number of transcripts per window (int>0).
  streamable: no
  id: '#alignTranscriptsPerWindowNmax'
  inputBinding:
    position: 0
    prefix: --alignTranscriptsPerWindowNmax
    separate: yes
    sbg:cmdInclude: yes
  sbg:category: Alignments and Seeding
  sbg:toolDefaultValue: '100'
  required: no
- type:
  - 'null'
  - int
  label: Max transcripts per read
  description: Max number of different alignments per read to consider (int>0).
  streamable: no
  id: '#alignTranscriptsPerReadNmax'
  inputBinding:
    position: 0
    prefix: --alignTranscriptsPerReadNmax
    separate: yes
    sbg:cmdInclude: yes
  sbg:category: Alignments and Seeding
  sbg:toolDefaultValue: '10000'
  required: no
- type:
  - 'null'
  - name: alignEndsType
    symbols:
    - Local
    - EndToEnd
    type: enum
  label: Alignment type
  description: 'Type of read ends alignment. Local: standard local alignment with
    soft-clipping allowed. EndToEnd: force end to end read alignment, do not soft-clip.'
  streamable: no
  id: '#alignEndsType'
  inputBinding:
    position: 0
    prefix: --alignEndsType
    separate: yes
    sbg:cmdInclude: yes
  sbg:category: Alignments and Seeding
  sbg:toolDefaultValue: Local
  required: no
- type:
  - 'null'
  - name: alignSoftClipAtReferenceEnds
    symbols:
    - 'Yes'
    - 'No'
    type: enum
  label: Soft clipping
  description: 'Option which allows soft clipping of alignments at the reference (chromosome)
    ends. Can be disabled for compatibility with Cufflinks/Cuffmerge. Yes: Enables
    soft clipping; No: Disables soft clipping.'
  streamable: no
  id: '#alignSoftClipAtReferenceEnds'
  inputBinding:
    position: 0
    prefix: --alignSoftClipAtReferenceEnds
    separate: yes
    sbg:cmdInclude: yes
  sbg:category: Alignments and Seeding
  sbg:toolDefaultValue: 'Yes'
  required: no
- type:
  - 'null'
  - int
  label: Max loci anchors
  description: Max number of loci anchors are allowed to map to (int>0).
  streamable: no
  id: '#winAnchorMultimapNmax'
  inputBinding:
    position: 0
    prefix: --winAnchorMultimapNmax
    separate: yes
    sbg:cmdInclude: yes
  sbg:category: Windows, Anchors, Binning
  sbg:toolDefaultValue: '50'
  required: no
- type:
  - 'null'
  - int
  label: Bin size
  description: =log2(winBin), where winBin is the size of the bin for the windows/clustering,
    each window will occupy an integer number of bins (int>0).
  streamable: no
  id: '#winBinNbits'
  inputBinding:
    position: 0
    prefix: --winBinNbits
    separate: yes
    sbg:cmdInclude: yes
  sbg:category: Windows, Anchors, Binning
  sbg:toolDefaultValue: '16'
  required: no
- type:
  - 'null'
  - int
  label: Max bins between anchors
  description: Max number of bins between two anchors that allows aggregation of anchors
    into one window (int>0).
  streamable: no
  id: '#winAnchorDistNbins'
  inputBinding:
    position: 0
    prefix: --winAnchorDistNbins
    separate: yes
    sbg:cmdInclude: yes
  sbg:category: Windows, Anchors, Binning
  sbg:toolDefaultValue: '9'
  required: no
- type:
  - 'null'
  - int
  label: Flanking regions size
  description: =log2(winFlank), where win Flank is the size of the left and right
    flanking regions for each window (int>0).
  streamable: no
  id: '#winFlankNbins'
  inputBinding:
    position: 0
    prefix: --winFlankNbins
    separate: yes
    sbg:cmdInclude: yes
  sbg:category: Windows, Anchors, Binning
  sbg:toolDefaultValue: '4'
  required: no
- type:
  - 'null'
  - int
  label: Min segment length
  description: Minimum length of chimeric segment length, if =0, no chimeric output
    (int>=0).
  streamable: no
  id: '#chimSegmentMin'
  inputBinding:
    position: 0
    prefix: --chimSegmentMin
    separate: yes
    sbg:cmdInclude: yes
  sbg:category: Chimeric Alignments
  sbg:toolDefaultValue: '15'
  required: no
- type:
  - 'null'
  - int
  label: Min total score
  description: Minimum total (summed) score of the chimeric segments (int>=0).
  streamable: no
  id: '#chimScoreMin'
  inputBinding:
    position: 0
    prefix: --chimScoreMin
    separate: yes
    sbg:cmdInclude: yes
  sbg:category: Chimeric Alignments
  sbg:toolDefaultValue: '0'
  required: no
- type:
  - 'null'
  - int
  label: Max drop score
  description: Max drop (difference) of chimeric score (the sum of scores of all chimeric
    segements) from the read length (int>=0).
  streamable: no
  id: '#chimScoreDropMax'
  inputBinding:
    position: 0
    prefix: --chimScoreDropMax
    separate: yes
    sbg:cmdInclude: yes
  sbg:category: Chimeric Alignments
  sbg:toolDefaultValue: '20'
  required: no
- type:
  - 'null'
  - int
  label: Min separation score
  description: Minimum difference (separation) between the best chimeric score and
    the next one (int>=0).
  streamable: no
  id: '#chimScoreSeparation'
  inputBinding:
    position: 0
    prefix: --chimScoreSeparation
    separate: yes
    sbg:cmdInclude: yes
  sbg:category: Chimeric Alignments
  sbg:toolDefaultValue: '10'
  required: no
- type:
  - 'null'
  - int
  label: Non-GT/AG penalty
  description: Penalty for a non-GT/AG chimeric junction.
  streamable: no
  id: '#chimScoreJunctionNonGTAG'
  inputBinding:
    position: 0
    prefix: --chimScoreJunctionNonGTAG
    separate: yes
    sbg:cmdInclude: yes
  sbg:category: Chimeric Alignments
  sbg:toolDefaultValue: '-1'
  required: no
- type:
  - 'null'
  - int
  label: Min junction overhang
  description: Minimum overhang for a chimeric junction (int>=0).
  streamable: no
  id: '#chimJunctionOverhangMin'
  inputBinding:
    position: 0
    prefix: --chimJunctionOverhangMin
    separate: yes
    sbg:cmdInclude: yes
  sbg:category: Chimeric Alignments
  sbg:toolDefaultValue: '20'
  required: no
- type:
  - 'null'
  - name: quantMode
    symbols:
    - TranscriptomeSAM
    - GeneCounts
    type: enum
  label: Quantification mode
  description: Types of quantification requested. 'TranscriptomeSAM' option outputs
    SAM/BAM alignments to transcriptome into a separate file. With 'GeneCounts' option,
    STAR will count number of reads per gene while mapping.
  streamable: no
  id: '#quantMode'
  sbg:category: Quantification of Annotations
  sbg:toolDefaultValue: '-'
  required: no
- type:
  - 'null'
  - int
  label: Reads to process in 1st step
  description: 'Number of reads to process for the 1st step. 0: 1-step only, no 2nd
    pass; use very large number to map all reads in the first step (int>0).'
  streamable: no
  id: '#twopass1readsN'
  sbg:category: 2-pass mapping
  sbg:toolDefaultValue: '-1'
  required: no
- type:
  - 'null'
  - name: twopassMode
    symbols:
    - None
    - Basic
    type: enum
  label: Two-pass mode
  description: '2-pass mapping mode. None: 1-pass mapping; Basic: basic 2-pass mapping,
    with all 1st pass junctions inserted into the genome indices on the fly.'
  streamable: no
  id: '#twopassMode'
  inputBinding:
    position: 0
    prefix: --twopassMode
    separate: yes
    sbg:cmdInclude: yes
  sbg:category: 2-pass mapping
  sbg:toolDefaultValue: None
  required: no
- type:
  - 'null'
  - string
  label: Genome dir name
  description: Name of the directory which contains genome files (when genome.tar
    is uncompressed).
  streamable: no
  id: '#genomeDirName'
  inputBinding:
    position: 0
    prefix: --genomeDir
    separate: yes
    valueFrom:
      engine: '#cwl-js-engine'
      script: $job.inputs.genomeDirName || "genomeDir"
      class: Expression
    sbg:cmdInclude: yes
  sbg:category: Basic
  sbg:toolDefaultValue: genomeDir
  required: no
- type:
  - 'null'
  - name: sjdbInsertSave
    symbols:
    - Basic
    - All
    - None
    type: enum
  label: Save junction files
  description: 'Which files to save when sjdb junctions are inserted on the fly at
    the mapping step. None: not saving files at all; Basic: only small junction/transcript
    files; All: all files including big Genome, SA and SAindex. These files are output
    as archive.'
  streamable: no
  id: '#sjdbInsertSave'
  sbg:category: Splice junctions database
  sbg:toolDefaultValue: None
  required: no
- type:
  - 'null'
  - string
  label: Chromosome names
  description: Prefix for chromosome names in a GTF file (e.g. 'chr' for using ENSMEBL
    annotations with UCSC geneomes).
  streamable: no
  id: '#sjdbGTFchrPrefix'
  sbg:category: Splice junctions database
  sbg:toolDefaultValue: '-'
  required: no
- type:
  - 'null'
  - string
  label: Set exons feature
  description: Feature type in GTF file to be used as exons for building transcripts.
  streamable: no
  id: '#sjdbGTFfeatureExon'
  sbg:category: Splice junctions database
  sbg:toolDefaultValue: exon
  required: no
- type:
  - 'null'
  - string
  label: Exons' parents name
  description: Tag name to be used as exons's transcript-parents.
  streamable: no
  id: '#sjdbGTFtagExonParentTranscript'
  sbg:category: Splice junctions database
  sbg:toolDefaultValue: transcript_id
  required: no
- type:
  - 'null'
  - string
  label: Gene name
  description: Tag name to be used as exons's gene-parents.
  streamable: no
  id: '#sjdbGTFtagExonParentGene'
  sbg:category: Splice junctions database
  sbg:toolDefaultValue: gene_id
  required: no
- type:
  - 'null'
  - int
  label: '"Overhang" length'
  description: Length of the donor/acceptor sequence on each side of the junctions,
    ideally = (mate_length - 1) (int >= 0), if int = 0, splice junction database is
    not used.
  streamable: no
  id: '#sjdbOverhang'
  sbg:category: Splice junctions database
  sbg:toolDefaultValue: '100'
  required: no
- type:
  - 'null'
  - int
  label: Extra alignment score
  description: Extra alignment score for alignments that cross database junctions.
  streamable: no
  id: '#sjdbScore'
  sbg:category: Splice junctions database
  sbg:toolDefaultValue: '2'
  required: no
- type:
  - 'null'
  - items: File
    type: array
  label: Splice junction file
  description: Gene model annotations and/or known transcripts. No need to include
    this input, except in case of using "on the fly" annotations.
  streamable: no
  id: '#sjdbGTFfile'
  sbg:category: Basic
  sbg:fileTypes: GTF, GFF, TXT
  required: no
- type:
  - 'null'
  - items: int
    type: array
  label: Clip 3p bases
  description: Number of bases to clip from 3p of each mate. In case only one value
    is given, it will be assumed the same for both mates.
  streamable: no
  id: '#clip3pNbases'
  inputBinding:
    position: 0
    prefix: --clip3pNbases
    separate: yes
    itemSeparator: ' '
    sbg:cmdInclude: yes
  sbg:category: Read parameters
  sbg:toolDefaultValue: '0'
  required: no
- type:
  - 'null'
  - items: int
    type: array
  label: Clip 5p bases
  description: Number of bases to clip from 5p of each mate. In case only one value
    is given, it will be assumed the same for both mates.
  streamable: no
  id: '#clip5pNbases'
  inputBinding:
    position: 0
    prefix: --clip5pNbases
    separate: yes
    itemSeparator: ' '
    sbg:cmdInclude: yes
  sbg:category: Read parameters
  sbg:toolDefaultValue: '0'
  required: no
- type:
  - 'null'
  - items: string
    type: array
  label: Clip 3p adapter sequence
  description: Adapter sequence to clip from 3p of each mate. In case only one value
    is given, it will be assumed the same for both mates.
  streamable: no
  id: '#clip3pAdapterSeq'
  inputBinding:
    position: 0
    prefix: --clip3pAdapterSeq
    separate: yes
    itemSeparator: ' '
    sbg:cmdInclude: yes
  sbg:category: Read parameters
  sbg:toolDefaultValue: '-'
  required: no
- type:
  - 'null'
  - items: float
    type: array
  label: Max mismatches proportions
  description: Max proportion of mismatches for 3p adapter clipping for each mate.
    In case only one value is given, it will be assumed the same for both mates.
  streamable: no
  id: '#clip3pAdapterMMp'
  inputBinding:
    position: 0
    prefix: --clip3pAdapterMMp
    separate: yes
    itemSeparator: ' '
    sbg:cmdInclude: yes
  sbg:category: Read parameters
  sbg:toolDefaultValue: '0.1'
  required: no
- type:
  - 'null'
  - items: int
    type: array
  label: Clip 3p after adapter seq.
  description: Number of bases to clip from 3p of each mate after the adapter clipping.
    In case only one value is given, it will be assumed the same for both mates.
  streamable: no
  id: '#clip3pAfterAdapterNbases'
  inputBinding:
    position: 0
    prefix: --clip3pAfterAdapterNbases
    separate: yes
    itemSeparator: ' '
    sbg:cmdInclude: yes
  sbg:category: Read parameters
  sbg:toolDefaultValue: '0'
  required: no
- type:
  - 'null'
  - name: chimOutType
    symbols:
    - SeparateSAMold
    - Within
    type: enum
  label: Chimeric output type
  description: 'Type of chimeric output. SeparateSAMold: output old SAM into separate
    Chimeric.out.sam file; Within: output into main aligned SAM/BAM files.'
  streamable: no
  id: '#chimOutType'
  sbg:category: Chimeric Alignments
  sbg:toolDefaultValue: SeparateSAMold
  required: no
- type:
  - File
  label: Genome files
  description: Genome files created using STAR Genome Generate.
  streamable: no
  id: '#genome'
  sbg:category: Basic
  sbg:fileTypes: TAR
  required: yes
- type:
  - 'null'
  - int
  label: Max insert junctions
  description: Maximum number of junction to be inserted to the genome on the fly
    at the mapping stage, including those from annotations and those detected in the
    1st step of the 2-pass run.
  streamable: no
  id: '#limitSjdbInsertNsj'
  inputBinding:
    position: 0
    prefix: --limitSjdbInsertNsj
    separate: yes
    sbg:cmdInclude: yes
  sbg:category: Limits
  sbg:toolDefaultValue: '1000000'
  required: no
- type:
  - 'null'
  - name: quantTranscriptomeBan
    symbols:
    - IndelSoftclipSingleend
    - Singleend
    type: enum
  label: Prohibit alignment type
  description: 'Prohibit various alignment type. IndelSoftclipSingleend: prohibit
    indels, soft clipping and single-end alignments - compatible with RSEM; Singleend:
    prohibit single-end alignments.'
  streamable: no
  id: '#quantTranscriptomeBan'
  inputBinding:
    position: 0
    prefix: --quantTranscriptomeBan
    separate: yes
    sbg:cmdInclude: yes
  sbg:category: Quantification of Annotations
  sbg:toolDefaultValue: IndelSoftclipSingleend
  required: no
- type:
  - 'null'
  - int
  label: Limit BAM sorting memory
  description: Maximum available RAM for sorting BAM. If set to 0, it will be set
    to the genome index size.
  streamable: no
  id: '#limitBAMsortRAM'
  inputBinding:
    position: 0
    prefix: --limitBAMsortRAM
    separate: yes
    sbg:cmdInclude: yes
  sbg:category: Limits
  sbg:toolDefaultValue: '0'
  required: no
outputs:
- type:
  - 'null'
  - File
  label: Aligned SAM/BAM
  description: Aligned sequence in SAM/BAM format.
  streamable: no
  id: '#aligned_reads'
  outputBinding:
    glob:
      engine: '#cwl-js-engine'
      script: |-
        {
          if ($job.inputs.outSortingType == 'SortedByCoordinate') {
            sort_name = '.sortedByCoord'
          }
          else {
            sort_name = ''
          }
          if ($job.inputs.outSAMtype == 'BAM') {
            sam_name = "*.Aligned".concat( sort_name, '.out.bam')
          }
          else {
            sam_name = "*.Aligned.out.sam"
          }
          return sam_name
        }
      class: Expression
  sbg:fileTypes: SAM, BAM
- type:
  - 'null'
  - File
  label: Transcriptome alignments
  description: Alignments translated into transcript coordinates.
  streamable: no
  id: '#transcriptome_aligned_reads'
  outputBinding:
    glob: '*Transcriptome*'
  sbg:fileTypes: BAM
- type:
  - 'null'
  - File
  label: Reads per gene
  description: File with number of reads per gene. A read is counted if it overlaps
    (1nt or more) one and only one gene.
  streamable: no
  id: '#reads_per_gene'
  outputBinding:
    glob: '*ReadsPerGene*'
  sbg:fileTypes: TAB
- type:
  - 'null'
  - items: File
    type: array
  label: Log files
  description: Log files produced during alignment.
  streamable: no
  id: '#log_files'
  outputBinding:
    glob: '*Log*.out'
  sbg:fileTypes: OUT
- type:
  - 'null'
  - File
  label: Splice junctions
  description: High confidence collapsed splice junctions in tab-delimited format.
    Only junctions supported by uniquely mapping reads are reported.
  streamable: no
  id: '#splice_junctions'
  outputBinding:
    glob: '*SJ.out.tab'
  sbg:fileTypes: TAB
- type:
  - 'null'
  - File
  label: Chimeric junctions
  description: If chimSegmentMin in 'Chimeric Alignments' section is set to 0, 'Chimeric
    Junctions' won't be output.
  streamable: no
  id: '#chimeric_junctions'
  outputBinding:
    glob: '*Chimeric.out.junction'
  sbg:fileTypes: JUNCTION
- type:
  - 'null'
  - items: File
    type: array
  label: Unmapped reads
  description: Output of unmapped reads.
  streamable: no
  id: '#unmapped_reads'
  outputBinding:
    glob: '*Unmapped.out*'
  sbg:fileTypes: FASTQ
- type:
  - 'null'
  - File
  label: Intermediate genome files
  description: Archive with genome files produced when annotations are included on
    the fly (in the mapping step).
  streamable: no
  id: '#intermediate_genome'
  outputBinding:
    glob: '*_STARgenome.tar'
  sbg:fileTypes: TAR
- type:
  - 'null'
  - File
  label: Chimeric alignments
  description: Aligned Chimeric sequences SAM - if chimSegmentMin = 0, no Chimeric
    Alignment SAM and Chimeric Junctions outputs.
  streamable: no
  id: '#chimeric_alignments'
  outputBinding:
    glob: '*.Chimeric.out.sam'
  sbg:fileTypes: SAM
requirements:
- class: ExpressionEngineRequirement
  id: '#cwl-js-engine'
  requirements:
  - class: DockerRequirement
    dockerPull: rabix/js-engine
hints:
- class: DockerRequirement
  dockerPull: images.sbgenomics.com/ana_d/star:2.4.2a
  dockerImageId: a4b0ad2c3cae
- class: sbg:MemRequirement
  value: 60000
- class: sbg:CPURequirement
  value: 15
label: STAR
description: STAR is an ultrafast universal RNA-seq aligner. It has very high mapping
  speed, accurate alignment of contiguous and spliced reads, detection of polyA-tails,
  non-canonical splices and chimeric (fusion) junctions. It works with reads starting
  from lengths ~15 bases up to ~300 bases. In case of having longer reads, use of
  STAR Long is recommended.
class: CommandLineTool
arguments:
- position: 0
  separate: yes
  valueFrom:
    engine: '#cwl-js-engine'
    script: |-
      {
        file = [].concat($job.inputs.reads)[0].path
        extension = /(?:\.([^.]+))?$/.exec(file)[1]
        if (extension == "gz") {
          return "--readFilesCommand zcat"
        } else if (extension == "bz2") {
          return "--readFilesCommand bzcat"
        }
      }
    class: Expression
- position: 0
  separate: yes
  valueFrom:
    engine: '#cwl-js-engine'
    script: "{\t\n  var sjFormat = \"False\"\n  var gtfgffFormat = \"False\"\n  var
      list = $job.inputs.sjdbGTFfile\n  var paths_list = []\n  var joined_paths =
      \"\"\n  \n  if (list) {\n    list.forEach(function(f){return paths_list.push(f.path)})\n
      \   joined_paths = paths_list.join(\" \")\n\n\n    paths_list.forEach(function(f){\n
      \     ext = f.replace(/^.*\\./, '')\n      if (ext == \"gff\" || ext == \"gtf\")
      {\n        gtfgffFormat = \"True\"\n        return gtfgffFormat\n      }\n      if
      (ext == \"txt\") {\n        sjFormat = \"True\"\n        return sjFormat\n      }\n
      \   })\n\n    if ($job.inputs.sjdbGTFfile && $job.inputs.sjdbInsertSave != \"None\")
      {\n      if (sjFormat == \"True\") {\n        return \"--sjdbFileChrStartEnd
      \".concat(joined_paths)\n      }\n      else if (gtfgffFormat == \"True\") {\n
      \       return \"--sjdbGTFfile \".concat(joined_paths)\n      }\n    }\n  }\n}"
    class: Expression
- position: 0
  separate: yes
  valueFrom:
    engine: '#cwl-js-engine'
    script: "{\n  a = b = c = d = e = f = g = []\n  if ($job.inputs.sjdbGTFchrPrefix)
      {\n    a = [\"--sjdbGTFchrPrefix\", $job.inputs.sjdbGTFchrPrefix]\n  }\n  if
      ($job.inputs.sjdbGTFfeatureExon) {\n    b = [\"--sjdbGTFfeatureExon\", $job.inputs.sjdbGTFfeatureExon]\n
      \ }\n  if ($job.inputs.sjdbGTFtagExonParentTranscript) {\n    c = [\"--sjdbGTFtagExonParentTranscript\",
      $job.inputs.sjdbGTFtagExonParentTranscript]\n  }\n  if ($job.inputs.sjdbGTFtagExonParentGene)
      {\n    d = [\"--sjdbGTFtagExonParentGene\", $job.inputs.sjdbGTFtagExonParentGene]\n
      \ }\n  if ($job.inputs.sjdbOverhang) {\n    e = [\"--sjdbOverhang\", $job.inputs.sjdbOverhang]\n
      \ }\n  if ($job.inputs.sjdbScore) {\n    f = [\"--sjdbScore\", $job.inputs.sjdbScore]\n
      \ }\n  if ($job.inputs.sjdbInsertSave) {\n    g = [\"--sjdbInsertSave\", $job.inputs.sjdbInsertSave]\n
      \ }\n  \n  \n  \n  if ($job.inputs.sjdbInsertSave != \"None\" && $job.inputs.sjdbGTFfile)
      {\n    new_list = a.concat(b, c, d, e, f, g)\n    return new_list.join(\" \")\n
      \ }\n}"
    class: Expression
- position: 0
  separate: yes
  valueFrom:
    engine: '#cwl-js-engine'
    script: |-
      {
        if ($job.inputs.twopassMode == "Basic") {
          return "--twopass1readsN ".concat($job.inputs.twopass1readsN)
        }
      }
    class: Expression
- position: 0
  separate: yes
  valueFrom:
    engine: '#cwl-js-engine'
    script: |-
      {
        if ($job.inputs.chimOutType == "Within") {
          return "--chimOutType ".concat("Within", $job.inputs.outSAMtype)
        }
        else {
          return "--chimOutType SeparateSAMold"
        }
      }
    class: Expression
- position: 0
  separate: yes
  valueFrom:
    engine: '#cwl-js-engine'
    script: "{\n  var param_list = []\n  \n  function add_param(key, value){\n    if
      (value == \"\") {\n      return\n    }\n    else {\n      return param_list.push(key.concat(\":\",
      value))\n    }\n  }\n  \n  add_param('ID', \"1\")\n  if ($job.inputs.rg_seq_center)
      {\n    add_param('CN', $job.inputs.rg_seq_center)\n  } else if ([].concat($job.inputs.reads)[0].metadata.seq_center)
      {\n    add_param('CN', [].concat($job.inputs.reads)[0].metadata.seq_center)\n
      \ }\n  if ($job.inputs.rg_library_id) {\n    add_param('LB', $job.inputs.rg_library_id)\n
      \ } else if ([].concat($job.inputs.reads)[0].metadata.library_id) {\n    add_param('LB',
      [].concat($job.inputs.reads)[0].metadata.library_id)\n  }\n  if ($job.inputs.rg_mfl)
      {\n    add_param('PI', $job.inputs.rg_mfl)\n  } else if ([].concat($job.inputs.reads)[0].metadata.median_fragment_length)
      {\n    add_param('PI', [].concat($job.inputs.reads)[0].metadata.median_fragment_length)\n
      \ }\n  if ($job.inputs.rg_platform) {\n    add_param('PL', $job.inputs.rg_platform.replace(/
      /g,\"_\"))\n  } else if ([].concat($job.inputs.reads)[0].metadata.platform)
      {\n    add_param('PL', [].concat($job.inputs.reads)[0].metadata.platform.replace(/
      /g,\"_\"))\n  }\n  if ($job.inputs.rg_platform_unit_id) {\n    add_param('PU',
      $job.inputs.rg_platform_unit_id)\n  } else if ([].concat($job.inputs.reads)[0].metadata.platform_unit_id)
      {\n    add_param('PU', [].concat($job.inputs.reads)[0].metadata.platform_unit_id)\n
      \ }\n  if ($job.inputs.rg_sample_id) {\n    add_param('SM', $job.inputs.rg_sample_id)\n
      \ } else if ([].concat($job.inputs.reads)[0].metadata.sample_id) {\n    add_param('SM',
      [].concat($job.inputs.reads)[0].metadata.sample_id)\n  }\n  return \"--outSAMattrRGline
      \".concat(param_list.join(\" \"))\n}"
    class: Expression
- position: 0
  separate: yes
  valueFrom:
    engine: '#cwl-js-engine'
    script: |-
      {
        if ($job.inputs.sjdbGTFfile && $job.inputs.quantMode) {
          return "--quantMode ".concat($job.inputs.quantMode)
        }
      }
    class: Expression
- position: 100
  separate: yes
  valueFrom:
    engine: '#cwl-js-engine'
    script: "{\n  function sharedStart(array){\n  var A= array.concat().sort(), \n
      \     a1= A[0], a2= A[A.length-1], L= a1.length, i= 0;\n  while(i<L && a1.charAt(i)===
      a2.charAt(i)) i++;\n  return a1.substring(0, i);\n  }\n  path_list = []\n  arr
      = [].concat($job.inputs.reads)\n  arr.forEach(function(f){return path_list.push(f.path.replace(/\\\\/g,'/').replace(
      /.*\\//, '' ))})\n  common_prefix = sharedStart(path_list)\n  intermediate =
      common_prefix.replace( /\\-$|\\_$|\\.$/, '' ).concat(\"._STARgenome\")\n  source
      = \"./\".concat(intermediate)\n  destination = intermediate.concat(\".tar\")\n
      \ if ($job.inputs.sjdbGTFfile && $job.inputs.sjdbInsertSave && $job.inputs.sjdbInsertSave
      != \"None\") {\n    return \"&& tar -vcf \".concat(destination, \" \", source)\n
      \ }\n}"
    class: Expression
- position: 0
  prefix: --outFileNamePrefix
  separate: yes
  valueFrom:
    engine: '#cwl-js-engine'
    script: "{\n  function sharedStart(array){\n  var A= array.concat().sort(), \n
      \     a1= A[0], a2= A[A.length-1], L= a1.length, i= 0;\n  while(i<L && a1.charAt(i)===
      a2.charAt(i)) i++;\n  return a1.substring(0, i);\n  }\n  path_list = []\n  arr
      = [].concat($job.inputs.reads)\n  arr.forEach(function(f){return path_list.push(f.path.replace(/\\\\/g,'/').replace(
      /.*\\//, '' ))})\n  common_prefix = sharedStart(path_list)\n  return \"./\".concat(common_prefix.replace(
      /\\-$|\\_$|\\.$/, '' ), \".\")\n}"
    class: Expression
- position: 101
  separate: yes
  valueFrom:
    engine: '#cwl-js-engine'
    script: "{\n  function sharedStart(array){\n  var A= array.concat().sort(), \n
      \     a1= A[0], a2= A[A.length-1], L= a1.length, i= 0;\n  while(i<L && a1.charAt(i)===
      a2.charAt(i)) i++;\n  return a1.substring(0, i);\n  }\n  path_list = []\n  arr
      = [].concat($job.inputs.reads)\n  arr.forEach(function(f){return path_list.push(f.path.replace(/\\\\/g,'/').replace(
      /.*\\//, '' ))})\n  common_prefix = sharedStart(path_list)\n  mate1 = common_prefix.replace(
      /\\-$|\\_$|\\.$/, '' ).concat(\".Unmapped.out.mate1\")\n  mate2 = common_prefix.replace(
      /\\-$|\\_$|\\.$/, '' ).concat(\".Unmapped.out.mate2\")\n  mate1fq = mate1.concat(\".fastq\")\n
      \ mate2fq = mate2.concat(\".fastq\")\n  if ($job.inputs.outReadsUnmapped ==
      \"Fastx\" && arr.length > 1) {\n    return \"&& mv \".concat(mate1, \" \", mate1fq,
      \" && mv \", mate2, \" \", mate2fq)\n  }\n  else if ($job.inputs.outReadsUnmapped
      == \"Fastx\" && arr.length == 1) {\n    return \"&& mv \".concat(mate1, \" \",
      mate1fq)\n  }\n}"
    class: Expression
stdin: ''
stdout: ''
successCodes: []
temporaryFailCodes: []

sbg:validationErrors: []
sbg:sbgMaintained: no
sbg:latestRevision: 2
sbg:toolAuthor: Seven Bridges Genomics
sbg:createdOn: 1463601910
sbg:categories:
- Alignment
- RNA
sbg:contributors:
- tengfei
sbg:project: tengfei/quickstart
sbg:createdBy: tengfei
sbg:toolkitVersion: 2.4.2a
sbg:id: tengfei/quickstart/rna-seq-alignment-star-demo/2
sbg:license: Apache License 2.0
sbg:revision: 2
sbg:modifiedOn: 1463601974
sbg:modifiedBy: tengfei
sbg:revisionsInfo:
- sbg:modifiedBy: tengfei
  sbg:modifiedOn: 1463601910
  sbg:revision: 0
- sbg:modifiedBy: tengfei
  sbg:modifiedOn: 1463601952
  sbg:revision: 1
- sbg:modifiedBy: tengfei
  sbg:modifiedOn: 1463601974
  sbg:revision: 2
sbg:toolkit: STAR
id: '#tengfei/quickstart/rna-seq-alignment-star-demo/2'
inputs:
- type:
  - 'null'
  - items: File
    type: array
  label: sjdbGTFfile
  streamable: no
  id: '#sjdbGTFfile'
  sbg:x: 160.4999759
  sbg:y: 195.0833106
  required: no
- type:
  - items: File
    type: array
  label: fastq
  streamable: no
  id: '#fastq'
  sbg:x: 164.2499914
  sbg:y: 323.7499502
  sbg:includeInPorts: yes
  required: yes
- type:
  - File
  label: genomeFastaFiles
  streamable: no
  id: '#genomeFastaFiles'
  sbg:x: 167.7499601
  sbg:y: 469.9999106
  required: yes
- type:
  - 'null'
  - string
  label: Exons' parents name
  description: Tag name to be used as exons' transcript-parents.
  streamable: no
  id: '#sjdbGTFtagExonParentTranscript'
  sbg:category: Splice junctions db parameters
  sbg:x: 200.0
  sbg:y: 350.0
  sbg:toolDefaultValue: transcript_id
  required: no
- type:
  - 'null'
  - string
  label: Gene name
  description: Tag name to be used as exons' gene-parents.
  streamable: no
  id: '#sjdbGTFtagExonParentGene'
  sbg:category: Splice junctions db parameters
  sbg:x: 200.0
  sbg:y: 400.0
  sbg:toolDefaultValue: gene_id
  required: no
- type:
  - 'null'
  - int
  label: Max loci anchors
  description: Max number of loci anchors are allowed to map to (int>0).
  streamable: no
  id: '#winAnchorMultimapNmax'
  sbg:category: Windows, Anchors, Binning
  sbg:x: 200.0
  sbg:y: 450.0
  sbg:toolDefaultValue: '50'
  required: no
- type:
  - 'null'
  - int
  label: Max bins between anchors
  description: Max number of bins between two anchors that allows aggregation of anchors
    into one window (int>0).
  streamable: no
  id: '#winAnchorDistNbins'
  sbg:category: Windows, Anchors, Binning
  sbg:x: 200.0
  sbg:y: 500.0
  sbg:toolDefaultValue: '9'
  required: no
outputs:
- type:
  - 'null'
  - items: File
    type: array
  label: unmapped_reads
  streamable: no
  id: '#unmapped_reads'
  source: '#STAR.unmapped_reads'
  sbg:x: 766.2497863
  sbg:y: 159.5833091
  sbg:includeInPorts: yes
  required: no
- type:
  - 'null'
  - File
  label: transcriptome_aligned_reads
  streamable: no
  id: '#transcriptome_aligned_reads'
  source: '#STAR.transcriptome_aligned_reads'
  sbg:x: 1118.9998003
  sbg:y: 86.5833216
  sbg:includeInPorts: yes
  required: no
- type:
  - 'null'
  - File
  label: splice_junctions
  streamable: no
  id: '#splice_junctions'
  source: '#STAR.splice_junctions'
  sbg:x: 1282.3330177
  sbg:y: 167.499976
  sbg:includeInPorts: yes
  required: no
- type:
  - 'null'
  - File
  label: reads_per_gene
  streamable: no
  id: '#reads_per_gene'
  source: '#STAR.reads_per_gene'
  sbg:x: 1394.4163557
  sbg:y: 245.749964
  sbg:includeInPorts: yes
  required: no
- type:
  - 'null'
  - items: File
    type: array
  label: log_files
  streamable: no
  id: '#log_files'
  source: '#STAR.log_files'
  sbg:x: 1505.0830269
  sbg:y: 322.9999518
  sbg:includeInPorts: yes
  required: no
- type:
  - 'null'
  - File
  label: chimeric_junctions
  streamable: no
  id: '#chimeric_junctions'
  source: '#STAR.chimeric_junctions'
  sbg:x: 1278.7498062
  sbg:y: 446.7499567
  sbg:includeInPorts: yes
  required: no
- type:
  - 'null'
  - File
  label: intermediate_genome
  streamable: no
  id: '#intermediate_genome'
  source: '#STAR.intermediate_genome'
  sbg:x: 1408.9164783
  sbg:y: 386.0832876
  sbg:includeInPorts: yes
  required: no
- type:
  - 'null'
  - File
  label: chimeric_alignments
  streamable: no
  id: '#chimeric_alignments'
  source: '#STAR.chimeric_alignments'
  sbg:x: 1147.5831348
  sbg:y: 503.2499285
  sbg:includeInPorts: yes
  required: no
- type:
  - 'null'
  - File
  label: sorted_bam
  streamable: no
  id: '#sorted_bam'
  source: '#Picard_SortSam.sorted_bam'
  sbg:x: 934.2498228
  sbg:y: 557.2498436
  sbg:includeInPorts: yes
  required: no
- type:
  - 'null'
  - File
  label: result
  streamable: no
  id: '#result'
  source: '#SBG_FASTQ_Quality_Detector.result'
  sbg:x: 1431.6666548
  sbg:y: 644.9999898
  sbg:includeInPorts: yes
  required: no
requirements:
- class: CreateFileRequirement
  fileDef: []
hints:
- class: sbg:AWSInstanceType
  value: c3.8xlarge
label: RNA-seq Alignment - STAR
description: "Alignment to a reference genome and transcriptome presents the first
  step of RNA-Seq analysis. This pipeline uses STAR, an ultrafast RNA-seq aligner
  capable of mapping full length RNA sequences and detecting de novo canonical junctions,
  non-canonical splices, and chimeric (fusion) transcripts. It is optimized for mammalian
  sequence reads, but fine tuning of its parameters enables customization to satisfy
  unique needs.\n\nSTAR accepts one file per sample (or two files for paired-end data).
  \ \nSplice junction annotations can optionally be collected from splice junction
  databases. Set the \"Overhang length\" parameter to a value larger than zero in
  order to use splice junction databases. For constant read length, this value should
  (ideally) be equal to mate length decreased by 1; for long reads with non-constant
  length, this value should be 100 (pipeline default). \nFastQC Analysis on FASTQ
  files reveals read length distribution. STAR can detect chimeric transcripts, but
  parameter \"Min segment length\" in \"Chimeric Alignments\" category must be adjusted
  to a desired minimum chimeric segment length. Aligned reads are reported in BAM
  format and can be viewed in a genome browser (such as IGV). A file containing detected
  splice junctions is also produced.\n\nUnmapped reads are reported in FASTQ format
  and can be included in an output BAM file. The \"Output unmapped reads\" and \"Write
  unmapped in SAM\" parameters enable unmapped output type selection."
class: Workflow
steps:
- id: '#STAR_Genome_Generate'
  inputs:
  - id: '#STAR_Genome_Generate.sjdbScore'
  - id: '#STAR_Genome_Generate.sjdbOverhang'
  - id: '#STAR_Genome_Generate.sjdbGTFtagExonParentTranscript'
    source: '#sjdbGTFtagExonParentTranscript'
  - id: '#STAR_Genome_Generate.sjdbGTFtagExonParentGene'
    source: '#sjdbGTFtagExonParentGene'
  - id: '#STAR_Genome_Generate.sjdbGTFfile'
    source: '#sjdbGTFfile'
  - id: '#STAR_Genome_Generate.sjdbGTFfeatureExon'
  - id: '#STAR_Genome_Generate.sjdbGTFchrPrefix'
  - id: '#STAR_Genome_Generate.genomeSAsparseD'
  - id: '#STAR_Genome_Generate.genomeSAindexNbases'
  - id: '#STAR_Genome_Generate.genomeFastaFiles'
    source: '#genomeFastaFiles'
  - id: '#STAR_Genome_Generate.genomeChrBinNbits'
  outputs:
  - id: '#STAR_Genome_Generate.genome'
  hints: []
  run:
    sbg:validationErrors: []
    sbg:sbgMaintained: no
    sbg:latestRevision: 1
    sbg:job:
      allocatedResources:
        mem: 60000
        cpu: 15
      inputs:
        sjdbScore: 0
        sjdbGTFfeatureExon: sjdbGTFfeatureExon
        sjdbOverhang: 0
        sjdbGTFtagExonParentTranscript: sjdbGTFtagExonParentTranscript
        genomeChrBinNbits: genomeChrBinNbits
        genomeSAsparseD: 0
        sjdbGTFfile:
        - size: 0
          secondaryFiles: []
          class: File
          path: /demo/test-files/chr20.gtf
        sjdbGTFtagExonParentGene: sjdbGTFtagExonParentGene
        genomeFastaFiles:
          size: 0
          secondaryFiles: []
          class: File
          path: /sbgenomics/test-data/chr20.fa
        sjdbGTFchrPrefix: sjdbGTFchrPrefix
        genomeSAindexNbases: 0
    sbg:toolAuthor: Alexander Dobin/CSHL
    sbg:createdOn: 1450911469
    sbg:categories:
    - Alignment
    sbg:contributors:
    - bix-demo
    sbg:links:
    - id: https://github.com/alexdobin/STAR
      label: Homepage
    - id: https://github.com/alexdobin/STAR/releases
      label: Releases
    - id: https://github.com/alexdobin/STAR/blob/master/doc/STARmanual.pdf
      label: Manual
    - id: https://groups.google.com/forum/#!forum/rna-star
      label: Support
    - id: http://www.ncbi.nlm.nih.gov/pubmed/23104886
      label: Publication
    sbg:project: bix-demo/star-2-4-2a-demo
    sbg:createdBy: bix-demo
    sbg:toolkitVersion: 2.4.2a
    sbg:id: sevenbridges/public-apps/star-genome-generate/1
    sbg:license: GNU General Public License v3.0 only
    sbg:revision: 1
    sbg:cmdPreview: mkdir genomeDir && /opt/STAR --runMode genomeGenerate --genomeDir
      ./genomeDir --runThreadN 15 --genomeFastaFiles /sbgenomics/test-data/chr20.fa
      --genomeChrBinNbits genomeChrBinNbits --genomeSAindexNbases 0 --genomeSAsparseD
      0 --sjdbGTFfeatureExon sjdbGTFfeatureExon --sjdbGTFtagExonParentTranscript sjdbGTFtagExonParentTranscript
      --sjdbGTFtagExonParentGene sjdbGTFtagExonParentGene --sjdbOverhang 0 --sjdbScore
      0 --sjdbGTFchrPrefix sjdbGTFchrPrefix  --sjdbGTFfile /demo/test-files/chr20.gtf  &&
      tar -vcf genome.tar ./genomeDir /sbgenomics/test-data/chr20.fa
    sbg:modifiedOn: 1450911470
    sbg:modifiedBy: bix-demo
    sbg:revisionsInfo:
    - sbg:modifiedBy: bix-demo
      sbg:modifiedOn: 1450911469
      sbg:revision: 0
    - sbg:modifiedBy: bix-demo
      sbg:modifiedOn: 1450911470
      sbg:revision: 1
    sbg:toolkit: STAR
    id: sevenbridges/public-apps/star-genome-generate/1
    inputs:
    - type:
      - 'null'
      - int
      label: Extra alignment score
      description: Extra alignment score for alignments that cross database junctions.
      streamable: no
      id: '#sjdbScore'
      inputBinding:
        position: 0
        prefix: --sjdbScore
        separate: yes
        sbg:cmdInclude: yes
      sbg:category: Splice junctions db parameters
      sbg:includeInPorts: yes
      sbg:toolDefaultValue: '2'
      required: no
    - type:
      - 'null'
      - int
      label: '"Overhang" length'
      description: Length of the donor/acceptor sequence on each side of the junctions,
        ideally = (mate_length - 1) (int >= 0), if int = 0, splice junction database
        is not used.
      streamable: no
      id: '#sjdbOverhang'
      inputBinding:
        position: 0
        prefix: --sjdbOverhang
        separate: yes
        sbg:cmdInclude: yes
      sbg:category: Splice junctions db parameters
      sbg:includeInPorts: yes
      sbg:toolDefaultValue: '100'
      required: no
    - type:
      - 'null'
      - string
      label: Exons' parents name
      description: Tag name to be used as exons' transcript-parents.
      streamable: no
      id: '#sjdbGTFtagExonParentTranscript'
      inputBinding:
        position: 0
        prefix: --sjdbGTFtagExonParentTranscript
        separate: yes
        sbg:cmdInclude: yes
      sbg:category: Splice junctions db parameters
      sbg:toolDefaultValue: transcript_id
      required: no
    - type:
      - 'null'
      - string
      label: Gene name
      description: Tag name to be used as exons' gene-parents.
      streamable: no
      id: '#sjdbGTFtagExonParentGene'
      inputBinding:
        position: 0
        prefix: --sjdbGTFtagExonParentGene
        separate: yes
        sbg:cmdInclude: yes
      sbg:category: Splice junctions db parameters
      sbg:toolDefaultValue: gene_id
      required: no
    - type:
      - 'null'
      - items: File
        type: array
      label: Splice junction file
      description: Gene model annotations and/or known transcripts.
      streamable: no
      id: '#sjdbGTFfile'
      sbg:category: Basic
      sbg:fileTypes: GTF, GFF, TXT
      required: no
    - type:
      - 'null'
      - string
      label: Set exons feature
      description: Feature type in GTF file to be used as exons for building transcripts.
      streamable: no
      id: '#sjdbGTFfeatureExon'
      inputBinding:
        position: 0
        prefix: --sjdbGTFfeatureExon
        separate: yes
        sbg:cmdInclude: yes
      sbg:category: Splice junctions db parameters
      sbg:toolDefaultValue: exon
      required: no
    - type:
      - 'null'
      - string
      label: Chromosome names
      description: Prefix for chromosome names in a GTF file (e.g. 'chr' for using
        ENSMEBL annotations with UCSC geneomes).
      streamable: no
      id: '#sjdbGTFchrPrefix'
      inputBinding:
        position: 0
        prefix: --sjdbGTFchrPrefix
        separate: yes
        sbg:cmdInclude: yes
      sbg:category: Splice junctions db parameters
      sbg:toolDefaultValue: '-'
      required: no
    - type:
      - 'null'
      - int
      label: Suffux array sparsity
      description: 'Distance between indices: use bigger numbers to decrease needed
        RAM at the cost of mapping speed reduction (int>0).'
      streamable: no
      id: '#genomeSAsparseD'
      inputBinding:
        position: 0
        prefix: --genomeSAsparseD
        separate: yes
        sbg:cmdInclude: yes
      sbg:category: Genome generation parameters
      sbg:toolDefaultValue: '1'
      required: no
    - type:
      - 'null'
      - int
      label: Pre-indexing string length
      description: Length (bases) of the SA pre-indexing string. Typically between
        10 and 15. Longer strings will use much more memory, but allow faster searches.
        For small genomes, this number needs to be scaled down, with a typical value
        of min(14, log2(GenomeLength)/2 - 1). For example, for 1 megaBase genome,
        this is equal to 9, for 100 kiloBase genome, this is equal to 7.
      streamable: no
      id: '#genomeSAindexNbases'
      inputBinding:
        position: 0
        prefix: --genomeSAindexNbases
        separate: yes
        sbg:cmdInclude: yes
      sbg:category: Genome generation parameters
      sbg:toolDefaultValue: '14'
      required: no
    - type:
      - File
      label: Genome fasta files
      description: Reference sequence to which to align the reads.
      streamable: no
      id: '#genomeFastaFiles'
      inputBinding:
        position: 0
        prefix: --genomeFastaFiles
        separate: yes
        sbg:cmdInclude: yes
      sbg:category: Basic
      sbg:fileTypes: FASTA, FA
      required: yes
    - type:
      - 'null'
      - string
      label: Bins size
      description: 'Set log2(chrBin), where chrBin is the size (bits) of the bins
        for genome storage: each chromosome will occupy an integer number of bins.
        If you are using a genome with a large (>5,000) number of chrosomes/scaffolds,
        you may need to reduce this number to reduce RAM consumption. The following
        scaling is recomended: genomeChrBinNbits = min(18, log2(GenomeLength/NumberOfReferences)).
        For example, for 3 gigaBase genome with 100,000 chromosomes/scaffolds, this
        is equal to 15.'
      streamable: no
      id: '#genomeChrBinNbits'
      inputBinding:
        position: 0
        prefix: --genomeChrBinNbits
        separate: yes
        sbg:cmdInclude: yes
      sbg:category: Genome generation parameters
      sbg:toolDefaultValue: '18'
      required: no
    outputs:
    - type:
      - 'null'
      - File
      label: Genome Files
      description: Genome files comprise binary genome sequence, suffix arrays, text
        chromosome names/lengths, splice junctions coordinates, and transcripts/genes
        information.
      streamable: no
      id: '#genome'
      outputBinding:
        glob: '*.tar'
      sbg:fileTypes: TAR
    requirements:
    - class: ExpressionEngineRequirement
      id: '#cwl-js-engine'
      requirements:
      - class: DockerRequirement
        dockerPull: rabix/js-engine
    hints:
    - class: DockerRequirement
      dockerPull: images.sbgenomics.com/ana_d/star:2.4.2a
      dockerImageId: a4b0ad2c3cae
    - class: sbg:CPURequirement
      value: 15
    - class: sbg:MemRequirement
      value: 60000
    label: STAR Genome Generate
    description: STAR Genome Generate is a tool that generates genome index files.
      One set of files should be generated per each genome/annotation combination.
      Once produced, these files could be used as long as genome/annotation combination
      stays the same. Also, STAR Genome Generate which produced these files and STAR
      aligner using them must be the same toolkit version.
    class: CommandLineTool
    arguments:
    - position: 99
      separate: yes
      valueFrom: '&& tar -vcf genome.tar ./genomeDir'
    - position: 0
      separate: yes
      valueFrom:
        engine: '#cwl-js-engine'
        script: "{\t\n  var sjFormat = \"False\"\n  var gtfgffFormat = \"False\"\n
          \ var list = $job.inputs.sjdbGTFfile\n  var paths_list = []\n  var joined_paths
          = \"\"\n  \n  if (list) {\n    list.forEach(function(f){return paths_list.push(f.path)})\n
          \   joined_paths = paths_list.join(\" \")\n\n\n    paths_list.forEach(function(f){\n
          \     ext = f.replace(/^.*\\./, '')\n      if (ext == \"gff\" || ext ==
          \"gtf\") {\n        gtfgffFormat = \"True\"\n        return gtfgffFormat\n
          \     }\n      if (ext == \"txt\") {\n        sjFormat = \"True\"\n        return
          sjFormat\n      }\n    })\n\n    if ($job.inputs.sjdbGTFfile && $job.inputs.sjdbInsertSave
          != \"None\") {\n      if (sjFormat == \"True\") {\n        return \"--sjdbFileChrStartEnd
          \".concat(joined_paths)\n      }\n      else if (gtfgffFormat == \"True\")
          {\n        return \"--sjdbGTFfile \".concat(joined_paths)\n      }\n    }\n
          \ }\n}"
        class: Expression
    stdin: ''
    stdout: ''
    successCodes: []
    temporaryFailCodes: []
    x: 384.0832266
    'y': 446.4998957
  sbg:x: 100.0
  sbg:y: 200.0
- id: '#SBG_FASTQ_Quality_Detector'
  inputs:
  - id: '#SBG_FASTQ_Quality_Detector.fastq'
    source: '#fastq'
  outputs:
  - id: '#SBG_FASTQ_Quality_Detector.result'
  hints: []
  run:
    sbg:validationErrors: []
    sbg:sbgMaintained: no
    sbg:latestRevision: 3
    sbg:job:
      allocatedResources:
        mem: 1000
        cpu: 1
      inputs:
        fastq:
          size: 0
          secondaryFiles: []
          class: File
          path: /path/to/fastq.ext
    sbg:toolAuthor: Seven Bridges Genomics
    sbg:createdOn: 1450911312
    sbg:categories:
    - FASTQ-Processing
    sbg:contributors:
    - bix-demo
    sbg:project: bix-demo/sbgtools-demo
    sbg:createdBy: bix-demo
    sbg:id: sevenbridges/public-apps/sbg-fastq-quality-detector/3
    sbg:license: Apache License 2.0
    sbg:revision: 3
    sbg:cmdPreview: python /opt/sbg_fastq_quality_scale_detector.py --fastq /path/to/fastq.ext
      /path/to/fastq.ext
    sbg:modifiedOn: 1450911314
    sbg:modifiedBy: bix-demo
    sbg:revisionsInfo:
    - sbg:modifiedBy: bix-demo
      sbg:modifiedOn: 1450911312
      sbg:revision: 0
    - sbg:modifiedBy: bix-demo
      sbg:modifiedOn: 1450911314
      sbg:revision: 3
    - sbg:modifiedBy: bix-demo
      sbg:modifiedOn: 1450911313
      sbg:revision: 1
    - sbg:modifiedBy: bix-demo
      sbg:modifiedOn: 1450911313
      sbg:revision: 2
    sbg:toolkit: SBGTools
    id: sevenbridges/public-apps/sbg-fastq-quality-detector/3
    inputs:
    - type:
      - File
      label: Fastq
      description: FASTQ file.
      streamable: no
      id: '#fastq'
      inputBinding:
        position: 0
        prefix: --fastq
        separate: yes
        sbg:cmdInclude: yes
      required: yes
    outputs:
    - type:
      - 'null'
      - File
      label: Result
      description: Source FASTQ file with updated metadata.
      streamable: no
      id: '#result'
      outputBinding:
        glob: '*.fastq'
      sbg:fileTypes: FASTQ
    requirements:
    - class: CreateFileRequirement
      fileDef: []
    hints:
    - class: DockerRequirement
      dockerPull: images.sbgenomics.com/tziotas/sbg_fastq_quality_scale_detector:1.0
      dockerImageId: ''
    - class: sbg:CPURequirement
      value: 1
    - class: sbg:MemRequirement
      value: 1000
    label: SBG FASTQ Quality Detector
    description: FASTQ Quality Scale Detector detects which quality encoding scheme
      was used in your reads and automatically enters the proper value in the "Quality
      Scale" metadata field.
    class: CommandLineTool
    arguments: []
    stdin: ''
    stdout: ''
    successCodes: []
    temporaryFailCodes: []
    x: 375.3333179
    'y': 323.5833156
  sbg:x: 300.0
  sbg:y: 200.0
- id: '#Picard_SortSam'
  inputs:
  - id: '#Picard_SortSam.validation_stringency'
    default: SILENT
  - id: '#Picard_SortSam.sort_order'
    default: Coordinate
  - id: '#Picard_SortSam.quiet'
  - id: '#Picard_SortSam.output_type'
  - id: '#Picard_SortSam.memory_per_job'
  - id: '#Picard_SortSam.max_records_in_ram'
  - id: '#Picard_SortSam.input_bam'
    source: '#STAR.aligned_reads'
  - id: '#Picard_SortSam.create_index'
    default: 'True'
  - id: '#Picard_SortSam.compression_level'
  outputs:
  - id: '#Picard_SortSam.sorted_bam'
  hints: []
  run:
    sbg:validationErrors: []
    sbg:sbgMaintained: no
    sbg:latestRevision: 2
    sbg:job:
      allocatedResources:
        mem: 2048
        cpu: 1
      inputs:
        sort_order: Coordinate
        input_bam:
          path: /root/dir/example.tested.bam
        memory_per_job: 2048
        output_type: ~
        create_index: ~
    sbg:toolAuthor: Broad Institute
    sbg:createdOn: 1450911168
    sbg:categories:
    - SAM/BAM-Processing
    sbg:contributors:
    - bix-demo
    sbg:links:
    - id: http://broadinstitute.github.io/picard/index.html
      label: Homepage
    - id: https://github.com/broadinstitute/picard/releases/tag/1.138
      label: Source Code
    - id: http://broadinstitute.github.io/picard/
      label: Wiki
    - id: https://github.com/broadinstitute/picard/zipball/master
      label: Download
    - id: http://broadinstitute.github.io/picard/
      label: Publication
    sbg:project: bix-demo/picard-1-140-demo
    sbg:createdBy: bix-demo
    sbg:toolkitVersion: '1.140'
    sbg:id: sevenbridges/public-apps/picard-sortsam-1-140/2
    sbg:license: MIT License, Apache 2.0 Licence
    sbg:revision: 2
    sbg:cmdPreview: java -Xmx2048M -jar /opt/picard-tools-1.140/picard.jar SortSam
      OUTPUT=example.tested.sorted.bam INPUT=/root/dir/example.tested.bam SORT_ORDER=coordinate   INPUT=/root/dir/example.tested.bam
      SORT_ORDER=coordinate  /root/dir/example.tested.bam
    sbg:modifiedOn: 1450911170
    sbg:modifiedBy: bix-demo
    sbg:revisionsInfo:
    - sbg:modifiedBy: bix-demo
      sbg:modifiedOn: 1450911168
      sbg:revision: 0
    - sbg:modifiedBy: bix-demo
      sbg:modifiedOn: 1450911169
      sbg:revision: 1
    - sbg:modifiedBy: bix-demo
      sbg:modifiedOn: 1450911170
      sbg:revision: 2
    sbg:toolkit: Picard
    id: sevenbridges/public-apps/picard-sortsam-1-140/2
    inputs:
    - type:
      - 'null'
      - name: validation_stringency
        symbols:
        - STRICT
        - LENIENT
        - SILENT
        type: enum
      label: Validation stringency
      description: 'Validation stringency for all SAM files read by this program.
        Setting stringency to SILENT can improve performance when processing a BAM
        file in which variable-length data (read, qualities, tags) do not otherwise
        need to be decoded. This option can be set to ''null'' to clear the default
        value. Possible values: {STRICT, LENIENT, SILENT}.'
      streamable: no
      id: '#validation_stringency'
      inputBinding:
        position: 0
        prefix: VALIDATION_STRINGENCY=
        separate: no
        valueFrom:
          engine: '#cwl-js-engine'
          script: |-
            {
              if ($job.inputs.validation_stringency)
              {
                return $job.inputs.validation_stringency
              }
              else
              {
                return "SILENT"
              }
            }
          class: Expression
        sbg:cmdInclude: yes
      sbg:category: Other input types
      sbg:toolDefaultValue: SILENT
      required: no
    - type:
      - name: sort_order
        symbols:
        - Unsorted
        - Queryname
        - Coordinate
        type: enum
      label: Sort order
      description: 'Sort order of the output file. Possible values: {unsorted, queryname,
        coordinate}.'
      streamable: no
      id: '#sort_order'
      inputBinding:
        position: 3
        prefix: SORT_ORDER=
        separate: no
        valueFrom:
          engine: '#cwl-js-engine'
          script: |-
            {
              p = $job.inputs.sort_order.toLowerCase()
              return p
            }
          class: Expression
        sbg:cmdInclude: yes
      sbg:category: Other input types
      sbg:toolDefaultValue: Coordinate
      sbg:altPrefix: SO
      required: yes
    - type:
      - 'null'
      - name: quiet
        symbols:
        - 'True'
        - 'False'
        type: enum
      label: Quiet
      description: 'This parameter indicates whether to suppress job-summary info
        on System.err. This option can be set to ''null'' to clear the default value.
        Possible values: {true, false}.'
      streamable: no
      id: '#quiet'
      inputBinding:
        position: 0
        prefix: QUIET=
        separate: no
        sbg:cmdInclude: yes
      sbg:category: Other input types
      sbg:toolDefaultValue: 'False'
      required: no
    - type:
      - 'null'
      - name: output_type
        symbols:
        - BAM
        - SAM
        - SAME AS INPUT
        type: enum
      label: Output format
      description: Since Picard tools can output both SAM and BAM files, user can
        choose the format of the output file.
      streamable: no
      id: '#output_type'
      sbg:category: Other input types
      sbg:toolDefaultValue: SAME AS INPUT
      required: no
    - type:
      - 'null'
      - int
      label: Memory per job
      description: Amount of RAM memory to be used per job. Defaults to 2048 MB for
        single threaded jobs.
      streamable: no
      id: '#memory_per_job'
      sbg:toolDefaultValue: '2048'
      required: no
    - type:
      - 'null'
      - int
      label: Max records in RAM
      description: When writing SAM files that need to be sorted, this parameter will
        specify the number of records stored in RAM before spilling to disk. Increasing
        this number reduces the number of file handles needed to sort a SAM file,
        and increases the amount of RAM needed. This option can be set to 'null' to
        clear the default value.
      streamable: no
      id: '#max_records_in_ram'
      inputBinding:
        position: 0
        prefix: MAX_RECORDS_IN_RAM=
        separate: no
        sbg:cmdInclude: yes
      sbg:category: Other input types
      sbg:toolDefaultValue: '500000'
      required: no
    - type:
      - File
      label: Input BAM
      description: The BAM or SAM file to sort.
      streamable: no
      id: '#input_bam'
      inputBinding:
        position: 1
        prefix: INPUT=
        separate: no
        sbg:cmdInclude: yes
      sbg:category: File inputs
      sbg:fileTypes: BAM, SAM
      sbg:altPrefix: I
      required: yes
    - type:
      - 'null'
      - name: create_index
        symbols:
        - 'True'
        - 'False'
        type: enum
      label: Create index
      description: 'This parameter indicates whether to create a BAM index when writing
        a coordinate-sorted BAM file. This option can be set to ''null'' to clear
        the default value. Possible values: {true, false}.'
      streamable: no
      id: '#create_index'
      inputBinding:
        position: 5
        prefix: CREATE_INDEX=
        separate: no
        sbg:cmdInclude: yes
      sbg:category: Other input types
      sbg:toolDefaultValue: 'False'
      required: no
    - type:
      - 'null'
      - int
      label: Compression level
      description: Compression level for all compressed files created (e.g. BAM and
        GELI). This option can be set to 'null' to clear the default value.
      streamable: no
      id: '#compression_level'
      inputBinding:
        position: 0
        prefix: COMPRESSION_LEVEL=
        separate: no
        sbg:cmdInclude: yes
      sbg:category: Other input types
      sbg:toolDefaultValue: '5'
      required: no
    outputs:
    - type:
      - 'null'
      - File
      label: Sorted BAM/SAM
      description: Sorted BAM or SAM file.
      streamable: no
      id: '#sorted_bam'
      outputBinding:
        glob: '*.sorted.?am'
      sbg:fileTypes: BAM, SAM
    requirements:
    - class: ExpressionEngineRequirement
      id: '#cwl-js-engine'
      requirements:
      - class: DockerRequirement
        dockerPull: rabix/js-engine
      engineCommand: cwl-engine.js
    hints:
    - class: DockerRequirement
      dockerPull: images.sbgenomics.com/mladenlsbg/picard:1.140
      dockerImageId: eab0e70b6629
    - class: sbg:CPURequirement
      value: 1
    - class: sbg:MemRequirement
      value:
        engine: '#cwl-js-engine'
        script: "{\n  if($job.inputs.memory_per_job){\n  \treturn $job.inputs.memory_per_job\n
          \ }\n  \treturn 2048\n}"
        class: Expression
    label: Picard SortSam
    description: Picard SortSam sorts the input SAM or BAM. Input and output formats
      are determined by the file extension.
    class: CommandLineTool
    arguments:
    - position: 0
      prefix: OUTPUT=
      separate: no
      valueFrom:
        engine: '#cwl-js-engine'
        script: "{\n  filename = $job.inputs.input_bam.path\n  ext = $job.inputs.output_type\n\nif
          (ext === \"BAM\")\n{\n    return filename.split('.').slice(0, -1).concat(\"sorted.bam\").join(\".\").replace(/^.*[\\\\\\/]/,
          '')\n    }\n\nelse if (ext === \"SAM\")\n{\n    return filename.split('.').slice(0,
          -1).concat(\"sorted.sam\").join('.').replace(/^.*[\\\\\\/]/, '')\n}\n\nelse
          \n{\n\treturn filename.split('.').slice(0, -1).concat(\"sorted.\"+filename.split('.').slice(-1)[0]).join(\".\").replace(/^.*[\\\\\\/]/,
          '')\n}\n}"
        class: Expression
    - position: 1000
      separate: yes
      valueFrom:
        engine: '#cwl-js-engine'
        script: "{\n  filename = $job.inputs.input_bam.path\n  \n  /* figuring out
          output file type */\n  ext = $job.inputs.output_type\n  if (ext === \"BAM\")\n
          \ {\n    out_extension = \"BAM\"\n  }\n  else if (ext === \"SAM\")\n  {\n
          \   out_extension = \"SAM\"\n  }\n  else \n  {\n\tout_extension = filename.split('.').slice(-1)[0].toUpperCase()\n
          \ }  \n  \n  /* if exist moving .bai in bam.bai */\n  if ($job.inputs.create_index
          === 'True' && $job.inputs.sort_order === 'Coordinate' && out_extension ==
          \"BAM\")\n  {\n    \n    old_name = filename.split('.').slice(0, -1).concat('sorted.bai').join('.').replace(/^.*[\\\\\\/]/,
          '')\n    new_name = filename.split('.').slice(0, -1).concat('sorted.bam.bai').join('.').replace(/^.*[\\\\\\/]/,
          '')\n    return \"; mv \" + \" \" + old_name + \" \" + new_name\n  }\n\n}"
        class: Expression
    stdin: ''
    stdout: ''
    successCodes: []
    temporaryFailCodes: []
    x: 773.0831807
    'y': 470.9165939
  sbg:x: 500.0
  sbg:y: 200.0
- id: '#STAR'
  inputs:
  - id: '#STAR.winFlankNbins'
  - id: '#STAR.winBinNbits'
  - id: '#STAR.winAnchorMultimapNmax'
    source: '#winAnchorMultimapNmax'
  - id: '#STAR.winAnchorDistNbins'
    source: '#winAnchorDistNbins'
  - id: '#STAR.twopassMode'
  - id: '#STAR.twopass1readsN'
  - id: '#STAR.sjdbScore'
  - id: '#STAR.sjdbOverhang'
    default: 100
  - id: '#STAR.sjdbInsertSave'
  - id: '#STAR.sjdbGTFtagExonParentTranscript'
  - id: '#STAR.sjdbGTFtagExonParentGene'
  - id: '#STAR.sjdbGTFfile'
    source: '#sjdbGTFfile'
  - id: '#STAR.sjdbGTFfeatureExon'
  - id: '#STAR.sjdbGTFchrPrefix'
  - id: '#STAR.seedSearchStartLmaxOverLread'
  - id: '#STAR.seedSearchStartLmax'
  - id: '#STAR.seedSearchLmax'
  - id: '#STAR.seedPerWindowNmax'
  - id: '#STAR.seedPerReadNmax'
  - id: '#STAR.seedNoneLociPerWindow'
  - id: '#STAR.seedMultimapNmax'
  - id: '#STAR.scoreStitchSJshift'
  - id: '#STAR.scoreInsOpen'
  - id: '#STAR.scoreInsBase'
  - id: '#STAR.scoreGenomicLengthLog2scale'
  - id: '#STAR.scoreGapNoncan'
  - id: '#STAR.scoreGapGCAG'
  - id: '#STAR.scoreGapATAC'
  - id: '#STAR.scoreGap'
  - id: '#STAR.scoreDelOpen'
  - id: '#STAR.scoreDelBase'
  - id: '#STAR.rg_seq_center'
  - id: '#STAR.rg_sample_id'
  - id: '#STAR.rg_platform_unit_id'
  - id: '#STAR.rg_platform'
  - id: '#STAR.rg_mfl'
  - id: '#STAR.rg_library_id'
  - id: '#STAR.reads'
    source: '#SBG_FASTQ_Quality_Detector.result'
  - id: '#STAR.readMatesLengthsIn'
  - id: '#STAR.readMapNumber'
  - id: '#STAR.quantTranscriptomeBan'
  - id: '#STAR.quantMode'
    default: TranscriptomeSAM
  - id: '#STAR.outSortingType'
    default: SortedByCoordinate
  - id: '#STAR.outSJfilterReads'
  - id: '#STAR.outSJfilterOverhangMin'
  - id: '#STAR.outSJfilterIntronMaxVsReadN'
  - id: '#STAR.outSJfilterDistToOtherSJmin'
  - id: '#STAR.outSJfilterCountUniqueMin'
  - id: '#STAR.outSJfilterCountTotalMin'
  - id: '#STAR.outSAMunmapped'
  - id: '#STAR.outSAMtype'
    default: BAM
  - id: '#STAR.outSAMstrandField'
  - id: '#STAR.outSAMreadID'
  - id: '#STAR.outSAMprimaryFlag'
  - id: '#STAR.outSAMorder'
  - id: '#STAR.outSAMmode'
  - id: '#STAR.outSAMmapqUnique'
  - id: '#STAR.outSAMheaderPG'
  - id: '#STAR.outSAMheaderHD'
  - id: '#STAR.outSAMflagOR'
  - id: '#STAR.outSAMflagAND'
  - id: '#STAR.outSAMattributes'
  - id: '#STAR.outReadsUnmapped'
    default: Fastx
  - id: '#STAR.outQSconversionAdd'
  - id: '#STAR.outFilterType'
  - id: '#STAR.outFilterScoreMinOverLread'
  - id: '#STAR.outFilterScoreMin'
  - id: '#STAR.outFilterMultimapScoreRange'
  - id: '#STAR.outFilterMultimapNmax'
  - id: '#STAR.outFilterMismatchNoverReadLmax'
  - id: '#STAR.outFilterMismatchNoverLmax'
  - id: '#STAR.outFilterMismatchNmax'
  - id: '#STAR.outFilterMatchNminOverLread'
  - id: '#STAR.outFilterMatchNmin'
  - id: '#STAR.outFilterIntronMotifs'
  - id: '#STAR.limitSjdbInsertNsj'
  - id: '#STAR.limitOutSJoneRead'
  - id: '#STAR.limitOutSJcollapsed'
  - id: '#STAR.limitBAMsortRAM'
  - id: '#STAR.genomeDirName'
  - id: '#STAR.genome'
    source: '#STAR_Genome_Generate.genome'
  - id: '#STAR.clip5pNbases'
  - id: '#STAR.clip3pNbases'
  - id: '#STAR.clip3pAfterAdapterNbases'
  - id: '#STAR.clip3pAdapterSeq'
  - id: '#STAR.clip3pAdapterMMp'
  - id: '#STAR.chimSegmentMin'
  - id: '#STAR.chimScoreSeparation'
  - id: '#STAR.chimScoreMin'
  - id: '#STAR.chimScoreJunctionNonGTAG'
  - id: '#STAR.chimScoreDropMax'
  - id: '#STAR.chimOutType'
  - id: '#STAR.chimJunctionOverhangMin'
  - id: '#STAR.alignWindowsPerReadNmax'
  - id: '#STAR.alignTranscriptsPerWindowNmax'
  - id: '#STAR.alignTranscriptsPerReadNmax'
  - id: '#STAR.alignSplicedMateMapLminOverLmate'
  - id: '#STAR.alignSplicedMateMapLmin'
  - id: '#STAR.alignSoftClipAtReferenceEnds'
  - id: '#STAR.alignSJoverhangMin'
  - id: '#STAR.alignSJDBoverhangMin'
  - id: '#STAR.alignMatesGapMax'
  - id: '#STAR.alignIntronMin'
  - id: '#STAR.alignIntronMax'
  - id: '#STAR.alignEndsType'
  outputs:
  - id: '#STAR.unmapped_reads'
  - id: '#STAR.transcriptome_aligned_reads'
  - id: '#STAR.splice_junctions'
  - id: '#STAR.reads_per_gene'
  - id: '#STAR.log_files'
  - id: '#STAR.intermediate_genome'
  - id: '#STAR.chimeric_junctions'
  - id: '#STAR.chimeric_alignments'
  - id: '#STAR.aligned_reads'
  hints: []
  run:
    sbg:validationErrors: []
    sbg:sbgMaintained: no
    sbg:latestRevision: 4
    sbg:job:
      allocatedResources:
        mem: 60000
        cpu: 15
      inputs:
        alignWindowsPerReadNmax: 0
        outSAMheaderPG: outSAMheaderPG
        GENOME_DIR_NAME: ''
        outFilterMatchNminOverLread: 0
        rg_platform_unit_id: rg_platform_unit
        alignTranscriptsPerReadNmax: 0
        readMapNumber: 0
        alignSplicedMateMapLminOverLmate: 0
        alignMatesGapMax: 0
        outFilterMultimapNmax: 0
        clip5pNbases:
        - 0
        outSAMstrandField: None
        readMatesLengthsIn: NotEqual
        outSAMattributes: Standard
        seedMultimapNmax: 0
        rg_mfl: rg_mfl
        chimSegmentMin: 0
        winAnchorDistNbins: 0
        outSortingType: SortedByCoordinate
        outFilterMultimapScoreRange: 0
        sjdbInsertSave: Basic
        clip3pAfterAdapterNbases:
        - 0
        scoreDelBase: 0
        outFilterMatchNmin: 0
        twopass1readsN: 0
        outSAMunmapped: None
        genome:
          size: 0
          secondaryFiles: []
          class: File
          path: genome.ext
        sjdbGTFtagExonParentTranscript: ''
        limitBAMsortRAM: 0
        alignEndsType: Local
        seedNoneLociPerWindow: 0
        rg_sample_id: rg_sample
        sjdbGTFtagExonParentGene: ''
        chimScoreMin: 0
        outSJfilterIntronMaxVsReadN:
        - 0
        twopassMode: Basic
        alignSplicedMateMapLmin: 0
        outSJfilterReads: All
        outSAMprimaryFlag: OneBestScore
        outSJfilterCountTotalMin:
        - 3
        - 1
        - 1
        - 1
        outSAMorder: Paired
        outSAMflagAND: 0
        chimScoreSeparation: 0
        alignSJoverhangMin: 0
        outFilterScoreMin: 0
        seedSearchStartLmax: 0
        scoreGapGCAG: 0
        scoreGenomicLengthLog2scale: 0
        outFilterIntronMotifs: None
        outFilterMismatchNmax: 0
        reads:
        - size: 0
          secondaryFiles: []
          class: File
          metadata:
            format: fastq
            paired_end: '1'
            seq_center: illumina
          path: /test-data/mate_1.fastq.bz2
        scoreGap: 0
        outSJfilterOverhangMin:
        - 30
        - 12
        - 12
        - 12
        outSAMflagOR: 0
        outSAMmode: Full
        rg_library_id: ''
        chimScoreJunctionNonGTAG: 0
        scoreInsOpen: 0
        clip3pAdapterSeq:
        - clip3pAdapterSeq
        chimScoreDropMax: 0
        outFilterType: Normal
        scoreGapATAC: 0
        rg_platform: Ion Torrent PGM
        clip3pAdapterMMp:
        - 0
        sjdbGTFfeatureExon: ''
        outQSconversionAdd: 0
        quantMode: TranscriptomeSAM
        alignIntronMin: 0
        scoreInsBase: 0
        scoreGapNoncan: 0
        seedSearchLmax: 0
        outSJfilterDistToOtherSJmin:
        - 0
        outFilterScoreMinOverLread: 0
        alignSJDBoverhangMin: 0
        limitOutSJcollapsed: 0
        winAnchorMultimapNmax: 0
        outFilterMismatchNoverLmax: 0
        rg_seq_center: ''
        outSAMheaderHD: outSAMheaderHD
        chimOutType: Within
        quantTranscriptomeBan: IndelSoftclipSingleend
        limitOutSJoneRead: 0
        alignTranscriptsPerWindowNmax: 0
        sjdbOverhang: ~
        outReadsUnmapped: Fastx
        scoreStitchSJshift: 0
        seedPerWindowNmax: 0
        outSJfilterCountUniqueMin:
        - 3
        - 1
        - 1
        - 1
        scoreDelOpen: 0
        sjdbGTFfile:
        - path: /demo/test-data/chr20.gtf
        clip3pNbases:
        - 0
        - 3
        winBinNbits: 0
        sjdbScore: ~
        seedSearchStartLmaxOverLread: 0
        alignIntronMax: 0
        seedPerReadNmax: 0
        outFilterMismatchNoverReadLmax: 0
        winFlankNbins: 0
        sjdbGTFchrPrefix: chrPrefix
        alignSoftClipAtReferenceEnds: 'Yes'
        outSAMreadID: Standard
        outSAMtype: BAM
        chimJunctionOverhangMin: 0
        limitSjdbInsertNsj: 0
        outSAMmapqUnique: 0
    sbg:toolAuthor: Alexander Dobin/CSHL
    sbg:createdOn: 1450911471
    sbg:categories:
    - Alignment
    sbg:contributors:
    - ana_d
    - bix-demo
    - uros_sipetic
    sbg:links:
    - id: https://github.com/alexdobin/STAR
      label: Homepage
    - id: https://github.com/alexdobin/STAR/releases
      label: Releases
    - id: https://github.com/alexdobin/STAR/blob/master/doc/STARmanual.pdf
      label: Manual
    - id: https://groups.google.com/forum/#!forum/rna-star
      label: Support
    - id: http://www.ncbi.nlm.nih.gov/pubmed/23104886
      label: Publication
    sbg:project: bix-demo/star-2-4-2a-demo
    sbg:createdBy: bix-demo
    sbg:toolkitVersion: 2.4.2a
    sbg:id: sevenbridges/public-apps/star/4
    sbg:license: GNU General Public License v3.0 only
    sbg:revision: 4
    sbg:cmdPreview: tar -xvf genome.ext && /opt/STAR --runThreadN 15  --readFilesCommand
      bzcat  --sjdbGTFfile /demo/test-data/chr20.gtf  --sjdbGTFchrPrefix chrPrefix
      --sjdbInsertSave Basic  --twopass1readsN 0  --chimOutType WithinBAM  --outSAMattrRGline
      ID:1 CN:illumina PI:rg_mfl PL:Ion_Torrent_PGM PU:rg_platform_unit SM:rg_sample  --quantMode
      TranscriptomeSAM --outFileNamePrefix ./mate_1.fastq.bz2.  --readFilesIn /test-data/mate_1.fastq.bz2  &&
      tar -vcf mate_1.fastq.bz2._STARgenome.tar ./mate_1.fastq.bz2._STARgenome  &&
      mv mate_1.fastq.bz2.Unmapped.out.mate1 mate_1.fastq.bz2.Unmapped.out.mate1.fastq
    sbg:modifiedOn: 1462889222
    sbg:modifiedBy: ana_d
    sbg:revisionsInfo:
    - sbg:modifiedBy: bix-demo
      sbg:modifiedOn: 1450911471
      sbg:revision: 0
    - sbg:modifiedBy: bix-demo
      sbg:modifiedOn: 1450911473
      sbg:revision: 1
    - sbg:modifiedBy: bix-demo
      sbg:modifiedOn: 1450911475
      sbg:revision: 2
    - sbg:modifiedBy: uros_sipetic
      sbg:modifiedOn: 1462878528
      sbg:revision: 3
    - sbg:modifiedBy: ana_d
      sbg:modifiedOn: 1462889222
      sbg:revision: 4
    sbg:toolkit: STAR
    id: sevenbridges/public-apps/star/4
    inputs:
    - type:
      - 'null'
      - int
      label: Flanking regions size
      description: =log2(winFlank), where win Flank is the size of the left and right
        flanking regions for each window (int>0).
      streamable: no
      id: '#winFlankNbins'
      inputBinding:
        position: 0
        prefix: --winFlankNbins
        separate: yes
        sbg:cmdInclude: yes
      sbg:category: Windows, Anchors, Binning
      sbg:includeInPorts: yes
      sbg:toolDefaultValue: '4'
      required: no
    - type:
      - 'null'
      - int
      label: Bin size
      description: =log2(winBin), where winBin is the size of the bin for the windows/clustering,
        each window will occupy an integer number of bins (int>0).
      streamable: no
      id: '#winBinNbits'
      inputBinding:
        position: 0
        prefix: --winBinNbits
        separate: yes
        sbg:cmdInclude: yes
      sbg:category: Windows, Anchors, Binning
      sbg:includeInPorts: yes
      sbg:toolDefaultValue: '16'
      required: no
    - type:
      - 'null'
      - int
      label: Max loci anchors
      description: Max number of loci anchors are allowed to map to (int>0).
      streamable: no
      id: '#winAnchorMultimapNmax'
      inputBinding:
        position: 0
        prefix: --winAnchorMultimapNmax
        separate: yes
        sbg:cmdInclude: yes
      sbg:category: Windows, Anchors, Binning
      sbg:toolDefaultValue: '50'
      required: no
    - type:
      - 'null'
      - int
      label: Max bins between anchors
      description: Max number of bins between two anchors that allows aggregation
        of anchors into one window (int>0).
      streamable: no
      id: '#winAnchorDistNbins'
      inputBinding:
        position: 0
        prefix: --winAnchorDistNbins
        separate: yes
        sbg:cmdInclude: yes
      sbg:category: Windows, Anchors, Binning
      sbg:toolDefaultValue: '9'
      required: no
    - type:
      - 'null'
      - name: twopassMode
        symbols:
        - None
        - Basic
        type: enum
      label: Two-pass mode
      description: '2-pass mapping mode. None: 1-pass mapping; Basic: basic 2-pass
        mapping, with all 1st pass junctions inserted into the genome indices on the
        fly.'
      streamable: no
      id: '#twopassMode'
      inputBinding:
        position: 0
        prefix: --twopassMode
        separate: yes
        sbg:cmdInclude: yes
      sbg:category: 2-pass mapping
      sbg:toolDefaultValue: None
      required: no
    - type:
      - 'null'
      - int
      label: Reads to process in 1st step
      description: 'Number of reads to process for the 1st step. 0: 1-step only, no
        2nd pass; use very large number to map all reads in the first step (int>0).'
      streamable: no
      id: '#twopass1readsN'
      sbg:category: 2-pass mapping
      sbg:toolDefaultValue: '-1'
      required: no
    - type:
      - 'null'
      - int
      label: Extra alignment score
      description: Extra alignment score for alignments that cross database junctions.
      streamable: no
      id: '#sjdbScore'
      sbg:category: Splice junctions database
      sbg:toolDefaultValue: '2'
      required: no
    - type:
      - 'null'
      - int
      label: '"Overhang" length'
      description: Length of the donor/acceptor sequence on each side of the junctions,
        ideally = (mate_length - 1) (int >= 0), if int = 0, splice junction database
        is not used.
      streamable: no
      id: '#sjdbOverhang'
      sbg:category: Splice junctions database
      sbg:toolDefaultValue: '100'
      required: no
    - type:
      - 'null'
      - name: sjdbInsertSave
        symbols:
        - Basic
        - All
        - None
        type: enum
      label: Save junction files
      description: 'Which files to save when sjdb junctions are inserted on the fly
        at the mapping step. None: not saving files at all; Basic: only small junction/transcript
        files; All: all files including big Genome, SA and SAindex. These files are
        output as archive.'
      streamable: no
      id: '#sjdbInsertSave'
      sbg:category: Splice junctions database
      sbg:toolDefaultValue: None
      required: no
    - type:
      - 'null'
      - string
      label: Exons' parents name
      description: Tag name to be used as exons' transcript-parents.
      streamable: no
      id: '#sjdbGTFtagExonParentTranscript'
      sbg:category: Splice junctions database
      sbg:toolDefaultValue: transcript_id
      required: no
    - type:
      - 'null'
      - string
      label: Gene name
      description: Tag name to be used as exons' gene-parents.
      streamable: no
      id: '#sjdbGTFtagExonParentGene'
      sbg:category: Splice junctions database
      sbg:toolDefaultValue: gene_id
      required: no
    - type:
      - 'null'
      - items: File
        type: array
      label: Splice junction file
      description: Gene model annotations and/or known transcripts. No need to include
        this input, except in case of using "on the fly" annotations.
      streamable: no
      id: '#sjdbGTFfile'
      sbg:category: Basic
      sbg:fileTypes: GTF, GFF, TXT
      required: no
    - type:
      - 'null'
      - string
      label: Set exons feature
      description: Feature type in GTF file to be used as exons for building transcripts.
      streamable: no
      id: '#sjdbGTFfeatureExon'
      sbg:category: Splice junctions database
      sbg:toolDefaultValue: exon
      required: no
    - type:
      - 'null'
      - string
      label: Chromosome names
      description: Prefix for chromosome names in a GTF file (e.g. 'chr' for using
        ENSMEBL annotations with UCSC geneomes).
      streamable: no
      id: '#sjdbGTFchrPrefix'
      sbg:category: Splice junctions database
      sbg:toolDefaultValue: '-'
      required: no
    - type:
      - 'null'
      - float
      label: Search start point normalized
      description: seedSearchStartLmax normalized to read length (sum of mates' lengths
        for paired-end reads).
      streamable: no
      id: '#seedSearchStartLmaxOverLread'
      inputBinding:
        position: 0
        prefix: --seedSearchStartLmaxOverLread
        separate: yes
        sbg:cmdInclude: yes
      sbg:category: Alignments and Seeding
      sbg:toolDefaultValue: '1.0'
      required: no
    - type:
      - 'null'
      - int
      label: Search start point
      description: Defines the search start point through the read - the read is split
        into pieces no longer than this value (int>0).
      streamable: no
      id: '#seedSearchStartLmax'
      inputBinding:
        position: 0
        prefix: --seedSearchStartLmax
        separate: yes
        sbg:cmdInclude: yes
      sbg:category: Alignments and Seeding
      sbg:toolDefaultValue: '50'
      required: no
    - type:
      - 'null'
      - int
      label: Max seed length
      description: Defines the maximum length of the seeds, if =0 max seed length
        is infinite (int>=0).
      streamable: no
      id: '#seedSearchLmax'
      inputBinding:
        position: 0
        prefix: --seedSearchLmax
        separate: yes
        sbg:cmdInclude: yes
      sbg:category: Alignments and Seeding
      sbg:toolDefaultValue: '0'
      required: no
    - type:
      - 'null'
      - int
      label: Max seeds per window
      description: Max number of seeds per window (int>=0).
      streamable: no
      id: '#seedPerWindowNmax'
      inputBinding:
        position: 0
        prefix: --seedPerWindowNmax
        separate: yes
        sbg:cmdInclude: yes
      sbg:category: Alignments and Seeding
      sbg:toolDefaultValue: '50'
      required: no
    - type:
      - 'null'
      - int
      label: Max seeds per read
      description: Max number of seeds per read (int>=0).
      streamable: no
      id: '#seedPerReadNmax'
      inputBinding:
        position: 0
        prefix: --seedPerReadNmax
        separate: yes
        sbg:cmdInclude: yes
      sbg:category: Alignments and Seeding
      sbg:toolDefaultValue: '1000'
      required: no
    - type:
      - 'null'
      - int
      label: Max one-seed loci per window
      description: Max number of one seed loci per window (int>=0).
      streamable: no
      id: '#seedNoneLociPerWindow'
      inputBinding:
        position: 0
        prefix: --seedNoneLociPerWindow
        separate: yes
        sbg:cmdInclude: yes
      sbg:category: Alignments and Seeding
      sbg:toolDefaultValue: '10'
      required: no
    - type:
      - 'null'
      - int
      label: Filter pieces for stitching
      description: Only pieces that map fewer than this value are utilized in the
        stitching procedure (int>=0).
      streamable: no
      id: '#seedMultimapNmax'
      inputBinding:
        position: 0
        prefix: --seedMultimapNmax
        separate: yes
        sbg:cmdInclude: yes
      sbg:category: Alignments and Seeding
      sbg:toolDefaultValue: '10000'
      required: no
    - type:
      - 'null'
      - int
      label: Max score reduction
      description: Maximum score reduction while searching for SJ boundaries in the
        stitching step.
      streamable: no
      id: '#scoreStitchSJshift'
      inputBinding:
        position: 0
        prefix: --scoreStitchSJshift
        separate: yes
        sbg:cmdInclude: yes
      sbg:category: Scoring
      sbg:toolDefaultValue: '1'
      required: no
    - type:
      - 'null'
      - int
      label: Insertion Open Penalty
      description: Insertion open penalty.
      streamable: no
      id: '#scoreInsOpen'
      inputBinding:
        position: 0
        prefix: --scoreInsOpen
        separate: yes
        sbg:cmdInclude: yes
      sbg:category: Scoring
      sbg:toolDefaultValue: '-2'
      required: no
    - type:
      - 'null'
      - int
      label: Insertion extension penalty
      description: Insertion extension penalty per base (in addition to --scoreInsOpen).
      streamable: no
      id: '#scoreInsBase'
      inputBinding:
        position: 0
        prefix: --scoreInsBase
        separate: yes
        sbg:cmdInclude: yes
      sbg:category: Scoring
      sbg:toolDefaultValue: '-2'
      required: no
    - type:
      - 'null'
      - float
      label: Log scaled score
      description: 'Extra score logarithmically scaled with genomic length of the
        alignment: <int>*log2(genomicLength).'
      streamable: no
      id: '#scoreGenomicLengthLog2scale'
      inputBinding:
        position: 0
        prefix: --scoreGenomicLengthLog2scale
        separate: yes
        sbg:cmdInclude: yes
      sbg:category: Scoring
      sbg:toolDefaultValue: '-0.25'
      required: no
    - type:
      - 'null'
      - int
      label: Non-canonical gap open
      description: Non-canonical gap open penalty (in addition to --scoreGap).
      streamable: no
      id: '#scoreGapNoncan'
      inputBinding:
        position: 0
        prefix: --scoreGapNoncan
        separate: yes
        sbg:cmdInclude: yes
      sbg:category: Scoring
      sbg:toolDefaultValue: '-8'
      required: no
    - type:
      - 'null'
      - int
      label: GC/AG and CT/GC gap open
      description: GC/AG and CT/GC gap open penalty (in addition to --scoreGap).
      streamable: no
      id: '#scoreGapGCAG'
      inputBinding:
        position: 0
        prefix: --scoreGapGCAG
        separate: yes
        sbg:cmdInclude: yes
      sbg:category: Scoring
      sbg:toolDefaultValue: '-4'
      required: no
    - type:
      - 'null'
      - int
      label: AT/AC and GT/AT gap open
      description: AT/AC and GT/AT gap open penalty (in addition to --scoreGap).
      streamable: no
      id: '#scoreGapATAC'
      inputBinding:
        position: 0
        prefix: --scoreGapATAC
        separate: yes
        sbg:cmdInclude: yes
      sbg:category: Scoring
      sbg:toolDefaultValue: '-8'
      required: no
    - type:
      - 'null'
      - int
      label: Gap open penalty
      description: Gap open penalty.
      streamable: no
      id: '#scoreGap'
      inputBinding:
        position: 0
        prefix: --scoreGap
        separate: yes
        sbg:cmdInclude: yes
      sbg:category: Scoring
      sbg:toolDefaultValue: '0'
      required: no
    - type:
      - 'null'
      - int
      label: Deletion open penalty
      description: Deletion open penalty.
      streamable: no
      id: '#scoreDelOpen'
      inputBinding:
        position: 0
        prefix: --scoreDelOpen
        separate: yes
        sbg:cmdInclude: yes
      sbg:category: Scoring
      sbg:toolDefaultValue: '-2'
      required: no
    - type:
      - 'null'
      - int
      label: Deletion extension penalty
      description: Deletion extension penalty per base (in addition to --scoreDelOpen).
      streamable: no
      id: '#scoreDelBase'
      inputBinding:
        position: 0
        prefix: --scoreDelBase
        separate: yes
        sbg:cmdInclude: yes
      sbg:category: Scoring
      sbg:toolDefaultValue: '-2'
      required: no
    - type:
      - 'null'
      - string
      label: Sequencing center
      description: Specify the sequencing center for RG line.
      streamable: no
      id: '#rg_seq_center'
      sbg:category: Read group
      sbg:toolDefaultValue: Inferred from metadata
      required: no
    - type:
      - 'null'
      - string
      label: Sample ID
      description: Specify the sample ID for RG line.
      streamable: no
      id: '#rg_sample_id'
      sbg:category: Read group
      sbg:toolDefaultValue: Inferred from metadata
      required: no
    - type:
      - 'null'
      - string
      label: Platform unit ID
      description: Specify the platform unit ID for RG line.
      streamable: no
      id: '#rg_platform_unit_id'
      sbg:category: Read group
      sbg:toolDefaultValue: Inferred from metadata
      required: no
    - type:
      - 'null'
      - name: rg_platform
        symbols:
        - LS 454
        - Helicos
        - Illumina
        - ABI SOLiD
        - Ion Torrent PGM
        - PacBio
        type: enum
      label: Platform
      description: Specify the version of the technology that was used for sequencing
        or assaying.
      streamable: no
      id: '#rg_platform'
      sbg:category: Read group
      sbg:toolDefaultValue: Inferred from metadata
      required: no
    - type:
      - 'null'
      - string
      label: Median fragment length
      description: Specify the median fragment length for RG line.
      streamable: no
      id: '#rg_mfl'
      sbg:category: Read group
      sbg:toolDefaultValue: Inferred from metadata
      required: no
    - type:
      - 'null'
      - string
      label: Library ID
      description: Specify the library ID for RG line.
      streamable: no
      id: '#rg_library_id'
      sbg:category: Read group
      sbg:toolDefaultValue: Inferred from metadata
      required: no
    - type:
      - items: File
        type: array
      label: Read sequence
      description: Read sequence.
      streamable: no
      id: '#reads'
      inputBinding:
        position: 10
        separate: yes
        itemSeparator: ' '
        valueFrom:
          engine: '#cwl-js-engine'
          script: "{\t\n  var list = [].concat($job.inputs.reads)\n  \n  var resp
            = []\n  \n  if (list.length == 1){\n    resp.push(list[0].path)\n    \n
            \ }else if (list.length == 2){    \n    \n    left = \"\"\n    right =
            \"\"\n      \n    for (index = 0; index < list.length; ++index) {\n      \n
            \     if (list[index].metadata != null){\n        if (list[index].metadata.paired_end
            == 1){\n          left = list[index].path\n        }else if (list[index].metadata.paired_end
            == 2){\n          right = list[index].path\n        }\n      }\n    }\n
            \   \n    if (left != \"\" && right != \"\"){      \n      resp.push(left)\n
            \     resp.push(right)\n    }\n  }\n  else if (list.length > 2){\n    left
            = []\n    right = []\n      \n    for (index = 0; index < list.length;
            ++index) {\n      \n      if (list[index].metadata != null){\n        if
            (list[index].metadata.paired_end == 1){\n          left.push(list[index].path)\n
            \       }else if (list[index].metadata.paired_end == 2){\n          right.push(list[index].path)\n
            \       }\n      }\n    }\n    left_join = left.join()\n    right_join
            = right.join()\n    if (left != [] && right != []){      \n      resp.push(left_join)\n
            \     resp.push(right_join)\n    }\t\n  }\n  \n  if(resp.length > 0){
            \   \n    return \"--readFilesIn \".concat(resp.join(\" \"))\n  }\n}"
          class: Expression
        sbg:cmdInclude: yes
      sbg:category: Basic
      sbg:fileTypes: FASTA, FASTQ, FA, FQ, FASTQ.GZ, FQ.GZ, FASTQ.BZ2, FQ.BZ2
      required: yes
    - type:
      - 'null'
      - name: readMatesLengthsIn
        symbols:
        - NotEqual
        - Equal
        type: enum
      label: Reads lengths
      description: Equal/Not equal - lengths of names, sequences, qualities for both
        mates are the same/not the same. "Not equal" is safe in all situations.
      streamable: no
      id: '#readMatesLengthsIn'
      inputBinding:
        position: 0
        prefix: --readMatesLengthsIn
        separate: yes
        sbg:cmdInclude: yes
      sbg:category: Read parameters
      sbg:toolDefaultValue: NotEqual
      required: no
    - type:
      - 'null'
      - int
      label: Reads to map
      description: Number of reads to map from the beginning of the file.
      streamable: no
      id: '#readMapNumber'
      inputBinding:
        position: 0
        prefix: --readMapNumber
        separate: yes
        sbg:cmdInclude: yes
      sbg:category: Read parameters
      sbg:toolDefaultValue: '-1'
      required: no
    - type:
      - 'null'
      - name: quantTranscriptomeBan
        symbols:
        - IndelSoftclipSingleend
        - Singleend
        type: enum
      label: Prohibit alignment type
      description: 'Prohibit various alignment type. IndelSoftclipSingleend: prohibit
        indels, soft clipping and single-end alignments - compatible with RSEM; Singleend:
        prohibit single-end alignments.'
      streamable: no
      id: '#quantTranscriptomeBan'
      inputBinding:
        position: 0
        prefix: --quantTranscriptomeBan
        separate: yes
        sbg:cmdInclude: yes
      sbg:category: Quantification of Annotations
      sbg:toolDefaultValue: IndelSoftclipSingleend
      required: no
    - type:
      - 'null'
      - name: quantMode
        symbols:
        - TranscriptomeSAM
        - GeneCounts
        type: enum
      label: Quantification mode
      description: Types of quantification requested. 'TranscriptomeSAM' option outputs
        SAM/BAM alignments to transcriptome into a separate file. With 'GeneCounts'
        option, STAR will count number of reads per gene while mapping.
      streamable: no
      id: '#quantMode'
      sbg:category: Quantification of Annotations
      sbg:toolDefaultValue: '-'
      required: no
    - type:
      - 'null'
      - name: outSortingType
        symbols:
        - Unsorted
        - SortedByCoordinate
        - Unsorted SortedByCoordinate
        type: enum
      label: Output sorting type
      description: Type of output sorting.
      streamable: no
      id: '#outSortingType'
      sbg:category: Output
      sbg:toolDefaultValue: SortedByCoordinate
      required: no
    - type:
      - 'null'
      - name: outSJfilterReads
        symbols:
        - All
        - Unique
        type: enum
      label: Collapsed junctions reads
      description: 'Which reads to consider for collapsed splice junctions output.
        All: all reads, unique- and multi-mappers; Unique: uniquely mapping reads
        only.'
      streamable: no
      id: '#outSJfilterReads'
      inputBinding:
        position: 0
        prefix: --outSJfilterReads
        separate: yes
        sbg:cmdInclude: yes
      sbg:category: 'Output filtering: splice junctions'
      sbg:toolDefaultValue: All
      required: no
    - type:
      - 'null'
      - items: int
        type: array
      label: Min overhang SJ
      description: Minimum overhang length for splice junctions on both sides for
        each of the motifs. To set no output for desired motif, assign -1 to the corresponding
        field. Does not apply to annotated junctions.
      streamable: no
      id: '#outSJfilterOverhangMin'
      inputBinding:
        position: 0
        prefix: --outSJfilterOverhangMin
        separate: yes
        itemSeparator: ' '
        sbg:cmdInclude: yes
      sbg:category: 'Output filtering: splice junctions'
      sbg:toolDefaultValue: 30 12 12 12
      required: no
    - type:
      - 'null'
      - items: int
        type: array
      label: Max gap allowed
      description: 'Maximum gap allowed for junctions supported by 1,2,3...N reads
        (int >= 0) i.e. by default junctions supported by 1 read can have gaps <=50000b,
        by 2 reads: <=100000b, by 3 reads: <=200000. By 4 or more reads: any gap <=alignIntronMax.
        Does not apply to annotated junctions.'
      streamable: no
      id: '#outSJfilterIntronMaxVsReadN'
      inputBinding:
        position: 0
        prefix: --outSJfilterIntronMaxVsReadN
        separate: yes
        itemSeparator: ' '
        sbg:cmdInclude: yes
      sbg:category: 'Output filtering: splice junctions'
      sbg:toolDefaultValue: 50000 100000 200000
      required: no
    - type:
      - 'null'
      - items: int
        type: array
      label: Min distance to other donor/acceptor
      description: Minimum allowed distance to other junctions' donor/acceptor for
        each of the motifs (int >= 0). Does not apply to annotated junctions.
      streamable: no
      id: '#outSJfilterDistToOtherSJmin'
      inputBinding:
        position: 0
        prefix: --outSJfilterDistToOtherSJmin
        separate: yes
        itemSeparator: ' '
        sbg:cmdInclude: yes
      sbg:category: 'Output filtering: splice junctions'
      sbg:toolDefaultValue: 10 0 5 10
      required: no
    - type:
      - 'null'
      - items: int
        type: array
      label: Min unique count
      description: Minimum uniquely mapping read count per junction for each of the
        motifs. To set no output for desired motif, assign -1 to the corresponding
        field. Junctions are output if one of --outSJfilterCountUniqueMin OR --outSJfilterCountTotalMin
        conditions are satisfied. Does not apply to annotated junctions.
      streamable: no
      id: '#outSJfilterCountUniqueMin'
      inputBinding:
        position: 0
        prefix: --outSJfilterCountUniqueMin
        separate: yes
        itemSeparator: ' '
        sbg:cmdInclude: yes
      sbg:category: 'Output filtering: splice junctions'
      sbg:toolDefaultValue: 3 1 1 1
      required: no
    - type:
      - 'null'
      - items: int
        type: array
      label: Min total count
      description: Minimum total (multi-mapping+unique) read count per junction for
        each of the motifs. To set no output for desired motif, assign -1 to the corresponding
        field. Junctions are output if one of --outSJfilterCountUniqueMin OR --outSJfilterCountTotalMin
        conditions are satisfied. Does not apply to annotated junctions.
      streamable: no
      id: '#outSJfilterCountTotalMin'
      inputBinding:
        position: 0
        prefix: --outSJfilterCountTotalMin
        separate: yes
        itemSeparator: ' '
        sbg:cmdInclude: yes
      sbg:category: 'Output filtering: splice junctions'
      sbg:toolDefaultValue: 3 1 1 1
      required: no
    - type:
      - 'null'
      - name: outSAMunmapped
        symbols:
        - None
        - Within
        type: enum
      label: Write unmapped in SAM
      description: 'Output of unmapped reads in the SAM format. None: no output Within:
        output unmapped reads within the main SAM file (i.e. Aligned.out.sam).'
      streamable: no
      id: '#outSAMunmapped'
      inputBinding:
        position: 0
        prefix: --outSAMunmapped
        separate: yes
        sbg:cmdInclude: yes
      sbg:category: Output
      sbg:toolDefaultValue: None
      required: no
    - type:
      - 'null'
      - name: outSAMtype
        symbols:
        - SAM
        - BAM
        type: enum
      label: Output format
      description: Format of output alignments.
      streamable: no
      id: '#outSAMtype'
      inputBinding:
        position: 0
        separate: yes
        valueFrom:
          engine: '#cwl-js-engine'
          script: |-
            {
              SAM_type = $job.inputs.outSAMtype
              SORT_type = $job.inputs.outSortingType
              if (SAM_type && SORT_type) {
                return "--outSAMtype ".concat(SAM_type, " ", SORT_type)
              }
            }
          class: Expression
        sbg:cmdInclude: yes
      sbg:category: Output
      sbg:toolDefaultValue: SAM
      required: no
    - type:
      - 'null'
      - name: outSAMstrandField
        symbols:
        - None
        - intronMotif
        type: enum
      label: Strand field flag
      description: 'Cufflinks-like strand field flag. None: not used; intronMotif:
        strand derived from the intron motif. Reads with inconsistent and/or non-canonical
        introns are filtered out.'
      streamable: no
      id: '#outSAMstrandField'
      inputBinding:
        position: 0
        prefix: --outSAMstrandField
        separate: yes
        sbg:cmdInclude: yes
      sbg:category: Output
      sbg:toolDefaultValue: None
      required: no
    - type:
      - 'null'
      - name: outSAMreadID
        symbols:
        - Standard
        - Number
        type: enum
      label: Read ID
      description: 'Read ID record type. Standard: first word (until space) from the
        FASTx read ID line, removing /1,/2 from the end; Number: read number (index)
        in the FASTx file.'
      streamable: no
      id: '#outSAMreadID'
      inputBinding:
        position: 0
        prefix: --outSAMreadID
        separate: yes
        sbg:cmdInclude: yes
      sbg:category: Output
      sbg:toolDefaultValue: Standard
      required: no
    - type:
      - 'null'
      - name: outSAMprimaryFlag
        symbols:
        - OneBestScore
        - AllBestScore
        type: enum
      label: Primary alignments
      description: 'Which alignments are considered primary - all others will be marked
        with 0x100 bit in the FLAG. OneBestScore: only one alignment with the best
        score is primary; AllBestScore: all alignments with the best score are primary.'
      streamable: no
      id: '#outSAMprimaryFlag'
      inputBinding:
        position: 0
        prefix: --outSAMprimaryFlag
        separate: yes
        sbg:cmdInclude: yes
      sbg:category: Output
      sbg:toolDefaultValue: OneBestScore
      required: no
    - type:
      - 'null'
      - name: outSAMorder
        symbols:
        - Paired
        - PairedKeepInputOrder
        type: enum
      label: Sorting in SAM
      description: 'Type of sorting for the SAM output. Paired: one mate after the
        other for all paired alignments; PairedKeepInputOrder: one mate after the
        other for all paired alignments, the order is kept the same as in the input
        FASTQ files.'
      streamable: no
      id: '#outSAMorder'
      inputBinding:
        position: 0
        prefix: --outSAMorder
        separate: yes
        sbg:cmdInclude: yes
      sbg:category: Output
      sbg:toolDefaultValue: Paired
      required: no
    - type:
      - 'null'
      - name: outSAMmode
        symbols:
        - Full
        - NoQS
        type: enum
      label: SAM mode
      description: 'Mode of SAM output. Full: full SAM output; NoQS: full SAM but
        without quality scores.'
      streamable: no
      id: '#outSAMmode'
      inputBinding:
        position: 0
        prefix: --outSAMmode
        separate: yes
        sbg:cmdInclude: yes
      sbg:category: Output
      sbg:toolDefaultValue: Full
      required: no
    - type:
      - 'null'
      - int
      label: MAPQ value
      description: MAPQ value for unique mappers (0 to 255).
      streamable: no
      id: '#outSAMmapqUnique'
      inputBinding:
        position: 0
        prefix: --outSAMmapqUnique
        separate: yes
        sbg:cmdInclude: yes
      sbg:category: Output
      sbg:toolDefaultValue: '255'
      required: no
    - type:
      - 'null'
      - string
      label: SAM header @PG
      description: Extra @PG (software) line of the SAM header (in addition to STAR).
      streamable: no
      id: '#outSAMheaderPG'
      inputBinding:
        position: 0
        prefix: --outSAMheaderPG
        separate: yes
        sbg:cmdInclude: yes
      sbg:category: Output
      sbg:toolDefaultValue: '-'
      required: no
    - type:
      - 'null'
      - string
      label: SAM header @HD
      description: '@HD (header) line of the SAM header.'
      streamable: no
      id: '#outSAMheaderHD'
      inputBinding:
        position: 0
        prefix: --outSAMheaderHD
        separate: yes
        sbg:cmdInclude: yes
      sbg:category: Output
      sbg:toolDefaultValue: '-'
      required: no
    - type:
      - 'null'
      - int
      label: OR SAM flag
      description: Set specific bits of the SAM FLAG.
      streamable: no
      id: '#outSAMflagOR'
      inputBinding:
        position: 0
        prefix: --outSAMflagOR
        separate: yes
        sbg:cmdInclude: yes
      sbg:category: Output
      sbg:toolDefaultValue: '0'
      required: no
    - type:
      - 'null'
      - int
      label: AND SAM flag
      description: Set specific bits of the SAM FLAG.
      streamable: no
      id: '#outSAMflagAND'
      inputBinding:
        position: 0
        prefix: --outSAMflagAND
        separate: yes
        sbg:cmdInclude: yes
      sbg:category: Output
      sbg:toolDefaultValue: '65535'
      required: no
    - type:
      - 'null'
      - name: outSAMattributes
        symbols:
        - Standard
        - NH
        - All
        - None
        type: enum
      label: SAM attributes
      description: 'Desired SAM attributes, in the order desired for the output SAM.
        NH: any combination in any order; Standard: NH HI AS nM; All: NH HI AS nM
        NM MD jM jI; None: no attributes.'
      streamable: no
      id: '#outSAMattributes'
      inputBinding:
        position: 0
        prefix: --outSAMattributes
        separate: yes
        sbg:cmdInclude: yes
      sbg:category: Output
      sbg:toolDefaultValue: Standard
      required: no
    - type:
      - 'null'
      - name: outReadsUnmapped
        symbols:
        - None
        - Fastx
        type: enum
      label: Output unmapped reads
      description: 'Output of unmapped reads (besides SAM). None: no output; Fastx:
        output in separate fasta/fastq files, Unmapped.out.mate1/2.'
      streamable: no
      id: '#outReadsUnmapped'
      inputBinding:
        position: 0
        prefix: --outReadsUnmapped
        separate: yes
        sbg:cmdInclude: yes
      sbg:category: Output
      sbg:toolDefaultValue: None
      required: no
    - type:
      - 'null'
      - int
      label: Quality conversion
      description: Add this number to the quality score (e.g. to convert from Illumina
        to Sanger, use -31).
      streamable: no
      id: '#outQSconversionAdd'
      inputBinding:
        position: 0
        prefix: --outQSconversionAdd
        separate: yes
        sbg:cmdInclude: yes
      sbg:category: Output
      sbg:toolDefaultValue: '0'
      required: no
    - type:
      - 'null'
      - name: outFilterType
        symbols:
        - Normal
        - BySJout
        type: enum
      label: Filtering type
      description: 'Type of filtering. Normal: standard filtering using only current
        alignment; BySJout: keep only those reads that contain junctions that passed
        filtering into SJ.out.tab.'
      streamable: no
      id: '#outFilterType'
      inputBinding:
        position: 0
        prefix: --outFilterType
        separate: yes
        sbg:cmdInclude: yes
      sbg:category: Output filtering
      sbg:toolDefaultValue: Normal
      required: no
    - type:
      - 'null'
      - float
      label: Min score normalized
      description: '''Minimum score'' normalized to read length (sum of mates'' lengths
        for paired-end reads).'
      streamable: no
      id: '#outFilterScoreMinOverLread'
      inputBinding:
        position: 0
        prefix: --outFilterScoreMinOverLread
        separate: yes
        sbg:cmdInclude: yes
      sbg:category: Output filtering
      sbg:toolDefaultValue: '0.66'
      required: no
    - type:
      - 'null'
      - int
      label: Min score
      description: Alignment will be output only if its score is higher than this
        value.
      streamable: no
      id: '#outFilterScoreMin'
      inputBinding:
        position: 0
        prefix: --outFilterScoreMin
        separate: yes
        sbg:cmdInclude: yes
      sbg:category: Output filtering
      sbg:toolDefaultValue: '0'
      required: no
    - type:
      - 'null'
      - int
      label: Multimapping score range
      description: The score range below the maximum score for multimapping alignments.
      streamable: no
      id: '#outFilterMultimapScoreRange'
      inputBinding:
        position: 0
        prefix: --outFilterMultimapScoreRange
        separate: yes
        sbg:cmdInclude: yes
      sbg:category: Output filtering
      sbg:toolDefaultValue: '1'
      required: no
    - type:
      - 'null'
      - int
      label: Max number of mappings
      description: Read alignments will be output only if the read maps fewer than
        this value, otherwise no alignments will be output.
      streamable: no
      id: '#outFilterMultimapNmax'
      inputBinding:
        position: 0
        prefix: --outFilterMultimapNmax
        separate: yes
        sbg:cmdInclude: yes
      sbg:category: Output filtering
      sbg:toolDefaultValue: '10'
      required: no
    - type:
      - 'null'
      - float
      label: Mismatches to *read* length
      description: Alignment will be output only if its ratio of mismatches to *read*
        length is less than this value.
      streamable: no
      id: '#outFilterMismatchNoverReadLmax'
      inputBinding:
        position: 0
        prefix: --outFilterMismatchNoverReadLmax
        separate: yes
        sbg:cmdInclude: yes
      sbg:category: Output filtering
      sbg:toolDefaultValue: '1'
      required: no
    - type:
      - 'null'
      - float
      label: Mismatches to *mapped* length
      description: Alignment will be output only if its ratio of mismatches to *mapped*
        length is less than this value.
      streamable: no
      id: '#outFilterMismatchNoverLmax'
      inputBinding:
        position: 0
        prefix: --outFilterMismatchNoverLmax
        separate: yes
        sbg:cmdInclude: yes
      sbg:category: Output filtering
      sbg:toolDefaultValue: '0.3'
      required: no
    - type:
      - 'null'
      - int
      label: Max number of mismatches
      description: Alignment will be output only if it has fewer mismatches than this
        value.
      streamable: no
      id: '#outFilterMismatchNmax'
      inputBinding:
        position: 0
        prefix: --outFilterMismatchNmax
        separate: yes
        sbg:cmdInclude: yes
      sbg:category: Output filtering
      sbg:toolDefaultValue: '10'
      required: no
    - type:
      - 'null'
      - float
      label: Min matched bases normalized
      description: '''Minimum matched bases'' normalized to read length (sum of mates
        lengths for paired-end reads).'
      streamable: no
      id: '#outFilterMatchNminOverLread'
      inputBinding:
        position: 0
        prefix: --outFilterMatchNminOverLread
        separate: yes
        sbg:cmdInclude: yes
      sbg:category: Output filtering
      sbg:toolDefaultValue: '0.66'
      required: no
    - type:
      - 'null'
      - int
      label: Min matched bases
      description: Alignment will be output only if the number of matched bases is
        higher than this value.
      streamable: no
      id: '#outFilterMatchNmin'
      inputBinding:
        position: 0
        prefix: --outFilterMatchNmin
        separate: yes
        sbg:cmdInclude: yes
      sbg:category: Output filtering
      sbg:toolDefaultValue: '0'
      required: no
    - type:
      - 'null'
      - name: outFilterIntronMotifs
        symbols:
        - None
        - RemoveNoncanonical
        - RemoveNoncanonicalUnannotated
        type: enum
      label: Motifs filtering
      description: 'Filter alignment using their motifs. None: no filtering; RemoveNoncanonical:
        filter out alignments that contain non-canonical junctions; RemoveNoncanonicalUnannotated:
        filter out alignments that contain non-canonical unannotated junctions when
        using annotated splice junctions database. The annotated non-canonical junctions
        will be kept.'
      streamable: no
      id: '#outFilterIntronMotifs'
      inputBinding:
        position: 0
        prefix: --outFilterIntronMotifs
        separate: yes
        sbg:cmdInclude: yes
      sbg:category: Output filtering
      sbg:toolDefaultValue: None
      required: no
    - type:
      - 'null'
      - int
      label: Max insert junctions
      description: Maximum number of junction to be inserted to the genome on the
        fly at the mapping stage, including those from annotations and those detected
        in the 1st step of the 2-pass run.
      streamable: no
      id: '#limitSjdbInsertNsj'
      inputBinding:
        position: 0
        prefix: --limitSjdbInsertNsj
        separate: yes
        sbg:cmdInclude: yes
      sbg:category: Limits
      sbg:toolDefaultValue: '1000000'
      required: no
    - type:
      - 'null'
      - int
      label: Junctions max number
      description: Max number of junctions for one read (including all multi-mappers).
      streamable: no
      id: '#limitOutSJoneRead'
      inputBinding:
        position: 0
        prefix: --limitOutSJoneRead
        separate: yes
        sbg:cmdInclude: yes
      sbg:category: Limits
      sbg:toolDefaultValue: '1000'
      required: no
    - type:
      - 'null'
      - int
      label: Collapsed junctions max number
      description: Max number of collapsed junctions.
      streamable: no
      id: '#limitOutSJcollapsed'
      inputBinding:
        position: 0
        prefix: --limitOutSJcollapsed
        separate: yes
        sbg:cmdInclude: yes
      sbg:category: Limits
      sbg:toolDefaultValue: '1000000'
      required: no
    - type:
      - 'null'
      - int
      label: Limit BAM sorting memory
      description: Maximum available RAM for sorting BAM. If set to 0, it will be
        set to the genome index size.
      streamable: no
      id: '#limitBAMsortRAM'
      inputBinding:
        position: 0
        prefix: --limitBAMsortRAM
        separate: yes
        sbg:cmdInclude: yes
      sbg:category: Limits
      sbg:toolDefaultValue: '0'
      required: no
    - type:
      - 'null'
      - string
      label: Genome dir name
      description: Name of the directory which contains genome files (when genome.tar
        is uncompressed).
      streamable: no
      id: '#genomeDirName'
      inputBinding:
        position: 0
        prefix: --genomeDir
        separate: yes
        valueFrom:
          engine: '#cwl-js-engine'
          script: $job.inputs.genomeDirName || "genomeDir"
          class: Expression
        sbg:cmdInclude: yes
      sbg:category: Basic
      sbg:toolDefaultValue: genomeDir
      required: no
    - type:
      - File
      label: Genome files
      description: Genome files created using STAR Genome Generate.
      streamable: no
      id: '#genome'
      sbg:category: Basic
      sbg:fileTypes: TAR
      required: yes
    - type:
      - 'null'
      - items: int
        type: array
      label: Clip 5p bases
      description: Number of bases to clip from 5p of each mate. In case only one
        value is given, it will be assumed the same for both mates.
      streamable: no
      id: '#clip5pNbases'
      inputBinding:
        position: 0
        prefix: --clip5pNbases
        separate: yes
        itemSeparator: ' '
        sbg:cmdInclude: yes
      sbg:category: Read parameters
      sbg:toolDefaultValue: '0'
      required: no
    - type:
      - 'null'
      - items: int
        type: array
      label: Clip 3p bases
      description: Number of bases to clip from 3p of each mate. In case only one
        value is given, it will be assumed the same for both mates.
      streamable: no
      id: '#clip3pNbases'
      inputBinding:
        position: 0
        prefix: --clip3pNbases
        separate: yes
        itemSeparator: ' '
        sbg:cmdInclude: yes
      sbg:category: Read parameters
      sbg:toolDefaultValue: '0'
      required: no
    - type:
      - 'null'
      - items: int
        type: array
      label: Clip 3p after adapter seq.
      description: Number of bases to clip from 3p of each mate after the adapter
        clipping. In case only one value is given, it will be assumed the same for
        both mates.
      streamable: no
      id: '#clip3pAfterAdapterNbases'
      inputBinding:
        position: 0
        prefix: --clip3pAfterAdapterNbases
        separate: yes
        itemSeparator: ' '
        sbg:cmdInclude: yes
      sbg:category: Read parameters
      sbg:toolDefaultValue: '0'
      required: no
    - type:
      - 'null'
      - items: string
        type: array
      label: Clip 3p adapter sequence
      description: Adapter sequence to clip from 3p of each mate. In case only one
        value is given, it will be assumed the same for both mates.
      streamable: no
      id: '#clip3pAdapterSeq'
      inputBinding:
        position: 0
        prefix: --clip3pAdapterSeq
        separate: yes
        itemSeparator: ' '
        sbg:cmdInclude: yes
      sbg:category: Read parameters
      sbg:toolDefaultValue: '-'
      required: no
    - type:
      - 'null'
      - items: float
        type: array
      label: Max mismatches proportions
      description: Max proportion of mismatches for 3p adapter clipping for each mate.
        In case only one value is given, it will be assumed the same for both mates.
      streamable: no
      id: '#clip3pAdapterMMp'
      inputBinding:
        position: 0
        prefix: --clip3pAdapterMMp
        separate: yes
        itemSeparator: ' '
        sbg:cmdInclude: yes
      sbg:category: Read parameters
      sbg:toolDefaultValue: '0.1'
      required: no
    - type:
      - 'null'
      - int
      label: Min segment length
      description: Minimum length of chimeric segment length, if =0, no chimeric output
        (int>=0).
      streamable: no
      id: '#chimSegmentMin'
      inputBinding:
        position: 0
        prefix: --chimSegmentMin
        separate: yes
        sbg:cmdInclude: yes
      sbg:category: Chimeric Alignments
      sbg:toolDefaultValue: '15'
      required: no
    - type:
      - 'null'
      - int
      label: Min separation score
      description: Minimum difference (separation) between the best chimeric score
        and the next one (int>=0).
      streamable: no
      id: '#chimScoreSeparation'
      inputBinding:
        position: 0
        prefix: --chimScoreSeparation
        separate: yes
        sbg:cmdInclude: yes
      sbg:category: Chimeric Alignments
      sbg:toolDefaultValue: '10'
      required: no
    - type:
      - 'null'
      - int
      label: Min total score
      description: Minimum total (summed) score of the chimeric segments (int>=0).
      streamable: no
      id: '#chimScoreMin'
      inputBinding:
        position: 0
        prefix: --chimScoreMin
        separate: yes
        sbg:cmdInclude: yes
      sbg:category: Chimeric Alignments
      sbg:toolDefaultValue: '0'
      required: no
    - type:
      - 'null'
      - int
      label: Non-GT/AG penalty
      description: Penalty for a non-GT/AG chimeric junction.
      streamable: no
      id: '#chimScoreJunctionNonGTAG'
      inputBinding:
        position: 0
        prefix: --chimScoreJunctionNonGTAG
        separate: yes
        sbg:cmdInclude: yes
      sbg:category: Chimeric Alignments
      sbg:toolDefaultValue: '-1'
      required: no
    - type:
      - 'null'
      - int
      label: Max drop score
      description: Max drop (difference) of chimeric score (the sum of scores of all
        chimeric segements) from the read length (int>=0).
      streamable: no
      id: '#chimScoreDropMax'
      inputBinding:
        position: 0
        prefix: --chimScoreDropMax
        separate: yes
        sbg:cmdInclude: yes
      sbg:category: Chimeric Alignments
      sbg:toolDefaultValue: '20'
      required: no
    - type:
      - 'null'
      - name: chimOutType
        symbols:
        - SeparateSAMold
        - Within
        type: enum
      label: Chimeric output type
      description: 'Type of chimeric output. SeparateSAMold: output old SAM into separate
        Chimeric.out.sam file; Within: output into main aligned SAM/BAM files.'
      streamable: no
      id: '#chimOutType'
      sbg:category: Chimeric Alignments
      sbg:toolDefaultValue: SeparateSAMold
      required: no
    - type:
      - 'null'
      - int
      label: Min junction overhang
      description: Minimum overhang for a chimeric junction (int>=0).
      streamable: no
      id: '#chimJunctionOverhangMin'
      inputBinding:
        position: 0
        prefix: --chimJunctionOverhangMin
        separate: yes
        sbg:cmdInclude: yes
      sbg:category: Chimeric Alignments
      sbg:toolDefaultValue: '20'
      required: no
    - type:
      - 'null'
      - float
      label: Max windows per read
      description: Max number of windows per read (int>0).
      streamable: no
      id: '#alignWindowsPerReadNmax'
      inputBinding:
        position: 0
        prefix: --alignWindowsPerReadNmax
        separate: yes
        sbg:cmdInclude: yes
      sbg:category: Alignments and Seeding
      sbg:toolDefaultValue: '10000'
      required: no
    - type:
      - 'null'
      - int
      label: Max transcripts per window
      description: Max number of transcripts per window (int>0).
      streamable: no
      id: '#alignTranscriptsPerWindowNmax'
      inputBinding:
        position: 0
        prefix: --alignTranscriptsPerWindowNmax
        separate: yes
        sbg:cmdInclude: yes
      sbg:category: Alignments and Seeding
      sbg:toolDefaultValue: '100'
      required: no
    - type:
      - 'null'
      - int
      label: Max transcripts per read
      description: Max number of different alignments per read to consider (int>0).
      streamable: no
      id: '#alignTranscriptsPerReadNmax'
      inputBinding:
        position: 0
        prefix: --alignTranscriptsPerReadNmax
        separate: yes
        sbg:cmdInclude: yes
      sbg:category: Alignments and Seeding
      sbg:toolDefaultValue: '10000'
      required: no
    - type:
      - 'null'
      - float
      label: Min mapped length normalized
      description: alignSplicedMateMapLmin normalized to mate length (float>0).
      streamable: no
      id: '#alignSplicedMateMapLminOverLmate'
      inputBinding:
        position: 0
        prefix: --alignSplicedMateMapLminOverLmate
        separate: yes
        sbg:cmdInclude: yes
      sbg:category: Alignments and Seeding
      sbg:toolDefaultValue: '0.66'
      required: no
    - type:
      - 'null'
      - int
      label: Min mapped length
      description: Minimum mapped length for a read mate that is spliced (int>0).
      streamable: no
      id: '#alignSplicedMateMapLmin'
      inputBinding:
        position: 0
        prefix: --alignSplicedMateMapLmin
        separate: yes
        sbg:cmdInclude: yes
      sbg:category: Alignments and Seeding
      sbg:toolDefaultValue: '0'
      required: no
    - type:
      - 'null'
      - name: alignSoftClipAtReferenceEnds
        symbols:
        - 'Yes'
        - 'No'
        type: enum
      label: Soft clipping
      description: 'Option which allows soft clipping of alignments at the reference
        (chromosome) ends. Can be disabled for compatibility with Cufflinks/Cuffmerge.
        Yes: Enables soft clipping; No: Disables soft clipping.'
      streamable: no
      id: '#alignSoftClipAtReferenceEnds'
      inputBinding:
        position: 0
        prefix: --alignSoftClipAtReferenceEnds
        separate: yes
        sbg:cmdInclude: yes
      sbg:category: Alignments and Seeding
      sbg:toolDefaultValue: 'Yes'
      required: no
    - type:
      - 'null'
      - int
      label: Min overhang
      description: Minimum overhang (i.e. block size) for spliced alignments (int>0).
      streamable: no
      id: '#alignSJoverhangMin'
      inputBinding:
        position: 0
        prefix: --alignSJoverhangMin
        separate: yes
        sbg:cmdInclude: yes
      sbg:category: Alignments and Seeding
      sbg:toolDefaultValue: '5'
      required: no
    - type:
      - 'null'
      - int
      label: 'Min overhang: annotated'
      description: Minimum overhang (i.e. block size) for annotated (sjdb) spliced
        alignments (int>0).
      streamable: no
      id: '#alignSJDBoverhangMin'
      inputBinding:
        position: 0
        prefix: --alignSJDBoverhangMin
        separate: yes
        sbg:cmdInclude: yes
      sbg:category: Alignments and Seeding
      sbg:toolDefaultValue: '3'
      required: no
    - type:
      - 'null'
      - int
      label: Max mates gap
      description: Maximum gap between two mates, if 0, max intron gap will be determined
        by (2^winBinNbits)*winAnchorDistNbins.
      streamable: no
      id: '#alignMatesGapMax'
      inputBinding:
        position: 0
        prefix: --alignMatesGapMax
        separate: yes
        sbg:cmdInclude: yes
      sbg:category: Alignments and Seeding
      sbg:toolDefaultValue: '0'
      required: no
    - type:
      - 'null'
      - int
      label: Min intron size
      description: 'Minimum intron size: genomic gap is considered intron if its length
        >= alignIntronMin, otherwise it is considered Deletion (int>=0).'
      streamable: no
      id: '#alignIntronMin'
      inputBinding:
        position: 0
        prefix: --alignIntronMin
        separate: yes
        sbg:cmdInclude: yes
      sbg:category: Alignments and Seeding
      sbg:toolDefaultValue: '21'
      required: no
    - type:
      - 'null'
      - int
      label: Max intron size
      description: Maximum intron size, if 0, max intron size will be determined by
        (2^winBinNbits)*winAnchorDistNbins.
      streamable: no
      id: '#alignIntronMax'
      inputBinding:
        position: 0
        prefix: --alignIntronMax
        separate: yes
        sbg:cmdInclude: yes
      sbg:category: Alignments and Seeding
      sbg:toolDefaultValue: '0'
      required: no
    - type:
      - 'null'
      - name: alignEndsType
        symbols:
        - Local
        - EndToEnd
        type: enum
      label: Alignment type
      description: 'Type of read ends alignment. Local: standard local alignment with
        soft-clipping allowed. EndToEnd: force end to end read alignment, do not soft-clip.'
      streamable: no
      id: '#alignEndsType'
      inputBinding:
        position: 0
        prefix: --alignEndsType
        separate: yes
        sbg:cmdInclude: yes
      sbg:category: Alignments and Seeding
      sbg:toolDefaultValue: Local
      required: no
    outputs:
    - type:
      - 'null'
      - items: File
        type: array
      label: Unmapped reads
      description: Output of unmapped reads.
      streamable: no
      id: '#unmapped_reads'
      outputBinding:
        glob: '*Unmapped.out*'
      sbg:fileTypes: FASTQ
    - type:
      - 'null'
      - File
      label: Transcriptome alignments
      description: Alignments translated into transcript coordinates.
      streamable: no
      id: '#transcriptome_aligned_reads'
      outputBinding:
        glob: '*Transcriptome*'
      sbg:fileTypes: BAM
    - type:
      - 'null'
      - File
      label: Splice junctions
      description: High confidence collapsed splice junctions in tab-delimited format.
        Only junctions supported by uniquely mapping reads are reported.
      streamable: no
      id: '#splice_junctions'
      outputBinding:
        glob: '*SJ.out.tab'
      sbg:fileTypes: TAB
    - type:
      - 'null'
      - File
      label: Reads per gene
      description: File with number of reads per gene. A read is counted if it overlaps
        (1nt or more) one and only one gene.
      streamable: no
      id: '#reads_per_gene'
      outputBinding:
        glob: '*ReadsPerGene*'
      sbg:fileTypes: TAB
    - type:
      - 'null'
      - items: File
        type: array
      label: Log files
      description: Log files produced during alignment.
      streamable: no
      id: '#log_files'
      outputBinding:
        glob: '*Log*.out'
      sbg:fileTypes: OUT
    - type:
      - 'null'
      - File
      label: Intermediate genome files
      description: Archive with genome files produced when annotations are included
        on the fly (in the mapping step).
      streamable: no
      id: '#intermediate_genome'
      outputBinding:
        glob: '*_STARgenome.tar'
      sbg:fileTypes: TAR
    - type:
      - 'null'
      - File
      label: Chimeric junctions
      description: If chimSegmentMin in 'Chimeric Alignments' section is set to 0,
        'Chimeric Junctions' won't be output.
      streamable: no
      id: '#chimeric_junctions'
      outputBinding:
        glob: '*Chimeric.out.junction'
      sbg:fileTypes: JUNCTION
    - type:
      - 'null'
      - File
      label: Chimeric alignments
      description: Aligned Chimeric sequences SAM - if chimSegmentMin = 0, no Chimeric
        Alignment SAM and Chimeric Junctions outputs.
      streamable: no
      id: '#chimeric_alignments'
      outputBinding:
        glob: '*.Chimeric.out.sam'
      sbg:fileTypes: SAM
    - type:
      - 'null'
      - File
      label: Aligned SAM/BAM
      description: Aligned sequence in SAM/BAM format.
      streamable: no
      id: '#aligned_reads'
      outputBinding:
        glob:
          engine: '#cwl-js-engine'
          script: |-
            {
              if ($job.inputs.outSortingType == 'SortedByCoordinate') {
                sort_name = '.sortedByCoord'
              }
              else {
                sort_name = ''
              }
              if ($job.inputs.outSAMtype == 'BAM') {
                sam_name = "*.Aligned".concat( sort_name, '.out.bam')
              }
              else {
                sam_name = "*.Aligned.out.sam"
              }
              return sam_name
            }
          class: Expression
      sbg:fileTypes: SAM, BAM
    requirements:
    - class: ExpressionEngineRequirement
      id: '#cwl-js-engine'
      requirements:
      - class: DockerRequirement
        dockerPull: rabix/js-engine
    hints:
    - class: DockerRequirement
      dockerPull: images.sbgenomics.com/ana_d/star:2.4.2a
      dockerImageId: a4b0ad2c3cae
    - class: sbg:MemRequirement
      value: 60000
    - class: sbg:CPURequirement
      value: 15
    label: STAR
    description: STAR is an ultrafast universal RNA-seq aligner. It has very high
      mapping speed, accurate alignment of contiguous and spliced reads, detection
      of polyA-tails, non-canonical splices and chimeric (fusion) junctions. It works
      with reads starting from lengths ~15 bases up to ~300 bases. In case of having
      longer reads, use of STAR Long is recommended.
    class: CommandLineTool
    arguments:
    - position: 0
      separate: yes
      valueFrom:
        engine: '#cwl-js-engine'
        script: |-
          {
            file = [].concat($job.inputs.reads)[0].path
            extension = /(?:\.([^.]+))?$/.exec(file)[1]
            if (extension == "gz") {
              return "--readFilesCommand zcat"
            } else if (extension == "bz2") {
              return "--readFilesCommand bzcat"
            }
          }
        class: Expression
    - position: 0
      separate: yes
      valueFrom:
        engine: '#cwl-js-engine'
        script: "{\t\n  var sjFormat = \"False\"\n  var gtfgffFormat = \"False\"\n
          \ var list = $job.inputs.sjdbGTFfile\n  var paths_list = []\n  var joined_paths
          = \"\"\n  \n  if (list) {\n    list.forEach(function(f){return paths_list.push(f.path)})\n
          \   joined_paths = paths_list.join(\" \")\n\n\n    paths_list.forEach(function(f){\n
          \     ext = f.replace(/^.*\\./, '')\n      if (ext == \"gff\" || ext ==
          \"gtf\") {\n        gtfgffFormat = \"True\"\n        return gtfgffFormat\n
          \     }\n      if (ext == \"txt\") {\n        sjFormat = \"True\"\n        return
          sjFormat\n      }\n    })\n\n    if ($job.inputs.sjdbGTFfile && $job.inputs.sjdbInsertSave
          != \"None\") {\n      if (sjFormat == \"True\") {\n        return \"--sjdbFileChrStartEnd
          \".concat(joined_paths)\n      }\n      else if (gtfgffFormat == \"True\")
          {\n        return \"--sjdbGTFfile \".concat(joined_paths)\n      }\n    }\n
          \ }\n}"
        class: Expression
    - position: 0
      separate: yes
      valueFrom:
        engine: '#cwl-js-engine'
        script: "{\n  a = b = c = d = e = f = g = []\n  if ($job.inputs.sjdbGTFchrPrefix)
          {\n    a = [\"--sjdbGTFchrPrefix\", $job.inputs.sjdbGTFchrPrefix]\n  }\n
          \ if ($job.inputs.sjdbGTFfeatureExon) {\n    b = [\"--sjdbGTFfeatureExon\",
          $job.inputs.sjdbGTFfeatureExon]\n  }\n  if ($job.inputs.sjdbGTFtagExonParentTranscript)
          {\n    c = [\"--sjdbGTFtagExonParentTranscript\", $job.inputs.sjdbGTFtagExonParentTranscript]\n
          \ }\n  if ($job.inputs.sjdbGTFtagExonParentGene) {\n    d = [\"--sjdbGTFtagExonParentGene\",
          $job.inputs.sjdbGTFtagExonParentGene]\n  }\n  if ($job.inputs.sjdbOverhang)
          {\n    e = [\"--sjdbOverhang\", $job.inputs.sjdbOverhang]\n  }\n  if ($job.inputs.sjdbScore)
          {\n    f = [\"--sjdbScore\", $job.inputs.sjdbScore]\n  }\n  if ($job.inputs.sjdbInsertSave)
          {\n    g = [\"--sjdbInsertSave\", $job.inputs.sjdbInsertSave]\n  }\n  \n
          \ \n  \n  if ($job.inputs.sjdbInsertSave != \"None\" && $job.inputs.sjdbGTFfile)
          {\n    new_list = a.concat(b, c, d, e, f, g)\n    return new_list.join(\"
          \")\n  }\n}"
        class: Expression
    - position: 0
      separate: yes
      valueFrom:
        engine: '#cwl-js-engine'
        script: |-
          {
            if ($job.inputs.twopassMode == "Basic") {
              return "--twopass1readsN ".concat($job.inputs.twopass1readsN)
            }
          }
        class: Expression
    - position: 0
      separate: yes
      valueFrom:
        engine: '#cwl-js-engine'
        script: |-
          {
            if ($job.inputs.chimOutType == "Within") {
              return "--chimOutType ".concat("Within", $job.inputs.outSAMtype)
            }
            else {
              return "--chimOutType SeparateSAMold"
            }
          }
        class: Expression
    - position: 0
      separate: yes
      valueFrom:
        engine: '#cwl-js-engine'
        script: "{\n  var param_list = []\n  \n  function add_param(key, value){\n
          \   if (value == \"\") {\n      return\n    }\n    else {\n      return
          param_list.push(key.concat(\":\", value))\n    }\n  }\n  \n  add_param('ID',
          \"1\")\n  if ($job.inputs.rg_seq_center) {\n    add_param('CN', $job.inputs.rg_seq_center)\n
          \ } else if ([].concat($job.inputs.reads)[0].metadata.seq_center) {\n    add_param('CN',
          [].concat($job.inputs.reads)[0].metadata.seq_center)\n  }\n  if ($job.inputs.rg_library_id)
          {\n    add_param('LB', $job.inputs.rg_library_id)\n  } else if ([].concat($job.inputs.reads)[0].metadata.library_id)
          {\n    add_param('LB', [].concat($job.inputs.reads)[0].metadata.library_id)\n
          \ }\n  if ($job.inputs.rg_mfl) {\n    add_param('PI', $job.inputs.rg_mfl)\n
          \ } else if ([].concat($job.inputs.reads)[0].metadata.median_fragment_length)
          {\n    add_param('PI', [].concat($job.inputs.reads)[0].metadata.median_fragment_length)\n
          \ }\n  if ($job.inputs.rg_platform) {\n    add_param('PL', $job.inputs.rg_platform.replace(/
          /g,\"_\"))\n  } else if ([].concat($job.inputs.reads)[0].metadata.platform)
          {\n    add_param('PL', [].concat($job.inputs.reads)[0].metadata.platform.replace(/
          /g,\"_\"))\n  }\n  if ($job.inputs.rg_platform_unit_id) {\n    add_param('PU',
          $job.inputs.rg_platform_unit_id)\n  } else if ([].concat($job.inputs.reads)[0].metadata.platform_unit_id)
          {\n    add_param('PU', [].concat($job.inputs.reads)[0].metadata.platform_unit_id)\n
          \ }\n  if ($job.inputs.rg_sample_id) {\n    add_param('SM', $job.inputs.rg_sample_id)\n
          \ } else if ([].concat($job.inputs.reads)[0].metadata.sample_id) {\n    add_param('SM',
          [].concat($job.inputs.reads)[0].metadata.sample_id)\n  }\n  return \"--outSAMattrRGline
          \".concat(param_list.join(\" \"))\n}"
        class: Expression
    - position: 0
      separate: yes
      valueFrom:
        engine: '#cwl-js-engine'
        script: |-
          {
            if ($job.inputs.sjdbGTFfile && $job.inputs.quantMode) {
              return "--quantMode ".concat($job.inputs.quantMode)
            }
          }
        class: Expression
    - position: 100
      separate: yes
      valueFrom:
        engine: '#cwl-js-engine'
        script: "{\n  function sharedStart(array){\n  var A= array.concat().sort(),
          \n      a1= A[0], a2= A[A.length-1], L= a1.length, i= 0;\n  while(i<L &&
          a1.charAt(i)=== a2.charAt(i)) i++;\n  return a1.substring(0, i);\n  }\n
          \ path_list = []\n  arr = [].concat($job.inputs.reads)\n  arr.forEach(function(f){return
          path_list.push(f.path.replace(/\\\\/g,'/').replace( /.*\\//, '' ))})\n  common_prefix
          = sharedStart(path_list)\n  intermediate = common_prefix.replace( /\\-$|\\_$|\\.$/,
          '' ).concat(\"._STARgenome\")\n  source = \"./\".concat(intermediate)\n
          \ destination = intermediate.concat(\".tar\")\n  if ($job.inputs.sjdbGTFfile
          && $job.inputs.sjdbInsertSave && $job.inputs.sjdbInsertSave != \"None\")
          {\n    return \"&& tar -vcf \".concat(destination, \" \", source)\n  }\n}"
        class: Expression
    - position: 0
      prefix: --outFileNamePrefix
      separate: yes
      valueFrom:
        engine: '#cwl-js-engine'
        script: "{\n  function sharedStart(array){\n  var A= array.concat().sort(),
          \n      a1= A[0], a2= A[A.length-1], L= a1.length, i= 0;\n  while(i<L &&
          a1.charAt(i)=== a2.charAt(i)) i++;\n  return a1.substring(0, i);\n  }\n
          \ path_list = []\n  arr = [].concat($job.inputs.reads)\n  arr.forEach(function(f){return
          path_list.push(f.path.replace(/\\\\/g,'/').replace( /.*\\//, '' ))})\n  common_prefix
          = sharedStart(path_list)\n  return \"./\".concat(common_prefix.replace(
          /\\-$|\\_$|\\.$/, '' ), \".\")\n}"
        class: Expression
    - position: 101
      separate: yes
      valueFrom:
        engine: '#cwl-js-engine'
        script: "{\n  function sharedStart(array){\n  var A= array.concat().sort(),
          \n      a1= A[0], a2= A[A.length-1], L= a1.length, i= 0;\n  while(i<L &&
          a1.charAt(i)=== a2.charAt(i)) i++;\n  return a1.substring(0, i);\n  }\n
          \ path_list = []\n  arr = [].concat($job.inputs.reads)\n  arr.forEach(function(f){return
          path_list.push(f.path.replace(/\\\\/g,'/').replace( /.*\\//, '' ))})\n  common_prefix
          = sharedStart(path_list)\n  mate1 = common_prefix.replace( /\\-$|\\_$|\\.$/,
          '' ).concat(\".Unmapped.out.mate1\")\n  mate2 = common_prefix.replace( /\\-$|\\_$|\\.$/,
          '' ).concat(\".Unmapped.out.mate2\")\n  mate1fq = mate1.concat(\".fastq\")\n
          \ mate2fq = mate2.concat(\".fastq\")\n  if ($job.inputs.outReadsUnmapped
          == \"Fastx\" && arr.length > 1) {\n    return \"&& mv \".concat(mate1, \"
          \", mate1fq, \" && mv \", mate2, \" \", mate2fq)\n  }\n  else if ($job.inputs.outReadsUnmapped
          == \"Fastx\" && arr.length == 1) {\n    return \"&& mv \".concat(mate1,
          \" \", mate1fq)\n  }\n}"
        class: Expression
    stdin: ''
    stdout: ''
    successCodes: []
    temporaryFailCodes: []
    x: 624.0
    'y': 323
  sbg:x: 700.0
  sbg:y: 200.0
sbg:canvas_zoom: 0.6
sbg:canvas_y: -16
sbg:canvas_x: -41

sevenbridges documentation built on March 25, 2021, 6 p.m.