version 1.0 workflow souporcell { input { String sample_id String output_directory String input_rna String input_bam String genome_url String ref_genotypes_url Boolean de_novo_mode Int min_num_genes Int num_clusters String donor_rename = '' String souporcell_version = "2020.06" String docker_registry = "cumulusprod" Int num_cpu = 32 Int disk_space = 500 Int memory = 120 Int preemptible = 2 String zones = "us-central1-a us-central1-b us-central1-c us-central1-f us-east1-b us-east1-c us-east1-d us-west1-a us-west1-b us-west1-c" } if (ref_genotypes_url != 'null') { File ref_genotypes = ref_genotypes_url } call run_souporcell { input: sample_id = sample_id, output_directory = output_directory, input_rna = input_rna, input_bam = input_bam, genome = genome_url, ref_genotypes = ref_genotypes, donor_rename = donor_rename, de_novo_mode = de_novo_mode, min_num_genes = min_num_genes, num_clusters = num_clusters, version = souporcell_version, docker_registry = docker_registry, num_cpu = num_cpu, disk_space = disk_space, memory = memory, preemptible = preemptible, zones = zones } call match_donors { input: sample_id = sample_id, output_directory = output_directory, input_rna = input_rna, souporcell_cluster_tsv = run_souporcell.souporcell_cluster_tsv, souporcell_genotypes_vcf = run_souporcell.souporcell_genotypes_vcf, ref_genotypes = ref_genotypes, donor_rename = donor_rename, docker_registry = docker_registry, version = souporcell_version, zones = zones, memory = memory, disk_space = disk_space, preemptible = preemptible } output { String output_folder = match_donors.output_folder File output_zarr = match_donors.output_zarr Array[File] monitoringLog = [run_souporcell.monitoringLog, match_donors.monitoringLog] } } task run_souporcell { input { String sample_id String output_directory File input_rna File input_bam File genome File? ref_genotypes String? donor_rename Boolean de_novo_mode Int min_num_genes Int num_clusters String version String docker_registry Int num_cpu Int disk_space Int memory Int preemptible String zones } command { set -e export TMPDIR=/tmp monitor_script.sh > monitoring.log & mkdir genome_ref tar -zxf "~{genome}" -C genome_ref --strip-components 1 rm "~{genome}" mkdir result python /opt/extract_barcodes_from_rna.py ~{input_rna} result/~{sample_id}.barcodes.tsv ~{min_num_genes} python < monitoring.log & python <