cwlVersion: v1.2
class: Workflow

requirements:
  SubworkflowFeatureRequirement: {}
  ScatterFeatureRequirement: {}
  MultipleInputFeatureRequirement: {}

inputs:
  #### runs/kallisto
  kallisto_IndexInput: File[]
  kallisto_sampleRecord:
    type:
      type: array
      items:
        type: record
        fields:
          readsOfOneSample:
            type: File[]
          sampleName:
            type: string?
  kallisto_isSingle: boolean
  kallisto_FragmentLength: double?  
  kallisto_StandardDeviation: double?
  kallisto_BootstrapSamples: int?
  kallisto_resultsFolder: string

  #### runs/isaSampleToRawDataSeq
  isaSampleToRawDataSeq_arcPath: Directory 
  isaSampleToRawDataSeq_assayName: string
  isaSampleToRawDataSeq_startingNodeNum: int
  isaSampleToRawDataSeq_outName: string

  #### runs/sleuth
#   sleuth_inKallistoResults: Directory
#   sleuth_inMetadataFile: File
  sleuth_inMetadataSample: string
  sleuth_inMetadataFactorList: string[]
  sleuth_inMetadataDataCol: string
  sleuth_outFolder: string

steps:
    kallisto:
        run: runs/kallisto/run.cwl
        in:
            IndexInput:         kallisto_IndexInput
            sampleRecord:       kallisto_sampleRecord
            isSingle:           kallisto_isSingle
            FragmentLength:     kallisto_FragmentLength
            StandardDeviation:  kallisto_StandardDeviation
            BootstrapSamples:   kallisto_BootstrapSamples
            resultsFolder:      kallisto_resultsFolder
        out: [kallistoOutDir]


    isaSampleToRawDataSeq:
        run: runs/isaSampleToRawDataSeq/run.cwl
        in:
          arcPath:          isaSampleToRawDataSeq_arcPath
          assayName:        isaSampleToRawDataSeq_assayName
          startingNodeNum:  isaSampleToRawDataSeq_startingNodeNum
          outName:          isaSampleToRawDataSeq_outName
        out: [sampleseqCsv, sampleseqXlsx]

    sleuth:
        run: runs/sleuth/run.cwl
        in:
            inKallistoResults:      kallisto/kallistoOutDir
            inMetadataFile:         isaSampleToRawDataSeq/sampleseqCsv
            inMetadataSample:       sleuth_inMetadataSample
            inMetadataFactorList:   sleuth_inMetadataFactorList
            inMetadataDataCol:      sleuth_inMetadataDataCol
            outFolder:              sleuth_outFolder
        out: [outdir]

outputs:

  outdir:
    type: Directory[]
    outputSource: sleuth/outdir