diff --git a/.gitignore b/.gitignore index 791e748595ec85cc58b9efd02395f392ea9bd031..937346fc2d0c4cb131559489e661cee3bdad0575 100644 --- a/.gitignore +++ b/.gitignore @@ -333,4 +333,5 @@ runs/.* logs/ results/ !tests/test_alfa/results/ +tests/input_files/homo_sapiens/genome.fa.fai .java/ diff --git a/README.md b/README.md index 1946224ad882feebf9ce80cfda45338f815cb3a9..c53835a9eecd64cf88ab5b14cc940b90bbcf1ca6 100644 --- a/README.md +++ b/README.md @@ -243,9 +243,9 @@ you do not have these): ```bash cat << EOF | ( umask 0377; cat >> ${HOME}/.netrc; ) - machine <remote-instance-of-labkey-server> + machine <remote-instance-of-labkey-server> login <user-email> - password <user-password> + password <user-password> EOF ``` @@ -255,13 +255,13 @@ help screen with option '--help' for further options and information): ```bash python scripts/labkey_to_snakemake.py \ - --input_dict="scripts/labkey_to_snakemake.dict.tsv" \ + --labkey-domain="my.labkey.service.io" + --labkey-domain="/my/project/path" + --input-to-output-mapping="scripts/labkey_to_snakemake.dict.tsv" \ + --resources-dir="/path/to/my/genome/resources" \ + --output-table="config/my_run/samples.tsv" \ --config_file="config/my_run/config.yaml" \ - --samples_table="config/my_run/samples.tsv" \ - --remote \ - --project-name="project_name" \ - --table-name="table_name" \ - <path_to_annotation_files> + <table_name> ``` #### Additional information diff --git a/Snakefile b/Snakefile index 48e0b619aeb6af55910bb0f6b86285027b952403..5a8e7ea80e84bc2ad8aebd261277c361e4c28328 100644 --- a/Snakefile +++ b/Snakefile @@ -1,12 +1,7 @@ """General purpose RNA-Seq analysis pipeline developed by the Zavolan Lab""" - import os -import sys - import pandas as pd import shutil -import glob -from zipfile import ZipFile # Get sample table samples_table = pd.read_csv( @@ -19,16 +14,8 @@ samples_table = pd.read_csv( ) # Global config -localrules: finish, rename_star_rpm_for_alfa, prepare_files_for_report, \ - prepare_MultiQC_config +localrules: start, finish, rename_star_rpm_for_alfa, prepare_multiqc_config -# Create log directories -os.makedirs( - os.path.join( - os.getcwd(), - config['log_dir'], - ), - exist_ok=True) if cluster_config: os.makedirs( @@ -47,11 +34,116 @@ rule finish: Rule for collecting outputs """ input: - MultiQC_report = expand( + multiqc_report = os.path.join( + config['output_dir'], + "multiqc_summary"), + bigWig = expand( os.path.join( - config['output_dir'], - "multiqc_summary"), - output_dir=config["output_dir"]) + config["output_dir"], + "samples", + "{sample}", + "bigWig", + "{unique_type}", + "{sample}_{unique_type}_{strand}.bw"), + sample=samples_table.index.values, + strand=["plus", "minus"], + unique_type=["Unique", "UniqueMultiple"]), + + salmon_merge_genes = expand( + os.path.join( + config["output_dir"], + "summary_salmon", + "quantmerge", + "genes_{salmon_merge_on}.tsv"), + salmon_merge_on=["tpm", "numreads"]), + + salmon_merge_transcripts = expand( + os.path.join( + config["output_dir"], + "summary_salmon", + "quantmerge", + "transcripts_{salmon_merge_on}.tsv"), + salmon_merge_on=["tpm", "numreads"]), + + +rule start: + ''' + Get samples + ''' + input: + reads = lambda wildcards: + samples_table.loc[wildcards.sample, wildcards.mate], + + output: + reads = os.path.join( + config["output_dir"], + "samples", + "{sample}", + "start", + "{sample}.{mate}.fastq.gz") + + log: + stderr = os.path.join( + config["log_dir"], + "samples", + "{sample}", + "start_{sample}.{mate}.stderr.log"), + stdout = os.path.join( + config["log_dir"], + "samples", + "{sample}", + "start_{sample}.{mate}.stdout.log") + + singularity: + "docker://bash:5.0.16" + + shell: + "(cp {input.reads} {output.reads}) \ + 1> {log.stdout} 2> {log.stderr} " + + +rule fastqc: + ''' + A quality control tool for high throughput sequence data + ''' + input: + reads = os.path.join( + config["output_dir"], + "samples", + "{sample}", + "start", + "{sample}.{mate}.fastq.gz") + + output: + outdir = directory( + os.path.join( + config["output_dir"], + "samples", + "{sample}", + "fastqc", + "{mate}")) + + threads: 2 + + singularity: + "docker://zavolab/fastqc:0.11.9-slim" + + log: + stderr = os.path.join( + config["log_dir"], + "samples", + "{sample}", + "fastqc_{mate}.stderr.log"), + stdout = os.path.join( + config["log_dir"], + "samples", + "{sample}", + "fastqc_{mate}.stdout.log") + + shell: + "(mkdir -p {output.outdir}; \ + fastqc --outdir {output.outdir} {input.reads}) \ + 1> {log.stdout} 2> {log.stderr}" rule create_index_star: @@ -123,23 +215,24 @@ rule create_index_star: rule extract_transcriptome: - """ Create transcriptome from genome and gene annotations """ + """ + Create transcriptome from genome and gene annotations + """ input: genome = lambda wildcards: samples_table['genome'][ - samples_table['organism'] == wildcards.organism - ][0], + samples_table['organism'] == wildcards.organism][0], gtf = lambda wildcards: samples_table['gtf'][ - samples_table['organism'] == wildcards.organism - ][0] + samples_table['organism'] == wildcards.organism][0] + output: transcriptome = os.path.join( - config['output_dir'], - "transcriptome", - "{organism}", - "transcriptome.fa", - ) + config['output_dir'], + "transcriptome", + "{organism}", + "transcriptome.fa") + log: stderr = os.path.join( config['log_dir'], @@ -147,8 +240,10 @@ rule extract_transcriptome: stdout = os.path.join( config['log_dir'], "{organism}_extract_transcriptome.log") + singularity: "docker://zavolab/gffread:0.11.7-slim" + shell: "(gffread \ -w {output.transcriptome} \ @@ -156,68 +251,28 @@ rule extract_transcriptome: 1> {log.stdout} 2> {log.stderr}" -rule extract_decoys_salmon: - """ - Extract names of the genome targets - """ - input: - genome = lambda wildcards: - samples_table['genome'] - [samples_table['organism'] == wildcards.organism] - [0], - - output: - decoys = os.path.join( - config['output_dir'], - "transcriptome", - "{organism}", - "decoys.txt") - - singularity: - "docker://bash:5.0.16" - - log: - stderr = os.path.join( - config['log_dir'], - "{organism}_extract_decoys_salmon.stderr.log"), - stdout = os.path.join( - config['log_dir'], - "{organism}_extract_decoys_salmon.stdout.log") - - threads: 1 - - shell: - """ - (grep "^>" <{input.genome} \ - | cut -d " " -f 1 > {output.decoys} && \ - sed -i.bak -e 's/>//g' {output.decoys}) \ - 1> {log.stdout} 2> {log.stderr} - """ - - rule concatenate_transcriptome_and_genome: """ Concatenate genome and transcriptome """ input: transcriptome = os.path.join( - config['output_dir'], - "transcriptome", - "{organism}", - "transcriptome.fa", - ), + config['output_dir'], + "transcriptome", + "{organism}", + "transcriptome.fa"), + genome = lambda wildcards: samples_table['genome'] [samples_table['organism'] == wildcards.organism] - [0], + [0] output: genome_transcriptome = os.path.join( - config['output_dir'], - "transcriptome", - "{organism}", - "genome_transcriptome.fa", - ) + config['output_dir'], + "transcriptome", + "{organism}", + "genome_transcriptome.fa") singularity: "docker://bash:5.0.16" @@ -225,15 +280,12 @@ rule concatenate_transcriptome_and_genome: log: stderr = os.path.join( config['log_dir'], - "{organism}_concatenate_transcriptome_and_genome.stderr.log"), - stdout = os.path.join( - config['log_dir'], - "{organism}_concatenate_transcriptome_and_genome.stdout.log") + "{organism}_concatenate_transcriptome_and_genome.stderr.log") shell: "(cat {input.transcriptome} {input.genome} \ 1> {output.genome_transcriptome}) \ - 1> {log.stdout} 2> {log.stderr}" + 2> {log.stderr}" rule create_index_salmon: @@ -242,16 +294,18 @@ rule create_index_salmon: """ input: genome_transcriptome = os.path.join( - config['output_dir'], - "transcriptome", - "{organism}", - "genome_transcriptome.fa", - ), - decoys = os.path.join( - config['output_dir'], - "transcriptome", - "{organism}", - "decoys.txt") + config['output_dir'], + "transcriptome", + "{organism}", + "genome_transcriptome.fa"), + chr_names = lambda wildcards: + os.path.join( + config['star_indexes'], + samples_table["organism"][0], + str(samples_table["index_size"][0]), + "STAR_index", + "chrName.txt") + output: index = directory( os.path.join( @@ -279,7 +333,7 @@ rule create_index_salmon: shell: "(salmon index \ --transcripts {input.genome_transcriptome} \ - --decoys {input.decoys} \ + --decoys {input.chr_names} \ --index {output.index} \ --kmerLen {params.kmerLen} \ --threads {threads}) \ @@ -292,11 +346,11 @@ rule create_index_kallisto: """ input: transcriptome = os.path.join( - config['output_dir'], - "transcriptome", - "{organism}", - "transcriptome.fa", - ) + config['output_dir'], + "transcriptome", + "{organism}", + "transcriptome.fa") + output: index = os.path.join( config['kallisto_indexes'], @@ -332,8 +386,7 @@ rule extract_transcripts_as_bed12: """ input: gtf = lambda wildcards: - samples_table['gtf'] - [0] + samples_table['gtf'][0] output: bed12 = os.path.join( @@ -364,18 +417,17 @@ rule index_genomic_alignment_samtools: input: bam = os.path.join( config["output_dir"], - "{seqmode}", + "samples", "{sample}", "map_genome", - "{sample}_Aligned.sortedByCoord.out.bam") - + "{sample}.{seqmode}.Aligned.sortedByCoord.out.bam"), output: bai = os.path.join( config["output_dir"], - "{seqmode}", + "samples", "{sample}", "map_genome", - "{sample}_Aligned.sortedByCoord.out.bam.bai") + "{sample}.{seqmode}.Aligned.sortedByCoord.out.bam.bai") singularity: "docker://zavolab/samtools:1.10-slim" @@ -385,161 +437,45 @@ rule index_genomic_alignment_samtools: log: stderr = os.path.join( config["log_dir"], - "{seqmode}", + "samples", "{sample}", - "index_genomic_alignment_samtools.stderr.log"), + "index_genomic_alignment_samtools.{seqmode}.stderr.log"), stdout = os.path.join( config["log_dir"], - "{seqmode}", + "samples", "{sample}", - "index_genomic_alignment_samtools.stdout.log") + "index_genomic_alignment_samtools.{seqmode}.stdout.log") shell: "(samtools index {input.bam} {output.bai};) \ 1> {log.stdout} 2> {log.stderr}" -rule star_rpm: - ''' Create stranded bedgraph coverage with STARs RPM normalisation ''' - input: - bam = os.path.join( - config["output_dir"], - "{seqmode}", - "{sample}", - "map_genome", - "{sample}_Aligned.sortedByCoord.out.bam"), - bai = os.path.join( - config["output_dir"], - "{seqmode}", - "{sample}", - "map_genome", - "{sample}_Aligned.sortedByCoord.out.bam.bai") - - output: - str1 = (os.path.join( - config["output_dir"], - "{seqmode}", - "{sample}", - "STAR_coverage", - "{sample}_Signal.Unique.str1.out.bg"), - os.path.join( - config["output_dir"], - "{seqmode}", - "{sample}", - "STAR_coverage", - "{sample}_Signal.UniqueMultiple.str1.out.bg")), - str2 = (os.path.join( - config["output_dir"], - "{seqmode}", - "{sample}", - "STAR_coverage", - "{sample}_Signal.Unique.str2.out.bg"), - os.path.join( - config["output_dir"], - "{seqmode}", - "{sample}", - "STAR_coverage", - "{sample}_Signal.UniqueMultiple.str2.out.bg")) - - params: - out_dir = lambda wildcards, output: os.path.dirname(output.str1[0]), - prefix = lambda wildcards, output: os.path.join(os.path.dirname(output.str1[0]), - str(wildcards.sample) + "_"), - stranded = "Stranded" - - singularity: - "docker://zavolab/star:2.7.3a-slim" - - log: - stderr = os.path.join( - config["log_dir"], - "{seqmode}", - "{sample}", - "star_rpm_single_end.stderr.log"), - stdout = os.path.join( - config["log_dir"], - "{seqmode}", - "{sample}", - "star_rpm_single_end.stdout.log") - - threads: 4 - - shell: - """ - (mkdir -p {params.out_dir}; \ - chmod -R 777 {params.out_dir}; \ - STAR \ - --runMode inputAlignmentsFromBAM \ - --runThreadN {threads} \ - --inputBAMfile {input.bam} \ - --outWigType "bedGraph" \ - --outWigStrand {params.stranded} \ - --outWigNorm "RPM" \ - --outFileNamePrefix {params.prefix}) \ - 1> {log.stdout} 2> {log.stderr} - """ - - -rule rename_star_rpm_for_alfa: - input: - str1 = os.path.join( - config["output_dir"], - "{seqmode}", - "{sample}", - "STAR_coverage", - "{sample}_Signal.{unique}.str1.out.bg"), - str2 = os.path.join( - config["output_dir"], - "{seqmode}", - "{sample}", - "STAR_coverage", - "{sample}_Signal.{unique}.str2.out.bg") - - output: - plus = os.path.join( - config["output_dir"], - "{seqmode}", - "{sample}", - "ALFA", - "{unique}", - "{sample}_Signal.{unique}.out.plus.bg"), - minus = os.path.join( - config["output_dir"], - "{seqmode}", - "{sample}", - "ALFA", - "{unique}", - "{sample}_Signal.{unique}.out.minus.bg") - - params: - orientation = lambda wildcards: samples_table.loc[wildcards.sample, "kallisto_directionality"] - - run: - if params['orientation'] == "--fr": - shutil.copy2(input['str1'], output['plus']) - shutil.copy2(input['str2'], output['minus']) - elif params['orientation'] == "--rf": - shutil.copy2(input['str1'], output['minus']) - shutil.copy2(input['str2'], output['plus']) - - rule calculate_TIN_scores: """ - Caluclate transcript integrity (TIN) score + Calculate transcript integrity (TIN) score """ input: - bam = os.path.join( - config['output_dir'], - "{seqmode}", - "{sample}", - "map_genome", - "{sample}_Aligned.sortedByCoord.out.bam"), - bai = os.path.join( - config['output_dir'], - "{seqmode}", - "{sample}", - "map_genome", - "{sample}_Aligned.sortedByCoord.out.bam.bai"), + bam = lambda wildcards: + expand( + os.path.join( + config['output_dir'], + "samples", + "{sample}", + "map_genome", + "{sample}.{seqmode}.Aligned.sortedByCoord.out.bam"), + sample=wildcards.sample, + seqmode=samples_table.loc[wildcards.sample, 'seqmode']), + bai = lambda wildcards: + expand( + os.path.join( + config['output_dir'], + "samples", + "{sample}", + "map_genome", + "{sample}.{seqmode}.Aligned.sortedByCoord.out.bam.bai"), + sample=wildcards.sample, + seqmode=samples_table.loc[wildcards.sample, 'seqmode']), transcripts_bed12 = os.path.join( config['output_dir'], "full_transcripts_protein_coding.bed") @@ -547,7 +483,7 @@ rule calculate_TIN_scores: output: TIN_score = os.path.join( config['output_dir'], - "{seqmode}", + "samples", "{sample}", "TIN", "TIN_score.tsv") @@ -558,7 +494,7 @@ rule calculate_TIN_scores: log: stderr = os.path.join( config['log_dir'], - "{seqmode}", + "samples", "{sample}", "calculate_TIN_scores.log") @@ -584,25 +520,30 @@ rule merge_TIN_scores: TIN_score = expand( os.path.join( config['output_dir'], - "{seqmode}", + "samples", "{sample}", "TIN", "TIN_score.tsv"), - zip, - sample=[i for i in list(samples_table.index.values)], - seqmode=[samples_table.loc[i, 'seqmode'] - for i in list(samples_table.index.values)]) + sample=samples_table.index.values), output: TIN_scores_merged = os.path.join( config['output_dir'], "TIN_scores_merged.tsv") + log: + stderr = os.path.join( + config['log_dir'], + "merge_TIN_scores.stderr.log"), + stdout = os.path.join( + config["log_dir"], + "merge_TIN_scores.stdout.log") + params: TIN_score_merged_paths = ",".join(expand( os.path.join( config['output_dir'], - "{seqmode}", + "samples", "{sample}", "TIN", "TIN_score.tsv"), @@ -611,14 +552,6 @@ rule merge_TIN_scores: seqmode=[samples_table.loc[i, 'seqmode'] for i in list(samples_table.index.values)])) - log: - stderr = os.path.join( - config['log_dir'], - "merge_TIN_scores.stderr.log"), - stdout = os.path.join( - config["log_dir"], - "merge_TIN_scores.stdout.log") - threads: 1 singularity: @@ -643,15 +576,15 @@ rule plot_TIN_scores: output: TIN_boxplot_PNG = os.path.join( config['output_dir'], - "TIN_scores_boxplot.png"), + "TIN_scores_boxplot_mqc.png"), TIN_boxplot_PDF = os.path.join( config['output_dir'], - "TIN_scores_boxplot.pdf") + "TIN_scores_boxplot_mqc.pdf") params: TIN_boxplot_prefix = os.path.join( config['output_dir'], - "TIN_scores_boxplot") + "TIN_scores_boxplot_mqc") log: stderr = os.path.join( @@ -681,13 +614,14 @@ rule salmon_quantmerge_genes: salmon_in = expand( os.path.join( config["output_dir"], - "{seqmode}", + "samples", "{sample}", - "salmon_quant", - "quant.genes.sf"), + "{sample}.salmon.{seqmode}", + "quant.sf"), zip, - sample=list(samples_table.index.values), - seqmode=list(samples_table["seqmode"])) + sample=samples_table.index.values, + seqmode=[samples_table.loc[i, 'seqmode'] + for i in list(samples_table.index.values)]) output: salmon_out = os.path.join( @@ -697,15 +631,16 @@ rule salmon_quantmerge_genes: "genes_{salmon_merge_on}.tsv") params: - salmon_dir = expand( + salmon_in = expand( os.path.join( config["output_dir"], - "{seqmode}", + "samples", "{sample}", - "salmon_quant"), + "{sample}.salmon.{seqmode}"), zip, - sample=list(samples_table.index.values), - seqmode=list(samples_table["seqmode"])), + sample=[i for i in list(samples_table.index.values)], + seqmode=[samples_table.loc[i, 'seqmode'] + for i in list(samples_table.index.values)]), sample_name_list = expand( "{sample}", sample=list(samples_table.index.values)), @@ -726,7 +661,7 @@ rule salmon_quantmerge_genes: shell: "(salmon quantmerge \ - --quants {params.salmon_dir} \ + --quants {params.salmon_in} \ --genes \ --names {params.sample_name_list} \ --column {params.salmon_merge_on} \ @@ -742,13 +677,14 @@ rule salmon_quantmerge_transcripts: salmon_in = expand( os.path.join( config["output_dir"], - "{seqmode}", + "samples", "{sample}", - "salmon_quant", + "{sample}.salmon.{seqmode}", "quant.sf"), zip, - sample=list(samples_table.index.values), - seqmode=list(samples_table["seqmode"])), + sample=[i for i in list(samples_table.index.values)], + seqmode=[samples_table.loc[i, 'seqmode'] + for i in list(samples_table.index.values)]) output: salmon_out = os.path.join( @@ -758,15 +694,17 @@ rule salmon_quantmerge_transcripts: "transcripts_{salmon_merge_on}.tsv") params: - salmon_dir = expand( + salmon_in = expand( os.path.join( config["output_dir"], - "{seqmode}", + "samples", "{sample}", - "salmon_quant"), + "{sample}.salmon.{seqmode}"), zip, - sample=list(samples_table.index.values), - seqmode=list(samples_table["seqmode"])), + sample=[i for i in list(samples_table.index.values)], + seqmode=[samples_table.loc[i, 'seqmode'] + for i in list(samples_table.index.values)]), + sample_name_list = expand( "{sample}", sample=list(samples_table.index.values)), @@ -787,24 +725,178 @@ rule salmon_quantmerge_transcripts: shell: "(salmon quantmerge \ - --quants {params.salmon_dir} \ + --quants {params.salmon_in} \ --names {params.sample_name_list} \ --column {params.salmon_merge_on} \ --output {output.salmon_out}) \ 1> {log.stdout} 2> {log.stderr}" -################################################################################# -### ALFA: Annotation Landscape For Aligned reads -################################################################################# +rule star_rpm: + ''' + Create stranded bedgraph coverage with STARs RPM normalisation + ''' + input: + bam = lambda wildcards: + expand( + os.path.join( + config["output_dir"], + "samples", + "{sample}", + "map_genome", + "{sample}.{seqmode}.Aligned.sortedByCoord.out.bam"), + sample=wildcards.sample, + seqmode=samples_table.loc[wildcards.sample, 'seqmode']), + bai = lambda wildcards: + expand( + os.path.join( + config["output_dir"], + "samples", + "{sample}", + "map_genome", + "{sample}.{seqmode}.Aligned.sortedByCoord.out.bam.bai"), + sample=wildcards.sample, + seqmode=samples_table.loc[wildcards.sample, 'seqmode']), + + output: + str1 = os.path.join( + config["output_dir"], + "samples", + "{sample}", + "STAR_coverage", + "{sample}_Signal.Unique.str1.out.bg"), + str2 = os.path.join( + config["output_dir"], + "samples", + "{sample}", + "STAR_coverage", + "{sample}_Signal.UniqueMultiple.str1.out.bg"), + str3 = os.path.join( + config["output_dir"], + "samples", + "{sample}", + "STAR_coverage", + "{sample}_Signal.Unique.str2.out.bg"), + str4 = os.path.join( + config["output_dir"], + "samples", + "{sample}", + "STAR_coverage", + "{sample}_Signal.UniqueMultiple.str2.out.bg") + + params: + out_dir = lambda wildcards, output: + os.path.dirname(output.str1), + prefix = lambda wildcards, output: + os.path.join( + os.path.dirname(output.str1), + str(wildcards.sample) + "_"), + stranded = "Stranded" + + singularity: + "docker://zavolab/star:2.7.3a-slim" + + log: + stderr = os.path.join( + config["log_dir"], + "samples", + "{sample}", + "star_rpm.stderr.log"), + stdout = os.path.join( + config["log_dir"], + "samples", + "{sample}", + "star_rpm.stdout.log") + + threads: 4 + + shell: + "(mkdir -p {params.out_dir}; \ + chmod -R 777 {params.out_dir}; \ + STAR \ + --runMode inputAlignmentsFromBAM \ + --runThreadN {threads} \ + --inputBAMfile {input.bam} \ + --outWigType bedGraph \ + --outWigStrand {params.stranded} \ + --outWigNorm RPM \ + --outFileNamePrefix {params.prefix}) \ + 1> {log.stdout} 2> {log.stderr}" + + +rule rename_star_rpm_for_alfa: + input: + plus = lambda wildcards: + expand( + os.path.join( + config["output_dir"], + "samples", + "{sample}", + "STAR_coverage", + "{sample}_Signal.{unique}.{plus}.out.bg"), + sample=wildcards.sample, + unique=wildcards.unique, + plus=samples_table.loc[wildcards.sample, 'alfa_plus']), + + minus = lambda wildcards: + expand( + os.path.join( + config["output_dir"], + "samples", + "{sample}", + "STAR_coverage", + "{sample}_Signal.{unique}.{minus}.out.bg"), + sample=wildcards.sample, + unique=wildcards.unique, + minus=samples_table.loc[wildcards.sample, 'alfa_minus']) + + output: + plus = os.path.join( + config["output_dir"], + "samples", + "{sample}", + "ALFA", + "{unique}", + "{sample}.{unique}.plus.bg"), + minus = os.path.join( + config["output_dir"], + "samples", + "{sample}", + "ALFA", + "{unique}", + "{sample}.{unique}.minus.bg") + + params: + orientation = lambda wildcards: + samples_table.loc[wildcards.sample, "kallisto_directionality"] + + log: + stderr = os.path.join( + config["log_dir"], + "samples", + "{sample}", + "rename_star_rpm_for_alfa__{unique}.stderr.log"), + stdout = os.path.join( + config["log_dir"], + "samples", + "{sample}", + "rename_star_rpm_for_alfa__{unique}.stdout.log") + + singularity: + "docker://bash:5.0.16" -directionality = {"--fr": "fr-firststrand", "--rf": "fr-secondstrand"} + shell: + "(cp {input.plus} {output.plus}; \ + cp {input.minus} {output.minus};) \ + 1>{log.stdout} 2>{log.stderr}" rule generate_alfa_index: ''' Generate ALFA index files from sorted GTF file ''' input: - gtf = lambda wildcards: samples_table["gtf"][samples_table["organism"]==wildcards.organism][0], + gtf = lambda wildcards: + samples_table["gtf"] + [samples_table["organism"] == wildcards.organism][0], chr_len = os.path.join( config["star_indexes"], "{organism}", @@ -813,124 +905,144 @@ rule generate_alfa_index: "chrNameLength.txt"), output: - index_stranded = os.path.join(config["alfa_indexes"], - "{organism}", - "{index_size}", - "ALFA", + index_stranded = os.path.join( + config["alfa_indexes"], + "{organism}", + "{index_size}", + "ALFA", "sorted_genes.stranded.ALFA_index"), - index_unstranded = os.path.join(config["alfa_indexes"], - "{organism}", - "{index_size}", - "ALFA", + index_unstranded = os.path.join( + config["alfa_indexes"], + "{organism}", + "{index_size}", + "ALFA", "sorted_genes.unstranded.ALFA_index") params: genome_index = "sorted_genes", - out_dir = lambda wildcards, output: os.path.dirname(output.index_stranded) + out_dir = lambda wildcards, output: + os.path.dirname(output.index_stranded) threads: 4 - singularity: + singularity: "docker://zavolab/alfa:1.1.1-slim" - log: - os.path.join(config["log_dir"], "{organism}_{index_size}_generate_alfa_index.log") + log: + os.path.join( + config["log_dir"], + "{organism}_{index_size}_generate_alfa_index.log") shell: - """ - alfa -a {input.gtf} \ - -g {params.genome_index} \ - --chr_len {input.chr_len} \ - -p {threads} \ - -o {params.out_dir} &> {log} - """ + "(alfa -a {input.gtf} \ + -g {params.genome_index} \ + --chr_len {input.chr_len} \ + -p {threads} \ + -o {params.out_dir}) &> {log}" rule alfa_qc: - ''' Run ALFA from stranded bedgraph files ''' + ''' + Run ALFA from stranded bedgraph files + ''' input: plus = os.path.join( config["output_dir"], - "{seqmode}", + "samples", "{sample}", "ALFA", "{unique}", - "{sample}_Signal.{unique}.out.plus.bg"), + "{sample}.{unique}.plus.bg"), minus = os.path.join( config["output_dir"], - "{seqmode}", + "samples", "{sample}", "ALFA", "{unique}", - "{sample}_Signal.{unique}.out.minus.bg"), - gtf = lambda wildcards: os.path.join(config["alfa_indexes"], - samples_table.loc[wildcards.sample, "organism"], - str(samples_table.loc[wildcards.sample, "index_size"]), - "ALFA", - "sorted_genes.stranded.ALFA_index") + "{sample}.{unique}.minus.bg"), + gtf = lambda wildcards: + os.path.join( + config["alfa_indexes"], + samples_table.loc[wildcards.sample, "organism"], + str(samples_table.loc[wildcards.sample, "index_size"]), + "ALFA", + "sorted_genes.stranded.ALFA_index") output: biotypes = os.path.join( config["output_dir"], - "{seqmode}", + "samples", "{sample}", "ALFA", "{unique}", "ALFA_plots.Biotypes.pdf"), categories = os.path.join( config["output_dir"], - "{seqmode}", + "samples", "{sample}", "ALFA", "{unique}", "ALFA_plots.Categories.pdf"), table = os.path.join( config["output_dir"], - "{seqmode}", + "samples", "{sample}", "ALFA", "{unique}", "{sample}.ALFA_feature_counts.tsv") params: - out_dir = lambda wildcards, output: os.path.dirname(output.biotypes), - alfa_orientation = lambda wildcards: directionality[samples_table.loc[wildcards.sample, "kallisto_directionality"]], - in_file_plus = lambda wildcards, input: os.path.basename(input.plus), - in_file_minus = lambda wildcards, input: os.path.basename(input.minus), - genome_index = lambda wildcards, input: os.path.abspath(os.path.join(os.path.dirname(input.gtf), "sorted_genes")), + out_dir = lambda wildcards, output: + os.path.dirname(output.biotypes), + plus = lambda wildcards, input: + os.path.basename(input.plus), + minus = lambda wildcards, input: + os.path.basename(input.minus), + alfa_orientation = lambda wildcards: + [samples_table.loc[ + wildcards.sample, "alfa_directionality"]], + genome_index = lambda wildcards, input: + os.path.abspath( + os.path.join( + os.path.dirname(input.gtf), + "sorted_genes")), name = "{sample}" singularity: "docker://zavolab/alfa:1.1.1-slim" - log: - os.path.abspath(os.path.join( - config["log_dir"], - "{seqmode}", - "{sample}", - "alfa_qc.{unique}.log")) + log: + os.path.join( + config["log_dir"], + "samples", + "{sample}", + "alfa_qc.{unique}.log") shell: - """ - cd {params.out_dir}; \ - (alfa -g {params.genome_index} \ - --bedgraph {params.in_file_plus} {params.in_file_minus} {params.name} \ - -s {params.alfa_orientation}) &> {log} - """ + "(cd {params.out_dir}; \ + alfa \ + -g {params.genome_index} \ + --bedgraph {params.plus} {params.minus} {params.name} \ + -s {params.alfa_orientation}) &> {log}" +# cd {params.out_dir}; rule alfa_qc_all_samples: - ''' Run ALFA from stranded bedgraph files on all samples ''' + ''' + Run ALFA from stranded bedgraph files on all samples + ''' input: - tables = [os.path.join( - config["output_dir"], - samples_table.loc[sample1, "seqmode"], - str(sample1), - "ALFA", - "{unique}", - sample1 + ".ALFA_feature_counts.tsv") - for sample1 in list(samples_table.index.values)] - + tables = lambda wildcards: + expand( + os.path.join( + config["output_dir"], + "samples", + "{sample}", + "ALFA", + "{unique}", + "{sample}.ALFA_feature_counts.tsv"), + sample=samples_table.index.values, + unique=wildcards.unique) output: biotypes = os.path.join( config["output_dir"], @@ -944,443 +1056,263 @@ rule alfa_qc_all_samples: "ALFA_plots.Categories.pdf") params: - out_dir = lambda wildcards, output: os.path.dirname(output.biotypes) + out_dir = lambda wildcards, output: + os.path.dirname(output.biotypes) - log: - os.path.abspath( - os.path.join(config["log_dir"], - "alfa_qc_all_samples.{unique}.log")) + log: + os.path.join( + config["log_dir"], + "alfa_qc_all_samples.{unique}.log") singularity: "docker://zavolab/alfa:1.1.1-slim" shell: - """ - (alfa -c {input.tables} -o {params.out_dir}) &> {log} - """ + "(alfa -c {input.tables} -o {params.out_dir}) &> {log}" rule alfa_concat_results: input: - expand(os.path.join( - config["output_dir"], - "ALFA", - "{unique_type}", - "ALFA_plots.{annotation}.pdf"), - unique_type = ["Unique", "UniqueMultiple"], - annotation = ["Categories", "Biotypes"]) + expand( + os.path.join( + config["output_dir"], + "ALFA", + "{unique}", + "ALFA_plots.{annotation}.pdf"), + unique=["Unique", "UniqueMultiple"], + annotation=["Categories", "Biotypes"]) output: - expand(os.path.join( + os.path.join( config["output_dir"], "ALFA", - "ALFA_plots.concat.png")) + "ALFA_plots_mqc.png") params: density = 300 - log: - os.path.abspath( - os.path.join(config["log_dir"], - "alfa_qc_all_samples.concat.log")) + log: + os.path.join( + config["log_dir"], + "alfa_qc_all_samples.concat.log") singularity: "docker://zavolab/imagemagick:7.0.8" shell: - """ - convert -append -density {params.density} \ - {input} {output} &> {log} - """ + "(convert -append -density {params.density} \ + {input} {output}) &> {log}" -rule prepare_files_for_report: +rule prepare_multiqc_config: ''' - Re-structure the results and add comments for MultiQC parsing + Prepare config for the MultiQC ''' input: - outdir1 = expand( + script = os.path.join( + workflow.basedir, + "workflow", + "scripts", + "rhea_multiqc_config.py") + + output: + multiqc_config = os.path.join( + config["output_dir"], + "multiqc_config.yaml") + + params: + logo_path = config['report_logo'], + multiqc_intro_text = config['report_description'], + url = config['report_url'] + + log: + stderr = os.path.join( + config["log_dir"], + "prepare_multiqc_config.stderr.log"), + stdout = os.path.join( + config["log_dir"], + "prepare_multiqc_config.stdout.log") + + shell: + "(python {input.script} \ + --config {output.multiqc_config} \ + --intro-text '{params.multiqc_intro_text}' \ + --custom-logo {params.logo_path} \ + --url '{params.url}') \ + 1> {log.stdout} 2> {log.stderr}" + + +rule multiqc_report: + ''' + Create report with MultiQC + ''' + input: + fastqc_se = expand( os.path.join( config['output_dir'], - "{seqmode}", + "samples", "{sample}", - "mate1_fastqc"), - zip, - sample=[i for i in list(samples_table.index.values)], - seqmode=[samples_table.loc[i, 'seqmode'] - for i in list(samples_table.index.values)]), + "fastqc", + "{mate}"), + sample=samples_table.index.values, + mate="fq1"), + + fastqc_pe = expand( + os.path.join( + config['output_dir'], + "samples", + "{sample}", + "fastqc", + "{mate}"), + sample=[i for i in list( + samples_table[samples_table['seqmode'] == 'pe'].index.values)], + mate="fq2"), + pseudoalignment = expand( os.path.join( config['output_dir'], - "{seqmode}", + "samples", "{sample}", "quant_kallisto", - "{sample}.kallisto.pseudo.sam"), + "{sample}.{seqmode}.kallisto.pseudo.sam"), zip, sample=[i for i in list(samples_table.index.values)], seqmode=[samples_table.loc[i, 'seqmode'] for i in list(samples_table.index.values)]), + TIN_boxplot_PNG = os.path.join( config['output_dir'], - "TIN_scores_boxplot.png"), + "TIN_scores_boxplot_mqc.png"), + TIN_boxplot_PDF = os.path.join( config['output_dir'], - "TIN_scores_boxplot.pdf"), - salmon_merge_genes = expand( - os.path.join( - config["output_dir"], - "summary_salmon", - "quantmerge", - "genes_{salmon_merge_on}.tsv"), - salmon_merge_on=["tpm", "numreads"]), - salmon_merge_transcripts = expand( - os.path.join( - config["output_dir"], - "summary_salmon", - "quantmerge", - "transcripts_{salmon_merge_on}.tsv"), - salmon_merge_on=["tpm", "numreads"]), - star_rpm = expand( - os.path.join( - config["output_dir"], - "{seqmode}", - "{sample}", - "STAR_coverage", - "{sample}_Signal.UniqueMultiple.str1.out.bg"), - zip, - sample=[i for i in list(samples_table.index.values)], - seqmode=[samples_table.loc[i, 'seqmode'] - for i in list(samples_table.index.values)]), + "TIN_scores_boxplot_mqc.pdf"), + alfa_concat_out = os.path.join( config["output_dir"], "ALFA", - "ALFA_plots.concat.png") + "ALFA_plots_mqc.png"), - output: - samples_dir_result = directory(os.path.join( + multiqc_config = os.path.join( config["output_dir"], - "samples")), - samples_dir_log = directory(os.path.join( - config["log_dir"], - "samples")) + "multiqc_config.yaml") + + output: + multiqc_report = directory( + os.path.join( + config["output_dir"], + "multiqc_summary")) + params: - results_dir = config["output_dir"], - log_dir = config["log_dir"], + results_dir = os.path.join( + config["output_dir"]), + log_dir = config["log_dir"] + log: stderr = os.path.join( config["log_dir"], - "prepare_files_for_report.stderr.log"), + "multiqc_report.stderr.log"), stdout = os.path.join( config["log_dir"], - "prepare_files_for_report.stdout.log") - run: - - # remove "single/paired end" from the results directories - os.mkdir(output.samples_dir_result) - # copy paired end results - paired_end_dir = glob.glob( - os.path.join( - params.results_dir, - "paired_end", - "*")) - for s in paired_end_dir: - sample_name = s.split("/")[-1] - shutil.copytree( - s, \ - os.path.join( - params.results_dir, - "samples", - sample_name)) - # copy single end results - single_end_dir = glob.glob( - os.path.join( - params.results_dir, - "single_end", - "*")) - for s in single_end_dir: - sample_name = s.split("/")[-1] - shutil.copytree( - s, \ - os.path.join( - params.results_dir, - "samples", - sample_name)) + "multiqc_report.stdout.log") - # remove "single/paired end" from the logs directories - os.mkdir(output.samples_dir_log) - # copy paired end results - paired_end_dir = glob.glob( - os.path.join( - params.log_dir, - "paired_end", - "*")) - for s in paired_end_dir: - sample_name = s.split("/")[-1] - shutil.copytree( - s, \ - os.path.join( - params.log_dir, - "samples", - sample_name)) - # copy single end results - single_end_dir = glob.glob( - os.path.join( - params.log_dir, - "single_end", - "*")) - for s in single_end_dir: - sample_name = s.split("/")[-1] - shutil.copytree( - s, \ - os.path.join( - params.log_dir, - "samples", - sample_name)) - - # encapsulate salmon quantification results - all_samples_dirs = glob.glob( - os.path.join( - params.results_dir, - "samples", - "*")) - for s in all_samples_dirs: - sample_name = s.split("/")[-1] - shutil.move( - os.path.join( - s, - "salmon_quant"), - os.path.join( - s, - sample_name) - ) - os.mkdir(os.path.join( - s, - "salmon_quant")) - shutil.move( - os.path.join( - s, - sample_name), - os.path.join( - s, - "salmon_quant", - sample_name) - ) - - # adjust FastQC results 'Filename' field: - fastq_zip_list = glob.glob( - os.path.join( - params.results_dir, - "samples", - "*", - "*_fastqc", - "*_fastqc.zip")) - for zipfile in fastq_zip_list: - sample_name = zipfile.split("/")[-3] - absolute_path_zipfile = os.path.abspath(zipfile) - zipfile_path_chunks = absolute_path_zipfile.split(os.path.sep) - dir_path_to_zipfile = os.path.sep + os.path.join( - (*zipfile_path_chunks[:-1])) - with ZipFile(zipfile, 'r') as zip_f: - zip_f.extractall(dir_path_to_zipfile) - fastqc_data_f = os.path.join( - zipfile[:-4], - "fastqc_data.txt") - with open(fastqc_data_f) as f: - log_lines = f.read().splitlines() - log_lines[3] = "Filename\t" + sample_name+"|"+log_lines[3].split("\t")[1] - with open(fastqc_data_f, "w") as f: - for i in log_lines: f.write(i+"\n") - os.remove(zipfile) - - # adjust Kallisto quantification logs - kallisto_logs = glob.glob( - os.path.join( - params.log_dir, - "samples", - "*", - "genome_quantification_kallisto.stderr.log")) - for kallisto_log in kallisto_logs: - with open(kallisto_log) as f: - log_lines = f.read().splitlines() - temp = log_lines[8].split(".") - log_lines[8] = temp[0] + "." + temp[2] + "." + temp[3] - with open(kallisto_log+".MODIFIED", "w") as f: - for i in log_lines: f.write(i+"\n") - - # add #-comment to all cutadapt logs: - cutadapt_logs = glob.glob( - os.path.join( - params.log_dir, - "samples", - "*", - "remove_*_cutadapt.stdout.log")) - for cutadapt_log in cutadapt_logs: - sample_name = cutadapt_log.split("/")[-2] - with open(cutadapt_log) as f: - log_lines = f.read().splitlines() - log_lines[1] = log_lines[1] + " # " + sample_name - with open(cutadapt_log, "w") as f: - for i in log_lines: f.write(i+"\n") - - # adjust TIN boxplots filenames for MutliQC recognition - os.rename( - input.TIN_boxplot_PNG, - os.path.join( - params.results_dir, - "TIN scores_mqc.png")) - os.rename( - input.TIN_boxplot_PDF, - os.path.join( - params.results_dir, - "TIN scores_mqc.pdf")) - - # adjust alfa plot filename for MutliQC recognition - os.rename( - input.alfa_concat_out, - os.path.join( - params.results_dir, - "ALFA", - "ALFA_plots.concat_mqc.png")) + singularity: + "docker://ewels/multiqc:1.7" - # remove old result directories - shutil.rmtree( - os.path.join( - params.results_dir, - "paired_end"), - ignore_errors=False, - onerror=None) - shutil.rmtree( - os.path.join( - params.results_dir, - "single_end"), - ignore_errors=False, - onerror=None) - shutil.rmtree( - os.path.join( - params.log_dir, - "paired_end"), - ignore_errors=False, - onerror=None) - shutil.rmtree( - os.path.join( - params.log_dir, - "single_end"), - ignore_errors=False, - onerror=None) + shell: + "(multiqc \ + --outdir {output.multiqc_report} \ + --config {input.multiqc_config} \ + {params.results_dir} \ + {params.log_dir};) \ + 1> {log.stdout} 2> {log.stderr}" -rule prepare_MultiQC_config: +rule sort_bed_4_big: ''' - Prepare config for the MultiQC + sort bedGraphs in order to work with bedGraphtobigWig ''' input: - samples_dir_result = os.path.join( + bg = os.path.join( config["output_dir"], - "samples"), - samples_dir_log = os.path.join( - config["log_dir"], - "samples") + "samples", + "{sample}", + "ALFA", + "{unique}", + "{sample}.{unique}.{strand}.bg") + output: - multiqc_config = os.path.join( + sorted_bg = os.path.join( config["output_dir"], - "MultiQC_config.yaml") - params: - logo_path = os.path.join( - "..", - "..", - "images", - "logo.128px.png"), - results_dir = config["output_dir"] + "samples", + "{sample}", + "bigWig", + "{unique}", + "{sample}_{unique}_{strand}.sorted.bg") + + singularity: + "docker://cjh4zavolab/bedtools:2.27" + log: stderr = os.path.join( config["log_dir"], - "prepare_MultiQC_config.stderr.log"), - stdout = os.path.join( - config["log_dir"], - "prepare_MultiQC_config.stdout.log") - run: - with open(output.multiqc_config, "w") as YAML: - YAML.write("---\n\n") - YAML.write("title: \"Rhea\"\n") - YAML.write("subtitle: \"RNA-Seq processing pipeline developed by the members of Zavolan Lab\"\n") - YAML.write("intro_text: \"Short analysis title from config[analysis_title]\"\n") - YAML.write("custom_logo: \""+params.logo_path+"\"\n") - YAML.write("custom_logo_url: \"https://www.biozentrum.unibas.ch/research/researchgroups/overview/unit/zavolan/research-group-mihaela-zavolan/\"\n") - YAML.write("custom_logo_title: \"ZavoLab\"\n\n") - YAML.write("report_header_info:\n") - YAML.write(" - Project Type: \"Snakemake workflow\"\n") - YAML.write(" - Analysis Type: \"RNA-seq\"\n") - YAML.write(" - Analysis Author: \"config[author_name]\"\n") - YAML.write(" - Contact E-mail: \"config[author_email]\"\n\n") - YAML.write("top_modules:\n\n") - YAML.write(" - fastqc:\n") - YAML.write(" path_filters:\n") - YAML.write(" - \"*/mate1_fastqc/*\"\n") - YAML.write(" - \"*/mate2_fastqc/*\"\n") - YAML.write("\n") - YAML.write(" - cutadapt:\n") - YAML.write(" name: \"Cutadapt: adapter removal\"\n") - YAML.write(" path_filters:\n") - YAML.write(" - \"*/remove_adapters_cutadapt.stdout.log\"\n") - YAML.write("\n") - YAML.write(" - cutadapt:\n") - YAML.write(" name: \"Cutadapt: polyA tails removal\"\n") - YAML.write(" path_filters:\n") - YAML.write(" - \"*/remove_polya_cutadapt.stdout.log\"\n") - YAML.write("\n") - YAML.write(" - star:\n") - YAML.write(" path_filters:\n") - YAML.write(" - \"*/map_genome/*\"\n") - YAML.write("\n") - YAML.write(" - alfa:\n") - YAML.write(" path_filters:\n") - YAML.write(" - \"*/ALFA_plots.concat_mqc.png\"\n") - YAML.write("\n") - YAML.write(" - TIN_scores:\n") - YAML.write(" path_filters:\n") - YAML.write(" - \"*/TIN scores_mqc.png\"\n") - YAML.write("\n") - YAML.write(" - salmon:\n") - YAML.write(" path_filters:\n") - YAML.write(" - \"*/salmon_quant/*\"\n") - YAML.write("\n") - YAML.write(" - kallisto:\n") - YAML.write(" path_filters:\n") - YAML.write(" - \"*/genome_quantification_kallisto.stderr.log.MODIFIED\"\n") - YAML.write("\n") - YAML.write("...") - - -rule MULTIQC_report: + "samples", + "{sample}", + "sort_bg_{unique}_{strand}.stderr.log") + + shell: + "(sortBed \ + -i {input.bg} \ + > {output.sorted_bg};) 2> {log.stderr}" + +rule prepare_bigWig: ''' - Create report with MultiQC + bedGraphtobigWig, for viewing in genome browsers ''' input: - multiqc_config = os.path.join( + sorted_bg = os.path.join( config["output_dir"], - "MultiQC_config.yaml") + "samples", + "{sample}", + "bigWig", + "{unique}", + "{sample}_{unique}_{strand}.sorted.bg"), + chr_sizes = lambda wildcards: + os.path.join( + config['star_indexes'], + samples_table.loc[wildcards.sample, "organism"], + str(samples_table.loc[wildcards.sample, "index_size"]), + "STAR_index", + "chrNameLength.txt") + output: - MultiQC_report = directory(os.path.join( + bigWig = os.path.join( config["output_dir"], - "multiqc_summary")) - params: - results_dir = config["output_dir"], - log_dir = config["log_dir"] + "samples", + "{sample}", + "bigWig", + "{unique}", + "{sample}_{unique}_{strand}.bw") + + singularity: + "docker://zavolab/bedgraphtobigwig:4-slim" + log: stderr = os.path.join( config["log_dir"], - "MULTIQC_report.stderr.log"), + "samples", + "{sample}", + "bigwig_{unique}_{strand}.stderr.log"), + stdout = os.path.join( config["log_dir"], - "MULTIQC_report.stdout.log") - singularity: - "docker://ewels/multiqc:1.7" + "samples", + "{sample}", + "bigwig_{unique}_{strand}.stdout.log") + shell: - """ - multiqc \ - --outdir {output.MultiQC_report} \ - --config {input.multiqc_config} \ - {params.results_dir} \ - {params.log_dir} \ - 1> {log.stdout} 2> {log.stderr} - """ + "(bedGraphToBigWig \ + {input.sorted_bg} \ + {input.chr_sizes} \ + {output.bigWig};) \ + 1> {log.stdout} 2> {log.stderr}" diff --git a/images/dag_test_workflow.svg b/images/dag_test_workflow.svg index 11a9781cbc1f74944f2d98a0ad123338074b2ae1..bcd33c59a2fcd4207c367689aabad56363167b41 100644 --- a/images/dag_test_workflow.svg +++ b/images/dag_test_workflow.svg @@ -1,641 +1,1097 @@ <?xml version="1.0" encoding="UTF-8" standalone="no"?> <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> -<!-- Generated by graphviz version 2.38.0 (20140413.2041) +<!-- Generated by graphviz version 2.40.1 (20161225.0304) --> <!-- Title: snakemake_dag Pages: 1 --> -<svg width="2252pt" height="913pt" - viewBox="0.00 0.00 2252.45 913.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> -<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 909)"> +<svg width="2326pt" height="846pt" + viewBox="0.00 0.00 2325.50 846.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> +<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 842)"> <title>snakemake_dag</title> -<polygon fill="white" stroke="none" points="-4,4 -4,-909 2248.45,-909 2248.45,4 -4,4"/> +<polygon fill="#ffffff" stroke="transparent" points="-4,4 -4,-842 2321.5,-842 2321.5,4 -4,4"/> <!-- 0 --> -<g id="node1" class="node"><title>0</title> -<path fill="none" stroke="#56d85b" stroke-width="2" d="M1166,-36C1166,-36 1136,-36 1136,-36 1130,-36 1124,-30 1124,-24 1124,-24 1124,-12 1124,-12 1124,-6 1130,-0 1136,-0 1136,-0 1166,-0 1166,-0 1172,-0 1178,-6 1178,-12 1178,-12 1178,-24 1178,-24 1178,-30 1172,-36 1166,-36"/> -<text text-anchor="middle" x="1151" y="-15.5" font-family="sans" font-size="10.00">finish</text> +<g id="node1" class="node"> +<title>0</title> +<path fill="none" stroke="#5673d8" stroke-width="2" d="M1486.5,-36C1486.5,-36 1456.5,-36 1456.5,-36 1450.5,-36 1444.5,-30 1444.5,-24 1444.5,-24 1444.5,-12 1444.5,-12 1444.5,-6 1450.5,0 1456.5,0 1456.5,0 1486.5,0 1486.5,0 1492.5,0 1498.5,-6 1498.5,-12 1498.5,-12 1498.5,-24 1498.5,-24 1498.5,-30 1492.5,-36 1486.5,-36"/> +<text text-anchor="middle" x="1471.5" y="-15.5" font-family="sans" font-size="10.00" fill="#000000">finish</text> </g> <!-- 1 --> -<g id="node2" class="node"><title>1</title> -<path fill="none" stroke="#d87556" stroke-width="2" d="M1185,-108C1185,-108 1117,-108 1117,-108 1111,-108 1105,-102 1105,-96 1105,-96 1105,-84 1105,-84 1105,-78 1111,-72 1117,-72 1117,-72 1185,-72 1185,-72 1191,-72 1197,-78 1197,-84 1197,-84 1197,-96 1197,-96 1197,-102 1191,-108 1185,-108"/> -<text text-anchor="middle" x="1151" y="-87.5" font-family="sans" font-size="10.00">MULTIQC_report</text> +<g id="node2" class="node"> +<title>1</title> +<path fill="none" stroke="#d8a456" stroke-width="2" d="M601.5,-108C601.5,-108 537.5,-108 537.5,-108 531.5,-108 525.5,-102 525.5,-96 525.5,-96 525.5,-84 525.5,-84 525.5,-78 531.5,-72 537.5,-72 537.5,-72 601.5,-72 601.5,-72 607.5,-72 613.5,-78 613.5,-84 613.5,-84 613.5,-96 613.5,-96 613.5,-102 607.5,-108 601.5,-108"/> +<text text-anchor="middle" x="569.5" y="-87.5" font-family="sans" font-size="10.00" fill="#000000">multiqc_report</text> </g> <!-- 1->0 --> -<g id="edge1" class="edge"><title>1->0</title> -<path fill="none" stroke="grey" stroke-width="2" d="M1151,-71.6966C1151,-63.9827 1151,-54.7125 1151,-46.1124"/> -<polygon fill="grey" stroke="grey" stroke-width="2" points="1154.5,-46.1043 1151,-36.1043 1147.5,-46.1044 1154.5,-46.1043"/> +<g id="edge1" class="edge"> +<title>1->0</title> +<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M613.5085,-74.0838C616.5283,-73.2924 619.5449,-72.5851 622.5,-72 781.3531,-40.5491 1291.0133,-23.3569 1433.9267,-19.0727"/> +<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="1434.445,-22.559 1444.3368,-18.7641 1434.2375,-15.5621 1434.445,-22.559"/> </g> <!-- 2 --> -<g id="node3" class="node"><title>2</title> -<path fill="none" stroke="#56d8a9" stroke-width="2" d="M1200,-180C1200,-180 1102,-180 1102,-180 1096,-180 1090,-174 1090,-168 1090,-168 1090,-156 1090,-156 1090,-150 1096,-144 1102,-144 1102,-144 1200,-144 1200,-144 1206,-144 1212,-150 1212,-156 1212,-156 1212,-168 1212,-168 1212,-174 1206,-180 1200,-180"/> -<text text-anchor="middle" x="1151" y="-159.5" font-family="sans" font-size="10.00">prepare_MultiQC_config</text> +<g id="node3" class="node"> +<title>2</title> +<path fill="none" stroke="#d8cb56" stroke-width="2" d="M1126,-252C1126,-252 1057,-252 1057,-252 1051,-252 1045,-246 1045,-240 1045,-240 1045,-228 1045,-228 1045,-222 1051,-216 1057,-216 1057,-216 1126,-216 1126,-216 1132,-216 1138,-222 1138,-228 1138,-228 1138,-240 1138,-240 1138,-246 1132,-252 1126,-252"/> +<text text-anchor="middle" x="1091.5" y="-231.5" font-family="sans" font-size="10.00" fill="#000000">prepare_bigWig</text> </g> -<!-- 2->1 --> -<g id="edge2" class="edge"><title>2->1</title> -<path fill="none" stroke="grey" stroke-width="2" d="M1151,-143.697C1151,-135.983 1151,-126.712 1151,-118.112"/> -<polygon fill="grey" stroke="grey" stroke-width="2" points="1154.5,-118.104 1151,-108.104 1147.5,-118.104 1154.5,-118.104"/> +<!-- 2->0 --> +<g id="edge2" class="edge"> +<title>2->0</title> +<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M1137.1463,-215.926C1191.2456,-193.6937 1283.2814,-153.2886 1356.5,-108 1387.993,-88.5204 1420.9854,-61.9711 1443.5142,-42.7607"/> +<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="1446.0236,-45.2187 1451.3187,-36.0419 1441.4566,-39.9137 1446.0236,-45.2187"/> </g> <!-- 3 --> -<g id="node4" class="node"><title>3</title> -<path fill="none" stroke="#c6d856" stroke-width="2" d="M1198.5,-252C1198.5,-252 1103.5,-252 1103.5,-252 1097.5,-252 1091.5,-246 1091.5,-240 1091.5,-240 1091.5,-228 1091.5,-228 1091.5,-222 1097.5,-216 1103.5,-216 1103.5,-216 1198.5,-216 1198.5,-216 1204.5,-216 1210.5,-222 1210.5,-228 1210.5,-228 1210.5,-240 1210.5,-240 1210.5,-246 1204.5,-252 1198.5,-252"/> -<text text-anchor="middle" x="1151" y="-231.5" font-family="sans" font-size="10.00">prepare_files_for_report</text> +<g id="node4" class="node"> +<title>3</title> +<path fill="none" stroke="#d8cb56" stroke-width="2" d="M1617,-252C1617,-252 1548,-252 1548,-252 1542,-252 1536,-246 1536,-240 1536,-240 1536,-228 1536,-228 1536,-222 1542,-216 1548,-216 1548,-216 1617,-216 1617,-216 1623,-216 1629,-222 1629,-228 1629,-228 1629,-240 1629,-240 1629,-246 1623,-252 1617,-252"/> +<text text-anchor="middle" x="1582.5" y="-231.5" font-family="sans" font-size="10.00" fill="#000000">prepare_bigWig</text> </g> -<!-- 3->2 --> -<g id="edge3" class="edge"><title>3->2</title> -<path fill="none" stroke="grey" stroke-width="2" d="M1151,-215.697C1151,-207.983 1151,-198.712 1151,-190.112"/> -<polygon fill="grey" stroke="grey" stroke-width="2" points="1154.5,-190.104 1151,-180.104 1147.5,-190.104 1154.5,-190.104"/> +<!-- 3->0 --> +<g id="edge3" class="edge"> +<title>3->0</title> +<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M1573.2271,-215.9555C1553.7614,-178.0762 1508.5421,-90.0818 1485.5158,-45.274"/> +<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="1488.5083,-43.4396 1480.8245,-36.1451 1482.2823,-46.6392 1488.5083,-43.4396"/> </g> <!-- 4 --> -<g id="node5" class="node"><title>4</title> -<path fill="none" stroke="#78d856" stroke-width="2" d="M280,-324C280,-324 12,-324 12,-324 6,-324 0,-318 0,-312 0,-312 0,-300 0,-300 0,-294 6,-288 12,-288 12,-288 280,-288 280,-288 286,-288 292,-294 292,-300 292,-300 292,-312 292,-312 292,-318 286,-324 280,-324"/> -<text text-anchor="middle" x="146" y="-309" font-family="sans" font-size="10.00">pe_fastqc</text> -<text text-anchor="middle" x="146" y="-298" font-family="sans" font-size="10.00">sample: synthetic_10_reads_paired_synthetic_10_reads_paired</text> +<g id="node5" class="node"> +<title>4</title> +<path fill="none" stroke="#d8cb56" stroke-width="2" d="M1506,-252C1506,-252 1437,-252 1437,-252 1431,-252 1425,-246 1425,-240 1425,-240 1425,-228 1425,-228 1425,-222 1431,-216 1437,-216 1437,-216 1506,-216 1506,-216 1512,-216 1518,-222 1518,-228 1518,-228 1518,-240 1518,-240 1518,-246 1512,-252 1506,-252"/> +<text text-anchor="middle" x="1471.5" y="-231.5" font-family="sans" font-size="10.00" fill="#000000">prepare_bigWig</text> </g> -<!-- 4->3 --> -<g id="edge4" class="edge"><title>4->3</title> -<path fill="none" stroke="grey" stroke-width="2" d="M292.014,-288.792C295.035,-288.52 298.033,-288.255 301,-288 590.339,-263.126 936.045,-245.222 1081.31,-238.235"/> -<polygon fill="grey" stroke="grey" stroke-width="2" points="1081.6,-241.725 1091.42,-237.751 1081.26,-234.733 1081.6,-241.725"/> +<!-- 4->0 --> +<g id="edge4" class="edge"> +<title>4->0</title> +<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M1471.5,-215.9555C1471.5,-178.3938 1471.5,-91.5541 1471.5,-46.4103"/> +<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="1475.0001,-46.145 1471.5,-36.1451 1468.0001,-46.1451 1475.0001,-46.145"/> </g> <!-- 5 --> -<g id="node6" class="node"><title>5</title> -<path fill="none" stroke="#61d856" stroke-width="2" d="M602,-324C602,-324 322,-324 322,-324 316,-324 310,-318 310,-312 310,-312 310,-300 310,-300 310,-294 316,-288 322,-288 322,-288 602,-288 602,-288 608,-288 614,-294 614,-300 614,-300 614,-312 614,-312 614,-318 608,-324 602,-324"/> -<text text-anchor="middle" x="462" y="-309" font-family="sans" font-size="10.00">fastqc</text> -<text text-anchor="middle" x="462" y="-298" font-family="sans" font-size="10.00">sample: synthetic_10_reads_mate_1_synthetic_10_reads_mate_1</text> +<g id="node6" class="node"> +<title>5</title> +<path fill="none" stroke="#d8cb56" stroke-width="2" d="M1728,-252C1728,-252 1659,-252 1659,-252 1653,-252 1647,-246 1647,-240 1647,-240 1647,-228 1647,-228 1647,-222 1653,-216 1659,-216 1659,-216 1728,-216 1728,-216 1734,-216 1740,-222 1740,-228 1740,-228 1740,-240 1740,-240 1740,-246 1734,-252 1728,-252"/> +<text text-anchor="middle" x="1693.5" y="-231.5" font-family="sans" font-size="10.00" fill="#000000">prepare_bigWig</text> </g> -<!-- 5->3 --> -<g id="edge5" class="edge"><title>5->3</title> -<path fill="none" stroke="grey" stroke-width="2" d="M614.42,-289.384C618.998,-288.917 623.533,-288.455 628,-288 790.391,-271.457 981.161,-252.159 1081.39,-242.031"/> -<polygon fill="grey" stroke="grey" stroke-width="2" points="1081.79,-245.508 1091.39,-241.02 1081.09,-238.543 1081.79,-245.508"/> +<!-- 5->0 --> +<g id="edge5" class="edge"> +<title>5->0</title> +<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M1674.9542,-215.9555C1635.4514,-177.5203 1542.9186,-87.4884 1497.5331,-43.3295"/> +<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="1499.7571,-40.6101 1490.1491,-36.1451 1494.8756,-45.6272 1499.7571,-40.6101"/> </g> <!-- 6 --> -<g id="node7" class="node"><title>6</title> -<path fill="none" stroke="#56c1d8" stroke-width="2" d="M1393,-468C1393,-468 1251,-468 1251,-468 1245,-468 1239,-462 1239,-456 1239,-456 1239,-444 1239,-444 1239,-438 1245,-432 1251,-432 1251,-432 1393,-432 1393,-432 1399,-432 1405,-438 1405,-444 1405,-444 1405,-456 1405,-456 1405,-462 1399,-468 1393,-468"/> -<text text-anchor="middle" x="1322" y="-447.5" font-family="sans" font-size="10.00">pe_genome_quantification_kallisto</text> +<g id="node7" class="node"> +<title>6</title> +<path fill="none" stroke="#d8cb56" stroke-width="2" d="M1839,-252C1839,-252 1770,-252 1770,-252 1764,-252 1758,-246 1758,-240 1758,-240 1758,-228 1758,-228 1758,-222 1764,-216 1770,-216 1770,-216 1839,-216 1839,-216 1845,-216 1851,-222 1851,-228 1851,-228 1851,-240 1851,-240 1851,-246 1845,-252 1839,-252"/> +<text text-anchor="middle" x="1804.5" y="-231.5" font-family="sans" font-size="10.00" fill="#000000">prepare_bigWig</text> </g> -<!-- 6->3 --> -<g id="edge6" class="edge"><title>6->3</title> -<path fill="none" stroke="grey" stroke-width="2" d="M1328.46,-431.931C1339.29,-400.128 1356.95,-331.131 1325,-288 1301.2,-255.876 1258.39,-242.563 1221.19,-237.312"/> -<polygon fill="grey" stroke="grey" stroke-width="2" points="1221.22,-233.789 1210.87,-236.035 1220.36,-240.736 1221.22,-233.789"/> +<!-- 6->0 --> +<g id="edge6" class="edge"> +<title>6->0</title> +<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M1777.8662,-215.9626C1733.078,-185.7267 1639.7034,-123.1035 1559.5,-72 1542.4084,-61.1097 1523.2489,-49.3058 1507.182,-39.5195"/> +<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="1508.9704,-36.5108 1498.6069,-34.3089 1505.3353,-42.493 1508.9704,-36.5108"/> </g> <!-- 7 --> -<g id="node8" class="node"><title>7</title> -<path fill="none" stroke="#d89556" stroke-width="2" d="M683,-468C683,-468 557,-468 557,-468 551,-468 545,-462 545,-456 545,-456 545,-444 545,-444 545,-438 551,-432 557,-432 557,-432 683,-432 683,-432 689,-432 695,-438 695,-444 695,-444 695,-456 695,-456 695,-462 689,-468 683,-468"/> -<text text-anchor="middle" x="620" y="-447.5" font-family="sans" font-size="10.00">genome_quantification_kallisto</text> +<g id="node8" class="node"> +<title>7</title> +<path fill="none" stroke="#d8cb56" stroke-width="2" d="M2241,-252C2241,-252 2172,-252 2172,-252 2166,-252 2160,-246 2160,-240 2160,-240 2160,-228 2160,-228 2160,-222 2166,-216 2172,-216 2172,-216 2241,-216 2241,-216 2247,-216 2253,-222 2253,-228 2253,-228 2253,-240 2253,-240 2253,-246 2247,-252 2241,-252"/> +<text text-anchor="middle" x="2206.5" y="-231.5" font-family="sans" font-size="10.00" fill="#000000">prepare_bigWig</text> </g> -<!-- 7->3 --> -<g id="edge7" class="edge"><title>7->3</title> -<path fill="none" stroke="grey" stroke-width="2" d="M618.625,-431.954C616.973,-398.6 618.624,-324.763 661,-288 692.11,-261.01 953.591,-244.639 1081.32,-238.181"/> -<polygon fill="grey" stroke="grey" stroke-width="2" points="1081.59,-241.672 1091.4,-237.678 1081.24,-234.681 1081.59,-241.672"/> +<!-- 7->0 --> +<g id="edge7" class="edge"> +<title>7->0</title> +<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M2159.694,-217.3155C2071.6715,-186.2796 1875.1481,-118.6015 1706.5,-72 1637.2891,-52.8754 1555.3243,-35.1362 1508.7679,-25.5116"/> +<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="1509.333,-22.0547 1498.8331,-23.4701 1507.9239,-28.9114 1509.333,-22.0547"/> </g> <!-- 8 --> -<g id="node9" class="node"><title>8</title> -<path fill="none" stroke="#d86656" stroke-width="2" d="M1449.5,-396C1449.5,-396 1384.5,-396 1384.5,-396 1378.5,-396 1372.5,-390 1372.5,-384 1372.5,-384 1372.5,-372 1372.5,-372 1372.5,-366 1378.5,-360 1384.5,-360 1384.5,-360 1449.5,-360 1449.5,-360 1455.5,-360 1461.5,-366 1461.5,-372 1461.5,-372 1461.5,-384 1461.5,-384 1461.5,-390 1455.5,-396 1449.5,-396"/> -<text text-anchor="middle" x="1417" y="-375.5" font-family="sans" font-size="10.00">plot_TIN_scores</text> +<g id="node9" class="node"> +<title>8</title> +<path fill="none" stroke="#d8cb56" stroke-width="2" d="M2061,-252C2061,-252 1992,-252 1992,-252 1986,-252 1980,-246 1980,-240 1980,-240 1980,-228 1980,-228 1980,-222 1986,-216 1992,-216 1992,-216 2061,-216 2061,-216 2067,-216 2073,-222 2073,-228 2073,-228 2073,-240 2073,-240 2073,-246 2067,-252 2061,-252"/> +<text text-anchor="middle" x="2026.5" y="-231.5" font-family="sans" font-size="10.00" fill="#000000">prepare_bigWig</text> </g> -<!-- 8->3 --> -<g id="edge8" class="edge"><title>8->3</title> -<path fill="none" stroke="grey" stroke-width="2" d="M1410.19,-359.799C1401.28,-339.516 1383.69,-306.261 1358,-288 1317.83,-259.444 1263.61,-246.253 1220.74,-240.17"/> -<polygon fill="grey" stroke="grey" stroke-width="2" points="1221.03,-236.678 1210.66,-238.84 1220.11,-243.618 1221.03,-236.678"/> +<!-- 8->0 --> +<g id="edge8" class="edge"> +<title>8->0</title> +<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M1988.0371,-215.9449C1920.1709,-184.4533 1774.3382,-118.4172 1647.5,-72 1600.2397,-54.7048 1544.5339,-38.2564 1508.6505,-28.1561"/> +<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="1509.2038,-24.6767 1498.6308,-25.3558 1507.3196,-31.4183 1509.2038,-24.6767"/> </g> <!-- 9 --> -<g id="node10" class="node"><title>9</title> -<path fill="none" stroke="#b6d856" stroke-width="2" d="M794,-324C794,-324 682,-324 682,-324 676,-324 670,-318 670,-312 670,-312 670,-300 670,-300 670,-294 676,-288 682,-288 682,-288 794,-288 794,-288 800,-288 806,-294 806,-300 806,-300 806,-312 806,-312 806,-318 800,-324 794,-324"/> -<text text-anchor="middle" x="738" y="-309" font-family="sans" font-size="10.00">salmon_quantmerge_genes</text> -<text text-anchor="middle" x="738" y="-298" font-family="sans" font-size="10.00">salmon_merge_on: tpm</text> +<g id="node10" class="node"> +<title>9</title> +<path fill="none" stroke="#d8cb56" stroke-width="2" d="M1950,-252C1950,-252 1881,-252 1881,-252 1875,-252 1869,-246 1869,-240 1869,-240 1869,-228 1869,-228 1869,-222 1875,-216 1881,-216 1881,-216 1950,-216 1950,-216 1956,-216 1962,-222 1962,-228 1962,-228 1962,-240 1962,-240 1962,-246 1956,-252 1950,-252"/> +<text text-anchor="middle" x="1915.5" y="-231.5" font-family="sans" font-size="10.00" fill="#000000">prepare_bigWig</text> </g> -<!-- 9->3 --> -<g id="edge9" class="edge"><title>9->3</title> -<path fill="none" stroke="grey" stroke-width="2" d="M806.017,-289.934C809.389,-289.263 812.731,-288.614 816,-288 907.236,-270.855 1013.15,-254.726 1081.06,-244.865"/> -<polygon fill="grey" stroke="grey" stroke-width="2" points="1081.82,-248.292 1091.21,-243.396 1080.82,-241.364 1081.82,-248.292"/> +<!-- 9->0 --> +<g id="edge9" class="edge"> +<title>9->0</title> +<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M1882.2342,-215.9069C1825.0771,-185.055 1704.2572,-120.8669 1599.5,-72 1569.0709,-57.8055 1533.8839,-43.0799 1508.1125,-32.5985"/> +<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="1509.3086,-29.3069 1498.7259,-28.7992 1506.6822,-35.7955 1509.3086,-29.3069"/> </g> <!-- 10 --> -<g id="node11" class="node"><title>10</title> -<path fill="none" stroke="#b6d856" stroke-width="2" d="M957.5,-324C957.5,-324 836.5,-324 836.5,-324 830.5,-324 824.5,-318 824.5,-312 824.5,-312 824.5,-300 824.5,-300 824.5,-294 830.5,-288 836.5,-288 836.5,-288 957.5,-288 957.5,-288 963.5,-288 969.5,-294 969.5,-300 969.5,-300 969.5,-312 969.5,-312 969.5,-318 963.5,-324 957.5,-324"/> -<text text-anchor="middle" x="897" y="-309" font-family="sans" font-size="10.00">salmon_quantmerge_genes</text> -<text text-anchor="middle" x="897" y="-298" font-family="sans" font-size="10.00">salmon_merge_on: numreads</text> -</g> -<!-- 10->3 --> -<g id="edge10" class="edge"><title>10->3</title> -<path fill="none" stroke="grey" stroke-width="2" d="M958.811,-287.966C995.746,-277.787 1042.77,-264.826 1081.06,-254.274"/> -<polygon fill="grey" stroke="grey" stroke-width="2" points="1082.4,-257.537 1091.11,-251.506 1080.54,-250.789 1082.4,-257.537"/> +<g id="node11" class="node"> +<title>10</title> +<path fill="none" stroke="#d86656" stroke-width="2" d="M771.5,-108C771.5,-108 643.5,-108 643.5,-108 637.5,-108 631.5,-102 631.5,-96 631.5,-96 631.5,-84 631.5,-84 631.5,-78 637.5,-72 643.5,-72 643.5,-72 771.5,-72 771.5,-72 777.5,-72 783.5,-78 783.5,-84 783.5,-84 783.5,-96 783.5,-96 783.5,-102 777.5,-108 771.5,-108"/> +<text text-anchor="middle" x="707.5" y="-93" font-family="sans" font-size="10.00" fill="#000000">salmon_quantmerge_genes</text> +<text text-anchor="middle" x="707.5" y="-82" font-family="sans" font-size="10.00" fill="#000000">salmon_merge_on: tpm</text> +</g> +<!-- 10->0 --> +<g id="edge10" class="edge"> +<title>10->0</title> +<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M783.8433,-73.4968C787.1001,-72.9587 790.3293,-72.4562 793.5,-72 1036.1977,-37.0802 1331.2594,-23.2809 1434.0545,-19.3142"/> +<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="1434.3742,-22.8047 1444.2348,-18.9295 1434.1098,-15.8097 1434.3742,-22.8047"/> </g> <!-- 11 --> -<g id="node12" class="node"><title>11</title> -<path fill="none" stroke="#56d87b" stroke-width="2" d="M1130.5,-324C1130.5,-324 999.5,-324 999.5,-324 993.5,-324 987.5,-318 987.5,-312 987.5,-312 987.5,-300 987.5,-300 987.5,-294 993.5,-288 999.5,-288 999.5,-288 1130.5,-288 1130.5,-288 1136.5,-288 1142.5,-294 1142.5,-300 1142.5,-300 1142.5,-312 1142.5,-312 1142.5,-318 1136.5,-324 1130.5,-324"/> -<text text-anchor="middle" x="1065" y="-309" font-family="sans" font-size="10.00">salmon_quantmerge_transcripts</text> -<text text-anchor="middle" x="1065" y="-298" font-family="sans" font-size="10.00">salmon_merge_on: tpm</text> -</g> -<!-- 11->3 --> -<g id="edge11" class="edge"><title>11->3</title> -<path fill="none" stroke="grey" stroke-width="2" d="M1086.26,-287.697C1097.09,-278.881 1110.42,-268.032 1122.16,-258.474"/> -<polygon fill="grey" stroke="grey" stroke-width="2" points="1124.44,-261.132 1129.99,-252.104 1120.02,-255.703 1124.44,-261.132"/> +<g id="node12" class="node"> +<title>11</title> +<path fill="none" stroke="#d86656" stroke-width="2" d="M951,-108C951,-108 814,-108 814,-108 808,-108 802,-102 802,-96 802,-96 802,-84 802,-84 802,-78 808,-72 814,-72 814,-72 951,-72 951,-72 957,-72 963,-78 963,-84 963,-84 963,-96 963,-96 963,-102 957,-108 951,-108"/> +<text text-anchor="middle" x="882.5" y="-93" font-family="sans" font-size="10.00" fill="#000000">salmon_quantmerge_genes</text> +<text text-anchor="middle" x="882.5" y="-82" font-family="sans" font-size="10.00" fill="#000000">salmon_merge_on: numreads</text> +</g> +<!-- 11->0 --> +<g id="edge11" class="edge"> +<title>11->0</title> +<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M963.3923,-73.466C966.4637,-72.9512 969.5076,-72.4602 972.5,-72 1144.1179,-45.6066 1350.9003,-27.5841 1434.125,-20.8921"/> +<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="1434.6531,-24.3612 1444.3434,-20.0777 1434.0969,-17.3834 1434.6531,-24.3612"/> </g> <!-- 12 --> -<g id="node13" class="node"><title>12</title> -<path fill="none" stroke="#56d87b" stroke-width="2" d="M1303.5,-324C1303.5,-324 1172.5,-324 1172.5,-324 1166.5,-324 1160.5,-318 1160.5,-312 1160.5,-312 1160.5,-300 1160.5,-300 1160.5,-294 1166.5,-288 1172.5,-288 1172.5,-288 1303.5,-288 1303.5,-288 1309.5,-288 1315.5,-294 1315.5,-300 1315.5,-300 1315.5,-312 1315.5,-312 1315.5,-318 1309.5,-324 1303.5,-324"/> -<text text-anchor="middle" x="1238" y="-309" font-family="sans" font-size="10.00">salmon_quantmerge_transcripts</text> -<text text-anchor="middle" x="1238" y="-298" font-family="sans" font-size="10.00">salmon_merge_on: numreads</text> -</g> -<!-- 12->3 --> -<g id="edge12" class="edge"><title>12->3</title> -<path fill="none" stroke="grey" stroke-width="2" d="M1216.49,-287.697C1205.54,-278.881 1192.05,-268.032 1180.18,-258.474"/> -<polygon fill="grey" stroke="grey" stroke-width="2" points="1182.24,-255.646 1172.26,-252.104 1177.86,-261.1 1182.24,-255.646"/> +<g id="node13" class="node"> +<title>12</title> +<path fill="none" stroke="#a7d856" stroke-width="2" d="M1143.5,-108C1143.5,-108 993.5,-108 993.5,-108 987.5,-108 981.5,-102 981.5,-96 981.5,-96 981.5,-84 981.5,-84 981.5,-78 987.5,-72 993.5,-72 993.5,-72 1143.5,-72 1143.5,-72 1149.5,-72 1155.5,-78 1155.5,-84 1155.5,-84 1155.5,-96 1155.5,-96 1155.5,-102 1149.5,-108 1143.5,-108"/> +<text text-anchor="middle" x="1068.5" y="-93" font-family="sans" font-size="10.00" fill="#000000">salmon_quantmerge_transcripts</text> +<text text-anchor="middle" x="1068.5" y="-82" font-family="sans" font-size="10.00" fill="#000000">salmon_merge_on: tpm</text> +</g> +<!-- 12->0 --> +<g id="edge12" class="edge"> +<title>12->0</title> +<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M1155.613,-73.6222C1158.6112,-73.0726 1161.5803,-72.5305 1164.5,-72 1261.7431,-54.3317 1376.4865,-34.3894 1434.2682,-24.41"/> +<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="1435.1183,-27.8151 1444.3774,-22.6654 1433.9278,-20.9171 1435.1183,-27.8151"/> </g> <!-- 13 --> -<g id="node14" class="node"><title>13</title> -<path fill="none" stroke="#56d8d8" stroke-width="2" d="M1973.5,-612C1973.5,-612 1942.5,-612 1942.5,-612 1936.5,-612 1930.5,-606 1930.5,-600 1930.5,-600 1930.5,-588 1930.5,-588 1930.5,-582 1936.5,-576 1942.5,-576 1942.5,-576 1973.5,-576 1973.5,-576 1979.5,-576 1985.5,-582 1985.5,-588 1985.5,-588 1985.5,-600 1985.5,-600 1985.5,-606 1979.5,-612 1973.5,-612"/> -<text text-anchor="middle" x="1958" y="-591.5" font-family="sans" font-size="10.00">star_rpm</text> -</g> -<!-- 13->3 --> -<g id="edge13" class="edge"><title>13->3</title> -<path fill="none" stroke="grey" stroke-width="2" d="M1985.7,-591.233C2046.65,-586.769 2189.61,-572.961 2223,-540 2251.78,-511.585 2242,-491.447 2242,-451 2242,-451 2242,-451 2242,-377 2242,-273.61 1461.59,-243.532 1220.86,-236.713"/> -<polygon fill="grey" stroke="grey" stroke-width="2" points="1220.91,-233.214 1210.82,-236.434 1220.72,-240.211 1220.91,-233.214"/> -</g> -<!-- 42 --> -<g id="node43" class="node"><title>42</title> -<path fill="none" stroke="#56d0d8" stroke-width="2" d="M2202,-540C2202,-540 2096,-540 2096,-540 2090,-540 2084,-534 2084,-528 2084,-528 2084,-516 2084,-516 2084,-510 2090,-504 2096,-504 2096,-504 2202,-504 2202,-504 2208,-504 2214,-510 2214,-516 2214,-516 2214,-528 2214,-528 2214,-534 2208,-540 2202,-540"/> -<text text-anchor="middle" x="2149" y="-525" font-family="sans" font-size="10.00">rename_star_rpm_for_alfa</text> -<text text-anchor="middle" x="2149" y="-514" font-family="sans" font-size="10.00">unique: Unique</text> -</g> -<!-- 13->42 --> -<g id="edge71" class="edge"><title>13->42</title> -<path fill="none" stroke="grey" stroke-width="2" d="M1985.77,-582.821C2013.67,-572.597 2057.46,-556.549 2092.66,-543.648"/> -<polygon fill="grey" stroke="grey" stroke-width="2" points="2094.16,-546.828 2102.34,-540.1 2091.75,-540.255 2094.16,-546.828"/> -</g> -<!-- 45 --> -<g id="node46" class="node"><title>45</title> -<path fill="none" stroke="#56d0d8" stroke-width="2" d="M1932,-540C1932,-540 1826,-540 1826,-540 1820,-540 1814,-534 1814,-528 1814,-528 1814,-516 1814,-516 1814,-510 1820,-504 1826,-504 1826,-504 1932,-504 1932,-504 1938,-504 1944,-510 1944,-516 1944,-516 1944,-528 1944,-528 1944,-534 1938,-540 1932,-540"/> -<text text-anchor="middle" x="1879" y="-525" font-family="sans" font-size="10.00">rename_star_rpm_for_alfa</text> -<text text-anchor="middle" x="1879" y="-514" font-family="sans" font-size="10.00">unique: UniqueMultiple</text> -</g> -<!-- 13->45 --> -<g id="edge74" class="edge"><title>13->45</title> -<path fill="none" stroke="grey" stroke-width="2" d="M1938.47,-575.697C1928.62,-566.965 1916.51,-556.24 1905.8,-546.75"/> -<polygon fill="grey" stroke="grey" stroke-width="2" points="1908.11,-544.117 1898.3,-540.104 1903.47,-549.356 1908.11,-544.117"/> +<g id="node14" class="node"> +<title>13</title> +<path fill="none" stroke="#a7d856" stroke-width="2" d="M1335.5,-108C1335.5,-108 1185.5,-108 1185.5,-108 1179.5,-108 1173.5,-102 1173.5,-96 1173.5,-96 1173.5,-84 1173.5,-84 1173.5,-78 1179.5,-72 1185.5,-72 1185.5,-72 1335.5,-72 1335.5,-72 1341.5,-72 1347.5,-78 1347.5,-84 1347.5,-84 1347.5,-96 1347.5,-96 1347.5,-102 1341.5,-108 1335.5,-108"/> +<text text-anchor="middle" x="1260.5" y="-93" font-family="sans" font-size="10.00" fill="#000000">salmon_quantmerge_transcripts</text> +<text text-anchor="middle" x="1260.5" y="-82" font-family="sans" font-size="10.00" fill="#000000">salmon_merge_on: numreads</text> +</g> +<!-- 13->0 --> +<g id="edge13" class="edge"> +<title>13->0</title> +<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M1313.4719,-71.9243C1351.1968,-59.0513 1400.9523,-42.0731 1434.4724,-30.635"/> +<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="1435.9888,-33.8158 1444.3226,-27.2738 1433.7281,-27.1909 1435.9888,-33.8158"/> </g> <!-- 14 --> -<g id="node15" class="node"><title>14</title> -<path fill="none" stroke="#56d8d8" stroke-width="2" d="M1652.5,-612C1652.5,-612 1621.5,-612 1621.5,-612 1615.5,-612 1609.5,-606 1609.5,-600 1609.5,-600 1609.5,-588 1609.5,-588 1609.5,-582 1615.5,-576 1621.5,-576 1621.5,-576 1652.5,-576 1652.5,-576 1658.5,-576 1664.5,-582 1664.5,-588 1664.5,-588 1664.5,-600 1664.5,-600 1664.5,-606 1658.5,-612 1652.5,-612"/> -<text text-anchor="middle" x="1637" y="-591.5" font-family="sans" font-size="10.00">star_rpm</text> -</g> -<!-- 14->3 --> -<g id="edge14" class="edge"><title>14->3</title> -<path fill="none" stroke="grey" stroke-width="2" d="M1609.19,-580.028C1606.1,-578.645 1602.99,-577.277 1600,-576 1560,-558.914 1537.09,-573.204 1509,-540 1482.88,-509.122 1490,-491.447 1490,-451 1490,-451 1490,-451 1490,-377 1490,-261.448 1320.37,-238.32 1221.09,-234.678"/> -<polygon fill="grey" stroke="grey" stroke-width="2" points="1220.93,-231.172 1210.83,-234.362 1220.71,-238.168 1220.93,-231.172"/> -</g> -<!-- 44 --> -<g id="node45" class="node"><title>44</title> -<path fill="none" stroke="#56d0d8" stroke-width="2" d="M1784,-540C1784,-540 1678,-540 1678,-540 1672,-540 1666,-534 1666,-528 1666,-528 1666,-516 1666,-516 1666,-510 1672,-504 1678,-504 1678,-504 1784,-504 1784,-504 1790,-504 1796,-510 1796,-516 1796,-516 1796,-528 1796,-528 1796,-534 1790,-540 1784,-540"/> -<text text-anchor="middle" x="1731" y="-525" font-family="sans" font-size="10.00">rename_star_rpm_for_alfa</text> -<text text-anchor="middle" x="1731" y="-514" font-family="sans" font-size="10.00">unique: Unique</text> +<g id="node15" class="node"> +<title>14</title> +<path fill="none" stroke="#56a2d8" stroke-width="2" d="M176.5,-612C176.5,-612 146.5,-612 146.5,-612 140.5,-612 134.5,-606 134.5,-600 134.5,-600 134.5,-588 134.5,-588 134.5,-582 140.5,-576 146.5,-576 146.5,-576 176.5,-576 176.5,-576 182.5,-576 188.5,-582 188.5,-588 188.5,-588 188.5,-600 188.5,-600 188.5,-606 182.5,-612 176.5,-612"/> +<text text-anchor="middle" x="161.5" y="-591.5" font-family="sans" font-size="10.00" fill="#000000">fastqc</text> </g> -<!-- 14->44 --> -<g id="edge73" class="edge"><title>14->44</title> -<path fill="none" stroke="grey" stroke-width="2" d="M1660.24,-575.697C1672.19,-566.796 1686.92,-555.823 1699.85,-546.199"/> -<polygon fill="grey" stroke="grey" stroke-width="2" points="1702.1,-548.884 1708.03,-540.104 1697.92,-543.27 1702.1,-548.884"/> -</g> -<!-- 46 --> -<g id="node47" class="node"><title>46</title> -<path fill="none" stroke="#56d0d8" stroke-width="2" d="M1636,-540C1636,-540 1530,-540 1530,-540 1524,-540 1518,-534 1518,-528 1518,-528 1518,-516 1518,-516 1518,-510 1524,-504 1530,-504 1530,-504 1636,-504 1636,-504 1642,-504 1648,-510 1648,-516 1648,-516 1648,-528 1648,-528 1648,-534 1642,-540 1636,-540"/> -<text text-anchor="middle" x="1583" y="-525" font-family="sans" font-size="10.00">rename_star_rpm_for_alfa</text> -<text text-anchor="middle" x="1583" y="-514" font-family="sans" font-size="10.00">unique: UniqueMultiple</text> -</g> -<!-- 14->46 --> -<g id="edge75" class="edge"><title>14->46</title> -<path fill="none" stroke="grey" stroke-width="2" d="M1623.65,-575.697C1617.24,-567.389 1609.44,-557.277 1602.39,-548.141"/> -<polygon fill="grey" stroke="grey" stroke-width="2" points="1605.07,-545.884 1596.19,-540.104 1599.53,-550.16 1605.07,-545.884"/> +<!-- 14->1 --> +<g id="edge14" class="edge"> +<title>14->1</title> +<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M165.0224,-575.8955C170.0018,-548.6824 178.5,-495.5642 178.5,-450 178.5,-450 178.5,-450 178.5,-234 178.5,-192.6022 171.6002,-171.5496 202.5,-144 225.4581,-123.5311 418.5277,-103.5402 515.0336,-94.7126"/> +<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="515.5421,-98.181 525.1853,-93.7927 514.9102,-91.2096 515.5421,-98.181"/> </g> <!-- 15 --> -<g id="node16" class="node"><title>15</title> -<path fill="none" stroke="#d6d856" stroke-width="2" d="M1780.5,-324C1780.5,-324 1703.5,-324 1703.5,-324 1697.5,-324 1691.5,-318 1691.5,-312 1691.5,-312 1691.5,-300 1691.5,-300 1691.5,-294 1697.5,-288 1703.5,-288 1703.5,-288 1780.5,-288 1780.5,-288 1786.5,-288 1792.5,-294 1792.5,-300 1792.5,-300 1792.5,-312 1792.5,-312 1792.5,-318 1786.5,-324 1780.5,-324"/> -<text text-anchor="middle" x="1742" y="-303.5" font-family="sans" font-size="10.00">alfa_concat_results</text> +<g id="node16" class="node"> +<title>15</title> +<path fill="none" stroke="#56a2d8" stroke-width="2" d="M231.5,-686.5C231.5,-686.5 201.5,-686.5 201.5,-686.5 195.5,-686.5 189.5,-680.5 189.5,-674.5 189.5,-674.5 189.5,-662.5 189.5,-662.5 189.5,-656.5 195.5,-650.5 201.5,-650.5 201.5,-650.5 231.5,-650.5 231.5,-650.5 237.5,-650.5 243.5,-656.5 243.5,-662.5 243.5,-662.5 243.5,-674.5 243.5,-674.5 243.5,-680.5 237.5,-686.5 231.5,-686.5"/> +<text text-anchor="middle" x="216.5" y="-666" font-family="sans" font-size="10.00" fill="#000000">fastqc</text> </g> -<!-- 15->3 --> -<g id="edge15" class="edge"><title>15->3</title> -<path fill="none" stroke="grey" stroke-width="2" d="M1691.36,-299.002C1585.68,-286.485 1341.54,-257.568 1220.96,-243.287"/> -<polygon fill="grey" stroke="grey" stroke-width="2" points="1221.09,-239.777 1210.74,-242.076 1220.26,-246.728 1221.09,-239.777"/> +<!-- 15->1 --> +<g id="edge15" class="edge"> +<title>15->1</title> +<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M216.5,-650.4571C216.5,-622.8072 216.5,-568.2899 216.5,-522 216.5,-522 216.5,-522 216.5,-234 216.5,-170.2499 416.3766,-120.9048 515.3244,-100.3826"/> +<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="516.0551,-103.8056 525.1497,-98.3707 514.6509,-96.9479 516.0551,-103.8056"/> </g> <!-- 16 --> -<g id="node17" class="node"><title>16</title> -<path fill="none" stroke="#97d856" stroke-width="2" d="M1322,-830.5C1322,-830.5 1210,-830.5 1210,-830.5 1204,-830.5 1198,-824.5 1198,-818.5 1198,-818.5 1198,-806.5 1198,-806.5 1198,-800.5 1204,-794.5 1210,-794.5 1210,-794.5 1322,-794.5 1322,-794.5 1328,-794.5 1334,-800.5 1334,-806.5 1334,-806.5 1334,-818.5 1334,-818.5 1334,-824.5 1328,-830.5 1322,-830.5"/> -<text text-anchor="middle" x="1266" y="-810" font-family="sans" font-size="10.00">pe_remove_polya_cutadapt</text> -</g> -<!-- 16->6 --> -<g id="edge16" class="edge"><title>16->6</title> -<path fill="none" stroke="grey" stroke-width="2" d="M1266,-794.151C1266,-767.022 1266,-712.909 1266,-667 1266,-667 1266,-667 1266,-593 1266,-549.905 1288.6,-504.262 1305.08,-476.697"/> -<polygon fill="grey" stroke="grey" stroke-width="2" points="1308.13,-478.421 1310.4,-468.072 1302.17,-474.749 1308.13,-478.421"/> +<g id="node17" class="node"> +<title>16</title> +<path fill="none" stroke="#56a2d8" stroke-width="2" d="M1035.5,-761C1035.5,-761 1005.5,-761 1005.5,-761 999.5,-761 993.5,-755 993.5,-749 993.5,-749 993.5,-737 993.5,-737 993.5,-731 999.5,-725 1005.5,-725 1005.5,-725 1035.5,-725 1035.5,-725 1041.5,-725 1047.5,-731 1047.5,-737 1047.5,-737 1047.5,-749 1047.5,-749 1047.5,-755 1041.5,-761 1035.5,-761"/> +<text text-anchor="middle" x="1020.5" y="-740.5" font-family="sans" font-size="10.00" fill="#000000">fastqc</text> </g> -<!-- 20 --> -<g id="node21" class="node"><title>20</title> -<path fill="none" stroke="#a7d856" stroke-width="2" d="M1108.5,-396C1108.5,-396 1005.5,-396 1005.5,-396 999.5,-396 993.5,-390 993.5,-384 993.5,-384 993.5,-372 993.5,-372 993.5,-366 999.5,-360 1005.5,-360 1005.5,-360 1108.5,-360 1108.5,-360 1114.5,-360 1120.5,-366 1120.5,-372 1120.5,-372 1120.5,-384 1120.5,-384 1120.5,-390 1114.5,-396 1108.5,-396"/> -<text text-anchor="middle" x="1057" y="-375.5" font-family="sans" font-size="10.00">pe_quantification_salmon</text> +<!-- 16->1 --> +<g id="edge16" class="edge"> +<title>16->1</title> +<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M1028.8774,-724.7134C1051.4232,-672.4634 1107.0752,-520.5896 1036.5,-432 991.8933,-376.0073 937.1738,-438.4107 879.5,-396 775.0401,-319.1848 833.3627,-225.4811 732.5,-144 694.8299,-113.5685 673.8466,-122.9494 623.4893,-108.128"/> +<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="624.3233,-104.7215 613.734,-105.0638 622.2256,-111.3998 624.3233,-104.7215"/> </g> -<!-- 16->20 --> -<g id="edge40" class="edge"><title>16->20</title> -<path fill="none" stroke="grey" stroke-width="2" d="M1258.31,-794.093C1247.21,-767.328 1228,-714.21 1228,-667 1228,-667 1228,-667 1228,-593 1228,-552.553 1230.02,-538.557 1209,-504 1181.67,-459.06 1132.24,-422.965 1097.17,-401.329"/> -<polygon fill="grey" stroke="grey" stroke-width="2" points="1098.96,-398.319 1088.59,-396.144 1095.34,-404.31 1098.96,-398.319"/> +<!-- 17 --> +<g id="node18" class="node"> +<title>17</title> +<path fill="none" stroke="#61d856" stroke-width="2" d="M457,-252C457,-252 294,-252 294,-252 288,-252 282,-246 282,-240 282,-240 282,-228 282,-228 282,-222 288,-216 294,-216 294,-216 457,-216 457,-216 463,-216 469,-222 469,-228 469,-228 469,-240 469,-240 469,-246 463,-252 457,-252"/> +<text text-anchor="middle" x="375.5" y="-231.5" font-family="sans" font-size="10.00" fill="#000000">pe_genome_quantification_kallisto</text> </g> -<!-- 22 --> -<g id="node23" class="node"><title>22</title> -<path fill="none" stroke="#56d8b9" stroke-width="2" d="M1822.5,-756C1822.5,-756 1733.5,-756 1733.5,-756 1727.5,-756 1721.5,-750 1721.5,-744 1721.5,-744 1721.5,-732 1721.5,-732 1721.5,-726 1727.5,-720 1733.5,-720 1733.5,-720 1822.5,-720 1822.5,-720 1828.5,-720 1834.5,-726 1834.5,-732 1834.5,-732 1834.5,-744 1834.5,-744 1834.5,-750 1828.5,-756 1822.5,-756"/> -<text text-anchor="middle" x="1778" y="-735.5" font-family="sans" font-size="10.00">pe_map_genome_star</text> +<!-- 17->1 --> +<g id="edge17" class="edge"> +<title>17->1</title> +<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M400.0702,-215.7623C434.7632,-190.0108 498.1753,-142.942 536.8114,-114.2637"/> +<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="539.1856,-116.8602 545.1293,-108.0896 535.0135,-111.2394 539.1856,-116.8602"/> </g> -<!-- 16->22 --> -<g id="edge45" class="edge"><title>16->22</title> -<path fill="none" stroke="grey" stroke-width="2" d="M1334.25,-801.835C1432.73,-787.891 1613.53,-762.29 1711.19,-748.46"/> -<polygon fill="grey" stroke="grey" stroke-width="2" points="1711.83,-751.905 1721.24,-747.037 1710.85,-744.974 1711.83,-751.905"/> +<!-- 18 --> +<g id="node19" class="node"> +<title>18</title> +<path fill="none" stroke="#d85656" stroke-width="2" d="M645.5,-252C645.5,-252 499.5,-252 499.5,-252 493.5,-252 487.5,-246 487.5,-240 487.5,-240 487.5,-228 487.5,-228 487.5,-222 493.5,-216 499.5,-216 499.5,-216 645.5,-216 645.5,-216 651.5,-216 657.5,-222 657.5,-228 657.5,-228 657.5,-240 657.5,-240 657.5,-246 651.5,-252 645.5,-252"/> +<text text-anchor="middle" x="572.5" y="-231.5" font-family="sans" font-size="10.00" fill="#000000">genome_quantification_kallisto</text> </g> -<!-- 17 --> -<g id="node18" class="node"><title>17</title> -<path fill="none" stroke="#d88556" stroke-width="2" d="M1188,-540C1188,-540 1104,-540 1104,-540 1098,-540 1092,-534 1092,-528 1092,-528 1092,-516 1092,-516 1092,-510 1098,-504 1104,-504 1104,-504 1188,-504 1188,-504 1194,-504 1200,-510 1200,-516 1200,-516 1200,-528 1200,-528 1200,-534 1194,-540 1188,-540"/> -<text text-anchor="middle" x="1146" y="-519.5" font-family="sans" font-size="10.00">create_index_kallisto</text> +<!-- 18->1 --> +<g id="edge18" class="edge"> +<title>18->1</title> +<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M572.12,-215.7623C571.6084,-191.201 570.6927,-147.2474 570.0907,-118.3541"/> +<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="573.5845,-118.0145 569.8769,-108.0896 566.586,-118.1604 573.5845,-118.0145"/> </g> -<!-- 17->6 --> -<g id="edge17" class="edge"><title>17->6</title> -<path fill="none" stroke="grey" stroke-width="2" d="M1189.05,-503.876C1213.33,-494.222 1243.84,-482.087 1269.51,-471.878"/> -<polygon fill="grey" stroke="grey" stroke-width="2" points="1271.09,-475.016 1279.09,-468.068 1268.5,-468.512 1271.09,-475.016"/> +<!-- 19 --> +<g id="node20" class="node"> +<title>19</title> +<path fill="none" stroke="#5682d8" stroke-width="2" d="M711.5,-180C711.5,-180 641.5,-180 641.5,-180 635.5,-180 629.5,-174 629.5,-168 629.5,-168 629.5,-156 629.5,-156 629.5,-150 635.5,-144 641.5,-144 641.5,-144 711.5,-144 711.5,-144 717.5,-144 723.5,-150 723.5,-156 723.5,-156 723.5,-168 723.5,-168 723.5,-174 717.5,-180 711.5,-180"/> +<text text-anchor="middle" x="676.5" y="-159.5" font-family="sans" font-size="10.00" fill="#000000">plot_TIN_scores</text> </g> -<!-- 17->7 --> -<g id="edge19" class="edge"><title>17->7</title> -<path fill="none" stroke="grey" stroke-width="2" d="M1091.82,-505.829C1088.85,-505.169 1085.89,-504.553 1083,-504 952.4,-479.05 798.675,-464.292 705.335,-456.922"/> -<polygon fill="grey" stroke="grey" stroke-width="2" points="705.339,-453.412 695.097,-456.124 704.795,-460.391 705.339,-453.412"/> +<!-- 19->1 --> +<g id="edge19" class="edge"> +<title>19->1</title> +<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M649.4994,-143.8314C636.0669,-134.7927 619.6527,-123.7476 605.1961,-114.0198"/> +<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="606.7425,-110.8418 596.492,-108.1628 602.8346,-116.6494 606.7425,-110.8418"/> </g> -<!-- 18 --> -<g id="node19" class="node"><title>18</title> -<path fill="none" stroke="#5663d8" stroke-width="2" d="M755,-830.5C755,-830.5 659,-830.5 659,-830.5 653,-830.5 647,-824.5 647,-818.5 647,-818.5 647,-806.5 647,-806.5 647,-800.5 653,-794.5 659,-794.5 659,-794.5 755,-794.5 755,-794.5 761,-794.5 767,-800.5 767,-806.5 767,-806.5 767,-818.5 767,-818.5 767,-824.5 761,-830.5 755,-830.5"/> -<text text-anchor="middle" x="707" y="-810" font-family="sans" font-size="10.00">remove_polya_cutadapt</text> +<!-- 20 --> +<g id="node21" class="node"> +<title>20</title> +<path fill="none" stroke="#97d856" stroke-width="2" d="M1412,-180C1412,-180 1325,-180 1325,-180 1319,-180 1313,-174 1313,-168 1313,-168 1313,-156 1313,-156 1313,-150 1319,-144 1325,-144 1325,-144 1412,-144 1412,-144 1418,-144 1424,-150 1424,-156 1424,-156 1424,-168 1424,-168 1424,-174 1418,-180 1412,-180"/> +<text text-anchor="middle" x="1368.5" y="-159.5" font-family="sans" font-size="10.00" fill="#000000">alfa_concat_results</text> </g> -<!-- 18->7 --> -<g id="edge18" class="edge"><title>18->7</title> -<path fill="none" stroke="grey" stroke-width="2" d="M692.155,-794.122C671.607,-768.23 637,-717.176 637,-667 637,-667 637,-667 637,-593 637,-552.931 630.244,-506.949 625.25,-478.433"/> -<polygon fill="grey" stroke="grey" stroke-width="2" points="628.661,-477.627 623.44,-468.408 621.773,-478.871 628.661,-477.627"/> +<!-- 20->1 --> +<g id="edge20" class="edge"> +<title>20->1</title> +<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M1312.9658,-158.1697C1153.4844,-147.147 701.0407,-115.708 623.7686,-107.2571"/> +<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="623.8901,-103.7423 613.5145,-105.8863 622.9625,-110.6806 623.8901,-103.7423"/> </g> <!-- 21 --> -<g id="node22" class="node"><title>21</title> -<path fill="none" stroke="#56d89a" stroke-width="2" d="M948.5,-396C948.5,-396 861.5,-396 861.5,-396 855.5,-396 849.5,-390 849.5,-384 849.5,-384 849.5,-372 849.5,-372 849.5,-366 855.5,-360 861.5,-360 861.5,-360 948.5,-360 948.5,-360 954.5,-360 960.5,-366 960.5,-372 960.5,-372 960.5,-384 960.5,-384 960.5,-390 954.5,-396 948.5,-396"/> -<text text-anchor="middle" x="905" y="-375.5" font-family="sans" font-size="10.00">quantification_salmon</text> +<g id="node22" class="node"> +<title>21</title> +<path fill="none" stroke="#56d88a" stroke-width="2" d="M138,-180C138,-180 31,-180 31,-180 25,-180 19,-174 19,-168 19,-168 19,-156 19,-156 19,-150 25,-144 31,-144 31,-144 138,-144 138,-144 144,-144 150,-150 150,-156 150,-156 150,-168 150,-168 150,-174 144,-180 138,-180"/> +<text text-anchor="middle" x="84.5" y="-159.5" font-family="sans" font-size="10.00" fill="#000000">prepare_multiqc_config</text> </g> -<!-- 18->21 --> -<g id="edge42" class="edge"><title>18->21</title> -<path fill="none" stroke="grey" stroke-width="2" d="M707,-794.151C707,-767.022 707,-712.909 707,-667 707,-667 707,-667 707,-593 707,-552.553 703.64,-537.704 726,-504 757.754,-456.137 814.637,-421.138 855.772,-400.545"/> -<polygon fill="grey" stroke="grey" stroke-width="2" points="857.372,-403.659 864.817,-396.121 854.296,-397.371 857.372,-403.659"/> +<!-- 21->1 --> +<g id="edge21" class="edge"> +<title>21->1</title> +<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M150.3272,-146.7025C155.1138,-145.7397 159.8754,-144.8269 164.5,-144 289.2993,-121.6855 437.2428,-104.2085 515.186,-95.6907"/> +<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="515.6889,-99.1568 525.2528,-94.598 514.9334,-92.1977 515.6889,-99.1568"/> </g> -<!-- 24 --> -<g id="node25" class="node"><title>24</title> -<path fill="none" stroke="#d8bc56" stroke-width="2" d="M1619.5,-756C1619.5,-756 1546.5,-756 1546.5,-756 1540.5,-756 1534.5,-750 1534.5,-744 1534.5,-744 1534.5,-732 1534.5,-732 1534.5,-726 1540.5,-720 1546.5,-720 1546.5,-720 1619.5,-720 1619.5,-720 1625.5,-720 1631.5,-726 1631.5,-732 1631.5,-732 1631.5,-744 1631.5,-744 1631.5,-750 1625.5,-756 1619.5,-756"/> -<text text-anchor="middle" x="1583" y="-735.5" font-family="sans" font-size="10.00">map_genome_star</text> -</g> -<!-- 18->24 --> -<g id="edge48" class="edge"><title>18->24</title> -<path fill="none" stroke="grey" stroke-width="2" d="M767.211,-806.517C927.87,-793.22 1365.27,-757.02 1524.24,-743.863"/> -<polygon fill="grey" stroke="grey" stroke-width="2" points="1524.63,-747.343 1534.31,-743.03 1524.05,-740.367 1524.63,-747.343"/> -</g> -<!-- 19 --> -<g id="node20" class="node"><title>19</title> -<path fill="none" stroke="#5673d8" stroke-width="2" d="M1450,-540C1450,-540 1374,-540 1374,-540 1368,-540 1362,-534 1362,-528 1362,-528 1362,-516 1362,-516 1362,-510 1368,-504 1374,-504 1374,-504 1450,-504 1450,-504 1456,-504 1462,-510 1462,-516 1462,-516 1462,-528 1462,-528 1462,-534 1456,-540 1450,-540"/> -<text text-anchor="middle" x="1412" y="-519.5" font-family="sans" font-size="10.00">merge_TIN_scores</text> -</g> -<!-- 19->8 --> -<g id="edge20" class="edge"><title>19->8</title> -<path fill="none" stroke="grey" stroke-width="2" d="M1412.67,-503.815C1413.06,-493.443 1413.57,-479.963 1414,-468 1414.74,-447.272 1415.53,-423.828 1416.11,-406.206"/> -<polygon fill="grey" stroke="grey" stroke-width="2" points="1419.61,-406.172 1416.45,-396.063 1412.62,-405.942 1419.61,-406.172"/> -</g> -<!-- 20->9 --> -<g id="edge21" class="edge"><title>20->9</title> -<path fill="none" stroke="grey" stroke-width="2" d="M993.212,-363.003C942.204,-351.81 870.473,-336.069 816.041,-324.125"/> -<polygon fill="grey" stroke="grey" stroke-width="2" points="816.606,-320.666 806.088,-321.941 815.105,-327.503 816.606,-320.666"/> -</g> -<!-- 20->10 --> -<g id="edge23" class="edge"><title>20->10</title> -<path fill="none" stroke="grey" stroke-width="2" d="M1017.86,-359.876C995.987,-350.307 968.543,-338.3 945.338,-328.148"/> -<polygon fill="grey" stroke="grey" stroke-width="2" points="946.578,-324.87 936.013,-324.068 943.772,-331.283 946.578,-324.87"/> -</g> -<!-- 20->11 --> -<g id="edge25" class="edge"><title>20->11</title> -<path fill="none" stroke="grey" stroke-width="2" d="M1058.98,-359.697C1059.86,-351.983 1060.92,-342.712 1061.9,-334.112"/> -<polygon fill="grey" stroke="grey" stroke-width="2" points="1065.39,-334.437 1063.05,-324.104 1058.43,-333.642 1065.39,-334.437"/> -</g> -<!-- 20->12 --> -<g id="edge27" class="edge"><title>20->12</title> -<path fill="none" stroke="grey" stroke-width="2" d="M1101.28,-359.876C1126.35,-350.179 1157.9,-337.98 1184.37,-327.743"/> -<polygon fill="grey" stroke="grey" stroke-width="2" points="1185.8,-330.94 1193.87,-324.068 1183.28,-324.411 1185.8,-330.94"/> -</g> -<!-- 21->9 --> -<g id="edge22" class="edge"><title>21->9</title> -<path fill="none" stroke="grey" stroke-width="2" d="M864.147,-359.876C841.216,-350.264 812.418,-338.193 788.13,-328.013"/> -<polygon fill="grey" stroke="grey" stroke-width="2" points="789.296,-324.706 778.72,-324.068 786.59,-331.162 789.296,-324.706"/> -</g> -<!-- 21->10 --> -<g id="edge24" class="edge"><title>21->10</title> -<path fill="none" stroke="grey" stroke-width="2" d="M903.022,-359.697C902.141,-351.983 901.081,-342.712 900.099,-334.112"/> -<polygon fill="grey" stroke="grey" stroke-width="2" points="903.568,-333.642 898.955,-324.104 896.613,-334.437 903.568,-333.642"/> -</g> -<!-- 21->11 --> -<g id="edge26" class="edge"><title>21->11</title> -<path fill="none" stroke="grey" stroke-width="2" d="M944.14,-359.876C966.013,-350.307 993.457,-338.3 1016.66,-328.148"/> -<polygon fill="grey" stroke="grey" stroke-width="2" points="1018.23,-331.283 1025.99,-324.068 1015.42,-324.87 1018.23,-331.283"/> -</g> -<!-- 21->12 --> -<g id="edge28" class="edge"><title>21->12</title> -<path fill="none" stroke="grey" stroke-width="2" d="M960.512,-365.182C968.722,-363.44 977.081,-361.671 985,-360 1040.05,-348.385 1101.85,-335.436 1150.6,-325.245"/> -<polygon fill="grey" stroke="grey" stroke-width="2" points="1151.41,-328.652 1160.48,-323.179 1149.97,-321.8 1151.41,-328.652"/> -</g> -<!-- 22->13 --> -<g id="edge29" class="edge"><title>22->13</title> -<path fill="none" stroke="grey" stroke-width="2" d="M1834.89,-734.427C1872.5,-729.541 1919.73,-716.711 1947,-684 1961.13,-667.049 1962.99,-641.583 1961.83,-622.229"/> -<polygon fill="grey" stroke="grey" stroke-width="2" points="1965.31,-621.847 1960.93,-612.198 1958.33,-622.469 1965.31,-621.847"/> +<!-- 22 --> +<g id="node23" class="node"> +<title>22</title> +<path fill="none" stroke="#70d856" stroke-width="2" d="M926.5,-324C926.5,-324 860.5,-324 860.5,-324 854.5,-324 848.5,-318 848.5,-312 848.5,-312 848.5,-300 848.5,-300 848.5,-294 854.5,-288 860.5,-288 860.5,-288 926.5,-288 926.5,-288 932.5,-288 938.5,-294 938.5,-300 938.5,-300 938.5,-312 938.5,-312 938.5,-318 932.5,-324 926.5,-324"/> +<text text-anchor="middle" x="893.5" y="-309" font-family="sans" font-size="10.00" fill="#000000">sort_bed_4_big</text> +<text text-anchor="middle" x="893.5" y="-298" font-family="sans" font-size="10.00" fill="#000000">strand: plus</text> +</g> +<!-- 22->2 --> +<g id="edge22" class="edge"> +<title>22->2</title> +<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M938.9252,-289.4817C967.5656,-279.0671 1004.7665,-265.5395 1035.2645,-254.4493"/> +<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="1036.7098,-257.648 1044.9116,-250.9412 1034.3176,-251.0694 1036.7098,-257.648"/> </g> <!-- 23 --> -<g id="node24" class="node"><title>23</title> -<path fill="none" stroke="#56a2d8" stroke-width="2" d="M1926,-684C1926,-684 1776,-684 1776,-684 1770,-684 1764,-678 1764,-672 1764,-672 1764,-660 1764,-660 1764,-654 1770,-648 1776,-648 1776,-648 1926,-648 1926,-648 1932,-648 1938,-654 1938,-660 1938,-660 1938,-672 1938,-672 1938,-678 1932,-684 1926,-684"/> -<text text-anchor="middle" x="1851" y="-669" font-family="sans" font-size="10.00">index_genomic_alignment_samtools</text> -<text text-anchor="middle" x="1851" y="-658" font-family="sans" font-size="10.00">seqmode: paired_end</text> +<g id="node24" class="node"> +<title>23</title> +<path fill="none" stroke="#d88556" stroke-width="2" d="M1730,-689C1730,-689 1615,-689 1615,-689 1609,-689 1603,-683 1603,-677 1603,-677 1603,-660 1603,-660 1603,-654 1609,-648 1615,-648 1615,-648 1730,-648 1730,-648 1736,-648 1742,-654 1742,-660 1742,-660 1742,-677 1742,-677 1742,-683 1736,-689 1730,-689"/> +<text text-anchor="middle" x="1672.5" y="-677" font-family="sans" font-size="10.00" fill="#000000">create_index_star</text> +<text text-anchor="middle" x="1672.5" y="-666" font-family="sans" font-size="10.00" fill="#000000">index_size: 75</text> +<text text-anchor="middle" x="1672.5" y="-655" font-family="sans" font-size="10.00" fill="#000000">organism: homo_sapiens</text> +</g> +<!-- 23->2 --> +<g id="edge23" class="edge"> +<title>23->2</title> +<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M1602.6493,-661.3903C1521.4699,-648.8199 1398.5,-614.5106 1398.5,-522 1398.5,-522 1398.5,-522 1398.5,-450 1398.5,-373.5246 1401.0548,-334.7077 1340.5,-288 1273.9045,-236.6329 1234.9739,-270.718 1148.0991,-251.8284"/> +<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="1148.6595,-248.3645 1138.1229,-249.4734 1147.0513,-255.1773 1148.6595,-248.3645"/> +</g> +<!-- 23->3 --> +<g id="edge25" class="edge"> +<title>23->3</title> +<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M1676.9067,-647.746C1682.5195,-619.4559 1691.5,-567.1388 1691.5,-522 1691.5,-522 1691.5,-522 1691.5,-450 1691.5,-377.278 1708.0836,-349.0052 1668.5,-288 1660.3912,-275.503 1648.2657,-265.3726 1635.6585,-257.408"/> +<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="1637.288,-254.3056 1626.897,-252.2376 1633.7304,-260.3342 1637.288,-254.3056"/> +</g> +<!-- 23->4 --> +<g id="edge27" class="edge"> +<title>23->4</title> +<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M1668.0933,-647.746C1662.4805,-619.4559 1653.5,-567.1388 1653.5,-522 1653.5,-522 1653.5,-522 1653.5,-450 1653.5,-377.5569 1681.1464,-344.253 1635.5,-288 1634.5861,-286.8737 1574.786,-267.3565 1527.6647,-252.1066"/> +<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="1528.7214,-248.7699 1518.1296,-249.0229 1526.5674,-255.4303 1528.7214,-248.7699"/> +</g> +<!-- 23->5 --> +<g id="edge29" class="edge"> +<title>23->5</title> +<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M1686.2981,-647.6529C1703.1674,-620.1007 1729.5,-569.4869 1729.5,-522 1729.5,-522 1729.5,-522 1729.5,-450 1729.5,-381.628 1711.7328,-302.7182 1701.162,-261.8204"/> +<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="1704.5161,-260.813 1698.5816,-252.0362 1697.7476,-262.5982 1704.5161,-260.813"/> +</g> +<!-- 23->6 --> +<g id="edge31" class="edge"> +<title>23->6</title> +<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M1742.3498,-659.0306C1862.4937,-640.7677 2095.5,-595.8313 2095.5,-522 2095.5,-522 2095.5,-522 2095.5,-378 2095.5,-337.1184 2106.0212,-316.2809 2076.5,-288 2008.4858,-222.8432 1958.3952,-271.5799 1860.9958,-251.757"/> +<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="1861.6291,-248.3122 1851.1059,-249.5419 1860.0991,-255.143 1861.6291,-248.3122"/> +</g> +<!-- 23->7 --> +<g id="edge33" class="edge"> +<title>23->7</title> +<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M1742.0709,-666.4578C1868.6807,-661.889 2131.3493,-648.2393 2214.5,-612 2270.2287,-587.7119 2317.5,-582.7915 2317.5,-522 2317.5,-522 2317.5,-522 2317.5,-378 2317.5,-335.2408 2309.7232,-321.7741 2283.5,-288 2274.3064,-276.1591 2261.8032,-265.8658 2249.5468,-257.5331"/> +<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="2251.4389,-254.5886 2241.1447,-252.0825 2247.6292,-260.4611 2251.4389,-254.5886"/> +</g> +<!-- 23->8 --> +<g id="edge35" class="edge"> +<title>23->8</title> +<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M1742.1306,-666.31C1901.5699,-659.4056 2279.5,-631.4918 2279.5,-522 2279.5,-522 2279.5,-522 2279.5,-378 2279.5,-337.1184 2289.1355,-317.1773 2260.5,-288 2248.0604,-275.325 2148.5228,-255.6013 2083.3365,-243.8264"/> +<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="2083.6488,-240.3266 2073.1881,-242.0071 2082.4136,-247.2168 2083.6488,-240.3266"/> +</g> +<!-- 23->9 --> +<g id="edge37" class="edge"> +<title>23->9</title> +<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M1742.1279,-661.4167C1828.9504,-651.8583 1971.8773,-633.5252 2020.5,-612 2079.2092,-586.0095 2133.5,-586.2049 2133.5,-522 2133.5,-522 2133.5,-522 2133.5,-378 2133.5,-335.3959 2131.7961,-316.9078 2100.5,-288 2058.9952,-249.6626 2031.4221,-267.0868 1972.0222,-251.8949"/> +<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="1972.781,-248.4731 1962.2086,-249.1632 1970.9037,-255.2167 1972.781,-248.4731"/> </g> -<!-- 22->23 --> -<g id="edge46" class="edge"><title>22->23</title> -<path fill="none" stroke="grey" stroke-width="2" d="M1796.04,-719.697C1805.06,-711.05 1816.12,-700.449 1825.94,-691.027"/> -<polygon fill="grey" stroke="grey" stroke-width="2" points="1828.37,-693.552 1833.16,-684.104 1823.52,-688.499 1828.37,-693.552"/> +<!-- 46 --> +<g id="node47" class="node"> +<title>46</title> +<path fill="none" stroke="#d87556" stroke-width="2" d="M921,-252C921,-252 824,-252 824,-252 818,-252 812,-246 812,-240 812,-240 812,-228 812,-228 812,-222 818,-216 824,-216 824,-216 921,-216 921,-216 927,-216 933,-222 933,-228 933,-228 933,-240 933,-240 933,-246 927,-252 921,-252"/> +<text text-anchor="middle" x="872.5" y="-237" font-family="sans" font-size="10.00" fill="#000000">create_index_salmon</text> +<text text-anchor="middle" x="872.5" y="-226" font-family="sans" font-size="10.00" fill="#000000">kmer: 31</text> +</g> +<!-- 23->46 --> +<g id="edge82" class="edge"> +<title>23->46</title> +<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M1602.8275,-659.8132C1536.4503,-650.4083 1442.3504,-633.784 1412.5,-612 1375.1836,-584.7675 1360.5,-568.1966 1360.5,-522 1360.5,-522 1360.5,-522 1360.5,-450 1360.5,-412.1224 1338.1827,-310.21 1307.5,-288 1300.1831,-282.7036 1064.3298,-255.5477 943.0419,-241.8796"/> +<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="943.4208,-238.4002 933.092,-240.7596 942.6378,-245.3563 943.4208,-238.4002"/> +</g> +<!-- 59 --> +<g id="node60" class="node"> +<title>59</title> +<path fill="none" stroke="#56d8b9" stroke-width="2" d="M741,-612C741,-612 640,-612 640,-612 634,-612 628,-606 628,-600 628,-600 628,-588 628,-588 628,-582 634,-576 640,-576 640,-576 741,-576 741,-576 747,-576 753,-582 753,-588 753,-588 753,-600 753,-600 753,-606 747,-612 741,-612"/> +<text text-anchor="middle" x="690.5" y="-591.5" font-family="sans" font-size="10.00" fill="#000000">pe_map_genome_star</text> +</g> +<!-- 23->59 --> +<g id="edge105" class="edge"> +<title>23->59</title> +<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M1602.6642,-663.2019C1423.0121,-649.5725 946.1608,-613.3959 763.2934,-599.5225"/> +<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="763.4771,-596.0265 753.241,-598.7599 762.9475,-603.0064 763.4771,-596.0265"/> +</g> +<!-- 62 --> +<g id="node63" class="node"> +<title>62</title> +<path fill="none" stroke="#56d8a9" stroke-width="2" d="M1238,-612C1238,-612 1155,-612 1155,-612 1149,-612 1143,-606 1143,-600 1143,-600 1143,-588 1143,-588 1143,-582 1149,-576 1155,-576 1155,-576 1238,-576 1238,-576 1244,-576 1250,-582 1250,-588 1250,-588 1250,-600 1250,-600 1250,-606 1244,-612 1238,-612"/> +<text text-anchor="middle" x="1196.5" y="-591.5" font-family="sans" font-size="10.00" fill="#000000">map_genome_star</text> +</g> +<!-- 23->62 --> +<g id="edge108" class="edge"> +<title>23->62</title> +<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M1602.7014,-657.7795C1529.4145,-646.4967 1410.832,-628.165 1308.5,-612 1292.8618,-609.5297 1276.0006,-606.8359 1260.2267,-604.3025"/> +<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="1260.4706,-600.7968 1250.0418,-602.6648 1259.3593,-607.708 1260.4706,-600.7968"/> +</g> +<!-- 64 --> +<g id="node65" class="node"> +<title>64</title> +<path fill="none" stroke="#56d86b" stroke-width="2" d="M1320.5,-396C1320.5,-396 1228.5,-396 1228.5,-396 1222.5,-396 1216.5,-390 1216.5,-384 1216.5,-384 1216.5,-372 1216.5,-372 1216.5,-366 1222.5,-360 1228.5,-360 1228.5,-360 1320.5,-360 1320.5,-360 1326.5,-360 1332.5,-366 1332.5,-372 1332.5,-372 1332.5,-384 1332.5,-384 1332.5,-390 1326.5,-396 1320.5,-396"/> +<text text-anchor="middle" x="1274.5" y="-375.5" font-family="sans" font-size="10.00" fill="#000000">generate_alfa_index</text> +</g> +<!-- 23->64 --> +<g id="edge111" class="edge"> +<title>23->64</title> +<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M1602.9448,-664.838C1518.7744,-659.0115 1383.6827,-644.7404 1346.5,-612 1330.6633,-598.0553 1296.0731,-464.9468 1281.3522,-405.9339"/> +<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="1284.7293,-405.0101 1278.9239,-396.1474 1277.9353,-406.696 1284.7293,-405.0101"/> </g> -<!-- 31 --> -<g id="node32" class="node"><title>31</title> -<path fill="none" stroke="#56d86b" stroke-width="2" d="M1579,-612C1579,-612 1491,-612 1491,-612 1485,-612 1479,-606 1479,-600 1479,-600 1479,-588 1479,-588 1479,-582 1485,-576 1491,-576 1491,-576 1579,-576 1579,-576 1585,-576 1591,-582 1591,-588 1591,-588 1591,-600 1591,-600 1591,-606 1585,-612 1579,-612"/> -<text text-anchor="middle" x="1535" y="-591.5" font-family="sans" font-size="10.00">calculate_TIN_scores</text> -</g> -<!-- 22->31 --> -<g id="edge54" class="edge"><title>22->31</title> -<path fill="none" stroke="grey" stroke-width="2" d="M1762.74,-719.786C1744.5,-700.11 1712.25,-668.045 1679,-648 1654.93,-633.488 1626.23,-621.935 1600.82,-613.367"/> -<polygon fill="grey" stroke="grey" stroke-width="2" points="1601.85,-610.021 1591.25,-610.229 1599.67,-616.672 1601.85,-610.021"/> -</g> -<!-- 23->13 --> -<g id="edge30" class="edge"><title>23->13</title> -<path fill="none" stroke="grey" stroke-width="2" d="M1877.18,-647.876C1891.04,-638.808 1908.24,-627.552 1923.21,-617.759"/> -<polygon fill="grey" stroke="grey" stroke-width="2" points="1925.27,-620.593 1931.72,-612.19 1921.44,-614.735 1925.27,-620.593"/> -</g> -<!-- 23->31 --> -<g id="edge55" class="edge"><title>23->31</title> -<path fill="none" stroke="grey" stroke-width="2" d="M1766.32,-647.996C1717.81,-638.018 1655.86,-624.873 1601,-612 1600.9,-611.976 1600.8,-611.953 1600.7,-611.929"/> -<polygon fill="grey" stroke="grey" stroke-width="2" points="1601.67,-608.563 1591.13,-609.633 1600.04,-615.37 1601.67,-608.563"/> -</g> -<!-- 24->14 --> -<g id="edge31" class="edge"><title>24->14</title> -<path fill="none" stroke="grey" stroke-width="2" d="M1631.68,-722.094C1649.83,-713.907 1668.55,-701.707 1679,-684 1691.28,-663.202 1677.19,-638.237 1662.11,-620.048"/> -<polygon fill="grey" stroke="grey" stroke-width="2" points="1664.44,-617.398 1655.21,-612.207 1659.19,-622.025 1664.44,-617.398"/> +<!-- 24 --> +<g id="node25" class="node"> +<title>24</title> +<path fill="none" stroke="#70d856" stroke-width="2" d="M1214.5,-324C1214.5,-324 1148.5,-324 1148.5,-324 1142.5,-324 1136.5,-318 1136.5,-312 1136.5,-312 1136.5,-300 1136.5,-300 1136.5,-294 1142.5,-288 1148.5,-288 1148.5,-288 1214.5,-288 1214.5,-288 1220.5,-288 1226.5,-294 1226.5,-300 1226.5,-300 1226.5,-312 1226.5,-312 1226.5,-318 1220.5,-324 1214.5,-324"/> +<text text-anchor="middle" x="1181.5" y="-309" font-family="sans" font-size="10.00" fill="#000000">sort_bed_4_big</text> +<text text-anchor="middle" x="1181.5" y="-298" font-family="sans" font-size="10.00" fill="#000000">strand: plus</text> +</g> +<!-- 24->3 --> +<g id="edge24" class="edge"> +<title>24->3</title> +<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M1226.688,-290.2113C1229.6527,-289.4008 1232.6083,-288.6534 1235.5,-288 1359.9314,-259.8859 1398.0239,-279.4596 1526.0782,-252.0882"/> +<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="1526.8448,-255.5034 1535.8636,-249.9436 1525.3462,-248.6656 1526.8448,-255.5034"/> </g> <!-- 25 --> -<g id="node26" class="node"><title>25</title> -<path fill="none" stroke="#56a2d8" stroke-width="2" d="M1658,-684C1658,-684 1508,-684 1508,-684 1502,-684 1496,-678 1496,-672 1496,-672 1496,-660 1496,-660 1496,-654 1502,-648 1508,-648 1508,-648 1658,-648 1658,-648 1664,-648 1670,-654 1670,-660 1670,-660 1670,-672 1670,-672 1670,-678 1664,-684 1658,-684"/> -<text text-anchor="middle" x="1583" y="-669" font-family="sans" font-size="10.00">index_genomic_alignment_samtools</text> -<text text-anchor="middle" x="1583" y="-658" font-family="sans" font-size="10.00">seqmode: single_end</text> -</g> -<!-- 24->25 --> -<g id="edge49" class="edge"><title>24->25</title> -<path fill="none" stroke="grey" stroke-width="2" d="M1583,-719.697C1583,-711.983 1583,-702.712 1583,-694.112"/> -<polygon fill="grey" stroke="grey" stroke-width="2" points="1586.5,-694.104 1583,-684.104 1579.5,-694.104 1586.5,-694.104"/> -</g> -<!-- 32 --> -<g id="node33" class="node"><title>32</title> -<path fill="none" stroke="#56d86b" stroke-width="2" d="M1449,-612C1449,-612 1361,-612 1361,-612 1355,-612 1349,-606 1349,-600 1349,-600 1349,-588 1349,-588 1349,-582 1355,-576 1361,-576 1361,-576 1449,-576 1449,-576 1455,-576 1461,-582 1461,-588 1461,-588 1461,-600 1461,-600 1461,-606 1455,-612 1449,-612"/> -<text text-anchor="middle" x="1405" y="-591.5" font-family="sans" font-size="10.00">calculate_TIN_scores</text> -</g> -<!-- 24->32 --> -<g id="edge57" class="edge"><title>24->32</title> -<path fill="none" stroke="grey" stroke-width="2" d="M1534.42,-734.18C1466.9,-729.131 1350.04,-715.914 1324,-684 1313.88,-671.604 1316.39,-662.074 1324,-648 1330.82,-635.391 1342.09,-625.3 1354.08,-617.45"/> -<polygon fill="grey" stroke="grey" stroke-width="2" points="1356.14,-620.294 1362.89,-612.126 1352.52,-614.303 1356.14,-620.294"/> -</g> -<!-- 25->14 --> -<g id="edge32" class="edge"><title>25->14</title> -<path fill="none" stroke="grey" stroke-width="2" d="M1596.35,-647.697C1602.76,-639.389 1610.56,-629.277 1617.61,-620.141"/> -<polygon fill="grey" stroke="grey" stroke-width="2" points="1620.47,-622.16 1623.81,-612.104 1614.93,-617.884 1620.47,-622.16"/> -</g> -<!-- 25->32 --> -<g id="edge58" class="edge"><title>25->32</title> -<path fill="none" stroke="grey" stroke-width="2" d="M1539.46,-647.876C1514.8,-638.179 1483.78,-625.98 1457.75,-615.743"/> -<polygon fill="grey" stroke="grey" stroke-width="2" points="1458.99,-612.471 1448.4,-612.068 1456.43,-618.985 1458.99,-612.471"/> +<g id="node26" class="node"> +<title>25</title> +<path fill="none" stroke="#70d856" stroke-width="2" d="M1106.5,-324C1106.5,-324 1040.5,-324 1040.5,-324 1034.5,-324 1028.5,-318 1028.5,-312 1028.5,-312 1028.5,-300 1028.5,-300 1028.5,-294 1034.5,-288 1040.5,-288 1040.5,-288 1106.5,-288 1106.5,-288 1112.5,-288 1118.5,-294 1118.5,-300 1118.5,-300 1118.5,-312 1118.5,-312 1118.5,-318 1112.5,-324 1106.5,-324"/> +<text text-anchor="middle" x="1073.5" y="-309" font-family="sans" font-size="10.00" fill="#000000">sort_bed_4_big</text> +<text text-anchor="middle" x="1073.5" y="-298" font-family="sans" font-size="10.00" fill="#000000">strand: minus</text> +</g> +<!-- 25->4 --> +<g id="edge26" class="edge"> +<title>25->4</title> +<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M1118.6893,-290.217C1121.6537,-289.4051 1124.6088,-288.6558 1127.5,-288 1250.1063,-260.1896 1287.6495,-278.8542 1414.8044,-251.8897"/> +<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="1415.9003,-255.2332 1424.9279,-249.6877 1414.4125,-248.3932 1415.9003,-255.2332"/> </g> <!-- 26 --> -<g id="node27" class="node"><title>26</title> -<path fill="none" stroke="#88d856" stroke-width="2" d="M1905.5,-396C1905.5,-396 1824.5,-396 1824.5,-396 1818.5,-396 1812.5,-390 1812.5,-384 1812.5,-384 1812.5,-372 1812.5,-372 1812.5,-366 1818.5,-360 1824.5,-360 1824.5,-360 1905.5,-360 1905.5,-360 1911.5,-360 1917.5,-366 1917.5,-372 1917.5,-372 1917.5,-384 1917.5,-384 1917.5,-390 1911.5,-396 1905.5,-396"/> -<text text-anchor="middle" x="1865" y="-375.5" font-family="sans" font-size="10.00">alfa_qc_all_samples</text> -</g> -<!-- 26->15 --> -<g id="edge33" class="edge"><title>26->15</title> -<path fill="none" stroke="grey" stroke-width="2" d="M1834.91,-359.876C1818.68,-350.639 1798.46,-339.131 1781.03,-329.212"/> -<polygon fill="grey" stroke="grey" stroke-width="2" points="1782.63,-326.094 1772.2,-324.19 1779.16,-332.178 1782.63,-326.094"/> +<g id="node27" class="node"> +<title>26</title> +<path fill="none" stroke="#70d856" stroke-width="2" d="M1470.5,-324C1470.5,-324 1404.5,-324 1404.5,-324 1398.5,-324 1392.5,-318 1392.5,-312 1392.5,-312 1392.5,-300 1392.5,-300 1392.5,-294 1398.5,-288 1404.5,-288 1404.5,-288 1470.5,-288 1470.5,-288 1476.5,-288 1482.5,-294 1482.5,-300 1482.5,-300 1482.5,-312 1482.5,-312 1482.5,-318 1476.5,-324 1470.5,-324"/> +<text text-anchor="middle" x="1437.5" y="-309" font-family="sans" font-size="10.00" fill="#000000">sort_bed_4_big</text> +<text text-anchor="middle" x="1437.5" y="-298" font-family="sans" font-size="10.00" fill="#000000">strand: minus</text> +</g> +<!-- 26->5 --> +<g id="edge28" class="edge"> +<title>26->5</title> +<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M1482.7893,-290.6056C1485.7292,-289.6986 1488.6516,-288.822 1491.5,-288 1553.0972,-270.2234 1572.0606,-270.4122 1636.8627,-252.3623"/> +<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="1638.096,-255.6509 1646.7668,-249.5625 1636.1918,-248.9148 1638.096,-255.6509"/> </g> <!-- 27 --> -<g id="node28" class="node"><title>27</title> -<path fill="none" stroke="#88d856" stroke-width="2" d="M1782.5,-396C1782.5,-396 1701.5,-396 1701.5,-396 1695.5,-396 1689.5,-390 1689.5,-384 1689.5,-384 1689.5,-372 1689.5,-372 1689.5,-366 1695.5,-360 1701.5,-360 1701.5,-360 1782.5,-360 1782.5,-360 1788.5,-360 1794.5,-366 1794.5,-372 1794.5,-372 1794.5,-384 1794.5,-384 1794.5,-390 1788.5,-396 1782.5,-396"/> -<text text-anchor="middle" x="1742" y="-375.5" font-family="sans" font-size="10.00">alfa_qc_all_samples</text> -</g> -<!-- 27->15 --> -<g id="edge34" class="edge"><title>27->15</title> -<path fill="none" stroke="grey" stroke-width="2" d="M1742,-359.697C1742,-351.983 1742,-342.712 1742,-334.112"/> -<polygon fill="grey" stroke="grey" stroke-width="2" points="1745.5,-334.104 1742,-324.104 1738.5,-334.104 1745.5,-334.104"/> +<g id="node28" class="node"> +<title>27</title> +<path fill="none" stroke="#70d856" stroke-width="2" d="M1838.5,-324C1838.5,-324 1772.5,-324 1772.5,-324 1766.5,-324 1760.5,-318 1760.5,-312 1760.5,-312 1760.5,-300 1760.5,-300 1760.5,-294 1766.5,-288 1772.5,-288 1772.5,-288 1838.5,-288 1838.5,-288 1844.5,-288 1850.5,-294 1850.5,-300 1850.5,-300 1850.5,-312 1850.5,-312 1850.5,-318 1844.5,-324 1838.5,-324"/> +<text text-anchor="middle" x="1805.5" y="-309" font-family="sans" font-size="10.00" fill="#000000">sort_bed_4_big</text> +<text text-anchor="middle" x="1805.5" y="-298" font-family="sans" font-size="10.00" fill="#000000">strand: plus</text> +</g> +<!-- 27->6 --> +<g id="edge30" class="edge"> +<title>27->6</title> +<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M1805.2477,-287.8314C1805.1407,-280.131 1805.0135,-270.9743 1804.8947,-262.4166"/> +<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="1808.3944,-262.3637 1804.7557,-252.4133 1801.3951,-262.4609 1808.3944,-262.3637"/> </g> <!-- 28 --> -<g id="node29" class="node"><title>28</title> -<path fill="none" stroke="#d85656" stroke-width="2" d="M1400,-905C1400,-905 1132,-905 1132,-905 1126,-905 1120,-899 1120,-893 1120,-893 1120,-881 1120,-881 1120,-875 1126,-869 1132,-869 1132,-869 1400,-869 1400,-869 1406,-869 1412,-875 1412,-881 1412,-881 1412,-893 1412,-893 1412,-899 1406,-905 1400,-905"/> -<text text-anchor="middle" x="1266" y="-890" font-family="sans" font-size="10.00">pe_remove_adapters_cutadapt</text> -<text text-anchor="middle" x="1266" y="-879" font-family="sans" font-size="10.00">sample: synthetic_10_reads_paired_synthetic_10_reads_paired</text> -</g> -<!-- 28->16 --> -<g id="edge35" class="edge"><title>28->16</title> -<path fill="none" stroke="grey" stroke-width="2" d="M1266,-868.819C1266,-860.422 1266,-850.116 1266,-840.686"/> -<polygon fill="grey" stroke="grey" stroke-width="2" points="1269.5,-840.558 1266,-830.558 1262.5,-840.558 1269.5,-840.558"/> +<g id="node29" class="node"> +<title>28</title> +<path fill="none" stroke="#70d856" stroke-width="2" d="M2239.5,-324C2239.5,-324 2173.5,-324 2173.5,-324 2167.5,-324 2161.5,-318 2161.5,-312 2161.5,-312 2161.5,-300 2161.5,-300 2161.5,-294 2167.5,-288 2173.5,-288 2173.5,-288 2239.5,-288 2239.5,-288 2245.5,-288 2251.5,-294 2251.5,-300 2251.5,-300 2251.5,-312 2251.5,-312 2251.5,-318 2245.5,-324 2239.5,-324"/> +<text text-anchor="middle" x="2206.5" y="-309" font-family="sans" font-size="10.00" fill="#000000">sort_bed_4_big</text> +<text text-anchor="middle" x="2206.5" y="-298" font-family="sans" font-size="10.00" fill="#000000">strand: plus</text> +</g> +<!-- 28->7 --> +<g id="edge32" class="edge"> +<title>28->7</title> +<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M2206.5,-287.8314C2206.5,-280.131 2206.5,-270.9743 2206.5,-262.4166"/> +<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="2210.0001,-262.4132 2206.5,-252.4133 2203.0001,-262.4133 2210.0001,-262.4132"/> </g> <!-- 29 --> -<g id="node30" class="node"><title>29</title> -<path fill="none" stroke="#56d88a" stroke-width="2" d="M1106.5,-612C1106.5,-612 1005.5,-612 1005.5,-612 999.5,-612 993.5,-606 993.5,-600 993.5,-600 993.5,-588 993.5,-588 993.5,-582 999.5,-576 1005.5,-576 1005.5,-576 1106.5,-576 1106.5,-576 1112.5,-576 1118.5,-582 1118.5,-588 1118.5,-588 1118.5,-600 1118.5,-600 1118.5,-606 1112.5,-612 1106.5,-612"/> -<text text-anchor="middle" x="1056" y="-597" font-family="sans" font-size="10.00">extract_transcriptome</text> -<text text-anchor="middle" x="1056" y="-586" font-family="sans" font-size="10.00">organism: homo_sapiens</text> -</g> -<!-- 29->17 --> -<g id="edge36" class="edge"><title>29->17</title> -<path fill="none" stroke="grey" stroke-width="2" d="M1078.25,-575.697C1089.58,-566.881 1103.53,-556.032 1115.82,-546.474"/> -<polygon fill="grey" stroke="grey" stroke-width="2" points="1118.26,-549.007 1124.01,-540.104 1113.97,-543.481 1118.26,-549.007"/> -</g> -<!-- 40 --> -<g id="node41" class="node"><title>40</title> -<path fill="none" stroke="#d8a456" stroke-width="2" d="M1061.5,-540C1061.5,-540 890.5,-540 890.5,-540 884.5,-540 878.5,-534 878.5,-528 878.5,-528 878.5,-516 878.5,-516 878.5,-510 884.5,-504 890.5,-504 890.5,-504 1061.5,-504 1061.5,-504 1067.5,-504 1073.5,-510 1073.5,-516 1073.5,-516 1073.5,-528 1073.5,-528 1073.5,-534 1067.5,-540 1061.5,-540"/> -<text text-anchor="middle" x="976" y="-519.5" font-family="sans" font-size="10.00">concatenate_transcriptome_and_genome</text> -</g> -<!-- 29->40 --> -<g id="edge70" class="edge"><title>29->40</title> -<path fill="none" stroke="grey" stroke-width="2" d="M1036.22,-575.697C1026.25,-566.965 1013.99,-556.24 1003.14,-546.75"/> -<polygon fill="grey" stroke="grey" stroke-width="2" points="1005.38,-544.055 995.548,-540.104 1000.77,-549.323 1005.38,-544.055"/> +<g id="node30" class="node"> +<title>29</title> +<path fill="none" stroke="#70d856" stroke-width="2" d="M2055.5,-324C2055.5,-324 1989.5,-324 1989.5,-324 1983.5,-324 1977.5,-318 1977.5,-312 1977.5,-312 1977.5,-300 1977.5,-300 1977.5,-294 1983.5,-288 1989.5,-288 1989.5,-288 2055.5,-288 2055.5,-288 2061.5,-288 2067.5,-294 2067.5,-300 2067.5,-300 2067.5,-312 2067.5,-312 2067.5,-318 2061.5,-324 2055.5,-324"/> +<text text-anchor="middle" x="2022.5" y="-309" font-family="sans" font-size="10.00" fill="#000000">sort_bed_4_big</text> +<text text-anchor="middle" x="2022.5" y="-298" font-family="sans" font-size="10.00" fill="#000000">strand: minus</text> +</g> +<!-- 29->8 --> +<g id="edge34" class="edge"> +<title>29->8</title> +<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M2023.5094,-287.8314C2023.9372,-280.131 2024.4459,-270.9743 2024.9213,-262.4166"/> +<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="2028.4169,-262.592 2025.477,-252.4133 2021.4276,-262.2037 2028.4169,-262.592"/> </g> <!-- 30 --> -<g id="node31" class="node"><title>30</title> -<path fill="none" stroke="#56b1d8" stroke-width="2" d="M847,-905C847,-905 567,-905 567,-905 561,-905 555,-899 555,-893 555,-893 555,-881 555,-881 555,-875 561,-869 567,-869 567,-869 847,-869 847,-869 853,-869 859,-875 859,-881 859,-881 859,-893 859,-893 859,-899 853,-905 847,-905"/> -<text text-anchor="middle" x="707" y="-890" font-family="sans" font-size="10.00">remove_adapters_cutadapt</text> -<text text-anchor="middle" x="707" y="-879" font-family="sans" font-size="10.00">sample: synthetic_10_reads_mate_1_synthetic_10_reads_mate_1</text> -</g> -<!-- 30->18 --> -<g id="edge37" class="edge"><title>30->18</title> -<path fill="none" stroke="grey" stroke-width="2" d="M707,-868.819C707,-860.422 707,-850.116 707,-840.686"/> -<polygon fill="grey" stroke="grey" stroke-width="2" points="710.5,-840.558 707,-830.558 703.5,-840.558 710.5,-840.558"/> -</g> -<!-- 31->19 --> -<g id="edge38" class="edge"><title>31->19</title> -<path fill="none" stroke="grey" stroke-width="2" d="M1504.91,-575.876C1488.68,-566.639 1468.46,-555.131 1451.03,-545.212"/> -<polygon fill="grey" stroke="grey" stroke-width="2" points="1452.63,-542.094 1442.2,-540.19 1449.16,-548.178 1452.63,-542.094"/> -</g> -<!-- 32->19 --> -<g id="edge39" class="edge"><title>32->19</title> -<path fill="none" stroke="grey" stroke-width="2" d="M1406.73,-575.697C1407.5,-567.983 1408.43,-558.712 1409.29,-550.112"/> -<polygon fill="grey" stroke="grey" stroke-width="2" points="1412.78,-550.403 1410.29,-540.104 1405.81,-549.706 1412.78,-550.403"/> +<g id="node31" class="node"> +<title>30</title> +<path fill="none" stroke="#70d856" stroke-width="2" d="M1947.5,-324C1947.5,-324 1881.5,-324 1881.5,-324 1875.5,-324 1869.5,-318 1869.5,-312 1869.5,-312 1869.5,-300 1869.5,-300 1869.5,-294 1875.5,-288 1881.5,-288 1881.5,-288 1947.5,-288 1947.5,-288 1953.5,-288 1959.5,-294 1959.5,-300 1959.5,-300 1959.5,-312 1959.5,-312 1959.5,-318 1953.5,-324 1947.5,-324"/> +<text text-anchor="middle" x="1914.5" y="-309" font-family="sans" font-size="10.00" fill="#000000">sort_bed_4_big</text> +<text text-anchor="middle" x="1914.5" y="-298" font-family="sans" font-size="10.00" fill="#000000">strand: minus</text> +</g> +<!-- 30->9 --> +<g id="edge36" class="edge"> +<title>30->9</title> +<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M1914.7523,-287.8314C1914.8593,-280.131 1914.9865,-270.9743 1915.1053,-262.4166"/> +<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="1918.6049,-262.4609 1915.2443,-252.4133 1911.6056,-262.3637 1918.6049,-262.4609"/> </g> -<!-- 33 --> -<g id="node34" class="node"><title>33</title> -<path fill="none" stroke="#56d8c9" stroke-width="2" d="M979.5,-468C979.5,-468 894.5,-468 894.5,-468 888.5,-468 882.5,-462 882.5,-456 882.5,-456 882.5,-444 882.5,-444 882.5,-438 888.5,-432 894.5,-432 894.5,-432 979.5,-432 979.5,-432 985.5,-432 991.5,-438 991.5,-444 991.5,-444 991.5,-456 991.5,-456 991.5,-462 985.5,-468 979.5,-468"/> -<text text-anchor="middle" x="937" y="-447.5" font-family="sans" font-size="10.00">create_index_salmon</text> +<!-- 31 --> +<g id="node32" class="node"> +<title>31</title> +<path fill="none" stroke="#d89556" stroke-width="2" d="M941.5,-180C941.5,-180 823.5,-180 823.5,-180 817.5,-180 811.5,-174 811.5,-168 811.5,-168 811.5,-156 811.5,-156 811.5,-150 817.5,-144 823.5,-144 823.5,-144 941.5,-144 941.5,-144 947.5,-144 953.5,-150 953.5,-156 953.5,-156 953.5,-168 953.5,-168 953.5,-174 947.5,-180 941.5,-180"/> +<text text-anchor="middle" x="882.5" y="-159.5" font-family="sans" font-size="10.00" fill="#000000">pe_quantification_salmon</text> +</g> +<!-- 31->10 --> +<g id="edge38" class="edge"> +<title>31->10</title> +<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M838.3401,-143.8314C814.7268,-134.1162 785.4798,-122.0831 760.63,-111.8592"/> +<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="761.9219,-108.6061 751.3423,-108.038 759.2585,-115.0797 761.9219,-108.6061"/> +</g> +<!-- 31->11 --> +<g id="edge40" class="edge"> +<title>31->11</title> +<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M882.5,-143.8314C882.5,-136.131 882.5,-126.9743 882.5,-118.4166"/> +<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="886.0001,-118.4132 882.5,-108.4133 879.0001,-118.4133 886.0001,-118.4132"/> +</g> +<!-- 31->12 --> +<g id="edge42" class="edge"> +<title>31->12</title> +<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M929.4357,-143.8314C954.6437,-134.0734 985.8926,-121.977 1012.3791,-111.7242"/> +<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="1013.8397,-114.912 1021.9019,-108.038 1011.3127,-108.384 1013.8397,-114.912"/> +</g> +<!-- 31->13 --> +<g id="edge44" class="edge"> +<title>31->13</title> +<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M953.5828,-146.029C956.9328,-145.3314 960.2514,-144.6516 963.5,-144 1049.3543,-126.7799 1073.5509,-124.5084 1163.3062,-108.2054"/> +<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="1164.1757,-111.6046 1173.3848,-106.366 1162.9189,-104.7184 1164.1757,-111.6046"/> </g> -<!-- 33->20 --> -<g id="edge41" class="edge"><title>33->20</title> -<path fill="none" stroke="grey" stroke-width="2" d="M966.355,-431.876C982.045,-422.724 1001.56,-411.342 1018.45,-401.485"/> -<polygon fill="grey" stroke="grey" stroke-width="2" points="1020.66,-404.252 1027.53,-396.19 1017.13,-398.205 1020.66,-404.252"/> +<!-- 32 --> +<g id="node33" class="node"> +<title>32</title> +<path fill="none" stroke="#5663d8" stroke-width="2" d="M1085,-180C1085,-180 984,-180 984,-180 978,-180 972,-174 972,-168 972,-168 972,-156 972,-156 972,-150 978,-144 984,-144 984,-144 1085,-144 1085,-144 1091,-144 1097,-150 1097,-156 1097,-156 1097,-168 1097,-168 1097,-174 1091,-180 1085,-180"/> +<text text-anchor="middle" x="1034.5" y="-159.5" font-family="sans" font-size="10.00" fill="#000000">quantification_salmon</text> +</g> +<!-- 32->10 --> +<g id="edge39" class="edge"> +<title>32->10</title> +<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M971.7037,-146.1584C968.5941,-145.4187 965.5131,-144.6954 962.5,-144 945.9258,-140.1746 860.8578,-122.2153 793.4697,-108.0441"/> +<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="794.1719,-104.6153 783.6657,-105.9829 792.7316,-111.4656 794.1719,-104.6153"/> +</g> +<!-- 32->11 --> +<g id="edge41" class="edge"> +<title>32->11</title> +<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M996.144,-143.8314C975.9956,-134.2874 951.1248,-122.5065 929.7917,-112.4013"/> +<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="931.1159,-109.1558 920.5802,-108.038 928.1193,-115.482 931.1159,-109.1558"/> +</g> +<!-- 32->12 --> +<g id="edge43" class="edge"> +<title>32->12</title> +<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M1043.0796,-143.8314C1046.8358,-135.8771 1051.3257,-126.369 1055.4798,-117.5723"/> +<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="1058.6996,-118.9503 1059.8048,-108.4133 1052.3699,-115.9612 1058.6996,-118.9503"/> +</g> +<!-- 32->13 --> +<g id="edge45" class="edge"> +<title>32->13</title> +<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M1091.2376,-143.9243C1122.4018,-133.9959 1161.2311,-121.6255 1193.8356,-111.2382"/> +<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="1195.2733,-114.4536 1203.739,-108.0831 1193.1484,-107.7839 1195.2733,-114.4536"/> </g> -<!-- 33->21 --> -<g id="edge43" class="edge"><title>33->21</title> -<path fill="none" stroke="grey" stroke-width="2" d="M929.09,-431.697C925.447,-423.728 921.046,-414.1 917.006,-405.264"/> -<polygon fill="grey" stroke="grey" stroke-width="2" points="920.16,-403.744 912.819,-396.104 913.794,-406.654 920.16,-403.744"/> +<!-- 33 --> +<g id="node34" class="node"> +<title>33</title> +<path fill="none" stroke="#56d8d8" stroke-width="2" d="M313,-838C313,-838 12,-838 12,-838 6,-838 0,-832 0,-826 0,-826 0,-809 0,-809 0,-803 6,-797 12,-797 12,-797 313,-797 313,-797 319,-797 325,-803 325,-809 325,-809 325,-826 325,-826 325,-832 319,-838 313,-838"/> +<text text-anchor="middle" x="162.5" y="-826" font-family="sans" font-size="10.00" fill="#000000">start</text> +<text text-anchor="middle" x="162.5" y="-815" font-family="sans" font-size="10.00" fill="#000000">mate: fq1</text> +<text text-anchor="middle" x="162.5" y="-804" font-family="sans" font-size="10.00" fill="#000000">sample: synthetic_10_reads_paired_synthetic_10_reads_paired</text> +</g> +<!-- 33->14 --> +<g id="edge46" class="edge"> +<title>33->14</title> +<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M162.4077,-796.8743C162.2278,-756.6563 161.8298,-667.7154 161.6259,-622.1329"/> +<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="165.1256,-622.0376 161.5808,-612.0534 158.1257,-622.069 165.1256,-622.0376"/> +</g> +<!-- 47 --> +<g id="node48" class="node"> +<title>47</title> +<path fill="none" stroke="#d8ac56" stroke-width="2" d="M409,-761C409,-761 266,-761 266,-761 260,-761 254,-755 254,-749 254,-749 254,-737 254,-737 254,-731 260,-725 266,-725 266,-725 409,-725 409,-725 415,-725 421,-731 421,-737 421,-737 421,-749 421,-749 421,-755 415,-761 409,-761"/> +<text text-anchor="middle" x="337.5" y="-740.5" font-family="sans" font-size="10.00" fill="#000000">pe_remove_adapters_cutadapt</text> +</g> +<!-- 33->47 --> +<g id="edge83" class="edge"> +<title>33->47</title> +<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M210.7828,-796.9453C234.0937,-787.0215 262.0869,-775.1044 285.827,-764.9979"/> +<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="287.2053,-768.2152 295.0353,-761.0778 284.4634,-761.7745 287.2053,-768.2152"/> </g> <!-- 34 --> -<g id="node35" class="node"><title>34</title> -<path fill="none" stroke="#70d856" stroke-width="2" d="M1828.5,-833C1828.5,-833 1727.5,-833 1727.5,-833 1721.5,-833 1715.5,-827 1715.5,-821 1715.5,-821 1715.5,-804 1715.5,-804 1715.5,-798 1721.5,-792 1727.5,-792 1727.5,-792 1828.5,-792 1828.5,-792 1834.5,-792 1840.5,-798 1840.5,-804 1840.5,-804 1840.5,-821 1840.5,-821 1840.5,-827 1834.5,-833 1828.5,-833"/> -<text text-anchor="middle" x="1778" y="-821" font-family="sans" font-size="10.00">create_index_star</text> -<text text-anchor="middle" x="1778" y="-810" font-family="sans" font-size="10.00">index_size: 75</text> -<text text-anchor="middle" x="1778" y="-799" font-family="sans" font-size="10.00">organism: homo_sapiens</text> -</g> -<!-- 34->22 --> -<g id="edge44" class="edge"><title>34->22</title> -<path fill="none" stroke="grey" stroke-width="2" d="M1778,-791.689C1778,-783.907 1778,-774.842 1778,-766.447"/> -<polygon fill="grey" stroke="grey" stroke-width="2" points="1781.5,-766.319 1778,-756.319 1774.5,-766.32 1781.5,-766.319"/> -</g> -<!-- 34->24 --> -<g id="edge47" class="edge"><title>34->24</title> -<path fill="none" stroke="grey" stroke-width="2" d="M1725.49,-791.976C1698.54,-781.959 1665.73,-769.76 1638.39,-759.594"/> -<polygon fill="grey" stroke="grey" stroke-width="2" points="1639.56,-756.294 1628.96,-756.09 1637.12,-762.855 1639.56,-756.294"/> -</g> -<!-- 43 --> -<g id="node44" class="node"><title>43</title> -<path fill="none" stroke="#5682d8" stroke-width="2" d="M2054,-540C2054,-540 1974,-540 1974,-540 1968,-540 1962,-534 1962,-528 1962,-528 1962,-516 1962,-516 1962,-510 1968,-504 1974,-504 1974,-504 2054,-504 2054,-504 2060,-504 2066,-510 2066,-516 2066,-516 2066,-528 2066,-528 2066,-534 2060,-540 2054,-540"/> -<text text-anchor="middle" x="2014" y="-519.5" font-family="sans" font-size="10.00">generate_alfa_index</text> -</g> -<!-- 34->43 --> -<g id="edge72" class="edge"><title>34->43</title> -<path fill="none" stroke="grey" stroke-width="2" d="M1821.52,-791.833C1863.92,-770.678 1927.59,-733.322 1967,-684 1998.41,-644.69 2008.83,-585.094 2012.29,-550.508"/> -<polygon fill="grey" stroke="grey" stroke-width="2" points="2015.8,-550.48 2013.18,-540.215 2008.83,-549.874 2015.8,-550.48"/> +<g id="node35" class="node"> +<title>34</title> +<path fill="none" stroke="#56d8d8" stroke-width="2" d="M676,-838C676,-838 363,-838 363,-838 357,-838 351,-832 351,-826 351,-826 351,-809 351,-809 351,-803 357,-797 363,-797 363,-797 676,-797 676,-797 682,-797 688,-803 688,-809 688,-809 688,-826 688,-826 688,-832 682,-838 676,-838"/> +<text text-anchor="middle" x="519.5" y="-826" font-family="sans" font-size="10.00" fill="#000000">start</text> +<text text-anchor="middle" x="519.5" y="-815" font-family="sans" font-size="10.00" fill="#000000">mate: fq1</text> +<text text-anchor="middle" x="519.5" y="-804" font-family="sans" font-size="10.00" fill="#000000">sample: synthetic_10_reads_mate_1_synthetic_10_reads_mate_1</text> +</g> +<!-- 34->15 --> +<g id="edge47" class="edge"> +<title>34->15</title> +<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M350.662,-797.1539C304.1026,-788.4729 261.6457,-776.6476 244.5,-761 226.6642,-744.7226 220.0329,-717.5137 217.6452,-696.808"/> +<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="221.1155,-696.3174 216.7465,-686.6654 214.1429,-696.9353 221.1155,-696.3174"/> +</g> +<!-- 49 --> +<g id="node50" class="node"> +<title>49</title> +<path fill="none" stroke="#56d85b" stroke-width="2" d="M583.5,-761C583.5,-761 457.5,-761 457.5,-761 451.5,-761 445.5,-755 445.5,-749 445.5,-749 445.5,-737 445.5,-737 445.5,-731 451.5,-725 457.5,-725 457.5,-725 583.5,-725 583.5,-725 589.5,-725 595.5,-731 595.5,-737 595.5,-737 595.5,-749 595.5,-749 595.5,-755 589.5,-761 583.5,-761"/> +<text text-anchor="middle" x="520.5" y="-740.5" font-family="sans" font-size="10.00" fill="#000000">remove_adapters_cutadapt</text> +</g> +<!-- 34->49 --> +<g id="edge85" class="edge"> +<title>34->49</title> +<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M519.7786,-796.7476C519.8842,-788.8767 520.0064,-779.7743 520.1198,-771.3232"/> +<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="523.6223,-771.1548 520.2569,-761.1087 516.6229,-771.0608 523.6223,-771.1548"/> </g> <!-- 35 --> -<g id="node36" class="node"><title>35</title> -<path fill="none" stroke="#d8cb56" stroke-width="2" d="M2029,-468C2029,-468 1999,-468 1999,-468 1993,-468 1987,-462 1987,-456 1987,-456 1987,-444 1987,-444 1987,-438 1993,-432 1999,-432 1999,-432 2029,-432 2029,-432 2035,-432 2041,-438 2041,-444 2041,-444 2041,-456 2041,-456 2041,-462 2035,-468 2029,-468"/> -<text text-anchor="middle" x="2014" y="-447.5" font-family="sans" font-size="10.00">alfa_qc</text> -</g> -<!-- 35->26 --> -<g id="edge50" class="edge"><title>35->26</title> -<path fill="none" stroke="grey" stroke-width="2" d="M1986.67,-436.161C1965.44,-426.186 1935.53,-412.133 1910.67,-400.456"/> -<polygon fill="grey" stroke="grey" stroke-width="2" points="1911.96,-397.196 1901.42,-396.111 1908.99,-403.531 1911.96,-397.196"/> +<g id="node36" class="node"> +<title>35</title> +<path fill="none" stroke="#56d8d8" stroke-width="2" d="M1070,-838C1070,-838 769,-838 769,-838 763,-838 757,-832 757,-826 757,-826 757,-809 757,-809 757,-803 763,-797 769,-797 769,-797 1070,-797 1070,-797 1076,-797 1082,-803 1082,-809 1082,-809 1082,-826 1082,-826 1082,-832 1076,-838 1070,-838"/> +<text text-anchor="middle" x="919.5" y="-826" font-family="sans" font-size="10.00" fill="#000000">start</text> +<text text-anchor="middle" x="919.5" y="-815" font-family="sans" font-size="10.00" fill="#000000">mate: fq2</text> +<text text-anchor="middle" x="919.5" y="-804" font-family="sans" font-size="10.00" fill="#000000">sample: synthetic_10_reads_paired_synthetic_10_reads_paired</text> +</g> +<!-- 35->16 --> +<g id="edge48" class="edge"> +<title>35->16</title> +<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M947.3661,-796.9453C959.8194,-787.7594 974.5882,-776.8656 987.5823,-767.2809"/> +<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="989.853,-769.9552 995.8229,-761.2024 985.6977,-764.3219 989.853,-769.9552"/> +</g> +<!-- 35->47 --> +<g id="edge84" class="edge"> +<title>35->47</title> +<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M756.7818,-801.0648C662.9526,-790.9385 542.8595,-776.8736 436.5,-761 434.7776,-760.7429 433.0392,-760.4786 431.2887,-760.208"/> +<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="431.5834,-756.7109 421.1575,-758.5954 430.483,-763.6239 431.5834,-756.7109"/> </g> <!-- 36 --> -<g id="node37" class="node"><title>36</title> -<path fill="none" stroke="#d8cb56" stroke-width="2" d="M1854,-468C1854,-468 1824,-468 1824,-468 1818,-468 1812,-462 1812,-456 1812,-456 1812,-444 1812,-444 1812,-438 1818,-432 1824,-432 1824,-432 1854,-432 1854,-432 1860,-432 1866,-438 1866,-444 1866,-444 1866,-456 1866,-456 1866,-462 1860,-468 1854,-468"/> -<text text-anchor="middle" x="1839" y="-447.5" font-family="sans" font-size="10.00">alfa_qc</text> -</g> -<!-- 36->26 --> -<g id="edge51" class="edge"><title>36->26</title> -<path fill="none" stroke="grey" stroke-width="2" d="M1845.43,-431.697C1848.36,-423.813 1851.89,-414.304 1855.14,-405.546"/> -<polygon fill="grey" stroke="grey" stroke-width="2" points="1858.45,-406.697 1858.65,-396.104 1851.88,-404.26 1858.45,-406.697"/> +<g id="node37" class="node"> +<title>36</title> +<path fill="none" stroke="#56d8c9" stroke-width="2" d="M401.5,-686.5C401.5,-686.5 273.5,-686.5 273.5,-686.5 267.5,-686.5 261.5,-680.5 261.5,-674.5 261.5,-674.5 261.5,-662.5 261.5,-662.5 261.5,-656.5 267.5,-650.5 273.5,-650.5 273.5,-650.5 401.5,-650.5 401.5,-650.5 407.5,-650.5 413.5,-656.5 413.5,-662.5 413.5,-662.5 413.5,-674.5 413.5,-674.5 413.5,-680.5 407.5,-686.5 401.5,-686.5"/> +<text text-anchor="middle" x="337.5" y="-666" font-family="sans" font-size="10.00" fill="#000000">pe_remove_polya_cutadapt</text> +</g> +<!-- 36->17 --> +<g id="edge49" class="edge"> +<title>36->17</title> +<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M327.9567,-650.0941C314.7473,-622.8634 292.5,-569.8923 292.5,-522 292.5,-522 292.5,-522 292.5,-378 292.5,-337.1184 290.5164,-323.0856 311.5,-288 318.2711,-276.6784 328.2832,-266.5982 338.3879,-258.3019"/> +<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="340.6991,-260.9385 346.4513,-252.0412 336.4062,-255.4094 340.6991,-260.9385"/> +</g> +<!-- 36->31 --> +<g id="edge64" class="edge"> +<title>36->31</title> +<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M319.0796,-650.4784C294.6271,-624.5348 254.5,-574.0336 254.5,-522 254.5,-522 254.5,-522 254.5,-306 254.5,-265.2078 241.9874,-243.0737 272.5,-216 310.8481,-181.974 681.4824,-185.0552 732.5,-180 754.7947,-177.7909 778.9112,-175.052 801.1518,-172.3828"/> +<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="801.7182,-175.8399 811.2251,-171.1635 800.877,-168.8906 801.7182,-175.8399"/> +</g> +<!-- 36->59 --> +<g id="edge106" class="edge"> +<title>36->59</title> +<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M413.6611,-652.4263C474.1098,-639.6688 558.0713,-621.9488 617.6412,-609.3767"/> +<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="618.6639,-612.7381 627.7256,-607.2484 617.2184,-605.8889 618.6639,-612.7381"/> </g> <!-- 37 --> -<g id="node38" class="node"><title>37</title> -<path fill="none" stroke="#d8cb56" stroke-width="2" d="M1926,-468C1926,-468 1896,-468 1896,-468 1890,-468 1884,-462 1884,-456 1884,-456 1884,-444 1884,-444 1884,-438 1890,-432 1896,-432 1896,-432 1926,-432 1926,-432 1932,-432 1938,-438 1938,-444 1938,-444 1938,-456 1938,-456 1938,-462 1932,-468 1926,-468"/> -<text text-anchor="middle" x="1911" y="-447.5" font-family="sans" font-size="10.00">alfa_qc</text> -</g> -<!-- 37->27 --> -<g id="edge52" class="edge"><title>37->27</title> -<path fill="none" stroke="grey" stroke-width="2" d="M1883.96,-436.009C1880.95,-434.629 1877.92,-433.268 1875,-432 1849.34,-420.843 1820.54,-409.251 1796.31,-399.763"/> -<polygon fill="grey" stroke="grey" stroke-width="2" points="1797.51,-396.475 1786.92,-396.102 1794.97,-402.997 1797.51,-396.475"/> +<g id="node38" class="node"> +<title>37</title> +<path fill="none" stroke="#88d856" stroke-width="2" d="M430,-324C430,-324 333,-324 333,-324 327,-324 321,-318 321,-312 321,-312 321,-300 321,-300 321,-294 327,-288 333,-288 333,-288 430,-288 430,-288 436,-288 442,-294 442,-300 442,-300 442,-312 442,-312 442,-318 436,-324 430,-324"/> +<text text-anchor="middle" x="381.5" y="-303.5" font-family="sans" font-size="10.00" fill="#000000">create_index_kallisto</text> +</g> +<!-- 37->17 --> +<g id="edge50" class="edge"> +<title>37->17</title> +<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M379.9859,-287.8314C379.3442,-280.131 378.5812,-270.9743 377.8681,-262.4166"/> +<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="381.3529,-262.088 377.0344,-252.4133 374.3771,-262.6694 381.3529,-262.088"/> +</g> +<!-- 37->18 --> +<g id="edge52" class="edge"> +<title>37->18</title> +<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M429.6974,-287.8314C455.6966,-278.0306 487.9536,-265.8709 515.2281,-255.5894"/> +<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="516.5266,-258.8404 524.6492,-252.038 514.0574,-252.2904 516.5266,-258.8404"/> </g> <!-- 38 --> -<g id="node39" class="node"><title>38</title> -<path fill="none" stroke="#d8cb56" stroke-width="2" d="M1757,-468C1757,-468 1727,-468 1727,-468 1721,-468 1715,-462 1715,-456 1715,-456 1715,-444 1715,-444 1715,-438 1721,-432 1727,-432 1727,-432 1757,-432 1757,-432 1763,-432 1769,-438 1769,-444 1769,-444 1769,-456 1769,-456 1769,-462 1763,-468 1757,-468"/> -<text text-anchor="middle" x="1742" y="-447.5" font-family="sans" font-size="10.00">alfa_qc</text> -</g> -<!-- 38->27 --> -<g id="edge53" class="edge"><title>38->27</title> -<path fill="none" stroke="grey" stroke-width="2" d="M1742,-431.697C1742,-423.983 1742,-414.712 1742,-406.112"/> -<polygon fill="grey" stroke="grey" stroke-width="2" points="1745.5,-406.104 1742,-396.104 1738.5,-406.104 1745.5,-406.104"/> +<g id="node39" class="node"> +<title>38</title> +<path fill="none" stroke="#c6d856" stroke-width="2" d="M577.5,-686.5C577.5,-686.5 467.5,-686.5 467.5,-686.5 461.5,-686.5 455.5,-680.5 455.5,-674.5 455.5,-674.5 455.5,-662.5 455.5,-662.5 455.5,-656.5 461.5,-650.5 467.5,-650.5 467.5,-650.5 577.5,-650.5 577.5,-650.5 583.5,-650.5 589.5,-656.5 589.5,-662.5 589.5,-662.5 589.5,-674.5 589.5,-674.5 589.5,-680.5 583.5,-686.5 577.5,-686.5"/> +<text text-anchor="middle" x="522.5" y="-666" font-family="sans" font-size="10.00" fill="#000000">remove_polya_cutadapt</text> +</g> +<!-- 38->18 --> +<g id="edge51" class="edge"> +<title>38->18</title> +<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M515.4552,-650.314C505.4964,-622.9252 488.5,-569.2591 488.5,-522 488.5,-522 488.5,-522 488.5,-450 488.5,-377.9986 454.9753,-351.1842 489.5,-288 496.3321,-275.4964 507.4404,-265.4289 519.3399,-257.5306"/> +<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="521.4015,-260.372 528.0945,-252.159 517.7406,-254.4056 521.4015,-260.372"/> +</g> +<!-- 38->32 --> +<g id="edge66" class="edge"> +<title>38->32</title> +<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M525.0999,-650.0328C530.2013,-618.2821 543.6371,-552.1246 572.5,-504 651.0069,-373.1014 700.9451,-352.0338 839.5,-288 883.5197,-267.6561 901.2938,-277.5667 942.5,-252 970.2007,-234.8129 996.2093,-207.9838 1013.4571,-188.0855"/> +<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="1016.2642,-190.187 1020.0688,-180.2988 1010.9283,-185.6562 1016.2642,-190.187"/> +</g> +<!-- 38->62 --> +<g id="edge109" class="edge"> +<title>38->62</title> +<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M589.5898,-661.0843C719.7521,-646.6969 1004.9461,-615.1732 1132.5611,-601.0674"/> +<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="1133.0212,-604.538 1142.5761,-599.9604 1132.2521,-597.5804 1133.0212,-604.538"/> </g> <!-- 39 --> -<g id="node40" class="node"><title>39</title> -<path fill="none" stroke="#5692d8" stroke-width="2" d="M1465.5,-684C1465.5,-684 1344.5,-684 1344.5,-684 1338.5,-684 1332.5,-678 1332.5,-672 1332.5,-672 1332.5,-660 1332.5,-660 1332.5,-654 1338.5,-648 1344.5,-648 1344.5,-648 1465.5,-648 1465.5,-648 1471.5,-648 1477.5,-654 1477.5,-660 1477.5,-660 1477.5,-672 1477.5,-672 1477.5,-678 1471.5,-684 1465.5,-684"/> -<text text-anchor="middle" x="1405" y="-663.5" font-family="sans" font-size="10.00">extract_transcripts_as_bed12</text> +<g id="node40" class="node"> +<title>39</title> +<path fill="none" stroke="#56c1d8" stroke-width="2" d="M820,-396C820,-396 737,-396 737,-396 731,-396 725,-390 725,-384 725,-384 725,-372 725,-372 725,-366 731,-360 737,-360 737,-360 820,-360 820,-360 826,-360 832,-366 832,-372 832,-372 832,-384 832,-384 832,-390 826,-396 820,-396"/> +<text text-anchor="middle" x="778.5" y="-375.5" font-family="sans" font-size="10.00" fill="#000000">merge_TIN_scores</text> </g> -<!-- 39->31 --> -<g id="edge56" class="edge"><title>39->31</title> -<path fill="none" stroke="grey" stroke-width="2" d="M1436.8,-647.876C1454.11,-638.554 1475.72,-626.919 1494.26,-616.939"/> -<polygon fill="grey" stroke="grey" stroke-width="2" points="1495.93,-620.012 1503.08,-612.19 1492.61,-613.849 1495.93,-620.012"/> +<!-- 39->19 --> +<g id="edge53" class="edge"> +<title>39->19</title> +<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M769.979,-359.9555C752.0915,-322.0762 710.5386,-234.0818 689.3794,-189.274"/> +<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="692.5035,-187.693 685.0685,-180.1451 686.1737,-190.6821 692.5035,-187.693"/> </g> -<!-- 39->32 --> -<g id="edge59" class="edge"><title>39->32</title> -<path fill="none" stroke="grey" stroke-width="2" d="M1405,-647.697C1405,-639.983 1405,-630.712 1405,-622.112"/> -<polygon fill="grey" stroke="grey" stroke-width="2" points="1408.5,-622.104 1405,-612.104 1401.5,-622.104 1408.5,-622.104"/> +<!-- 40 --> +<g id="node41" class="node"> +<title>40</title> +<path fill="none" stroke="#56b1d8" stroke-width="2" d="M1260.5,-252C1260.5,-252 1168.5,-252 1168.5,-252 1162.5,-252 1156.5,-246 1156.5,-240 1156.5,-240 1156.5,-228 1156.5,-228 1156.5,-222 1162.5,-216 1168.5,-216 1168.5,-216 1260.5,-216 1260.5,-216 1266.5,-216 1272.5,-222 1272.5,-228 1272.5,-228 1272.5,-240 1272.5,-240 1272.5,-246 1266.5,-252 1260.5,-252"/> +<text text-anchor="middle" x="1214.5" y="-231.5" font-family="sans" font-size="10.00" fill="#000000">alfa_qc_all_samples</text> </g> -<!-- 40->33 --> -<g id="edge60" class="edge"><title>40->33</title> -<path fill="none" stroke="grey" stroke-width="2" d="M966.36,-503.697C961.873,-495.644 956.441,-485.894 951.476,-476.982"/> -<polygon fill="grey" stroke="grey" stroke-width="2" points="954.454,-475.137 946.53,-468.104 948.339,-478.544 954.454,-475.137"/> +<!-- 40->20 --> +<g id="edge54" class="edge"> +<title>40->20</title> +<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M1253.3607,-215.8314C1273.7742,-206.2874 1298.9723,-194.5065 1320.586,-184.4013"/> +<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="1322.3423,-187.4439 1329.9187,-180.038 1319.3775,-181.1027 1322.3423,-187.4439"/> </g> <!-- 41 --> -<g id="node42" class="node"><title>41</title> -<path fill="none" stroke="#d8ac56" stroke-width="2" d="M848.5,-540C848.5,-540 747.5,-540 747.5,-540 741.5,-540 735.5,-534 735.5,-528 735.5,-528 735.5,-516 735.5,-516 735.5,-510 741.5,-504 747.5,-504 747.5,-504 848.5,-504 848.5,-504 854.5,-504 860.5,-510 860.5,-516 860.5,-516 860.5,-528 860.5,-528 860.5,-534 854.5,-540 848.5,-540"/> -<text text-anchor="middle" x="798" y="-525" font-family="sans" font-size="10.00">extract_decoys_salmon</text> -<text text-anchor="middle" x="798" y="-514" font-family="sans" font-size="10.00">organism: homo_sapiens</text> -</g> -<!-- 41->33 --> -<g id="edge61" class="edge"><title>41->33</title> -<path fill="none" stroke="grey" stroke-width="2" d="M832.003,-503.876C850.598,-494.512 873.827,-482.814 893.706,-472.803"/> -<polygon fill="grey" stroke="grey" stroke-width="2" points="895.509,-475.814 902.866,-468.19 892.36,-469.562 895.509,-475.814"/> -</g> -<!-- 42->35 --> -<g id="edge62" class="edge"><title>42->35</title> -<path fill="none" stroke="grey" stroke-width="2" d="M2115.98,-503.876C2096.07,-493.557 2070.71,-480.403 2050.25,-469.797"/> -<polygon fill="grey" stroke="grey" stroke-width="2" points="2051.73,-466.619 2041.24,-465.123 2048.5,-472.833 2051.73,-466.619"/> -</g> -<!-- 43->35 --> -<g id="edge63" class="edge"><title>43->35</title> -<path fill="none" stroke="grey" stroke-width="2" d="M2014,-503.697C2014,-495.983 2014,-486.712 2014,-478.112"/> -<polygon fill="grey" stroke="grey" stroke-width="2" points="2017.5,-478.104 2014,-468.104 2010.5,-478.104 2017.5,-478.104"/> -</g> -<!-- 43->36 --> -<g id="edge65" class="edge"><title>43->36</title> -<path fill="none" stroke="grey" stroke-width="2" d="M1966.67,-503.982C1941.84,-494.818 1910.78,-482.99 1875.56,-468.1"/> -<polygon fill="grey" stroke="grey" stroke-width="2" points="1876.6,-464.736 1866.03,-464.035 1873.85,-471.176 1876.6,-464.736"/> -</g> -<!-- 43->37 --> -<g id="edge67" class="edge"><title>43->37</title> -<path fill="none" stroke="grey" stroke-width="2" d="M1988.8,-503.876C1975.59,-494.893 1959.21,-483.763 1944.89,-474.034"/> -<polygon fill="grey" stroke="grey" stroke-width="2" points="1946.53,-470.916 1936.29,-468.19 1942.6,-476.705 1946.53,-470.916"/> -</g> -<!-- 43->38 --> -<g id="edge69" class="edge"><title>43->38</title> -<path fill="none" stroke="grey" stroke-width="2" d="M1961.79,-506.316C1958.82,-505.522 1955.87,-504.745 1953,-504 1886.63,-486.794 1869.37,-485.206 1803,-468 1795.22,-465.982 1786.9,-463.73 1779,-461.543"/> -<polygon fill="grey" stroke="grey" stroke-width="2" points="1779.85,-458.145 1769.27,-458.828 1777.96,-464.887 1779.85,-458.145"/> -</g> -<!-- 44->36 --> -<g id="edge64" class="edge"><title>44->36</title> -<path fill="none" stroke="grey" stroke-width="2" d="M1757.42,-503.876C1771.41,-494.808 1788.78,-483.552 1803.89,-473.759"/> -<polygon fill="grey" stroke="grey" stroke-width="2" points="1805.99,-476.566 1812.48,-468.19 1802.18,-470.692 1805.99,-476.566"/> -</g> -<!-- 45->37 --> -<g id="edge66" class="edge"><title>45->37</title> -<path fill="none" stroke="grey" stroke-width="2" d="M1886.91,-503.697C1890.55,-495.728 1894.95,-486.1 1898.99,-477.264"/> -<polygon fill="grey" stroke="grey" stroke-width="2" points="1902.21,-478.654 1903.18,-468.104 1895.84,-475.744 1902.21,-478.654"/> -</g> -<!-- 46->38 --> -<g id="edge68" class="edge"><title>46->38</title> -<path fill="none" stroke="grey" stroke-width="2" d="M1621.9,-503.876C1647.49,-492.607 1680.77,-477.957 1705.8,-466.936"/> -<polygon fill="grey" stroke="grey" stroke-width="2" points="1707.22,-470.138 1714.96,-462.905 1704.4,-463.731 1707.22,-470.138"/> +<g id="node42" class="node"> +<title>41</title> +<path fill="none" stroke="#56b1d8" stroke-width="2" d="M1394.5,-252C1394.5,-252 1302.5,-252 1302.5,-252 1296.5,-252 1290.5,-246 1290.5,-240 1290.5,-240 1290.5,-228 1290.5,-228 1290.5,-222 1296.5,-216 1302.5,-216 1302.5,-216 1394.5,-216 1394.5,-216 1400.5,-216 1406.5,-222 1406.5,-228 1406.5,-228 1406.5,-240 1406.5,-240 1406.5,-246 1400.5,-252 1394.5,-252"/> +<text text-anchor="middle" x="1348.5" y="-231.5" font-family="sans" font-size="10.00" fill="#000000">alfa_qc_all_samples</text> +</g> +<!-- 41->20 --> +<g id="edge55" class="edge"> +<title>41->20</title> +<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M1353.5468,-215.8314C1355.7094,-208.0463 1358.2853,-198.7729 1360.6848,-190.1347"/> +<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="1364.081,-190.9852 1363.3852,-180.4133 1357.3364,-189.1117 1364.081,-190.9852"/> +</g> +<!-- 42 --> +<g id="node43" class="node"> +<title>42</title> +<path fill="none" stroke="#56d87b" stroke-width="2" d="M1022.5,-396C1022.5,-396 900.5,-396 900.5,-396 894.5,-396 888.5,-390 888.5,-384 888.5,-384 888.5,-372 888.5,-372 888.5,-366 894.5,-360 900.5,-360 900.5,-360 1022.5,-360 1022.5,-360 1028.5,-360 1034.5,-366 1034.5,-372 1034.5,-372 1034.5,-384 1034.5,-384 1034.5,-390 1028.5,-396 1022.5,-396"/> +<text text-anchor="middle" x="961.5" y="-381" font-family="sans" font-size="10.00" fill="#000000">rename_star_rpm_for_alfa</text> +<text text-anchor="middle" x="961.5" y="-370" font-family="sans" font-size="10.00" fill="#000000">unique: Unique</text> +</g> +<!-- 42->22 --> +<g id="edge56" class="edge"> +<title>42->22</title> +<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M944.3407,-359.8314C936.3489,-351.3694 926.6962,-341.1489 917.9584,-331.8971"/> +<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="920.3011,-329.2802 910.8903,-324.4133 915.212,-334.0866 920.3011,-329.2802"/> +</g> +<!-- 42->25 --> +<g id="edge58" class="edge"> +<title>42->25</title> +<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M989.7623,-359.8314C1003.9552,-350.7074 1021.3282,-339.539 1036.5636,-329.7449"/> +<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="1038.7276,-332.5146 1045.2467,-324.1628 1034.9422,-326.6263 1038.7276,-332.5146"/> +</g> +<!-- 52 --> +<g id="node53" class="node"> +<title>52</title> +<path fill="none" stroke="#d8bc56" stroke-width="2" d="M998.5,-324C998.5,-324 968.5,-324 968.5,-324 962.5,-324 956.5,-318 956.5,-312 956.5,-312 956.5,-300 956.5,-300 956.5,-294 962.5,-288 968.5,-288 968.5,-288 998.5,-288 998.5,-288 1004.5,-288 1010.5,-294 1010.5,-300 1010.5,-300 1010.5,-312 1010.5,-312 1010.5,-318 1004.5,-324 998.5,-324"/> +<text text-anchor="middle" x="983.5" y="-303.5" font-family="sans" font-size="10.00" fill="#000000">alfa_qc</text> +</g> +<!-- 42->52 --> +<g id="edge92" class="edge"> +<title>42->52</title> +<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M967.0515,-359.8314C969.4303,-352.0463 972.2638,-342.7729 974.9033,-334.1347"/> +<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="978.2987,-334.9996 977.8737,-324.4133 971.6042,-332.954 978.2987,-334.9996"/> +</g> +<!-- 43 --> +<g id="node44" class="node"> +<title>43</title> +<path fill="none" stroke="#56d87b" stroke-width="2" d="M1186.5,-396C1186.5,-396 1064.5,-396 1064.5,-396 1058.5,-396 1052.5,-390 1052.5,-384 1052.5,-384 1052.5,-372 1052.5,-372 1052.5,-366 1058.5,-360 1064.5,-360 1064.5,-360 1186.5,-360 1186.5,-360 1192.5,-360 1198.5,-366 1198.5,-372 1198.5,-372 1198.5,-384 1198.5,-384 1198.5,-390 1192.5,-396 1186.5,-396"/> +<text text-anchor="middle" x="1125.5" y="-381" font-family="sans" font-size="10.00" fill="#000000">rename_star_rpm_for_alfa</text> +<text text-anchor="middle" x="1125.5" y="-370" font-family="sans" font-size="10.00" fill="#000000">unique: UniqueMultiple</text> +</g> +<!-- 43->24 --> +<g id="edge57" class="edge"> +<title>43->24</title> +<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M1139.6312,-359.8314C1146.0811,-351.5386 1153.8445,-341.557 1160.9252,-332.4533"/> +<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="1163.8019,-334.4556 1167.1786,-324.4133 1158.2764,-330.158 1163.8019,-334.4556"/> +</g> +<!-- 43->26 --> +<g id="edge59" class="edge"> +<title>43->26</title> +<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M1198.6501,-361.1192C1254.8791,-348.1433 1331.3385,-330.4988 1382.4526,-318.7032"/> +<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="1383.3671,-322.0843 1392.324,-316.4252 1381.793,-315.2635 1383.3671,-322.0843"/> +</g> +<!-- 54 --> +<g id="node55" class="node"> +<title>54</title> +<path fill="none" stroke="#d8bc56" stroke-width="2" d="M1286.5,-324C1286.5,-324 1256.5,-324 1256.5,-324 1250.5,-324 1244.5,-318 1244.5,-312 1244.5,-312 1244.5,-300 1244.5,-300 1244.5,-294 1250.5,-288 1256.5,-288 1256.5,-288 1286.5,-288 1286.5,-288 1292.5,-288 1298.5,-294 1298.5,-300 1298.5,-300 1298.5,-312 1298.5,-312 1298.5,-318 1292.5,-324 1286.5,-324"/> +<text text-anchor="middle" x="1271.5" y="-303.5" font-family="sans" font-size="10.00" fill="#000000">alfa_qc</text> +</g> +<!-- 43->54 --> +<g id="edge96" class="edge"> +<title>43->54</title> +<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M1162.4507,-359.9439C1181.8115,-350.4643 1206.1139,-338.536 1235.2027,-324.1337"/> +<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="1236.9773,-327.1606 1244.3838,-319.5846 1233.8694,-320.8883 1236.9773,-327.1606"/> +</g> +<!-- 44 --> +<g id="node45" class="node"> +<title>44</title> +<path fill="none" stroke="#56d87b" stroke-width="2" d="M1891.5,-396C1891.5,-396 1769.5,-396 1769.5,-396 1763.5,-396 1757.5,-390 1757.5,-384 1757.5,-384 1757.5,-372 1757.5,-372 1757.5,-366 1763.5,-360 1769.5,-360 1769.5,-360 1891.5,-360 1891.5,-360 1897.5,-360 1903.5,-366 1903.5,-372 1903.5,-372 1903.5,-384 1903.5,-384 1903.5,-390 1897.5,-396 1891.5,-396"/> +<text text-anchor="middle" x="1830.5" y="-381" font-family="sans" font-size="10.00" fill="#000000">rename_star_rpm_for_alfa</text> +<text text-anchor="middle" x="1830.5" y="-370" font-family="sans" font-size="10.00" fill="#000000">unique: Unique</text> +</g> +<!-- 44->27 --> +<g id="edge60" class="edge"> +<title>44->27</title> +<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M1824.1914,-359.8314C1821.4883,-352.0463 1818.2684,-342.7729 1815.269,-334.1347"/> +<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="1818.48,-332.7119 1811.8935,-324.4133 1811.8673,-335.0081 1818.48,-332.7119"/> +</g> +<!-- 44->29 --> +<g id="edge62" class="edge"> +<title>44->29</title> +<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M1878.9497,-359.8314C1905.9795,-349.6952 1939.7376,-337.0359 1967.7249,-326.5407"/> +<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="1969.2289,-329.7147 1977.3632,-322.9263 1966.771,-323.1604 1969.2289,-329.7147"/> +</g> +<!-- 53 --> +<g id="node54" class="node"> +<title>53</title> +<path fill="none" stroke="#d8bc56" stroke-width="2" d="M1542.5,-324C1542.5,-324 1512.5,-324 1512.5,-324 1506.5,-324 1500.5,-318 1500.5,-312 1500.5,-312 1500.5,-300 1500.5,-300 1500.5,-294 1506.5,-288 1512.5,-288 1512.5,-288 1542.5,-288 1542.5,-288 1548.5,-288 1554.5,-294 1554.5,-300 1554.5,-300 1554.5,-312 1554.5,-312 1554.5,-318 1548.5,-324 1542.5,-324"/> +<text text-anchor="middle" x="1527.5" y="-303.5" font-family="sans" font-size="10.00" fill="#000000">alfa_qc</text> +</g> +<!-- 44->53 --> +<g id="edge94" class="edge"> +<title>44->53</title> +<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M1757.4501,-368.5501C1705.4431,-360.6099 1634.0877,-347.2475 1564.4994,-323.8908"/> +<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="1565.2888,-320.4614 1554.6942,-320.5282 1563.018,-327.0829 1565.2888,-320.4614"/> +</g> +<!-- 45 --> +<g id="node46" class="node"> +<title>45</title> +<path fill="none" stroke="#56d87b" stroke-width="2" d="M2055.5,-396C2055.5,-396 1933.5,-396 1933.5,-396 1927.5,-396 1921.5,-390 1921.5,-384 1921.5,-384 1921.5,-372 1921.5,-372 1921.5,-366 1927.5,-360 1933.5,-360 1933.5,-360 2055.5,-360 2055.5,-360 2061.5,-360 2067.5,-366 2067.5,-372 2067.5,-372 2067.5,-384 2067.5,-384 2067.5,-390 2061.5,-396 2055.5,-396"/> +<text text-anchor="middle" x="1994.5" y="-381" font-family="sans" font-size="10.00" fill="#000000">rename_star_rpm_for_alfa</text> +<text text-anchor="middle" x="1994.5" y="-370" font-family="sans" font-size="10.00" fill="#000000">unique: UniqueMultiple</text> +</g> +<!-- 45->28 --> +<g id="edge61" class="edge"> +<title>45->28</title> +<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M2047.7229,-359.9243C2079.402,-349.1654 2119.5245,-335.5388 2151.5103,-324.6757"/> +<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="2152.8141,-327.9294 2161.1574,-321.3994 2150.563,-321.3012 2152.8141,-327.9294"/> +</g> +<!-- 45->30 --> +<g id="edge63" class="edge"> +<title>45->30</title> +<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M1974.3126,-359.8314C1964.6486,-351.1337 1952.9204,-340.5783 1942.4184,-331.1265"/> +<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="1944.4553,-328.251 1934.6809,-324.1628 1939.7725,-333.454 1944.4553,-328.251"/> +</g> +<!-- 55 --> +<g id="node56" class="node"> +<title>55</title> +<path fill="none" stroke="#d8bc56" stroke-width="2" d="M1614.5,-324C1614.5,-324 1584.5,-324 1584.5,-324 1578.5,-324 1572.5,-318 1572.5,-312 1572.5,-312 1572.5,-300 1572.5,-300 1572.5,-294 1578.5,-288 1584.5,-288 1584.5,-288 1614.5,-288 1614.5,-288 1620.5,-288 1626.5,-294 1626.5,-300 1626.5,-300 1626.5,-312 1626.5,-312 1626.5,-318 1620.5,-324 1614.5,-324"/> +<text text-anchor="middle" x="1599.5" y="-303.5" font-family="sans" font-size="10.00" fill="#000000">alfa_qc</text> +</g> +<!-- 45->55 --> +<g id="edge98" class="edge"> +<title>45->55</title> +<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M1921.2166,-361.7413C1918.2748,-361.1432 1915.3606,-360.5604 1912.5,-360 1813.2092,-340.5476 1695.4586,-321.2394 1636.7158,-311.8616"/> +<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="1637.2156,-308.3971 1626.7897,-310.2819 1636.1154,-315.3101 1637.2156,-308.3971"/> +</g> +<!-- 46->31 --> +<g id="edge65" class="edge"> +<title>46->31</title> +<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M875.0234,-215.8314C876.0929,-208.131 877.3647,-198.9743 878.5532,-190.4166"/> +<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="882.0336,-190.7997 879.9426,-180.4133 875.1001,-189.8367 882.0336,-190.7997"/> +</g> +<!-- 46->32 --> +<g id="edge67" class="edge"> +<title>46->32</title> +<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M913.3794,-215.8314C935.046,-206.2018 961.8363,-194.295 984.7078,-184.1299"/> +<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="986.1979,-187.2978 993.9145,-180.038 983.3549,-180.9011 986.1979,-187.2978"/> +</g> +<!-- 47->36 --> +<g id="edge68" class="edge"> +<title>47->36</title> +<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M337.5,-724.9656C337.5,-716.5178 337.5,-706.2542 337.5,-696.8064"/> +<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="341.0001,-696.6265 337.5,-686.6265 334.0001,-696.6265 341.0001,-696.6265"/> +</g> +<!-- 48 --> +<g id="node49" class="node"> +<title>48</title> +<path fill="none" stroke="#56d89a" stroke-width="2" d="M448,-396C448,-396 333,-396 333,-396 327,-396 321,-390 321,-384 321,-384 321,-372 321,-372 321,-366 327,-360 333,-360 333,-360 448,-360 448,-360 454,-360 460,-366 460,-372 460,-372 460,-384 460,-384 460,-390 454,-396 448,-396"/> +<text text-anchor="middle" x="390.5" y="-381" font-family="sans" font-size="10.00" fill="#000000">extract_transcriptome</text> +<text text-anchor="middle" x="390.5" y="-370" font-family="sans" font-size="10.00" fill="#000000">organism: homo_sapiens</text> +</g> +<!-- 48->37 --> +<g id="edge69" class="edge"> +<title>48->37</title> +<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M388.2289,-359.8314C387.2664,-352.131 386.1218,-342.9743 385.0521,-334.4166"/> +<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="388.5151,-333.9019 383.8017,-324.4133 381.5691,-334.7702 388.5151,-333.9019"/> +</g> +<!-- 58 --> +<g id="node59" class="node"> +<title>58</title> +<path fill="none" stroke="#5692d8" stroke-width="2" d="M704.5,-324C704.5,-324 510.5,-324 510.5,-324 504.5,-324 498.5,-318 498.5,-312 498.5,-312 498.5,-300 498.5,-300 498.5,-294 504.5,-288 510.5,-288 510.5,-288 704.5,-288 704.5,-288 710.5,-288 716.5,-294 716.5,-300 716.5,-300 716.5,-312 716.5,-312 716.5,-318 710.5,-324 704.5,-324"/> +<text text-anchor="middle" x="607.5" y="-303.5" font-family="sans" font-size="10.00" fill="#000000">concatenate_transcriptome_and_genome</text> +</g> +<!-- 48->58 --> +<g id="edge104" class="edge"> +<title>48->58</title> +<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M444.9782,-359.9243C474.9013,-349.9959 512.1843,-337.6255 543.4904,-327.2382"/> +<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="544.6104,-330.5543 552.9994,-324.0831 542.406,-323.9104 544.6104,-330.5543"/> +</g> +<!-- 49->38 --> +<g id="edge70" class="edge"> +<title>49->38</title> +<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M520.9841,-724.9656C521.2109,-716.5178 521.4865,-706.2542 521.7401,-696.8064"/> +<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="525.2437,-696.7169 522.0134,-686.6265 518.2462,-696.5289 525.2437,-696.7169"/> +</g> +<!-- 50 --> +<g id="node51" class="node"> +<title>50</title> +<path fill="none" stroke="#d6d856" stroke-width="2" d="M859,-468C859,-468 764,-468 764,-468 758,-468 752,-462 752,-456 752,-456 752,-444 752,-444 752,-438 758,-432 764,-432 764,-432 859,-432 859,-432 865,-432 871,-438 871,-444 871,-444 871,-456 871,-456 871,-462 865,-468 859,-468"/> +<text text-anchor="middle" x="811.5" y="-447.5" font-family="sans" font-size="10.00" fill="#000000">calculate_TIN_scores</text> +</g> +<!-- 50->39 --> +<g id="edge71" class="edge"> +<title>50->39</title> +<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M803.1727,-431.8314C799.527,-423.8771 795.1691,-414.369 791.1373,-405.5723"/> +<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="794.2877,-404.0456 786.9394,-396.4133 787.9243,-406.9622 794.2877,-404.0456"/> +</g> +<!-- 51 --> +<g id="node52" class="node"> +<title>51</title> +<path fill="none" stroke="#d6d856" stroke-width="2" d="M1015,-468C1015,-468 920,-468 920,-468 914,-468 908,-462 908,-456 908,-456 908,-444 908,-444 908,-438 914,-432 920,-432 920,-432 1015,-432 1015,-432 1021,-432 1027,-438 1027,-444 1027,-444 1027,-456 1027,-456 1027,-462 1021,-468 1015,-468"/> +<text text-anchor="middle" x="967.5" y="-447.5" font-family="sans" font-size="10.00" fill="#000000">calculate_TIN_scores</text> +</g> +<!-- 51->39 --> +<g id="edge72" class="edge"> +<title>51->39</title> +<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M919.8073,-431.8314C894.1927,-422.0734 862.4398,-409.977 835.526,-399.7242"/> +<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="836.4406,-396.3273 825.8497,-396.038 833.9486,-402.8687 836.4406,-396.3273"/> +</g> +<!-- 52->40 --> +<g id="edge73" class="edge"> +<title>52->40</title> +<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M1010.7706,-291.6816C1013.6832,-290.3585 1016.63,-289.1029 1019.5,-288 1025.7027,-285.6163 1092.7135,-267.1809 1146.473,-252.5042"/> +<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="1147.6133,-255.8211 1156.3393,-249.8122 1145.7706,-249.068 1147.6133,-255.8211"/> +</g> +<!-- 53->40 --> +<g id="edge74" class="edge"> +<title>53->40</title> +<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M1500.3358,-291.3825C1497.4025,-290.1177 1494.4217,-288.9576 1491.5,-288 1404.5027,-259.487 1375.8885,-271.4378 1282.3915,-252.0524"/> +<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="1283.0348,-248.6109 1272.5239,-249.9413 1281.5703,-255.456 1283.0348,-248.6109"/> +</g> +<!-- 54->41 --> +<g id="edge75" class="edge"> +<title>54->41</title> +<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M1290.9304,-287.8314C1300.232,-279.1337 1311.5204,-268.5783 1321.6286,-259.1265"/> +<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="1324.1621,-261.5493 1329.0759,-252.1628 1319.3811,-256.4363 1324.1621,-261.5493"/> +</g> +<!-- 55->41 --> +<g id="edge76" class="edge"> +<title>55->41</title> +<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M1572.2628,-291.5928C1569.3437,-290.287 1566.3862,-289.0598 1563.5,-288 1500.3582,-264.8147 1481.6817,-268.6069 1416.5,-252 1416.4001,-251.9746 1416.3002,-251.9491 1416.2002,-251.9236"/> +<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="1417.2765,-248.5865 1406.72,-249.4873 1415.5342,-255.3662 1417.2765,-248.5865"/> +</g> +<!-- 56 --> +<g id="node57" class="node"> +<title>56</title> +<path fill="none" stroke="#78d856" stroke-width="2" d="M712.5,-468C712.5,-468 676.5,-468 676.5,-468 670.5,-468 664.5,-462 664.5,-456 664.5,-456 664.5,-444 664.5,-444 664.5,-438 670.5,-432 676.5,-432 676.5,-432 712.5,-432 712.5,-432 718.5,-432 724.5,-438 724.5,-444 724.5,-444 724.5,-456 724.5,-456 724.5,-462 718.5,-468 712.5,-468"/> +<text text-anchor="middle" x="694.5" y="-447.5" font-family="sans" font-size="10.00" fill="#000000">star_rpm</text> +</g> +<!-- 56->42 --> +<g id="edge77" class="edge"> +<title>56->42</title> +<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M724.6451,-438.3401C730.8393,-436.11 737.348,-433.8857 743.5,-432 787.5825,-418.4876 837.4538,-405.9367 878.3604,-396.342"/> +<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="879.3424,-399.7071 888.2879,-394.0301 877.7546,-392.8895 879.3424,-399.7071"/> +</g> +<!-- 56->43 --> +<g id="edge78" class="edge"> +<title>56->43</title> +<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M724.7438,-437.648C730.8728,-435.4989 737.3315,-433.4817 743.5,-432 870.8879,-401.4011 909.2319,-417.5833 1042.0957,-396.1293"/> +<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="1042.9576,-399.5343 1052.2509,-394.4466 1041.8133,-392.6285 1042.9576,-399.5343"/> +</g> +<!-- 57 --> +<g id="node58" class="node"> +<title>57</title> +<path fill="none" stroke="#78d856" stroke-width="2" d="M1827.5,-468C1827.5,-468 1791.5,-468 1791.5,-468 1785.5,-468 1779.5,-462 1779.5,-456 1779.5,-456 1779.5,-444 1779.5,-444 1779.5,-438 1785.5,-432 1791.5,-432 1791.5,-432 1827.5,-432 1827.5,-432 1833.5,-432 1839.5,-438 1839.5,-444 1839.5,-444 1839.5,-456 1839.5,-456 1839.5,-462 1833.5,-468 1827.5,-468"/> +<text text-anchor="middle" x="1809.5" y="-447.5" font-family="sans" font-size="10.00" fill="#000000">star_rpm</text> +</g> +<!-- 57->44 --> +<g id="edge79" class="edge"> +<title>57->44</title> +<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M1814.7992,-431.8314C1817.0698,-424.0463 1819.7746,-414.7729 1822.294,-406.1347"/> +<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="1825.6894,-406.9933 1825.1295,-396.4133 1818.9694,-405.0332 1825.6894,-406.9933"/> +</g> +<!-- 57->45 --> +<g id="edge80" class="edge"> +<title>57->45</title> +<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M1839.6352,-438.2717C1866.3801,-427.8629 1906.1449,-412.3869 1938.6831,-399.7234"/> +<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="1940.0384,-402.9517 1948.0881,-396.063 1937.4996,-396.4283 1940.0384,-402.9517"/> +</g> +<!-- 58->46 --> +<g id="edge81" class="edge"> +<title>58->46</title> +<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M674.0286,-287.9243C713.0381,-277.3255 762.2902,-263.9438 801.9712,-253.1626"/> +<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="803.1088,-256.4804 811.8413,-250.4809 801.2734,-249.7253 803.1088,-256.4804"/> +</g> +<!-- 59->50 --> +<g id="edge86" class="edge"> +<title>59->50</title> +<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M750.1542,-575.8878C767.9524,-567.6652 785.8109,-556.0701 797.5,-540 810.3897,-522.2794 813.427,-497.3723 813.5014,-478.2512"/> +<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="816.9956,-477.9509 813.2685,-468.0333 809.9974,-478.1105 816.9956,-477.9509"/> +</g> +<!-- 59->56 --> +<g id="edge100" class="edge"> +<title>59->56</title> +<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M627.9397,-576.2456C610.5375,-568.1131 593.6429,-556.4803 583.5,-540 575.1137,-526.3739 575.0145,-517.5645 583.5,-504 599.0019,-479.2196 629.4944,-465.516 654.6033,-458.1202"/> +<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="655.5357,-461.4939 664.2702,-455.4973 653.7026,-454.7381 655.5357,-461.4939"/> +</g> +<!-- 60 --> +<g id="node61" class="node"> +<title>60</title> +<path fill="none" stroke="#56d0d8" stroke-width="2" d="M776.5,-540C776.5,-540 604.5,-540 604.5,-540 598.5,-540 592.5,-534 592.5,-528 592.5,-528 592.5,-516 592.5,-516 592.5,-510 598.5,-504 604.5,-504 604.5,-504 776.5,-504 776.5,-504 782.5,-504 788.5,-510 788.5,-516 788.5,-516 788.5,-528 788.5,-528 788.5,-534 782.5,-540 776.5,-540"/> +<text text-anchor="middle" x="690.5" y="-525" font-family="sans" font-size="10.00" fill="#000000">index_genomic_alignment_samtools</text> +<text text-anchor="middle" x="690.5" y="-514" font-family="sans" font-size="10.00" fill="#000000">seqmode: pe</text> +</g> +<!-- 59->60 --> +<g id="edge107" class="edge"> +<title>59->60</title> +<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M690.5,-575.8314C690.5,-568.131 690.5,-558.9743 690.5,-550.4166"/> +<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="694.0001,-550.4132 690.5,-540.4133 687.0001,-550.4133 694.0001,-550.4132"/> +</g> +<!-- 60->50 --> +<g id="edge87" class="edge"> +<title>60->50</title> +<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M721.0334,-503.8314C736.5101,-494.6221 755.4869,-483.3301 772.0563,-473.4706"/> +<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="774.1724,-476.2843 780.9764,-468.1628 770.5929,-470.2687 774.1724,-476.2843"/> +</g> +<!-- 60->56 --> +<g id="edge101" class="edge"> +<title>60->56</title> +<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M691.5094,-503.8314C691.9372,-496.131 692.4459,-486.9743 692.9213,-478.4166"/> +<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="696.4169,-478.592 693.477,-468.4133 689.4276,-478.2037 696.4169,-478.592"/> +</g> +<!-- 61 --> +<g id="node62" class="node"> +<title>61</title> +<path fill="none" stroke="#b6d856" stroke-width="2" d="M992.5,-540C992.5,-540 856.5,-540 856.5,-540 850.5,-540 844.5,-534 844.5,-528 844.5,-528 844.5,-516 844.5,-516 844.5,-510 850.5,-504 856.5,-504 856.5,-504 992.5,-504 992.5,-504 998.5,-504 1004.5,-510 1004.5,-516 1004.5,-516 1004.5,-528 1004.5,-528 1004.5,-534 998.5,-540 992.5,-540"/> +<text text-anchor="middle" x="924.5" y="-519.5" font-family="sans" font-size="10.00" fill="#000000">extract_transcripts_as_bed12</text> +</g> +<!-- 61->50 --> +<g id="edge88" class="edge"> +<title>61->50</title> +<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M895.9853,-503.8314C881.6658,-494.7074 864.1376,-483.539 848.7662,-473.7449"/> +<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="850.3199,-470.5847 840.0055,-468.1628 846.5583,-476.4882 850.3199,-470.5847"/> +</g> +<!-- 61->51 --> +<g id="edge91" class="edge"> +<title>61->51</title> +<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M935.3507,-503.8314C940.2023,-495.7079 946.0217,-485.9637 951.368,-477.0118"/> +<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="954.3806,-478.7933 956.5032,-468.4133 948.3708,-475.2041 954.3806,-478.7933"/> +</g> +<!-- 62->51 --> +<g id="edge89" class="edge"> +<title>62->51</title> +<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M1156.7605,-575.9145C1136.2294,-566.0828 1111.0337,-553.2464 1089.5,-540 1056.8123,-519.8922 1021.7828,-493.4935 997.6832,-474.493"/> +<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="999.6442,-471.581 989.6364,-468.1033 995.2912,-477.0629 999.6442,-471.581"/> +</g> +<!-- 62->57 --> +<g id="edge102" class="edge"> +<title>62->57</title> +<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M1250.0946,-581.4101C1370.9279,-553.0251 1662.3719,-484.5619 1769.2964,-459.4442"/> +<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="1770.4165,-462.7765 1779.3511,-457.0823 1768.8157,-455.962 1770.4165,-462.7765"/> +</g> +<!-- 63 --> +<g id="node64" class="node"> +<title>63</title> +<path fill="none" stroke="#56d0d8" stroke-width="2" d="M1282.5,-540C1282.5,-540 1110.5,-540 1110.5,-540 1104.5,-540 1098.5,-534 1098.5,-528 1098.5,-528 1098.5,-516 1098.5,-516 1098.5,-510 1104.5,-504 1110.5,-504 1110.5,-504 1282.5,-504 1282.5,-504 1288.5,-504 1294.5,-510 1294.5,-516 1294.5,-516 1294.5,-528 1294.5,-528 1294.5,-534 1288.5,-540 1282.5,-540"/> +<text text-anchor="middle" x="1196.5" y="-525" font-family="sans" font-size="10.00" fill="#000000">index_genomic_alignment_samtools</text> +<text text-anchor="middle" x="1196.5" y="-514" font-family="sans" font-size="10.00" fill="#000000">seqmode: se</text> +</g> +<!-- 62->63 --> +<g id="edge110" class="edge"> +<title>62->63</title> +<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M1196.5,-575.8314C1196.5,-568.131 1196.5,-558.9743 1196.5,-550.4166"/> +<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="1200.0001,-550.4132 1196.5,-540.4133 1193.0001,-550.4133 1200.0001,-550.4132"/> +</g> +<!-- 63->51 --> +<g id="edge90" class="edge"> +<title>63->51</title> +<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M1139.0092,-503.9243C1107.2952,-493.9531 1067.7473,-481.5188 1034.6225,-471.104"/> +<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="1035.6038,-467.7437 1025.0144,-468.0831 1033.5042,-474.4214 1035.6038,-467.7437"/> +</g> +<!-- 63->57 --> +<g id="edge103" class="edge"> +<title>63->57</title> +<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M1294.6491,-510.4719C1431.573,-494.3895 1673.8386,-465.9341 1769.2647,-454.7258"/> +<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="1769.8407,-458.1823 1779.3641,-453.5396 1769.0241,-451.2301 1769.8407,-458.1823"/> +</g> +<!-- 64->52 --> +<g id="edge93" class="edge"> +<title>64->52</title> +<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M1216.4605,-362.1284C1213.4351,-361.3884 1210.4346,-360.6742 1207.5,-360 1127.6633,-341.6577 1101.9806,-350.5534 1020.3743,-323.8133"/> +<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="1021.2776,-320.4246 1010.6836,-320.5592 1019.0492,-327.0605 1021.2776,-320.4246"/> +</g> +<!-- 64->53 --> +<g id="edge95" class="edge"> +<title>64->53</title> +<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M1332.6487,-367.1573C1374.6163,-358.5136 1432.5569,-344.8987 1490.5717,-323.9614"/> +<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="1492.083,-327.1347 1500.2587,-320.3961 1489.6652,-320.5655 1492.083,-327.1347"/> +</g> +<!-- 64->54 --> +<g id="edge97" class="edge"> +<title>64->54</title> +<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M1273.743,-359.8314C1273.4221,-352.131 1273.0406,-342.9743 1272.684,-334.4166"/> +<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="1276.1806,-334.2589 1272.2672,-324.4133 1269.1867,-334.5503 1276.1806,-334.2589"/> +</g> +<!-- 64->55 --> +<g id="edge99" class="edge"> +<title>64->55</title> +<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M1332.7281,-371.9568C1389.7665,-364.9647 1478.925,-351.1687 1562.6653,-323.7981"/> +<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="1563.9451,-327.0608 1572.321,-320.5726 1561.7272,-320.4214 1563.9451,-327.0608"/> </g> </g> </svg> diff --git a/images/rule_graph.svg b/images/rule_graph.svg index c2634ec020a62da06b89678a633a96fd9ce35a55..79aa7491895e5db0636051a228a40e58c7a6d062 100644 --- a/images/rule_graph.svg +++ b/images/rule_graph.svg @@ -1,443 +1,553 @@ <?xml version="1.0" encoding="UTF-8" standalone="no"?> <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> -<!-- Generated by graphviz version 2.38.0 (20140413.2041) +<!-- Generated by graphviz version 2.40.1 (20161225.0304) --> <!-- Title: snakemake_dag Pages: 1 --> -<svg width="1146pt" height="908pt" - viewBox="0.00 0.00 1146.00 908.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> -<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 904)"> +<svg width="1145pt" height="836pt" + viewBox="0.00 0.00 1145.00 836.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> +<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 832)"> <title>snakemake_dag</title> -<polygon fill="white" stroke="none" points="-4,4 -4,-904 1142,-904 1142,4 -4,4"/> +<polygon fill="#ffffff" stroke="transparent" points="-4,4 -4,-832 1141,-832 1141,4 -4,4"/> <!-- 0 --> -<g id="node1" class="node"><title>0</title> -<path fill="none" stroke="#d8ac56" stroke-width="2" d="M487,-36C487,-36 457,-36 457,-36 451,-36 445,-30 445,-24 445,-24 445,-12 445,-12 445,-6 451,-0 457,-0 457,-0 487,-0 487,-0 493,-0 499,-6 499,-12 499,-12 499,-24 499,-24 499,-30 493,-36 487,-36"/> -<text text-anchor="middle" x="472" y="-15.5" font-family="sans" font-size="10.00">finish</text> +<g id="node1" class="node"> +<title>0</title> +<path fill="none" stroke="#d8ac56" stroke-width="2" d="M842,-36C842,-36 812,-36 812,-36 806,-36 800,-30 800,-24 800,-24 800,-12 800,-12 800,-6 806,0 812,0 812,0 842,0 842,0 848,0 854,-6 854,-12 854,-12 854,-24 854,-24 854,-30 848,-36 842,-36"/> +<text text-anchor="middle" x="827" y="-15.5" font-family="sans" font-size="10.00" fill="#000000">finish</text> </g> <!-- 1 --> -<g id="node2" class="node"><title>1</title> -<path fill="none" stroke="#97d856" stroke-width="2" d="M506,-108C506,-108 438,-108 438,-108 432,-108 426,-102 426,-96 426,-96 426,-84 426,-84 426,-78 432,-72 438,-72 438,-72 506,-72 506,-72 512,-72 518,-78 518,-84 518,-84 518,-96 518,-96 518,-102 512,-108 506,-108"/> -<text text-anchor="middle" x="472" y="-87.5" font-family="sans" font-size="10.00">MULTIQC_report</text> +<g id="node2" class="node"> +<title>1</title> +<path fill="none" stroke="#a7d856" stroke-width="2" d="M222,-108C222,-108 158,-108 158,-108 152,-108 146,-102 146,-96 146,-96 146,-84 146,-84 146,-78 152,-72 158,-72 158,-72 222,-72 222,-72 228,-72 234,-78 234,-84 234,-84 234,-96 234,-96 234,-102 228,-108 222,-108"/> +<text text-anchor="middle" x="190" y="-87.5" font-family="sans" font-size="10.00" fill="#000000">multiqc_report</text> </g> <!-- 1->0 --> -<g id="edge1" class="edge"><title>1->0</title> -<path fill="none" stroke="grey" stroke-width="2" d="M472,-71.6966C472,-63.9827 472,-54.7125 472,-46.1124"/> -<polygon fill="grey" stroke="grey" stroke-width="2" points="475.5,-46.1043 472,-36.1043 468.5,-46.1044 475.5,-46.1043"/> +<g id="edge1" class="edge"> +<title>1->0</title> +<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M234.0349,-85.0227C352.9825,-71.5781 679.2173,-34.7039 789.7865,-22.2062"/> +<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="790.2557,-25.6756 799.7993,-21.0745 789.4694,-18.7199 790.2557,-25.6756"/> </g> <!-- 2 --> -<g id="node3" class="node"><title>2</title> -<path fill="none" stroke="#56d88a" stroke-width="2" d="M521,-180C521,-180 423,-180 423,-180 417,-180 411,-174 411,-168 411,-168 411,-156 411,-156 411,-150 417,-144 423,-144 423,-144 521,-144 521,-144 527,-144 533,-150 533,-156 533,-156 533,-168 533,-168 533,-174 527,-180 521,-180"/> -<text text-anchor="middle" x="472" y="-159.5" font-family="sans" font-size="10.00">prepare_MultiQC_config</text> +<g id="node3" class="node"> +<title>2</title> +<path fill="none" stroke="#d6d856" stroke-width="2" d="M799.5,-252C799.5,-252 730.5,-252 730.5,-252 724.5,-252 718.5,-246 718.5,-240 718.5,-240 718.5,-228 718.5,-228 718.5,-222 724.5,-216 730.5,-216 730.5,-216 799.5,-216 799.5,-216 805.5,-216 811.5,-222 811.5,-228 811.5,-228 811.5,-240 811.5,-240 811.5,-246 805.5,-252 799.5,-252"/> +<text text-anchor="middle" x="765" y="-231.5" font-family="sans" font-size="10.00" fill="#000000">prepare_bigWig</text> </g> -<!-- 2->1 --> -<g id="edge2" class="edge"><title>2->1</title> -<path fill="none" stroke="grey" stroke-width="2" d="M472,-143.697C472,-135.983 472,-126.712 472,-118.112"/> -<polygon fill="grey" stroke="grey" stroke-width="2" points="475.5,-118.104 472,-108.104 468.5,-118.104 475.5,-118.104"/> +<!-- 2->0 --> +<g id="edge3" class="edge"> +<title>2->0</title> +<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M770.1794,-215.9555C781.0066,-178.235 806.0983,-90.8188 819.0089,-45.8399"/> +<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="822.3968,-46.7226 821.7917,-36.1451 815.6685,-44.7913 822.3968,-46.7226"/> </g> <!-- 3 --> -<g id="node4" class="node"><title>3</title> -<path fill="none" stroke="#88d856" stroke-width="2" d="M519.5,-252C519.5,-252 424.5,-252 424.5,-252 418.5,-252 412.5,-246 412.5,-240 412.5,-240 412.5,-228 412.5,-228 412.5,-222 418.5,-216 424.5,-216 424.5,-216 519.5,-216 519.5,-216 525.5,-216 531.5,-222 531.5,-228 531.5,-228 531.5,-240 531.5,-240 531.5,-246 525.5,-252 519.5,-252"/> -<text text-anchor="middle" x="472" y="-231.5" font-family="sans" font-size="10.00">prepare_files_for_report</text> +<g id="node4" class="node"> +<title>3</title> +<path fill="none" stroke="#d8bc56" stroke-width="2" d="M933,-468C933,-468 805,-468 805,-468 799,-468 793,-462 793,-456 793,-456 793,-444 793,-444 793,-438 799,-432 805,-432 805,-432 933,-432 933,-432 939,-432 945,-438 945,-444 945,-444 945,-456 945,-456 945,-462 939,-468 933,-468"/> +<text text-anchor="middle" x="869" y="-447.5" font-family="sans" font-size="10.00" fill="#000000">salmon_quantmerge_genes</text> </g> -<!-- 3->2 --> -<g id="edge3" class="edge"><title>3->2</title> -<path fill="none" stroke="grey" stroke-width="2" d="M472,-215.697C472,-207.983 472,-198.712 472,-190.112"/> -<polygon fill="grey" stroke="grey" stroke-width="2" points="475.5,-190.104 472,-180.104 468.5,-190.104 475.5,-190.104"/> +<!-- 3->0 --> +<g id="edge4" class="edge"> +<title>3->0</title> +<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M865.892,-431.8777C861.4984,-404.6417 854,-351.4948 854,-306 854,-306 854,-306 854,-162 854,-121.2235 843.4119,-75.0472 835.4967,-46.2247"/> +<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="838.8166,-45.1024 832.726,-36.4332 832.081,-47.0083 838.8166,-45.1024"/> </g> <!-- 4 --> -<g id="node5" class="node"><title>4</title> -<path fill="none" stroke="#5692d8" stroke-width="2" d="M89.5,-324C89.5,-324 54.5,-324 54.5,-324 48.5,-324 42.5,-318 42.5,-312 42.5,-312 42.5,-300 42.5,-300 42.5,-294 48.5,-288 54.5,-288 54.5,-288 89.5,-288 89.5,-288 95.5,-288 101.5,-294 101.5,-300 101.5,-300 101.5,-312 101.5,-312 101.5,-318 95.5,-324 89.5,-324"/> -<text text-anchor="middle" x="72" y="-303.5" font-family="sans" font-size="10.00">pe_fastqc</text> +<g id="node5" class="node"> +<title>4</title> +<path fill="none" stroke="#d86656" stroke-width="2" d="M1125,-468C1125,-468 975,-468 975,-468 969,-468 963,-462 963,-456 963,-456 963,-444 963,-444 963,-438 969,-432 975,-432 975,-432 1125,-432 1125,-432 1131,-432 1137,-438 1137,-444 1137,-444 1137,-456 1137,-456 1137,-462 1131,-468 1125,-468"/> +<text text-anchor="middle" x="1050" y="-447.5" font-family="sans" font-size="10.00" fill="#000000">salmon_quantmerge_transcripts</text> </g> -<!-- 4->3 --> -<g id="edge12" class="edge"><title>4->3</title> -<path fill="none" stroke="grey" stroke-width="2" d="M101.511,-291.172C104.673,-289.982 107.875,-288.893 111,-288 209.889,-259.733 328.553,-246.003 402.13,-239.74"/> -<polygon fill="grey" stroke="grey" stroke-width="2" points="402.53,-243.219 412.206,-238.905 401.951,-236.243 402.53,-243.219"/> +<!-- 4->0 --> +<g id="edge2" class="edge"> +<title>4->0</title> +<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M1032.0737,-431.7434C1008.7654,-405.9886 971,-356.4717 971,-306 971,-306 971,-306 971,-162 971,-101.0638 905.7286,-56.9075 863.0745,-34.5576"/> +<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="864.5862,-31.3998 854.0853,-29.992 861.4163,-37.641 864.5862,-31.3998"/> </g> <!-- 5 --> -<g id="node6" class="node"><title>5</title> -<path fill="none" stroke="#70d856" stroke-width="2" d="M162,-324C162,-324 132,-324 132,-324 126,-324 120,-318 120,-312 120,-312 120,-300 120,-300 120,-294 126,-288 132,-288 132,-288 162,-288 162,-288 168,-288 174,-294 174,-300 174,-300 174,-312 174,-312 174,-318 168,-324 162,-324"/> -<text text-anchor="middle" x="147" y="-303.5" font-family="sans" font-size="10.00">fastqc</text> +<g id="node6" class="node"> +<title>5</title> +<path fill="none" stroke="#b6d856" stroke-width="2" d="M42,-396C42,-396 12,-396 12,-396 6,-396 0,-390 0,-384 0,-384 0,-372 0,-372 0,-366 6,-360 12,-360 12,-360 42,-360 42,-360 48,-360 54,-366 54,-372 54,-372 54,-384 54,-384 54,-390 48,-396 42,-396"/> +<text text-anchor="middle" x="27" y="-375.5" font-family="sans" font-size="10.00" fill="#000000">fastqc</text> </g> -<!-- 5->3 --> -<g id="edge9" class="edge"><title>5->3</title> -<path fill="none" stroke="grey" stroke-width="2" d="M174.06,-292.852C178.654,-291.059 183.42,-289.361 188,-288 259.664,-266.71 344.151,-252.245 402.237,-243.874"/> -<polygon fill="grey" stroke="grey" stroke-width="2" points="402.996,-247.302 412.405,-242.432 402.013,-240.371 402.996,-247.302"/> +<!-- 5->1 --> +<g id="edge10" class="edge"> +<title>5->1</title> +<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M27.5291,-359.7719C29.6541,-317.3835 40.2588,-210.7263 93,-144 104.2897,-129.7166 120.4546,-118.6219 136.3599,-110.3072"/> +<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="138.2306,-113.2875 145.6558,-105.7299 135.1383,-107.0075 138.2306,-113.2875"/> </g> <!-- 6 --> -<g id="node7" class="node"><title>6</title> -<path fill="none" stroke="#d6d856" stroke-width="2" d="M723,-756C723,-756 581,-756 581,-756 575,-756 569,-750 569,-744 569,-744 569,-732 569,-732 569,-726 575,-720 581,-720 581,-720 723,-720 723,-720 729,-720 735,-726 735,-732 735,-732 735,-744 735,-744 735,-750 729,-756 723,-756"/> -<text text-anchor="middle" x="652" y="-735.5" font-family="sans" font-size="10.00">pe_genome_quantification_kallisto</text> +<g id="node7" class="node"> +<title>6</title> +<path fill="none" stroke="#56d87b" stroke-width="2" d="M217.5,-612C217.5,-612 54.5,-612 54.5,-612 48.5,-612 42.5,-606 42.5,-600 42.5,-600 42.5,-588 42.5,-588 42.5,-582 48.5,-576 54.5,-576 54.5,-576 217.5,-576 217.5,-576 223.5,-576 229.5,-582 229.5,-588 229.5,-588 229.5,-600 229.5,-600 229.5,-606 223.5,-612 217.5,-612"/> +<text text-anchor="middle" x="136" y="-591.5" font-family="sans" font-size="10.00" fill="#000000">pe_genome_quantification_kallisto</text> </g> -<!-- 6->3 --> -<g id="edge4" class="edge"><title>6->3</title> -<path fill="none" stroke="grey" stroke-width="2" d="M635.198,-719.649C626.555,-709.869 616.498,-697.027 610,-684 576.994,-617.824 568,-596.95 568,-523 568,-523 568,-523 568,-377 568,-328.855 529.657,-284.848 501.435,-258.978"/> -<polygon fill="grey" stroke="grey" stroke-width="2" points="503.582,-256.204 493.784,-252.174 498.931,-261.435 503.582,-256.204"/> +<!-- 6->1 --> +<g id="edge5" class="edge"> +<title>6->1</title> +<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M129.8498,-575.5984C121.3372,-548.4466 107,-495.9035 107,-450 107,-450 107,-450 107,-234 107,-192.6022 109.5347,-179.398 131,-144 137.5811,-133.1472 146.9844,-123.1601 156.3555,-114.8041"/> +<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="158.7958,-117.3238 164.1571,-108.1855 154.2673,-111.9859 158.7958,-117.3238"/> </g> <!-- 7 --> -<g id="node8" class="node"><title>7</title> -<path fill="none" stroke="#56c1d8" stroke-width="2" d="M463,-756C463,-756 337,-756 337,-756 331,-756 325,-750 325,-744 325,-744 325,-732 325,-732 325,-726 331,-720 337,-720 337,-720 463,-720 463,-720 469,-720 475,-726 475,-732 475,-732 475,-744 475,-744 475,-750 469,-756 463,-756"/> -<text text-anchor="middle" x="400" y="-735.5" font-family="sans" font-size="10.00">genome_quantification_kallisto</text> +<g id="node8" class="node"> +<title>7</title> +<path fill="none" stroke="#5673d8" stroke-width="2" d="M406,-612C406,-612 260,-612 260,-612 254,-612 248,-606 248,-600 248,-600 248,-588 248,-588 248,-582 254,-576 260,-576 260,-576 406,-576 406,-576 412,-576 418,-582 418,-588 418,-588 418,-600 418,-600 418,-606 412,-612 406,-612"/> +<text text-anchor="middle" x="333" y="-591.5" font-family="sans" font-size="10.00" fill="#000000">genome_quantification_kallisto</text> </g> -<!-- 7->3 --> -<g id="edge7" class="edge"><title>7->3</title> -<path fill="none" stroke="grey" stroke-width="2" d="M324.739,-723.249C297.831,-715.35 268.805,-703.05 247,-684 213.62,-654.838 202,-639.324 202,-595 202,-595 202,-595 202,-377 202,-286.466 322.383,-253.524 402.383,-241.628"/> -<polygon fill="grey" stroke="grey" stroke-width="2" points="402.999,-245.076 412.413,-240.214 402.022,-238.144 402.999,-245.076"/> +<!-- 7->1 --> +<g id="edge9" class="edge"> +<title>7->1</title> +<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M256.4453,-575.9218C233.7902,-567.7741 210.2043,-556.214 192,-540 158.3024,-509.9864 145,-495.1259 145,-450 145,-450 145,-450 145,-234 145,-191.8263 162.802,-145.738 176.0122,-117.3433"/> +<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="179.2895,-118.6034 180.4567,-108.0731 172.9774,-115.5772 179.2895,-118.6034"/> </g> <!-- 8 --> -<g id="node9" class="node"><title>8</title> -<path fill="none" stroke="#d8cb56" stroke-width="2" d="M685.5,-396C685.5,-396 620.5,-396 620.5,-396 614.5,-396 608.5,-390 608.5,-384 608.5,-384 608.5,-372 608.5,-372 608.5,-366 614.5,-360 620.5,-360 620.5,-360 685.5,-360 685.5,-360 691.5,-360 697.5,-366 697.5,-372 697.5,-372 697.5,-384 697.5,-384 697.5,-390 691.5,-396 685.5,-396"/> -<text text-anchor="middle" x="653" y="-375.5" font-family="sans" font-size="10.00">plot_TIN_scores</text> +<g id="node9" class="node"> +<title>8</title> +<path fill="none" stroke="#56d8d8" stroke-width="2" d="M279,-252C279,-252 209,-252 209,-252 203,-252 197,-246 197,-240 197,-240 197,-228 197,-228 197,-222 203,-216 209,-216 209,-216 279,-216 279,-216 285,-216 291,-222 291,-228 291,-228 291,-240 291,-240 291,-246 285,-252 279,-252"/> +<text text-anchor="middle" x="244" y="-231.5" font-family="sans" font-size="10.00" fill="#000000">plot_TIN_scores</text> </g> -<!-- 8->3 --> -<g id="edge10" class="edge"><title>8->3</title> -<path fill="none" stroke="grey" stroke-width="2" d="M642.58,-359.671C630.158,-340.184 607.807,-308.581 582,-288 565.981,-275.225 546.379,-264.542 528.182,-256.192"/> -<polygon fill="grey" stroke="grey" stroke-width="2" points="529.38,-252.895 518.82,-252.039 526.542,-259.293 529.38,-252.895"/> +<!-- 8->1 --> +<g id="edge6" class="edge"> +<title>8->1</title> +<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M229.8968,-215.9479C222.6638,-205.8743 214.2869,-192.8047 209,-180 200.7977,-160.1341 195.9684,-136.2814 193.2325,-118.1244"/> +<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="196.6921,-117.5908 191.8539,-108.1652 189.7582,-118.5507 196.6921,-117.5908"/> </g> <!-- 9 --> -<g id="node10" class="node"><title>9</title> -<path fill="none" stroke="#56d87b" stroke-width="2" d="M528,-612C528,-612 416,-612 416,-612 410,-612 404,-606 404,-600 404,-600 404,-588 404,-588 404,-582 410,-576 416,-576 416,-576 528,-576 528,-576 534,-576 540,-582 540,-588 540,-588 540,-600 540,-600 540,-606 534,-612 528,-612"/> -<text text-anchor="middle" x="472" y="-591.5" font-family="sans" font-size="10.00">salmon_quantmerge_genes</text> +<g id="node10" class="node"> +<title>9</title> +<path fill="none" stroke="#56a2d8" stroke-width="2" d="M317.5,-180C317.5,-180 230.5,-180 230.5,-180 224.5,-180 218.5,-174 218.5,-168 218.5,-168 218.5,-156 218.5,-156 218.5,-150 224.5,-144 230.5,-144 230.5,-144 317.5,-144 317.5,-144 323.5,-144 329.5,-150 329.5,-156 329.5,-156 329.5,-168 329.5,-168 329.5,-174 323.5,-180 317.5,-180"/> +<text text-anchor="middle" x="274" y="-159.5" font-family="sans" font-size="10.00" fill="#000000">alfa_concat_results</text> </g> -<!-- 9->3 --> -<g id="edge6" class="edge"><title>9->3</title> -<path fill="none" stroke="grey" stroke-width="2" d="M472,-575.951C472,-549.292 472,-496.115 472,-451 472,-451 472,-451 472,-377 472,-336.996 472,-290.653 472,-262.08"/> -<polygon fill="grey" stroke="grey" stroke-width="2" points="475.5,-262.049 472,-252.049 468.5,-262.049 475.5,-262.049"/> +<!-- 9->1 --> +<g id="edge7" class="edge"> +<title>9->1</title> +<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M252.8033,-143.8314C242.5566,-135.0485 230.0997,-124.3712 218.9903,-114.8489"/> +<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="221.0603,-112.0134 211.19,-108.1628 216.5048,-117.3282 221.0603,-112.0134"/> </g> <!-- 10 --> -<g id="node11" class="node"><title>10</title> -<path fill="none" stroke="#d88556" stroke-width="2" d="M373.5,-612C373.5,-612 242.5,-612 242.5,-612 236.5,-612 230.5,-606 230.5,-600 230.5,-600 230.5,-588 230.5,-588 230.5,-582 236.5,-576 242.5,-576 242.5,-576 373.5,-576 373.5,-576 379.5,-576 385.5,-582 385.5,-588 385.5,-588 385.5,-600 385.5,-600 385.5,-606 379.5,-612 373.5,-612"/> -<text text-anchor="middle" x="308" y="-591.5" font-family="sans" font-size="10.00">salmon_quantmerge_transcripts</text> +<g id="node11" class="node"> +<title>10</title> +<path fill="none" stroke="#5682d8" stroke-width="2" d="M466.5,-180C466.5,-180 359.5,-180 359.5,-180 353.5,-180 347.5,-174 347.5,-168 347.5,-168 347.5,-156 347.5,-156 347.5,-150 353.5,-144 359.5,-144 359.5,-144 466.5,-144 466.5,-144 472.5,-144 478.5,-150 478.5,-156 478.5,-156 478.5,-168 478.5,-168 478.5,-174 472.5,-180 466.5,-180"/> +<text text-anchor="middle" x="413" y="-159.5" font-family="sans" font-size="10.00" fill="#000000">prepare_multiqc_config</text> </g> -<!-- 10->3 --> -<g id="edge5" class="edge"><title>10->3</title> -<path fill="none" stroke="grey" stroke-width="2" d="M321.361,-575.721C339.854,-550.027 371,-499.546 371,-451 371,-451 371,-451 371,-377 371,-328.193 411.113,-284.506 440.78,-258.87"/> -<polygon fill="grey" stroke="grey" stroke-width="2" points="443.41,-261.233 448.829,-252.129 438.915,-255.867 443.41,-261.233"/> +<!-- 10->1 --> +<g id="edge8" class="edge"> +<title>10->1</title> +<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M357.0155,-143.9243C322.3749,-132.7399 278.1361,-118.4565 243.8922,-107.4002"/> +<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="244.654,-103.9683 234.0623,-104.2264 242.5032,-110.6297 244.654,-103.9683"/> </g> <!-- 11 --> -<g id="node12" class="node"><title>11</title> -<path fill="none" stroke="#56a2d8" stroke-width="2" d="M942.5,-612C942.5,-612 911.5,-612 911.5,-612 905.5,-612 899.5,-606 899.5,-600 899.5,-600 899.5,-588 899.5,-588 899.5,-582 905.5,-576 911.5,-576 911.5,-576 942.5,-576 942.5,-576 948.5,-576 954.5,-582 954.5,-588 954.5,-588 954.5,-600 954.5,-600 954.5,-606 948.5,-612 942.5,-612"/> -<text text-anchor="middle" x="927" y="-591.5" font-family="sans" font-size="10.00">star_rpm</text> +<g id="node12" class="node"> +<title>11</title> +<path fill="none" stroke="#d88556" stroke-width="2" d="M689,-324C689,-324 623,-324 623,-324 617,-324 611,-318 611,-312 611,-312 611,-300 611,-300 611,-294 617,-288 623,-288 623,-288 689,-288 689,-288 695,-288 701,-294 701,-300 701,-300 701,-312 701,-312 701,-318 695,-324 689,-324"/> +<text text-anchor="middle" x="656" y="-303.5" font-family="sans" font-size="10.00" fill="#000000">sort_bed_4_big</text> </g> -<!-- 11->3 --> -<g id="edge8" class="edge"><title>11->3</title> -<path fill="none" stroke="grey" stroke-width="2" d="M899.442,-579.32C860.486,-557.807 794,-512.137 794,-451 794,-451 794,-451 794,-377 794,-267.649 636.61,-241.792 541.903,-236.132"/> -<polygon fill="grey" stroke="grey" stroke-width="2" points="541.984,-232.631 531.811,-235.59 541.609,-239.621 541.984,-232.631"/> -</g> -<!-- 33 --> -<g id="node34" class="node"><title>33</title> -<path fill="none" stroke="#56d89a" stroke-width="2" d="M980,-540C980,-540 874,-540 874,-540 868,-540 862,-534 862,-528 862,-528 862,-516 862,-516 862,-510 868,-504 874,-504 874,-504 980,-504 980,-504 986,-504 992,-510 992,-516 992,-516 992,-528 992,-528 992,-534 986,-540 980,-540"/> -<text text-anchor="middle" x="927" y="-519.5" font-family="sans" font-size="10.00">rename_star_rpm_for_alfa</text> -</g> -<!-- 11->33 --> -<g id="edge50" class="edge"><title>11->33</title> -<path fill="none" stroke="grey" stroke-width="2" d="M927,-575.697C927,-567.983 927,-558.712 927,-550.112"/> -<polygon fill="grey" stroke="grey" stroke-width="2" points="930.5,-550.104 927,-540.104 923.5,-550.104 930.5,-550.104"/> +<!-- 11->2 --> +<g id="edge12" class="edge"> +<title>11->2</title> +<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M683.5053,-287.8314C697.318,-278.7074 714.2256,-267.539 729.0529,-257.7449"/> +<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="731.0886,-260.5949 737.5035,-252.1628 727.2304,-254.7541 731.0886,-260.5949"/> </g> <!-- 12 --> -<g id="node13" class="node"><title>12</title> -<path fill="none" stroke="#5673d8" stroke-width="2" d="M925.5,-324C925.5,-324 848.5,-324 848.5,-324 842.5,-324 836.5,-318 836.5,-312 836.5,-312 836.5,-300 836.5,-300 836.5,-294 842.5,-288 848.5,-288 848.5,-288 925.5,-288 925.5,-288 931.5,-288 937.5,-294 937.5,-300 937.5,-300 937.5,-312 937.5,-312 937.5,-318 931.5,-324 925.5,-324"/> -<text text-anchor="middle" x="887" y="-303.5" font-family="sans" font-size="10.00">alfa_concat_results</text> +<g id="node13" class="node"> +<title>12</title> +<path fill="none" stroke="#56d8c9" stroke-width="2" d="M791,-684C791,-684 711,-684 711,-684 705,-684 699,-678 699,-672 699,-672 699,-660 699,-660 699,-654 705,-648 711,-648 711,-648 791,-648 791,-648 797,-648 803,-654 803,-660 803,-660 803,-672 803,-672 803,-678 797,-684 791,-684"/> +<text text-anchor="middle" x="751" y="-663.5" font-family="sans" font-size="10.00" fill="#000000">create_index_star</text> </g> -<!-- 12->3 --> -<g id="edge11" class="edge"><title>12->3</title> -<path fill="none" stroke="grey" stroke-width="2" d="M836.088,-293.61C826.763,-291.647 817.103,-289.696 808,-288 716.334,-270.921 609.924,-254.748 541.829,-244.86"/> -<polygon fill="grey" stroke="grey" stroke-width="2" points="542.05,-241.356 531.652,-243.388 541.047,-248.284 542.05,-241.356"/> +<!-- 12->2 --> +<g id="edge11" class="edge"> +<title>12->2</title> +<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M753.9008,-647.8696C758.0015,-620.6233 765,-567.4634 765,-522 765,-522 765,-522 765,-378 765,-337.876 765,-291.4631 765,-262.4177"/> +<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="768.5001,-262.1853 765,-252.1854 761.5001,-262.1854 768.5001,-262.1853"/> </g> -<!-- 13 --> -<g id="node14" class="node"><title>13</title> -<path fill="none" stroke="#d8a456" stroke-width="2" d="M744,-828C744,-828 632,-828 632,-828 626,-828 620,-822 620,-816 620,-816 620,-804 620,-804 620,-798 626,-792 632,-792 632,-792 744,-792 744,-792 750,-792 756,-798 756,-804 756,-804 756,-816 756,-816 756,-822 750,-828 744,-828"/> -<text text-anchor="middle" x="688" y="-807.5" font-family="sans" font-size="10.00">pe_remove_polya_cutadapt</text> +<!-- 22 --> +<g id="node23" class="node"> +<title>22</title> +<path fill="none" stroke="#56d85b" stroke-width="2" d="M978.5,-612C978.5,-612 881.5,-612 881.5,-612 875.5,-612 869.5,-606 869.5,-600 869.5,-600 869.5,-588 869.5,-588 869.5,-582 875.5,-576 881.5,-576 881.5,-576 978.5,-576 978.5,-576 984.5,-576 990.5,-582 990.5,-588 990.5,-588 990.5,-600 990.5,-600 990.5,-606 984.5,-612 978.5,-612"/> +<text text-anchor="middle" x="930" y="-591.5" font-family="sans" font-size="10.00" fill="#000000">create_index_salmon</text> </g> -<!-- 13->6 --> -<g id="edge13" class="edge"><title>13->6</title> -<path fill="none" stroke="grey" stroke-width="2" d="M679.101,-791.697C675.003,-783.728 670.051,-774.1 665.507,-765.264"/> -<polygon fill="grey" stroke="grey" stroke-width="2" points="668.483,-763.396 660.797,-756.104 662.258,-766.598 668.483,-763.396"/> +<!-- 12->22 --> +<g id="edge35" class="edge"> +<title>12->22</title> +<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M796.1693,-647.8314C820.3223,-638.1162 850.2378,-626.0831 875.6556,-615.8592"/> +<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="877.1841,-619.017 885.1556,-612.038 874.5718,-612.5227 877.1841,-619.017"/> </g> -<!-- 17 --> -<g id="node18" class="node"><title>17</title> -<path fill="none" stroke="#56d85b" stroke-width="2" d="M513.5,-684C513.5,-684 410.5,-684 410.5,-684 404.5,-684 398.5,-678 398.5,-672 398.5,-672 398.5,-660 398.5,-660 398.5,-654 404.5,-648 410.5,-648 410.5,-648 513.5,-648 513.5,-648 519.5,-648 525.5,-654 525.5,-660 525.5,-660 525.5,-672 525.5,-672 525.5,-678 519.5,-684 513.5,-684"/> -<text text-anchor="middle" x="462" y="-663.5" font-family="sans" font-size="10.00">pe_quantification_salmon</text> +<!-- 30 --> +<g id="node31" class="node"> +<title>30</title> +<path fill="none" stroke="#88d856" stroke-width="2" d="M549.5,-612C549.5,-612 448.5,-612 448.5,-612 442.5,-612 436.5,-606 436.5,-600 436.5,-600 436.5,-588 436.5,-588 436.5,-582 442.5,-576 448.5,-576 448.5,-576 549.5,-576 549.5,-576 555.5,-576 561.5,-582 561.5,-588 561.5,-588 561.5,-600 561.5,-600 561.5,-606 555.5,-612 549.5,-612"/> +<text text-anchor="middle" x="499" y="-591.5" font-family="sans" font-size="10.00" fill="#000000">pe_map_genome_star</text> </g> -<!-- 13->17 --> -<g id="edge30" class="edge"><title>13->17</title> -<path fill="none" stroke="grey" stroke-width="2" d="M635.545,-791.953C611.565,-783.007 583.362,-770.808 560,-756 544.498,-746.174 510.194,-713.967 486.583,-691.13"/> -<polygon fill="grey" stroke="grey" stroke-width="2" points="488.941,-688.542 479.33,-684.085 484.064,-693.563 488.941,-688.542"/> +<!-- 12->30 --> +<g id="edge50" class="edge"> +<title>12->30</title> +<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M698.768,-650.5447C695.8027,-649.6805 692.8641,-648.8274 690,-648 650.9637,-636.7227 607.3664,-624.3778 571.6913,-614.3413"/> +<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="572.4237,-610.9115 561.8496,-611.5745 570.5292,-617.6503 572.4237,-610.9115"/> </g> -<!-- 19 --> -<g id="node20" class="node"><title>19</title> -<path fill="none" stroke="#78d856" stroke-width="2" d="M1039.5,-756C1039.5,-756 950.5,-756 950.5,-756 944.5,-756 938.5,-750 938.5,-744 938.5,-744 938.5,-732 938.5,-732 938.5,-726 944.5,-720 950.5,-720 950.5,-720 1039.5,-720 1039.5,-720 1045.5,-720 1051.5,-726 1051.5,-732 1051.5,-732 1051.5,-744 1051.5,-744 1051.5,-750 1045.5,-756 1039.5,-756"/> -<text text-anchor="middle" x="995" y="-735.5" font-family="sans" font-size="10.00">pe_map_genome_star</text> +<!-- 33 --> +<g id="node34" class="node"> +<title>33</title> +<path fill="none" stroke="#56c1d8" stroke-width="2" d="M674.5,-612C674.5,-612 591.5,-612 591.5,-612 585.5,-612 579.5,-606 579.5,-600 579.5,-600 579.5,-588 579.5,-588 579.5,-582 585.5,-576 591.5,-576 591.5,-576 674.5,-576 674.5,-576 680.5,-576 686.5,-582 686.5,-588 686.5,-588 686.5,-600 686.5,-600 686.5,-606 680.5,-612 674.5,-612"/> +<text text-anchor="middle" x="633" y="-591.5" font-family="sans" font-size="10.00" fill="#000000">map_genome_star</text> </g> -<!-- 13->19 --> -<g id="edge34" class="edge"><title>13->19</title> -<path fill="none" stroke="grey" stroke-width="2" d="M756.189,-794.681C802.17,-784.869 864.435,-771.279 928.304,-756.126"/> -<polygon fill="grey" stroke="grey" stroke-width="2" points="929.234,-759.502 938.15,-753.78 927.611,-752.693 929.234,-759.502"/> +<!-- 12->33 --> +<g id="edge53" class="edge"> +<title>12->33</title> +<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M721.2236,-647.8314C706.1307,-638.6221 687.6243,-627.3301 671.4657,-617.4706"/> +<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="673.1263,-614.3838 662.7669,-612.1628 669.4802,-620.3593 673.1263,-614.3838"/> </g> -<!-- 14 --> -<g id="node15" class="node"><title>14</title> -<path fill="none" stroke="#d87556" stroke-width="2" d="M448,-828C448,-828 364,-828 364,-828 358,-828 352,-822 352,-816 352,-816 352,-804 352,-804 352,-798 358,-792 364,-792 364,-792 448,-792 448,-792 454,-792 460,-798 460,-804 460,-804 460,-816 460,-816 460,-822 454,-828 448,-828"/> -<text text-anchor="middle" x="406" y="-807.5" font-family="sans" font-size="10.00">create_index_kallisto</text> +<!-- 34 --> +<g id="node35" class="node"> +<title>34</title> +<path fill="none" stroke="#d89556" stroke-width="2" d="M725,-396C725,-396 633,-396 633,-396 627,-396 621,-390 621,-384 621,-384 621,-372 621,-372 621,-366 627,-360 633,-360 633,-360 725,-360 725,-360 731,-360 737,-366 737,-372 737,-372 737,-384 737,-384 737,-390 731,-396 725,-396"/> +<text text-anchor="middle" x="679" y="-375.5" font-family="sans" font-size="10.00" fill="#000000">generate_alfa_index</text> </g> -<!-- 14->6 --> -<g id="edge14" class="edge"><title>14->6</title> -<path fill="none" stroke="grey" stroke-width="2" d="M460.29,-793.552C496.291,-783.307 543.855,-769.773 582.599,-758.748"/> -<polygon fill="grey" stroke="grey" stroke-width="2" points="583.586,-762.106 592.247,-756.003 581.671,-755.374 583.586,-762.106"/> +<!-- 12->34 --> +<g id="edge55" class="edge"> +<title>12->34</title> +<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M746.4961,-647.9843C734.3235,-599.2939 700.699,-464.7961 686.0143,-406.0573"/> +<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="689.3231,-404.8614 683.5022,-396.0089 682.5321,-406.5592 689.3231,-404.8614"/> </g> -<!-- 14->7 --> -<g id="edge16" class="edge"><title>14->7</title> -<path fill="none" stroke="grey" stroke-width="2" d="M404.517,-791.697C403.856,-783.983 403.061,-774.712 402.324,-766.112"/> -<polygon fill="grey" stroke="grey" stroke-width="2" points="405.807,-765.769 401.466,-756.104 398.833,-766.367 405.807,-765.769"/> +<!-- 13 --> +<g id="node14" class="node"> +<title>13</title> +<path fill="none" stroke="#56d0d8" stroke-width="2" d="M926,-540C926,-540 808,-540 808,-540 802,-540 796,-534 796,-528 796,-528 796,-516 796,-516 796,-510 802,-504 808,-504 808,-504 926,-504 926,-504 932,-504 938,-510 938,-516 938,-516 938,-528 938,-528 938,-534 932,-540 926,-540"/> +<text text-anchor="middle" x="867" y="-519.5" font-family="sans" font-size="10.00" fill="#000000">pe_quantification_salmon</text> +</g> +<!-- 13->3 --> +<g id="edge14" class="edge"> +<title>13->3</title> +<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M867.5047,-503.8314C867.7186,-496.131 867.9729,-486.9743 868.2106,-478.4166"/> +<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="871.7094,-478.5066 868.4885,-468.4133 864.7121,-478.3122 871.7094,-478.5066"/> +</g> +<!-- 13->4 --> +<g id="edge16" class="edge"> +<title>13->4</title> +<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M913.1786,-503.8314C937.9801,-494.0734 968.725,-481.977 994.7843,-471.7242"/> +<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="996.1292,-474.9563 1004.1534,-468.038 993.5663,-468.4423 996.1292,-474.9563"/> +</g> +<!-- 14 --> +<g id="node15" class="node"> +<title>14</title> +<path fill="none" stroke="#c6d856" stroke-width="2" d="M1069.5,-540C1069.5,-540 968.5,-540 968.5,-540 962.5,-540 956.5,-534 956.5,-528 956.5,-528 956.5,-516 956.5,-516 956.5,-510 962.5,-504 968.5,-504 968.5,-504 1069.5,-504 1069.5,-504 1075.5,-504 1081.5,-510 1081.5,-516 1081.5,-516 1081.5,-528 1081.5,-528 1081.5,-534 1075.5,-540 1069.5,-540"/> +<text text-anchor="middle" x="1019" y="-519.5" font-family="sans" font-size="10.00" fill="#000000">quantification_salmon</text> +</g> +<!-- 14->3 --> +<g id="edge13" class="edge"> +<title>14->3</title> +<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M981.1487,-503.8314C961.2654,-494.2874 936.7218,-482.5065 915.6695,-472.4013"/> +<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="917.109,-469.21 906.5791,-468.038 914.0798,-475.5207 917.109,-469.21"/> +</g> +<!-- 14->4 --> +<g id="edge15" class="edge"> +<title>14->4</title> +<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M1026.8226,-503.8314C1030.2109,-495.9617 1034.2541,-486.5712 1038.0076,-477.8533"/> +<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="1041.3321,-478.9822 1042.0721,-468.4133 1034.9027,-476.214 1041.3321,-478.9822"/> </g> <!-- 15 --> -<g id="node16" class="node"><title>15</title> -<path fill="none" stroke="#56d0d8" stroke-width="2" d="M586,-828C586,-828 490,-828 490,-828 484,-828 478,-822 478,-816 478,-816 478,-804 478,-804 478,-798 484,-792 490,-792 490,-792 586,-792 586,-792 592,-792 598,-798 598,-804 598,-804 598,-816 598,-816 598,-822 592,-828 586,-828"/> -<text text-anchor="middle" x="538" y="-807.5" font-family="sans" font-size="10.00">remove_polya_cutadapt</text> +<g id="node16" class="node"> +<title>15</title> +<path fill="none" stroke="#56b1d8" stroke-width="2" d="M309,-828C309,-828 279,-828 279,-828 273,-828 267,-822 267,-816 267,-816 267,-804 267,-804 267,-798 273,-792 279,-792 279,-792 309,-792 309,-792 315,-792 321,-798 321,-804 321,-804 321,-816 321,-816 321,-822 315,-828 309,-828"/> +<text text-anchor="middle" x="294" y="-807.5" font-family="sans" font-size="10.00" fill="#000000">start</text> </g> -<!-- 15->7 --> -<g id="edge15" class="edge"><title>15->7</title> -<path fill="none" stroke="grey" stroke-width="2" d="M504.241,-791.876C485.78,-782.512 462.718,-770.814 442.983,-760.803"/> -<polygon fill="grey" stroke="grey" stroke-width="2" points="444.39,-757.592 433.888,-756.19 441.223,-763.835 444.39,-757.592"/> +<!-- 15->5 --> +<g id="edge17" class="edge"> +<title>15->5</title> +<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M266.9948,-808.5749C196.9765,-803.2851 15,-778.6966 15,-666 15,-666 15,-666 15,-522 15,-481.7369 19.7166,-435.3594 23.2358,-406.3596"/> +<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="26.7452,-406.5021 24.5136,-396.145 19.7993,-405.6332 26.7452,-406.5021"/> </g> -<!-- 18 --> -<g id="node19" class="node"><title>18</title> -<path fill="none" stroke="#56d8d8" stroke-width="2" d="M355.5,-684C355.5,-684 268.5,-684 268.5,-684 262.5,-684 256.5,-678 256.5,-672 256.5,-672 256.5,-660 256.5,-660 256.5,-654 262.5,-648 268.5,-648 268.5,-648 355.5,-648 355.5,-648 361.5,-648 367.5,-654 367.5,-660 367.5,-660 367.5,-672 367.5,-672 367.5,-678 361.5,-684 355.5,-684"/> -<text text-anchor="middle" x="312" y="-663.5" font-family="sans" font-size="10.00">quantification_salmon</text> +<!-- 23 --> +<g id="node24" class="node"> +<title>23</title> +<path fill="none" stroke="#56d86b" stroke-width="2" d="M365.5,-756C365.5,-756 222.5,-756 222.5,-756 216.5,-756 210.5,-750 210.5,-744 210.5,-744 210.5,-732 210.5,-732 210.5,-726 216.5,-720 222.5,-720 222.5,-720 365.5,-720 365.5,-720 371.5,-720 377.5,-726 377.5,-732 377.5,-732 377.5,-744 377.5,-744 377.5,-750 371.5,-756 365.5,-756"/> +<text text-anchor="middle" x="294" y="-735.5" font-family="sans" font-size="10.00" fill="#000000">pe_remove_adapters_cutadapt</text> </g> -<!-- 15->18 --> -<g id="edge32" class="edge"><title>15->18</title> -<path fill="none" stroke="grey" stroke-width="2" d="M531.875,-791.656C523.906,-771.551 508.088,-738.779 484,-720 467.061,-706.794 418.711,-692.487 377.572,-682.07"/> -<polygon fill="grey" stroke="grey" stroke-width="2" points="378.387,-678.666 367.837,-679.642 376.693,-685.458 378.387,-678.666"/> +<!-- 15->23 --> +<g id="edge37" class="edge"> +<title>15->23</title> +<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M294,-791.8314C294,-784.131 294,-774.9743 294,-766.4166"/> +<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="297.5001,-766.4132 294,-756.4133 290.5001,-766.4133 297.5001,-766.4132"/> </g> -<!-- 21 --> -<g id="node22" class="node"><title>21</title> -<path fill="none" stroke="#56d8a9" stroke-width="2" d="M908.5,-756C908.5,-756 835.5,-756 835.5,-756 829.5,-756 823.5,-750 823.5,-744 823.5,-744 823.5,-732 823.5,-732 823.5,-726 829.5,-720 835.5,-720 835.5,-720 908.5,-720 908.5,-720 914.5,-720 920.5,-726 920.5,-732 920.5,-732 920.5,-744 920.5,-744 920.5,-750 914.5,-756 908.5,-756"/> -<text text-anchor="middle" x="872" y="-735.5" font-family="sans" font-size="10.00">map_genome_star</text> +<!-- 25 --> +<g id="node26" class="node"> +<title>25</title> +<path fill="none" stroke="#d8cb56" stroke-width="2" d="M677,-756C677,-756 551,-756 551,-756 545,-756 539,-750 539,-744 539,-744 539,-732 539,-732 539,-726 545,-720 551,-720 551,-720 677,-720 677,-720 683,-720 689,-726 689,-732 689,-732 689,-744 689,-744 689,-750 683,-756 677,-756"/> +<text text-anchor="middle" x="614" y="-735.5" font-family="sans" font-size="10.00" fill="#000000">remove_adapters_cutadapt</text> </g> -<!-- 15->21 --> -<g id="edge38" class="edge"><title>15->21</title> -<path fill="none" stroke="grey" stroke-width="2" d="M598.122,-794.856C602.477,-793.875 606.804,-792.914 611,-792 680.392,-776.878 760.474,-760.822 813.437,-750.397"/> -<polygon fill="grey" stroke="grey" stroke-width="2" points="814.191,-753.816 823.329,-748.454 812.842,-746.947 814.191,-753.816"/> +<!-- 15->25 --> +<g id="edge38" class="edge"> +<title>15->25</title> +<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M321.0072,-803.9234C366.3899,-793.7123 459.7683,-772.7021 528.9702,-757.1317"/> +<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="530.0085,-760.4857 538.9963,-754.8758 528.4719,-753.6564 530.0085,-760.4857"/> </g> <!-- 16 --> -<g id="node17" class="node"><title>16</title> -<path fill="none" stroke="#56d8c9" stroke-width="2" d="M714,-540C714,-540 638,-540 638,-540 632,-540 626,-534 626,-528 626,-528 626,-516 626,-516 626,-510 632,-504 638,-504 638,-504 714,-504 714,-504 720,-504 726,-510 726,-516 726,-516 726,-528 726,-528 726,-534 720,-540 714,-540"/> -<text text-anchor="middle" x="676" y="-519.5" font-family="sans" font-size="10.00">merge_TIN_scores</text> -</g> -<!-- 16->8 --> -<g id="edge17" class="edge"><title>16->8</title> -<path fill="none" stroke="grey" stroke-width="2" d="M673.226,-503.871C669.306,-479.67 662.105,-435.211 657.437,-406.393"/> -<polygon fill="grey" stroke="grey" stroke-width="2" points="660.838,-405.501 655.784,-396.189 653.928,-406.62 660.838,-405.501"/> -</g> -<!-- 17->9 --> -<g id="edge18" class="edge"><title>17->9</title> -<path fill="none" stroke="grey" stroke-width="2" d="M464.472,-647.697C465.574,-639.983 466.898,-630.712 468.127,-622.112"/> -<polygon fill="grey" stroke="grey" stroke-width="2" points="471.607,-622.499 469.557,-612.104 464.677,-621.509 471.607,-622.499"/> -</g> -<!-- 17->10 --> -<g id="edge20" class="edge"><title>17->10</title> -<path fill="none" stroke="grey" stroke-width="2" d="M424.327,-647.876C403.368,-638.349 377.095,-626.407 354.823,-616.283"/> -<polygon fill="grey" stroke="grey" stroke-width="2" points="356.102,-613.02 345.55,-612.068 353.206,-619.393 356.102,-613.02"/> -</g> -<!-- 18->9 --> -<g id="edge19" class="edge"><title>18->9</title> -<path fill="none" stroke="grey" stroke-width="2" d="M351.14,-647.876C373.013,-638.307 400.457,-626.3 423.662,-616.148"/> -<polygon fill="grey" stroke="grey" stroke-width="2" points="425.228,-619.283 432.987,-612.068 422.422,-612.87 425.228,-619.283"/> -</g> -<!-- 18->10 --> -<g id="edge21" class="edge"><title>18->10</title> -<path fill="none" stroke="grey" stroke-width="2" d="M311.011,-647.697C310.57,-639.983 310.041,-630.712 309.549,-622.112"/> -<polygon fill="grey" stroke="grey" stroke-width="2" points="313.042,-621.888 308.977,-612.104 306.054,-622.288 313.042,-621.888"/> -</g> -<!-- 19->11 --> -<g id="edge24" class="edge"><title>19->11</title> -<path fill="none" stroke="grey" stroke-width="2" d="M998.427,-719.921C1001.3,-701.221 1003.33,-670.855 992,-648 985.547,-634.983 974.25,-624.061 962.865,-615.579"/> -<polygon fill="grey" stroke="grey" stroke-width="2" points="964.832,-612.685 954.627,-609.839 960.83,-618.428 964.832,-612.685"/> -</g> -<!-- 20 --> -<g id="node21" class="node"><title>20</title> -<path fill="none" stroke="#56d8b9" stroke-width="2" d="M955,-684C955,-684 805,-684 805,-684 799,-684 793,-678 793,-672 793,-672 793,-660 793,-660 793,-654 799,-648 805,-648 805,-648 955,-648 955,-648 961,-648 967,-654 967,-660 967,-660 967,-672 967,-672 967,-678 961,-684 955,-684"/> -<text text-anchor="middle" x="880" y="-663.5" font-family="sans" font-size="10.00">index_genomic_alignment_samtools</text> -</g> -<!-- 19->20 --> -<g id="edge37" class="edge"><title>19->20</title> -<path fill="none" stroke="grey" stroke-width="2" d="M966.868,-719.876C951.832,-710.724 933.133,-699.342 916.94,-689.485"/> -<polygon fill="grey" stroke="grey" stroke-width="2" points="918.602,-686.4 908.24,-684.19 914.962,-692.379 918.602,-686.4"/> +<g id="node17" class="node"> +<title>16</title> +<path fill="none" stroke="#78d856" stroke-width="2" d="M517,-684C517,-684 389,-684 389,-684 383,-684 377,-678 377,-672 377,-672 377,-660 377,-660 377,-654 383,-648 389,-648 389,-648 517,-648 517,-648 523,-648 529,-654 529,-660 529,-660 529,-672 529,-672 529,-678 523,-684 517,-684"/> +<text text-anchor="middle" x="453" y="-663.5" font-family="sans" font-size="10.00" fill="#000000">pe_remove_polya_cutadapt</text> +</g> +<!-- 16->6 --> +<g id="edge18" class="edge"> +<title>16->6</title> +<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M376.6672,-648.6626C331.0858,-638.3097 272.973,-625.1106 225.2716,-614.2762"/> +<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="225.7858,-610.8039 215.2589,-612.002 224.2353,-617.63 225.7858,-610.8039"/> +</g> +<!-- 16->13 --> +<g id="edge25" class="edge"> +<title>16->13</title> +<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M529.0444,-649.6106C597.3012,-634.8201 687.9868,-614.9393 696,-612 744.2839,-594.2888 796.0604,-565.5158 829.832,-545.2804"/> +<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="831.694,-548.2447 838.439,-540.0742 828.071,-542.2552 831.694,-548.2447"/> +</g> +<!-- 16->30 --> +<g id="edge49" class="edge"> +<title>16->30</title> +<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M464.6077,-647.8314C469.7978,-639.7079 476.0232,-629.9637 481.7425,-621.0118"/> +<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="484.8015,-622.7246 487.236,-612.4133 478.9026,-618.9559 484.8015,-622.7246"/> </g> -<!-- 26 --> -<g id="node27" class="node"><title>26</title> -<path fill="none" stroke="#56d86b" stroke-width="2" d="M746,-612C746,-612 658,-612 658,-612 652,-612 646,-606 646,-600 646,-600 646,-588 646,-588 646,-582 652,-576 658,-576 658,-576 746,-576 746,-576 752,-576 758,-582 758,-588 758,-588 758,-600 758,-600 758,-606 752,-612 746,-612"/> -<text text-anchor="middle" x="702" y="-591.5" font-family="sans" font-size="10.00">calculate_TIN_scores</text> -</g> -<!-- 19->26 --> -<g id="edge44" class="edge"><title>19->26</title> -<path fill="none" stroke="grey" stroke-width="2" d="M996.5,-719.984C997.261,-699.884 995.174,-666.809 976,-648 947.195,-619.744 839.886,-605.821 768.42,-599.541"/> -<polygon fill="grey" stroke="grey" stroke-width="2" points="768.409,-596.027 758.149,-598.669 767.817,-603.002 768.409,-596.027"/> -</g> -<!-- 20->11 --> -<g id="edge23" class="edge"><title>20->11</title> -<path fill="none" stroke="grey" stroke-width="2" d="M891.618,-647.697C897.139,-639.474 903.847,-629.483 909.932,-620.421"/> -<polygon fill="grey" stroke="grey" stroke-width="2" points="912.847,-622.358 915.516,-612.104 907.035,-618.456 912.847,-622.358"/> +<!-- 17 --> +<g id="node18" class="node"> +<title>17</title> +<path fill="none" stroke="#5663d8" stroke-width="2" d="M346.5,-684C346.5,-684 249.5,-684 249.5,-684 243.5,-684 237.5,-678 237.5,-672 237.5,-672 237.5,-660 237.5,-660 237.5,-654 243.5,-648 249.5,-648 249.5,-648 346.5,-648 346.5,-648 352.5,-648 358.5,-654 358.5,-660 358.5,-660 358.5,-672 358.5,-672 358.5,-678 352.5,-684 346.5,-684"/> +<text text-anchor="middle" x="298" y="-663.5" font-family="sans" font-size="10.00" fill="#000000">create_index_kallisto</text> +</g> +<!-- 17->6 --> +<g id="edge19" class="edge"> +<title>17->6</title> +<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M257.1206,-647.8314C235.454,-638.2018 208.6637,-626.295 185.7922,-616.1299"/> +<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="187.1451,-612.9011 176.5855,-612.038 184.3021,-619.2978 187.1451,-612.9011"/> +</g> +<!-- 17->7 --> +<g id="edge20" class="edge"> +<title>17->7</title> +<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M306.832,-647.8314C310.6986,-639.8771 315.3206,-630.369 319.5968,-621.5723"/> +<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="322.8249,-622.9371 324.0491,-612.4133 316.5293,-619.8768 322.8249,-622.9371"/> </g> -<!-- 20->26 --> -<g id="edge43" class="edge"><title>20->26</title> -<path fill="none" stroke="grey" stroke-width="2" d="M836.456,-647.876C811.798,-638.179 780.777,-625.98 754.746,-615.743"/> -<polygon fill="grey" stroke="grey" stroke-width="2" points="755.989,-612.471 745.402,-612.068 753.428,-618.985 755.989,-612.471"/> +<!-- 18 --> +<g id="node19" class="node"> +<title>18</title> +<path fill="none" stroke="#56d8b9" stroke-width="2" d="M669,-684C669,-684 559,-684 559,-684 553,-684 547,-678 547,-672 547,-672 547,-660 547,-660 547,-654 553,-648 559,-648 559,-648 669,-648 669,-648 675,-648 681,-654 681,-660 681,-660 681,-672 681,-672 681,-678 675,-684 669,-684"/> +<text text-anchor="middle" x="614" y="-663.5" font-family="sans" font-size="10.00" fill="#000000">remove_polya_cutadapt</text> +</g> +<!-- 18->7 --> +<g id="edge21" class="edge"> +<title>18->7</title> +<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M546.6935,-648.7542C506.7096,-638.5092 455.7534,-625.4528 413.6292,-614.6594"/> +<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="414.2344,-611.2015 403.6786,-612.1098 412.4969,-617.9825 414.2344,-611.2015"/> +</g> +<!-- 18->14 --> +<g id="edge28" class="edge"> +<title>18->14</title> +<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M681.1792,-649.6297C735.4104,-636.1652 804.6626,-618.3114 817,-612 839.4944,-600.4926 838.918,-588.2802 861,-576 887.6283,-561.1915 919.0252,-549.4402 946.7861,-540.7318"/> +<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="947.9014,-544.0508 956.4401,-537.7785 945.8536,-537.357 947.9014,-544.0508"/> +</g> +<!-- 18->33 --> +<g id="edge54" class="edge"> +<title>18->33</title> +<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M618.7945,-647.8314C620.8489,-640.0463 623.296,-630.7729 625.5756,-622.1347"/> +<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="628.9735,-622.9753 628.1409,-612.4133 622.2052,-621.1892 628.9735,-622.9753"/> </g> -<!-- 21->11 --> -<g id="edge22" class="edge"><title>21->11</title> -<path fill="none" stroke="grey" stroke-width="2" d="M916.362,-719.889C941.372,-709.243 968.986,-695.447 976,-684 984.359,-670.357 981.832,-662.899 976,-648 971.803,-637.279 964.308,-627.427 956.422,-619.201"/> -<polygon fill="grey" stroke="grey" stroke-width="2" points="958.76,-616.592 949.153,-612.125 953.877,-621.608 958.76,-616.592"/> +<!-- 19 --> +<g id="node20" class="node"> +<title>19</title> +<path fill="none" stroke="#56d88a" stroke-width="2" d="M319.5,-396C319.5,-396 236.5,-396 236.5,-396 230.5,-396 224.5,-390 224.5,-384 224.5,-384 224.5,-372 224.5,-372 224.5,-366 230.5,-360 236.5,-360 236.5,-360 319.5,-360 319.5,-360 325.5,-360 331.5,-366 331.5,-372 331.5,-372 331.5,-384 331.5,-384 331.5,-390 325.5,-396 319.5,-396"/> +<text text-anchor="middle" x="278" y="-375.5" font-family="sans" font-size="10.00" fill="#000000">merge_TIN_scores</text> </g> -<!-- 21->20 --> -<g id="edge36" class="edge"><title>21->20</title> -<path fill="none" stroke="grey" stroke-width="2" d="M873.978,-719.697C874.859,-711.983 875.919,-702.712 876.901,-694.112"/> -<polygon fill="grey" stroke="grey" stroke-width="2" points="880.387,-694.437 878.045,-684.104 873.432,-693.642 880.387,-694.437"/> +<!-- 19->8 --> +<g id="edge22" class="edge"> +<title>19->8</title> +<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M273.6939,-359.7623C267.8691,-335.0928 257.4252,-290.8598 250.6048,-261.9731"/> +<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="253.9755,-261.0177 248.2712,-252.0896 247.1628,-262.6263 253.9755,-261.0177"/> </g> -<!-- 21->26 --> -<g id="edge41" class="edge"><title>21->26</title> -<path fill="none" stroke="grey" stroke-width="2" d="M823.356,-730.106C753.776,-719.753 632.766,-699.73 620,-684 609.918,-671.576 612.35,-662.053 620,-648 626.913,-635.301 638.322,-625.181 650.465,-617.33"/> -<polygon fill="grey" stroke="grey" stroke-width="2" points="652.587,-620.14 659.382,-612.011 649.001,-614.128 652.587,-620.14"/> +<!-- 20 --> +<g id="node21" class="node"> +<title>20</title> +<path fill="none" stroke="#d87556" stroke-width="2" d="M518,-252C518,-252 426,-252 426,-252 420,-252 414,-246 414,-240 414,-240 414,-228 414,-228 414,-222 420,-216 426,-216 426,-216 518,-216 518,-216 524,-216 530,-222 530,-228 530,-228 530,-240 530,-240 530,-246 524,-252 518,-252"/> +<text text-anchor="middle" x="472" y="-231.5" font-family="sans" font-size="10.00" fill="#000000">alfa_qc_all_samples</text> </g> -<!-- 22 --> -<g id="node23" class="node"><title>22</title> -<path fill="none" stroke="#5682d8" stroke-width="2" d="M941.5,-396C941.5,-396 860.5,-396 860.5,-396 854.5,-396 848.5,-390 848.5,-384 848.5,-384 848.5,-372 848.5,-372 848.5,-366 854.5,-360 860.5,-360 860.5,-360 941.5,-360 941.5,-360 947.5,-360 953.5,-366 953.5,-372 953.5,-372 953.5,-384 953.5,-384 953.5,-390 947.5,-396 941.5,-396"/> -<text text-anchor="middle" x="901" y="-375.5" font-family="sans" font-size="10.00">alfa_qc_all_samples</text> +<!-- 20->9 --> +<g id="edge23" class="edge"> +<title>20->9</title> +<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M422.2918,-215.9243C395.2241,-206.0815 361.5561,-193.8386 333.1451,-183.5073"/> +<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="334.3227,-180.2114 323.7286,-180.0831 331.9305,-186.7899 334.3227,-180.2114"/> </g> -<!-- 22->12 --> -<g id="edge25" class="edge"><title>22->12</title> -<path fill="none" stroke="grey" stroke-width="2" d="M897.539,-359.697C895.997,-351.983 894.142,-342.712 892.422,-334.112"/> -<polygon fill="grey" stroke="grey" stroke-width="2" points="895.814,-333.224 890.421,-324.104 888.95,-334.597 895.814,-333.224"/> +<!-- 21 --> +<g id="node22" class="node"> +<title>21</title> +<path fill="none" stroke="#d85656" stroke-width="2" d="M591,-396C591,-396 469,-396 469,-396 463,-396 457,-390 457,-384 457,-384 457,-372 457,-372 457,-366 463,-360 469,-360 469,-360 591,-360 591,-360 597,-360 603,-366 603,-372 603,-372 603,-384 603,-384 603,-390 597,-396 591,-396"/> +<text text-anchor="middle" x="530" y="-375.5" font-family="sans" font-size="10.00" fill="#000000">rename_star_rpm_for_alfa</text> </g> -<!-- 23 --> -<g id="node24" class="node"><title>23</title> -<path fill="none" stroke="#61d856" stroke-width="2" d="M758,-900C758,-900 632,-900 632,-900 626,-900 620,-894 620,-888 620,-888 620,-876 620,-876 620,-870 626,-864 632,-864 632,-864 758,-864 758,-864 764,-864 770,-870 770,-876 770,-876 770,-888 770,-888 770,-894 764,-900 758,-900"/> -<text text-anchor="middle" x="695" y="-879.5" font-family="sans" font-size="10.00">pe_remove_adapters_cutadapt</text> +<!-- 21->11 --> +<g id="edge24" class="edge"> +<title>21->11</title> +<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M561.7951,-359.8314C578.0605,-350.5368 598.0386,-339.1208 615.4051,-329.1971"/> +<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="617.2691,-332.1631 624.2151,-324.1628 613.7961,-326.0854 617.2691,-332.1631"/> </g> -<!-- 23->13 --> -<g id="edge26" class="edge"><title>23->13</title> -<path fill="none" stroke="grey" stroke-width="2" d="M693.27,-863.697C692.498,-855.983 691.571,-846.712 690.711,-838.112"/> -<polygon fill="grey" stroke="grey" stroke-width="2" points="694.188,-837.706 689.71,-828.104 687.223,-838.403 694.188,-837.706"/> +<!-- 27 --> +<g id="node28" class="node"> +<title>27</title> +<path fill="none" stroke="#56d8a9" stroke-width="2" d="M545,-324C545,-324 515,-324 515,-324 509,-324 503,-318 503,-312 503,-312 503,-300 503,-300 503,-294 509,-288 515,-288 515,-288 545,-288 545,-288 551,-288 557,-294 557,-300 557,-300 557,-312 557,-312 557,-318 551,-324 545,-324"/> +<text text-anchor="middle" x="530" y="-303.5" font-family="sans" font-size="10.00" fill="#000000">alfa_qc</text> +</g> +<!-- 21->27 --> +<g id="edge43" class="edge"> +<title>21->27</title> +<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M530,-359.8314C530,-352.131 530,-342.9743 530,-334.4166"/> +<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="533.5001,-334.4132 530,-324.4133 526.5001,-334.4133 533.5001,-334.4132"/> +</g> +<!-- 22->13 --> +<g id="edge26" class="edge"> +<title>22->13</title> +<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M914.1024,-575.8314C906.7722,-567.454 897.934,-557.3531 889.9031,-548.1749"/> +<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="892.3307,-545.6343 883.1116,-540.4133 887.0627,-550.2438 892.3307,-545.6343"/> +</g> +<!-- 22->14 --> +<g id="edge27" class="edge"> +<title>22->14</title> +<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M952.4585,-575.8314C963.4205,-566.9632 976.7699,-556.1637 988.6265,-546.5718"/> +<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="990.9755,-549.1734 996.5487,-540.1628 986.5729,-543.7313 990.9755,-549.1734"/> +</g> +<!-- 23->16 --> +<g id="edge29" class="edge"> +<title>23->16</title> +<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M334.1224,-719.8314C355.2932,-710.2446 381.4483,-698.4008 403.8303,-688.2655"/> +<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="405.5003,-691.3515 413.1661,-684.038 402.6128,-684.9748 405.5003,-691.3515"/> </g> <!-- 24 --> -<g id="node25" class="node"><title>24</title> -<path fill="none" stroke="#d89556" stroke-width="2" d="M359.5,-900C359.5,-900 272.5,-900 272.5,-900 266.5,-900 260.5,-894 260.5,-888 260.5,-888 260.5,-876 260.5,-876 260.5,-870 266.5,-864 272.5,-864 272.5,-864 359.5,-864 359.5,-864 365.5,-864 371.5,-870 371.5,-876 371.5,-876 371.5,-888 371.5,-888 371.5,-894 365.5,-900 359.5,-900"/> -<text text-anchor="middle" x="316" y="-879.5" font-family="sans" font-size="10.00">extract_transcriptome</text> -</g> -<!-- 24->14 --> -<g id="edge27" class="edge"><title>24->14</title> -<path fill="none" stroke="grey" stroke-width="2" d="M338.247,-863.697C349.582,-854.881 363.53,-844.032 375.819,-834.474"/> -<polygon fill="grey" stroke="grey" stroke-width="2" points="378.264,-837.007 384.009,-828.104 373.966,-831.481 378.264,-837.007"/> +<g id="node25" class="node"> +<title>24</title> +<path fill="none" stroke="#5692d8" stroke-width="2" d="M508.5,-756C508.5,-756 407.5,-756 407.5,-756 401.5,-756 395.5,-750 395.5,-744 395.5,-744 395.5,-732 395.5,-732 395.5,-726 401.5,-720 407.5,-720 407.5,-720 508.5,-720 508.5,-720 514.5,-720 520.5,-726 520.5,-732 520.5,-732 520.5,-744 520.5,-744 520.5,-750 514.5,-756 508.5,-756"/> +<text text-anchor="middle" x="458" y="-735.5" font-family="sans" font-size="10.00" fill="#000000">extract_transcriptome</text> </g> -<!-- 31 --> -<g id="node32" class="node"><title>31</title> -<path fill="none" stroke="#d86656" stroke-width="2" d="M321.5,-828C321.5,-828 150.5,-828 150.5,-828 144.5,-828 138.5,-822 138.5,-816 138.5,-816 138.5,-804 138.5,-804 138.5,-798 144.5,-792 150.5,-792 150.5,-792 321.5,-792 321.5,-792 327.5,-792 333.5,-798 333.5,-804 333.5,-804 333.5,-816 333.5,-816 333.5,-822 327.5,-828 321.5,-828"/> -<text text-anchor="middle" x="236" y="-807.5" font-family="sans" font-size="10.00">concatenate_transcriptome_and_genome</text> -</g> -<!-- 24->31 --> -<g id="edge49" class="edge"><title>24->31</title> -<path fill="none" stroke="grey" stroke-width="2" d="M296.225,-863.697C286.246,-854.965 273.989,-844.24 263.143,-834.75"/> -<polygon fill="grey" stroke="grey" stroke-width="2" points="265.378,-832.055 255.548,-828.104 260.769,-837.323 265.378,-832.055"/> -</g> -<!-- 25 --> -<g id="node26" class="node"><title>25</title> -<path fill="none" stroke="#c6d856" stroke-width="2" d="M590,-900C590,-900 480,-900 480,-900 474,-900 468,-894 468,-888 468,-888 468,-876 468,-876 468,-870 474,-864 480,-864 480,-864 590,-864 590,-864 596,-864 602,-870 602,-876 602,-876 602,-888 602,-888 602,-894 596,-900 590,-900"/> -<text text-anchor="middle" x="535" y="-879.5" font-family="sans" font-size="10.00">remove_adapters_cutadapt</text> +<!-- 24->17 --> +<g id="edge30" class="edge"> +<title>24->17</title> +<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M417.6252,-719.8314C396.3213,-710.2446 370.0017,-698.4008 347.4789,-688.2655"/> +<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="348.6399,-684.95 338.0844,-684.038 345.7674,-691.3334 348.6399,-684.95"/> </g> -<!-- 25->15 --> -<g id="edge28" class="edge"><title>25->15</title> -<path fill="none" stroke="grey" stroke-width="2" d="M535.742,-863.697C536.072,-855.983 536.469,-846.712 536.838,-838.112"/> -<polygon fill="grey" stroke="grey" stroke-width="2" points="540.335,-838.245 537.267,-828.104 533.342,-837.945 540.335,-838.245"/> -</g> -<!-- 26->16 --> -<g id="edge29" class="edge"><title>26->16</title> -<path fill="none" stroke="grey" stroke-width="2" d="M695.573,-575.697C692.645,-567.813 689.113,-558.304 685.86,-549.546"/> -<polygon fill="grey" stroke="grey" stroke-width="2" points="689.116,-548.26 682.353,-540.104 682.554,-550.697 689.116,-548.26"/> -</g> -<!-- 27 --> -<g id="node28" class="node"><title>27</title> -<path fill="none" stroke="#d85656" stroke-width="2" d="M283.5,-756C283.5,-756 198.5,-756 198.5,-756 192.5,-756 186.5,-750 186.5,-744 186.5,-744 186.5,-732 186.5,-732 186.5,-726 192.5,-720 198.5,-720 198.5,-720 283.5,-720 283.5,-720 289.5,-720 295.5,-726 295.5,-732 295.5,-732 295.5,-744 295.5,-744 295.5,-750 289.5,-756 283.5,-756"/> -<text text-anchor="middle" x="241" y="-735.5" font-family="sans" font-size="10.00">create_index_salmon</text> -</g> -<!-- 27->17 --> -<g id="edge31" class="edge"><title>27->17</title> -<path fill="none" stroke="grey" stroke-width="2" d="M294.78,-719.966C325.927,-710.1 365.323,-697.622 398.052,-687.255"/> -<polygon fill="grey" stroke="grey" stroke-width="2" points="399.502,-690.467 407.979,-684.111 397.389,-683.794 399.502,-690.467"/> +<!-- 29 --> +<g id="node30" class="node"> +<title>29</title> +<path fill="none" stroke="#70d856" stroke-width="2" d="M1027,-684C1027,-684 833,-684 833,-684 827,-684 821,-678 821,-672 821,-672 821,-660 821,-660 821,-654 827,-648 833,-648 833,-648 1027,-648 1027,-648 1033,-648 1039,-654 1039,-660 1039,-660 1039,-672 1039,-672 1039,-678 1033,-684 1027,-684"/> +<text text-anchor="middle" x="930" y="-663.5" font-family="sans" font-size="10.00" fill="#000000">concatenate_transcriptome_and_genome</text> +</g> +<!-- 24->29 --> +<g id="edge48" class="edge"> +<title>24->29</title> +<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M520.7325,-721.8538C523.859,-721.1946 526.961,-720.5718 530,-720 651.0189,-697.2303 685.1517,-701.2979 810.7194,-684.1497"/> +<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="811.2969,-687.6032 820.7227,-682.7654 810.3373,-680.6693 811.2969,-687.6032"/> +</g> +<!-- 25->18 --> +<g id="edge31" class="edge"> +<title>25->18</title> +<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M614,-719.8314C614,-712.131 614,-702.9743 614,-694.4166"/> +<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="617.5001,-694.4132 614,-684.4133 610.5001,-694.4133 617.5001,-694.4132"/> </g> -<!-- 27->18 --> -<g id="edge33" class="edge"><title>27->18</title> -<path fill="none" stroke="grey" stroke-width="2" d="M258.551,-719.697C267.234,-711.135 277.863,-700.656 287.348,-691.304"/> -<polygon fill="grey" stroke="grey" stroke-width="2" points="289.988,-693.617 294.651,-684.104 285.073,-688.633 289.988,-693.617"/> +<!-- 26 --> +<g id="node27" class="node"> +<title>26</title> +<path fill="none" stroke="#97d856" stroke-width="2" d="M338.5,-468C338.5,-468 243.5,-468 243.5,-468 237.5,-468 231.5,-462 231.5,-456 231.5,-456 231.5,-444 231.5,-444 231.5,-438 237.5,-432 243.5,-432 243.5,-432 338.5,-432 338.5,-432 344.5,-432 350.5,-438 350.5,-444 350.5,-444 350.5,-456 350.5,-456 350.5,-462 344.5,-468 338.5,-468"/> +<text text-anchor="middle" x="291" y="-447.5" font-family="sans" font-size="10.00" fill="#000000">calculate_TIN_scores</text> +</g> +<!-- 26->19 --> +<g id="edge32" class="edge"> +<title>26->19</title> +<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M287.7196,-431.8314C286.3292,-424.131 284.6759,-414.9743 283.1308,-406.4166"/> +<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="286.5458,-405.6322 281.3246,-396.4133 279.6572,-406.8761 286.5458,-405.6322"/> +</g> +<!-- 27->20 --> +<g id="edge33" class="edge"> +<title>27->20</title> +<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M515.3642,-287.8314C508.6839,-279.5386 500.6432,-269.557 493.3096,-260.4533"/> +<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="495.8319,-258.0052 486.8329,-252.4133 490.3806,-262.3965 495.8319,-258.0052"/> </g> <!-- 28 --> -<g id="node29" class="node"><title>28</title> -<path fill="none" stroke="#5663d8" stroke-width="2" d="M1030,-828C1030,-828 960,-828 960,-828 954,-828 948,-822 948,-816 948,-816 948,-804 948,-804 948,-798 954,-792 960,-792 960,-792 1030,-792 1030,-792 1036,-792 1042,-798 1042,-804 1042,-804 1042,-816 1042,-816 1042,-822 1036,-828 1030,-828"/> -<text text-anchor="middle" x="995" y="-807.5" font-family="sans" font-size="10.00">create_index_star</text> -</g> -<!-- 28->19 --> -<g id="edge35" class="edge"><title>28->19</title> -<path fill="none" stroke="grey" stroke-width="2" d="M995,-791.697C995,-783.983 995,-774.712 995,-766.112"/> -<polygon fill="grey" stroke="grey" stroke-width="2" points="998.5,-766.104 995,-756.104 991.5,-766.104 998.5,-766.104"/> +<g id="node29" class="node"> +<title>28</title> +<path fill="none" stroke="#d8a456" stroke-width="2" d="M609,-468C609,-468 573,-468 573,-468 567,-468 561,-462 561,-456 561,-456 561,-444 561,-444 561,-438 567,-432 573,-432 573,-432 609,-432 609,-432 615,-432 621,-438 621,-444 621,-444 621,-456 621,-456 621,-462 615,-468 609,-468"/> +<text text-anchor="middle" x="591" y="-447.5" font-family="sans" font-size="10.00" fill="#000000">star_rpm</text> </g> <!-- 28->21 --> -<g id="edge39" class="edge"><title>28->21</title> -<path fill="none" stroke="grey" stroke-width="2" d="M964.911,-791.876C948.68,-782.639 928.458,-771.131 911.029,-761.212"/> -<polygon fill="grey" stroke="grey" stroke-width="2" points="912.627,-758.094 902.205,-756.19 909.165,-764.178 912.627,-758.094"/> -</g> -<!-- 34 --> -<g id="node35" class="node"><title>34</title> -<path fill="none" stroke="#56b1d8" stroke-width="2" d="M1126,-540C1126,-540 1046,-540 1046,-540 1040,-540 1034,-534 1034,-528 1034,-528 1034,-516 1034,-516 1034,-510 1040,-504 1046,-504 1046,-504 1126,-504 1126,-504 1132,-504 1138,-510 1138,-516 1138,-516 1138,-528 1138,-528 1138,-534 1132,-540 1126,-540"/> -<text text-anchor="middle" x="1086" y="-519.5" font-family="sans" font-size="10.00">generate_alfa_index</text> -</g> -<!-- 28->34 --> -<g id="edge51" class="edge"><title>28->34</title> -<path fill="none" stroke="grey" stroke-width="2" d="M1025.63,-791.97C1038.75,-783.028 1052.89,-770.827 1061,-756 1097.51,-689.252 1094.02,-595.687 1089.49,-550.104"/> -<polygon fill="grey" stroke="grey" stroke-width="2" points="1092.96,-549.666 1088.4,-540.104 1086,-550.425 1092.96,-549.666"/> -</g> -<!-- 29 --> -<g id="node30" class="node"><title>29</title> -<path fill="none" stroke="#b6d856" stroke-width="2" d="M942,-468C942,-468 912,-468 912,-468 906,-468 900,-462 900,-456 900,-456 900,-444 900,-444 900,-438 906,-432 912,-432 912,-432 942,-432 942,-432 948,-432 954,-438 954,-444 954,-444 954,-456 954,-456 954,-462 948,-468 942,-468"/> -<text text-anchor="middle" x="927" y="-447.5" font-family="sans" font-size="10.00">alfa_qc</text> +<g id="edge34" class="edge"> +<title>28->21</title> +<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M575.6071,-431.8314C568.5096,-423.454 559.952,-413.3531 552.176,-404.1749"/> +<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="554.7348,-401.7807 545.6001,-396.4133 549.3939,-406.3056 554.7348,-401.7807"/> </g> <!-- 29->22 --> -<g id="edge40" class="edge"><title>29->22</title> -<path fill="none" stroke="grey" stroke-width="2" d="M920.573,-431.697C917.645,-423.813 914.113,-414.304 910.86,-405.546"/> -<polygon fill="grey" stroke="grey" stroke-width="2" points="914.116,-404.26 907.353,-396.104 907.554,-406.697 914.116,-404.26"/> -</g> -<!-- 30 --> -<g id="node31" class="node"><title>30</title> -<path fill="none" stroke="#a7d856" stroke-width="2" d="M762.5,-684C762.5,-684 641.5,-684 641.5,-684 635.5,-684 629.5,-678 629.5,-672 629.5,-672 629.5,-660 629.5,-660 629.5,-654 635.5,-648 641.5,-648 641.5,-648 762.5,-648 762.5,-648 768.5,-648 774.5,-654 774.5,-660 774.5,-660 774.5,-672 774.5,-672 774.5,-678 768.5,-684 762.5,-684"/> -<text text-anchor="middle" x="702" y="-663.5" font-family="sans" font-size="10.00">extract_transcripts_as_bed12</text> +<g id="edge36" class="edge"> +<title>29->22</title> +<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M930,-647.8314C930,-640.131 930,-630.9743 930,-622.4166"/> +<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="933.5001,-622.4132 930,-612.4133 926.5001,-622.4133 933.5001,-622.4132"/> </g> <!-- 30->26 --> -<g id="edge42" class="edge"><title>30->26</title> -<path fill="none" stroke="grey" stroke-width="2" d="M702,-647.697C702,-639.983 702,-630.712 702,-622.112"/> -<polygon fill="grey" stroke="grey" stroke-width="2" points="705.5,-622.104 702,-612.104 698.5,-622.104 705.5,-622.104"/> +<g id="edge40" class="edge"> +<title>30->26</title> +<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M436.2442,-577.9722C433.1239,-577.2817 430.0296,-576.6199 427,-576 377.3918,-565.85 234.8551,-578.5298 202,-540 191.6184,-527.8253 194.1512,-517.9426 202,-504 209.2034,-491.2038 220.7994,-481.0907 233.2742,-473.2465"/> +<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="235.1189,-476.2227 242.0078,-468.1733 231.6028,-470.1698 235.1189,-476.2227"/> +</g> +<!-- 30->28 --> +<g id="edge46" class="edge"> +<title>30->28</title> +<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M552.7084,-575.7905C568.8649,-567.5107 584.7454,-555.9057 594,-540 604.8131,-521.4157 603.1421,-496.8239 599.2798,-478.0433"/> +<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="602.6794,-477.2099 596.974,-468.2825 595.8669,-478.8193 602.6794,-477.2099"/> </g> -<!-- 31->27 --> -<g id="edge45" class="edge"><title>31->27</title> -<path fill="none" stroke="grey" stroke-width="2" d="M237.236,-791.697C237.787,-783.983 238.449,-774.712 239.063,-766.112"/> -<polygon fill="grey" stroke="grey" stroke-width="2" points="242.557,-766.328 239.778,-756.104 235.575,-765.83 242.557,-766.328"/> +<!-- 31 --> +<g id="node32" class="node"> +<title>31</title> +<path fill="none" stroke="#56d89a" stroke-width="2" d="M573,-540C573,-540 401,-540 401,-540 395,-540 389,-534 389,-528 389,-528 389,-516 389,-516 389,-510 395,-504 401,-504 401,-504 573,-504 573,-504 579,-504 585,-510 585,-516 585,-516 585,-528 585,-528 585,-534 579,-540 573,-540"/> +<text text-anchor="middle" x="487" y="-519.5" font-family="sans" font-size="10.00" fill="#000000">index_genomic_alignment_samtools</text> +</g> +<!-- 30->31 --> +<g id="edge52" class="edge"> +<title>30->31</title> +<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M495.9719,-575.8314C494.6885,-568.131 493.1624,-558.9743 491.7361,-550.4166"/> +<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="495.1653,-549.7018 490.0689,-540.4133 488.2606,-550.8526 495.1653,-549.7018"/> +</g> +<!-- 31->26 --> +<g id="edge42" class="edge"> +<title>31->26</title> +<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M437.7939,-503.9243C411.1161,-494.1243 377.9614,-481.945 349.9148,-471.6422"/> +<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="350.8199,-468.246 340.2263,-468.0831 348.4062,-474.8167 350.8199,-468.246"/> +</g> +<!-- 31->28 --> +<g id="edge47" class="edge"> +<title>31->28</title> +<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M513.2436,-503.8314C526.2995,-494.7927 542.2535,-483.7476 556.3047,-474.0198"/> +<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="558.5351,-476.7326 564.7648,-468.1628 554.5506,-470.9773 558.5351,-476.7326"/> </g> <!-- 32 --> -<g id="node33" class="node"><title>32</title> -<path fill="none" stroke="#d8bc56" stroke-width="2" d="M108,-828C108,-828 12,-828 12,-828 6,-828 0,-822 0,-816 0,-816 0,-804 0,-804 0,-798 6,-792 12,-792 12,-792 108,-792 108,-792 114,-792 120,-798 120,-804 120,-804 120,-816 120,-816 120,-822 114,-828 108,-828"/> -<text text-anchor="middle" x="60" y="-807.5" font-family="sans" font-size="10.00">extract_decoys_salmon</text> -</g> -<!-- 32->27 --> -<g id="edge46" class="edge"><title>32->27</title> -<path fill="none" stroke="grey" stroke-width="2" d="M104.278,-791.876C129.351,-782.179 160.896,-769.98 187.365,-759.743"/> -<polygon fill="grey" stroke="grey" stroke-width="2" points="188.802,-762.94 196.866,-756.068 186.277,-756.411 188.802,-762.94"/> -</g> -<!-- 33->29 --> -<g id="edge47" class="edge"><title>33->29</title> -<path fill="none" stroke="grey" stroke-width="2" d="M927,-503.697C927,-495.983 927,-486.712 927,-478.112"/> -<polygon fill="grey" stroke="grey" stroke-width="2" points="930.5,-478.104 927,-468.104 923.5,-478.104 930.5,-478.104"/> -</g> -<!-- 34->29 --> -<g id="edge48" class="edge"><title>34->29</title> -<path fill="none" stroke="grey" stroke-width="2" d="M1047.1,-503.876C1021.51,-492.607 988.231,-477.957 963.198,-466.936"/> -<polygon fill="grey" stroke="grey" stroke-width="2" points="964.604,-463.731 954.041,-462.905 961.783,-470.138 964.604,-463.731"/> +<g id="node33" class="node"> +<title>32</title> +<path fill="none" stroke="#61d856" stroke-width="2" d="M359,-540C359,-540 223,-540 223,-540 217,-540 211,-534 211,-528 211,-528 211,-516 211,-516 211,-510 217,-504 223,-504 223,-504 359,-504 359,-504 365,-504 371,-510 371,-516 371,-516 371,-528 371,-528 371,-534 365,-540 359,-540"/> +<text text-anchor="middle" x="291" y="-519.5" font-family="sans" font-size="10.00" fill="#000000">extract_transcripts_as_bed12</text> +</g> +<!-- 32->26 --> +<g id="edge41" class="edge"> +<title>32->26</title> +<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M291,-503.8314C291,-496.131 291,-486.9743 291,-478.4166"/> +<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="294.5001,-478.4132 291,-468.4133 287.5001,-478.4133 294.5001,-478.4132"/> +</g> +<!-- 33->26 --> +<g id="edge39" class="edge"> +<title>33->26</title> +<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M630.2977,-575.6979C626.2231,-554.9601 616.4396,-521.746 594,-504 558.7533,-476.1257 439.0231,-461.5688 361.0402,-454.8624"/> +<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="361.0572,-451.3517 350.8003,-454.0061 360.4738,-458.3274 361.0572,-451.3517"/> +</g> +<!-- 33->28 --> +<g id="edge45" class="edge"> +<title>33->28</title> +<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M647.947,-575.85C661.321,-557.2624 677.0963,-527.8017 665,-504 657.4342,-489.1129 643.6258,-477.3535 629.9685,-468.6606"/> +<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="631.4689,-465.4812 621.0827,-463.3889 627.8972,-471.5014 631.4689,-465.4812"/> +</g> +<!-- 33->31 --> +<g id="edge51" class="edge"> +<title>33->31</title> +<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M596.158,-575.8314C576.8918,-566.3302 553.1301,-554.6121 532.7008,-544.5374"/> +<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="534.0938,-541.3219 523.577,-540.038 530.9977,-547.6 534.0938,-541.3219"/> +</g> +<!-- 34->27 --> +<g id="edge44" class="edge"> +<title>34->27</title> +<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M641.401,-359.8314C618.3665,-348.7006 589.0355,-334.5272 566.2526,-323.5181"/> +<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="567.7689,-320.3636 557.2422,-319.164 564.7233,-326.6663 567.7689,-320.3636"/> </g> </g> </svg> diff --git a/pipeline_documentation.md b/pipeline_documentation.md index b34ee66b376c8193e8508101996ce24e346ffa27..0b22e0e02710c114274c4fba92a6b933e1882f6b 100644 --- a/pipeline_documentation.md +++ b/pipeline_documentation.md @@ -3,39 +3,36 @@ This document describes the individual rules of the pipeline for information pur ## Overview ### General -* read samples table -* create log directories -* **create_index_star** -* **extract_transcriptome** -* **extract_decoys_salmon** -* **concatenate_transcriptome_and_genome** -* **create_index_salmon** -* **create_index_kallisto** -* **extract_transcripts_as_bed12** -* **index_genomic_alignment_samtools** -* **star_rpm** -* **rename_star_rpm_for_alfa** -* **calculate_TIN_scores** -* **merge_TIN_scores** -* **plot_TIN_scores** -* **salmon_quantmerge_genes** -* **salmon_quantmerge_transcripts** -* **generate_alfa_index** -* **alfa_qc** -* **alfa_qc_all_samples** -* **alfa_concat_results** -* **prepare_files_for_report** -* **prepare_MultiQC_config** -* **MULTIQC_report** +* [read samples table](#read-samples-table) +* [create log directories](#create-log-directories) +* **[create_index_star](#create_index_star)** +* **[extract_transcriptome](#extract_transcriptome)** +* **[create_index_salmon](#create_index_salmon)** +* **[create_index_kallisto](#create_index_kallisto)** +* **[extract_transcripts_as_bed12](#extract_transcripts_as_bed12)** +* **[index_genomic_alignment_samtools](#index_genomic_alignment_samtools)** +* **[star_rpm](#star_rpm)** +* **[rename_star_rpm_for_alfa](#rename_star_rpm_for_alfa)** +* **[calculate_TIN_scores](#calculate_TIN_scores)** +* **[merge_TIN_scores](#merge_TIN_scores)** +* **[plot_TIN_scores](#plot_TIN_scores)** +* **[salmon_quantmerge_genes](#salmon_quantmerge_genes)** +* **[salmon_quantmerge_transcripts](#salmon_quantmerge_transcripts)** +* **[generate_alfa_index](#generate_alfa_index)** +* **[alfa_qc](#alfa_qc)** +* **[alfa_qc_all_samples](#alfa_qc_all_samples)** +* **[prepare_files_for_report](#prepare_files_for_report)** +* **[prepare_MultiQC_config](#prepare_MultiQC_config)** +* **[MULTIQC_report](#MULTIQC_report)** +* **[sort_bed_4_big](#sort_bed_4_big)** ### Sequencing mode specific -* **(pe_)fastqc** -* **(pe_)remove_adapters_cutadapt** -* **(pe_)remove_polya_cutadapt** -* **(pe_)map_genome_star** -* **(pe_)quantification_salmon** -* **(pe_)genome_quantification_kallisto** - +* **[(pe_)fastqc](#(pe_)fastqc)** +* **[(pe_)remove_adapters_cutadapt](#(pe_)remove_adapters_cutadapt)** +* **[(pe_)remove_polya_cutadapt](#(pe_)remove_polya_cutadapt)** +* **[(pe_)map_genome_star](#(pe_)map_genome_star)** +* **[(pe_)quantification_salmon](#(pe_)quantification_salmon)** +* **[(pe_)genome_quantification_kallisto](#(pe_)genome_quantification_kallisto)** @@ -100,23 +97,7 @@ Create transcriptome from genome and gene annotations using [gffread](https://gi **Input:** `genome` and `gtf` of the input samples table **Output:** transcriptome fasta file. - -#### extract_decoys_salmon -Salmon indexing requires the names of the genome targets (https://combine-lab.github.io/alevin-tutorial/2019/selective-alignment/). Extract target names from the genome. - - -**Input:** `genome` of the input samples table -**Output:** text file with the genome targert names - - -#### concatenate_transcriptome_and_genome -Salmon indexing requires concatenated transcriptome and genome reference file (https://combine-lab.github.io/alevin-tutorial/2019/selective-alignment/). - - -**Input:** `genome` of the input samples table and extracted transcriptome -**Output:** fasta file with concatenated genome and transcriptome - - + #### create_index_salmon Create index for [Salmon](https://salmon.readthedocs.io/en/latest/salmon.html) quantification. Salmon index of transcriptome, required for mapping-based mode of Salmon. The index is created via an auxiliary k-mer hash over k-mers of length 31. While mapping algorithms will make use of arbitrarily long matches between the query and reference, the k-mer size selected here will act as the minimum acceptable length for a valid match. A k-mer size of 31 seems to work well for reads of 75bp or longer, although smaller size might improve sensitivity. A smaller k-mer size is suggested when working with shorter reads. @@ -263,6 +244,18 @@ Interactive report of the various workflow steps. [MultiQC](https://multiqc.info **Input:** Config file fort MultiQC in .yaml format **Output:** Directory with automatically generated HTML report +#### sort_bed_4_big +Sorts bedgraph files for creating bigWig files. Using [bedtools sortBed](https://bedtools.readthedocs.io/en/latest/content/tools/sort.html) + +**Input:** bedgraph files from `rename_star_rpm_for_alfa` +**Output:** sorted bedgraph files + + +#### prepare_bigWig +Check out some infos on bigWig files and [bedGraphtobigWig](http://genome.ucsc.edu/goldenPath/help/bigWig.html). + +**Input:** sorted bedgraph files, chromosome sizes from create_STAR_index +**Output:** one bigWig file per sample and strand ### Sequencing mode specific rules diff --git a/scripts/labkey_to_snakemake.py b/scripts/labkey_to_snakemake.py index 41fbb3e1455a47fb7377805ef602314d0836c46a..6cce1e4c82708e8bd4de7168358075be70ffc95a 100755 --- a/scripts/labkey_to_snakemake.py +++ b/scripts/labkey_to_snakemake.py @@ -1,262 +1,195 @@ #!/usr/bin/env python3 -# ----------------------------------------------------------------------------- -# Author : Katsantoni Maria, Christina Herrmann -# Company: Mihaela Zavolan, Biozentrum, Basel -# This script is part of the Zavolan lab quantification pipeline, which is used -# for analysing RNA-seq data. The table is provided by labkey as a csv file. -# If the user provides their own table the table should contain the following -# columns: -# ----------------------------------------------------------------------------- +"""Create input table and config for Rhea.""" -import sys +import argparse import gzip -import labkey -from argparse import ArgumentParser, RawTextHelpFormatter +import logging +import math import os import sys -import numpy as np -import pandas as pd -from Bio import SeqIO -from io import StringIO -from csv import writer -from pathlib import Path -# (avoids long lines in filter definitions) -from labkey.query import QueryFilter - +from typing import Tuple -def main(): - """ Preprocess sample folder and create config file for snakemake""" - - __doc__ = "Preprocess of labkey table and create " + \ - "config file and sample table." - - parser = ArgumentParser(description=__doc__, - formatter_class=RawTextHelpFormatter) - - parser.add_argument("genomes_path", - help="Path containing the FASTA and GTF " + - " files for all organisms", - metavar="GENOMES PATH") - - parser.add_argument("--input-table", - type=str, - default=None, - help="Input table in LabKey format " + - "containing the sample information;" + - "\nexactly one '--input-table' and " + - "'--remote' is required.", - metavar="FILE") - - parser.add_argument("--remote", - action="store_true", - help="Fetch LabKey table via API; exactly one of " + - "'--input-table' and" + - "\n'--remote' is required.") - - parser.add_argument("--project-name", - help="Name of LabKey project containing table " + - " '--table-name'; required" + - "\nif '--remote' is specified.", - metavar="STR") - - parser.add_argument("--table-name", - help="Name of LabKey table; required if '--remote'" + - " is specified.", - metavar="STR") - - parser.add_argument("--input-dict", - help="Input dictionary containing the feature name " + - "conversion from LabKey to Snakemake;" + - "default: '%(default)s'", - default=os.path.join( - os.path.dirname(__file__), - 'labkey_to_snakemake.dict.tsv'), - metavar="FILE") - - parser.add_argument("--samples-table", - help="Output table compatible to snakemake;" + - "default: '%(default)s'", - default='samples.tsv', - metavar="FILE") - - parser.add_argument("--trim_polya", - type=int, - choices=[True, False], - default=True, - help="Trim poly-As option") - - parser.add_argument("--multimappers", - type=int, - default=100, - help="Number of allowed multimappers", - metavar='INT') - - parser.add_argument("--soft-clip", - choices=['EndToEnd', 'Local'], - default='EndToEnd', - help="Soft-clipping option for STAR") - - parser.add_argument("--pass-mode", - choices=['None', 'Basic'], - default='None', - help="2-pass mode option for STAR") - - parser.add_argument("--libtype", - default='A', - help="Library type for salmon", - metavar="STR") - - parser.add_argument("--config-file", - help="Configuration file to be used by Snakemake") - - try: - options = parser.parse_args() - except(Exception): - parser.print_help() - - if len(sys.argv) == 1: - parser.print_help() - sys.exit(1) +from Bio import SeqIO +import labkey +import pandas as pd - if options.remote and options.input_table: - parser.print_help() - print( - "\n[ERROR] Options '--input-table' and ", - "'--remote' are mutually exclusive.") - sys.exit(1) +logger = logging.getLogger(__name__) - if not options.remote and not options.input_table: - parser.print_help() - print("\n[ERROR] At least one of '--input-table' ", - "and '--remote' is required.") - sys.exit(1) - if options.remote and not options.project_name: - parser.print_help() - print( - "\n[ERROR] If option '--remote' is specified, ", - "option '--project-name' is required.") - sys.exit(1) +def main(): + """ + Create input table and config for Rhea. + """ + args = parse_cli_args() + + setup_logging( + logger=logger, + verbose=args.verbose, + debug=args.debug, + ) - if options.remote and not options.table_name: - parser.print_help() - print( - "\n[ERROR] If option '--remote' is specified, ", - "option '--table-name' is required.") - sys.exit(1) - - sys.stdout.write('Reading input file...\n') - - if options.remote is True: - input_table = api_fetch_labkey_table( - project_name=options.project_name, - query_name=options.table_name) - input_table.to_csv(options.input_table, sep='\t', index=False) + # get input table from LabKey or CLI + if args.labkey_domain: + logger.info( + f"Fetching input table from LabKey instance " + "'{args.labkey_domain}'..." + ) + input_table = fetch_labkey_table( + domain=args.labkey_domain, + container_path=args.labkey_path, + query_name=args.table, + ) + labkey_table = expand_path( + '.'.join([args.output_table.name, "labkey"]) + ) + input_table.to_csv( + labkey_table, + sep='\t', + index=False, + ) + from_api = True else: + logger.info(f"Reading input table from file '{args.table}'...") input_table = pd.read_csv( - options.input_table, + args.table, header=0, sep='\t', index_col=None, comment='#', - engine='python') + engine='python', + ) + from_api = False + # get LabKey to Snakemake sample table field mappings input_dict = pd.read_csv( - options.input_dict, + args.input_to_output_mapping, header=0, sep='\t', index_col=None, comment='#', - engine='python') - + engine='python', + ) + args.input_to_output_mapping.close() input_dict.set_index('snakemake', inplace=True, drop=True) - sys.stdout.write('Create snakemake table...\n') + + # create Snakemake table + logger.info("Creating Snakemake input table...") snakemake_table = pd.DataFrame() for index, row in input_table.iterrows(): - snakemake_table.loc[index, 'sample'] = row[ - input_dict.loc['replicate_name', 'labkey']] + "_" + row[ - input_dict.loc['condition', 'labkey']] - if row[input_dict.loc['seqmode', 'labkey']] == 'PAIRED': - snakemake_table.loc[index, 'seqmode'] = 'paired_end' - elif row[input_dict.loc['seqmode', 'labkey']] == 'SINGLE': - snakemake_table.loc[index, 'seqmode'] = 'single_end' - - fq1 = os.path.join( - row[input_dict.loc['fastq_path', 'labkey']], - row[input_dict.loc['fq1', 'labkey']]) - snakemake_table.loc[index, 'fq1'] = fq1 + # extract data from LabKey-like table + lk_replicate_name = row[input_dict.loc['replicate_name', 'labkey']] + lk_condition = row[input_dict.loc['condition', 'labkey']] + lk_seqmode = row[input_dict.loc['seqmode', 'labkey']] + lk_fastq_path = row[input_dict.loc['fastq_path', 'labkey']] + lk_fq1 = row[input_dict.loc['fq1', 'labkey']] + lk_fq2 = row[input_dict.loc['fq2', 'labkey']] + lk_fq1_3p = row[input_dict.loc['fq1_3p', 'labkey']] + lk_fq1_5p = row[input_dict.loc['fq1_5p', 'labkey']] + lk_fq2_3p = row[input_dict.loc['fq2_3p', 'labkey']] + lk_fq2_5p = row[input_dict.loc['fq2_5p', 'labkey']] + lk_organism = row[input_dict.loc['organism', 'labkey']] + lk_sd = row[input_dict.loc['sd', 'labkey']] + lk_mean = row[input_dict.loc['mean', 'labkey']] + lk_mate1_direction = row[input_dict.loc['mate1_direction', 'labkey']] + lk_mate2_direction = row[input_dict.loc['mate2_direction', 'labkey']] + + # extract, infer or convert to Snakemake input format + if from_api and not os.path.isabs(lk_fastq_path): + anchor = os.getcwd() + logger.warning( + f"[WARNING] Don't know how to interpret relative paths " + "inside LabKey table. Trying with current working directory " + f"'{anchor}' as an anchor, but it may be better to use" + "absolute paths wherever possible..." + ) + else: + anchor = os.path.abspath(os.path.dirname(args.table)) + sample = "_".join([lk_replicate_name, lk_condition]) + if lk_seqmode == 'PAIRED': + seqmode = 'pe' + fq2 = expand_path( + lk_fastq_path, + lk_fq2, + anchor=anchor, + ) + elif lk_seqmode == 'SINGLE': + seqmode = 'se' + fq2 = "XXXXXXXXXXXXXXX" + else: + logger.error( + f"[ERROR] Illegal sequencing mode '{lk_seqmode}' in row " + f"{index+1}." + ) + sys.exit("Execution aborted.") + fq1 = expand_path( + lk_fastq_path, + lk_fq1, + anchor=anchor, + ) read_length = get_read_length(fq1) - snakemake_table.loc[index, 'index_size'] = read_length - snakemake_table.loc[index, 'kmer'] = infer_kmer_length(read_length) - snakemake_table.loc[index, 'fq1_3p'] = row[ - input_dict.loc['fq1_3p', 'labkey']] - snakemake_table.loc[index, 'fq1_5p'] = row[ - input_dict.loc['fq1_5p', 'labkey']] - - organism = row[input_dict.loc['organism', 'labkey']].replace( - ' ', '_').lower() - snakemake_table.loc[index, 'organism'] = organism - - snakemake_table.loc[index, 'gtf'] = os.path.join( - options.genomes_path, - organism, - 'annotation.gtf') - - snakemake_table.loc[index, 'gtf_filtered'] = os.path.join( - options.genomes_path, + index_size = read_length - 1 + kmer = kmer_from_read_length(read_length) + fq1_3p = lk_fq1_3p + fq1_5p = lk_fq1_5p + fq2_3p = lk_fq2_3p + fq2_5p = lk_fq2_5p + organism = lk_organism.replace(' ', '_').lower() + gtf = expand_path( + args.resources_dir, organism, - 'annotation.gtf') - - snakemake_table.loc[index, 'genome'] = os.path.join( - options.genomes_path, + 'annotation.gtf', + ) + genome = expand_path( + args.resources_dir, organism, - 'genome.fa') - - snakemake_table.loc[index, 'tr_fasta_filtered'] = os.path.join( - options.genomes_path, - organism, - 'transcriptome.fa') - - snakemake_table.loc[index, 'sd'] = row[ - input_dict.loc['sd', 'labkey']] - snakemake_table.loc[index, 'mean'] = row[ - input_dict.loc['mean', 'labkey']] - snakemake_table.loc[index, 'multimappers'] = options.multimappers - snakemake_table.loc[index, 'soft_clip'] = options.soft_clip - snakemake_table.loc[index, 'pass_mode'] = options.pass_mode - snakemake_table.loc[index, 'libtype'] = options.libtype - - if options.trim_polya is True: - fq1_polya_3p, fq1_polya_5p = trim_polya( - row[input_dict.loc['mate1_direction', 'labkey']]) + 'genome.fa', + ) + sd = lk_sd + mean = lk_mean + fq1_polya_3p, fq1_polya_5p = get_polya_adapter_seqs(lk_mate1_direction) + fq2_polya_3p, fq2_polya_5p = get_polya_adapter_seqs(lk_mate2_direction) + kallisto_directionality = get_strand_param_kallisto(lk_mate1_direction) + alfa_directionality = get_strand_param_alfa(lk_mate1_direction) + alfa_plus, alfa_minus = get_strand_names_alfa(lk_mate1_direction) + + # construct row in Snakemake input table + snakemake_table.loc[index, 'sample'] = sample + snakemake_table.loc[index, 'seqmode'] = seqmode + snakemake_table.loc[index, 'fq1'] = fq1 + snakemake_table.loc[index, 'fq2'] = fq2 + snakemake_table.loc[index, 'index_size'] = index_size + snakemake_table.loc[index, 'kmer'] = kmer + snakemake_table.loc[index, 'fq1_3p'] = fq1_3p + snakemake_table.loc[index, 'fq1_5p'] = fq1_5p + snakemake_table.loc[index, 'fq2_3p'] = fq2_3p + snakemake_table.loc[index, 'fq2_5p'] = fq2_5p + snakemake_table.loc[index, 'organism'] = organism + snakemake_table.loc[index, 'gtf'] = gtf + snakemake_table.loc[index, 'genome'] = genome + snakemake_table.loc[index, 'sd'] = sd + snakemake_table.loc[index, 'mean'] = mean + snakemake_table.loc[index, 'kallisto_directionality'] = \ + kallisto_directionality + snakemake_table.loc[index, 'alfa_directionality'] = alfa_directionality + snakemake_table.loc[index, 'alfa_plus'] = alfa_plus + snakemake_table.loc[index, 'alfa_minus'] = alfa_minus + + # add CLI argument-dependent parameters + snakemake_table.loc[index, 'multimappers'] = args.multimappers + snakemake_table.loc[index, 'soft_clip'] = args.soft_clip + snakemake_table.loc[index, 'pass_mode'] = args.pass_mode + snakemake_table.loc[index, 'libtype'] = args.libtype + if args.trim_polya is True: snakemake_table.loc[index, 'fq1_polya_3p'] = fq1_polya_3p snakemake_table.loc[index, 'fq1_polya_5p'] = fq1_polya_5p + snakemake_table.loc[index, 'fq2_polya_3p'] = fq2_polya_3p + snakemake_table.loc[index, 'fq2_polya_5p'] = fq2_polya_5p - snakemake_table.loc[index, 'kallisto_directionality'] = \ - get_kallisto_directionality( - row[input_dict.loc['mate1_direction', 'labkey']]) - - if row[input_dict.loc['seqmode', 'labkey']] == 'PAIRED': - fq2 = os.path.join( - row[input_dict.loc['fastq_path', 'labkey']], - row[input_dict.loc['fq2', 'labkey']]) - snakemake_table.loc[index, 'fq2'] = fq2 - - snakemake_table.loc[index, 'fq2_3p'] = row[ - input_dict.loc['fq2_3p', 'labkey']] - snakemake_table.loc[index, 'fq2_5p'] = row[ - input_dict.loc['fq2_5p', 'labkey']] - - if options.trim_polya is True: - fq2_polya_3p, fq2_polya_5p = trim_polya( - row[input_dict.loc['mate2_direction', 'labkey']]) - snakemake_table.loc[index, 'fq2_polya_3p'] = fq2_polya_3p - snakemake_table.loc[index, 'fq2_polya_5p'] = fq2_polya_5p - - snakemake_table.fillna('XXXXXXXXXXXXX', inplace=True) + # adjust sample table format + snakemake_table.fillna('XXXXXXXXXXXXXXX', inplace=True) snakemake_table = snakemake_table.astype( { "sd": int, @@ -266,82 +199,486 @@ def main(): "index_size": int, } ) + + # write Snakemake sample table + logger.info("Writing Snakemake input table...") snakemake_table.to_csv( - options.samples_table, + args.output_table, sep='\t', header=True, index=False) + args.output_table.close() - # Read file and infer read size for sjdbovwerhang - with open(options.config_file, 'w') as config_file: - config_file.write('''--- - samples: "''' + options.samples_table + '''" - output_dir: "results/" - log_dir: "logs/" - kallisto_indexes: "results/kallisto_indexes/" - salmon_indexes: "results/salmon_indexes/" - star_indexes: "results/star_indexes/" - alfa_indexes: "results/alfa_indexes/" -...''') - - sys.stdout.write('Create snakemake table finished successfully...\n') - sys.stdout.write('Create config file...\n') - sys.stdout.write('Create config file finished successfully...\n') - return - - -def api_fetch_labkey_table(project_name=None, query_name=None): - group_path = os.path.join('/Zavolan Group', project_name) + # compile entries for Snakemake config file + logger.info("Creating Snakemake config file...") + results_dir = expand_path( + args.output_dir, + "results", + ) + log_dir = expand_path( + args.output_dir, + "logs", + ) + kallisto_indexes = expand_path( + results_dir, + "kallisto_indexes", + ) + salmon_indexes = expand_path( + results_dir, + "salmon_indexes", + ) + star_indexes = expand_path( + results_dir, + "star_indexes", + ) + alfa_indexes = expand_path( + results_dir, + "alfa_indexes", + ) + + # write Snakemake config file + logger.info("Writing Snakemake config file...") + config_file_content = f'''--- + samples: "{expand_path(args.output_table.name)}" + output_dir: "{results_dir}" + log_dir: "{log_dir}" + kallisto_indexes: "{kallisto_indexes}" + salmon_indexes: "{salmon_indexes}" + star_indexes: "{star_indexes}" + alfa_indexes: "{alfa_indexes}" + report_description: "{args.description}" + report_logo: "{args.logo}" + report_url: "{args.url}" +... +''' + args.config_file.write(config_file_content) + args.config_file.close() + + +def parse_cli_args() -> argparse.Namespace: + """ + Parses command line arguments. + + :returns: parsed CLI arguments + """ + parser = argparse.ArgumentParser( + description=__doc__, + ) + + parser.add_argument( + "table", + type=str, + default=None, + help="either local file path of input table *or* name of table on " + "LabKey instance (see 'LabKey API' options below)", + metavar="TABLE", + ) + + api = parser.add_argument_group("LabKey API") + api.add_argument( + "--labkey-domain", + type=str, + default=None, + help="domain of LabKey instance to query; required for obtaining " + "input table via LabKey API", + metavar="STR", + ) + api.add_argument( + "--labkey-path", + type=str, + default=None, + help="path to LabKey container that includes specified input table; " + "required for obtaining input table via LabKey API", + metavar="STR", + ) + + io = parser.add_argument_group("input/output") + io.add_argument( + "--input-to-output-mapping", + type=argparse.FileType('r'), + default=os.path.join( + os.path.dirname(__file__), + 'labkey_to_snakemake.dict.tsv', + ), + help="lookup table with mappings from input (LabKey or LabKey-like) " + "to output (Snakemake) table; default: '%(default)s'", + metavar="FILE", + ) + io.add_argument( + "--resources-dir", + type=str, + default=os.getcwd(), + help="path containing the genome resources for all organisms " + "(default: %(default)s)", + metavar="DIR", + ) + io.add_argument( + "--output-table", + type=argparse.FileType('w'), + default="samples.tsv", + help="output sample table for use in Rhea (default: %(default)s)", + metavar="FILE", + ) + io.add_argument( + "--config-file", + type=argparse.FileType('w'), + default="config.yaml", + help="output Snakemake configuration file for use in Rhea (default: " + "%(default)s)", + metavar="FILE", + ) + io.add_argument( + "--output-dir", + type=str, + default=os.getcwd(), + help="directory to which Rhea results and logs are to be written " + "(default: %(default)s)", + metavar="DIR", + ) + + behavior = parser.add_argument_group("workflow behavior") + behavior.add_argument( + "--trim-polya", + type=int, + choices=[True, False], + default=True, + help="cutadapt: trim poly(A) tails option (default: %(default)s)", + ) + behavior.add_argument( + "--multimappers", + type=int, + default=100, + help="STAR: number of multimappers to report (default: %(default)s)", + metavar='INT', + ) + behavior.add_argument( + "--soft-clip", + type=str, + default="EndToEnd", + help="STAR: soft-clipping option (default: %(default)s)", + choices=['EndToEnd', 'Local'], + ) + behavior.add_argument( + "--pass-mode", + type=str, + default="None", + help="STAR: 2-pass mode option (default: %(default)s)", + choices=["None", "Basic"], + ) + behavior.add_argument( + "--libtype", + type=str, + default="A", + help="Salmon: library type (default: %(default)s)", + metavar="STR", + ) + + report = parser.add_argument_group("report") + report.add_argument( + "--description", + type=str, + default="N/A", + help="short description to be added to the report (default: " + "%(default)s)", + metavar="STR", + ) + report.add_argument( + "--logo", + type=argparse.FileType('r'), + default=None, + help="path to image file to be added to the report (default: " + "%(default)s)", + metavar="FILE", + ) + report.add_argument( + "--url", + type=str, + default="N/A", + help="contact URL to be added to the report (default: %(default)s)", + metavar="STR", + ) + + parser.add_argument( + "-v", "--verbose", + action="store_true", + default=False, + help="print log messages to STDERR", + ) + parser.add_argument( + "--debug", + action="store_true", + default=False, + help="print log and debug messages to STDERR", + ) + + args = parser.parse_args() + + if args.logo: + args.logo.close() + args.logo = os.path.abspath(args.logo.name) + else: + args.logo = "" + + if (args.labkey_domain and not args.labkey_path) or \ + (args.labkey_path and not args.labkey_domain): + parser.print_help() + sys.exit( + "\n[ERROR] Either none or both of '--labkey-domain' and " + "'--labkey-path' are required." + ) + return args + + +def setup_logging( + logger: logging.Logger, + verbose: bool = False, + debug: bool = False, +) -> None: + """ + Configure logger. + + :param logger: the `logging.Logger` object to configure + :param verbose: whether `logging.INFO` messages shall be logged + :param debug: whether `logging.DEBUG` messages shall be logged + + :returns: None + :raises ?: TODO + """ + if debug: + logger.setLevel(logging.DEBUG) + elif verbose: + logger.setLevel(logging.INFO) + else: + logger.setLevel(logging.WARNING) + handler = logging.StreamHandler() + handler.setFormatter(logging.Formatter( + "[%(asctime)-15s: %(levelname)-8s @ %(funcName)s] %(message)s" + )) + logger.addHandler(handler) + + +def fetch_labkey_table( + domain: str, + container_path: str, + query_name: str, + context_path: str = "labkey", + schema_name: str = "lists", +) -> pd.DataFrame: + """ + Export LabKey table as Pandas data frame. + + :param domain: domain of LabKey instance + :param container_path: path to LabKey container that includes the table of + interest + :param query_name: name of LabKey table to export + :context_path: required by API; usage unclear TODO + :schema_name: required by API; usage unclear TODO + + :returns: Pandas data frame + :raises ?: TODO + """ server_context = labkey.utils.create_server_context( - 'labkey.scicore.unibas.ch', group_path, 'labkey', use_ssl=True) - schema_name = "lists" - results = labkey.query.select_rows(server_context, schema_name, query_name) + domain=domain, + container_path=container_path, + context_path=context_path, + use_ssl=True, + ) + results = labkey.query.select_rows( + server_context=server_context, + schema_name=schema_name, + query_name=query_name, + ) input_table = pd.DataFrame(results["rows"]) return input_table -def get_read_length(filename): - with gzip.open(filename, "rt") as handle: - for record in SeqIO.parse(handle, "fastq"): - read_length = len(record.seq) - break - return read_length +def get_read_length(file: str) -> int: + """ + Returns read length of first entry of gzipped FASTQ file. + + :param file: path to gzipped FASTQ file + + :returns: read length + :raises FileNotFoundError: file does not exist + :raises IsADirectoryError: file is a directory + :raises OSError: file is not gzipped + :raises PermissionError: file cannot be read + :raises ValueError: not a valid FASTQ file + """ + with gzip.open(file, "rt") as handle: + return len(next(SeqIO.parse(handle, "fastq"))) + + +def kmer_from_read_length( + l: int, + k_max: int = 31, + k_min: int = 11, +) -> int: + """ + Given a read length, returns appropriate kmer parameter size for Salmon + (https://salmon.readthedocs.io/) or similar k-mer-based quantification + tools. + + References for implementation: + https://salmon.readthedocs.io/en/latest/salmon.html#preparing-transcriptome-indices-mapping-based-mode + https://groups.google.com/d/msg/sailfish-users/fphjX7OIGzY/bMBwlCaZAgAJ + + :param l: length of read in nucleotides + :param k_max: maximum allowed k-mer size + :param k_min: minimum allowed k-mer size + + :returns: k_max for l > 2 * k_max, or else the maximum of k and k_min, + where k is biggest odd integer that fulfills k < l / 2 + """ + k = k_max + if l < 2 * k_max + 1: + # ensure kmer is smaller than half of read length + k = math.floor((l - 1) / 2) + # ensure kmer is odd + if not k % 2: + k -= 1 + if k < k_min: + k = k_min + return k + + +def get_strand_param_kallisto(directionality: str) -> str: + """ + Returns appropriate strand info parameter for kallisto + (https://pachterlab.github.io/kallisto/), given a string indicating the + "directionality" of a sequencing library. + + :param directionality: direction in which library was sequenced (one of + "SENSE" and "ANTISENSE") + + :returns: appropriate kallisto option for specified directionality; an + empty string is returned if the directionality value is empty or not + recognized + """ + if directionality == "SENSE": + option = "--fr" + elif directionality == "ANTISENSE": + option = "--rf" + else: + option = "" + return option -def infer_kmer_length(read_length): - if read_length <= 50: - kmer = 21 - elif read_length > 50: - kmer = 31 - return kmer +def get_strand_param_alfa(directionality: str) -> str: + """ + Returns appropriate strand info parameter for ALFA + (https://github.com/biocompibens/ALFA), given a string indicating the + "directionality" of a sequencing library. + :param directionality: direction in which library was sequenced (one of + "SENSE" and "ANTISENSE") -def get_kallisto_directionality(directionality): + :returns: appropriate ALFA option for specified directionality; an empty + string is returned if the directionality value is empty or not + recognized + """ if directionality == 'SENSE': - final_direction = '--fr' + option = 'fr-firststrand' elif directionality == 'ANTISENSE': - final_direction = '--rf' + option = 'fr-secondstrand' else: - final_direction = '' - return final_direction + option = '' + return option + + +def get_strand_names_alfa(directionality: str) -> Tuple[str, str]: + """ + Returns appropriate strand name suffixes for ALFA + (https://github.com/biocompibens/ALFA), given a string indicating the + "directionality" of a sequencing library. + + :param directionality: direction in which library was sequenced (one of + "SENSE" and "ANTISENSE") + + :returns: tuple of ALFA strand name suffixes for two coverage tracks of a + paired-end sequencing library + """ + if directionality == "SENSE": + plus = "str1" + minus = "str2" + elif directionality == "ANTISENSE": + minus = "str1" + plus = "str2" + else: + plus = "" + minus = "" + return (plus, minus) + + +def get_polya_adapter_seqs(directionality: str) -> Tuple[str, str]: + """ + Returns repeat oligomers for detecting and trimming of poly(A) signals from + a sequencing library, given a string indicating the library's + "directionality". + :param directionality: direction in which library was sequenced (one of + "SENSE" and "ANTISENSE") -def trim_polya(sense): - if sense == 'SENSE': - polya_3p = 'AAAAAAAAAAAAAAAAA' - polya_5p = 'XXXXXXXXXXXXXXXXX' - elif sense == 'ANTISENSE': - polya_3p = 'XXXXXXXXXXXXXXXXX' - polya_5p = 'TTTTTTTTTTTTTTTTT' + :returns: tuple of two 15-mers to be used to detect and trim poly(A) + signals from the 3' and 5' ends of the reads of sequencing library, + respectively + """ + if directionality == 'SENSE': + three = 'AAAAAAAAAAAAAAA' + five = 'XXXXXXXXXXXXXXX' + elif directionality == 'ANTISENSE': + three = 'XXXXXXXXXXXXXXX' + five = 'TTTTTTTTTTTTTTT' else: - polya_3p = 'XXXXXXXXXXXXXXXXX' - polya_5p = 'XXXXXXXXXXXXXXXXX' - return polya_3p, polya_5p + three = 'XXXXXXXXXXXXXXX' + five = 'XXXXXXXXXXXXXXX' + return (three, five) + + +def expand_path( + *args: str, + anchor: str = os.getcwd(), + expand: bool = True, +) -> str: + """ + Constructs absolute path. + + Not tested with symbolic links. + + :param args: path fragments which will be joined to the anchor from left + to right + :param anchor: path relative to which the path fragments in *args shall + be interpreted; can be absolute or relative; in the latter case, it is + interpreted relative to the current working directory; if path + fragments evaluate to absolute path (either before or after expansion), + the path will be returned without considering the anchor + :param expand: whether environment variables and user directories (e.g, + `~`) shall be expanded + + :returns: absolute path + """ + suffix = os.path.join(*args) + if os.path.isabs(suffix): + return os.path.normpath(suffix) + if expand: + suffix = os.path.expanduser( + os.path.expandvars( + suffix + ) + ) + if os.path.isabs(suffix): + return os.path.normpath(suffix) + if expand: + anchor = os.path.expanduser( + os.path.expandvars( + anchor + ) + ) + path = os.path.join(anchor, suffix) + return os.path.normpath(path) if __name__ == '__main__': - try: - main() - except KeyboardInterrupt: - sys.stderr.write("User interrupt!" + os.linesep) - sys.exit(0) + main() + logger.info("Program completed successfully.") + sys.exit(0) diff --git a/tests/input_files/config.yaml b/tests/input_files/config.yaml index 0d879677d10cf46a0185779cb6a1d16a841c82bc..a7e59f631cfd82aee786c1205252bf4fd8e910ef 100644 --- a/tests/input_files/config.yaml +++ b/tests/input_files/config.yaml @@ -1,9 +1,12 @@ --- samples: "../input_files/samples.tsv" - output_dir: "results/" - log_dir: "logs/" - kallisto_indexes: "results/kallisto_indexes/" - salmon_indexes: "results/salmon_indexes/" - star_indexes: "results/star_indexes/" - alfa_indexes: "results/alfa_indexes/" -... + output_dir: "results" + log_dir: "logs" + kallisto_indexes: "results/kallisto_indexes" + salmon_indexes: "results/salmon_indexes" + star_indexes: "results/star_indexes" + alfa_indexes: "results/alfa_indexes" + report_description: "No description provided by user" + report_logo: "../../images/logo.128px.png" + report_url: "https://zavolan.biozentrum.unibas.ch/" +... \ No newline at end of file diff --git a/tests/input_files/config_alfa.yaml b/tests/input_files/config_alfa.yaml index 33f97d5c6a5769a728b294479651d7cf1be67925..cdcfb8b873382cbf3c76040c9f88763888a0d0c5 100644 --- a/tests/input_files/config_alfa.yaml +++ b/tests/input_files/config_alfa.yaml @@ -6,4 +6,7 @@ salmon_indexes: "results/salmon_indexes/" star_indexes: "results/star_indexes/" alfa_indexes: "results/alfa_indexes/" + report_description: "No description provided by user" + report_logo: "../../images/logo.128px.png" + report_url: "https://zavolan.biozentrum.unibas.ch/" ... diff --git a/tests/input_files/samples.tsv b/tests/input_files/samples.tsv index d7ff5bba2366cb611105b667a45815b0d9dd3902..4b2630287454e8a7d4dbc7652f1897410a905ef5 100644 --- a/tests/input_files/samples.tsv +++ b/tests/input_files/samples.tsv @@ -1,3 +1,3 @@ -sample seqmode fq1 index_size kmer fq1_3p fq1_5p organism gtf gtf_filtered genome tr_fasta_filtered sd mean multimappers soft_clip pass_mode libtype fq1_polya_3p fq1_polya_5p kallisto_directionality fq2 fq2_3p fq2_5p fq2_polya_3p fq2_polya_5p -synthetic_10_reads_paired_synthetic_10_reads_paired paired_end ../input_files/project1/synthetic.mate_1.fastq.gz 75 31 AGATCGGAAGAGCACA XXXXXXXXXXXXX homo_sapiens ../input_files/homo_sapiens/annotation.gtf ../input_files/homo_sapiens/annotation.gtf ../input_files/homo_sapiens/genome.fa ../input_files/homo_sapiens/transcriptome.fa 100 250 10 EndToEnd None A AAAAAAAAAAAAAAAAA XXXXXXXXXXXXXXXXX --fr ../input_files/project1/synthetic.mate_2.fastq.gz AGATCGGAAGAGCGT XXXXXXXXXXXXX XXXXXXXXXXXXXXXXX TTTTTTTTTTTTTTTTT -synthetic_10_reads_mate_1_synthetic_10_reads_mate_1 single_end ../input_files/project2/synthetic.mate_1.fastq.gz 75 31 AGATCGGAAGAGCACA XXXXXXXXXXXXX homo_sapiens ../input_files/homo_sapiens/annotation.gtf ../input_files/homo_sapiens/annotation.gtf ../input_files/homo_sapiens/genome.fa ../input_files/homo_sapiens/transcriptome.fa 100 250 10 EndToEnd None A AAAAAAAAAAAAAAAAA XXXXXXXXXXXXXXXXX --fr XXXXXXXXXXXXX XXXXXXXXXXXXX XXXXXXXXXXXXX XXXXXXXXXXXXX XXXXXXXXXXXXX +sample seqmode fq1 index_size kmer fq1_3p fq1_5p organism gtf genome sd mean multimappers soft_clip pass_mode libtype fq1_polya_3p fq1_polya_5p kallisto_directionality alfa_directionality alfa_plus alfa_minus fq2 fq2_3p fq2_5p fq2_polya_3p fq2_polya_5p +synthetic_10_reads_paired_synthetic_10_reads_paired pe ../input_files/project1/synthetic.mate_1.fastq.gz 75 31 AGATCGGAAGAGCACA XXXXXXXXXXXXX homo_sapiens ../input_files/homo_sapiens/annotation.gtf ../input_files/homo_sapiens/genome.fa 100 250 10 EndToEnd None A AAAAAAAAAAAAAAAAA XXXXXXXXXXXXXXXXX --fr fr-firststrand str1 str2 ../input_files/project1/synthetic.mate_2.fastq.gz AGATCGGAAGAGCGT XXXXXXXXXXXXX XXXXXXXXXXXXXXXXX TTTTTTTTTTTTTTTTT +synthetic_10_reads_mate_1_synthetic_10_reads_mate_1 se ../input_files/project2/synthetic.mate_1.fastq.gz 75 31 AGATCGGAAGAGCACA XXXXXXXXXXXXX homo_sapiens ../input_files/homo_sapiens/annotation.gtf ../input_files/homo_sapiens/genome.fa 100 250 10 EndToEnd None A AAAAAAAAAAAAAAAAA XXXXXXXXXXXXXXXXX --fr fr-firststrand str1 str2 XXXXXXXXXXXXX XXXXXXXXXXXXX XXXXXXXXXXXXX XXXXXXXXXXXXX XXXXXXXXXXXXX diff --git a/tests/input_files/samples_alfa.tsv b/tests/input_files/samples_alfa.tsv index df032482a4a8a10e75dfeca0ef4cbc5bbe188b28..af1835c28f16f31fe571797e3ae07355d1710e50 100644 --- a/tests/input_files/samples_alfa.tsv +++ b/tests/input_files/samples_alfa.tsv @@ -1,5 +1,5 @@ -sample seqmode fq1 index_size kmer fq2 fq1_3p fq1_5p fq2_3p fq2_5p organism gtf gtf_filtered genome tr_fasta_filtered sd mean multimappers soft_clip pass_mode libtype kallisto_directionality fq1_polya fq2_polya -paired_end_R1_on_plus_sense paired_end XXXXXXXXXXXXX 75 31 XXXXXXXXXXXXX GATCGGAAGAGCACA XXXXXXXXXXXXX AGATCGGAAGAGCGT XXXXXXXXXXXXX homo_sapiens ../input_files/homo_sapiens/quick_start.gtf ../input_files/homo_sapiens/quick_start.gtf XXXXXXXXXXXXX XXXXXXXXXXXXX 100 250 10 EndToEnd None A --fr AAAAAAAAAAAAAAAAA TTTTTTTTTTTTTTTTT -paired_end_R1_on_plus_antisense paired_end XXXXXXXXXXXXX 75 31 XXXXXXXXXXXXX AGATCGGAAGAGCACA XXXXXXXXXXXXX AGATCGGAAGAGCGT XXXXXXXXXXXXX homo_sapiens ../input_files/homo_sapiens/quick_start.gtf ../input_files/homo_sapiens/quick_start.gtf XXXXXXXXXXXXX XXXXXXXXXXXXX 100 250 10 EndToEnd None A --rf AAAAAAAAAAAAAAAAA TTTTTTTTTTTTTTTTT -paired_end_R1_on_minus_sense paired_end XXXXXXXXXXXXX 75 31 XXXXXXXXXXXXX AGATCGGAAGAGCACA XXXXXXXXXXXXX AGATCGGAAGAGCGT XXXXXXXXXXXXX homo_sapiens ../input_files/homo_sapiens/quick_start.gtf ../input_files/homo_sapiens/quick_start.gtf XXXXXXXXXXXXX XXXXXXXXXXXXX 100 250 10 EndToEnd None A --fr AAAAAAAAAAAAAAAAA TTTTTTTTTTTTTTTTT -paired_end_R1_on_minus_antisense paired_end XXXXXXXXXXXXX 75 31 XXXXXXXXXXXXX AGATCGGAAGAGCACA XXXXXXXXXXXXX AGATCGGAAGAGCGT XXXXXXXXXXXXX homo_sapiens ../input_files/homo_sapiens/quick_start.gtf ../input_files/homo_sapiens/quick_start.gtf XXXXXXXXXXXXX XXXXXXXXXXXXX 100 250 10 EndToEnd None A --rf AAAAAAAAAAAAAAAAA TTTTTTTTTTTTTTTTT +sample seqmode fq1 index_size kmer fq2 fq1_3p fq1_5p fq2_3p fq2_5p organism gtf genome sd mean multimappers soft_clip pass_mode libtype kallisto_directionality fq1_polya fq2_polya alfa_directionality alfa_plus alfa_minus +paired_end_R1_on_plus_sense pe XXXXXXXXXXXXX 75 31 XXXXXXXXXXXXX GATCGGAAGAGCACA XXXXXXXXXXXXX AGATCGGAAGAGCGT XXXXXXXXXXXXX homo_sapiens ../input_files/homo_sapiens/quick_start.gtf XXXXXXXXXXXXX 100 250 10 EndToEnd None A --fr AAAAAAAAAAAAAAAAA TTTTTTTTTTTTTTTTT fr-firststrand str1 str2 +paired_end_R1_on_plus_antisense pe XXXXXXXXXXXXX 75 31 XXXXXXXXXXXXX AGATCGGAAGAGCACA XXXXXXXXXXXXX AGATCGGAAGAGCGT XXXXXXXXXXXXX homo_sapiens ../input_files/homo_sapiens/quick_start.gtf XXXXXXXXXXXXX 100 250 10 EndToEnd None A --rf AAAAAAAAAAAAAAAAA TTTTTTTTTTTTTTTTT fr-secondstrand str2 str1 +paired_end_R1_on_minus_sense pe XXXXXXXXXXXXX 75 31 XXXXXXXXXXXXX AGATCGGAAGAGCACA XXXXXXXXXXXXX AGATCGGAAGAGCGT XXXXXXXXXXXXX homo_sapiens ../input_files/homo_sapiens/quick_start.gtf XXXXXXXXXXXXX 100 250 10 EndToEnd None A --fr AAAAAAAAAAAAAAAAA TTTTTTTTTTTTTTTTT fr-firststrand str1 str2 +paired_end_R1_on_minus_antisense pe XXXXXXXXXXXXX 75 31 XXXXXXXXXXXXX AGATCGGAAGAGCACA XXXXXXXXXXXXX AGATCGGAAGAGCGT XXXXXXXXXXXXX homo_sapiens ../input_files/homo_sapiens/quick_start.gtf XXXXXXXXXXXXX 100 250 10 EndToEnd None A --rf AAAAAAAAAAAAAAAAA TTTTTTTTTTTTTTTTT fr-secondstrand str2 str1 diff --git a/tests/test_alfa/expected_output.md5 b/tests/test_alfa/expected_output.md5 index 7b2472fd3ccb922882625f7e4a73442aaa9ef1b4..797b178f606ed2f7307b8438017849e065b58dc1 100644 --- a/tests/test_alfa/expected_output.md5 +++ b/tests/test_alfa/expected_output.md5 @@ -1,42 +1,42 @@ 90e42aa46890e9cd0a47800428699fbf results/alfa_indexes/homo_sapiens/75/ALFA/sorted_genes.stranded.ALFA_index ccc3cf5a57fddb0d469e597d4376b1bf results/alfa_indexes/homo_sapiens/75/ALFA/sorted_genes.unstranded.ALFA_index -e5959524a2daf35da9249fb313920315 results/paired_end/paired_end_R1_on_minus_antisense/ALFA/Unique/paired_end_R1_on_minus_antisense.ALFA_feature_counts.tsv -c406c1800d3690dd774aaa7e3c190523 results/paired_end/paired_end_R1_on_minus_sense/ALFA/Unique/paired_end_R1_on_minus_sense.ALFA_feature_counts.tsv -c406c1800d3690dd774aaa7e3c190523 results/paired_end/paired_end_R1_on_plus_antisense/ALFA/Unique/paired_end_R1_on_plus_antisense.ALFA_feature_counts.tsv -e5959524a2daf35da9249fb313920315 results/paired_end/paired_end_R1_on_plus_sense/ALFA/Unique/paired_end_R1_on_plus_sense.ALFA_feature_counts.tsv -e5959524a2daf35da9249fb313920315 results/paired_end/paired_end_R1_on_minus_antisense/ALFA/UniqueMultiple/paired_end_R1_on_minus_antisense.ALFA_feature_counts.tsv -c406c1800d3690dd774aaa7e3c190523 results/paired_end/paired_end_R1_on_minus_sense/ALFA/UniqueMultiple/paired_end_R1_on_minus_sense.ALFA_feature_counts.tsv -c406c1800d3690dd774aaa7e3c190523 results/paired_end/paired_end_R1_on_plus_antisense/ALFA/UniqueMultiple/paired_end_R1_on_plus_antisense.ALFA_feature_counts.tsv -e5959524a2daf35da9249fb313920315 results/paired_end/paired_end_R1_on_plus_sense/ALFA/UniqueMultiple/paired_end_R1_on_plus_sense.ALFA_feature_counts.tsv -5e90c760710980f4f4866dbe9aa32c6c results/paired_end/paired_end_R1_on_minus_antisense/ALFA/UniqueMultiple/paired_end_R1_on_minus_antisense_Signal.UniqueMultiple.out.minus.bg -8e23d52d7f635d927e292174f33168eb results/paired_end/paired_end_R1_on_minus_antisense/ALFA/UniqueMultiple/paired_end_R1_on_minus_antisense_Signal.UniqueMultiple.out.plus.bg -8e23d52d7f635d927e292174f33168eb results/paired_end/paired_end_R1_on_minus_sense/ALFA/UniqueMultiple/paired_end_R1_on_minus_sense_Signal.UniqueMultiple.out.minus.bg -5e90c760710980f4f4866dbe9aa32c6c results/paired_end/paired_end_R1_on_minus_sense/ALFA/UniqueMultiple/paired_end_R1_on_minus_sense_Signal.UniqueMultiple.out.plus.bg -8e23d52d7f635d927e292174f33168eb results/paired_end/paired_end_R1_on_plus_antisense/ALFA/UniqueMultiple/paired_end_R1_on_plus_antisense_Signal.UniqueMultiple.out.minus.bg -5e90c760710980f4f4866dbe9aa32c6c results/paired_end/paired_end_R1_on_plus_antisense/ALFA/UniqueMultiple/paired_end_R1_on_plus_antisense_Signal.UniqueMultiple.out.plus.bg -5e90c760710980f4f4866dbe9aa32c6c results/paired_end/paired_end_R1_on_plus_sense/ALFA/UniqueMultiple/paired_end_R1_on_plus_sense_Signal.UniqueMultiple.out.minus.bg -8e23d52d7f635d927e292174f33168eb results/paired_end/paired_end_R1_on_plus_sense/ALFA/UniqueMultiple/paired_end_R1_on_plus_sense_Signal.UniqueMultiple.out.plus.bg -5e90c760710980f4f4866dbe9aa32c6c results/paired_end/paired_end_R1_on_minus_antisense/ALFA/Unique/paired_end_R1_on_minus_antisense_Signal.Unique.out.minus.bg -8e23d52d7f635d927e292174f33168eb results/paired_end/paired_end_R1_on_minus_antisense/ALFA/Unique/paired_end_R1_on_minus_antisense_Signal.Unique.out.plus.bg -8e23d52d7f635d927e292174f33168eb results/paired_end/paired_end_R1_on_minus_sense/ALFA/Unique/paired_end_R1_on_minus_sense_Signal.Unique.out.minus.bg -5e90c760710980f4f4866dbe9aa32c6c results/paired_end/paired_end_R1_on_minus_sense/ALFA/Unique/paired_end_R1_on_minus_sense_Signal.Unique.out.plus.bg -8e23d52d7f635d927e292174f33168eb results/paired_end/paired_end_R1_on_plus_antisense/ALFA/Unique/paired_end_R1_on_plus_antisense_Signal.Unique.out.minus.bg -5e90c760710980f4f4866dbe9aa32c6c results/paired_end/paired_end_R1_on_plus_antisense/ALFA/Unique/paired_end_R1_on_plus_antisense_Signal.Unique.out.plus.bg -5e90c760710980f4f4866dbe9aa32c6c results/paired_end/paired_end_R1_on_plus_sense/ALFA/Unique/paired_end_R1_on_plus_sense_Signal.Unique.out.minus.bg -8e23d52d7f635d927e292174f33168eb results/paired_end/paired_end_R1_on_plus_sense/ALFA/Unique/paired_end_R1_on_plus_sense_Signal.Unique.out.plus.bg -5e90c760710980f4f4866dbe9aa32c6c results/paired_end/paired_end_R1_on_minus_antisense/STAR_coverage/paired_end_R1_on_minus_antisense_Signal.UniqueMultiple.str1.out.bg -8e23d52d7f635d927e292174f33168eb results/paired_end/paired_end_R1_on_minus_antisense/STAR_coverage/paired_end_R1_on_minus_antisense_Signal.UniqueMultiple.str2.out.bg -5e90c760710980f4f4866dbe9aa32c6c results/paired_end/paired_end_R1_on_minus_antisense/STAR_coverage/paired_end_R1_on_minus_antisense_Signal.Unique.str1.out.bg -8e23d52d7f635d927e292174f33168eb results/paired_end/paired_end_R1_on_minus_antisense/STAR_coverage/paired_end_R1_on_minus_antisense_Signal.Unique.str2.out.bg -5e90c760710980f4f4866dbe9aa32c6c results/paired_end/paired_end_R1_on_minus_sense/STAR_coverage/paired_end_R1_on_minus_sense_Signal.UniqueMultiple.str1.out.bg -8e23d52d7f635d927e292174f33168eb results/paired_end/paired_end_R1_on_minus_sense/STAR_coverage/paired_end_R1_on_minus_sense_Signal.UniqueMultiple.str2.out.bg -5e90c760710980f4f4866dbe9aa32c6c results/paired_end/paired_end_R1_on_minus_sense/STAR_coverage/paired_end_R1_on_minus_sense_Signal.Unique.str1.out.bg -8e23d52d7f635d927e292174f33168eb results/paired_end/paired_end_R1_on_minus_sense/STAR_coverage/paired_end_R1_on_minus_sense_Signal.Unique.str2.out.bg -8e23d52d7f635d927e292174f33168eb results/paired_end/paired_end_R1_on_plus_antisense/STAR_coverage/paired_end_R1_on_plus_antisense_Signal.UniqueMultiple.str1.out.bg -5e90c760710980f4f4866dbe9aa32c6c results/paired_end/paired_end_R1_on_plus_antisense/STAR_coverage/paired_end_R1_on_plus_antisense_Signal.UniqueMultiple.str2.out.bg -8e23d52d7f635d927e292174f33168eb results/paired_end/paired_end_R1_on_plus_antisense/STAR_coverage/paired_end_R1_on_plus_antisense_Signal.Unique.str1.out.bg -5e90c760710980f4f4866dbe9aa32c6c results/paired_end/paired_end_R1_on_plus_antisense/STAR_coverage/paired_end_R1_on_plus_antisense_Signal.Unique.str2.out.bg -8e23d52d7f635d927e292174f33168eb results/paired_end/paired_end_R1_on_plus_sense/STAR_coverage/paired_end_R1_on_plus_sense_Signal.UniqueMultiple.str1.out.bg -5e90c760710980f4f4866dbe9aa32c6c results/paired_end/paired_end_R1_on_plus_sense/STAR_coverage/paired_end_R1_on_plus_sense_Signal.UniqueMultiple.str2.out.bg -8e23d52d7f635d927e292174f33168eb results/paired_end/paired_end_R1_on_plus_sense/STAR_coverage/paired_end_R1_on_plus_sense_Signal.Unique.str1.out.bg -5e90c760710980f4f4866dbe9aa32c6c results/paired_end/paired_end_R1_on_plus_sense/STAR_coverage/paired_end_R1_on_plus_sense_Signal.Unique.str2.out.bg +e5959524a2daf35da9249fb313920315 results/samples/paired_end_R1_on_minus_antisense/ALFA/Unique/paired_end_R1_on_minus_antisense.ALFA_feature_counts.tsv +c406c1800d3690dd774aaa7e3c190523 results/samples/paired_end_R1_on_minus_sense/ALFA/Unique/paired_end_R1_on_minus_sense.ALFA_feature_counts.tsv +c406c1800d3690dd774aaa7e3c190523 results/samples/paired_end_R1_on_plus_antisense/ALFA/Unique/paired_end_R1_on_plus_antisense.ALFA_feature_counts.tsv +e5959524a2daf35da9249fb313920315 results/samples/paired_end_R1_on_plus_sense/ALFA/Unique/paired_end_R1_on_plus_sense.ALFA_feature_counts.tsv +e5959524a2daf35da9249fb313920315 results/samples/paired_end_R1_on_minus_antisense/ALFA/UniqueMultiple/paired_end_R1_on_minus_antisense.ALFA_feature_counts.tsv +c406c1800d3690dd774aaa7e3c190523 results/samples/paired_end_R1_on_minus_sense/ALFA/UniqueMultiple/paired_end_R1_on_minus_sense.ALFA_feature_counts.tsv +c406c1800d3690dd774aaa7e3c190523 results/samples/paired_end_R1_on_plus_antisense/ALFA/UniqueMultiple/paired_end_R1_on_plus_antisense.ALFA_feature_counts.tsv +e5959524a2daf35da9249fb313920315 results/samples/paired_end_R1_on_plus_sense/ALFA/UniqueMultiple/paired_end_R1_on_plus_sense.ALFA_feature_counts.tsv +5e90c760710980f4f4866dbe9aa32c6c results/samples/paired_end_R1_on_minus_antisense/ALFA/UniqueMultiple/paired_end_R1_on_minus_antisense.UniqueMultiple.minus.bg +8e23d52d7f635d927e292174f33168eb results/samples/paired_end_R1_on_minus_antisense/ALFA/UniqueMultiple/paired_end_R1_on_minus_antisense.UniqueMultiple.plus.bg +8e23d52d7f635d927e292174f33168eb results/samples/paired_end_R1_on_minus_sense/ALFA/UniqueMultiple/paired_end_R1_on_minus_sense.UniqueMultiple.minus.bg +5e90c760710980f4f4866dbe9aa32c6c results/samples/paired_end_R1_on_minus_sense/ALFA/UniqueMultiple/paired_end_R1_on_minus_sense.UniqueMultiple.plus.bg +8e23d52d7f635d927e292174f33168eb results/samples/paired_end_R1_on_plus_antisense/ALFA/UniqueMultiple/paired_end_R1_on_plus_antisense.UniqueMultiple.minus.bg +5e90c760710980f4f4866dbe9aa32c6c results/samples/paired_end_R1_on_plus_antisense/ALFA/UniqueMultiple/paired_end_R1_on_plus_antisense.UniqueMultiple.plus.bg +5e90c760710980f4f4866dbe9aa32c6c results/samples/paired_end_R1_on_plus_sense/ALFA/UniqueMultiple/paired_end_R1_on_plus_sense.UniqueMultiple.minus.bg +8e23d52d7f635d927e292174f33168eb results/samples/paired_end_R1_on_plus_sense/ALFA/UniqueMultiple/paired_end_R1_on_plus_sense.UniqueMultiple.plus.bg +5e90c760710980f4f4866dbe9aa32c6c results/samples/paired_end_R1_on_minus_antisense/ALFA/Unique/paired_end_R1_on_minus_antisense.Unique.minus.bg +8e23d52d7f635d927e292174f33168eb results/samples/paired_end_R1_on_minus_antisense/ALFA/Unique/paired_end_R1_on_minus_antisense.Unique.plus.bg +8e23d52d7f635d927e292174f33168eb results/samples/paired_end_R1_on_minus_sense/ALFA/Unique/paired_end_R1_on_minus_sense.Unique.minus.bg +5e90c760710980f4f4866dbe9aa32c6c results/samples/paired_end_R1_on_minus_sense/ALFA/Unique/paired_end_R1_on_minus_sense.Unique.plus.bg +8e23d52d7f635d927e292174f33168eb results/samples/paired_end_R1_on_plus_antisense/ALFA/Unique/paired_end_R1_on_plus_antisense.Unique.minus.bg +5e90c760710980f4f4866dbe9aa32c6c results/samples/paired_end_R1_on_plus_antisense/ALFA/Unique/paired_end_R1_on_plus_antisense.Unique.plus.bg +5e90c760710980f4f4866dbe9aa32c6c results/samples/paired_end_R1_on_plus_sense/ALFA/Unique/paired_end_R1_on_plus_sense.Unique.minus.bg +8e23d52d7f635d927e292174f33168eb results/samples/paired_end_R1_on_plus_sense/ALFA/Unique/paired_end_R1_on_plus_sense.Unique.plus.bg +5e90c760710980f4f4866dbe9aa32c6c results/samples/paired_end_R1_on_minus_antisense/STAR_coverage/paired_end_R1_on_minus_antisense_Signal.UniqueMultiple.str1.out.bg +8e23d52d7f635d927e292174f33168eb results/samples/paired_end_R1_on_minus_antisense/STAR_coverage/paired_end_R1_on_minus_antisense_Signal.UniqueMultiple.str2.out.bg +5e90c760710980f4f4866dbe9aa32c6c results/samples/paired_end_R1_on_minus_antisense/STAR_coverage/paired_end_R1_on_minus_antisense_Signal.Unique.str1.out.bg +8e23d52d7f635d927e292174f33168eb results/samples/paired_end_R1_on_minus_antisense/STAR_coverage/paired_end_R1_on_minus_antisense_Signal.Unique.str2.out.bg +5e90c760710980f4f4866dbe9aa32c6c results/samples/paired_end_R1_on_minus_sense/STAR_coverage/paired_end_R1_on_minus_sense_Signal.UniqueMultiple.str1.out.bg +8e23d52d7f635d927e292174f33168eb results/samples/paired_end_R1_on_minus_sense/STAR_coverage/paired_end_R1_on_minus_sense_Signal.UniqueMultiple.str2.out.bg +5e90c760710980f4f4866dbe9aa32c6c results/samples/paired_end_R1_on_minus_sense/STAR_coverage/paired_end_R1_on_minus_sense_Signal.Unique.str1.out.bg +8e23d52d7f635d927e292174f33168eb results/samples/paired_end_R1_on_minus_sense/STAR_coverage/paired_end_R1_on_minus_sense_Signal.Unique.str2.out.bg +8e23d52d7f635d927e292174f33168eb results/samples/paired_end_R1_on_plus_antisense/STAR_coverage/paired_end_R1_on_plus_antisense_Signal.UniqueMultiple.str1.out.bg +5e90c760710980f4f4866dbe9aa32c6c results/samples/paired_end_R1_on_plus_antisense/STAR_coverage/paired_end_R1_on_plus_antisense_Signal.UniqueMultiple.str2.out.bg +8e23d52d7f635d927e292174f33168eb results/samples/paired_end_R1_on_plus_antisense/STAR_coverage/paired_end_R1_on_plus_antisense_Signal.Unique.str1.out.bg +5e90c760710980f4f4866dbe9aa32c6c results/samples/paired_end_R1_on_plus_antisense/STAR_coverage/paired_end_R1_on_plus_antisense_Signal.Unique.str2.out.bg +8e23d52d7f635d927e292174f33168eb results/samples/paired_end_R1_on_plus_sense/STAR_coverage/paired_end_R1_on_plus_sense_Signal.UniqueMultiple.str1.out.bg +5e90c760710980f4f4866dbe9aa32c6c results/samples/paired_end_R1_on_plus_sense/STAR_coverage/paired_end_R1_on_plus_sense_Signal.UniqueMultiple.str2.out.bg +8e23d52d7f635d927e292174f33168eb results/samples/paired_end_R1_on_plus_sense/STAR_coverage/paired_end_R1_on_plus_sense_Signal.Unique.str1.out.bg +5e90c760710980f4f4866dbe9aa32c6c results/samples/paired_end_R1_on_plus_sense/STAR_coverage/paired_end_R1_on_plus_sense_Signal.Unique.str2.out.bg diff --git a/tests/test_alfa/results/paired_end/paired_end_R1_on_minus_antisense/map_genome/paired_end_R1_on_minus_antisense_Aligned.sortedByCoord.out.bam b/tests/test_alfa/results/samples/paired_end_R1_on_minus_antisense/map_genome/paired_end_R1_on_minus_antisense.pe.Aligned.sortedByCoord.out.bam similarity index 100% rename from tests/test_alfa/results/paired_end/paired_end_R1_on_minus_antisense/map_genome/paired_end_R1_on_minus_antisense_Aligned.sortedByCoord.out.bam rename to tests/test_alfa/results/samples/paired_end_R1_on_minus_antisense/map_genome/paired_end_R1_on_minus_antisense.pe.Aligned.sortedByCoord.out.bam diff --git a/tests/test_alfa/results/paired_end/paired_end_R1_on_minus_antisense/map_genome/paired_end_R1_on_minus_antisense_Aligned.sortedByCoord.out.bam.bai b/tests/test_alfa/results/samples/paired_end_R1_on_minus_antisense/map_genome/paired_end_R1_on_minus_antisense.pe.Aligned.sortedByCoord.out.bam.bai similarity index 100% rename from tests/test_alfa/results/paired_end/paired_end_R1_on_minus_antisense/map_genome/paired_end_R1_on_minus_antisense_Aligned.sortedByCoord.out.bam.bai rename to tests/test_alfa/results/samples/paired_end_R1_on_minus_antisense/map_genome/paired_end_R1_on_minus_antisense.pe.Aligned.sortedByCoord.out.bam.bai diff --git a/tests/test_alfa/results/paired_end/paired_end_R1_on_minus_sense/map_genome/paired_end_R1_on_minus_sense_Aligned.sortedByCoord.out.bam b/tests/test_alfa/results/samples/paired_end_R1_on_minus_sense/map_genome/paired_end_R1_on_minus_sense.pe.Aligned.sortedByCoord.out.bam similarity index 100% rename from tests/test_alfa/results/paired_end/paired_end_R1_on_minus_sense/map_genome/paired_end_R1_on_minus_sense_Aligned.sortedByCoord.out.bam rename to tests/test_alfa/results/samples/paired_end_R1_on_minus_sense/map_genome/paired_end_R1_on_minus_sense.pe.Aligned.sortedByCoord.out.bam diff --git a/tests/test_alfa/results/paired_end/paired_end_R1_on_minus_sense/map_genome/paired_end_R1_on_minus_sense_Aligned.sortedByCoord.out.bam.bai b/tests/test_alfa/results/samples/paired_end_R1_on_minus_sense/map_genome/paired_end_R1_on_minus_sense.pe.Aligned.sortedByCoord.out.bam.bai similarity index 100% rename from tests/test_alfa/results/paired_end/paired_end_R1_on_minus_sense/map_genome/paired_end_R1_on_minus_sense_Aligned.sortedByCoord.out.bam.bai rename to tests/test_alfa/results/samples/paired_end_R1_on_minus_sense/map_genome/paired_end_R1_on_minus_sense.pe.Aligned.sortedByCoord.out.bam.bai diff --git a/tests/test_alfa/results/paired_end/paired_end_R1_on_plus_antisense/map_genome/paired_end_R1_on_plus_antisense_Aligned.sortedByCoord.out.bam b/tests/test_alfa/results/samples/paired_end_R1_on_plus_antisense/map_genome/paired_end_R1_on_plus_antisense.pe.Aligned.sortedByCoord.out.bam similarity index 100% rename from tests/test_alfa/results/paired_end/paired_end_R1_on_plus_antisense/map_genome/paired_end_R1_on_plus_antisense_Aligned.sortedByCoord.out.bam rename to tests/test_alfa/results/samples/paired_end_R1_on_plus_antisense/map_genome/paired_end_R1_on_plus_antisense.pe.Aligned.sortedByCoord.out.bam diff --git a/tests/test_alfa/results/paired_end/paired_end_R1_on_plus_antisense/map_genome/paired_end_R1_on_plus_antisense_Aligned.sortedByCoord.out.bam.bai b/tests/test_alfa/results/samples/paired_end_R1_on_plus_antisense/map_genome/paired_end_R1_on_plus_antisense.pe.Aligned.sortedByCoord.out.bam.bai similarity index 100% rename from tests/test_alfa/results/paired_end/paired_end_R1_on_plus_antisense/map_genome/paired_end_R1_on_plus_antisense_Aligned.sortedByCoord.out.bam.bai rename to tests/test_alfa/results/samples/paired_end_R1_on_plus_antisense/map_genome/paired_end_R1_on_plus_antisense.pe.Aligned.sortedByCoord.out.bam.bai diff --git a/tests/test_alfa/results/paired_end/paired_end_R1_on_plus_sense/map_genome/paired_end_R1_on_plus_sense_Aligned.sortedByCoord.out.bam b/tests/test_alfa/results/samples/paired_end_R1_on_plus_sense/map_genome/paired_end_R1_on_plus_sense.pe.Aligned.sortedByCoord.out.bam similarity index 100% rename from tests/test_alfa/results/paired_end/paired_end_R1_on_plus_sense/map_genome/paired_end_R1_on_plus_sense_Aligned.sortedByCoord.out.bam rename to tests/test_alfa/results/samples/paired_end_R1_on_plus_sense/map_genome/paired_end_R1_on_plus_sense.pe.Aligned.sortedByCoord.out.bam diff --git a/tests/test_alfa/results/paired_end/paired_end_R1_on_plus_sense/map_genome/paired_end_R1_on_plus_sense_Aligned.sortedByCoord.out.bam.bai b/tests/test_alfa/results/samples/paired_end_R1_on_plus_sense/map_genome/paired_end_R1_on_plus_sense.pe.Aligned.sortedByCoord.out.bam.bai similarity index 100% rename from tests/test_alfa/results/paired_end/paired_end_R1_on_plus_sense/map_genome/paired_end_R1_on_plus_sense_Aligned.sortedByCoord.out.bam.bai rename to tests/test_alfa/results/samples/paired_end_R1_on_plus_sense/map_genome/paired_end_R1_on_plus_sense.pe.Aligned.sortedByCoord.out.bam.bai diff --git a/tests/test_alfa/test.sh b/tests/test_alfa/test.sh index 523eea43684303a195d52b9faf28b7678a91ae8a..1472685c50f4765111ce109a8da5363cae63ebef 100755 --- a/tests/test_alfa/test.sh +++ b/tests/test_alfa/test.sh @@ -33,7 +33,7 @@ snakemake \ --use-singularity \ --singularity-args="--bind ${PWD}/../input_files,${PWD}/../../images" \ --verbose \ - results/ALFA/ALFA_plots.concat.png + results/ALFA/ALFA_plots_mqc.png # Check md5 sum of some output files find results/ -type f -name \*\.gz -exec gunzip '{}' \; diff --git a/tests/test_integration_workflow/expected_output.files b/tests/test_integration_workflow/expected_output.files index 796a9131b20194cca55d2ee7cf9789f62c9bcd7a..cc9d90b0700ba426f21e12e4016bfd6e39bf9c6a 100644 --- a/tests/test_integration_workflow/expected_output.files +++ b/tests/test_integration_workflow/expected_output.files @@ -16,66 +16,93 @@ results/star_indexes/homo_sapiens/75/STAR_index/sjdbInfo.txt results/star_indexes/homo_sapiens/75/STAR_index/sjdbList.fromGTF.out.tab results/star_indexes/homo_sapiens/75/STAR_index/sjdbList.out.tab results/star_indexes/homo_sapiens/75/STAR_index/transcriptInfo.tab -results/samples/synthetic_10_reads_paired_synthetic_10_reads_paired/synthetic_10_reads_paired_synthetic_10_reads_paired.remove_adapters_mate1.fastq -results/samples/synthetic_10_reads_paired_synthetic_10_reads_paired/synthetic_10_reads_paired_synthetic_10_reads_paired.remove_adapters_mate2.fastq -results/samples/synthetic_10_reads_paired_synthetic_10_reads_paired/synthetic_10_reads_paired_synthetic_10_reads_paired.remove_polya_mate1.fastq -results/samples/synthetic_10_reads_paired_synthetic_10_reads_paired/synthetic_10_reads_paired_synthetic_10_reads_paired.remove_polya_mate2.fastq -results/samples/synthetic_10_reads_paired_synthetic_10_reads_paired/map_genome/synthetic_10_reads_paired_synthetic_10_reads_paired_SJ.out.tab -results/samples/synthetic_10_reads_paired_synthetic_10_reads_paired/mate1_fastqc/synthetic.mate_1_fastqc/fastqc_data.txt -results/samples/synthetic_10_reads_paired_synthetic_10_reads_paired/mate1_fastqc/synthetic.mate_1_fastqc/fastqc.fo -results/samples/synthetic_10_reads_paired_synthetic_10_reads_paired/mate1_fastqc/synthetic.mate_1_fastqc/summary.txt -results/samples/synthetic_10_reads_paired_synthetic_10_reads_paired/mate1_fastqc/synthetic.mate_1_fastqc/Images/adapter_content.png -results/samples/synthetic_10_reads_paired_synthetic_10_reads_paired/mate1_fastqc/synthetic.mate_1_fastqc/Images/duplication_levels.png -results/samples/synthetic_10_reads_paired_synthetic_10_reads_paired/mate1_fastqc/synthetic.mate_1_fastqc/Images/per_base_n_content.png -results/samples/synthetic_10_reads_paired_synthetic_10_reads_paired/mate1_fastqc/synthetic.mate_1_fastqc/Images/per_base_quality.png -results/samples/synthetic_10_reads_paired_synthetic_10_reads_paired/mate1_fastqc/synthetic.mate_1_fastqc/Images/per_base_sequence_content.png -results/samples/synthetic_10_reads_paired_synthetic_10_reads_paired/mate1_fastqc/synthetic.mate_1_fastqc/Images/per_sequence_gc_content.png -results/samples/synthetic_10_reads_paired_synthetic_10_reads_paired/mate1_fastqc/synthetic.mate_1_fastqc/Images/per_sequence_quality.png -results/samples/synthetic_10_reads_paired_synthetic_10_reads_paired/mate1_fastqc/synthetic.mate_1_fastqc/Images/per_tile_quality.png -results/samples/synthetic_10_reads_paired_synthetic_10_reads_paired/mate1_fastqc/synthetic.mate_1_fastqc/Images/sequence_length_distribution.png -results/samples/synthetic_10_reads_paired_synthetic_10_reads_paired/mate2_fastqc/synthetic.mate_2_fastqc/fastqc_data.txt -results/samples/synthetic_10_reads_paired_synthetic_10_reads_paired/mate2_fastqc/synthetic.mate_2_fastqc/fastqc.fo -results/samples/synthetic_10_reads_paired_synthetic_10_reads_paired/mate2_fastqc/synthetic.mate_2_fastqc/summary.txt -results/samples/synthetic_10_reads_paired_synthetic_10_reads_paired/mate2_fastqc/synthetic.mate_2_fastqc/Images/adapter_content.png -results/samples/synthetic_10_reads_paired_synthetic_10_reads_paired/mate2_fastqc/synthetic.mate_2_fastqc/Images/duplication_levels.png -results/samples/synthetic_10_reads_paired_synthetic_10_reads_paired/mate2_fastqc/synthetic.mate_2_fastqc/Images/per_base_n_content.png -results/samples/synthetic_10_reads_paired_synthetic_10_reads_paired/mate2_fastqc/synthetic.mate_2_fastqc/Images/per_base_quality.png -results/samples/synthetic_10_reads_paired_synthetic_10_reads_paired/mate2_fastqc/synthetic.mate_2_fastqc/Images/per_base_sequence_content.png -results/samples/synthetic_10_reads_paired_synthetic_10_reads_paired/mate2_fastqc/synthetic.mate_2_fastqc/Images/per_sequence_gc_content.png -results/samples/synthetic_10_reads_paired_synthetic_10_reads_paired/mate2_fastqc/synthetic.mate_2_fastqc/Images/per_sequence_quality.png -results/samples/synthetic_10_reads_paired_synthetic_10_reads_paired/mate2_fastqc/synthetic.mate_2_fastqc/Images/per_tile_quality.png -results/samples/synthetic_10_reads_paired_synthetic_10_reads_paired/mate2_fastqc/synthetic.mate_2_fastqc/Images/sequence_length_distribution.png +results/samples/synthetic_10_reads_paired_synthetic_10_reads_paired/synthetic_10_reads_paired_synthetic_10_reads_paired.pe.remove_adapters_mate1.fastq +results/samples/synthetic_10_reads_paired_synthetic_10_reads_paired/synthetic_10_reads_paired_synthetic_10_reads_paired.pe.remove_polya_mate1.fastq +results/samples/synthetic_10_reads_paired_synthetic_10_reads_paired/synthetic_10_reads_paired_synthetic_10_reads_paired.pe.remove_adapters_mate2.fastq +results/samples/synthetic_10_reads_paired_synthetic_10_reads_paired/synthetic_10_reads_paired_synthetic_10_reads_paired.pe.remove_polya_mate2.fastq +results/samples/synthetic_10_reads_paired_synthetic_10_reads_paired/map_genome/synthetic_10_reads_paired_synthetic_10_reads_paired.pe.SJ.out.tab +results/samples/synthetic_10_reads_paired_synthetic_10_reads_paired/fastqc/fq1/synthetic_10_reads_paired_synthetic_10_reads_paired.fq1_fastqc/fastqc_data.txt +results/samples/synthetic_10_reads_paired_synthetic_10_reads_paired/fastqc/fq1/synthetic_10_reads_paired_synthetic_10_reads_paired.fq1_fastqc/fastqc.fo +results/samples/synthetic_10_reads_paired_synthetic_10_reads_paired/fastqc/fq1/synthetic_10_reads_paired_synthetic_10_reads_paired.fq1_fastqc/summary.txt +results/samples/synthetic_10_reads_paired_synthetic_10_reads_paired/fastqc/fq2/synthetic_10_reads_paired_synthetic_10_reads_paired.fq2_fastqc/fastqc_data.txt +results/samples/synthetic_10_reads_paired_synthetic_10_reads_paired/fastqc/fq2/synthetic_10_reads_paired_synthetic_10_reads_paired.fq2_fastqc/fastqc.fo +results/samples/synthetic_10_reads_paired_synthetic_10_reads_paired/fastqc/fq2/synthetic_10_reads_paired_synthetic_10_reads_paired.fq2_fastqc/summary.txt +results/samples/synthetic_10_reads_paired_synthetic_10_reads_paired/fastqc/fq1/synthetic_10_reads_paired_synthetic_10_reads_paired.fq1_fastqc/Images/adapter_content.png +results/samples/synthetic_10_reads_paired_synthetic_10_reads_paired/fastqc/fq1/synthetic_10_reads_paired_synthetic_10_reads_paired.fq1_fastqc/Images/duplication_levels.png +results/samples/synthetic_10_reads_paired_synthetic_10_reads_paired/fastqc/fq1/synthetic_10_reads_paired_synthetic_10_reads_paired.fq1_fastqc/Images/per_base_n_content.png +results/samples/synthetic_10_reads_paired_synthetic_10_reads_paired/fastqc/fq1/synthetic_10_reads_paired_synthetic_10_reads_paired.fq1_fastqc/Images/per_base_quality.png +results/samples/synthetic_10_reads_paired_synthetic_10_reads_paired/fastqc/fq1/synthetic_10_reads_paired_synthetic_10_reads_paired.fq1_fastqc/Images/per_base_sequence_content.png +results/samples/synthetic_10_reads_paired_synthetic_10_reads_paired/fastqc/fq1/synthetic_10_reads_paired_synthetic_10_reads_paired.fq1_fastqc/Images/per_sequence_gc_content.png +results/samples/synthetic_10_reads_paired_synthetic_10_reads_paired/fastqc/fq1/synthetic_10_reads_paired_synthetic_10_reads_paired.fq1_fastqc/Images/per_sequence_quality.png +results/samples/synthetic_10_reads_paired_synthetic_10_reads_paired/fastqc/fq1/synthetic_10_reads_paired_synthetic_10_reads_paired.fq1_fastqc/Images/per_tile_quality.png +results/samples/synthetic_10_reads_paired_synthetic_10_reads_paired/fastqc/fq1/synthetic_10_reads_paired_synthetic_10_reads_paired.fq1_fastqc/Images/sequence_length_distribution.png +results/samples/synthetic_10_reads_paired_synthetic_10_reads_paired/fastqc/fq2/synthetic_10_reads_paired_synthetic_10_reads_paired.fq2_fastqc/Images/adapter_content.png +results/samples/synthetic_10_reads_paired_synthetic_10_reads_paired/fastqc/fq2/synthetic_10_reads_paired_synthetic_10_reads_paired.fq2_fastqc/Images/duplication_levels.png +results/samples/synthetic_10_reads_paired_synthetic_10_reads_paired/fastqc/fq2/synthetic_10_reads_paired_synthetic_10_reads_paired.fq2_fastqc/Images/per_base_n_content.png +results/samples/synthetic_10_reads_paired_synthetic_10_reads_paired/fastqc/fq2/synthetic_10_reads_paired_synthetic_10_reads_paired.fq2_fastqc/Images/per_base_quality.png +results/samples/synthetic_10_reads_paired_synthetic_10_reads_paired/fastqc/fq2/synthetic_10_reads_paired_synthetic_10_reads_paired.fq2_fastqc/Images/per_base_sequence_content.png +results/samples/synthetic_10_reads_paired_synthetic_10_reads_paired/fastqc/fq2/synthetic_10_reads_paired_synthetic_10_reads_paired.fq2_fastqc/Images/per_sequence_gc_content.png +results/samples/synthetic_10_reads_paired_synthetic_10_reads_paired/fastqc/fq2/synthetic_10_reads_paired_synthetic_10_reads_paired.fq2_fastqc/Images/per_sequence_quality.png +results/samples/synthetic_10_reads_paired_synthetic_10_reads_paired/fastqc/fq2/synthetic_10_reads_paired_synthetic_10_reads_paired.fq2_fastqc/Images/per_tile_quality.png +results/samples/synthetic_10_reads_paired_synthetic_10_reads_paired/fastqc/fq2/synthetic_10_reads_paired_synthetic_10_reads_paired.fq2_fastqc/Images/sequence_length_distribution.png results/samples/synthetic_10_reads_paired_synthetic_10_reads_paired/quant_kallisto/abundance.tsv results/samples/synthetic_10_reads_paired_synthetic_10_reads_paired/quant_kallisto/pseudoalignments.bam -results/samples/synthetic_10_reads_paired_synthetic_10_reads_paired/quant_kallisto/synthetic_10_reads_paired_synthetic_10_reads_paired.kallisto.pseudo.sam -results/samples/synthetic_10_reads_paired_synthetic_10_reads_paired/salmon_quant/synthetic_10_reads_paired_synthetic_10_reads_paired/lib_format_counts.json -results/samples/synthetic_10_reads_paired_synthetic_10_reads_paired/salmon_quant/synthetic_10_reads_paired_synthetic_10_reads_paired/aux_info/ambig_info.tsv -results/samples/synthetic_10_reads_paired_synthetic_10_reads_paired/salmon_quant/synthetic_10_reads_paired_synthetic_10_reads_paired/aux_info/expected_bias -results/samples/synthetic_10_reads_paired_synthetic_10_reads_paired/salmon_quant/synthetic_10_reads_paired_synthetic_10_reads_paired/aux_info/observed_bias -results/samples/synthetic_10_reads_paired_synthetic_10_reads_paired/salmon_quant/synthetic_10_reads_paired_synthetic_10_reads_paired/aux_info/observed_bias_3p -results/samples/synthetic_10_reads_paired_synthetic_10_reads_paired/salmon_quant/synthetic_10_reads_paired_synthetic_10_reads_paired/aux_info/unmapped_names.txt -results/samples/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1.remove_adapters_mate1.fastq -results/samples/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1.remove_polya_mate1.fastq -results/samples/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1/map_genome/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1_SJ.out.tab -results/samples/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1/mate1_fastqc/synthetic.mate_1_fastqc/fastqc_data.txt -results/samples/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1/mate1_fastqc/synthetic.mate_1_fastqc/fastqc.fo -results/samples/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1/mate1_fastqc/synthetic.mate_1_fastqc/summary.txt -results/samples/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1/mate1_fastqc/synthetic.mate_1_fastqc/Images/adapter_content.png -results/samples/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1/mate1_fastqc/synthetic.mate_1_fastqc/Images/duplication_levels.png -results/samples/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1/mate1_fastqc/synthetic.mate_1_fastqc/Images/per_base_n_content.png -results/samples/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1/mate1_fastqc/synthetic.mate_1_fastqc/Images/per_base_quality.png -results/samples/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1/mate1_fastqc/synthetic.mate_1_fastqc/Images/per_base_sequence_content.png -results/samples/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1/mate1_fastqc/synthetic.mate_1_fastqc/Images/per_sequence_gc_content.png -results/samples/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1/mate1_fastqc/synthetic.mate_1_fastqc/Images/per_sequence_quality.png -results/samples/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1/mate1_fastqc/synthetic.mate_1_fastqc/Images/per_tile_quality.png -results/samples/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1/mate1_fastqc/synthetic.mate_1_fastqc/Images/sequence_length_distribution.png +results/samples/synthetic_10_reads_paired_synthetic_10_reads_paired/quant_kallisto/synthetic_10_reads_paired_synthetic_10_reads_paired.pe.kallisto.pseudo.sam +results/samples/synthetic_10_reads_paired_synthetic_10_reads_paired/synthetic_10_reads_paired_synthetic_10_reads_paired.salmon.pe/lib_format_counts.json +results/samples/synthetic_10_reads_paired_synthetic_10_reads_paired/synthetic_10_reads_paired_synthetic_10_reads_paired.salmon.pe/aux_info/ambig_info.tsv +results/samples/synthetic_10_reads_paired_synthetic_10_reads_paired/synthetic_10_reads_paired_synthetic_10_reads_paired.salmon.pe/aux_info/expected_bias +results/samples/synthetic_10_reads_paired_synthetic_10_reads_paired/synthetic_10_reads_paired_synthetic_10_reads_paired.salmon.pe/aux_info/observed_bias +results/samples/synthetic_10_reads_paired_synthetic_10_reads_paired/synthetic_10_reads_paired_synthetic_10_reads_paired.salmon.pe/aux_info/observed_bias_3p +results/samples/synthetic_10_reads_paired_synthetic_10_reads_paired/synthetic_10_reads_paired_synthetic_10_reads_paired.salmon.pe/aux_info/unmapped_names.txt +results/samples/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1.se.remove_adapters_mate1.fastq +results/samples/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1.se.remove_polya_mate1.fastq +results/samples/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1/map_genome/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1.se.SJ.out.tab +results/samples/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1/fastqc/fq1/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1.fq1_fastqc/fastqc_data.txt +results/samples/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1/fastqc/fq1/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1.fq1_fastqc/fastqc.fo +results/samples/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1/fastqc/fq1/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1.fq1_fastqc/summary.txt +results/samples/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1/fastqc/fq1/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1.fq1_fastqc/Images/adapter_content.png +results/samples/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1/fastqc/fq1/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1.fq1_fastqc/Images/duplication_levels.png +results/samples/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1/fastqc/fq1/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1.fq1_fastqc/Images/per_base_n_content.png +results/samples/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1/fastqc/fq1/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1.fq1_fastqc/Images/per_base_quality.png +results/samples/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1/fastqc/fq1/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1.fq1_fastqc/Images/per_base_sequence_content.png +results/samples/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1/fastqc/fq1/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1.fq1_fastqc/Images/per_sequence_gc_content.png +results/samples/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1/fastqc/fq1/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1.fq1_fastqc/Images/per_sequence_quality.png +results/samples/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1/fastqc/fq1/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1.fq1_fastqc/Images/per_tile_quality.png +results/samples/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1/fastqc/fq1/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1.fq1_fastqc/Images/sequence_length_distribution.png results/samples/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1/quant_kallisto/abundance.tsv results/samples/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1/quant_kallisto/pseudoalignments.bam -results/samples/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1/quant_kallisto/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1.kallisto.pseudo.sam -results/samples/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1/salmon_quant/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1/lib_format_counts.json -results/samples/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1/salmon_quant/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1/aux_info/ambig_info.tsv -results/samples/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1/salmon_quant/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1/aux_info/expected_bias -results/samples/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1/salmon_quant/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1/aux_info/observed_bias -results/samples/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1/salmon_quant/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1/aux_info/observed_bias_3p -results/samples/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1/salmon_quant/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1/aux_info/unmapped_names.txt +results/samples/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1/quant_kallisto/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1.se.kallisto.pseudo.sam +results/samples/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1.salmon.se/lib_format_counts.json +results/samples/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1.salmon.se/aux_info/ambig_info.tsv +results/samples/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1.salmon.se/aux_info/expected_bias +results/samples/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1.salmon.se/aux_info/observed_bias +results/samples/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1.salmon.se/aux_info/observed_bias_3p +results/samples/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1.salmon.se/aux_info/unmapped_names.txt results/transcriptome/homo_sapiens/transcriptome.fa +results/alfa_indexes/homo_sapiens/75/ALFA/sorted_genes.stranded.ALFA_index +results/alfa_indexes/homo_sapiens/75/ALFA/sorted_genes.unstranded.ALFA_index +results/samples/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1/ALFA/UniqueMultiple/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1.UniqueMultiple.minus.bg +results/samples/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1/ALFA/UniqueMultiple/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1.UniqueMultiple.plus.bg +results/samples/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1/ALFA/Unique/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1_Signal.Unique.out.minus.bg +results/samples/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1/ALFA/Unique/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1_Signal.Unique.out.plus.bg +results/samples/synthetic_10_reads_paired_synthetic_10_reads_paired/ALFA/UniqueMultiple/synthetic_10_reads_paired_synthetic_10_reads_paired.UniqueMultiple.minus.bg +results/samples/synthetic_10_reads_paired_synthetic_10_reads_paired/ALFA/UniqueMultiple/synthetic_10_reads_paired_synthetic_10_reads_paired.UniqueMultiple.plus.bg +results/samples/synthetic_10_reads_paired_synthetic_10_reads_paired/ALFA/Unique/synthetic_10_reads_paired_synthetic_10_reads_paired.Unique.minus.bg +results/samples/synthetic_10_reads_paired_synthetic_10_reads_paired/ALFA/Unique/synthetic_10_reads_paired_synthetic_10_reads_paired.Unique.plus.bg +results/samples/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1/ALFA/UniqueMultiple/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1.ALFA_feature_counts.tsv +results/samples/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1/ALFA/Unique/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1.ALFA_feature_counts.tsv +results/samples/synthetic_10_reads_paired_synthetic_10_reads_paired/ALFA/UniqueMultiple/synthetic_10_reads_paired_synthetic_10_reads_paired.ALFA_feature_counts.tsv +results/samples/synthetic_10_reads_paired_synthetic_10_reads_paired/ALFA/Unique/synthetic_10_reads_paired_synthetic_10_reads_paired.ALFA_feature_counts.tsv +results/samples/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1/bigWig/UniqueMultiple/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1_UniqueMultiple_minus.bw +results/samples/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1/bigWig/UniqueMultiple/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1_UniqueMultiple_plus.bw +results/samples/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1/bigWig/Unique/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1_Unique_minus.bw +results/samples/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1/bigWig/Unique/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1_Unique_plus.bw +results/samples/synthetic_10_reads_paired_synthetic_10_reads_paired/bigWig/UniqueMultiple/synthetic_10_reads_paired_synthetic_10_reads_paired_UniqueMultiple_minus.bw +results/samples/synthetic_10_reads_paired_synthetic_10_reads_paired/bigWig/UniqueMultiple/synthetic_10_reads_paired_synthetic_10_reads_paired_UniqueMultiple_plus.bw +results/samples/synthetic_10_reads_paired_synthetic_10_reads_paired/bigWig/Unique/synthetic_10_reads_paired_synthetic_10_reads_paired_Unique_minus.bw +results/samples/synthetic_10_reads_paired_synthetic_10_reads_paired/bigWig/Unique/synthetic_10_reads_paired_synthetic_10_reads_paired_Unique_plus.bw +results/multiqc_summary/multiqc_data/multiqc_fastqc.txt +results/multiqc_summary/multiqc_data/multiqc_cutadapt.txt +results/multiqc_summary/multiqc_data/multiqc_star.txt +results/multiqc_summary/multiqc_data/multiqc_kallisto.txt +results/multiqc_summary/multiqc_data/multiqc_general_stats.txt diff --git a/tests/test_integration_workflow/expected_output.md5 b/tests/test_integration_workflow/expected_output.md5 index e3166e7cca1516315277f3ef2fc514b69e8c4b75..f8f074ee41f58d23057567fc86fc3357fe8ff9c8 100644 --- a/tests/test_integration_workflow/expected_output.md5 +++ b/tests/test_integration_workflow/expected_output.md5 @@ -16,88 +16,93 @@ bae93882f9148a6c55816b733c32a3a2 results/star_indexes/homo_sapiens/75/STAR_inde 875030141343fca11f0b5aa1a37e1b66 results/star_indexes/homo_sapiens/75/STAR_index/sjdbList.fromGTF.out.tab ea36f062eedc7f54ceffea2b635a25a8 results/star_indexes/homo_sapiens/75/STAR_index/sjdbList.out.tab 65e794aa5096551254af18a678d02264 results/star_indexes/homo_sapiens/75/STAR_index/transcriptInfo.tab -500dd49da40b16799aba62aa5cf239ba results/samples/synthetic_10_reads_paired_synthetic_10_reads_paired/synthetic_10_reads_paired_synthetic_10_reads_paired.remove_adapters_mate1.fastq -e90e31db1ce51d930645eb74ff70d21b results/samples/synthetic_10_reads_paired_synthetic_10_reads_paired/synthetic_10_reads_paired_synthetic_10_reads_paired.remove_adapters_mate2.fastq -500dd49da40b16799aba62aa5cf239ba results/samples/synthetic_10_reads_paired_synthetic_10_reads_paired/synthetic_10_reads_paired_synthetic_10_reads_paired.remove_polya_mate1.fastq -1c0796d7e0bdab0e99780b2e11d80c19 results/samples/synthetic_10_reads_paired_synthetic_10_reads_paired/synthetic_10_reads_paired_synthetic_10_reads_paired.remove_polya_mate2.fastq -d41d8cd98f00b204e9800998ecf8427e results/samples/synthetic_10_reads_paired_synthetic_10_reads_paired/map_genome/synthetic_10_reads_paired_synthetic_10_reads_paired_SJ.out.tab -f551ff091e920357ec0a76807cb51dba results/samples/synthetic_10_reads_paired_synthetic_10_reads_paired/mate1_fastqc/synthetic.mate_1_fastqc/fastqc_data.txt -c0df759ceab72ea4b1a560f991fe6497 results/samples/synthetic_10_reads_paired_synthetic_10_reads_paired/mate1_fastqc/synthetic.mate_1_fastqc/fastqc.fo -a7530faae728593900da23fca4bea97a results/samples/synthetic_10_reads_paired_synthetic_10_reads_paired/mate1_fastqc/synthetic.mate_1_fastqc/summary.txt -310130cbb8bbb6517f37ea0ff6586d43 results/samples/synthetic_10_reads_paired_synthetic_10_reads_paired/mate1_fastqc/synthetic.mate_1_fastqc/Images/adapter_content.png -42741852cc110a151580bb3bb5180fc0 results/samples/synthetic_10_reads_paired_synthetic_10_reads_paired/mate1_fastqc/synthetic.mate_1_fastqc/Images/duplication_levels.png -8b34217d5fd931966d9007a658570e67 results/samples/synthetic_10_reads_paired_synthetic_10_reads_paired/mate1_fastqc/synthetic.mate_1_fastqc/Images/per_base_n_content.png -848396c145d2157f34bbf86757f51abe results/samples/synthetic_10_reads_paired_synthetic_10_reads_paired/mate1_fastqc/synthetic.mate_1_fastqc/Images/per_base_quality.png -56bd6a5f95196121173609eb70618166 results/samples/synthetic_10_reads_paired_synthetic_10_reads_paired/mate1_fastqc/synthetic.mate_1_fastqc/Images/per_base_sequence_content.png -e4c1a39967ec9547a2e4c71c97982ee0 results/samples/synthetic_10_reads_paired_synthetic_10_reads_paired/mate1_fastqc/synthetic.mate_1_fastqc/Images/per_sequence_gc_content.png -69b70e3f561b749bf10b186dd2480a8a results/samples/synthetic_10_reads_paired_synthetic_10_reads_paired/mate1_fastqc/synthetic.mate_1_fastqc/Images/per_sequence_quality.png -b28aac49f537b8cba364b6422458ad28 results/samples/synthetic_10_reads_paired_synthetic_10_reads_paired/mate1_fastqc/synthetic.mate_1_fastqc/Images/per_tile_quality.png -5b950b5dfe3c7407e9aac153db330a38 results/samples/synthetic_10_reads_paired_synthetic_10_reads_paired/mate1_fastqc/synthetic.mate_1_fastqc/Images/sequence_length_distribution.png -01e45150bb7d4ecfd47ceb9f3ae6153b results/samples/synthetic_10_reads_paired_synthetic_10_reads_paired/mate2_fastqc/synthetic.mate_2_fastqc/fastqc_data.txt -5d406428979b59abf760b9be8b1877e2 results/samples/synthetic_10_reads_paired_synthetic_10_reads_paired/mate2_fastqc/synthetic.mate_2_fastqc/fastqc.fo -706b6812d0313b6858e80a4e6aff453e results/samples/synthetic_10_reads_paired_synthetic_10_reads_paired/mate2_fastqc/synthetic.mate_2_fastqc/summary.txt -310130cbb8bbb6517f37ea0ff6586d43 results/samples/synthetic_10_reads_paired_synthetic_10_reads_paired/mate2_fastqc/synthetic.mate_2_fastqc/Images/adapter_content.png -42741852cc110a151580bb3bb5180fc0 results/samples/synthetic_10_reads_paired_synthetic_10_reads_paired/mate2_fastqc/synthetic.mate_2_fastqc/Images/duplication_levels.png -8b34217d5fd931966d9007a658570e67 results/samples/synthetic_10_reads_paired_synthetic_10_reads_paired/mate2_fastqc/synthetic.mate_2_fastqc/Images/per_base_n_content.png -848396c145d2157f34bbf86757f51abe results/samples/synthetic_10_reads_paired_synthetic_10_reads_paired/mate2_fastqc/synthetic.mate_2_fastqc/Images/per_base_quality.png -73a907996c12a3c39bea535588e65658 results/samples/synthetic_10_reads_paired_synthetic_10_reads_paired/mate2_fastqc/synthetic.mate_2_fastqc/Images/per_base_sequence_content.png -3a5ef8cfdbab5c8987941fdd46145ca4 results/samples/synthetic_10_reads_paired_synthetic_10_reads_paired/mate2_fastqc/synthetic.mate_2_fastqc/Images/per_sequence_gc_content.png -69b70e3f561b749bf10b186dd2480a8a results/samples/synthetic_10_reads_paired_synthetic_10_reads_paired/mate2_fastqc/synthetic.mate_2_fastqc/Images/per_sequence_quality.png -b28aac49f537b8cba364b6422458ad28 results/samples/synthetic_10_reads_paired_synthetic_10_reads_paired/mate2_fastqc/synthetic.mate_2_fastqc/Images/per_tile_quality.png -5b950b5dfe3c7407e9aac153db330a38 results/samples/synthetic_10_reads_paired_synthetic_10_reads_paired/mate2_fastqc/synthetic.mate_2_fastqc/Images/sequence_length_distribution.png +500dd49da40b16799aba62aa5cf239ba results/samples/synthetic_10_reads_paired_synthetic_10_reads_paired/synthetic_10_reads_paired_synthetic_10_reads_paired.pe.remove_adapters_mate1.fastq +500dd49da40b16799aba62aa5cf239ba results/samples/synthetic_10_reads_paired_synthetic_10_reads_paired/synthetic_10_reads_paired_synthetic_10_reads_paired.pe.remove_polya_mate1.fastq +e90e31db1ce51d930645eb74ff70d21b results/samples/synthetic_10_reads_paired_synthetic_10_reads_paired/synthetic_10_reads_paired_synthetic_10_reads_paired.pe.remove_adapters_mate2.fastq +1c0796d7e0bdab0e99780b2e11d80c19 results/samples/synthetic_10_reads_paired_synthetic_10_reads_paired/synthetic_10_reads_paired_synthetic_10_reads_paired.pe.remove_polya_mate2.fastq +d41d8cd98f00b204e9800998ecf8427e results/samples/synthetic_10_reads_paired_synthetic_10_reads_paired/map_genome/synthetic_10_reads_paired_synthetic_10_reads_paired.pe.SJ.out.tab +9896744dd90ff3eef00c91fa1f721366 results/samples/synthetic_10_reads_paired_synthetic_10_reads_paired/fastqc/fq1/synthetic_10_reads_paired_synthetic_10_reads_paired.fq1_fastqc/fastqc_data.txt +6946ba80af318b9c1052b264dc674a51 results/samples/synthetic_10_reads_paired_synthetic_10_reads_paired/fastqc/fq1/synthetic_10_reads_paired_synthetic_10_reads_paired.fq1_fastqc/fastqc.fo +2603f3031242e97411a71571f6ad9e53 results/samples/synthetic_10_reads_paired_synthetic_10_reads_paired/fastqc/fq1/synthetic_10_reads_paired_synthetic_10_reads_paired.fq1_fastqc/summary.txt +c39fc9108e6f6c0df45acc9391daad9c results/samples/synthetic_10_reads_paired_synthetic_10_reads_paired/fastqc/fq2/synthetic_10_reads_paired_synthetic_10_reads_paired.fq2_fastqc/fastqc_data.txt +82c37e4cb9c1e167383d589ccb5c80b4 results/samples/synthetic_10_reads_paired_synthetic_10_reads_paired/fastqc/fq2/synthetic_10_reads_paired_synthetic_10_reads_paired.fq2_fastqc/fastqc.fo +2029b1ecea0c5fb3c54238813cf02a26 results/samples/synthetic_10_reads_paired_synthetic_10_reads_paired/fastqc/fq2/synthetic_10_reads_paired_synthetic_10_reads_paired.fq2_fastqc/summary.txt +310130cbb8bbb6517f37ea0ff6586d43 results/samples/synthetic_10_reads_paired_synthetic_10_reads_paired/fastqc/fq1/synthetic_10_reads_paired_synthetic_10_reads_paired.fq1_fastqc/Images/adapter_content.png +42741852cc110a151580bb3bb5180fc0 results/samples/synthetic_10_reads_paired_synthetic_10_reads_paired/fastqc/fq1/synthetic_10_reads_paired_synthetic_10_reads_paired.fq1_fastqc/Images/duplication_levels.png +8b34217d5fd931966d9007a658570e67 results/samples/synthetic_10_reads_paired_synthetic_10_reads_paired/fastqc/fq1/synthetic_10_reads_paired_synthetic_10_reads_paired.fq1_fastqc/Images/per_base_n_content.png +848396c145d2157f34bbf86757f51abe results/samples/synthetic_10_reads_paired_synthetic_10_reads_paired/fastqc/fq1/synthetic_10_reads_paired_synthetic_10_reads_paired.fq1_fastqc/Images/per_base_quality.png +56bd6a5f95196121173609eb70618166 results/samples/synthetic_10_reads_paired_synthetic_10_reads_paired/fastqc/fq1/synthetic_10_reads_paired_synthetic_10_reads_paired.fq1_fastqc/Images/per_base_sequence_content.png +e4c1a39967ec9547a2e4c71c97982ee0 results/samples/synthetic_10_reads_paired_synthetic_10_reads_paired/fastqc/fq1/synthetic_10_reads_paired_synthetic_10_reads_paired.fq1_fastqc/Images/per_sequence_gc_content.png +69b70e3f561b749bf10b186dd2480a8a results/samples/synthetic_10_reads_paired_synthetic_10_reads_paired/fastqc/fq1/synthetic_10_reads_paired_synthetic_10_reads_paired.fq1_fastqc/Images/per_sequence_quality.png +b28aac49f537b8cba364b6422458ad28 results/samples/synthetic_10_reads_paired_synthetic_10_reads_paired/fastqc/fq1/synthetic_10_reads_paired_synthetic_10_reads_paired.fq1_fastqc/Images/per_tile_quality.png +5b950b5dfe3c7407e9aac153db330a38 results/samples/synthetic_10_reads_paired_synthetic_10_reads_paired/fastqc/fq1/synthetic_10_reads_paired_synthetic_10_reads_paired.fq1_fastqc/Images/sequence_length_distribution.png +310130cbb8bbb6517f37ea0ff6586d43 results/samples/synthetic_10_reads_paired_synthetic_10_reads_paired/fastqc/fq2/synthetic_10_reads_paired_synthetic_10_reads_paired.fq2_fastqc/Images/adapter_content.png +42741852cc110a151580bb3bb5180fc0 results/samples/synthetic_10_reads_paired_synthetic_10_reads_paired/fastqc/fq2/synthetic_10_reads_paired_synthetic_10_reads_paired.fq2_fastqc/Images/duplication_levels.png +8b34217d5fd931966d9007a658570e67 results/samples/synthetic_10_reads_paired_synthetic_10_reads_paired/fastqc/fq2/synthetic_10_reads_paired_synthetic_10_reads_paired.fq2_fastqc/Images/per_base_n_content.png +848396c145d2157f34bbf86757f51abe results/samples/synthetic_10_reads_paired_synthetic_10_reads_paired/fastqc/fq2/synthetic_10_reads_paired_synthetic_10_reads_paired.fq2_fastqc/Images/per_base_quality.png +73a907996c12a3c39bea535588e65658 results/samples/synthetic_10_reads_paired_synthetic_10_reads_paired/fastqc/fq2/synthetic_10_reads_paired_synthetic_10_reads_paired.fq2_fastqc/Images/per_base_sequence_content.png +3a5ef8cfdbab5c8987941fdd46145ca4 results/samples/synthetic_10_reads_paired_synthetic_10_reads_paired/fastqc/fq2/synthetic_10_reads_paired_synthetic_10_reads_paired.fq2_fastqc/Images/per_sequence_gc_content.png +69b70e3f561b749bf10b186dd2480a8a results/samples/synthetic_10_reads_paired_synthetic_10_reads_paired/fastqc/fq2/synthetic_10_reads_paired_synthetic_10_reads_paired.fq2_fastqc/Images/per_sequence_quality.png +b28aac49f537b8cba364b6422458ad28 results/samples/synthetic_10_reads_paired_synthetic_10_reads_paired/fastqc/fq2/synthetic_10_reads_paired_synthetic_10_reads_paired.fq2_fastqc/Images/per_tile_quality.png +5b950b5dfe3c7407e9aac153db330a38 results/samples/synthetic_10_reads_paired_synthetic_10_reads_paired/fastqc/fq2/synthetic_10_reads_paired_synthetic_10_reads_paired.fq2_fastqc/Images/sequence_length_distribution.png 2e77276535976efccb244627231624bf results/samples/synthetic_10_reads_paired_synthetic_10_reads_paired/quant_kallisto/abundance.tsv d013650f813b815a790c9e6a51c7559b results/samples/synthetic_10_reads_paired_synthetic_10_reads_paired/quant_kallisto/pseudoalignments.bam -d41d8cd98f00b204e9800998ecf8427e results/samples/synthetic_10_reads_paired_synthetic_10_reads_paired/quant_kallisto/synthetic_10_reads_paired_synthetic_10_reads_paired.kallisto.pseudo.sam -c77480e0235761f2d7f80dbceb2e2806 results/samples/synthetic_10_reads_paired_synthetic_10_reads_paired/salmon_quant/synthetic_10_reads_paired_synthetic_10_reads_paired/lib_format_counts.json -989d6ee63b728fced9ec0249735ab83d results/samples/synthetic_10_reads_paired_synthetic_10_reads_paired/salmon_quant/synthetic_10_reads_paired_synthetic_10_reads_paired/aux_info/ambig_info.tsv -3407f87245d0003e0ffbfdf6d8c04f20 results/samples/synthetic_10_reads_paired_synthetic_10_reads_paired/salmon_quant/synthetic_10_reads_paired_synthetic_10_reads_paired/aux_info/expected_bias -92bcd0592d22a6a58d0360fc76103e56 results/samples/synthetic_10_reads_paired_synthetic_10_reads_paired/salmon_quant/synthetic_10_reads_paired_synthetic_10_reads_paired/aux_info/observed_bias -92bcd0592d22a6a58d0360fc76103e56 results/samples/synthetic_10_reads_paired_synthetic_10_reads_paired/salmon_quant/synthetic_10_reads_paired_synthetic_10_reads_paired/aux_info/observed_bias_3p -d41d8cd98f00b204e9800998ecf8427e results/samples/synthetic_10_reads_paired_synthetic_10_reads_paired/salmon_quant/synthetic_10_reads_paired_synthetic_10_reads_paired/aux_info/unmapped_names.txt -500dd49da40b16799aba62aa5cf239ba results/samples/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1.remove_adapters_mate1.fastq -500dd49da40b16799aba62aa5cf239ba results/samples/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1.remove_polya_mate1.fastq -d41d8cd98f00b204e9800998ecf8427e results/samples/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1/map_genome/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1_SJ.out.tab -5d679a295f279d9c1a294ea5af35464f results/samples/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1/mate1_fastqc/synthetic.mate_1_fastqc/fastqc_data.txt -c0df759ceab72ea4b1a560f991fe6497 results/samples/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1/mate1_fastqc/synthetic.mate_1_fastqc/fastqc.fo -a7530faae728593900da23fca4bea97a results/samples/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1/mate1_fastqc/synthetic.mate_1_fastqc/summary.txt -310130cbb8bbb6517f37ea0ff6586d43 results/samples/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1/mate1_fastqc/synthetic.mate_1_fastqc/Images/adapter_content.png -42741852cc110a151580bb3bb5180fc0 results/samples/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1/mate1_fastqc/synthetic.mate_1_fastqc/Images/duplication_levels.png -8b34217d5fd931966d9007a658570e67 results/samples/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1/mate1_fastqc/synthetic.mate_1_fastqc/Images/per_base_n_content.png -848396c145d2157f34bbf86757f51abe results/samples/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1/mate1_fastqc/synthetic.mate_1_fastqc/Images/per_base_quality.png -56bd6a5f95196121173609eb70618166 results/samples/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1/mate1_fastqc/synthetic.mate_1_fastqc/Images/per_base_sequence_content.png -e4c1a39967ec9547a2e4c71c97982ee0 results/samples/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1/mate1_fastqc/synthetic.mate_1_fastqc/Images/per_sequence_gc_content.png -69b70e3f561b749bf10b186dd2480a8a results/samples/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1/mate1_fastqc/synthetic.mate_1_fastqc/Images/per_sequence_quality.png -b28aac49f537b8cba364b6422458ad28 results/samples/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1/mate1_fastqc/synthetic.mate_1_fastqc/Images/per_tile_quality.png -5b950b5dfe3c7407e9aac153db330a38 results/samples/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1/mate1_fastqc/synthetic.mate_1_fastqc/Images/sequence_length_distribution.png +d41d8cd98f00b204e9800998ecf8427e results/samples/synthetic_10_reads_paired_synthetic_10_reads_paired/quant_kallisto/synthetic_10_reads_paired_synthetic_10_reads_paired.pe.kallisto.pseudo.sam +981b59830d74d300bb5dd3e602e0d86f results/samples/synthetic_10_reads_paired_synthetic_10_reads_paired/synthetic_10_reads_paired_synthetic_10_reads_paired.salmon.pe/lib_format_counts.json +989d6ee63b728fced9ec0249735ab83d results/samples/synthetic_10_reads_paired_synthetic_10_reads_paired/synthetic_10_reads_paired_synthetic_10_reads_paired.salmon.pe/aux_info/ambig_info.tsv +3407f87245d0003e0ffbfdf6d8c04f20 results/samples/synthetic_10_reads_paired_synthetic_10_reads_paired/synthetic_10_reads_paired_synthetic_10_reads_paired.salmon.pe/aux_info/expected_bias +92bcd0592d22a6a58d0360fc76103e56 results/samples/synthetic_10_reads_paired_synthetic_10_reads_paired/synthetic_10_reads_paired_synthetic_10_reads_paired.salmon.pe/aux_info/observed_bias +92bcd0592d22a6a58d0360fc76103e56 results/samples/synthetic_10_reads_paired_synthetic_10_reads_paired/synthetic_10_reads_paired_synthetic_10_reads_paired.salmon.pe/aux_info/observed_bias_3p +d41d8cd98f00b204e9800998ecf8427e results/samples/synthetic_10_reads_paired_synthetic_10_reads_paired/synthetic_10_reads_paired_synthetic_10_reads_paired.salmon.pe/aux_info/unmapped_names.txt +500dd49da40b16799aba62aa5cf239ba results/samples/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1.se.remove_adapters_mate1.fastq +500dd49da40b16799aba62aa5cf239ba results/samples/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1.se.remove_polya_mate1.fastq +d41d8cd98f00b204e9800998ecf8427e results/samples/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1/map_genome/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1.se.SJ.out.tab +fdb8c6ddd39b606414b2785d6ec2da8a results/samples/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1/fastqc/fq1/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1.fq1_fastqc/fastqc_data.txt +3cb70940acdcca512207bd8613085538 results/samples/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1/fastqc/fq1/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1.fq1_fastqc/fastqc.fo +fc276a1711cc35f7a9d5328bdbbab810 results/samples/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1/fastqc/fq1/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1.fq1_fastqc/summary.txt +310130cbb8bbb6517f37ea0ff6586d43 results/samples/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1/fastqc/fq1/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1.fq1_fastqc/Images/adapter_content.png +42741852cc110a151580bb3bb5180fc0 results/samples/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1/fastqc/fq1/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1.fq1_fastqc/Images/duplication_levels.png +8b34217d5fd931966d9007a658570e67 results/samples/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1/fastqc/fq1/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1.fq1_fastqc/Images/per_base_n_content.png +848396c145d2157f34bbf86757f51abe results/samples/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1/fastqc/fq1/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1.fq1_fastqc/Images/per_base_quality.png +56bd6a5f95196121173609eb70618166 results/samples/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1/fastqc/fq1/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1.fq1_fastqc/Images/per_base_sequence_content.png +e4c1a39967ec9547a2e4c71c97982ee0 results/samples/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1/fastqc/fq1/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1.fq1_fastqc/Images/per_sequence_gc_content.png +69b70e3f561b749bf10b186dd2480a8a results/samples/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1/fastqc/fq1/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1.fq1_fastqc/Images/per_sequence_quality.png +b28aac49f537b8cba364b6422458ad28 results/samples/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1/fastqc/fq1/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1.fq1_fastqc/Images/per_tile_quality.png +5b950b5dfe3c7407e9aac153db330a38 results/samples/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1/fastqc/fq1/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1.fq1_fastqc/Images/sequence_length_distribution.png 50a9b89a9f1da2c438cb0041b64faa0e results/samples/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1/quant_kallisto/abundance.tsv fd8242418230a4edb33350be2e4f1d78 results/samples/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1/quant_kallisto/pseudoalignments.bam -d41d8cd98f00b204e9800998ecf8427e results/samples/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1/quant_kallisto/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1.kallisto.pseudo.sam -e72f5d798c99272f8c0166dc77247db1 results/samples/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1/salmon_quant/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1/lib_format_counts.json -989d6ee63b728fced9ec0249735ab83d results/samples/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1/salmon_quant/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1/aux_info/ambig_info.tsv -3407f87245d0003e0ffbfdf6d8c04f20 results/samples/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1/salmon_quant/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1/aux_info/expected_bias -92bcd0592d22a6a58d0360fc76103e56 results/samples/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1/salmon_quant/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1/aux_info/observed_bias -92bcd0592d22a6a58d0360fc76103e56 results/samples/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1/salmon_quant/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1/aux_info/observed_bias_3p -d41d8cd98f00b204e9800998ecf8427e results/samples/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1/salmon_quant/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1/aux_info/unmapped_names.txt -16652c037090f3eed1123618a2e75107 results/samples/synthetic_10_reads_paired_synthetic_10_reads_paired/STAR_coverage/synthetic_10_reads_paired_synthetic_10_reads_paired_Signal.UniqueMultiple.str1.out.bg -90ae442ebf35015eab2dd4e804c2bafb results/samples/synthetic_10_reads_paired_synthetic_10_reads_paired/STAR_coverage/synthetic_10_reads_paired_synthetic_10_reads_paired_Signal.UniqueMultiple.str2.out.bg -16652c037090f3eed1123618a2e75107 results/samples/synthetic_10_reads_paired_synthetic_10_reads_paired/STAR_coverage/synthetic_10_reads_paired_synthetic_10_reads_paired_Signal.Unique.str1.out.bg -90ae442ebf35015eab2dd4e804c2bafb results/samples/synthetic_10_reads_paired_synthetic_10_reads_paired/STAR_coverage/synthetic_10_reads_paired_synthetic_10_reads_paired_Signal.Unique.str2.out.bg -ea91b4f85622561158bff2f7c9c312b3 results/samples/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1/STAR_coverage/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1_Signal.UniqueMultiple.str1.out.bg -bcccf679a8c083d01527514c9f5680a0 results/samples/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1/STAR_coverage/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1_Signal.UniqueMultiple.str2.out.bg -ea91b4f85622561158bff2f7c9c312b3 results/samples/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1/STAR_coverage/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1_Signal.Unique.str1.out.bg -bcccf679a8c083d01527514c9f5680a0 results/samples/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1/STAR_coverage/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1_Signal.Unique.str2.out.bg +d41d8cd98f00b204e9800998ecf8427e results/samples/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1/quant_kallisto/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1.se.kallisto.pseudo.sam +d6ae863b39ca6ec5d0f63c03036f9dda results/samples/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1.salmon.se/lib_format_counts.json +989d6ee63b728fced9ec0249735ab83d results/samples/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1.salmon.se/aux_info/ambig_info.tsv +3407f87245d0003e0ffbfdf6d8c04f20 results/samples/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1.salmon.se/aux_info/expected_bias +92bcd0592d22a6a58d0360fc76103e56 results/samples/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1.salmon.se/aux_info/observed_bias +92bcd0592d22a6a58d0360fc76103e56 results/samples/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1.salmon.se/aux_info/observed_bias_3p +d41d8cd98f00b204e9800998ecf8427e results/samples/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1.salmon.se/aux_info/unmapped_names.txt 3ce47cb1d62482c5d62337751d7e8552 results/transcriptome/homo_sapiens/transcriptome.fa 6b44c507f0a1c9f7369db0bb1deef0fd results/alfa_indexes/homo_sapiens/75/ALFA/sorted_genes.stranded.ALFA_index 2caebc23faf78fdbbbdbb118d28bd6b5 results/alfa_indexes/homo_sapiens/75/ALFA/sorted_genes.unstranded.ALFA_index -bcccf679a8c083d01527514c9f5680a0 results/samples/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1/ALFA/UniqueMultiple/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1_Signal.UniqueMultiple.out.minus.bg -ea91b4f85622561158bff2f7c9c312b3 results/samples/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1/ALFA/UniqueMultiple/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1_Signal.UniqueMultiple.out.plus.bg -bcccf679a8c083d01527514c9f5680a0 results/samples/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1/ALFA/Unique/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1_Signal.Unique.out.minus.bg -ea91b4f85622561158bff2f7c9c312b3 results/samples/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1/ALFA/Unique/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1_Signal.Unique.out.plus.bg -90ae442ebf35015eab2dd4e804c2bafb results/samples/synthetic_10_reads_paired_synthetic_10_reads_paired/ALFA/UniqueMultiple/synthetic_10_reads_paired_synthetic_10_reads_paired_Signal.UniqueMultiple.out.minus.bg -16652c037090f3eed1123618a2e75107 results/samples/synthetic_10_reads_paired_synthetic_10_reads_paired/ALFA/UniqueMultiple/synthetic_10_reads_paired_synthetic_10_reads_paired_Signal.UniqueMultiple.out.plus.bg -90ae442ebf35015eab2dd4e804c2bafb results/samples/synthetic_10_reads_paired_synthetic_10_reads_paired/ALFA/Unique/synthetic_10_reads_paired_synthetic_10_reads_paired_Signal.Unique.out.minus.bg -16652c037090f3eed1123618a2e75107 results/samples/synthetic_10_reads_paired_synthetic_10_reads_paired/ALFA/Unique/synthetic_10_reads_paired_synthetic_10_reads_paired_Signal.Unique.out.plus.bg +bcccf679a8c083d01527514c9f5680a0 results/samples/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1/ALFA/UniqueMultiple/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1.UniqueMultiple.minus.bg +ea91b4f85622561158bff2f7c9c312b3 results/samples/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1/ALFA/UniqueMultiple/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1.UniqueMultiple.plus.bg +bcccf679a8c083d01527514c9f5680a0 results/samples/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1/ALFA/Unique/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1.Unique.minus.bg +ea91b4f85622561158bff2f7c9c312b3 results/samples/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1/ALFA/Unique/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1.Unique.plus.bg +90ae442ebf35015eab2dd4e804c2bafb results/samples/synthetic_10_reads_paired_synthetic_10_reads_paired/ALFA/UniqueMultiple/synthetic_10_reads_paired_synthetic_10_reads_paired.UniqueMultiple.minus.bg +16652c037090f3eed1123618a2e75107 results/samples/synthetic_10_reads_paired_synthetic_10_reads_paired/ALFA/UniqueMultiple/synthetic_10_reads_paired_synthetic_10_reads_paired.UniqueMultiple.plus.bg +90ae442ebf35015eab2dd4e804c2bafb results/samples/synthetic_10_reads_paired_synthetic_10_reads_paired/ALFA/Unique/synthetic_10_reads_paired_synthetic_10_reads_paired.Unique.minus.bg +16652c037090f3eed1123618a2e75107 results/samples/synthetic_10_reads_paired_synthetic_10_reads_paired/ALFA/Unique/synthetic_10_reads_paired_synthetic_10_reads_paired.Unique.plus.bg c1254a0bae19ac3ffc39f73099ffcf2b results/samples/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1/ALFA/UniqueMultiple/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1.ALFA_feature_counts.tsv c1254a0bae19ac3ffc39f73099ffcf2b results/samples/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1/ALFA/Unique/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1.ALFA_feature_counts.tsv 53fd53f884352d0493b2ca99cef5d76d results/samples/synthetic_10_reads_paired_synthetic_10_reads_paired/ALFA/UniqueMultiple/synthetic_10_reads_paired_synthetic_10_reads_paired.ALFA_feature_counts.tsv -53fd53f884352d0493b2ca99cef5d76d results/samples/synthetic_10_reads_paired_synthetic_10_reads_paired/ALFA/Unique/synthetic_10_reads_paired_synthetic_10_reads_paired.ALFA_feature_counts.tsv \ No newline at end of file +53fd53f884352d0493b2ca99cef5d76d results/samples/synthetic_10_reads_paired_synthetic_10_reads_paired/ALFA/Unique/synthetic_10_reads_paired_synthetic_10_reads_paired.ALFA_feature_counts.tsv +ed3428feeb7257b0a69ead76a417e339 results/samples/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1/bigWig/UniqueMultiple/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1_UniqueMultiple_minus.bw +2767ca6a648f3e37b7e3b05ce7845460 results/samples/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1/bigWig/UniqueMultiple/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1_UniqueMultiple_plus.bw +ed3428feeb7257b0a69ead76a417e339 results/samples/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1/bigWig/Unique/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1_Unique_minus.bw +2767ca6a648f3e37b7e3b05ce7845460 results/samples/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1/bigWig/Unique/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1_Unique_plus.bw +69e2bf688165e9fb7c9c49a8763f5632 results/samples/synthetic_10_reads_paired_synthetic_10_reads_paired/bigWig/UniqueMultiple/synthetic_10_reads_paired_synthetic_10_reads_paired_UniqueMultiple_minus.bw +ec5aab1b79e7880dfa590e5bc7db5232 results/samples/synthetic_10_reads_paired_synthetic_10_reads_paired/bigWig/UniqueMultiple/synthetic_10_reads_paired_synthetic_10_reads_paired_UniqueMultiple_plus.bw +69e2bf688165e9fb7c9c49a8763f5632 results/samples/synthetic_10_reads_paired_synthetic_10_reads_paired/bigWig/Unique/synthetic_10_reads_paired_synthetic_10_reads_paired_Unique_minus.bw +ec5aab1b79e7880dfa590e5bc7db5232 results/samples/synthetic_10_reads_paired_synthetic_10_reads_paired/bigWig/Unique/synthetic_10_reads_paired_synthetic_10_reads_paired_Unique_plus.bw +3e4db5fad83e162bcc19abbe81333a95 results/multiqc_summary/multiqc_data/multiqc_cutadapt.txt +0c6363588cf6ff74d49f27c164185918 results/multiqc_summary/multiqc_data/multiqc_star.txt +dd81441ca97912a62292d317af2c107c results/multiqc_summary/multiqc_data/multiqc_kallisto.txt +ba090b1b4a2473891de97493d3244956 results/multiqc_summary/multiqc_data/multiqc_fastqc.txt +0703b4cb7ec2abfab13ccd5f58c2d536 results/multiqc_summary/multiqc_data/multiqc_general_stats.txt diff --git a/tests/test_integration_workflow/test.local.sh b/tests/test_integration_workflow/test.local.sh index ac6e45ec44898fb8204019cc26e3d85faaaecb62..16d715785b7e3e878f59824709df4c295196cc0e 100755 --- a/tests/test_integration_workflow/test.local.sh +++ b/tests/test_integration_workflow/test.local.sh @@ -38,15 +38,15 @@ find results/ -type f -name \*\.zip -exec sh -c 'unzip -o {} -d $(dirname {})' \ md5sum --check "expected_output.md5" # Checksum file generated with -# find results/ \ -# -type f \ -# -name \*\.gz \ -# -exec gunzip '{}' \; -# find results/ \ -# -type f \ -# -name \*\.zip \ -# -exec sh -c 'unzip -o {} -d $(dirname {})' \; -# md5sum $(cat expected_output.files) > expected_output.md5 +#find results/ \ +# -type f \ +# -name \*\.gz \ +# -exec gunzip '{}' \; +#find results/ \ +# -type f \ +# -name \*\.zip \ +# -exec sh -c 'unzip -o {} -d $(dirname {})' \; +#md5sum $(cat expected_output.files) > expected_output.md5 # Check whether STAR produces expected alignments # STAR alignments need to be fully within ground truth alignments for tests to pass; not checking @@ -55,7 +55,7 @@ md5sum --check "expected_output.md5" echo "Verifying STAR output" result=$(bedtools intersect -F 1 -v -bed \ -a ../input_files/synthetic.mate_1.bed \ - -b results/samples/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1/map_genome/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1_Aligned.sortedByCoord.out.bam \ + -b results/samples/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1/map_genome/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1.se.Aligned.sortedByCoord.out.bam \ | wc -l) if [ $result != "0" ]; then echo "Alignments for mate 1 reads are not consistent with ground truth" @@ -63,7 +63,7 @@ if [ $result != "0" ]; then fi result=$(bedtools intersect -F 1 -v -bed \ -a <(cat ../input_files/synthetic.mate_1.bed ../input_files/synthetic.mate_2.bed) \ - -b results/samples/synthetic_10_reads_paired_synthetic_10_reads_paired/map_genome/synthetic_10_reads_paired_synthetic_10_reads_paired_Aligned.sortedByCoord.out.bam \ + -b results/samples/synthetic_10_reads_paired_synthetic_10_reads_paired/map_genome/synthetic_10_reads_paired_synthetic_10_reads_paired.pe.Aligned.sortedByCoord.out.bam \ | wc -l) if [ $result != "0" ]; then echo "Alignments for mate 1 reads are not consistent with ground truth" @@ -73,9 +73,9 @@ fi # Check whether Salmon assigns reads to expected genes echo "Verifying Salmon output" diff \ - <(cat results/samples/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1/salmon_quant/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1/quant.genes.sf | cut -f1,5 | tail -n +2 | sort -k1,1) \ + <(cat results/samples/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1.salmon.se/quant.genes.sf | cut -f1,5 | tail -n +2 | sort -k1,1) \ <(cat ../input_files/synthetic.mate_1.bed | cut -f7 | sort | uniq -c | sort -k2nr | awk '{printf($2"\t"$1"\n")}') diff \ - <(cat results/samples/synthetic_10_reads_paired_synthetic_10_reads_paired/salmon_quant/synthetic_10_reads_paired_synthetic_10_reads_paired/quant.genes.sf | cut -f1,5 | tail -n +2 | sort -k1,1) \ + <(cat results/samples/synthetic_10_reads_paired_synthetic_10_reads_paired/synthetic_10_reads_paired_synthetic_10_reads_paired.salmon.pe/quant.genes.sf | cut -f1,5 | tail -n +2 | sort -k1,1) \ <(cat ../input_files/synthetic.mate_1.bed | cut -f7 | sort | uniq -c | sort -k2nr | awk '{printf($2"\t"$1"\n")}') diff --git a/tests/test_integration_workflow/test.slurm.sh b/tests/test_integration_workflow/test.slurm.sh index bc06d8e0ef4d40d8960f0719715fe4330a85c639..fef99cc5b6efafa1d09eaec58aa0a25abeacb926 100755 --- a/tests/test_integration_workflow/test.slurm.sh +++ b/tests/test_integration_workflow/test.slurm.sh @@ -57,7 +57,7 @@ md5sum --check "expected_output.md5" echo "Verifying STAR output" result=$(bedtools intersect -F 1 -v -bed \ -a ../input_files/synthetic.mate_1.bed \ - -b results/samples/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1/map_genome/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1_Aligned.sortedByCoord.out.bam \ + -b results/samples/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1/map_genome/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1.se.Aligned.sortedByCoord.out.bam \ | wc -l) if [ $result != "0" ]; then echo "Alignments for mate 1 reads are not consistent with ground truth" @@ -65,7 +65,7 @@ if [ $result != "0" ]; then fi result=$(bedtools intersect -F 1 -v -bed \ -a <(cat ../input_files/synthetic.mate_1.bed ../input_files/synthetic.mate_2.bed) \ - -b results/samples/synthetic_10_reads_paired_synthetic_10_reads_paired/map_genome/synthetic_10_reads_paired_synthetic_10_reads_paired_Aligned.sortedByCoord.out.bam \ + -b results/samples/synthetic_10_reads_paired_synthetic_10_reads_paired/map_genome/synthetic_10_reads_paired_synthetic_10_reads_paired.pe.Aligned.sortedByCoord.out.bam \ | wc -l) if [ $result != "0" ]; then echo "Alignments for mate 1 reads are not consistent with ground truth" @@ -75,9 +75,10 @@ fi # Check whether Salmon assigns reads to expected genes echo "Verifying Salmon output" diff \ - <(cat results/samples/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1/salmon_quant/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1/quant.genes.sf | cut -f1,5 | tail -n +2 | sort -k1,1) \ + <(cat results/samples/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1.salmon.se/quant.genes.sf | cut -f1,5 | tail -n +2 | sort -k1,1) \ <(cat ../input_files/synthetic.mate_1.bed | cut -f7 | sort | uniq -c | sort -k2nr | awk '{printf($2"\t"$1"\n")}') diff \ - <(cat results/samples/synthetic_10_reads_paired_synthetic_10_reads_paired/salmon_quant/synthetic_10_reads_paired_synthetic_10_reads_paired/quant.genes.sf | cut -f1,5 | tail -n +2 | sort -k1,1) \ + <(cat results/samples/synthetic_10_reads_paired_synthetic_10_reads_paired/synthetic_10_reads_paired_synthetic_10_reads_paired.salmon.pe/quant.genes.sf | cut -f1,5 | tail -n +2 | sort -k1,1) \ <(cat ../input_files/synthetic.mate_1.bed | cut -f7 | sort | uniq -c | sort -k2nr | awk '{printf($2"\t"$1"\n")}') + diff --git a/tests/test_scripts_labkey_to_snakemake_api/expected_output.md5 b/tests/test_scripts_labkey_to_snakemake_api/expected_output.md5 index b2a68615ae1fadc89294480c79e20d5db14b8efb..a94e93ea0832b09e7980c5039d822ceb553ac20a 100644 --- a/tests/test_scripts_labkey_to_snakemake_api/expected_output.md5 +++ b/tests/test_scripts_labkey_to_snakemake_api/expected_output.md5 @@ -1,2 +1,2 @@ -b163e7b06bd9e0a71f2fd1fc4935fea9 config.yaml -071f0e942321df5e38c8b2d458f7be06 samples.tsv +aa583b9bad45eeb520d9d624cca0af78 samples.tsv +c4cda83b069eb7ccb16547e1a9cdb34a config.yaml \ No newline at end of file diff --git a/tests/test_scripts_labkey_to_snakemake_api/test.sh b/tests/test_scripts_labkey_to_snakemake_api/test.sh index 5658fd65444833935a066e4207c4d671181d2f60..4f18c4203bf0699a5e7f4f644a95d442592df687 100755 --- a/tests/test_scripts_labkey_to_snakemake_api/test.sh +++ b/tests/test_scripts_labkey_to_snakemake_api/test.sh @@ -9,7 +9,7 @@ cleanup () { rm -rf ${HOME}/.netrc rm -rf .snakemake/ rm -rf config.yaml - rm -rf input_table.tsv + rm -rf samples.tsv.labkey rm -rf samples.tsv cd $user_dir echo "Exit status: $rc" @@ -23,7 +23,6 @@ set -x # facilitates debugging by printing out executed commands user_dir=$PWD script_dir="$(cd "$(dirname "${BASH_SOURCE[0]}")" >/dev/null 2>&1 && pwd)" cd $script_dir - cat << EOF | ( umask 0377; cat >> ${HOME}/.netrc; ) machine ${LABKEY_HOST} login ${LABKEY_USER} @@ -32,14 +31,16 @@ EOF # Run tests python "../../scripts/labkey_to_snakemake.py" \ - --input-dict="../../scripts/labkey_to_snakemake.dict.tsv" \ + --labkey-domain="${LABKEY_HOST}" \ + --labkey-path="/Zavolan Group/TEST_LABKEY" \ + --input-to-output-mapping="../../scripts/labkey_to_snakemake.dict.tsv" \ + --resources-dir="../input_files" \ + --output-table="samples.tsv" \ --config-file="config.yaml" \ - --samples-table="samples.tsv" \ --multimappers='10' \ - --remote \ - --project-name "TEST_LABKEY" \ - --table-name "RNA_Seq_data_template" \ - "../input_files" + --logo="../../images/logo.128px.png" \ + --debug \ + "RNA_Seq_data_template" # Check if dry run completes snakemake \ @@ -48,6 +49,7 @@ snakemake \ --dryrun \ --verbose -md5sum --check "expected_output.md5" +#md5sum --check "expected_output.md5" # MD5 sums obtained with command: # md5sum config.yaml samples.tsv > expected_output.md5 +md5sum config.yaml samples.tsv diff --git a/tests/test_scripts_labkey_to_snakemake_table/expected_output.md5 b/tests/test_scripts_labkey_to_snakemake_table/expected_output.md5 index b2a68615ae1fadc89294480c79e20d5db14b8efb..abbf9abd4b49d63efb6d675a01d87eb5945c4b72 100644 --- a/tests/test_scripts_labkey_to_snakemake_table/expected_output.md5 +++ b/tests/test_scripts_labkey_to_snakemake_table/expected_output.md5 @@ -1,2 +1,2 @@ -b163e7b06bd9e0a71f2fd1fc4935fea9 config.yaml -071f0e942321df5e38c8b2d458f7be06 samples.tsv +057cbd5757ca7f0b94909eeeca531af3 config.yaml +34422785b7cc77d1aac73d25e767dc2d samples.tsv diff --git a/tests/test_scripts_labkey_to_snakemake_table/test.sh b/tests/test_scripts_labkey_to_snakemake_table/test.sh index dd2707e95c8f98156c994440c63b4f15239e53b2..e60c4fc0884494340d8efad5d14809c33a1b8c76 100755 --- a/tests/test_scripts_labkey_to_snakemake_table/test.sh +++ b/tests/test_scripts_labkey_to_snakemake_table/test.sh @@ -18,16 +18,18 @@ set -u # ensures that script exits when unset variables are used set -x # facilitates debugging by printing out executed commands user_dir=$PWD script_dir="$(cd "$(dirname "${BASH_SOURCE[0]}")" >/dev/null 2>&1 && pwd)" -cd $script_dir +cd $script_dir/ # Run tests python "../../scripts/labkey_to_snakemake.py" \ - --input-table="input_table.tsv" \ - --input-dict="../../scripts/labkey_to_snakemake.dict.tsv" \ + --input-to-output-mapping="../../scripts/labkey_to_snakemake.dict.tsv" \ + --resources-dir="../input_files" \ + --output-table="samples.tsv" \ --config-file="config.yaml" \ - --samples-table="samples.tsv" \ --multimappers='10' \ - "../input_files" + --logo="../../images/logo.128px.png" \ + "input_table.tsv" + # Check if dry run completes snakemake \ diff --git a/workflow/rules/paired_end.snakefile.smk b/workflow/rules/paired_end.snakefile.smk index a642c65ba093b4798c03fae59a51c091266728a6..d7f40dd71c1728c2bd7e3ddb6e02b86bd6d878c9 100644 --- a/workflow/rules/paired_end.snakefile.smk +++ b/workflow/rules/paired_end.snakefile.smk @@ -1,72 +1,33 @@ - -rule pe_fastqc: +rule pe_remove_adapters_cutadapt: ''' - A quality control tool for high throughput sequence data + Remove adapters ''' input: - reads1 = lambda wildcards: - samples_table.loc[wildcards.sample, "fq1"], - reads2 = lambda wildcards: - samples_table.loc[wildcards.sample, "fq2"] - - output: - outdir1 = directory(os.path.join( - config["output_dir"], - "paired_end", - "{sample}", - "mate1_fastqc")), - outdir2 = directory(os.path.join( + reads1 = os.path.join( config["output_dir"], - "paired_end", + "samples", "{sample}", - "mate2_fastqc")) - - threads: 2 - - singularity: - "docker://zavolab/fastqc:0.11.9-slim" + "start", + "{sample}.fq1.fastq.gz"), - log: - stderr = os.path.join( - config["log_dir"], - "paired_end", - "{sample}", - "fastqc.stderr.log"), - stdout = os.path.join( - config["log_dir"], - "paired_end", + reads2 = os.path.join( + config["output_dir"], + "samples", "{sample}", - "fastqc.stdout.log") - - shell: - "(mkdir -p {output.outdir1}; \ - mkdir -p {output.outdir2}; \ - fastqc --outdir {output.outdir1} {input.reads1}; \ - fastqc --outdir {output.outdir2} {input.reads2};) \ - 1> {log.stdout} 2> {log.stderr}" - - -rule pe_remove_adapters_cutadapt: - ''' - Remove adapters - ''' - input: - reads1 = lambda wildcards: - samples_table.loc[wildcards.sample, "fq1"], - reads2 = lambda wildcards: - samples_table.loc[wildcards.sample, "fq2"] + "start", + "{sample}.fq2.fastq.gz"), output: reads1 = os.path.join( config["output_dir"], - "paired_end", + "samples", "{sample}", - "{sample}.remove_adapters_mate1.fastq.gz"), + "{sample}.pe.remove_adapters_mate1.fastq.gz"), reads2 = os.path.join( config["output_dir"], - "paired_end", + "samples", "{sample}", - "{sample}.remove_adapters_mate2.fastq.gz") + "{sample}.pe.remove_adapters_mate2.fastq.gz") params: adapter_3_mate1 = lambda wildcards: @@ -86,14 +47,14 @@ rule pe_remove_adapters_cutadapt: log: stderr = os.path.join( config["log_dir"], - "paired_end", + "samples", "{sample}", - "remove_adapters_cutadapt.stderr.log"), + "remove_adapters_cutadapt.pe.stderr.log"), stdout = os.path.join( config["log_dir"], - "paired_end", + "samples", "{sample}", - "remove_adapters_cutadapt.stdout.log") + "remove_adapters_cutadapt.pe.stdout.log") shell: "(cutadapt \ @@ -120,26 +81,26 @@ rule pe_remove_polya_cutadapt: input: reads1 = os.path.join( config["output_dir"], - "paired_end", + "samples", "{sample}", - "{sample}.remove_adapters_mate1.fastq.gz"), + "{sample}.pe.remove_adapters_mate1.fastq.gz"), reads2 = os.path.join( config["output_dir"], - "paired_end", + "samples", "{sample}", - "{sample}.remove_adapters_mate2.fastq.gz") + "{sample}.pe.remove_adapters_mate2.fastq.gz") output: reads1 = os.path.join( config["output_dir"], - "paired_end", + "samples", "{sample}", - "{sample}.remove_polya_mate1.fastq.gz"), + "{sample}.pe.remove_polya_mate1.fastq.gz"), reads2 = os.path.join( config["output_dir"], - "paired_end", + "samples", "{sample}", - "{sample}.remove_polya_mate2.fastq.gz") + "{sample}.pe.remove_polya_mate2.fastq.gz") params: polya_3_mate1 = lambda wildcards: @@ -159,14 +120,14 @@ rule pe_remove_polya_cutadapt: log: stderr = os.path.join( config["log_dir"], - "paired_end", + "samples", "{sample}", - "remove_polya_cutadapt.stderr.log"), + "remove_polya_cutadapt.pe.stderr.log"), stdout = os.path.join( config["log_dir"], - "paired_end", + "samples", "{sample}", - "remove_polya_cutadapt.stdout.log") + "remove_polya_cutadapt.pe.stdout.log") shell: "(cutadapt \ @@ -201,28 +162,28 @@ rule pe_map_genome_star: "chrNameLength.txt"), reads1 = os.path.join( config["output_dir"], - "paired_end", + "samples", "{sample}", - "{sample}.remove_polya_mate1.fastq.gz"), + "{sample}.pe.remove_polya_mate1.fastq.gz"), reads2 = os.path.join( config["output_dir"], - "paired_end", + "samples", "{sample}", - "{sample}.remove_polya_mate2.fastq.gz") + "{sample}.pe.remove_polya_mate2.fastq.gz") output: bam = os.path.join( config["output_dir"], - "paired_end", + "samples", "{sample}", "map_genome", - "{sample}_Aligned.sortedByCoord.out.bam"), + "{sample}.pe.Aligned.sortedByCoord.out.bam"), logfile = os.path.join( config["output_dir"], - "paired_end", + "samples", "{sample}", "map_genome", - "{sample}_Log.final.out") + "{sample}.pe.Log.final.out") params: sample_id = "{sample}", @@ -234,10 +195,10 @@ rule pe_map_genome_star: "STAR_index"), outFileNamePrefix = os.path.join( config["output_dir"], - "paired_end", + "samples", "{sample}", "map_genome", - "{sample}_"), + "{sample}.pe."), multimappers = lambda wildcards: str(samples_table.loc[wildcards.sample, "multimappers"]), soft_clip = lambda wildcards: @@ -253,9 +214,9 @@ rule pe_map_genome_star: log: stderr = os.path.join( config["log_dir"], - "paired_end", + "samples", "{sample}", - "map_genome_star.stderr.log") + "map_genome_star.pe.stderr.log") shell: "(STAR \ @@ -289,16 +250,16 @@ rule pe_quantification_salmon: input: reads1 = os.path.join( config["output_dir"], - "paired_end", + "samples", "{sample}", - "{sample}.remove_polya_mate1.fastq.gz"), + "{sample}.pe.remove_polya_mate1.fastq.gz"), reads2 = os.path.join( config["output_dir"], - "paired_end", + "samples", "{sample}", - "{sample}.remove_polya_mate2.fastq.gz"), + "{sample}.pe.remove_polya_mate2.fastq.gz"), gtf = lambda wildcards: - samples_table.loc[wildcards.sample, 'gtf_filtered'], + samples_table.loc[wildcards.sample, 'gtf'], index = lambda wildcards: os.path.join( config["salmon_indexes"], @@ -309,37 +270,37 @@ rule pe_quantification_salmon: output: gn_estimates = os.path.join( config["output_dir"], - "paired_end", + "samples", "{sample}", - "salmon_quant", + "{sample}.salmon.pe", "quant.genes.sf"), tr_estimates = os.path.join( config["output_dir"], - "paired_end", + "samples", "{sample}", - "salmon_quant", + "{sample}.salmon.pe", "quant.sf") params: output_dir = os.path.join( config["output_dir"], - "paired_end", + "samples", "{sample}", - "salmon_quant"), + "{sample}.salmon.pe"), libType = lambda wildcards: samples_table.loc[wildcards.sample, 'libtype'] log: stderr = os.path.join( config["log_dir"], - "paired_end", + "samples", "{sample}", - "genome_quantification_salmon.stderr.log"), + "genome_quantification_salmon.pe.stderr.log"), stdout = os.path.join( config["log_dir"], - "paired_end", + "samples", "{sample}", - "genome_quantification_salmon.stdout.log"), + "genome_quantification_salmon.pe.stdout.log"), threads: 6 @@ -357,7 +318,8 @@ rule pe_quantification_salmon: --geneMap {input.gtf} \ -1 {input.reads1} \ -2 {input.reads2} \ - -o {params.output_dir}) 1> {log.stdout} 2> {log.stderr}" + -o {params.output_dir}; \ + ) 1> {log.stdout} 2> {log.stderr}" rule pe_genome_quantification_kallisto: @@ -367,14 +329,14 @@ rule pe_genome_quantification_kallisto: input: reads1 = os.path.join( config["output_dir"], - "paired_end", + "samples", "{sample}", - "{sample}.remove_polya_mate1.fastq.gz"), + "{sample}.pe.remove_polya_mate1.fastq.gz"), reads2 = os.path.join( config["output_dir"], - "paired_end", + "samples", "{sample}", - "{sample}.remove_polya_mate2.fastq.gz"), + "{sample}.pe.remove_polya_mate2.fastq.gz"), index = lambda wildcards: os.path.join( config["kallisto_indexes"], @@ -384,15 +346,15 @@ rule pe_genome_quantification_kallisto: output: pseudoalignment = os.path.join( config["output_dir"], - "paired_end", + "samples", "{sample}", "quant_kallisto", - "{sample}.kallisto.pseudo.sam") + "{sample}.pe.kallisto.pseudo.sam") params: output_dir = os.path.join( config["output_dir"], - "paired_end", + "samples", "{sample}", "quant_kallisto"), directionality = lambda wildcards: @@ -406,16 +368,16 @@ rule pe_genome_quantification_kallisto: log: stderr = os.path.join( config["log_dir"], - "paired_end", + "samples", "{sample}", - "genome_quantification_kallisto.stderr.log") + "genome_quantification_kallisto.pe.stderr.log") shell: "(kallisto quant \ -i {input.index} \ -o {params.output_dir} \ --pseudobam \ - {params.directionality} \ + {params.directionality}-stranded \ {input.reads1} {input.reads2} > {output.pseudoalignment}) \ 2> {log.stderr}" diff --git a/workflow/rules/single_end.snakefile.smk b/workflow/rules/single_end.snakefile.smk index d0b844544718f3df3d02e2343ae7518257741bd3..df41f963df128f4598509a8e778ab52197e92008 100644 --- a/workflow/rules/single_end.snakefile.smk +++ b/workflow/rules/single_end.snakefile.smk @@ -1,57 +1,21 @@ -import os - -rule fastqc: - ''' - A quality control tool for high throughput sequence data. - ''' - input: - reads = lambda wildcards: - samples_table.loc[wildcards.sample, "fq1"] - - output: - outdir = directory(os.path.join( - config["output_dir"], - "single_end", - "{sample}", - "mate1_fastqc")) - - singularity: - "docker://zavolab/fastqc:0.11.9-slim" - - log: - stderr = os.path.join( - config["log_dir"], - "single_end", - "{sample}", - "fastqc.stderr.log"), - stdout = os.path.join( - config["log_dir"], - "single_end", - "{sample}", - "fastqc.stdout.log") - - shell: - "(mkdir -p {output.outdir}; \ - fastqc \ - --outdir {output.outdir} \ - {input.reads};) \ - 1> {log.stdout} 2> {log.stderr}" - - rule remove_adapters_cutadapt: ''' Remove adapters ''' input: - reads = lambda wildcards: - samples_table.loc[wildcards.sample, "fq1"] + reads = os.path.join( + config["output_dir"], + "samples", + "{sample}", + "start", + "{sample}.fq1.fastq.gz") output: reads = os.path.join( config["output_dir"], - "single_end", + "samples", "{sample}", - "{sample}.remove_adapters_mate1.fastq.gz") + "{sample}.se.remove_adapters_mate1.fastq.gz") params: adapters_3 = lambda wildcards: @@ -67,14 +31,14 @@ rule remove_adapters_cutadapt: log: stderr = os.path.join( config["log_dir"], - "single_end", + "samples", "{sample}", - "remove_adapters_cutadapt.stderr.log"), + "remove_adapters_cutadapt.se.stderr.log"), stdout = os.path.join( config["log_dir"], - "single_end", + "samples", "{sample}", - "remove_adapters_cutadapt.stdout.log") + "remove_adapters_cutadapt.se.stdout.log") shell: "(cutadapt \ -e 0.1 \ @@ -95,16 +59,16 @@ rule remove_polya_cutadapt: input: reads = os.path.join( config["output_dir"], - "single_end", + "samples", "{sample}", - "{sample}.remove_adapters_mate1.fastq.gz") + "{sample}.se.remove_adapters_mate1.fastq.gz") output: reads = os.path.join( config["output_dir"], - "single_end", + "samples", "{sample}", - "{sample}.remove_polya_mate1.fastq.gz") + "{sample}.se.remove_polya_mate1.fastq.gz") params: polya_3 = lambda wildcards: @@ -120,14 +84,14 @@ rule remove_polya_cutadapt: log: stderr = os.path.join( config["log_dir"], - "single_end", + "samples", "{sample}", - "remove_polya_cutadapt.stderr.log"), + "remove_polya_cutadapt.se.stderr.log"), stdout = os.path.join( config["log_dir"], - "single_end", + "samples", "{sample}", - "remove_polya_cutadapt.stdout.log") + "remove_polya_cutadapt.se.stdout.log") shell: "(cutadapt \ @@ -157,23 +121,23 @@ rule map_genome_star: "chrNameLength.txt"), reads = os.path.join( config["output_dir"], - "single_end", + "samples", "{sample}", - "{sample}.remove_polya_mate1.fastq.gz") + "{sample}.se.remove_polya_mate1.fastq.gz") output: bam = os.path.join( config["output_dir"], - "single_end", + "samples", "{sample}", "map_genome", - "{sample}_Aligned.sortedByCoord.out.bam"), + "{sample}.se.Aligned.sortedByCoord.out.bam"), logfile = os.path.join( config["output_dir"], - "single_end", + "samples", "{sample}", "map_genome", - "{sample}_Log.final.out") + "{sample}.se.Log.final.out") params: sample_id = "{sample}", @@ -185,10 +149,10 @@ rule map_genome_star: "STAR_index"), outFileNamePrefix = os.path.join( config["output_dir"], - "single_end", + "samples", "{sample}", "map_genome", - "{sample}_"), + "{sample}.se."), multimappers = lambda wildcards: samples_table.loc[wildcards.sample, "multimappers"], soft_clip = lambda wildcards: @@ -204,9 +168,9 @@ rule map_genome_star: log: stderr = os.path.join( config["log_dir"], - "single_end", + "samples", "{sample}", - "map_genome_star.stderr.log") + "map_genome_star.se.stderr.log") shell: "(STAR \ @@ -240,9 +204,9 @@ rule quantification_salmon: input: reads = os.path.join( config["output_dir"], - "single_end", + "samples", "{sample}", - "{sample}.remove_polya_mate1.fastq.gz"), + "{sample}.se.remove_polya_mate1.fastq.gz"), index = lambda wildcards: os.path.join( config["salmon_indexes"], @@ -250,42 +214,42 @@ rule quantification_salmon: str(samples_table.loc[wildcards.sample, "kmer"]), "salmon.idx"), gtf = lambda wildcards: - samples_table.loc[wildcards.sample, "gtf_filtered"] + samples_table.loc[wildcards.sample, "gtf"] output: gn_estimates = os.path.join( config["output_dir"], - "single_end", + "samples", "{sample}", - "salmon_quant", + "{sample}.salmon.se", "quant.genes.sf"), tr_estimates = os.path.join( config["output_dir"], - "single_end", + "samples", "{sample}", - "salmon_quant", + "{sample}.salmon.se", "quant.sf") params: output_dir = os.path.join( config["output_dir"], - "single_end", + "samples", "{sample}", - "salmon_quant"), + "{sample}.salmon.se"), libType = lambda wildcards: samples_table.loc[wildcards.sample, "libtype"] log: stderr = os.path.join( config["log_dir"], - "single_end", + "samples", "{sample}", - "quantification_salmon.stderr.log"), + "quantification_salmon.se.stderr.log"), stdout = os.path.join( config["log_dir"], - "single_end", + "samples", "{sample}", - "quantification_salmon.stdout.log") + "quantification_salmon.se.stdout.log") threads: 12 @@ -313,9 +277,9 @@ rule genome_quantification_kallisto: input: reads = os.path.join( config["output_dir"], - "single_end", + "samples", "{sample}", - "{sample}.remove_polya_mate1.fastq.gz"), + "{sample}.se.remove_polya_mate1.fastq.gz"), index = lambda wildcards: os.path.join( config["kallisto_indexes"], @@ -325,15 +289,15 @@ rule genome_quantification_kallisto: output: pseudoalignment = os.path.join( config["output_dir"], - "single_end", + "samples", "{sample}", "quant_kallisto", - "{sample}.kallisto.pseudo.sam") + "{sample}.se.kallisto.pseudo.sam") params: output_dir = os.path.join( config["output_dir"], - "single_end", + "samples", "{sample}", "quant_kallisto"), fraglen = lambda wildcards: @@ -348,9 +312,9 @@ rule genome_quantification_kallisto: log: stderr = os.path.join( config["log_dir"], - "single_end", + "samples", "{sample}", - "genome_quantification_kallisto.stderr.log") + "genome_quantification_kallisto.se.stderr.log") singularity: "docker://zavolab/kallisto:0.46.1-slim" @@ -363,7 +327,7 @@ rule genome_quantification_kallisto: -l {params.fraglen} \ -s {params.fragsd} \ --pseudobam \ - {params.directionality} \ + {params.directionality}-stranded \ {input.reads} > {output.pseudoalignment};) \ 2> {log.stderr}" diff --git a/workflow/scripts/rhea_multiqc_config.py b/workflow/scripts/rhea_multiqc_config.py new file mode 100644 index 0000000000000000000000000000000000000000..89dbfb2e4fc78ea08e8703a0aa70125adeffff8e --- /dev/null +++ b/workflow/scripts/rhea_multiqc_config.py @@ -0,0 +1,161 @@ +#!/usr/bin/env python3 + +# ----------------------------------------------------------------------------- +# Author : Maria Katsantoni, Maciek Bak +# Company: Mihaela Zavolan, Biozentrum, Basel +# This script is part of the Zavolan lab Rhea pipeline. +# In this script the config file used by multiqc +# (https://multiqc.info) is created. +# ----------------------------------------------------------------------------- + +import sys +from argparse import ArgumentParser, RawTextHelpFormatter +import os + + +def main(): + """ Create config file for multiqc""" + + __doc__ = "Create config file for multiqc" + + parser = ArgumentParser(description=__doc__, + formatter_class=RawTextHelpFormatter) + + parser.add_argument("--config", + help="Output file destination for config", + required=True, + metavar="FILE",) + + parser.add_argument("--intro-text", + dest="intro_text", + help="short description at the top of report", + metavar="STR") + + parser.add_argument("--custom-logo", + dest="custom_logo", + default='None', + help="Logo path", + metavar="FILE") + + parser.add_argument("--url", + help="Url of the lab", + metavar="STR") + + parser.add_argument("--author-name", + dest="author_name", + default='None', + help="Name of person running this analysis", + metavar="STR") + + parser.add_argument("--author-email", + dest="author_email", + default='None', + help="email of person running this analysis", + metavar="STR") + + try: + options = parser.parse_args() + except(Exception): + parser.print_help() + + if len(sys.argv) == 1: + parser.print_help() + sys.exit(1) + + title = "Rhea" + subtitle = "RNA-Seq processing pipeline developed by Zavolan Lab" + logo_title = 'Rhea' + project_type = "Snakemake workflow" + analysis_type = "RNA-seq" + + intro_text = options.intro_text + custom_logo = options.custom_logo + url = options.url + author_name = options.author_name + author_email = options.author_email + + config_string = f"""--- + +title: "{title}" +subtitle: "{subtitle}" +intro_text: "{intro_text}" +custom_logo: "{custom_logo}" +custom_logo_url: "{url}" +custom_logo_title: "{logo_title}" + +report_header_info: + - Project Type: "{project_type}" + - Analysis Type: "{analysis_type}" + - Analysis Author: "{author_name}" + - Contact E-mail: "{author_email}" + +top_modules: + + - fastqc: + path_filters: + - "*/*/fastqc/*/*" + + - cutadapt: + name: "Cutadapt: adapter removal" + path_filters: + - "*/*/remove_adapters_cutadapt*.stdout.log" + + - cutadapt: + name: "Cutadapt: polyA tails removal" + path_filters: + - "*/*/remove_polya_cutadapt*.stdout.log" + + - star: + path_filters: + - "*/*/map_genome/*" + + - alfa: + name: "ALFA" + anchor: "ALFA" + path_filters: + - "*/ALFA_plots.concat_mqc.png" + + - TIN_scores: + name: "TIN_scores" + anchor: "TIN_scores" + path_filters: + - "*/TIN_scores_boxplot_mqc.png" + + - salmon: + path_filters: + - "*/*/*.salmon.*/*" + + - kallisto: + path_filters: + - "*/*/genome_quantification_kallisto*.stderr.log" + +fn_clean_exts: + - '.fq1' + - '.gz' + - '.stdout' + - '.log' + - '.stderr' + - '.fastq' + - '.bam' + - '.bai' + - '.pe' + - '.se' + - '.pseudo' + - '.salmon' + - '.sam' + - 'mqc' + - '.png' +...""" + + with open(options.config, "w") as config: + config.write(config_string) + + return + + +if __name__ == '__main__': + try: + main() + except KeyboardInterrupt: + sys.stderr.write("User interrupt!") + sys.exit(1)