diff --git a/Snakefile b/Snakefile index 9d7eeb1..4de01eb 100644 --- a/Snakefile +++ b/Snakefile @@ -7,7 +7,7 @@ import shutil from matplotlib.backends.backend_pdf import PdfPages ##### Logistics -configfile: "config_goeke.yaml" +configfile: "config.yaml" workdir: config["outdir"] ReferenceFasta = config["genome_fasta"] @@ -517,7 +517,7 @@ rule iupred2a_analysis: threads: 1 group: "sequence_analysis" shell: - "echo {input.protein} >> {output.seq}; {input.iupred2a} -a {output.seq} long >> {output.idr}" + "tail +2 {input.protein} >> {output.seq}; {input.iupred2a} -a {output.seq} long >> {output.idr}" # Domain analysis rule interpro_scan: @@ -585,23 +585,23 @@ rule functional_site_analysis: "perl {params.ps_scan} -d {params.prosite_dat} --pfscan {params.pf_scan} {input} > {output}" # Prion analysis -rule prion_analysis: - input: - "Results/Genes_temp/{gene}/transcripts/{transcript}_protein.fa" - output: - "Results/Genes_temp/{gene}/transcripts/{transcript}_func_prion.txt" - params: - plaac = config["plaac_path"], - gene = "{gene}" - resources: - memory = 10, - time = 1, - tmpdir = 0 - priority: 8 - threads: 1 - group: "sequence_analysis" - shell: - "java -jar {params.plaac} -i {input} -p all > {output}" +# rule prion_analysis: +# input: +# "Results/Genes_temp/{gene}/transcripts/{transcript}_protein.fa" +# output: +# "Results/Genes_temp/{gene}/transcripts/{transcript}_func_prion.txt" +# params: +# plaac = config["plaac_path"], +# gene = "{gene}" +# resources: +# memory = 10, +# time = 1, +# tmpdir = 0 +# priority: 8 +# threads: 1 +# group: "sequence_analysis" +# shell: +# "java -jar {params.plaac} -i {input} -p all > {output}" # Combine functional feature analysis on individual isoforms def functional_files(): @@ -611,7 +611,7 @@ def functional_files(): if (config["pfam"]): files.append(rules.interpro_scan.output) if (config["porter"]): files.append(rules.porter_analysis.output) if (config["pfScan"]): files.append(rules.functional_site_analysis.output) - if (config["prion"]): files.append(rules.prion_analysis.output) +# if (config["prion"]): files.append(rules.prion_analysis.output) return files rule individual_transcript_analysis: input: diff --git a/config.yaml b/config.yaml index cf1f3bd..ddf12c0 100644 --- a/config.yaml +++ b/config.yaml @@ -1,4 +1,5 @@ ##### IsoTV Config File + pipeline: "IsoTV" repo: "https://github.molgen.mpg.de/MayerGroup/IsoTV" @@ -28,24 +29,7 @@ genome_annot: "/path/to/gencode.v32.primary_assembly.annotation.gtf" # samples with .bottom extension must be placed in the RawData folder # condition_replicate samples: - A549_1: "A549_r1_r3" - A549_2: "A549_r2_r1" - #A549_3: "A549_r3_r2" - A549_5: "A549_r5_r3" - HCT116_1: "HCT116_r1_r4" - HCT116_3: "HCT116_r3_r2" - HCT116_4: "HCT116_r4_r1" - HCT116_5: "HCT116_r5_r1" - HEPG2_1: "HEPG2_r1_r1" - HEPG2_4: "HEPG2_r4_r2" - HEPG2_5: "HEPG2_r5_r3" - K562_1: "K562_r1_r2" - K562_2: "K562_r2_r1" - K562_3: "K562_r3_r1" - K562_4: "K562_r4_r2" - MCF7_1: "MCF7_r1_r2" - MCF7_3: "MCF7_r3_r3" - MCF7_4: "MCF7_r4_r2" + condition1: "replicate1" threads: 16 @@ -111,7 +95,7 @@ gene_file: "/path/to/genes.tab" ### Output file and folder -output_plots: "loveisgone.pdf" +output_plots: "test.pdf" ### Processed file paths - required if not using ONT long read processing workflow @@ -122,7 +106,7 @@ counts_data: "/path/to/Results/Quantification_nonred/all_counts_deseq2norm_all.t # Is data continuous continuous: FALSE -### Tools paths and functional analysis +### External tool paths and functional analysis aa: TRUE diff --git a/config_example_pdk2.yaml b/config_example_pdk2.yaml new file mode 100644 index 0000000..381ec10 --- /dev/null +++ b/config_example_pdk2.yaml @@ -0,0 +1,155 @@ +##### IsoTV Config File + +pipeline: "IsoTV" +repo: "https://github.molgen.mpg.de/MayerGroup/IsoTV" + +### Ouput directory + +outdir: "example" + +### General pipeline parameters: + +basecalling: FALSE +preprocess: FALSE +annotation: TRUE +quantification: TRUE + +###### ONT long read processing config +### Basecalling pipeline parameters + +guppy: "/path/to/Guppy324/bin/guppy_basecaller" +flowcell: FLO-MIN106 +kit: SQK-DCS109 + +### Reference Files +genome_fasta: "/path/to/GRCh38.p12.primary_assembly.genome.fa" +genome_annot: "/path/to/gencode.v32.primary_assembly.annotation.gtf" + +### Samples +# samples with .bottom extension must be placed in the RawData folder +# condition_replicate +samples: + A549_1: "A549_r1_r3" + A549_2: "A549_r2_r1" + A549_5: "A549_r5_r3" + HCT116_1: "HCT116_r1_r4" + HCT116_3: "HCT116_r3_r2" + HCT116_4: "HCT116_r4_r1" + HCT116_5: "HCT116_r5_r1" + HEPG2_1: "HEPG2_r1_r1" + HEPG2_4: "HEPG2_r4_r2" + HEPG2_5: "HEPG2_r5_r3" + K562_1: "K562_r1_r2" + K562_2: "K562_r2_r1" + K562_3: "K562_r3_r1" + K562_4: "K562_r4_r2" + MCF7_1: "MCF7_r1_r2" + MCF7_3: "MCF7_r3_r3" + MCF7_4: "MCF7_r4_r2" + +threads: 16 + +# Use pychopper results +pychopper: TRUE + +# Use annotation to improve splice junction mapping (minimap2 --junc_bed parameter) +minimap2_opts_junction: TRUE + +# Minimum read quality to keep: +min_mean_q: 5 + +# Stringency of porechop heuristic: +porechop_heu_stringency: 0.25 + +# Options passed to minimap2 during indexing: +minimap2_index_opts: "-k14" + +# Extra options passed to minimap2: +minimap2_opts: "-uf" # required for stranded data e.g. when pychopper filtered + +# Minmum mapping quality: +minimum_mapping_quality: 5 + +# Options passed to spliced_bam2gff: +spliced_bam2gff_opts: "-s" # required for stranded data e.g. when pychopper filtered + +# -c parameter: +minimum_cluster_size: 3 + +# -p parameter: +minimum_isoform_percent: 1 + +# -d parameter: +exon_boundary_tolerance: 10 + +# -e parameter: +terminal_exon_boundary_tolerance: 50 + +# Extra options passed to minimap2 when mapping polished reads: +minimap2_opts_polished: "-uf" # required for stranded data e.g. when pychopper filtered + +# Options passed to spliced_bam2gff when converting alignments of polished reads: +spliced_bam2gff_opts_pol: "-s" # required for stranded data e.g. when pychopper filtered + +# Options passed to collapse_partials when collapsing fragmentation artifacts +# Internal exon boundary tolerance: +collapse_internal_tol: 5 + +# Five prime boundary tolerance: +collapse_five_tol: 500 + +# Three prime boundary tolerance: +collapse_three_tol: 50 + +maximum_secondary: 200 +secondary_score_ratio: 1 + +##### Feature Analysis Config +### Input genestt + +gene_file: "data/genes.tab" + +### Output file and folder + +output_plots: "test.pdf" + +### Processed file paths - required if not using ONT long read processing workflow + +nanopore_gtf: "data/PDK2.nanopore.gtf" +polished_reads: "data/PDK2.transcriptome.fas" +counts_data: "data/PDK2.counts.txt" + +# Is data continuous +continuous: FALSE + +### External tool paths and functional analysis + +aa: TRUE + +iupred2a_path: "/path/to/iupred2a/iupred2a.py" +iupred2a: TRUE + +brewery_path: "/path/to/Brewery/Brewery.py" +porter: TRUE + +interproScan_path: "/path/to/my_interproscan/interproscan-5.38-76.0/interproscan.sh" +pfam: TRUE + +prositeScan_path: "/path/to/ps_scan/ps_scan.pl" +pfScan_path: "/path/to/ps_scan/pfscan" +prositeDat_path: "/path/to/prosite.dat" +pfScan: TRUE + +#plaac_path: "/path/to/plaac.jar" +#prion: FALSE + +minIsoTPM: 1 +maxIsoNum: 8 +minIsoPct: 10 + +### Misc paths + +java : "/pkg/openjdk-11.0.3.2-0/profile" + +lock1: "/.../lock.txt" +lock2: "/.../lock2.txt" diff --git a/example/PDK2_Tutorial.pdf b/example/PDK2_Tutorial.pdf new file mode 100644 index 0000000..7d93701 Binary files /dev/null and b/example/PDK2_Tutorial.pdf differ diff --git a/example/data/PDK2.counts.txt b/example/data/PDK2.counts.txt new file mode 100644 index 0000000..7a51448 --- /dev/null +++ b/example/data/PDK2.counts.txt @@ -0,0 +1,3 @@ +class_code,A549_1,A549_2,A549_5,HCT116_1,HCT116_3,HCT116_4,HCT116_5,HEPG2_1,HEPG2_4,HEPG2_5,K562_1,K562_2,K562_3,K562_4,MCF7_1,MCF7_3,MCF7_4,transcript_id,gene_name,ref_transcript,gene_id,gene_type +=,10.7123842660785,15.0113335568354,16.2651214801261,0,11.5434688558883,10.49952673775,10.1420512602935,0,7.86124895592787,10.4796284084991,2.44646283064557,0,2.19493190223773,1.57696537194305,3.82454516596614,10.8899378184551,11.490643684754,TCONS_00023419,PDK2,ENST00000505897.5,ENSG00000005882.12,protein_coding +=,25.7097222385884,20.0151114091139,17.2816915726339,17.5114992178197,24.75990421263,27.2674276472911,23.6647862740183,8.05561597267535,19.6531223898197,16.1225052438448,1.46787769838734,0,2.19493190223773,0,15.2981806638645,27.8298410916074,33.2994163925523,TCONS_00023420,PDK2,ENST00000503176.6,ENSG00000005882.12,protein_coding diff --git a/example/data/PDK2.nanopore.gtf b/example/data/PDK2.nanopore.gtf new file mode 100644 index 0000000..7d7e212 --- /dev/null +++ b/example/data/PDK2.nanopore.gtf @@ -0,0 +1,17 @@ +chr17 pinfish transcript 50095380 50106363 . + . transcript_id "TCONS_00023419"; gene_id "XLOC_007312"; gene_name "PDK2"; oId "f3fe429f-0296-4cc4-a2cf-aa295cd23fbe|60"; cmp_ref "ENST00000505897.5"; class_code "="; tss_id "TSS13403"; +chr17 pinfish exon 50095380 50095553 . + . transcript_id "TCONS_00023419"; gene_id "XLOC_007312"; exon_number "1"; +chr17 pinfish exon 50097423 50097564 . + . transcript_id "TCONS_00023419"; gene_id "XLOC_007312"; exon_number "2"; +chr17 pinfish exon 50105371 50105442 . + . transcript_id "TCONS_00023419"; gene_id "XLOC_007312"; exon_number "3"; +chr17 pinfish exon 50105885 50106363 . + . transcript_id "TCONS_00023419"; gene_id "XLOC_007312"; exon_number "4"; +chr17 pinfish transcript 50095387 50111369 . + . transcript_id "TCONS_00023420"; gene_id "XLOC_007312"; gene_name "PDK2"; oId "bf7faaeb-3870-4b4a-8d23-854e564f9462|14"; cmp_ref "ENST00000503176.6"; class_code "="; tss_id "TSS13403"; +chr17 pinfish exon 50095387 50095553 . + . transcript_id "TCONS_00023420"; gene_id "XLOC_007312"; exon_number "1"; +chr17 pinfish exon 50097423 50097564 . + . transcript_id "TCONS_00023420"; gene_id "XLOC_007312"; exon_number "2"; +chr17 pinfish exon 50105371 50105442 . + . transcript_id "TCONS_00023420"; gene_id "XLOC_007312"; exon_number "3"; +chr17 pinfish exon 50105885 50106069 . + . transcript_id "TCONS_00023420"; gene_id "XLOC_007312"; exon_number "4"; +chr17 pinfish exon 50106794 50106883 . + . transcript_id "TCONS_00023420"; gene_id "XLOC_007312"; exon_number "5"; +chr17 pinfish exon 50107076 50107153 . + . transcript_id "TCONS_00023420"; gene_id "XLOC_007312"; exon_number "6"; +chr17 pinfish exon 50108156 50108232 . + . transcript_id "TCONS_00023420"; gene_id "XLOC_007312"; exon_number "7"; +chr17 pinfish exon 50108319 50108417 . + . transcript_id "TCONS_00023420"; gene_id "XLOC_007312"; exon_number "8"; +chr17 pinfish exon 50108612 50108719 . + . transcript_id "TCONS_00023420"; gene_id "XLOC_007312"; exon_number "9"; +chr17 pinfish exon 50109287 50109400 . + . transcript_id "TCONS_00023420"; gene_id "XLOC_007312"; exon_number "10"; +chr17 pinfish exon 50109957 50111369 . + . transcript_id "TCONS_00023420"; gene_id "XLOC_007312"; exon_number "11"; diff --git a/example/data/PDK2.transcriptome.fas b/example/data/PDK2.transcriptome.fas new file mode 100644 index 0000000..38d3718 --- /dev/null +++ b/example/data/PDK2.transcriptome.fas @@ -0,0 +1,4 @@ +>TCONS_00023419 +GGTGCGCGAGCGCTGCCCGCGCGGGGACCACAACCAAAGTCGCGGCCGCCGCAGCCATGCGCTGGGTGTGGGCGCTGCTGAAGAATGCGTCCCTGGCAGGGGCGCCCAAGTACATAGAGCACTTCAGCAAGTTCTCCCCGTCCCCGCTGTCCATGAAGCAGTTTCTGGACTTCGGATCCAGCAATGCCTGTGAGAAAACCTCCTTCACCTTCCTCAGGCAGGAGCTGCCTGTGCGCCTGGCCAACATCATGAAAGAGATCAACCTGCTTCCCGACCGAGTGCTGAGCACACCCTCCGTGCAGCTGGTGCAGAGCTGGTATGTCCAGAGCCTCCTGGACATCATGGAGTTCCTGGACAAGGATCCCGAGGACCATCGCACCCTGAGCCAGTTCACTGACGCCCTGGTCACCATCCGGAACCGGCACAACGACGTGGTGCCCACCATGGCACAAGGCGTGCTTGAGTACAAGGACACCTACGGCGATGACCCCGTCTCCAACCAGAACATCCAGTACTTCCTGGACCGCTTCTACCTCAGCCGCATCTCCATCCGCATGCTCATCAACCAGCACAGTGGGTGCCGGCCACAGCGGCGGGGAGCGGGCGGTGGGGGGGGCGGTGCTGGGGCCCAGGGCCGGGCTGCTGAGGGGACCTAGACCACTCTTCAGAACCCCACAAAGGGAGTCTTTGAATAGTTACTCCAGTAACTATGGAGTTAATGGCTCCAACATGGAAAAATAAAATTTTTCTTTCTCATTGATTTTCCATTTCAAAACGTTTTGTTTTCAGTGTTTGCAAAATGTAAAATTATGTCACATCTTTAAAAGAATGTTTAATTTAGTATTTATAAAAACTCTCATTATGTTC +>TCONS_00023420 +GAGCGCTGCCCGCGCGGGGACCACAACCAAAGTCGCGGCCGCCGCAGCCATGCGCTGGGTGTGGGCGCTGCTGAAGAATGCGTCCCTGGCAGGGGCGCCCAAGTACATAGAGCACTTCAGCAAGTTCTCCCCGTCCCCGCTGTCCATGAAGCAGTTTCTGGACTTCGGATCCAGCAATGCCTGTGAGAAAACCTCCTTCACCTTCCTCAGGCAGGAGCTGCCTGTGCGCCTGGCCAACATCATGAAAGAGATCAACCTGCTTCCCGACCGAGTGCTGAGCACACCCTCCGTGCAGCTGGTGCAGAGCTGGTATGTCCAGAGCCTCCTGGACATCATGGAGTTCCTGGACAAGGATCCCGAGGACCATCGCACCCTGAGCCAGTTCACTGACGCCCTGGTCACCATCCGGAACCGGCACAACGACGTGGTGCCCACCATGGCACAAGGCGTGCTTGAGTACAAGGACACCTACGGCGATGACCCCGTCTCCAACCAGAACATCCAGTACTTCCTGGACCGCTTCTACCTCAGCCGCATCTCCATCCGCATGCTCATCAACCAGCACACCCTCATCTTTGATGGCAGCACCAACCCAGCCCATCCCAAACACATCGGCAGCATCGACCCCAACTGCAACGTCTCTGAGGTGGTCAAAGATGCCTACGACATGGCTAAGCTCCTGTGTGACAAGTATTACATGGCCTCACCTGACCTGGAGATCCAGGAGATCAATGCAGCCAACTCCAAACAGCCGATTCACATGGTCTACGTCCCCTCCCACCTCTACCACATGCTCTTTGAGCTCTTCAAGAATGCCATGAGGGCGACTGTGGAAAGCCATGAGTCCAGCCTCATTCTCCCACCCATCAAGGTCATGGTGGCCTTGGGTGAGGAAGATCTGTCCATCAAGATGAGTGACCGAGGTGGGGGTGTTCCCTTGAGGAAGATTGAGCGACTCTTCAGCTACATGTACTCCACAGCACCCACCCCCCAGCCTGGCACCGGGGGAACGCCGCTGGCTGGCTTTGGTTATGGGCTCCCCATTTCCCGCCTCTACGCCAAGTACTTCCAGGGAGACCTGCAGCTCTTCTCCATGGAAGGCTTTGGGACCGATGCTGTCATCTATCTCAAGGCCCTGTCCACGGACTCGGTGGAGCGCCTGCCTGTCTACAACAAGTCAGCCTGGCGCCACTACCAGACCATCCAGGAGGCCGGCGACTGGTGTGTGCCCAGCACGGAGCCCAAGAACACGTCCACGTACCGCGTCAGCTAAGGGCCGCCGTGCATCTGCACCTGAGAGGACGGACTGCCGCCTCTGGGTCCCCCCACCGTGGTGCCCCTCACCATCCTCCTGGGGGAGCAGGGGGTGGGTTCTCCCTGATGACCAGGTTCTGTCTCTATGGAAGTCACTGCGGTGATAGGTCTGTGATGGTCCCTAAGTGCCAGTCCATCTCTGTGGAGACCCCTCGGTGGCCTCCCTATCTCTGTGGGCGATGCCTGAGGGTTAGGGATGTCTCCACCCTGATGGGGTGTCCCAGAGACATTTTCCCATGGCAGTCCTCCTCTCTGAGACCAGGGCTGTCACTTTTCTGCCAGGGGTACTGGGTCCCCCTCAGCACCCTCCACAGCACAGGCCTTCCAAGTGGATGTCCCGTTGCCTTATTCCCCCAGCCCACAAAGGCACCCTGGCCTTGGCCTGCTGAAGTGTTAGGAAGAGGGTGGGTGCCCTCCAGACCTGGGGACTGAGTGGGGAAAGGAGTTACACCCGTGAGTGGGGAATGAGGCTGGTCCTGCAGCCTCTCCCTCCGCTCAGGGCTTGAAGGTCGGTGGCGGAGGGGGTGGCTCTCACAGGGCCCAACTCTAAAGTGGAAGAACCTTGTTAGACCGAGAGCTTGCCATCCAGCCAAGCTGCTCGAGGCCCTGCAGTGGCCTTGGCAATGTCTGTGCCACCTCCTGAGCCCTCCCAGCATGTCCTCACATGCTCATGCCCACCCGCTCCTCCACAAGCCTAGTCCATCCTGCCTGAGCTCCAGCCCCCAGCCCCCACTGTGCCCAGACATGTGTGCTCAGGGTGGCTTTCTCCCTAGGACCTTCTGTGTATATAGTTAGTTTTATAACCCTGAATGCCCCCACCCTTCCCCTAAGCACACAGGGGTTAAAGCTGTGTGTCCCTCCCAGTGGCTGTGGCAGTGACAGTGACACCCACACCCACAGTAAAGAGGAGACTGAATGAGACTGGCCTGGCTGCATCCCTGGGGGAGGGGACCCACACGTGCGCACGTACACACGCACACTGCGGTGCCCTGTGACCACCACATGACGCACCGGGGACGTCCGGCCCAGCTCAGGACTGTGAGTAAAACACTGGGCAAAGCCATCTGTTCAGAACGCCGGATGGCCCAGCACCTGGTGACAGACCTGTTGTCCCACCATACTCAGGGCCCAGCAGAGTCCGGCCAACCCAACAACTGGAGCAGACAGAAATTCTGGTCACTGGCACATCATAAGGATTTATTGAAATAAATTGAGAACTGCCTCCCCTTCA diff --git a/example/data/genes.tab b/example/data/genes.tab new file mode 100644 index 0000000..707710a --- /dev/null +++ b/example/data/genes.tab @@ -0,0 +1 @@ +PDK2 diff --git a/scripts/individual_transcript_analysis.py b/scripts/individual_transcript_analysis.py index 0c5a1ac..e25ffa1 100644 --- a/scripts/individual_transcript_analysis.py +++ b/scripts/individual_transcript_analysis.py @@ -17,7 +17,7 @@ elif ("iupred2a" in filename): output.append("#####IUPred2A Analysis") - lines = lines[7:] + lines = lines[6:] for position in lines: output.append(position.strip()) diff --git a/scripts/visualization.py b/scripts/visualization.py index ede3ea6..0c0521e 100644 --- a/scripts/visualization.py +++ b/scripts/visualization.py @@ -204,10 +204,10 @@ def plotSequenceAnalysis(transcripts_plot, colors, longest_length_protein, fig, buffer_phos = 0.075 buffer_den = 0.5 - lg = fig.add_subplot(gs[curr_row_panel:curr_row_panel+5, 0]) + lg = fig.add_subplot(gs[curr_row_panel:curr_row_panel+total_features, 0]) lg.set_xlim((-0.11,0.11)) - ax = fig.add_subplot(gs[curr_row_panel:curr_row_panel+5, 1:]) + ax = fig.add_subplot(gs[curr_row_panel:curr_row_panel+total_features, 1:]) ax.set_xlim((-0.5,longest_length_protein + 1)) ax.patch.set_facecolor(transcript_color) ax.patch.set_alpha(0.15) @@ -380,7 +380,7 @@ def plotSequenceAnalysis(transcripts_plot, colors, longest_length_protein, fig, ax.spines['left'].set_visible(False) #ax.spines['bottom'].set_visible(False) ax.set_yticks([], []) - curr_row_panel += total_features + curr_row_panel += total_features + 1 def plotLegend(plt,fig,gs,total_gs): ax = fig.add_subplot(gs[total_gs-2:total_gs, 0:5]) @@ -399,10 +399,10 @@ def plotLegend(plt,fig,gs,total_gs): ss_abbvs = ["Alpha Helix","Beta Sheet","Other"] for i in range(0,len(ss_abbvs)): if (ss_abbvs[i] == "Other"): - plt.gca().add_patch(Rectangle((3,float(i*2)/5),3,1.0/5,edgecolor="black",facecolor=colors_ss3[i])) + plt.gca().add_patch(Rectangle((3,float(i*2 + 4)/5),3,1.0/5,edgecolor="black",facecolor=colors_ss3[i])) else: - plt.gca().add_patch(Rectangle((3,float(i*2)/5),3,1.0/5,edgecolor=colors_ss3[i],facecolor=colors_ss3[i])) - ax.text(7,float(i*2)/5 + 0.25,ss_abbvs[i],horizontalalignment = "left",verticalalignment = "top") + plt.gca().add_patch(Rectangle((3,float(i*2 + 4)/5),3,1.0/5,edgecolor=colors_ss3[i],facecolor=colors_ss3[i])) + ax.text(7,float(i*2 + 4)/5 + 0.25,ss_abbvs[i],horizontalalignment = "left",verticalalignment = "top") ax.annotate("Secondary Structure",(6.75,2), fontsize = 14, color = "black", ha = "center", va = "center", weight='bold') ax.axis("off") @@ -506,6 +506,7 @@ def plotLegend(plt,fig,gs,total_gs): total_gs = 1 transcripts_plot = sorted(list(transcripts.keys())) + if (snakemake.config["quantification"]): df_temp = data[data["gene_name"] == gene] data_gene = df_temp[samples].sum().to_frame().transpose() @@ -526,7 +527,7 @@ def plotLegend(plt,fig,gs,total_gs): for transcript_id in transcripts_delete: transcripts_plot.remove(transcript_id) total_gs += len(transcripts_plot) + 1 -total_gs += total_features * len(transcripts_plot) + 2 +total_gs += (total_features + 1) * len(transcripts_plot) + 2 fig = plt.figure(figsize = (21,total_gs)) gs = fig.add_gridspec(total_gs, 15) @@ -565,7 +566,7 @@ def plotLegend(plt,fig,gs,total_gs): else: plotSequenceAnalysis(transcripts_plot, colors, longest_length, fig, gs, total_gs) - total_gs += total_features * len(transcripts_plot) + 2 + total_gs += (total_features + 1) * len(transcripts_plot) + 2 plotLegend(plt,fig,gs,total_gs) plt.subplots_adjust(wspace=0.05, hspace=0.05)