Example #1
0
def recursively_build_workflow_with_layers(layers):
    w = WorkflowBuilder(f"scattered_with_{layers}")

    w.input("scatters", int, default=3)
    w.input("seed_hash", Optional[str])
    w.input("bias", Optional[int])

    w.step("generate_random_ints",
           GenerateIntegers(numbers_to_generate=w.scatters))

    w.step(
        "generate_hashes",
        CalculateMd5HashOfInt(value=w.generate_random_ints.out),
        scatter="value",
    )

    joined_generate_hashes = JoinOperator(w.generate_hashes.out, ",")

    if layers > 0:

        innerworkflow = recursively_build_workflow_with_layers(layers - 1)
        w.step(
            "inner",
            innerworkflow(scatters=w.generate_random_ints),
            scatter="scatters",
        )
        joined_inner = JoinOperator(w.inner.out_hash, ",")
        post_hash_inp = (j.logical.If(
            j.logical.IsDefined(w.seed_hash),
            w.seed_hash + joined_inner,
            joined_inner,
        ) + joined_generate_hashes)
    else:
        post_hash_inp = j.logical.If(
            j.logical.IsDefined(w.seed_hash),
            w.seed_hash + joined_generate_hashes,
            joined_generate_hashes,
        )

    w.step(
        "post_hash",
        CalculateMd5Hash(value=post_hash_inp),
    )

    w.output("out_hash", source=w.post_hash.out)

    return w
Example #2
0
 def inputs(self):
     return [
         *super().inputs(),
         *Gatk4GetPileUpSummariesBase.additional_args,
         ToolInput(
             "bam",
             Array(BamBai()),
             prefix="-I",
             prefix_applies_to_all_elements=True,
             doc="The SAM/BAM/CRAM file containing reads.",
             position=0,
         ),
         ToolInput(
             "sampleName", String(optional=True), doc="Used for naming purposes"
         ),
         ToolInput(
             "sites",
             VcfTabix(),
             prefix="-V",
             doc="sites of common biallelic variants",
         ),
         ToolInput(
             "intervals",
             Bed(optional=True),
             prefix="--intervals",
             doc="-L (BASE) One or more genomic intervals over which to operate",
         ),
         ToolInput(
             "pileupTableOut",
             Filename(
                 prefix=JoinOperator(
                     FilterNullOperator(
                         [
                             FirstOperator(
                                 [InputSelector("sampleName"), "generated"]
                             ),
                             # If(
                             #     IsDefined(InputSelector("intervals")),
                             #     InputSelector(
                             #         "intervals", remove_file_extension=True
                             #     ),
                             #     "",
                             # ),
                         ]
                     ),
                     ".",
                 ),
                 extension=".txt",
             ),
             position=1,
             prefix="-O",
         ),
         ToolInput(
             "reference",
             FastaWithDict(optional=True),
             prefix="-R",
             doc="reference to use when decoding CRAMS",
         ),
     ]
 def arguments(self):
     return [
         ToolArgument("| testsomatic.R |", position=3, shell_quote=False),
         ToolArgument("var2vcf_paired.pl", position=4, shell_quote=False),
         ToolArgument(
             JoinOperator(
                 [InputSelector("tumorBam"),
                  InputSelector("normalBam")], "|"),
             prefix="-b",
             position=1,
             shell_quote=True,
         ),
         ToolArgument(InputSelector("tumorName"),
                      prefix="-N",
                      position=1,
                      shell_quote=True),
         ToolArgument(
             JoinOperator(
                 [InputSelector("tumorName"),
                  InputSelector("normalName")], "|"),
             prefix="-N",
             position=5,
             shell_quote=True,
         ),
         ToolArgument(
             InputSelector("alleleFreqThreshold"),
             prefix="-f",
             position=5,
             shell_quote=False,
         ),
         ToolArgument(
             InputSelector("alleleFreqThreshold"),
             prefix="-f",
             position=1,
             shell_quote=False,
         ),
         ToolArgument(" | bcftools view -O z",
                      position=6,
                      shell_quote=False),
     ]
Example #4
0
 def arguments(self):
     return [
         ToolArgument(
             StringFormatter(
                 "-Xmx{memory}G {compression} {otherargs}",
                 memory=MemorySelector() * 3 / 4,
                 compression=If(
                     IsDefined(InputSelector("compression_level")),
                     "-Dsamjdk.compress_level=" +
                     InputSelector("compression_level"),
                     "",
                 ),
                 otherargs=JoinOperator(
                     FirstOperator([InputSelector("javaOptions"), []]),
                     " "),
             ),
             prefix="--java-options",
             position=-1,
         )
     ]
Example #5
0
 def arguments(self):
     return [
         # CADD
         ToolArgument(
             If(
                 IsDefined(InputSelector("caddReference")),
                 "--plugin CADD,"
                 + JoinOperator(
                     InputSelector("caddReference").assert_not_null(), ","
                 ),
                 "",
             ),
             shell_quote=False,
         ),
         # Condel
         ToolArgument(
             If(
                 IsDefined(InputSelector("condelConfig")),
                 "--plugin "
                 + StringFormatter(
                     "Condel,{condelconfig},b",
                     condelconfig=InputSelector("condelConfig").assert_not_null(),
                 ),
                 "",
             ),
             shell_quote=False,
         ),
         # dbNSFP
         ToolArgument(
             If(
                 AndOperator(
                     IsDefined(InputSelector("dbnspReference")),
                     IsDefined(InputSelector("dbsnpColumns")),
                 ),
                 "--plugin "
                 + StringFormatter(
                     "dbNSFP,{ref},{cols}",
                     ref=InputSelector("dbnspReference").assert_not_null(),
                     cols=JoinOperator(
                         InputSelector("dbsnpColumns").assert_not_null(), ","
                     ),
                 ),
                 "",
             ),
             shell_quote=False,
         ),
         # REVEL
         ToolArgument(
             If(
                 IsDefined(InputSelector("revelReference")),
                 "--plugin "
                 + StringFormatter(
                     "REVEL,{ref}",
                     ref=InputSelector("revelReference").assert_not_null(),
                 ),
                 "",
             ),
             shell_quote=False,
         ),
         # CUSTOM 1
         ToolArgument(
             If(
                 AndOperator(
                     IsDefined(InputSelector("custom1Reference")),
                     IsDefined(InputSelector("custom1Columns")),
                 ),
                 "--custom "
                 + StringFormatter(
                     "{ref},{cols}",
                     ref=InputSelector("custom1Reference").assert_not_null(),
                     cols=JoinOperator(
                         InputSelector("custom1Columns").assert_not_null(), ","
                     ),
                 ),
                 "",
             ),
             shell_quote=False,
         ),
         # CUSTOM 2
         ToolArgument(
             If(
                 AndOperator(
                     IsDefined(InputSelector("custom2Reference")),
                     IsDefined(InputSelector("custom2Columns")),
                 ),
                 "--custom "
                 + StringFormatter(
                     "{ref},{cols}",
                     ref=InputSelector("custom2Reference").assert_not_null(),
                     cols=JoinOperator(
                         InputSelector("custom2Columns").assert_not_null(), ","
                     ),
                 ),
                 "",
             ),
             shell_quote=False,
         ),
     ]