cwlVersion: v1.0
class: Workflow

label: index sim seq
doc: create sorted / filtered similarity file with feature sequences, and index by md5

requirements:
    - class: StepInputExpressionRequirement
    - class: InlineJavascriptRequirement
    - class: ScatterFeatureRequirement
    - class: MultipleInputFeatureRequirement

inputs:
    jobid: string
    featureSeqs: File[]
    filterSims: File[]
    clustMaps: File[]

outputs:
    simSeqOut:
        type: File
        outputSource: sortSimSeq/output
    indexOut:
        type: File
        outputSource: indexSimSeq/output

steps:
    unclusterSims:
        run: ../Tools/uncluster_sims.tool.cwl
        in:
            simHit: filterSims
            clustMap: clustMaps
            outName:
                source: jobid
                valueFrom: $(self).uncluster.sims
        out: [output]
    sortSims:
        run: ../Tools/sort.tool.cwl
        in:
            input: unclusterSims/output
            key: 
                valueFrom: $(["1,1"])
            outName:
                source: unclusterSims/output
                valueFrom: $(self[0].basename).sort
        out: [output]
    catSeqs:
        run: ../Tools/cat.tool.cwl
        in:
            files: featureSeqs
            outName:
                source: jobid
                valueFrom: $(self).feature.seqs
        out: [output]
    sortSeqs:
        run: ../Tools/seqUtil.tool.cwl
        in:
            sequences: catSeqs/output
            sortbyid2tab:
                default: true
            output:
                source: catSeqs/output
                valueFrom: $(self.basename).sort.tab
        out: [file]
    addSeq2Sim:
        run: ../Tools/add_seq2sims.tool.cwl
        in:
            sequences: sortSeqs/file
            similarity: sortSims/output
            outName:
                source: sortSims/output
                valueFrom: $(self.basename).seq
        out: [output]
    sortSimSeq:
        run: ../Tools/sort.tool.cwl
        in:
            input: addSeq2Sim/output
            key: 
                valueFrom: $(["2,2"])
            outName:
                source: jobid
                valueFrom: $(self[0]).700.annotation.sims.filter.seq
        out: [output]
    indexSimSeq:
        run: ../Tools/index_sims_file_md5.tool.cwl
        in:
            input: sortSimSeq/output
            outName:
                source: sortSimSeq/output
                valueFrom: $(self.basename).index
        out: [output]