From 74acc71a9e35f17413c7dc0a32d1fa9149d06b2b Mon Sep 17 00:00:00 2001 From: Siddharth Annaldasula Date: Mon, 15 Mar 2021 16:28:33 +0100 Subject: [PATCH] Added example data for the tutorial to visualize isoforms --- Snakefile | 40 +++--- config.yaml | 24 +--- config_example_pdk2.yaml | 155 ++++++++++++++++++++++ example/PDK2_Tutorial.pdf | Bin 0 -> 79381 bytes example/data/PDK2.counts.txt | 3 + example/data/PDK2.nanopore.gtf | 17 +++ example/data/PDK2.transcriptome.fas | 4 + example/data/genes.tab | 1 + scripts/individual_transcript_analysis.py | 2 +- scripts/visualization.py | 17 +-- 10 files changed, 214 insertions(+), 49 deletions(-) create mode 100644 config_example_pdk2.yaml create mode 100644 example/PDK2_Tutorial.pdf create mode 100644 example/data/PDK2.counts.txt create mode 100644 example/data/PDK2.nanopore.gtf create mode 100644 example/data/PDK2.transcriptome.fas create mode 100644 example/data/genes.tab 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 0000000000000000000000000000000000000000..7d937018dd38bf745000138dd1c37cd4a9876f27 GIT binary patch literal 79381 zcmZ@}V^hV5@6uNX&Zsl8B{+EiudO@3OkK zwuaUg#B7j15gBEzE%g-)ZHd)^b%aEK`3)Uyi5bPsfi>U${VDkOr#P`DF{6T!u7R<| zM`HHd*HvZoObqpHi8-K?-)-j=6EN`a00I^kmbNy)62SX{z*Y<`fWJ6zClIx^wEIL1 zIi{cjF{6;7y|KQbyeP0V@Ry>su7%AfU28)NeW!mXzkME9i1D4FfwAseOGjW{$YQV9 zUNIBD;$VIaSw$A|lI=g6$s5{O+F9!ZMub@DKO;iyde4H84gK4(h_M-9Bw|JpGr)>M zhWeHUfYGH4Ek4>B5x;`?MjrB_jjgqzt~sJ((sHt76nU3b^2rgc2`P)UCx1PWB)5MS z>=RhgY`D;;Q#ucjzC9(?JNphgic@OUEU%&VUZ*GoXak~rLTwOO0Ys;Xd`-t6~e!37fDj9CN>fyUSX>Hvl zbiYJDKXo`vXCx$4vpRZ}l`?BovCOa1nOD8s`dEP6RrU!R!ugW_+HTV&8{-XQ_-aOD zj69*j3-Df*8zps#qKbaEVOvtquhd5OOYLwE*ULQ_658N!57DrR?bXN;-s{sf?VAe@ zZMUmLM)&j6Q3sTluqvyVL@-xP1)QMB7oJkNwy6>7L1ep&M1S`O5T zeW;{GqH8vPYTWFdcq4;E1~AAXu^VXFDp}`ZQlhH_nD^(xwPe7s+PFPEqaaqjZ8{Xn z`W)_ahkV`+y_KUyz2B|j{R~Bh@`F6$%!lwRwK6aL96*#S=3heU9Wt>ct!hpM#*u4W zu;sxqEGpz=7SG+lXFMx0LYU>*tkXQnUo;5|W6md6%9A)5lX2vRu4d#cHK5j`i8#yHO`>4qBDr`)#N}OpE`IbEF$@sv9I|7O zpvC2;Z|0rsgSXi2@LtmITy=&DXg*vaKS3PHIGy5lz$QuInlB4?cu*CX+iY_)AUd#Q z^37HTH`)ETkp!tfIagT7+f`-mgC6FK-asK$+Fm&wDf7&(B;VaaHuX3KJJq4?WLcB)~pn z!B==PeY)@6IHK!SKeASVt6)fSXJbL+X_17Oj$6s$y|5b zWk*YYFD+~sY!rx{&g>f?;Y^aJ9^ez?t5uTMce^wOr(&L>C_2^Epn!6Zm@1yW z&)8GCn=IOdo;~(DeD*GMb}%?eAmZ`9#^Z=d?t&GZ11FI)NGrjCqK_f zU_XWp$oF;y~SXHnQ3+1Clw%&r2ooagF-C+k$ED zGqGeJM}JsSH<0AH>N}Ee%gnKhwy2pa`f28~?=}O;VMN_0hiQpkeMOVgRZX;dNsu(f z^U2a#VIN-mI5`5l4D!$xxG%erJajxM2_-~uCKX1olG`+l&sT?x|6nIrHpul{t_-^( zw~n8--(2x|oS)b2=92MT|B7q69_4G$*yEeD$Qj3qnKGY_z3zc2(2rM4l?bsd!KsmR z)}+blsQvMyD234DlJ@5Gz*3t}hMu$HC8;7B8=;5LJ2k?Tsd8z8^Xp;0gf=R+aNN^j zxAL!&86=3jy$$Z$^x10gnswNOomojWBx%9eqM+9bHk!Ck4iu+F@ierY9}yL`eF=K$ z#vUdrkLDN_^X76Z{E;EPQll&$^_AQ*i9C7*X&&nzE3YxVf)RcUKQzbZ0+^<(J5hrx zdD8)&K``&Ea&`B+BEG%W6IXqPvLZpO^V?#}l`u7x>&w~-QJgw&fgnja~{59H(In;t8 z`_%HZNkqnku_8oyvg5>MYr88tKK|TQo}KP#Fe!c;2uZA9PJHkJ*xdcc0Z%G|fOGEA zg*ptnb_ZIhUs@opMK?u?zpUi@kNW#7RX6ATM1)PJ=i%CX7TevD!TXo|*gW{h{V4u< z6~B&rxkbNA94|D_N;**4_4r`l?9*(dGs3vPqtozn=*0^)Hp*==$HQ#(n&vPWp{-lE zA@7~xqTINk7}_Dx490V`D5eedc8S|Vq0!Q_;}ptYOCn~-LK`#Ap|e%YG`cRTP~hrR z>E@sgF{EkD*mutQS(R4@i!@@|qu4eQwqIDNCi>JEC3bu^h>jzY*krWHgD%Xc@AXEorg;H^z!pH9>i9Awx{)4Y1uPTx#EPr_zFGiJYWWXtmzu`;X zEX`udC86T491faBsWdb(XNgiIuYmceY44z$LlK3SXhtD|q-_|hZ$s*%C8{Z#sw*7d zSZE4y9}xRX6jk+x0b^ANNI!@1-bIS#dNN06BQ+#cN|4u|UuCgn4H@O~7-?8yE7-P( zVqr-bgE8ifTjJrhR3{io2DiTNVNuWjEVOG8wRkto;3W-XggZw>mz^d|Hup&9N5K)g z#kf(f)KzCvv-?znTuwUGJKl|AQ^Pllq$k^oj%RYDGA`U&MN>sDko3@9#b-Z&rB5dw z>EdLSVJFBahpRkBQ3=I85ws~>7{(4c{H*>=OFwhHFq8;GET5o(!u|M6V?56 zhEyWJR{-RrrUd?}VSrxC}oqh6XBx#e9!i-x?jS(lmJ(^PKG zsgQ!Y{|dfHJfnin?w8iASb9Gt|3-&;3+3EbiQxd&%*?Y-j#@%4t*@wU56u&j6Y+w5 zWa?g3oQ%9`6KNo6U#Lx}wF*>BHQFH93a#>ysei@T?X(eDn?pNeaT%+x)t3HZ$>4f7NX+p0NjE_JrYWtV zQ|lx4J^{Z7hb{4yr^Ay${5+=%$G4zpjOu6pyb8;sirsHu>O*toHi;a{GuJ4;HejkN zDt2GCqgkfO3@214NWA|@EFUP%)6qEHi+1*k3dP}~@3Yt<+hY?L3qBrM6$R?eXET*{ z1Fp2{Fo7o6fv;k&y(KzB{ch+%>>s?UV~Wm}S(nZ{lEjmUiaoT+lv=R<7$*c)=Eun3z+QKoze?7hIs*lUmCc<>3D(;ndwb zTk33rSDcSIbhC?r(IQl4HnYp+l?#gg1id%KioU~|d4fSI4cG4Tvt`WV@0{=QT`Tof zqV`KJeqd;#)C_SK5YheFRhf0tMnVPG3v?cL&;T#Vuy*|-P>rXMA*h>YtRH5jc)nPU zSGnmEK36x~fNnWORG+$eL09jOllRS`_WZ!$S5(~mJWiEMLa2{hw_ILfGZGDJKc7N| zL>r%gQOOT%xa&}^HQQ;J54#t*e6_UiD7ws@EP}1KzzRH>8waI-EaQBS%$?TMmU3Y0 z@GPlQ9XH2*KTWB{NYFf>)y1cKDofp?P&Ye(ebO>Z$pqRq^l5LKVXk9B5g-Jc};JC!agk!i7}zV#o;oHZT<4eS5gl@TTjn z_xu|pF-vtO&?!OC*GHK?gGL|QwB`$=mJfI(EaoaPW2P=;MNM`UTHrMs51)UdNoXCw zp*nUjY3>dHWAC0xF(-$={lgW_*e<-0&wIfBO`W|_^vs0pGj6f$JLyU>2aA$y2WssY z6q3$Y<(egyHuEMl!3J)uq-Qz_(I4#;&Eh|6tS&2(CW|;_oim%CT+P_ zEB@X;<3UuVO*zRhoVMc7Y6sW5?Ynhj@5UuI4YN;D9W@H>$*Y!wo14^(uN#6?)}oXh zo4^E14kmk&p*_m7a}3&wO9XbaP80SOA9qiwiYjv_JZ!1y;CMg3beWc=YTuP@!@wb@ zqcoY~zUjDh3!0#6uK4O)+`2AcV!h}MHjaScxR{n4m1X2 zg|C;GBk2v*4qd)g)3B?l8Ch5qa#ERmcRvN0BZ`Z~$IjW5jodZSOdBHpmM3#KsXL-(t z$LBM~f6^%yAe!I6|Il-!?I7bFY!*>v8rJT>c?xyPaB%r=kYwl&woI|=4!eJCpMmm60dGezpM>D(OBAb3>N(jsIMyL~S_A`9j zctO!*oiV@{?B>_igx@zZJMXI(C{G=W!hub7eIQxjypbnS;JR@(3H<7pYtZHIa-yg< z`b#$cWU8AWM%fp5v|oHTzq}hEH?{2MoKQvjw0Xm^9?l+XUpS$QMSwFVG5?YUALu6!xJ8E zx5YBAv(7OI-z8<5trPdNuGW><-yU2sNxtcSal(ux%W#VWo9mx81NHRg4RPk={is=GVQ&2E{06v{MC zMEIFrbh3l*zWc7~rH$wLDkM3WF1k59vfRVBAiVmC)c!ND`{?zb4->c+N9!EgH(CZ> z*A^suc|L3ED!k(r!#F{bE8BDPyjKStr*+AQwp)X1?;nXQ^nQz{C?e${+POfvInVL9 z*wDV&meKxIQ;)+VISl^iC{Kw)rKL%h-Yeu2ALAMk~ci_u^(cSr6;1HIP) zBMrt^`pZ!ys!&5mV{JEgWnS&A(LA|rMe=V6ud74xe2LyZIl|A*rnsO<+DKc-Kw}Tv zm?|2G!H5@?IFHTg{;m87S>mV4^fcp6g>-MK9kR)?{CG?d8hle{{z$HAjMPAdsMga_ zS_wTWHdDlkda^g?XAgvyAGI433kattYGnF|X|UY<7F*uGJQKus zjZLIMf5Y%JLfnbL=6qlMp^~$K=NNn?ZW@v$rU+^z=9ZuR05Q)5qXBPAQa|}Cj)hQ4 z-XF;%xPfFF4VFqustdoIy1A3paFylY#InV*_RmQWd6;^&t#V@<)@YSl|zPdW~WD8|Gk-@!A3t*Iuz2!_=0}hdJ*|v6`Yh>%Cex`7@QO9ksU2y0cd_Kj>K$E|bAQfTvPD^`)jap2F-B`e| zwD=n$9Gysk3EmNYl{5N!_|K<(?zZrLv~$OM2nT!b5$0=gl~8HKUmd(W|G?Bmnk#R# zlk+38NLK;9s^@!p)>=D-`?wc@#Qu>ZvD^{AmyF#KTWFR)0judc_h=b`)^g4)8(+A# zmMB}J^;6b)QEGpF=5KydG>e9x$r&4ggiYY^b($irx^NC>0n-e#>H<=C{ zMzC{^V`%(}oW}S1tkh)Q1+Ou=vGj3#s8{C3j6Ra42r!{6Y8ZV(Ev)p0T62VRQDK#j zj!`A|6Ir+#2;Y|R+n(z!f&ba^y z@3FP?F4Jq-np9C;pAY+GcGpOUm%cTf?qU1WTz-VedBt?tzei=8;&9PMsumvPHkuQ=Qdhu^?SA4N`iNj2PWpy&K7aZnk-e3KNrN> zmCC>hTFwvcoCXcWc=Chg;Du7No&_^Vp~>^i2_^P$*C=>+)=Ja#7Ea*7@-A9&%t&={ zCA>H@%C^58$d-pe8y%4r#UzR+3GChsem1fE`!aH03I1taK7SgTZD3F*BOD{OGS@+- z#m`YG>9Rb3lID@tZTVu{4|9rRw4;jZC~M>}N1X6nMCv;i<~j90DcmuHqqd#kJ^Lo` z-^9r6W~SJGsvd@=+klfIP=R}wQ;#8K=Oh;rL#*^C22M^c+EA_pgG>pNQj>R&Z`$&Y z=Rop&Ui$8W|3QlO%gW(pJfbiyK^6w?CZzJ{G+ZJAr4WOlESe%lW&uRz8Vb5xSFBj2 zn$P6MN^S-Oq1w*MHE(*WQU@zar6*N-{bep!zkv`^U71eOjPW>sAuRPuBX`LYQ`mo_ zSy~luwSW1V=UZr8lN!(2=TaiUMw2Waj|jT*_Rr5xc2TAV zYZztg{Kzj6@p@%FPP*NhNJ*1AMxLCXwoHN!E9$h3R2!YKFD8NQL=zf>_F3{LN``W5 z+sdcLLzz(t+|C-b)u&EMg&0=*hiBnHv@?u<@XVeL5^XT&S7KQsIM~gVc zyv5hh-)U@#RW6?u>_?Bd`eo7|CmrTW`WmheKj}AA(sZUBmk9cXAaSm289i7SOU+cO zES**oJJh>o?5>u3RHkwQW(iHkozrZy#AMzetpc-3e`$p!h}JOhTA(Uw5QvjkBotp~ zmhqK)|41kBOkkvYDqphoqve?0Y0eKPTV4dkQ3=%X7#WSnz{byNBF+lSvz7avR-)Bv zjprqM;3j5tHFxixhJp+df5lVYt|doOJ~IAO5G>0g#<&-YG%xzl z_+fn*>Bl73-nUM&hao9T=8ZwbNId9!muSmUUxJhC{;U?@tQk}4fo-NEm0FlK4`{#? z3U5{n_sNSGKA1>^B}`Mp=&|QM3!cn;o3)yVZXwY%q8Ws6E>aTC{~#q`xCZ!-Ko8&m!#syhx9R(o#Hcm%cz+8D$tR2K@82V6W34In-m7R zP!EPSzCt!b$qqYXMd~7uik4Qa9ktjvva!GzrSW@Zz9-@;svYWyD9!Gqy&oA$Cb)#$ zv9wtRFf=4M*~-*5X~Q>7%}gqkMKMX^N%8)3)aw21fp1eZN0 z2KL|jDh%AYjAjaPR7&5co+z!eeQ+mI1Xsmy*U)G>#vh)&?5*^p&vfop&&pM@wsNb< zWq^%8($EzsTtn>1SN(2%=$#9WM?n(!>!_?(tpx`)MWm&6+eM}gWV(qz505o^Pa+&6Eui}1{?$}Gw? zAA|As{3>c{21mM`nkP~mA}pUGq$2Skd=2i@CSLf~9RJ0V$e}VJKboG)N z)z`#SrX>TSE~l`T+P8W!Y7>x%1U4<#P_8OMq|Qh!Doo+!KI*~Qcf@+e)s2xNpP>vT z1^Al|x|IxsYW!@I*dVnkWr3OmTJ$y(aQ!j7ri7dm8K{RFQ^fGeXYy49Ioh*90%Oa| zSmUyf0XYxrH*_8Hf?-)oF~_|Gr`y)LWo4pI68$!24Ar)iNcZZ#KCS5Z0K?M6K&h}f zbzCQF6r}Qqt<$;e?b2GaZDBT815sG??^oa3TJc}&c24T^SICbYN?HV{Sw4p@5 z(?$JdbE#vzl>UCH*}3$eSJ^MO*!JFF_m)K2HS<+&HO8CE)8s$z!st@e(q8_IVNfci zDjQEnSMc^>@E}S?qx`@gDSFw!^cvSZS5Z%1H_cM5h{d=7Ta1WveKF9dQerIci_%%j@mqcOi)bA!&-ANl93wl(|Rdw3Nbb_^drDU}%W3AQx6fAa^U^ z1M<~b44n6Tl>HJmT7GT2Mm*N-kOva#CvgoXwzT{O$p6qY=+5fNq+cyoS z+?jjrw(WQ34p2brLkwXUlcTQlt~e$Aqy=vbSE(xUeNf(bdWfhw(h`w((srGGWJPzH zT2)6@N;ICKs_YCuj=_Er7rA1Gr50FKC31z3+R@DSeobK=-SQCc(o2q}!>(~AfA4I~ zGbe)NTA)2IcEE#iP04ILVy|K;T@0(gh#1eCBhYwHT_cc>sX~O?0q;O6j{j)-;HB%U z=qb}$yLUHxtD?Cmh$xnti;LfR6c)YdT`HxtG7=tB*eR2^thIT2bTHF693%t;m{J6c zhzIiT${ZN*;tu|)o@AO_3hH`TP$n<16OYKqKREMJl}24dp}D+I0c z*XYv&ia&V0rzdcH8z^(YF&~ezFQI&n6^DyLM;{x;T6)~q#JV<)@M2qC!}LcARCT`N2;M>y3VZl&b?L62g0t-4#QAHe`& z&5c~nFDSs2=IfYv9{-7yA@7U@NDVla9A}!HGEFCsf-yq}hCM+Z^pW>@#3w@JdtKb= z&eNj7&^<>Z+V(51zSQBJn$vE>jDb=62=ba?!E}%L*x!y!D|Ba`R;6>*p4e_Ih%F!{ zJbQN0xhC*K_XjNrI8R5-)IUvjd6+xC>7a~~>)Uhaw)OVJmbbSbdZ+SE@0A6Z?oEsU zBV>~LaS zFp2t9*qRv^+LG-VU*|UdF(q{vs;V9eqleg)w@dJ4$T2;*LSKe*`z-Au$H^TwrttX| zm3SK)rqpJZB4mhFv_F$fdZQ6|_@SAJ(S!Gi4A+P~K$zTv^ z=%xFU>%4}OUT}Co^;j5BAts72Z(fy+(O+z9w7UTx zt0*EHLD1Z<*x8m=Q$nB|@DJY}E-_{&mkFejhQW}xAb_eGZ$jn^n$;xx1=*22%>a)= zUZ4L?13^*1otazsKr2;y5Mci08zl{AtymduU7gt7w&gXtsizo>p3+hveCz9mb^J&+ zyMmTb&|)s9yf0wW~7}@Awb#F&(=U0h3`${~?}|CR96o+2N_Q zx++WaH|cIzr;lV^Ag21+TJm3rh#%~fDLT0Y<9}EU{%(CcxrB@8cT2Yy;4J3Se@g)- zlu>lHWm{9+Rt2_z}ifC-Y`LjM3ZVnal(i}a_S4Dt=)A%repO5W@bYiW3nl`i|Cl{ghWKXR_oyJto zI69T!mKqQO8ByBq{DB61`t7d<*Dzh#~mXKV2sX{75g!^dBZJNk&>r~?OejAfvVfS{CV_!{Da*PgFowujg#b5_rhRkm`XG> zqWO90CPUE^lo|1(c(>-uJ@3@vij+<_-%=UMF8XS$vsuRb`678;%0$lp&}3DlZ*(W* zo@gC@|KU5uQ5^_LYLla%?DvV4K4n|3)d#qR@pI#w)E6heA$;oXV>nzuFm+UKPqnCN z!ZTSm3tjs*1_T-?p;_jc-P_*2ReE#dz91Bq&|K^-jT?>q$E15|6ng#prL$!R04E^D zT+8yBWr=w^<|>T^$h9+{9z?FWNMH1cy7y)pLLAx&-HsPpMkb?>3w}(9DHYCbS`4cG zDtXWhz#9@eL5Xn1Vp#KMiv2qCq$I!Yfv2WJ?$FEEn_REsvx-|Jyy6->FJ{N zMpt7mKU8+0VIl6f1h{v{I}(~f(h>$4?Ah+gFM%tAs?j`jOdyZ6JKzRpo5<|N{Yx^* z_SpWQex9?qj<|biGIYlQrknm-7Lh8jw3xw4^7Zdl-cMhw3JKI8dm-DVe_bnCTBm6M z`Chp_qkUJL^46hDTg)j8G(o3ptiiW7stm=3O#5a%gs_&9X0{GZzohQwUK$W66LDaF z6A<$6+X+YvD%$!j=ws+1?uBYY%%bxg!O_c>geQ;;>pR!W7lWblnX}v^zi<%^?Bpp1 zxCQh2#%H|fsYt+S_}_06zGu9`Va^!$!jTM0R&P6@{j>*k@jhr6YX|ZA&GM1_g5*HA z!Oy|z5I+OJ{=bYk1MN|K?re%W<6R=#1@=YTzD9lVFPZ39OxS!C@$TMILgdc8d5n%M zS`l{yHdrgGav>M`mr-z$8Z#{ON>oZ!{)>DvvXKrYod^+*JjFlb=dqOedh1{)27DRVOK0~;eo0(i#UyI8$k{oqj7Sv};wV0?=kYz0J8 zRp3(vz`1fj&MGs9_V4Mu0iyUDKID{a=W$cBn$tmTHNCS%|5g-*#LGMtx7Rv?KTSSS z`{SCWk}oB^_~0b|;R_N=kE?1@6=i2nwVwU={e+*-@ji@cQ1eWi1NnNqZtS>$-^BB> zRn5ZX?&En9$Vi+4{3KJ^vKsAij4jEx0D>>|6tDRGJe9^>OzeNfhL{?BS)M{BGBMcp z?tl2KJxp2Xzi(()83xDhH|mPQkUig`bVdKDo(HVi@gGXvt1*m%jK^(-{^Rdu0K<>B zFqZefys=f}!;V9&U#KjhNZm4T$0S>FN;ef6&B?j2J6G3rProCy_!>E5zZn0?)I-bM zYWDTLeM3lOqG4q_c_JzFU`%DJBId`*{v_W5btA{g;5(leKTon`Ln;#^|AqU4%t>7D zITC3PgKgw2eJMTo3qhL3l#^}*z@*pms$*OSz$hhxFJR31*CX*X?m*z(E zmv$Fll-(2mNlX*o%4>&6QBqZAx}PR6I*6&B-rv=5glM*o2UV z0O#kwr3_cCq$)W-zRjOZk-f)Q@v!;u_uG#$?(J`M&n0?GTIRpd9pC+_CKB!+ zkLo6#0X!l+`(3ZY(Rru+j z%GOeB0PXg~klwl&sp&3*4^HrQ%zrRVCGDeFHNyBuFzV+JZ z`yQKyg#Ws3Y4{R`J4zjt9zP39)#CTU&q?ls3v1NGrv|xS@eV&LVFi(z>#0~^{qx#? z8~LbjyEDY-3)DvIh zoxAp@s_KYvH~QFcMd_nSwpzbgRS;Ua`_^W{DDqJJ1TImfSc?5bC9F5nK|K|RkADs3 zt_XF_jvppT^QTt+qAsMR_?glJHoH1cNpd3#1b)VDq{aA|gs1crO^HT9u&qci4baz= zc02hc>vVm^m}Zy;Os%~gDXQAm-ojrn!^EW35Ilf9^wFAh(x88bOyS?bfTNz8iSIhJ zazyA<>!tFmj8xmo1-& z@ErmpkzMC5%l_wfTjvfDI*0oD!AShc!~Bb+Prcp5y(9+Uk&__y04&rlA3STGg%1ymfaZ>Jz_bBKFG6&%cvJX(%o=Vsj6sQTNOJsW={}*J}e%#7PzMT+Ks^F zT=znf9Ea)a1Y{a1iUEH?>Sl0r7jz!l7msx!#TkT5B(_yWD2$j9I;ADyAAU8+4-TZr zwWlLRfA%88Y?}#lGYQ^LGXC4NRizXYd~w+*{1<8V=b1fDLYAWN%n*cP;e7@$yCh+3 z|FI~<^bDa9!Cg(Exh?Y zVFDwz#>$jr37W_pfKu}o^;nv}jkgG2cfsmE;8Hhxu#p5G6ioV|si67Z;xk(#%sjsmv!6?t~Q0MQ!vr_6}z=$5= zZnpKUzyJcDnNF+dS$rk3JC`OL_%@brRtR~$^o~f5efEgoAmb#g!?Bmp42%YNc`M6+ z>9aURjjGFxdFYoXK|fJTha&|ZP{eP@7qCquYf#`YEef|LfkgHkx^jVbD9TsMN6-_2WpWV|Fj8hzX%l=$th@uEsXd+GSli%9GuxmvzkL zR?sxo_z3bRt!UiOEa^(T3iQ#l)o;mg%$~0a=e>M`KK;pUdB{HVMTAbVZb~o$3?L0u zf&I1z$Mv6}Zo4J9-QhO=_EO5dZMU{FInN={-rF{=W{~ZfruQwXOCILh;8HQK&jqhZVFZH!je$9yJ9>C- zRY;Q1iGgV-@dBDba|-3NpP{xK2tTWmbHa`HtnRwd#}RCYe860)h zVadO!ljbMGxf&SPJCj`k+xO#!U?&FAAH_Tjd7NKZ|GAs!B`~@Xz?Wau>(?p7EZZXkV?%)qyAAsHgYbY4;d zm0VdEO|adCm&-lq*|&}x%?lUZ(?JK`>JbGZ&`(i3r;8=in6x8(?Sd83cm)p|`fxLC_d*~hncYSgp{%b8 zu)$@=1|Lw%^L3vaYvHL=(R~Q^khMy15yo{J>$b8Yc%fakQm~I}Ldg3}i<+FW=%UV^ z+J+@Al=o+hqESTQ$G9n+B!Q`OER`{oFW-7OfW`sGIXfe@$vUGPJwBcqoh#!PgJJIK zkf}^eh9$K(%;n0jqdSM9OdExGpDIbtFG-wxf*{QVENxAcynV^oio1>)ox3dU3!b8D zNIU9ZE#p$`(4SEkXO9HZe>$1@{x;aG;f+@10yd`Urn<&^KK{}UXAk#7ET><)n@wlo z1KO1jEnip4@ZoznlbpA0^5QS(nzgpi$X8rN2AG=RtW7N;3-j^_;lhBJ=fRW}&@WI; z)*mnNKPYQ}IsFXM&8@`O9;^;sb^xEC4xsk#BFeG5f=A@(^WRI&D#Nth(0U9txNOEp z*~aDYaBYJ9X?^VAukg#&VE?M3Kc5zW76(l`>51Oo>e3XQFHnZDaVuY}!)$7Y)Xbsf zk{=88Mbz=g3eW~e*bl@B67~Ktlsd*ywfUv)^M{cYXYj(Mj`GhHCXSq;CV+Gv$#|XO z)jeK z#DukxE)12^7*^&4r0>;dfG#(m27N`<-`-2@#&gW2mu8%`%Ih|j+L%_MNWbdWmXPU7 zkKSGe#BIk2L+xH!EeL!V)(sj*>m%4eccMbS^BhH&cJORbvVy1f*4*5X>XVhH$GCxu zEh^;eRg7@^nlhHSE@eF=-=}9;2=VW;KbWc>8B)$eiNI+9Ho(xi+ zwCkV6E$mS@zB3OtHTk+am4OU6Z4oh*!3;nRq>5Tl*$be5b8s|Cq2j9KKKcvWJ~)tf-7A2O z(>5*qPm4e_?fAop!G9AKKS$BeK`^jy!2E_KFS&i_ zWn1}!64#>)HS}9wk1JzB@G!1d#H)6D55R7e+aG|DUGl1|Jxm1DYfIcfL-_I&MyJ!? z0vto)+G7;m;I6YsXO^p)ThBtdZkOI+baK{tcUlxe%c*2_l5Ze=NfmnVW8_zo5&dLO zC+$~(D;fe{Rea$AV!y3b&#Pp_wi4d{ygFs_2(auzMyKE*Clw*%sMN)VDi$5PkAHE@0=J#z?C}Z-6!`^+fcII5 zvOjplQ?)NNmak{xfx1)qLbh*CQ zRK|P;R268hx>M0XF*}Km@F`&OF+&cjpXM{*jtEjqJq@dvf1aU=bwP6&tdNErSDI5l z5-mVjyi|s@?XD$e$kYzz1n*s)sZ!?glFDX@$bL<|5wRW=ei8zZrdDjrP1Q_YV~Mk+ zrd*~OSk5lf-vH$?w5VHamO=`k$kClhrpzV70D_{TASB={f&CR_KNbRuz3d;@me_|*`1|Gh}$&O^q4P-eSaq!e7 zZUELcak@0sMX|b^_ZY%aw*|JLW>YDo13V(RT&h$@D$#*i36rEkP!A|y;r^h5`-B{D z%L}4&I~ah@wc2$z&puPSYnzY%771$IX}{MW89l?7uOO%mfZV$PPl*Wt3R?X|bhAxI&;Vn0FhTsx!re?_uOuEvUVuI-64oz+Jwm#yJR!tzr*@P^|$dF%ua}dqWcum zX62#Lgha=K{0U;h4&_s_1|0{TuId*1&o<^TP=RpnXYGYVu>UHbI5TPcAA2^jAQ?o# zvBP6z7FveWFWc}mFH}aDe)hZ-wEe0E?X!Y_(8wkQ3B`mhvCuxNKP6NkRN5gTvSq!T zX-Hp54=yHH(3qxzWI21(uFX5?P^bOH{_xi8Vb#_!5+SIBLah{KO8$&XCGM^-_r~^!|*d-A`n|+R#?(bZYP|{qu1vJI81%#M`fp-ulGs!4R81 zH(D&Xl`0s(h>IGu$I>n*!?N{qof&dnt=1$C2CcrK|0twHQ6NITU>Rrf?%#+>KdFs_{UaXjC4+k3lPi_mH_^a~5}9c@RrMiHBK<0vs7wWp4p2jDRS&AW#Ut1jpE z23USCJCHw?W@fzF+FN9X0HPieR!Z1Zrp1oi9A7{(N=T0PSbb@?!lH@`x^3__7?7}3 z{8_#ozt{iW9yHkNbxJL8JIRDz9w0#ZT_RkX!b3FhabA<5W$HD2Df{>rAnDZzN%#5N zbFE$D_C}s`vZLM)Rwz862Pf;3Km^-hvvp-8iswYLqrxu4z{*pYMBFtHygaqVjtez) zRM@+8m+ZIsl7V#;V$j=@Dg^ZWfLrU76)HY<{~uvj8CK=iv_VBcN@)QJ5fN$Wly2$n zlm_W;0qO4U?rxFp?(WV_m*2BD=Nx^1eLv*7*gmn=teJc6S@*DZAK1}~i{K>z%IzW1 z3bJ(zhKxv#v<3jRJ~QiTXRq>^}Dzpns(>i1I_VDjCc{k53%O2UURl1tvI{wjWM+Jg8Q* zQ5u4V{xmW+O9lsN)v)%|qC4pBro&*aX_+i+j9C4^1oq#6b?tBn<^$Jz>Q!@eb9#RS zJX^|01Mpp7<{Zq1WddXiLH>wFMW7s2=@P=+!UX~*V@qe(lZoSTtslwCpuYL#;14k2 z-ASyl+fE9j$Fd|KQF*Td?(`|1HRodGqZ|=S{N=nOH@KRS6|M0Fgtu~6 zcU{w`P(U$wW7{`!DDap-AfVC~g>PJ~mi=E}kKa&ONIdAm+3HW^X>4l~&mjR#oM3F& zHp1#`o36)gp7Dy{SLAJ@!P;U53@d8QIUZ?R@&Oz{))VTlMzxGOykip@O$2~^~2M|m@p+(7!`jtv0e z0u2aWAvOpdU^WL71&~U(nG}m%PDDi+BCr-Ks{*B^{IxZM`4DG}h4%pzgzf_Q6x|@* z6w3>O)khArZ~zbz*W)1|tq0ja$aFz8Hh@JKV2!ok7UGV@rm8?uyrec@EzD+s3F%7! zcK|!4S`O$}cpKE~LTt-cTmUZEi({lLD<*4dEA7AQ8a9LF(h;b}naexBKl1jY$QlV$ zP5?Z~vjTWY$6$DNZ&n3#SKR*`1GgXtkiro2JMC9Pq7nRoU&x}KgdIIEE#zGRwuRUL z>2T)3xvre91}8#La)KSeRU$@*12}3_AZTD}0hHV9YJtTDHRXS4f?$y~#|6Q7XL^(a zi$yoo1&hhjXyL--ZE>Owp)m*%kgnUVKmDfpd!qwSEw_2LgZVEXx=Q?HzI03p5%B}4 z@O1!4Vfz$$Ks5dr<0Toc=__>-_^b28)_d2r@}L1iZw~7`e8JpdK=2lUI- z_bWVY`5m0hSu<;(TLI~ps>*npz+^I5XU(2@TU<$C|Cl<1BoIIs2Mv($y;PM*<1b&# zwa$(|;2wo=GGh=DK(~5M5VrP>cl5x0E;bWipM$IT6NFFuhaVwO4Gw8=&q@~C3@3z> z?dE%N{qQY4?}oL4Y0v<=8o-1@4hFbQx8PjbG=>6F#XB9oPUWv&gjafVF_rTV12h0? zJ>1q4GZ(hV>0dZFJ`NK`KFc(8H*J8{Y8m>2+z5M9FO7&*tf=9oHihjO@hX6pb=A1O zZy{pqNJ{~SgUbJitzj??YyAJe*lK<%`Y9BYz6<|m z6(W`t{3*?TYNf}(_+E*b%`ixt+ob|RA~ISN74tKLaAW6h(KY5F3h+L70`;|Td;n#c z2suml7T*rCt&ElQK=3ktyBrkNJ79+X5tY9FX?6ez9}uv>a_cSU<5hMXzV1{ru37%# z#H_dKwo#h+%|SKd|H5a2SxcCG(JR~Pj z+B_H}jMALfp)d~MnCyA(X~!9fx*s3$mqtfO6BrpN>34JM7@Ex zQqGeI)=wP^?@9Z*^tYmod0UQRA)0lX(GI!iz#^4r6pX#p(bp9HBeX$8*IWvSEM4x6 zg{p1M!u(mF;)qoi{`s4)^~^_LF{okNsq`pV0pf&xn;h@xM;KywC@-#zqcn%LvI{`? zfJo8-x>mZSd;{4j7q55phZg(P6BSwR@}*H^SQj}|ty-Ro2kp&uf7;wwv79HjZ(MS< zBoR~u;tqvt4XIi?5*FfqrK-D2r!+)(#dY}smK7UJ6Y3;j9cgg(BR3%1*v;IUN#x0c z<;ZGQ<1lf?VJ~vm_J!x~A=cI(PzHqYp5oC<+ks8YDOF^5%0b0U%Y1WZY30(RTm`WB zWixBS|M0p$Rh?m@e2)Dc8pH!Tc>pEalDJE23HxtN#;RFT9HM&vBQxs~I^wuSjqDQ* zLYA_a6}#j6`}%e51B)6B!S^4m1;vi8>u7CR4isXPi!RjmKekSHsZL_L6k6e6J98$~ z1m*luYEVX^!cNU9g8wKrEwuuA1ID)o>+jR@|hg?bm#0^Zgpq_D*f$oe9y zI_-@dVJeVt)?=d(GDt57w%#(Ba@F+|u={ydm_Z1v-D@hJkpqNXAPl_1D2p)w-8Oe5 zODJZkYU?c+We4M{0GV7yRlMr38mb4!yz;lI z%y7F5v@p$X?(_g$v=3IhL&Xy`wzpooo|A5x|LAA34=y+jRUgCtZ6q*Bm0>YynzI`# z_|pMU4r=0eTCDjC_y@eDcFmRoAi&U|e&9_t^Kk4uomgY;4D>Mou*3WtENIq=c_peL zly+3zJq0wZr%^I4S9YSuqqripUa3ncG1 zY(Zj7-R7q+u$&#|s%vI#A!3r-!LjO9<61muYIYgx_q2nbz~DT^IH5?23l}!@9dz;K zF&j~-m=dP>6*Hg4+L4C#JqtQ?-{C+hFYPmIK`R)sQ;E~{EDNclpt=F<`@_SEbH;A; z@A>x8@609fQK9{5(#U9tT1ZC!(_N90+x%U2A9wSg6`%SJ%%oi~)8W?DDJr$+4Pnz> zG+KS)MFB3o+MKCCIM^tb3*laHwDtQtC5r`W%Ha@nsvQ8gpRDJ?2D(fc`$P0Mh{!DY zMo)PziIEDd(d`%SQCYJbpm2Ip?%U!4jTr=1b>_F-By-dwQu2qcr^KtB?AhhD$8Q1q zT4ddpv4K?H8{AJ%>CLIZ8HDfYnyfDb6UAwEYh_OH`vL>N=@!~EoSF-G=7mhBrfLXL zo>$1{s{hgd^g#Hi@!RzvqNxS$4TyQE8|t6H)7E2NE!URLk&!@v-lEC_7`PY?k6%Nx z^gA#`$Z=3D3^eW_qpGPAr#>pOu7}TG zz2)BfOk+EV0}Vi}Zbme=oz64BSv7SFDlow!tz{5v$wIgCJFpo4nEt|057 zY}hA+1qSMm+qPA0r*j|WU_RNw(j`lYI{#pUSdS4_(^ zBYmE{&hKmbw-&B-VaYymN3`*kARt4>uj5P|sP1nABDp2@j?D-WKxRhuUYH|QZ}Wk( z1l3^<*u+w90}b-F|JYdVQf7Fgaw*Zg?m&DZ@(;F!)>cY))#2*@fK1S2!5a*&tII@P z$P3XBj7q#rNSs1gJR6(h-)<8%XqF=y4|8O+weBt0kC}H|cfNW$mX+`uICNTSz2k(=nC^r1$zA_7W=E6n2^s8diIFdz)`#-f^-8=+9z=u7{8}^?5aBA z`!Ye`vv_-dpRdKZ+23`a>~#Zid(Nod)Xhf`Koz6 z%{2db?y^5BWAAU?vP?FuYEe^e0`OlxY6X#V`xwtfnr)azAp)+I}k9P{7GuGE;b=F-HB@ZdI0K${!6_+yFXd6Ksg zkk!g&CFR6x2oDdBcyJ_s!>Tu_WHhol) zH5Br5kD>jnCw+np3`Qx}^U0hY)!UBm@(MFg3UFnXFX}Ovw%eMPI0tXhdIM!%XHF8f zzb1%l9K2|fagF{7TXU=@k{NflU&Jbx|LKYyJ-CJsx znTmO8v?Vl(@_YtQxLk}1?^Mhm*k7kTVP1=j7!P3zk9(SOx-3lFRUkS(6vVnlB1spj z?_8_;cC2S)B6gbDn|Q+_%QfCWx`Uj$_$rf-)6(lUji+V<*^>-J%iM(Zkf)KLe>$f5 zw%^`%eDs8RTiK6_0pGlz8H11DI!DhmdE=#JTnedaSbVJbr@nrS{LggBYA>8M^$ObA z#+dcg-!s)KtP$KCoAQFPX!VTx73qHaXPt;=^g4cJA9+RrlAy;4QB&6o?-Dpq6v#>R zBa)J8c1hl|UN*fCT6!y0a2cT-WJW*aGOi7<*>kG_&iPf@v+dJoWh2|^G6@sA{yb~n7a`f7fauF>vZOQKti3;ZwygI z)2IGT@BR^4;hS9k=JEGWer%jdc=qHsso{%0(Gt9}I6024K4JqtYj#;ToNL~v^&mP~ zs*SL{$#LN<_DxnZbORA|(tAE{b_}ycGVvGcy9TQ#0$=W?{WfGoBTpOIYse{2$MED{ zIDoVd=xaYkd0#$bG<#Veq@X=&@1PRJv)f_+t;4tm?!Pla7dA}#4F{Cjla9-Nft55o{aRxDsL6? zdd@!HyIzcof4Y@&vLg3ev)#?q4A5I-bG`hSda;vj(W?MNYF;0jGfGO zh7{I}82=2YKzY|h(j|NJmmZOf6!LdHF-F#)Dlgzu}Rk1y9$Dt&f`ra3~Kb|X@)mNa9@XJx-E=I zw$VI%o8x+r&30MDlb}#K$ND?^&H3Z%`qnZP?+caE)6$99s!&<)#tqY7y_c zEJ$t^Tha;a2BP!2uYv`C%#$1)X7Lf9*xC^Y&=G6515L9~Mex5LlF=sARt^tf+&!h` zXB?qe4wNu#?!LQq2nwXyiqbhj870o3-1}$Fh21dRJ(=^>O3RvIFUYmHW>0_i&d{c|y~J2OFPFKW9!2ngYl8GWZ5lroC(tW}2_Yj%B_j#Bp-H zv*zZOM;f4cXd2{Ez``&iFDmQXTxV zgM5ePg*#qw2w&j7N=~r>V?TZ#^lRkS7*`<}yZFIKyZ74ivmYpXE`Hpp5ejCDuph>v zV|C`a^oD6^c4qGuu<3L0tWI-bE_@Sww~b5?=c-5>4hPa_NsCZ%{%HIXd9M(`sNL6o zrYDPi_rpzZR#I#Go6})A63?foOh!BO1=_N1Ht$u(hlJ*_uO`R@NAnE*!&Yy^-oO-P zFvqXA&4vovx31pNzrBwo#)xDQn!7s8@)79ncL_(V5G?y9zR{{&!7nKsM8ZK?FZ7?~c&Gm8F<~myPaCiBFh24^yM8|uaL^ggY%HS@ysFQn z2%NtSRR3m|X`tKP$7R-H`<4P~LNK|m&}#hGdoulY@AES<*d@Kq)EA;Wk^v;Ukw4Pt zWh`Q4bW1a~XrFHDyrsay?T^5b5*oDC?7y05E%PX>BM)>C6fmz)(d@Y`bip-wow3oG z=27S;rO;+!G*8{}b*-I0$#R_{Qh>tbMc64ALhi*2rH$6}sv0U>5XZ$75Cx zl~&Y&kIR60&EL)F`PIBLLFq%Qkn|7MpfFSVVP<76C>)6k`o5NA!(w*ZC$AdBpY$Sr z@D}gDcZ!$RQtzU1`&Q`AEmzl{#)WMBh0U6R?t3M9NcZJyVpvBM9&{70oe<0Ca96P~ zeqtVcwH20OEK$xssa`Y*zK`e;;^vRD{;&~4dn18I(Vf|4k4+OzzxI1FEP^Iwx;ym^uV{vI z-FL0qO9D@)cRD#%tnLUs1xbZ-tGBMW(YuorB(&Svx=^GCPsluBBi!)>Y!*LGD|+mp zk2w_Jcc+!~ymH#gvV4Y&wRB^f z`$pDxAcy&dF=kvb+Z*^c`y0(Q)wwavY|wjxce8ON{4+}qVMyObrucIA8}Xl?4E1+d ztJgnqO0o~iNBUD&fwAq-VL;(b>J!# zSzF?;ga;H`U6M1IRxt!*-EyQNQXdk_RJ%(_-c}RDgs080luOztE8i&#T!Z8GI1#z&D zZ~eC#${T^Le2R~0p9*ZIsq{Y*ZNbZ8(|3weLRrL(eb?#N64A6N5exE#onY0coI$bK zRLX4V4yd`MLF2IhsZ<%MxYS4C4x99TQgOL29cDqS1O;o$ACGSVqg z{=9|jD%@TfB->O1tw4W5#*3`--DhFXZQKm5;0@$v6EkvibU((ne_M`^N9ZT8m?FPr zl0}2e{-HlhD|QB&eY-KXfKM&{zyn6(*H$@20inQQPvM;YJvz(O`B^H+HoLP|J-F-g zr=3G+{bf4rh5b)Fq$N6HCw7DW{IqzYLHsLJzOLaq<*^kus5J)J3O^PS>x<;Y}{FOAiX(`vtf4TJIdZbZy4N=2#>`s^$ByUEDo)VD=bO-N{o#5o$;#jTy! z-EocILl`2CXt!62=j(7t{qe--tR!@|a(RlS+M;cJ;=3)p{eS1O)b^BFv`R!f+5g0r z-89d=N?FFa63gSo^0W`FBi5OYf)CspF~*~gT@p|HF;lmqTP@2HfKH9_yyEhqa=KLd zg95)6vmWw0zB(TiLj5*4-yTG4x|7|Xd`AWIhu^~n$6j#=nRjzqHF0BVU}u)j>lEiZ zf5|9)l4ALtE;u8cYz_7D{jo@RHn}W&ccVjLKLczTrUxu`7>xMB?h0CtnuCmdJh{7e zFBHl$ihEy~k4TiCH%3yS@*sjMm+euNx}sZc>G|&IY*{m(JgvCo}V-Y47k4*;-{Kz_WipS;fUmFN@|4 zZetp4l=DW>+`-1Ou1`rM?0R}w8h`sXu+f6Ep^QFUiQZ}qdpZ-8x9`fCHoU6V2JMT&K-pJ*%t45Q4R5xLu&H_M!xiv#@K}_0tOD6Da$Ih( z1HUV^^v1EF2xsNlJ7~rD3**cr67q84#wHcBjSzud$iH}Z2q*hH|M5$y&*mqAs zr}=|JiO}EV?dD+gWOku2W#D%Bbw@D;D5#3k7}+1q{OBx2>O#Ynnt2cv2Y+H<&o5Gm=|PShidj;3s?mhU z3qNuxhV>s%ndNIgq%@V)whD0hwy=<%fI6pAnHO+R*~`%WfO#Nl>=j_kS=PqiP%yok z{zi4*q70=tK~+q~I40owq-vleRqa-_(s9a#$|tyLq~m3+ZM{Kn2R_Q}a(xdk6N#;Z z!4TFQd*oKh0p2Wghb!_yr#7#zt#esMo3oDT4oyqhg_(hv@sW?zYQ007L6faHcJkyR z9B?0_E7XEPF&Imu?J58GQ8XcE}eoMQ=!=aQBH#XZqAd4}fvz_Xh9T!f0@qyj zw0UZgk_j`-(ssXO)?i?+tBxtlaO!0A(~J(AA&*IA6V_pNi$k2I@HI1n!gKSnab>8f zCQ|vIa&`e2-%JUBFi?q9d^+|117>U0NU_{E@)jzugy>1u+UtX=muADoQQwLdmEotH ze`FnByEpL7ZM51@I)9z~wNy)y{F%~c4OGZwG&^8)rE1Fs+f^r7CtsU}SC3HULWSl> za%gDK?W#H;Ydjy3^Q*3*4zpgqZoq5rQ;nfvkyXNyI>JJQ>T0CzC-Pb4fU0!UadpvI zpX{paqAxNOMhQfn%9jo&sg~6IWQ-oYBt!=~mS2P%vQ*LP$3x%Lvvbr@z1ZQAqk8C< zi&0Nma#AYzY)`{Xt3qWJsC^CF#x!2xcYe9iV*|6@VOK25b)i2g9pYU*=~&2WT-HVN zO>Ms{v1kIn52SoZ>r#RFTAjVN_)~0W`zJ3d7d=NsgFp*N*D7BURR^S;$543A^uA z0b=KDJKtddY2pfX)toi?mi@rEckKFv6_$4Nl$iPtLv=bQqD==IM>Mo1R-)cG^;_M6 zZSgkYZnU9@pHpON>^)W-_lAxZ13QB+rMkK$&~}WaF991=)L+<5?iY1bXPaxVJ0!PM zAr```_RYq(R*996sgAK2znHq%if^l8EPZcLv{0xtk0p_uV_~Xej6VhSlCBP?BDOTi z!^M{&FsEl}FYsXgNhs}f?U{RQc~YMDk?Un2#Zi1^2U@b$i<0KML7Pe2&QmGFR^SmNNX!6u=$> zOz|q`rF_O%aFX=H%n#zOe2@(m#XqXh7O2=>dsS-P$OmGuoOSIb&_F5Yk2~wK{a;GoL zNSc}2bF8^rbDkIB&%fT5sb5CoVHmSRym_bIO~OIXI3y2noH_2Ftfb;677 zsf!3!BX{oCn_%vgb_BMidpw6`j`uGSPMU}~vk+czG8mjM4|1i9!kE9zk89Q$CO!Gp z8bt1}MWy8ecP!^@{sS0_rv#ERM=jlOj&&>Uccbhh>@(rUZ)Q3>NeSfVmSv$!xSKMp zY464haSBN7p5I2A*#}6qopZEt22fivQAseB>333}ED&+#5Wf&WGP+(~(8;~ap;Q^ zC`z8k-Iu9fK@#|U->qi#TT9>gZkm=5b#%e2$)aa*f$;uy*g(fe*DcGD)UIC@tks52 zYech%Cfhrkztp%NKpWZ>_Dvm>$0R|aH$ouygier=ifg@$J66K|VVm8OoBid=++~Q{ z_3=T%(cso6H&PGoF?P<{VcPNciB@9=qvq`uSK0xqOe1`qWT8!$lc_^2s}1N?O3(yZv+B0< z3DY4~pQ_{GtCW6cjGpUNH@g;l7LF8BKVOHp-$5Nq^&0zO`nAXM?UtflOLZFSQk?(_ z&I%1oo%}v&Vcv{`X5df$xaWG}wpc2-=pn7s&5mVQyL6}Vz;vyyIZZnZqyC%px5n=P zGLSo6X z+h2cP`TQoA(9PZe4mHF&JE=RzP+H&A*SYRU8V^r8Hakyo$s# z!(fr>EbgSbPJC1R*Vw};!c3cO6+YP)ujgCqo`=tdp0>RA`R)AhJ03guC_W2EZ_Xw@yZqkJSakhOt#P;9 z-|$t$OhOqeoAzC?MV*{s{BRD+lB?_8i&wt|B)M`odP1?P5Qbiw+o(sKN6I`LpC27C zjUmQ?)>pPPirLp=NW-S4RU98y*UT5)5J2}U@~)BbQ@@C{$2z`Jr`>2^Ex3W?n&)vi zWe=f0FWZPc}I66HgN1<*$B_w}g8W9uD)8!Q)=Foig(D!3mRWmOjO8ElxmFh~7#08Lxz~Y*=>3 z81VOQA&s6o7ypWQXRprdc=L+S>KoApd!=znV*~VPXNI!F49yVAMo(m%DUBCQbI|Pt z(aCPHqWx2eJgw$;0nS2XB`|Zanbv(t`g$LBFgCJ+3KFr#=$kdDRLrzQ*=4dn;048? z5)w?#bn*-&q^F8<(_`VB>fVmpi?pok2rsECiiJ6yP2}WQ`DiPDEqW0{%WSW^hwYVv z2tOW~&Z+wn9p_`-GH*}Geor*k7^?3+mY?H!`uMl=T5|$(bM*vQrol1$o1SI<#a;(R z!SoBhmy(0T9izg!TW4x84ixaajDn{gfNPq=J9 z4Dku*^<=d2ZIS2EV34%nL>t)8r1B9_%5$l2QdX%H6V`&KylST5gTK19fMs?Zc1MGT@(H@pc;e%e^?925k@!N!% zk`J@hvQHwTaeQoF6Uk8#um94M@B8%x23fE8NfnJ*TH3d#t-hA=4yK6sx(D=0qzR|m z0vn8}*$Vh(2J=3oH=8u^7uNU^9af!@KGGkrLoHXB3iNiE5qxbEy_GLkM{E{GMaXgKAz$RMg(sh}qzg4Gx|1~k^)Qnfx=8N81>s8*Kb=$`AuZXiE(6LcE z=V)<#By7ierx%IdrDz^KCK=XXg>v*@#W#a3rQ9qK1rqR&vl4V{rV}XFU{f`zY>=&| z+ZN^km1}{I|Le7bf~RmqE^0ZIK$I*?NGQUV5@jDv)wgX|rCdE~DkPg)XG36M_+6sF z!1@y<{5u_@71=_LWQPVp&fMuINv&ST;xoVzCl6-cWt*{mrmI|%Ro9=k zNu&DSYaFe}JYXcxI`AZ|=_@y8C*?R=Fk$zw8J+#83S7s{^m1Nk+t>0|5NgCZF1j*% z!a2X6pCjR*RNgTzk(?{w2Ilg8qvn{%2h0dn)`?kZ!Qs?FYlz8fb#OuTG;o3p57)Wv zy;f%S;}u(~CDRPaZA#HivK+e4rmiT4IOLMsWL9k#Qw`XC-H!dW4p_Xf41jgoVCBho z7VP#06-EO~hd1khX|%&G%DclJfU?1^Tjq`D`#>+ISB$$8?O^T%H?g{Wy#O}!age1-JZjXz_kxUaad5Ju&cz>YP?)fR;r{INd_)= ztF>XadgTp3fQ<%w_n2h7}#%JN}J zF>VCTOr0;74jjSgpk1uk{vY{T?E=yAF%B@$Iw^F&I2d5!M}OWwX^@o^hIu36N+MC+ z_#>KGw?=5Z0L|O8yoF+80<$gUYg5$2=T->eUqz4v+i*oA! zdc$$g^Yw-kPoaDOA9*my;y&=wP-RQU*j};{bRynUnGlM-wb9%dHOQ=yaQPYJslMYJ zbgBPNeU~&zLL>_$d~L}&QvQw8gO??Ri!xEd;6tLsahiO<&$mYx3%(E5ojF!CW=K^c zGb*%7L3Z#Ptdb+l7~_?i;=jB4>jPKg%G%dw>@?d}cL(Uz>}D2a6{ z>*rqo{I#b*gE~s*9(mYg&G9rhGaQ9XW8W_tX6%XYE|$lCi1V9lUSeL1ctK)b6!_tv zmCz%vUazt7<&tG;p?1ln$RZ;rQejazPG&-JS#}Irx*&IOSRj!-SayjlP|2 zInRQqud$lDlNmTfzV;^j*J0+n}}2-bZ?fE@2h#U4C7D60G~c zVY}hT^N~ZW`eYQ;esA3i`l`dGsE`R7t^Y;on6KS)$2BmvrAKPTtHEnOQ9;(YL}f84 zh;$PvI~^acfh1GiXrj0pib*X+{W}zgN+aA^Xefc=Ez|Z4y85kxW87<=%EVjw_Z!c< z8sF2&s!@VOTAQu2xr_m@8vSE-XsGn5rcVwmQTMThN$S`Yc*u=4H7Ge#3 zH1DI(I%Ep_&Da5B0B2M&UH@p-rcE~p5bnhmWP~QyW=lI{A?rd zex&kMU3M*TcGnDGn;~5KX_%!iZbhAt2ww}5`1X8lwqrEUdUYUlUAC+i`YgqPi}5J$ z({hZeM@!l`?egoC9NL4t6%_UPD$rNZnMug!i&xKX?^n8%?Q7FGlnfgyDOALhv*KT+ zXo-N+{qkxSi?o#3HsiJtas)eOjK}Gqhp@h6*@_Y3k z#)?Xo1O7vkN=he{q~y+8a5F86^3kdls}(l#^6Uq#FErAH()Qa*->%1Fq!dMzuNq0n ze-u1v6d5ZmU-yr~HA#xXkhqnw+?WM^2VbHSK!KI1nxQc5t;l;R$BJH$a5AP^J>*PH zue2>nMY|}uqq&VQpnWt?C8_oG`E9uIezQ2N*Cp4JyJqt$Q2Ljr>fH?X8hJXc4TSLc z#MW2p)R=eSGBcfQC7DTEFDeAO0o~!8Vb&Mq!R#J9Wwg_eN6f2#~u#%G}UucqeQ)V?iPss3w zOjlZ7^`J*&))JXLw)3yKIh9M-gtM7bF#!()KfbWg9(a72oO7Yx|BPbAn7gW7YY&5H zs_@F>jf!VIA$+q*Qx>MF64CmLJESb+=SLpzu9|~_Z-yp^c#2zZMcyDTK7~K_7Bx$g zO~~|C^}38=#cV_fU+$|8;q)2E;wk>QB)O}3jNdI`Bq!#jVTrV;@c66MXVb+1HLF+J zNDB%(ire_@5>{B|+;_Rusnm794hyVltWnlT>-Od~H7tV`rgk#ph9(}y=5vte>P_0h z{<4x=ygAevyGXf`a5n}y(=@~=x>=Sw#~&CM;QyPf7e?}cg7I$k9V*08gq19SRWO`W zIc$AzK%`JOulbKj>Q|I1Nv2SZ#hr_Tzog*vy(M6$EuKyKEL~jI@bL}eLR+^C+?qTO z+`wQ6TwUkko;8I%);g)faXNI%e+H8E6~j3e{nt3xJ46FsqQDub>X{Jhpf{p~FM}AR zjVP6mMX9(KrFRogrlyh$&nVZsr!o-9MgJ_V9_%h^{zBs0jXz#{irELpq6GMMnWb0J zV+71b8}(IzKl;zzMG&1Ukd(3IzyIYDzX;-}d9nZJ#?xye|$+-?>H&CY1Way zn}M7Y;&AwdnYBSQ-~;;q8pFpDGWga>a-L$vy4HU~POac{`dQoG4&4*RG-eGP(ccSx z7O7sxL~>yy=q{4_j*N^n|o7hEAzgx z{NgV$30|k)^wjJHRagxbLcM<$*xT1k;iKkXVGm0l1^Y3E-lXX77`N9n+qLZrk0h5j zD}^9IkI0�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

NZszOxpzL!=9h;a>pAeEP2 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 literal 0 HcmV?d00001 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)