annotate _modules/functions_PhageTerm.py @ 0:69e8f12c8b31 draft

"planemo upload"
author bioit_sciensano
date Fri, 11 Mar 2022 15:06:20 +0000
parents
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1 #! /usr/bin/env python
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
2 # -*- coding: utf-8 -*-
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
3 ## @file functions_PhageTerm.py
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
4 #
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
5 # This file is a part of PhageTerm software
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
6 # A tool to determine phage termini and packaging strategy
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
7 # and other useful informations using raw sequencing reads.
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
8 # (This programs works with sequencing reads from a randomly
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
9 # sheared DNA library preparations as Illumina TruSeq paired-end or similar)
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
10 #
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
11 # ----------------------------------------------------------------------
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
12 # Copyright (C) 2017 Julian Garneau
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
13 #
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
14 # This program is free software; you can redistribute it and/or modify
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
15 # it under the terms of the GNU General Public License as published by
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
16 # the Free Software Foundation; either version 3 of the License, or
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
17 # (at your option) any later version.
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
18 # <http://www.gnu.org/licenses/gpl-3.0.html>
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
19 #
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
20 # This program is distributed in the hope that it will be useful,
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
21 # but WITHOUT ANY WARRANTY; without even the implied warranty of
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
22 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
23 # GNU General Public License for more details.
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
24 # ----------------------------------------------------------------------
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
25 #
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
26 # @author Julian Garneau <julian.garneau@usherbrooke.ca>
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
27 # @author Marc Monot <marc.monot@pasteur.fr>
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
28 # @author David Bikard <david.bikard@pasteur.fr>
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
29
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
30
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
31 ### PYTHON Module
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
32 # Base
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
33 from __future__ import print_function
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
34
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
35 import sys
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
36
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
37 import os
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
38
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
39
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
40 import matplotlib
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
41 matplotlib.use('Agg')
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
42 import matplotlib.pyplot as plt
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
43 from matplotlib import patches
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
44 from matplotlib.path import Path
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
45
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
46 import numpy as np
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
47 import pandas as pd
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
48
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
49 # String
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
50 #import cStringIO
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
51 import io
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
52
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
53 # PDF report building
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
54 import time
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
55 from reportlab.lib.enums import TA_JUSTIFY, TA_CENTER, TA_LEFT, TA_RIGHT
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
56 from reportlab.lib.pagesizes import letter, landscape
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
57 from reportlab.platypus import SimpleDocTemplate, Paragraph, Spacer, Image, Table, TableStyle, PageBreak
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
58 from reportlab.lib.styles import getSampleStyleSheet, ParagraphStyle
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
59 from reportlab.lib.units import inch
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
60 from reportlab.lib import colors
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
61 from reportlab.lib.utils import ImageReader
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
62
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
63 from _modules.utilities import reverseComplement,hybridCoverage,applyCoverage,correctEdge
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
64 from _modules.common_readsCoverage_processing import picMax
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
65 from _modules.readsCoverage_res import RCRes, RCCheckpoint_handler,RCWorkingS
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
66
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
67 ### UTILITY function
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
68 def chunks(l, n):
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
69 """Yield n successive chunks from l."""
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
70 newn = int(1.0 * len(l) / n + 0.5)
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
71 for i in range(0, n-1):
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
72 yield l[i*newn:i*newn+newn]
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
73 yield l[n*newn-newn:]
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
74
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
75 ##
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
76 # Initializes working structure for readsCoverage
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
77 def init_ws(p_res,refseq,hostseq):
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
78 gen_len = len(refseq)
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
79 host_len = len(hostseq)
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
80 k = count_line = 0
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
81 if p_res==None:
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
82 termini_coverage = np.array([gen_len*[0], gen_len*[0]])
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
83 whole_coverage = np.array([gen_len*[0], gen_len*[0]])
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
84 paired_whole_coverage = np.array([gen_len*[0], gen_len*[0]])
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
85 phage_hybrid_coverage = np.array([gen_len*[0], gen_len*[0]])
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
86 host_hybrid_coverage = np.array([host_len*[0], host_len*[0]])
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
87 host_whole_coverage = np.array([host_len*[0], host_len*[0]])
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
88 list_hybrid = np.array([0,0])
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
89 insert = []
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
90 paired_missmatch = 0
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
91 read_match = 0
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
92 else:
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
93 termini_coverage=p_res.interm_res.termini_coverage
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
94 whole_coverage=p_res.interm_res.whole_coverage
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
95 paired_whole_coverage=p_res.interm_res.paired_whole_coverage
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
96 phage_hybrid_coverage=p_res.interm_res.phage_hybrid_coverage
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
97 host_hybrid_coverage=p_res.interm_res.host_hybrid_coverage
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
98 host_whole_coverage=p_res.interm_res.host_whole_coverage
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
99 list_hybrid=p_res.interm_res.list_hybrid
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
100 insert=p_res.interm_res.insert
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
101 paired_missmatch=p_res.interm_res.paired_mismatch
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
102 k=int(p_res.interm_res.reads_tested)
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
103 #count_line=p_res.count_line-1 # do that because readsCoverage will start by incrementing it of 1
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
104 read_match=p_res.read_match
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
105 return gen_len,host_len,termini_coverage,whole_coverage,paired_whole_coverage,phage_hybrid_coverage,host_hybrid_coverage, \
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
106 host_whole_coverage,list_hybrid,insert,paired_missmatch,k,count_line,read_match #TODO refactor that.
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
107
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
108
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
109
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
110 ## COVERAGE Starting and Whole function
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
111 #
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
112 # VL: use debug mode to keep track of what reads matched and what reads didn't. For those who matched, want to know if it is at the beginning of the read or at the end or if it is its reverse complement.
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
113 # My aim is to compare the results with those of the GPU version.
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
114 def readsCoverage(inRawDArgs,refseq,inDArgs,fParms,return_dict, core_id,line_start,line_end,tParms,\
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
115 chk_handler,idx_refseq,logger=None):
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
116 """Calculate whole coverage and first base coverage. """
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
117
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
118 p_res=chk_handler.load(core_id,idx_refseq)
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
119 gen_len,host_len,termini_coverage, whole_coverage, paired_whole_coverage, phage_hybrid_coverage, host_hybrid_coverage,\
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
120 host_whole_coverage, list_hybrid, insert, paired_missmatch, k, count_line, read_match=init_ws(p_res, refseq, inDArgs.hostseq)
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
121 if logger!=None:
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
122 logger.add_rw(p_res)
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
123 test_read_seq = match = 0
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
124 # Timer
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
125 if core_id == (tParms.core-1):
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
126 sys.stdout.write(" 0.0 %")
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
127 sys.stdout.flush()
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
128
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
129 # Mapping
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
130 filin = open(inRawDArgs.fastq)
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
131 line = filin.readline()
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
132
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
133 if inRawDArgs.paired != "":
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
134 filin_paired = open(inRawDArgs.paired)
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
135 line_paired = filin_paired.readline()
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
136 count_line_tmp=0
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
137 while line and count_line!=count_line_tmp:
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
138 count_line_tmp += 1
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
139 line = filin.readline()
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
140 while line:
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
141 count_line+=1
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
142 if count_line//4 <= line_start:
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
143 test_read_seq = 0
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
144 if count_line//4 > line_end:
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
145 break
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
146
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
147 if test_read_seq:
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
148 k += 1
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
149 # Read sequence
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
150 read = line.split("\n")[0].split("\r")[0]
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
151 line = filin.readline()
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
152
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
153 if inRawDArgs.paired != "":
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
154 read_paired = line_paired.split("\n")[0].split("\r")[0]
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
155 line_paired = filin_paired.readline()
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
156
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
157 readlen = len(read)
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
158 if readlen < fParms.seed:
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
159 if logger!=None:
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
160 print("CPU rejecting read",k)
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
161 continue
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
162 corlen = readlen-fParms.seed
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
163
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
164 if logger!=None:
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
165 print("CPU processing read: ",k,read, reverseComplement(read))
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
166 logger.newRmInfo(k)
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
167
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
168 ### Match sense + (multiple, random pick one)
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
169 #print("read[:fParms.seed]=",read[:fParms.seed])
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
170 matchPplus_start, matchPplus_end = applyCoverage(read[:fParms.seed], refseq)
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
171
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
172 ## Phage
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
173 if matchPplus_start != -1:
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
174 if logger!=None:
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
175 print("CPU found: ",read[:fParms.seed])
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
176 logger.rMatch("mstart")
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
177 match = 1
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
178 termini_coverage[0][matchPplus_start]+=1
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
179 position_end = matchPplus_end+corlen
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
180
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
181 # whole coverage
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
182 for i in range(matchPplus_start, min(gen_len,position_end)):
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
183 whole_coverage[0][i]+=1
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
184
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
185 # Paired-read
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
186 if inRawDArgs.paired != "":
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
187 matchPplus_start_paired, matchPplus_end_paired = applyCoverage(reverseComplement(read_paired)[-fParms.seed:], refseq)
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
188 insert_length = matchPplus_end_paired - matchPplus_start
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
189 if insert_length > 0 and insert_length < fParms.insert_max:
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
190 position_end = matchPplus_end_paired
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
191 insert.append(insert_length)
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
192 else:
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
193 paired_missmatch += 1
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
194 # Paired hybrid
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
195 if inDArgs.hostseq != "" and matchPplus_start_paired == -1:
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
196 matchHplus_start, matchHplus_end = applyCoverage(read_paired[:fParms.seed], inDArgs.hostseq)
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
197 if matchHplus_start != -1:
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
198 list_hybrid[0] += 1
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
199 phage_hybrid_coverage[0] = hybridCoverage(read, refseq, phage_hybrid_coverage[0], matchPplus_start, min(gen_len,matchPplus_end+corlen) )
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
200 host_hybrid_coverage[0] = hybridCoverage(read_paired, inDArgs.hostseq, host_hybrid_coverage[0], matchHplus_start, min(host_len,matchHplus_end+corlen) )
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
201 else:
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
202 matchHminus_start, matchHminus_end = applyCoverage(reverseComplement(read_paired)[:fParms.seed], inDArgs.hostseq)
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
203 if matchHminus_start != -1:
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
204 list_hybrid[0] += 1
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
205 phage_hybrid_coverage[0] = hybridCoverage(read, refseq, phage_hybrid_coverage[0], matchPplus_start, min(gen_len,matchPplus_end+corlen) )
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
206 host_hybrid_coverage[1] = hybridCoverage(reverseComplement(read_paired), inDArgs.hostseq, host_hybrid_coverage[1], matchHminus_start, min(host_len,matchHminus_end+corlen) )
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
207
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
208 # Single hybrid
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
209 elif inDArgs.hostseq != "":
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
210 matchPFplus_start, matchPFplus_end = applyCoverage(read[-fParms.seed:], refseq)
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
211 if matchPFplus_start == -1:
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
212 matchHplus_start, matchHplus_end = applyCoverage(read[-fParms.seed:], inDArgs.hostseq)
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
213 if matchHplus_start != -1:
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
214 list_hybrid[0] += 1
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
215 phage_hybrid_coverage[0] = hybridCoverage(read, refseq, phage_hybrid_coverage[0], matchPplus_start, min(gen_len,matchPplus_end+corlen) )
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
216 host_hybrid_coverage[0] = hybridCoverage(read, inDArgs.hostseq, host_hybrid_coverage[0], matchHplus_start, min(host_len,matchHplus_end+corlen) )
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
217 else:
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
218 matchHminus_start, matchHminus_end = applyCoverage(reverseComplement(read)[-fParms.seed:], inDArgs.hostseq)
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
219 if matchHminus_start != -1:
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
220 list_hybrid[0] += 1
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
221 phage_hybrid_coverage[0] = hybridCoverage(read, refseq, phage_hybrid_coverage[0], matchPplus_start, min(gen_len,matchPplus_end+corlen) )
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
222 host_hybrid_coverage[1] = hybridCoverage(reverseComplement(read), inDArgs.hostseq, host_hybrid_coverage[1], matchHminus_start, min(host_len,matchHminus_end+corlen) )
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
223
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
224 # whole coverage
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
225 for i in range(matchPplus_start, min(gen_len,position_end)):
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
226 paired_whole_coverage[0][i]+=1
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
227
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
228 ### if no match sense +, then test sense -
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
229 if not match:
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
230 matchPminus_start, matchPminus_end = applyCoverage(reverseComplement(read)[-fParms.seed:], refseq)
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
231
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
232 ## Phage
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
233 if matchPminus_end != -1:
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
234 if logger != None:
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
235 print("CPU found: ",reverseComplement(read)[-fParms.seed:]," from ",reverseComplement(read))
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
236 logger.rMatch("mrcplstart")
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
237 match = 1
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
238 termini_coverage[1][matchPminus_end-1]+=1
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
239 position_start = matchPminus_start-corlen
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
240
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
241 # whole coverage
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
242 for i in range(max(0,position_start), matchPminus_end):
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
243 whole_coverage[1][i]+=1
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
244
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
245 # Paired-read
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
246 if inRawDArgs.paired != "":
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
247 matchPminus_start_paired, matchPminus_end_paired = applyCoverage(read_paired[:fParms.seed], refseq)
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
248 insert_length = matchPminus_end - matchPminus_start_paired
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
249 if insert_length > 0 and insert_length < fParms.insert_max:
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
250 position_start = matchPminus_start_paired
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
251 insert.append(insert_length)
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
252 else:
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
253 paired_missmatch += 1
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
254 # Paired hybrid
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
255 if inDArgs.hostseq != "" and matchPminus_start_paired == -1:
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
256 matchHplus_start, matchHplus_end = applyCoverage(read_paired[:fParms.seed], inDArgs.hostseq)
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
257 if matchHplus_start != -1:
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
258 list_hybrid[1] += 1
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
259 phage_hybrid_coverage[1] = hybridCoverage(reverseComplement(read), refseq, phage_hybrid_coverage[1], matchPminus_start, min(gen_len,matchPminus_end+corlen) )
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
260 host_hybrid_coverage[0] = hybridCoverage(read_paired, inDArgs.hostseq, host_hybrid_coverage[0], matchHplus_start, min(host_len,matchHplus_end+corlen) )
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
261
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
262 else:
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
263 matchHminus_start, matchHminus_end = applyCoverage(reverseComplement(read_paired)[-fParms.seed:], inDArgs.hostseq)
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
264 if matchHminus_start != -1:
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
265 list_hybrid[1] += 1
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
266 phage_hybrid_coverage[1] = hybridCoverage(reverseComplement(read), refseq, phage_hybrid_coverage[1], matchPminus_start, min(gen_len,matchPminus_end+corlen) )
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
267 host_hybrid_coverage[1] = hybridCoverage(reverseComplement(read_paired), inDArgs.hostseq, host_hybrid_coverage[1], matchHminus_start, min(host_len,matchHminus_end+corlen) )
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
268
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
269 # Single hybrid
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
270 elif inDArgs.hostseq != "":
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
271 matchPRplus_start, matchPRplus_end = applyCoverage(reverseComplement(read)[:fParms.seed], refseq)
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
272 if matchPRplus_start == -1:
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
273 matchHplus_start, matchHplus_end = applyCoverage(read[:fParms.seed], inDArgs.hostseq)
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
274 if matchHplus_start != -1:
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
275 list_hybrid[1] += 1
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
276 phage_hybrid_coverage[1] = hybridCoverage(reverseComplement(read), refseq, phage_hybrid_coverage[1], matchPminus_start, min(gen_len,matchPminus_end+corlen) )
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
277 host_hybrid_coverage[0] = hybridCoverage(read, inDArgs.hostseq, host_hybrid_coverage[0], matchHplus_start, min(host_len,matchHplus_end+corlen) )
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
278 else:
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
279 matchHminus_start, matchHminus_end = applyCoverage(reverseComplement(read)[:fParms.seed], inDArgs.hostseq)
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
280 if matchHminus_start != -1:
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
281 list_hybrid[1] += 1
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
282 phage_hybrid_coverage[1] = hybridCoverage(reverseComplement(read), refseq, phage_hybrid_coverage[1], matchPminus_start, min(gen_len,matchPminus_end+corlen) )
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
283 host_hybrid_coverage[1] = hybridCoverage(reverseComplement(read), inDArgs.hostseq, host_hybrid_coverage[1], matchHminus_start, min(host_len,matchHminus_end+corlen) )
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
284
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
285 # whole coverage
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
286 for i in range(max(0,position_start), matchPminus_end):
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
287 paired_whole_coverage[1][i]+=1
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
288
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
289 ### if no match on Phage, test Host
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
290 if not match:
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
291 matchHplus_start, matchHplus_end = applyCoverage(read[:fParms.seed], inDArgs.hostseq)
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
292 if matchHplus_start != -1:
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
293 for i in range(matchHplus_start, min(host_len,matchHplus_end+corlen)):
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
294 host_whole_coverage[0][i]+=1
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
295 else:
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
296 matchHminus_start, matchHminus_end = applyCoverage(reverseComplement(read)[-fParms.seed:], inDArgs.hostseq)
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
297 if matchHminus_end != -1:
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
298 for i in range(max(0,matchHminus_start-corlen), matchHminus_end):
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
299 host_whole_coverage[1][i]+=1
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
300
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
301 # TEST limit_coverage
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
302 read_match += match*readlen
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
303
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
304 match = test_read_seq = 0
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
305 # Timer
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
306 if core_id == (tParms.core-1):
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
307 if k%1000 == 0:
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
308 sys.stdout.write("\b\b\b\b\b\b\b\b\b%3.1f %%" %( float(read_match/gen_len) / tParms.limit_coverage * 100 ))
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
309 sys.stdout.flush()
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
310
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
311 chk_handler.check(count_line,core_id,idx_refseq,termini_coverage,whole_coverage,paired_whole_coverage,\
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
312 phage_hybrid_coverage, host_hybrid_coverage, \
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
313 host_whole_coverage,list_hybrid,insert,paired_missmatch,k,read_match) # maybe time to create checkpoint
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
314
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
315 else:
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
316 if line[0] == "@":
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
317 test_read_seq = 1
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
318
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
319 line = filin.readline()
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
320 if inRawDArgs.paired != "":
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
321 line_paired = filin_paired.readline()
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
322
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
323 # TEST limit_coverage
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
324 if (read_match/gen_len) > tParms.limit_coverage:
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
325 line = 0
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
326
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
327
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
328 if core_id == (tParms.core-1):
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
329 sys.stdout.write("\b\b\b\b\b\b\b\b\b%3.1f %%" %( 100 ))
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
330 sys.stdout.flush()
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
331
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
332 # Close file
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
333 filin.close()
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
334 if inRawDArgs.paired != "":
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
335 filin_paired.close()
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
336
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
337
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
338 # Correct EDGE coverage
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
339 if sum(termini_coverage[0]) + sum(termini_coverage[1]) == 0 and not fParms.virome:
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
340 print("WARNING: No read Match, please check your fastq file")
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
341
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
342 termini_coverage = correctEdge(termini_coverage, fParms.edge)
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
343 #paired_whole_coverage = correctEdge(whole_coverage, fParms.edge) #TODO: discuss with Julian and Max about the PE issue that Max reported.
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
344 whole_coverage = correctEdge(whole_coverage, fParms.edge)
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
345 phage_hybrid_coverage = correctEdge(phage_hybrid_coverage, fParms.edge)
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
346 if inDArgs.hostseq != "":
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
347 host_whole_coverage = correctEdge(host_whole_coverage, fParms.edge)
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
348 host_hybrid_coverage = correctEdge(host_hybrid_coverage, fParms.edge)
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
349
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
350 if return_dict!=None and tParms.dir_cov_mm==None:
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
351 return_dict[core_id] = [termini_coverage, whole_coverage, paired_whole_coverage, phage_hybrid_coverage, host_hybrid_coverage, host_whole_coverage, list_hybrid, np.array(insert), paired_missmatch, k]
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
352 elif return_dict==None and tParms.dir_cov_mm!=None:
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
353 insert = np.array(insert)
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
354 fic_name = os.path.join(tParms.dir_cov_mm, "coverage" + str(idx_refseq) + "_" + str(core_id))
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
355 res=RCRes(termini_coverage,whole_coverage,paired_whole_coverage,\
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
356 phage_hybrid_coverage, host_hybrid_coverage, \
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
357 host_whole_coverage,list_hybrid,insert,paired_missmatch,k)
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
358 res.save(fic_name)
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
359 else:
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
360 print("Error: readsCoverage must be used either with directory name or return_dict")
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
361 chk_handler.end(core_id)
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
362
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
363 return
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
364
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
365
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
366
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
367 ### IMAGE Functions
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
368 def GraphCov(termini_coverage, picMaxPlus, picMaxMinus, phagename, norm, draw, hybrid = 0):
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
369 """Produces a plot with termini coverage values."""
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
370 # Remove old plot
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
371 plt.clf()
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
372 plt.cla()
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
373 plt.close()
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
374 # Create figure
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
375 plt.figure(1)
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
376 term_len = len(termini_coverage[0])
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
377 term_range = list(range(term_len))
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
378 # MOP: not totally sure what's going on here with the plot formatting
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
379 # but I refactored this out as it was getting complicated.
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
380 # Someone who understands the code better might put in more informative var names.
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
381 zipper = list(zip(*picMaxPlus))
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
382 max_first_zipper = max(np.array(zipper[0]))
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
383 if norm == 1:
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
384 ylim = 1.2
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
385 elif hybrid == 1:
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
386 offset = 0.2*(max_first_zipper) + 1
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
387 ylim = max_first_zipper + offset
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
388 else:
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
389 offset = 0.2*(max(max(np.array(list(zip(*picMaxPlus))[0])), max(np.array(list(zip(*picMaxMinus))[0]))))
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
390 ylim = max(max(np.array(list(zip(*picMaxPlus))[0])), max(np.array(list(zip(*picMaxMinus))[0]))) + offset
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
391 # Strand (+)
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
392 plt.subplot(211)
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
393 if norm == 1:
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
394 plt.scatter(term_range,termini_coverage[0])
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
395 else:
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
396 plt.plot(termini_coverage[0],linewidth=2)
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
397 plt.title('strand (+)')
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
398 plt.ylabel('')
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
399 # Axes
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
400 axes = plt.gca()
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
401 axes.set_ylim([0,ylim])
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
402 # Maximum
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
403 x_strandplus = np.array(list(zip(*picMaxPlus))[1])
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
404 y_strandplus = np.array(list(zip(*picMaxPlus))[0])
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
405 # Plot
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
406 plt.plot(x_strandplus, y_strandplus, 'ro')
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
407 if norm == 1:
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
408 axes.axhline(y=0.5, xmin=0, xmax=x_strandplus, color='grey', linestyle='dashed', linewidth=1.5)
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
409 axes.axhline(y=1.0, xmin=0, xmax=x_strandplus, color='grey', linestyle='dashed', linewidth=1.5)
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
410 # Annotation
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
411 for i,j in zip(x_strandplus,y_strandplus):
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
412 plt.text(i+(term_len*0.03), j, str(i+1), fontsize=15, bbox=dict(boxstyle='round', facecolor='white', alpha=1))
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
413 # Plot Option
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
414 plt.margins(0.1)
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
415 plt.locator_params(axis = 'x', nbins = 10)
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
416 plt.locator_params(axis = 'y', nbins = 3)
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
417 plt.xticks(rotation=75)
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
418 # Strand (-)
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
419 plt.subplot(212)
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
420 if norm == 1:
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
421 plt.scatter(term_range,termini_coverage[1])
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
422 else:
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
423 plt.plot(termini_coverage[1],linewidth=2)
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
424 plt.title('strand (-)')
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
425 plt.ylabel('')
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
426 # Axes
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
427 if hybrid == 1:
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
428 offset = 0.2*(max_first_zipper) + 1
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
429 ylim = max_first_zipper + offset
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
430 axes = plt.gca()
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
431 axes.set_ylim([0,ylim])
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
432 # Maximum
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
433 x_strandminus = np.array(list(zip(*picMaxMinus))[1])
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
434 y_strandminus = np.array(list(zip(*picMaxMinus))[0])
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
435 # Plot
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
436 plt.plot(x_strandminus, y_strandminus, 'ro')
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
437 if norm == 1:
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
438 axes.axhline(y=0.5, xmin=0, xmax=x_strandplus, color='grey', linestyle='dashed', linewidth=1.5)
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
439 axes.axhline(y=1.0, xmin=0, xmax=x_strandplus, color='grey', linestyle='dashed', linewidth=1.5)
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
440 # Annotation
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
441 for i,j in zip(x_strandminus,y_strandminus):
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
442 plt.text(i+(term_len*0.03), j, str(i+1), fontsize=15, bbox=dict(boxstyle='round', facecolor='white', alpha=1))
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
443 # Plot Option
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
444 plt.margins(0.1)
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
445 plt.locator_params(axis = 'x', nbins = 10)
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
446 plt.locator_params(axis = 'y', nbins = 3)
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
447 plt.xticks(rotation=75)
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
448 # Plot Adjustments
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
449 plt.tight_layout()
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
450 # Draw graph
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
451 if draw:
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
452 plt.savefig("%s_TCov.png" % phagename, dpi=200)
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
453 fig = plt.figure(1)
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
454 return fig
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
455
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
456 def GraphWholeCov(added_whole_coverage, phagename, draw, P_left = "", P_right = "", pos_left = 0, pos_right = 0, graphZoom = 0, title = "WHOLE COVERAGE"):
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
457 """Produces a plot with whole coverage values."""
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
458 # Remove old plot
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
459 plt.clf()
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
460 plt.cla()
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
461 plt.close()
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
462 # Create figure
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
463 offset = 0.2*(max(added_whole_coverage))
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
464 ylim = max(added_whole_coverage) + offset
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
465 # Cumulative both strands
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
466 plt.figure(figsize=(15,8))
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
467 plt.plot(added_whole_coverage,linewidth=2)
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
468 plt.title(title)
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
469 # Axes
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
470 axes = plt.gca()
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
471 axes.set_ylim([0,ylim])
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
472 # Plot Option
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
473 plt.margins(0.1)
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
474 plt.locator_params(axis = 'x', nbins = 10)
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
475 plt.xticks(rotation=75)
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
476 # Termini vertical dashed line display
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
477 if graphZoom and isinstance(P_left, np.integer):
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
478 plt.axvline(x=pos_left, ymin=0, ymax=ylim, color='red', zorder=2, linestyle='dashed', linewidth=1)
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
479 if graphZoom and isinstance(P_right, np.integer):
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
480 plt.axvline(x=pos_right, ymin=0, ymax=ylim, color='green', zorder=2, linestyle='dashed', linewidth=1)
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
481 # Draw graph
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
482 if draw:
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
483 plt.savefig("%s_plot_WCov.png" % phagename, dpi=200)
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
484 fig = plt.figure(1)
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
485 return fig
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
486
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
487 def GraphLogo(P_class, P_left, P_right, draw):
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
488 """Produce logo."""
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
489 # Remove old plot
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
490 plt.clf()
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
491 plt.cla()
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
492 plt.close()
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
493 # Create figure
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
494 plt.figure(figsize=(10,10))
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
495 #axes = plt.add_subplot(111)
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
496 axes = plt.gca()
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
497 axes.set_frame_on(False)
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
498 axes.xaxis.set_visible(False)
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
499 axes.yaxis.set_visible(False)
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
500 # Cadre
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
501 axes.add_artist(patches.Rectangle((0.1, 0.1), 0.8, 0.8, edgecolor = 'black', fill = False, linewidth = 15))
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
502
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
503 if P_class == "Headful (pac)":
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
504 # Texte
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
505 axes.text(0.17, 0.7, r"Headful (pac)", fontsize=50, fontweight='bold')
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
506 # PAC (blue line)
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
507 axes.axhline(y=0.35, xmin=0.2, xmax=0.8, color='blue', linewidth=15)
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
508 # PAC (red line)
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
509 axes.axvline(x=0.19, ymin=0.30, ymax=0.40, color='red', linewidth=10)
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
510 axes.axvline(x=0.42, ymin=0.30, ymax=0.40, color='red', linewidth=10)
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
511 axes.axvline(x=0.65, ymin=0.30, ymax=0.40, color='red', linewidth=10)
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
512 # PAC (Arrow)
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
513 axes.axvline(x=0.19, ymin=0.45, ymax=0.55, color='red', linewidth=15)
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
514 axes.arrow(0.19, 0.55, 0.07, 0, color='red', linewidth=15, head_width=0.07, head_length=0.1)
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
515
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
516 elif P_class == "COS (5')":
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
517 # Texte
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
518 axes.text(0.3, 0.7, r"COS (5')", fontsize=50, fontweight='bold')
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
519 axes.add_artist(patches.Ellipse(xy=(0.5,0.4), width=0.5, height=0.35 , edgecolor = 'blue', fill=False, lw=15))
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
520 axes.add_artist(patches.Ellipse(xy=(0.5,0.4), width=0.58, height=0.43 , edgecolor = 'blue', fill=False, lw=15))
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
521 axes.add_artist(patches.Rectangle((0.4, 0.5), 0.20, 0.20, edgecolor = 'white', facecolor = 'white', fill = True))
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
522 axes.axhline(y=0.56, xmin=0.415, xmax=0.48, color='red', linewidth=16)
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
523 axes.axhline(y=0.601, xmin=0.52, xmax=0.585, color='red', linewidth=16)
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
524
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
525 elif P_class == "COS (3')":
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
526 # Texte
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
527 axes.text(0.3, 0.7, r"COS (3')", fontsize=50, fontweight='bold')
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
528 axes.add_artist(patches.Ellipse(xy=(0.5,0.4), width=0.5, height=0.35 , edgecolor = 'blue', fill=False, lw=15))
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
529 axes.add_artist(patches.Ellipse(xy=(0.5,0.4), width=0.58, height=0.43 , edgecolor = 'blue', fill=False, lw=15))
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
530 axes.add_artist(patches.Rectangle((0.4, 0.5), 0.20, 0.20, edgecolor = 'white', facecolor = 'white', fill = True))
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
531 axes.axhline(y=0.601, xmin=0.415, xmax=0.48, color='red', linewidth=16)
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
532 axes.axhline(y=0.56, xmin=0.52, xmax=0.585, color='red', linewidth=16)
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
533
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
534 elif P_class == "COS":
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
535 # Texte
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
536 axes.text(0.4, 0.7, r"COS", fontsize=50, fontweight='bold')
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
537 axes.add_artist(patches.Ellipse(xy=(0.5,0.4), width=0.5, height=0.35 , edgecolor = 'blue', fill=False, lw=15))
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
538 axes.add_artist(patches.Ellipse(xy=(0.5,0.4), width=0.58, height=0.43 , edgecolor = 'blue', fill=False, lw=15))
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
539 axes.add_artist(patches.Rectangle((0.4, 0.5), 0.20, 0.20, edgecolor = 'white', facecolor = 'white', fill = True))
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
540
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
541 elif P_class == "DTR (short)":
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
542 # Texte
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
543 axes.text(0.22, 0.7, r"DTR (short)", fontsize=50, fontweight='bold')
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
544
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
545 verts = [(0.5, 0.5), (0.9, 0.4), (0.9, 0.3), (0.5,0.2)]
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
546 codes = [Path.MOVETO, Path.CURVE4, Path.CURVE4, Path.CURVE4]
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
547 path = Path(verts, codes)
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
548 patch = patches.PathPatch(path, facecolor='none', edgecolor = 'blue', lw=15)
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
549 axes.add_patch(patch)
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
550
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
551 verts = [(0.5, 0.2), (0.1, 0.30), (0.1, 0.45), (0.5,0.55)]
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
552 codes = [Path.MOVETO, Path.CURVE4, Path.CURVE4, Path.CURVE4]
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
553 path = Path(verts, codes)
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
554 patch = patches.PathPatch(path, facecolor='none', edgecolor = 'blue', lw=15)
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
555 axes.add_patch(patch)
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
556
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
557 verts = [(0.5, 0.55), (0.52, 0.545), (0, 0)]
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
558 codes = [Path.MOVETO, Path.LINETO, Path.CLOSEPOLY]
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
559 path = Path(verts, codes)
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
560 patch = patches.PathPatch(path, facecolor='none', edgecolor = 'red', lw=15)
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
561 axes.add_patch(patch)
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
562
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
563 verts = [(0.56, 0.536), (0.58, 0.530), (0, 0)]
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
564 codes = [Path.MOVETO, Path.LINETO, Path.CLOSEPOLY]
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
565 path = Path(verts, codes)
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
566 patch = patches.PathPatch(path, facecolor='none', edgecolor = 'red', lw=15)
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
567 axes.add_patch(patch)
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
568
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
569 verts = [(0.5, 0.50), (0.56, 0.480), (0, 0)]
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
570 codes = [Path.MOVETO, Path.LINETO, Path.CLOSEPOLY]
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
571 path = Path(verts, codes)
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
572 patch = patches.PathPatch(path, facecolor='none', edgecolor = 'white', lw=20)
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
573 axes.add_patch(patch)
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
574
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
575 verts = [(0.5, 0.50), (0.52, 0.495), (0, 0)]
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
576 codes = [Path.MOVETO, Path.LINETO, Path.CLOSEPOLY]
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
577 path = Path(verts, codes)
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
578 patch = patches.PathPatch(path, facecolor='none', edgecolor = 'red', lw=15)
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
579 axes.add_patch(patch)
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
580
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
581 verts = [(0.56, 0.486), (0.58, 0.480), (0, 0)]
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
582 codes = [Path.MOVETO, Path.LINETO, Path.CLOSEPOLY]
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
583 path = Path(verts, codes)
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
584 patch = patches.PathPatch(path, facecolor='none', edgecolor = 'red', lw=15)
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
585 axes.add_patch(patch)
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
586
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
587 elif P_class == "DTR (long)":
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
588 # Texte
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
589 axes.text(0.25, 0.7, r"DTR (long)", fontsize=50, fontweight='bold')
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
590 verts = [(0.5, 0.5), (0.9, 0.4), (0.9, 0.3), (0.5,0.2)]
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
591 codes = [Path.MOVETO, Path.CURVE4, Path.CURVE4, Path.CURVE4]
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
592 path = Path(verts, codes)
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
593 patch = patches.PathPatch(path, facecolor='none', edgecolor = 'blue', lw=15)
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
594 axes.add_patch(patch)
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
595
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
596 verts = [(0.5, 0.2), (0.1, 0.30), (0.1, 0.45), (0.5,0.55)]
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
597 codes = [Path.MOVETO, Path.CURVE4, Path.CURVE4, Path.CURVE4]
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
598 path = Path(verts, codes)
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
599 patch = patches.PathPatch(path, facecolor='none', edgecolor = 'blue', lw=15)
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
600 axes.add_patch(patch)
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
601
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
602 verts = [(0.5, 0.55), (0.52, 0.545), (0, 0)]
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
603 codes = [Path.MOVETO, Path.LINETO, Path.CLOSEPOLY]
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
604 path = Path(verts, codes)
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
605 patch = patches.PathPatch(path, facecolor='none', edgecolor = 'red', lw=15)
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
606 axes.add_patch(patch)
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
607
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
608 verts = [(0.56, 0.536), (0.58, 0.530), (0, 0)]
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
609 codes = [Path.MOVETO, Path.LINETO, Path.CLOSEPOLY]
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
610 path = Path(verts, codes)
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
611 patch = patches.PathPatch(path, facecolor='none', edgecolor = 'red', lw=15)
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
612 axes.add_patch(patch)
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
613
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
614 verts = [(0.62, 0.521), (0.64, 0.516), (0, 0)]
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
615 codes = [Path.MOVETO, Path.LINETO, Path.CLOSEPOLY]
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
616 path = Path(verts, codes)
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
617 patch = patches.PathPatch(path, facecolor='none', edgecolor = 'red', lw=15)
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
618 axes.add_patch(patch)
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
619
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
620 verts = [(0.68, 0.507), (0.70, 0.501), (0, 0)]
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
621 codes = [Path.MOVETO, Path.LINETO, Path.CLOSEPOLY]
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
622 path = Path(verts, codes)
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
623 patch = patches.PathPatch(path, facecolor='none', edgecolor = 'red', lw=15)
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
624 axes.add_patch(patch)
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
625
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
626 verts = [(0.5, 0.50), (0.65, 0.460), (0, 0)]
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
627 codes = [Path.MOVETO, Path.LINETO, Path.CLOSEPOLY]
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
628 path = Path(verts, codes)
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
629 patch = patches.PathPatch(path, facecolor='none', edgecolor = 'white', lw=25)
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
630 axes.add_patch(patch)
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
631
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
632 verts = [(0.5, 0.50), (0.52, 0.495), (0, 0)]
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
633 codes = [Path.MOVETO, Path.LINETO, Path.CLOSEPOLY]
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
634 path = Path(verts, codes)
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
635 patch = patches.PathPatch(path, facecolor='none', edgecolor = 'red', lw=15)
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
636 axes.add_patch(patch)
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
637
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
638 verts = [(0.56, 0.486), (0.58, 0.480), (0, 0)]
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
639 codes = [Path.MOVETO, Path.LINETO, Path.CLOSEPOLY]
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
640 path = Path(verts, codes)
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
641 patch = patches.PathPatch(path, facecolor='none', edgecolor = 'red', lw=15)
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
642 axes.add_patch(patch)
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
643
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
644 verts = [(0.62, 0.471), (0.64, 0.465), (0, 0)]
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
645 codes = [Path.MOVETO, Path.LINETO, Path.CLOSEPOLY]
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
646 path = Path(verts, codes)
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
647 patch = patches.PathPatch(path, facecolor='none', edgecolor = 'red', lw=15)
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
648 axes.add_patch(patch)
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
649
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
650 verts = [(0.68, 0.456), (0.70, 0.450), (0, 0)]
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
651 codes = [Path.MOVETO, Path.LINETO, Path.CLOSEPOLY]
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
652 path = Path(verts, codes)
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
653 patch = patches.PathPatch(path, facecolor='none', edgecolor = 'red', lw=15)
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
654 axes.add_patch(patch)
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
655
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
656 elif P_class == "Mu-like":
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
657 # Texte
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
658 axes.text(0.33, 0.7, r"Mu-like", fontsize=50, fontweight='bold')
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
659 axes.axhline(y=0.43, xmin=0.3, xmax=0.7, color='blue', linewidth=15)
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
660 axes.axhline(y=0.47, xmin=0.3, xmax=0.7, color='blue', linewidth=15)
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
661 axes.axhline(y=0.43, xmin=0.7, xmax=0.8, color='green', linewidth=15)
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
662 axes.axhline(y=0.47, xmin=0.7, xmax=0.8, color='green', linewidth=15)
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
663 axes.axhline(y=0.43, xmin=0.2, xmax=0.3, color='green', linewidth=15)
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
664 axes.axhline(y=0.47, xmin=0.2, xmax=0.3, color='green', linewidth=15)
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
665
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
666 elif P_left == "Random" and P_right == "Random":
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
667 # Texte
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
668 axes.text(0.25, 0.7, r"UNKNOWN", fontsize=50, fontweight='bold')
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
669 axes.text(0.44, 0.3, r"?", fontsize=200, fontweight='bold')
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
670 else:
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
671 # Texte
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
672 axes.text(0.4, 0.7, r"NEW", fontsize=50, fontweight='bold')
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
673 axes.text(0.44, 0.3, r"!", fontsize=200, fontweight='bold')
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
674
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
675 # Draw graph
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
676 if draw:
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
677 plt.savefig("%s_logo.png" % phagename, dpi=200)
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
678 fig = plt.figure(1)
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
679 return fig
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
680
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
681
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
682 ### OUTPUT Result files
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
683 def exportDataSplit(sequence, split):
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
684 """Export sequence with split line length."""
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
685 seq = ""
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
686 for i in range((len(sequence)//split)+1):
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
687 seq += "".join(map(str,sequence[i*split:(i+1)*split])) + '\n'
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
688 return seq
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
689
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
690 def ExportStatistics(phagename, whole_coverage, paired_whole_coverage, termini_coverage, phage_plus_norm, phage_minus_norm, paired, test_run):
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
691 """Export peaks statistics."""
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
692 if test_run:
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
693 return
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
694 export = pd.DataFrame()
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
695 # ORGANIZE Column
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
696 export["Position"] = list(phage_plus_norm.sort_values("Position")["Position"])
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
697 if paired != "":
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
698 export["Coverage +"] = paired_whole_coverage[0]
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
699 else:
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
700 export["Coverage +"] = whole_coverage[0]
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
701 export["SPC +"] = termini_coverage[0]
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
702 export["T +"] = [format(x/100.0,'0.2') for x in list(phage_plus_norm.sort_values("Position")["SPC_std"])]
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
703 export["T + (close)"] = [format(x/100.0,'0.2') for x in list(phage_plus_norm.sort_values("Position")["SPC"])]
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
704 export["pvalue +"] = [format(x,'0.2e') for x in list(phage_plus_norm.sort_values("Position")["pval_gamma"])]
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
705 export["padj +"] = [format(x,'0.2e') for x in list(phage_plus_norm.sort_values("Position")["pval_gamma_adj"])]
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
706 if paired != "":
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
707 export["Coverage -"] = whole_coverage[1]
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
708 else:
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
709 export["Coverage -"] = paired_whole_coverage[1]
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
710 export["SPC -"] = termini_coverage[1]
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
711 export["T -"] = [format(x/100.0,'0.2') for x in list(phage_minus_norm.sort_values("Position")["SPC_std"])]
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
712 export["T - (close)"] = [format(x/100.0,'0.2') for x in list(phage_minus_norm.sort_values("Position")["SPC"])]
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
713 export["pvalue -"] = [format(x,'0.2e') for x in list(phage_minus_norm.sort_values("Position")["pval_gamma"])]
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
714 export["padj -"] = [format(x,'0.2e') for x in list(phage_minus_norm.sort_values("Position")["pval_gamma_adj"])]
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
715 filout = open(phagename + "_statistics.csv", "w")
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
716 filout.write(export.to_csv(index=False))
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
717 filout.close()
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
718 return
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
719
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
720 def ExportCohesiveSeq(phagename, ArtcohesiveSeq, P_seqcoh, test_run, multi = 0):
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
721 """Export cohesive sequence of COS phages."""
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
722 if test_run:
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
723 return ""
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
724 if len(ArtcohesiveSeq) < 3 and len(P_seqcoh) < 3:
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
725 return ""
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
726 if len(ArtcohesiveSeq) < 20 and len(P_seqcoh) < 20:
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
727 export_text = "cohesive sequence"
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
728 if not multi:
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
729 filout = open(phagename + "_cohesive-sequence.fasta", "w")
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
730 else:
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
731 export_text = "direct terminal repeats sequence"
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
732 if not multi:
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
733 filout = open(phagename + "_direct-term-repeats.fasta", "w")
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
734 if P_seqcoh != '':
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
735 if not multi:
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
736 filout.write(">" + phagename + " " + export_text + " (Analysis: Statistics)\n" + exportDataSplit(P_seqcoh, 60))
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
737 else:
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
738 return ">" + phagename + " " + export_text + " (Analysis: Statistics)\n" + exportDataSplit(P_seqcoh, 60)
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
739 if ArtcohesiveSeq != '':
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
740 if not multi:
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
741 filout.write(">" + phagename + " " + export_text + " (Analysis: Li)\n" + exportDataSplit(ArtcohesiveSeq, 60))
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
742 filout.close()
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
743 return ""
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
744
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
745 def ExportPhageSequence(phagename, P_left, P_right, refseq, P_orient, Redundant, Mu_like, P_class, P_seqcoh, test_run, multi = 0):
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
746 """Export the phage sequence reorganized and completed if needed."""
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
747 if test_run:
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
748 return ""
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
749 seq_out = ""
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
750 # Mu-like
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
751 if Mu_like:
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
752 if P_orient == "Forward":
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
753 if P_right != "Random":
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
754 if P_left > P_right:
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
755 seq_out = refseq[P_right-1:P_left-1]
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
756 else:
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
757 seq_out = refseq[P_right-1:] + refseq[:P_left-1]
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
758 else:
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
759 seq_out = refseq[P_left-1:] + refseq[:P_left-1]
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
760 elif P_orient == "Reverse":
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
761 if P_left != "Random":
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
762 if P_left > P_right:
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
763 seq_out = reverseComplement(refseq[P_right-1:P_left-1])
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
764 else:
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
765 seq_out = reverseComplement(refseq[P_right-1:] + reverseComplement(refseq[:P_left-1]))
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
766 else:
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
767 seq_out = reverseComplement(refseq[P_right-1:] + reverseComplement(refseq[:P_right-1]) )
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
768 # COS
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
769 elif isinstance(P_left, np.integer) and isinstance(P_right, np.integer):
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
770 # Cos or DTR
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
771 if P_class == "COS (3')":
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
772 if abs(P_left-P_right) > len(refseq)/2:
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
773 seq_out = refseq[min(P_left,P_right)-1:max(P_left,P_right)]
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
774 else:
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
775 seq_out = refseq[max(P_left,P_right)-1:] + refseq[:min(P_left,P_right)]
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
776 seq_out = seq_out + P_seqcoh
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
777 else:
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
778 # Genome
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
779 if abs(P_left-P_right) > len(refseq)/2:
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
780 seq_out = refseq[min(P_left,P_right)-1:max(P_left,P_right)]
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
781 else:
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
782 seq_out = refseq[max(P_left,P_right):] + refseq[:min(P_left,P_right)-1]
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
783 # COS 5'
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
784 if P_class == "COS (5')":
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
785 seq_out = P_seqcoh + seq_out
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
786 # DTR
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
787 else:
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
788 seq_out = P_seqcoh + seq_out + P_seqcoh
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
789 # PAC
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
790 elif isinstance(P_left, np.integer) or isinstance(P_right, np.integer):
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
791 if P_orient == "Reverse":
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
792 seq_out = reverseComplement(refseq[:P_right]) + reverseComplement(refseq[P_right:])
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
793 else:
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
794 seq_out = refseq[P_left-1:] + refseq[:P_left-1]
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
795 # Write Sequence
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
796 if multi:
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
797 return ">" + phagename + " sequence re-organized\n" + exportDataSplit(seq_out, 60)
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
798 else:
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
799 filout = open(phagename + "_sequence.fasta", "w")
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
800 filout.write(">" + phagename + " sequence re-organized\n" + exportDataSplit(seq_out, 60))
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
801 filout.close()
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
802 return ""
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
803
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
804 def CreateReport(phagename, seed, added_whole_coverage, draw, Redundant, P_left, P_right, Permuted, P_orient, termini_coverage_norm_close, picMaxPlus_norm_close, picMaxMinus_norm_close, gen_len, tot_reads, P_seqcoh, phage_plus_norm, phage_minus_norm, ArtPackmode, termini, forward, reverse, ArtOrient, ArtcohesiveSeq, termini_coverage_close, picMaxPlus_close, picMaxMinus_close, picOUT_norm_forw, picOUT_norm_rev, picOUT_forw, picOUT_rev, lost_perc, ave_whole_cov, R1, R2, R3, host, host_len, host_whole_coverage, picMaxPlus_host, picMaxMinus_host, surrounding, drop_cov, paired, insert, phage_hybrid_coverage, host_hybrid_coverage, added_paired_whole_coverage, Mu_like, test_run, P_class, P_type, P_concat, multi = 0, multiReport = 0, *args, **kwargs):
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
805 """Produce a PDF report."""
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
806 if not multi:
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
807 doc = SimpleDocTemplate("%s_PhageTerm_report.pdf" % phagename, pagesize=letter, rightMargin=10,leftMargin=10, topMargin=5, bottomMargin=10)
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
808 report=[]
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
809 else:
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
810 report = multiReport
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
811
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
812 styles=getSampleStyleSheet()
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
813 styles.add(ParagraphStyle(name='Justify', alignment=TA_JUSTIFY))
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
814 styles.add(ParagraphStyle(name='Center', alignment=TA_CENTER))
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
815 styles.add(ParagraphStyle(name='Right', alignment=TA_RIGHT))
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
816 styles.add(ParagraphStyle(name='Left', alignment=TA_LEFT))
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
817
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
818 ### GENERAL INFORMATION
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
819
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
820 # TITLE
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
821 ptext = '<b><font size=16>' + phagename + ' PhageTerm Analysis</font></b>'
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
822 report.append(Paragraph(ptext, styles["Center"]))
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
823 report.append(Spacer(1, 15))
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
824
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
825 ## ZOOMED TERMINI GRAPH AND LOGO RESULT
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
826
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
827 # LOGO SLECTION
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
828
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
829 imgdata = io.BytesIO()
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
830 fig_logo = GraphLogo(P_class, P_left, P_right, draw)
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
831 fig_logo.savefig(imgdata, format='png')
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
832 imgdata.seek(0)
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
833 IMG = ImageReader(imgdata)
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
834 IMAGE_2 = Image(IMG.fileName, width=150, height=150, kind='proportional')
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
835 IMAGE_2.hAlign = 'CENTER'
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
836
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
837 # Zoom on inter-termini seq
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
838 if isinstance(P_left, np.integer) and isinstance(P_right, np.integer) and not Mu_like:
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
839 Zoom_left = min(P_left-1000, P_right-1000)
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
840 Zoom_right = max(P_left+1000, P_right+1000)
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
841 imgdata = io.BytesIO()
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
842 if P_orient == "Reverse":
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
843 zoom_pos_left = P_right-max(0,Zoom_left)
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
844 zoom_pos_right = P_left-max(0,Zoom_left)
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
845 else:
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
846 zoom_pos_left = P_left-max(0,Zoom_left)
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
847 zoom_pos_right = P_right-max(0,Zoom_left)
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
848
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
849 figZ_whole = GraphWholeCov(added_whole_coverage[max(0,Zoom_left):min(gen_len,Zoom_right)], phagename + "-zoom", draw, P_left, P_right, zoom_pos_left, zoom_pos_right, 1, "Zoom Termini")
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
850 figZ_whole.savefig(imgdata, format='png')
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
851 imgdata.seek(0)
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
852 IMG = ImageReader(imgdata)
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
853 IMAGE = Image(IMG.fileName, width=275, height=340, kind='proportional')
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
854 IMAGE.hAlign = 'CENTER'
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
855
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
856 data = [[IMAGE, IMAGE_2]]
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
857 t=Table(data, 1*[4*inch]+1*[3*inch], 1*[2*inch], hAlign='CENTER', style=[('FONT',(0,0),(0,-1),'Helvetica-Bold'), ('FONTSIZE',(0,0),(-1,-1),10), ('ALIGN',(0,0),(-1,-1),'LEFT'),('VALIGN',(0,0),(-1,-1),'MIDDLE')])
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
858 report.append(t)
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
859 report.append(Spacer(1, 5))
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
860
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
861 elif isinstance(P_left, np.integer) and P_orient == "Forward":
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
862 imgdata = io.BytesIO()
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
863
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
864 if Mu_like:
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
865 figZL_whole = GraphWholeCov(phage_hybrid_coverage[0][max(0,P_left-1000):min(gen_len,P_left+1000)], phagename + "-zoom-left", draw, P_left, "", P_left-max(0,P_left-1000), 0, 1, "Zoom Termini")
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
866 else:
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
867 figZL_whole = GraphWholeCov(added_whole_coverage[max(0,P_left-1000):min(gen_len,P_left+1000)], phagename + "-zoom-left", draw, P_left, P_right, P_left-max(0,P_left-1000), 0, 1, "Zoom Termini")
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
868 figZL_whole.savefig(imgdata, format='png')
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
869 imgdata.seek(0)
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
870 IMG = ImageReader(imgdata)
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
871 IMAGE = Image(IMG.fileName, width=275, height=340, kind='proportional')
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
872 IMAGE.hAlign = 'CENTER'
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
873
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
874 data = [[IMAGE, IMAGE_2]]
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
875 t=Table(data, 1*[5*inch]+1*[3*inch], 1*[2*inch], hAlign='CENTER', style=[('FONT',(0,0),(0,-1),'Helvetica-Bold'), ('FONTSIZE',(0,0),(-1,-1),10), ('ALIGN',(0,0),(-1,-1),'LEFT'),('VALIGN',(0,0),(-1,-1),'MIDDLE')])
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
876 report.append(t)
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
877
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
878 elif isinstance(P_right, np.integer) and P_orient == "Reverse":
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
879 imgdata = io.BytesIO()
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
880
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
881 if Mu_like:
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
882 figZR_whole = GraphWholeCov(phage_hybrid_coverage[1][max(0,P_right-1000):min(gen_len,P_right+1000)], phagename + "-zoom-right", draw, "", P_right, 0, P_right-max(0,P_right-1000), 1, "Zoom Termini")
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
883 else:
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
884 figZR_whole = GraphWholeCov(added_whole_coverage[max(0,P_right-1000):min(gen_len,P_right+1000)], phagename + "-zoom-right", draw, P_left, P_right, 0, P_right-max(0,P_right-1000), 1, "Zoom Termini")
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
885 figZR_whole.savefig(imgdata, format='png')
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
886 imgdata.seek(0)
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
887 IMG = ImageReader(imgdata)
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
888 IMAGE = Image(IMG.fileName, width=275, height=340, kind='proportional')
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
889 IMAGE.hAlign = 'CENTER'
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
890
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
891 data = [[IMAGE, IMAGE_2]]
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
892 t=Table(data, 1*[5*inch]+1*[3*inch], 1*[2*inch], hAlign='CENTER', style=[('FONT',(0,0),(0,-1),'Helvetica-Bold'), ('FONTSIZE',(0,0),(-1,-1),10), ('ALIGN',(0,0),(-1,-1),'LEFT'),('VALIGN',(0,0),(-1,-1),'MIDDLE')])
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
893 report.append(t)
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
894 report.append(Spacer(1, 5))
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
895 else:
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
896 data = [[IMAGE_2]]
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
897 t=Table(data, 1*[1.5*inch], 1*[2*inch], hAlign='CENTER', style=[('FONT',(0,0),(0,-1),'Helvetica-Bold'), ('FONTSIZE',(0,0),(-1,-1),10), ('ALIGN',(0,0),(-1,-1),'LEFT'),('VALIGN',(0,0),(-1,-1),'MIDDLE')])
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
898 report.append(t)
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
899
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
900 # Warning coverage message
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
901 if ave_whole_cov < 50 and test_run == 0:
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
902 ptextawc = "- - - - - - - - - WARNING: Coverage (" + str(int(ave_whole_cov)) + ") is under the limit of the software, Please consider results carrefuly. - - - - - - - - -"
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
903 data = [[ptextawc]]
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
904 t=Table(data, 1*[5*inch], hAlign='LEFT', style=[('FONT',(0,0),(0,-1),'Helvetica-Bold'), ('TEXTCOLOR',(0,0),(-1,-1),'RED'), ('FONTSIZE',(0,0),(-1,-1),10), ('ALIGN',(0,0),(-1,-1),'LEFT'),('VALIGN',(0,0),(-1,-1),'MIDDLE')])
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
905 report.append(t)
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
906
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
907 ## Statistics
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
908 ptext = '<u><font size=14>PhageTerm Method</font></u>'
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
909 report.append(Paragraph(ptext, styles["Left"]))
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
910 report.append(Spacer(1, 10))
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
911
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
912 if Redundant:
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
913 Ends = "Redundant"
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
914 else:
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
915 Ends = "Non Red."
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
916
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
917 data = [["Ends", "Left (red)", "Right (green)", "Permuted", "Orientation", "Class", "Type"], [Ends, P_left, P_right, Permuted, P_orient, P_class, P_type]]
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
918 t=Table(data, 7*[1.10*inch], 2*[0.25*inch], hAlign='CENTER', style=[('FONT',(0,0),(-1,-2),'Helvetica-Bold'), ('GRID',(0,0),(-1,-1),0.5,colors.grey), ('FONTSIZE',(0,0),(-1,-1),12), ('ALIGN',(0,0),(-1,-1),'CENTER'),('VALIGN',(0,0),(-1,-1),'MIDDLE')])
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
919 report.append(t)
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
920 report.append(Spacer(1, 5))
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
921
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
922 # Seq cohesive or Direct terminal repeats
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
923 if P_seqcoh != "":
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
924 if len(P_seqcoh) < 20:
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
925 ptext = '<i><font size=12>*Sequence cohesive: ' + P_seqcoh + '</font></i>'
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
926 else:
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
927 ptext = '<i><font size=12>*Direct Terminal Repeats: ' + str(len(P_seqcoh)) + ' bp</font></i>'
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
928 report.append(Paragraph(ptext, styles["Left"]))
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
929
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
930 # Multiple / Multiple (Nextera)
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
931 if P_left == "Multiple" and P_right == "Multiple":
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
932 ptext = '<i><font size=12>*This results could be due to a non-random fragmented sequence (e.g. Nextera)</font></i>'
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
933 report.append(Paragraph(ptext, styles["Left"]))
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
934
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
935
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
936 # Concatermer
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
937 elif P_class[:7] == "Headful" and paired != "":
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
938 ptext = '<i><font size=12>*concatemer estimation: ' + str(P_concat) + '</font></i>'
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
939 report.append(Paragraph(ptext, styles["Left"]))
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
940
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
941 # Mu hybrid
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
942 elif Mu_like:
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
943 if P_orient == "Forward":
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
944 Mu_termini = P_left
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
945 else:
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
946 Mu_termini = P_right
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
947 ptext = '<i><font size=12>*Mu estimated termini position with hybrid fragments: ' + str(Mu_termini) + '</font></i>'
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
948 report.append(Paragraph(ptext, styles["Left"]))
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
949
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
950 report.append(Spacer(1, 10))
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
951
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
952 # Results
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
953 imgdata = io.BytesIO()
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
954 figP_norm = GraphCov(termini_coverage_norm_close, picMaxPlus_norm_close[:1], picMaxMinus_norm_close[:1], phagename + "-norm", 1, draw)
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
955 figP_norm.savefig(imgdata, format='png')
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
956 imgdata.seek(0)
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
957 IMG = ImageReader(imgdata)
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
958 IMAGE = Image(IMG.fileName, width=240, height=340, kind='proportional')
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
959 IMAGE.hAlign = 'CENTER'
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
960
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
961 data = [["Strand", "Location", "T", "pvalue", "T (Start. Pos. Cov. / Whole Cov.)"], ["+",phage_plus_norm["Position"][0],format(phage_plus_norm["SPC"][0]/100.0, '0.2f'),format(phage_plus_norm["pval_gamma_adj"][0], '0.2e'),IMAGE], ["",phage_plus_norm["Position"][1],format(phage_plus_norm["SPC"][1]/100.0, '0.2f'),format(phage_plus_norm["pval_gamma_adj"][1], '0.2e'),""], ["",phage_plus_norm["Position"][2],format(phage_plus_norm["SPC"][2]/100.0, '0.2f'),format(phage_plus_norm["pval_gamma_adj"][2], '0.2e'),""], ["",phage_plus_norm["Position"][3],format(phage_plus_norm["SPC"][3]/100.0, '0.2f'),format(phage_plus_norm["pval_gamma_adj"][3], '0.2e'),""], ["",phage_plus_norm["Position"][4],format(phage_plus_norm["SPC"][4]/100.0, '0.2f'),format(phage_plus_norm["pval_gamma_adj"][4], '0.2e'),""], ["-",phage_minus_norm["Position"][0],format(phage_minus_norm["SPC"][0]/100.0, '0.2f'),format(phage_minus_norm["pval_gamma_adj"][0], '0.2e'),""], ["",phage_minus_norm["Position"][1],format(phage_minus_norm["SPC"][1]/100.0, '0.2f'),format(phage_minus_norm["pval_gamma_adj"][1], '0.2e'),""], ["",phage_minus_norm["Position"][2],format(phage_minus_norm["SPC"][2]/100.0, '0.2f'),format(phage_minus_norm["pval_gamma_adj"][2], '0.2e'),""], ["",phage_minus_norm["Position"][3],format(phage_minus_norm["SPC"][3]/100.0, '0.2f'),format(phage_minus_norm["pval_gamma_adj"][3], '0.2e'),""], ["",phage_minus_norm["Position"][4],format(phage_minus_norm["SPC"][4]/100.0, '0.2f'),format(phage_minus_norm["pval_gamma_adj"][4], '0.2e'),""]]
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
962 t=Table(data, 4*[1*inch]+1*[4*inch], 11*[0.25*inch], hAlign='CENTER', style=[('SPAN',(0,1),(0,5)), ('SPAN',(0,6),(0,10)), ('SPAN',(4,1),(4,10)), ('LINEABOVE',(0,1),(4,1),1.5,colors.black), ('LINEABOVE',(0,6),(4,6),1.5,colors.grey), ('FONT',(0,0),(-1,0),'Helvetica-Bold'), ('FONT',(0,0),(0,-1),'Helvetica-Bold'), ('FONTSIZE',(0,0),(-1,-1),12), ('FONTSIZE',(0,1),(0,-1),16), ('ALIGN',(0,0),(-1,-1),'CENTER'),('VALIGN',(0,0),(-1,-1),'MIDDLE')])
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
963
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
964 report.append(t)
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
965 report.append(Spacer(1, 5))
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
966
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
967 ## Li's Analysis
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
968 ptext = '<u><font size=14>Li\'s Method</font></u>'
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
969 report.append(Paragraph(ptext, styles["Left"]))
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
970 report.append(Spacer(1, 10))
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
971
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
972 data = [["Packaging", "Termini", "Forward", "Reverse", "Orientation"], [ArtPackmode, termini, forward, reverse, ArtOrient]]
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
973 t=Table(data, 2*[1*inch] + 2*[2*inch] + 1*[1*inch], 2*[0.25*inch], hAlign='CENTER', style=[('FONT',(0,0),(-1,-2),'Helvetica-Bold'), ('GRID',(0,0),(-1,-1),0.5,colors.grey), ('FONTSIZE',(0,0),(-1,-1),12), ('ALIGN',(0,0),(-1,-1),'CENTER'),('VALIGN',(0,0),(-1,-1),'MIDDLE')])
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
974
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
975 report.append(t)
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
976 report.append(Spacer(1, 5))
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
977
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
978 # Seq cohesive or Direct terminal repeats
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
979 if len(ArtcohesiveSeq) > 2:
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
980 if len(ArtcohesiveSeq) < 20:
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
981 ptext = '<i><font size=12>*Sequence cohesive: ' + ArtcohesiveSeq + '</font></i>'
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
982 else:
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
983 ptext = '<i><font size=12>*Direct Terminal Repeats: ' + str(len(ArtcohesiveSeq)) + ' bp</font></i>'
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
984 report.append(Paragraph(ptext, styles["Left"]))
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
985 report.append(Spacer(1, 10))
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
986
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
987 # Results
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
988 imgdata = io.BytesIO()
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
989 figP = GraphCov(termini_coverage_close, picMaxPlus_close[:1], picMaxMinus_close[:1], phagename, 0, draw)
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
990 figP.savefig(imgdata, format='png')
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
991 imgdata.seek(0)
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
992 IMG = ImageReader(imgdata)
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
993 IMAGE = Image(IMG.fileName, width=240, height=340, kind='proportional')
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
994 IMAGE.hAlign = 'CENTER'
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
995
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
996 data = [["Strand", "Location", "SPC", "R", "SPC"],["+",picMaxPlus_close[0][1]+1,picMaxPlus_close[0][0],R2,IMAGE],["",picMaxPlus_close[1][1]+1,picMaxPlus_close[1][0],"-",""],["",picMaxPlus_close[2][1]+1,picMaxPlus_close[2][0],"-",""],["",picMaxPlus_close[3][1]+1,picMaxPlus_close[3][0],"-",""],["",picMaxPlus_close[4][1]+1,picMaxPlus_close[4][0],"-",""],["-",picMaxMinus_close[0][1]+1,picMaxMinus_close[0][0],R3,""], ["",picMaxMinus_close[1][1]+1,picMaxMinus_close[1][0],"-",""], ["",picMaxMinus_close[2][1]+1,picMaxMinus_close[2][0],"-",""], ["",picMaxMinus_close[3][1]+1,picMaxMinus_close[3][0],"-",""], ["",picMaxMinus_close[4][1]+1,picMaxMinus_close[4][0],"-",""]]
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
997 t=Table(data, 4*[1*inch]+1*[4*inch], 11*[0.25*inch], hAlign='CENTER', style=[('SPAN',(0,1),(0,5)), ('SPAN',(0,6),(0,10)), ('SPAN',(4,1),(4,10)), ('LINEABOVE',(0,1),(4,1),1.5,colors.black), ('LINEABOVE',(0,6),(4,6),1.5,colors.grey), ('FONT',(0,0),(-1,0),'Helvetica-Bold'), ('FONT',(0,0),(0,-1),'Helvetica-Bold'), ('FONTSIZE',(0,0),(-1,-1),12), ('FONTSIZE',(0,1),(0,-1),16), ('ALIGN',(0,0),(-1,-1),'CENTER'),('VALIGN',(0,0),(-1,-1),'MIDDLE')])
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
998
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
999 report.append(t)
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1000
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1001
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1002 # NEW PAGE
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1003 report.append(PageBreak())
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1004
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1005 # HOST RESULTS
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1006 if host != "":
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1007 # Host coverage
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1008 ptext = '<u><font size=14>Host Analysis</font></u>'
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1009 report.append(Paragraph(ptext, styles["Left"]))
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1010 report.append(Spacer(1, 10))
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1011
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1012 ptext = '<i><font size=10></font>Reads that does not match on the phage genome are tested on the host genome. These reads could come from Phage transduction but also Host DNA contamination.</i>'
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1013 report.append(Paragraph(ptext, styles["Justify"]))
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1014 report.append(Spacer(1, 5))
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1015
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1016 data = [["Host Genome", str(host_len) + " bp"]]
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1017 t=Table(data, 2*[2.25*inch], hAlign='LEFT', style=[('FONT',(0,0),(0,0),'Helvetica-Bold'), ('FONTSIZE',(0,0),(-1,-1),12), ('ALIGN',(0,0),(-1,-1),'LEFT') ,('VALIGN',(0,0),(-1,-1),'MIDDLE')])
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1018
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1019 report.append(t)
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1020 report.append(Spacer(1, 5))
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1021
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1022 imgdata = io.BytesIO()
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1023
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1024 figH = GraphCov(host_whole_coverage, picMaxPlus_host[:1], picMaxMinus_host[:1], "", 0, draw)
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1025 figH.savefig(imgdata, format='png')
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1026 imgdata.seek(0)
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1027 IMG = ImageReader(imgdata)
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1028 IMAGE = Image(IMG.fileName, width=240, height=340, kind='proportional')
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1029 IMAGE.hAlign = 'CENTER'
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1030
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1031 data = [["Strand", "Location", "Coverage", "-", "Whole Coverage"],["+",picMaxPlus_host[0][1]+1,picMaxPlus_host[0][0],"-",IMAGE],["",picMaxPlus_host[1][1]+1,picMaxPlus_host[1][0],"-",""],["",picMaxPlus_host[2][1]+1,picMaxPlus_host[2][0],"-",""],["",picMaxPlus_host[3][1]+1,picMaxPlus_host[3][0],"-",""],["",picMaxPlus_host[4][1]+1,picMaxPlus_host[4][0],"-",""],["-",picMaxMinus_host[0][1]+1,picMaxMinus_host[0][0],"-",""], ["",picMaxMinus_host[1][1]+1,picMaxMinus_host[1][0],"-",""], ["",picMaxMinus_host[2][1]+1,picMaxMinus_host[2][0],"-",""], ["",picMaxMinus_host[3][1]+1,picMaxMinus_host[3][0],"-",""], ["",picMaxMinus_host[4][1]+1,picMaxMinus_host[4][0],"-",""]]
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1032 t=Table(data, 4*[1*inch]+1*[4*inch], 11*[0.25*inch], hAlign='CENTER', style=[('SPAN',(0,1),(0,5)), ('SPAN',(0,6),(0,10)), ('SPAN',(4,1),(4,10)), ('LINEABOVE',(0,1),(4,1),1.5,colors.black), ('LINEABOVE',(0,6),(4,6),1.5,colors.grey), ('FONT',(0,0),(-1,0),'Helvetica-Bold'), ('FONT',(0,0),(0,-1),'Helvetica-Bold'), ('FONTSIZE',(0,0),(-1,-1),12), ('FONTSIZE',(0,1),(0,-1),16), ('ALIGN',(0,0),(-1,-1),'CENTER'),('VALIGN',(0,0),(-1,-1),'MIDDLE')])
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1033
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1034 report.append(t)
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1035 report.append(Spacer(1, 10))
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1036
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1037 # Hybrid coverage
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1038 ptext = '<u><font size=14>Hybrid Analysis</font></u>'
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1039 report.append(Paragraph(ptext, styles["Left"]))
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1040 report.append(Spacer(1, 10))
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1041
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1042 ptext = '<i><font size=10></font>Hybrid reads with one edge on the phage genome and the other edge on the host genome are detected. Phage Hybrid Coverages are used to detect Mu-like packaging mode. Host Hybrid Coverages could be used to detect Phage Transduction but also genome integration location of prophages.</i>'
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1043 report.append(Paragraph(ptext, styles["Justify"]))
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1044 report.append(Spacer(1, 5))
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1045
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1046 picMaxPlus_phage_hybrid, picMaxMinus_phage_hybrid, TopFreqH_phage_hybrid = picMax(phage_hybrid_coverage, 5)
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1047 picMaxPlus_host_hybrid, picMaxMinus_host_hybrid, TopFreqH_host_hybrid = picMax(host_hybrid_coverage, 5)
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1048
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1049 imgdataPH = io.BytesIO()
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1050 figPH = GraphCov(phage_hybrid_coverage, picMaxPlus_phage_hybrid[:1], picMaxMinus_phage_hybrid[:1], "", 0, draw, 1)
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1051 figPH.savefig(imgdataPH, format='png')
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1052 imgdataPH.seek(0)
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1053 IMGPH = ImageReader(imgdataPH)
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1054 IMAGEPH = Image(IMGPH.fileName, width=240, height=340, kind='proportional')
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1055 IMAGEPH.hAlign = 'CENTER'
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1056
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1057
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1058 imgdataHH = io.BytesIO()
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1059 figHH = GraphCov(host_hybrid_coverage, picMaxPlus_host_hybrid[:1], picMaxMinus_host_hybrid[:1], "", 0, draw, 1)
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1060 figHH.savefig(imgdataHH, format='png')
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1061 imgdataHH.seek(0)
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1062 IMGHH = ImageReader(imgdataHH)
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1063 IMAGEHH = Image(IMGHH.fileName, width=240, height=340, kind='proportional')
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1064 IMAGEHH.hAlign = 'CENTER'
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1065
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1066 data = [["Phage Hybrid Coverage", "Host Hybrid Coverage"],[IMAGEPH,IMAGEHH]]
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1067 t=Table(data, 2*[4*inch], 1*[0.25*inch]+1*[2.5*inch], hAlign='CENTER', style=[('LINEABOVE',(0,1),(1,1),1.5,colors.black),('FONT',(0,0),(-1,-1),'Helvetica-Bold'),('FONTSIZE',(0,0),(-1,-1),12), ('ALIGN',(0,0),(-1,-1),'CENTER'),('VALIGN',(0,0),(-1,-1),'MIDDLE')])
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1068
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1069 report.append(t)
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1070 report.append(Spacer(1, 10))
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1071
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1072 # NEW PAGE
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1073 report.append(PageBreak())
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1074
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1075
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1076 # DETAILED RESULTS
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1077 ptext = '<u><font size=14>Analysis Methodology</font></u>'
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1078 report.append(Paragraph(ptext, styles["Left"]))
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1079 report.append(Spacer(1, 10))
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1080
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1081 ptext = '<i><font size=10>PhageTerm software uses raw reads of a phage sequenced with a sequencing technology using random fragmentation and its genomic reference sequence to determine the termini position. The process starts with the alignment of NGS reads to the phage genome in order to calculate the starting position coverage (SPC), where a hit is given only to the position of the first base in a successfully aligned read (the alignment algorithm uses the lenght of the seed (default: 20) for mapping and does not accept gap or missmatch to speed up the process). Then the program apply 2 distinct scoring methods: i) a statistical approach based on the Gamma law; and ii) a method derived from LI and al. 2014 paper.</font></i>'
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1082 report.append(Paragraph(ptext, styles["Justify"]))
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1083 report.append(Spacer(1, 5))
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1084
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1085
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1086 # INFORMATION
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1087 ptext = '<u><font size=12>General set-up and mapping informations</font></u>'
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1088 report.append(Paragraph(ptext, styles["Justify"]))
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1089 report.append(Spacer(1, 5))
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1090
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1091
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1092 imgdata = io.BytesIO()
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1093
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1094 if paired != "":
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1095 figP_whole = GraphWholeCov(added_paired_whole_coverage, phagename, draw)
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1096 else:
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1097 figP_whole = GraphWholeCov(added_whole_coverage, phagename, draw)
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1098 figP_whole.savefig(imgdata, format='png')
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1099 imgdata.seek(0)
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1100 IMG = ImageReader(imgdata)
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1101 IMAGE = Image(IMG.fileName, width=275, height=340, kind='proportional')
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1102 IMAGE.hAlign = 'CENTER'
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1103
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1104 if host == "":
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1105 host_analysis = "No"
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1106 else:
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1107 host_analysis = "Yes"
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1108
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1109 if paired == "":
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1110 sequencing_reads = "Single-ends Reads"
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1111 else:
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1112 sequencing_reads = "Paired-ends Reads"
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1113
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1114 data = [["Phage Genome ", str(gen_len) + " bp",IMAGE], ["Sequencing Reads", int(tot_reads),""], ["Mapping Reads", str(int(100 - lost_perc)) + " %",""], ["OPTIONS","",""], ["Mapping Seed",seed,""], ["Surrounding",surrounding,""], ["Host Analysis ", host_analysis,""], ["","",""]]
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1115 t=Table(data, 1*[2.25*inch]+1*[1.80*inch]+1*[4*inch], 8*[0.25*inch], hAlign='LEFT', style=[('SPAN',(2,0),(2,-1)), ('FONT',(0,0),(0,2),'Helvetica-Bold'), ('FONT',(0,3),(0,3),'Helvetica-Oblique'), ('FONT',(0,4),(1,-1),'Helvetica-Oblique'), ('FONT',(2,0),(2,0),'Helvetica-Bold'), ('FONTSIZE',(0,0),(-1,-1),12), ('ALIGN',(0,0),(-1,-2),'LEFT'), ('ALIGN',(2,0),(2,-1),'CENTER') ,('VALIGN',(0,0),(-1,-1),'MIDDLE')])
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1116
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1117 report.append(t)
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1118 report.append(Spacer(1, 5))
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1119
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1120
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1121 # Img highest peaks of each side even if no significative
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1122 ptext = '<u><font size=12>Highest peak of each side coverage graphics</font></u>'
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1123 report.append(Paragraph(ptext, styles["Justify"]))
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1124 report.append(Spacer(1, 5))
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1125
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1126
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1127 imgdata = io.BytesIO()
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1128
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1129 if Mu_like and isinstance(P_left, np.integer):
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1130 figHL_whole = GraphWholeCov(phage_hybrid_coverage[0][max(0,P_left-1000):min(gen_len,P_left+1000)], phagename + "-zoom-left", draw, P_left, "", P_left-max(0,P_left-1000), 0, 1, "Zoom Termini")
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1131 else:
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1132 P_left = phage_plus_norm["Position"][0]
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1133 figHL_whole = GraphWholeCov(added_whole_coverage[max(0,P_left-1000):min(gen_len,P_left+1000)], phagename + "-zoom-left", draw, P_left, "", P_left-max(0,P_left-1000), 0, 1, "Zoom Termini")
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1134 figHL_whole.savefig(imgdata, format='png')
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1135 imgdata.seek(0)
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1136 IMG = ImageReader(imgdata)
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1137 IMAGE = Image(IMG.fileName, width=275, height=340, kind='proportional')
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1138 IMAGE.hAlign = 'CENTER'
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1139
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1140 imgdata2 = io.BytesIO()
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1141
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1142 if Mu_like and isinstance(P_right, np.integer):
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1143 figHR_whole = GraphWholeCov(phage_hybrid_coverage[1][max(0,P_right-1000):min(gen_len,P_right+1000)], phagename + "-zoom-right", draw, "", P_right, 0, P_right-max(0,P_right-1000), 1, "Zoom Termini")
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1144 else:
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1145 P_right = phage_minus_norm["Position"][0]
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1146 figHR_whole = GraphWholeCov(added_whole_coverage[max(0,P_right-1000):min(gen_len,P_right+1000)], phagename + "-zoom-right", draw, "", P_right, 0, P_right-max(0,P_right-1000), 1, "Zoom Termini")
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1147 figHR_whole.savefig(imgdata2, format='png')
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1148 imgdata2.seek(0)
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1149 IMG2 = ImageReader(imgdata2)
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1150 IMAGE2 = Image(IMG2.fileName, width=275, height=340, kind='proportional')
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1151 IMAGE2.hAlign = 'CENTER'
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1152
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1153 if Mu_like:
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1154 data = [["Hybrid Coverage Zoom (Left)", "Hybrid Coverage Zoom (Right)"],[IMAGE,IMAGE2]]
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1155 else:
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1156 data = [["Whole Coverage Zoom (Left)", "Whole Coverage Zoom (Right)"],[IMAGE,IMAGE2]]
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1157 t=Table(data, 2*[4*inch], 1*[0.25*inch]+1*[2*inch], hAlign='CENTER', style=[('LINEABOVE',(0,1),(1,1),1.5,colors.black),('FONT',(0,0),(-1,-1),'Helvetica-Bold'),('FONTSIZE',(0,0),(-1,-1),12), ('ALIGN',(0,0),(-1,-1),'CENTER'),('VALIGN',(0,0),(-1,-1),'MIDDLE')])
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1158 report.append(t)
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1159
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1160 # Controls
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1161 ptext = '<u><font size=12>General controls information</font></u>'
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1162 report.append(Paragraph(ptext, styles["Justify"]))
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1163 report.append(Spacer(1, 5))
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1164
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1165 if ave_whole_cov < 50:
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1166 ptextawc = "WARNING: Under the limit of the software (50)"
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1167 elif ave_whole_cov < 200:
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1168 ptextawc = "WARNING: Low (<200), Li's method could not be reliable"
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1169 else:
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1170 ptextawc = "OK"
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1171
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1172 data = [["Whole genome coverage", int(ave_whole_cov), ptextawc]]
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1173 t=Table(data, 1*[3.5*inch]+1*[1*inch]+1*[3.5*inch], hAlign='LEFT', style=[('FONT',(0,0),(0,-1),'Helvetica-Bold'), ('FONTSIZE',(0,0),(-1,-1),10), ('ALIGN',(0,0),(-1,-1),'LEFT'),('VALIGN',(0,0),(-1,-1),'MIDDLE')])
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1174 report.append(t)
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1175
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1176 drop_perc = len([i for i in added_whole_coverage if i < (ave_whole_cov/2)]) / float(len(added_whole_coverage))
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1177 if drop_perc < 1:
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1178 ptextdp = "OK"
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1179 else:
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1180 ptextdp = "Check your genome reference"
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1181
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1182 data = [["Weak genome coverage", "%.1f %%" %drop_perc, ptextdp]]
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1183 t=Table(data, 1*[3.5*inch]+1*[1*inch]+1*[4*inch], hAlign='LEFT', style=[('FONT',(0,0),(0,-1),'Helvetica-Bold'), ('FONTSIZE',(0,0),(-1,-1),10), ('ALIGN',(0,0),(-1,-1),'LEFT'),('VALIGN',(0,0),(-1,-1),'MIDDLE')])
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1184 report.append(t)
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1185
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1186 if paired != "":
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1187 if len(insert) != 0:
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1188 insert_mean = sum(insert)/len(insert)
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1189 else:
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1190 insert_mean = "-"
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1191 data = [["Insert mean size", insert_mean, "Mean insert estimated from paired-end reads"]]
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1192 t=Table(data, 1*[3.5*inch]+1*[1*inch]+1*[4*inch], hAlign='LEFT', style=[('FONT',(0,0),(0,-1),'Helvetica-Bold'), ('FONTSIZE',(0,0),(-1,-1),10), ('ALIGN',(0,0),(-1,-1),'LEFT'),('VALIGN',(0,0),(-1,-1),'MIDDLE')])
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1193 report.append(t)
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1194
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1195 if lost_perc > 25:
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1196 ptextlp = "Warning: high percentage of reads lost"
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1197 else:
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1198 ptextlp = "OK"
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1199
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1200 data = [["Reads lost during alignment", "%.1f %%" %lost_perc, ptextlp]]
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1201 t=Table(data, 1*[3.5*inch]+1*[1*inch]+1*[4*inch], hAlign='LEFT', style=[('FONT',(0,0),(0,-1),'Helvetica-Bold'), ('FONTSIZE',(0,0),(-1,-1),10), ('ALIGN',(0,0),(-1,-1),'LEFT'),('VALIGN',(0,0),(-1,-1),'MIDDLE')])
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1202 report.append(t)
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1203 report.append(Spacer(1, 5))
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1204
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1205 # DETAILED SCORE
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1206 ptext = '<b><font size=14>i) PhageTerm method</font></b>'
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1207 report.append(Paragraph(ptext, styles["Left"]))
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1208 report.append(Spacer(1, 10))
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1209
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1210 ptext = '<i><font size=10>Reads are mapped on the reference to determine the starting position coverage (SPC) as well as the coverage (COV) in each orientation. These values are then used to compute the variable T = SPC/COV. The average value of T at positions along the genome that are not termini is expected to be 1/F, where F is the average fragment size. For the termini that depends of the packaging mode. Cos Phages: no reads should start before the terminus and therefore T=1. DTR phages: for N phages present in the sample, there should be N fragments that start at the terminus and N fragments that cover the edge of the repeat on the other side of the genome as a results T is expected to be 0.5. Pac phages: for N phages in the sample, there should be N/C fragments starting at the pac site, where C is the number of phage genome copies per concatemer. In the same sample N fragments should cover the pac site position, T is expected to be (N/C)/(N+N/C) = 1/(1+C). To assess whether the number of reads starting at a given position along the genome can be considered a significant outlier, PhageTerm first segments the genome according to coverage using a regression tree. A gamma distribution is fitted to SPC for each segment and an adjusted p-value is computed for each position. If several significant peaks are detected within a small sequence window (default: 20bp), their X values are merged.</font></i>'
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1211 report.append(Paragraph(ptext, styles["Justify"]))
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1212 report.append(Spacer(1, 5))
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1213
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1214 # surrounding
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1215 if surrounding > 0:
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1216 data = [["Nearby Termini (Forward / Reverse)", str(len(picOUT_norm_forw)-1) + " / " + str(len(picOUT_norm_rev)-1), "Peaks localized %s bases around the maximum" %surrounding]]
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1217 t=Table(data, 1*[3.5*inch]+1*[1*inch]+1*[4*inch], 1*[0.25*inch], hAlign='LEFT', style=[('FONT',(0,0),(0,-1),'Helvetica-Bold'), ('FONTSIZE',(0,0),(-1,-1),10), ('ALIGN',(0,0),(-1,-1),'LEFT'),('VALIGN',(0,0),(-1,-1),'MIDDLE')])
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1218 report.append(t)
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1219
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1220 report.append(Spacer(1, 10))
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1221
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1222 # Li's Method
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1223 if not multi:
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1224 ptext = '<b><font size=14>ii) Li\'s method</font></b>'
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1225 report.append(Paragraph(ptext, styles["Left"]))
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1226 report.append(Spacer(1, 10))
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1227
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1228 ptext = '<i><font size=10>The second approach is based on the calculation and interpretation of three specific ratios R1, R2 and R3 as suggested in a previous publication from Li et al. 2014. The first ratio, is calculated as follow: the highest starting frequency found on either the forward or reverse strands is divided by the average starting frequency, R1 = (highest frequency/average frequency). Li’s et al. have proposed three possible interpretation of the R1 ratio. First, if R1 < 30, the phage genome does not have any termini, and is either circular or completely permuted and terminally redundant. The second interpretation for R1 is when 30 ≤ R1 ≥ 100, suggesting the presence of preferred termini with terminal redundancy and apparition of partially circular permutations. At last if R1 > 100 that is an indication that at least one fixed termini is present with terminase recognizing a specific site. The two other ratios are R2 and R3 and the calculation is done in a similar manner. R2 is calculated using the highest two frequencies (T1-F and T2-F) found on the forward strand and R3 is calculated using the highest two frequencies (T1-R and T2-R) found on the reverse strand. To calculate these two ratios, we divide the highest frequency by the second highest frequency T2. So R2 = (T1-F / T2-F) and R3 = (T1-R / T2-R). These two ratios are used to analyze termini characteristics on each strand taken individually. Li et al. suggested two possible interpretations for R2 and R3 ratios combine to R1. When R1 < 30 and R2 < 3, we either have no obvious termini on the forward strand, or we have multiple preferred termini on the forward strand, if 30 ≤ R1 ≤ 100. If R2 > 3, it is suggested that there is an obvious unique termini on the forward strand. The same reasoning is applicable for the result of R3. Combining the results for ratios found with this approach, it is possible to make the first prediction for the viral packaging mode of the analyzed phage. A unique obvious termini present at both ends (both R2 and R3 > 3) reveals the presence of a COS mode of packaging. The headful mode of packaging PAC is concluded when we have a single obvious termini only on one strand.</font></i>'
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1229 report.append(Paragraph(ptext, styles["Justify"]))
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1230 report.append(Spacer(1, 5))
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1231
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1232 if surrounding > 0:
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1233 data = [["Nearby Termini (Forward / Reverse)", str(len(picOUT_forw)-1) + " / " + str(len(picOUT_rev)-1), "Peaks localized %s bases around the maximum" %surrounding]]
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1234 t=Table(data, 1*[3.5*inch]+1*[1*inch]+1*[3.5*inch], 1*[0.25*inch], hAlign='LEFT', style=[('FONT',(0,0),(0,-1),'Helvetica-Bold'), ('FONTSIZE',(0,0),(-1,-1),10), ('ALIGN',(0,0),(-1,-1),'LEFT'),('VALIGN',(0,0),(-1,-1),'MIDDLE')])
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1235 report.append(t)
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1236 report.append(Spacer(1, 5))
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1237
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1238 if R1 > 100:
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1239 ptextR1 = "At least one fixed termini is present with terminase recognizing a specific site."
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1240 elif R1 > 30:
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1241 ptextR1 = "Presence of preferred termini with terminal redundancy and apparition of partially circular permutations."
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1242 else:
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1243 ptextR1 = "Phage genome does not have any termini, and is either circular or completely permuted and terminally redundant."
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1244
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1245 data = [["R1 - highest freq./average freq.", int(R1), Paragraph(ptextR1, styles["Justify"])]]
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1246 t=Table(data, 1*[3.5*inch]+1*[1*inch]+1*[3.5*inch], 1*[0.25*inch], hAlign='LEFT', style=[('FONT',(0,0),(0,-1),'Helvetica-Bold'), ('FONTSIZE',(0,0),(-1,-1),10), ('ALIGN',(0,0),(-1,-1),'LEFT'),('VALIGN',(0,0),(-1,-1),'MIDDLE')])
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1247 report.append(t)
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1248 report.append(Spacer(1, 5))
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1249
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1250 if R2 < 3 and R1 < 30:
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1251 ptextR2 = "No obvious termini on the forward strand."
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1252 elif R2 < 3 :
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1253 ptextR2 = "Multiple preferred termini on the forward strand."
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1254 elif R2 >= 3:
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1255 ptextR2 = "Unique termini on the forward strand."
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1256
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1257 data = [["R2 Forw - highest freq./second freq.", int(R2), Paragraph(ptextR2, styles["Justify"])]]
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1258 t=Table(data, 1*[3.5*inch]+1*[1*inch]+1*[3.5*inch], 1*[0.25*inch], hAlign='LEFT', style=[('FONT',(0,0),(0,-1),'Helvetica-Bold'), ('FONTSIZE',(0,0),(-1,-1),10), ('ALIGN',(0,0),(-1,-1),'LEFT'),('VALIGN',(0,0),(-1,-1),'MIDDLE')])
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1259 report.append(t)
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1260 report.append(Spacer(1, 5))
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1261
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1262 if R3 < 3 and R1 < 30:
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1263 ptextR3 = "No obvious termini on the reverse strand."
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1264 elif R3 < 3 :
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1265 ptextR3 = "Multiple preferred termini on the reverse strand."
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1266 elif R3 >= 3:
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1267 ptextR3 = "Unique termini on the reverse strand."
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1268
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1269 data = [["R3 Rev - highest freq./second freq.", int(R3), Paragraph(ptextR3, styles["Justify"])]]
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1270 t=Table(data, 1*[3.5*inch]+1*[1*inch]+1*[3.5*inch], 1*[0.25*inch], hAlign='LEFT', style=[('FONT',(0,0),(0,-1),'Helvetica-Bold'), ('FONTSIZE',(0,0),(-1,-1),10), ('ALIGN',(0,0),(-1,-1),'LEFT'),('VALIGN',(0,0),(-1,-1),'MIDDLE')])
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1271 report.append(t)
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1272
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1273 # CREDITS and TIME
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1274 ptext = '<font size=8>%s</font>' % "Please cite: Sci. Rep. DOI 10.1038/s41598-017-07910-5"
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1275 report.append(Paragraph(ptext, styles["Center"]))
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1276 ptext = '<font size=8>%s</font>' % "Garneau, Depardieu, Fortier, Bikard and Monot. PhageTerm: Determining Bacteriophage Termini and Packaging using NGS data."
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1277 report.append(Paragraph(ptext, styles["Center"]))
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1278 ptext = '<font size=8>Report generated : %s</font>' % time.ctime()
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1279 report.append(Paragraph(ptext, styles["Center"]))
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1280
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1281 # CREATE PDF
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1282 if not multi:
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1283 doc.build(report)
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1284 else:
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1285 report.append(PageBreak())
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1286 return report
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1287 return
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1288
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1289 def SummaryReport(phagename, DR, no_match):
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1290 """ Create first page of multi reports."""
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1291 report=[]
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1292 styles=getSampleStyleSheet()
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1293 styles.add(ParagraphStyle(name='Justify', alignment=TA_JUSTIFY))
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1294 styles.add(ParagraphStyle(name='Center', alignment=TA_CENTER))
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1295 styles.add(ParagraphStyle(name='Right', alignment=TA_RIGHT))
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1296 styles.add(ParagraphStyle(name='Left', alignment=TA_LEFT))
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1297
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1298 ### GENERAL INFORMATION
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1299
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1300 # TITLE
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1301 ptext = '<b><font size=16>' + phagename + ' PhageTerm Analysis</font></b>'
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1302 report.append(Paragraph(ptext, styles["Center"]))
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1303 report.append(Spacer(1, 15))
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1304
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1305 # No Match
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1306 if len(no_match) > 0:
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1307 ptext = '<u><font size=14>No Match ('+ str(len(no_match)) +')</font></u>'
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1308 report.append(Paragraph(ptext, styles["Left"]))
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1309 report.append(Spacer(1, 10))
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1310
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1311 data = [["Name", "Class", "Left", "Right", "Type", "Orient", "Coverage", "Comments"]]
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1312 t=Table(data, 2*[1.50*inch]+5*[0.80*inch]+1*[1.25*inch], 1*[0.25*inch], hAlign='CENTER', style=[('FONT',(0,0),(-1,-1),'Helvetica-Bold'), ('GRID',(0,0),(-1,-1),0.5,colors.grey), ('FONTSIZE',(0,0),(-1,-1),12), ('ALIGN',(0,0),(-1,-1),'CENTER'),('VALIGN',(0,0),(-1,-1),'MIDDLE')])
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1313 report.append(t)
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1314
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1315 for contig in no_match:
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1316 P_comments = "No read match"
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1317
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1318 data = [[contig, "-", "-", "-", "-", "-", 0, P_comments]]
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1319 t=Table(data, 2*[1.50*inch]+5*[0.80*inch]+1*[1.25*inch], 1*[0.25*inch], hAlign='CENTER', style=[('FONT',(0,0),(-1,-2),'Helvetica-Bold'), ('GRID',(0,0),(-1,-1),0.5,colors.grey), ('FONTSIZE',(0,0),(-1,-1),12), ('ALIGN',(0,0),(-1,-1),'CENTER'),('VALIGN',(0,0),(-1,-1),'MIDDLE')])
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1320 report.append(t)
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1321
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1322 # COS Phages
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1323 count_COS = len(DR["COS (3')"]) + len(DR["COS (5')"]) + len(DR["COS"])
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1324 ptext = '<u><font size=14>COS Phages ('+ str(count_COS) +')</font></u>'
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1325 report.append(Paragraph(ptext, styles["Left"]))
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1326 report.append(Spacer(1, 10))
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1327
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1328 if count_COS != 0:
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1329
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1330 data = [["Name", "Class", "Left", "Right", "Type", "Orient", "Coverage", "Comments"]]
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1331 t=Table(data, 2*[1.50*inch]+5*[0.80*inch]+1*[1.25*inch], 1*[0.25*inch], hAlign='CENTER', style=[('FONT',(0,0),(-1,-1),'Helvetica-Bold'), ('GRID',(0,0),(-1,-1),0.5,colors.grey), ('FONTSIZE',(0,0),(-1,-1),12), ('ALIGN',(0,0),(-1,-1),'CENTER'),('VALIGN',(0,0),(-1,-1),'MIDDLE')])
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1332 report.append(t)
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1333
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1334 for DC in DR["COS (3')"]:
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1335 P_comments = ""
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1336 if int(DR["COS (3')"][DC]["ave_whole_cov"]) < 50:
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1337 P_comments = "Low coverage"
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1338
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1339 data = [[DC, DR["COS (3')"][DC]["P_class"], DR["COS (3')"][DC]["P_left"], DR["COS (3')"][DC]["P_right"], DR["COS (3')"][DC]["P_type"], DR["COS (3')"][DC]["P_orient"], int(DR["COS (3')"][DC]["ave_whole_cov"]), P_comments]]
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1340 t=Table(data, 2*[1.50*inch]+5*[0.80*inch]+1*[1.25*inch], 1*[0.25*inch], hAlign='CENTER', style=[('FONT',(0,0),(-1,-2),'Helvetica-Bold'), ('GRID',(0,0),(-1,-1),0.5,colors.grey), ('FONTSIZE',(0,0),(-1,-1),12), ('ALIGN',(0,0),(-1,-1),'CENTER'),('VALIGN',(0,0),(-1,-1),'MIDDLE')])
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1341 report.append(t)
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1342
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1343 for DC in DR["COS (5')"]:
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1344 P_comments = ""
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1345 if int(DR["COS (5')"][DC]["ave_whole_cov"]) < 50:
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1346 P_comments = "Low coverage"
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1347
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1348 data = [[DC, DR["COS (5')"][DC]["P_class"], DR["COS (5')"][DC]["P_left"], DR["COS (5')"][DC]["P_right"], DR["COS (5')"][DC]["P_type"], DR["COS (5')"][DC]["P_orient"], int(DR["COS (5')"][DC]["ave_whole_cov"]), P_comments]]
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1349 t=Table(data, 2*[1.50*inch]+5*[0.80*inch]+1*[1.25*inch], 1*[0.25*inch], hAlign='CENTER', style=[('FONT',(0,0),(-1,-2),'Helvetica-Bold'), ('GRID',(0,0),(-1,-1),0.5,colors.grey), ('FONTSIZE',(0,0),(-1,-1),12), ('ALIGN',(0,0),(-1,-1),'CENTER'),('VALIGN',(0,0),(-1,-1),'MIDDLE')])
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1350 report.append(t)
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1351
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1352 for DC in DR["COS"]:
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1353 P_comments = ""
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1354 if int(DR["COS"][DC]["ave_whole_cov"]) < 50:
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1355 P_comments = "Low coverage"
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1356
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1357 data = [[DC, DR["COS"][DC]["P_class"], DR["COS"][DC]["P_left"], DR["COS"][DC]["P_right"], DR["COS"][DC]["P_type"], DR["COS"][DC]["P_orient"], int(DR["COS"][DC]["ave_whole_cov"]), P_comments]]
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1358 t=Table(data, 2*[1.50*inch]+5*[0.80*inch]+1*[1.25*inch], 1*[0.25*inch], hAlign='CENTER', style=[('FONT',(0,0),(-1,-2),'Helvetica-Bold'), ('GRID',(0,0),(-1,-1),0.5,colors.grey), ('FONTSIZE',(0,0),(-1,-1),12), ('ALIGN',(0,0),(-1,-1),'CENTER'),('VALIGN',(0,0),(-1,-1),'MIDDLE')])
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1359 report.append(t)
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1360
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1361 report.append(Spacer(1, 5))
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1362
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1363 # DTR Phages
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1364 count_DTR = len(DR["DTR (short)"]) + len(DR["DTR (long)"])
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1365 ptext = '<u><font size=14>DTR Phages ('+ str(count_DTR) +')</font></u>'
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1366 report.append(Paragraph(ptext, styles["Left"]))
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1367 report.append(Spacer(1, 10))
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1368
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1369 if count_DTR != 0:
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1370
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1371 data = [["Name", "Class", "Left", "Right", "Type", "Orient", "Coverage", "Comments"]]
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1372 t=Table(data, 2*[1.50*inch]+5*[0.80*inch]+1*[1.25*inch], 1*[0.25*inch], hAlign='CENTER', style=[('FONT',(0,0),(-1,-1),'Helvetica-Bold'), ('GRID',(0,0),(-1,-1),0.5,colors.grey), ('FONTSIZE',(0,0),(-1,-1),12), ('ALIGN',(0,0),(-1,-1),'CENTER'),('VALIGN',(0,0),(-1,-1),'MIDDLE')])
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1373 report.append(t)
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1374
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1375 for DC in DR["DTR (short)"]:
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1376 P_comments = ""
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1377 if int(DR["DTR (short)"][DC]["ave_whole_cov"]) < 50:
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1378 P_comments = "Low coverage"
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1379
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1380 data = [[DC, DR["DTR (short)"][DC]["P_class"], DR["DTR (short)"][DC]["P_left"], DR["DTR (short)"][DC]["P_right"], DR["DTR (short)"][DC]["P_type"], DR["DTR (short)"][DC]["P_orient"], int(DR["DTR (short)"][DC]["ave_whole_cov"]), P_comments]]
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1381 t=Table(data, 2*[1.50*inch]+5*[0.80*inch]+1*[1.25*inch], 1*[0.25*inch], hAlign='CENTER', style=[('FONT',(0,0),(-1,-2),'Helvetica-Bold'), ('GRID',(0,0),(-1,-1),0.5,colors.grey), ('FONTSIZE',(0,0),(-1,-1),12), ('ALIGN',(0,0),(-1,-1),'CENTER'),('VALIGN',(0,0),(-1,-1),'MIDDLE')])
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1382 report.append(t)
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1383
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1384 for DC in DR["DTR (long)"]:
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1385 P_comments = ""
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1386 if int(DR["DTR (long)"][DC]["ave_whole_cov"]) < 50:
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1387 P_comments = "Low coverage"
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1388
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1389 data = [[DC, DR["DTR (long)"][DC]["P_class"], DR["DTR (long)"][DC]["P_left"], DR["DTR (long)"][DC]["P_right"], DR["DTR (long)"][DC]["P_type"], DR["DTR (long)"][DC]["P_orient"], int(DR["DTR (long)"][DC]["ave_whole_cov"]), P_comments]]
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1390 t=Table(data, 2*[1.50*inch]+5*[0.80*inch]+1*[1.25*inch], 1*[0.25*inch], hAlign='CENTER', style=[('FONT',(0,0),(-1,-2),'Helvetica-Bold'), ('GRID',(0,0),(-1,-1),0.5,colors.grey), ('FONTSIZE',(0,0),(-1,-1),12), ('ALIGN',(0,0),(-1,-1),'CENTER'),('VALIGN',(0,0),(-1,-1),'MIDDLE')])
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1391 report.append(t)
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1392
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1393 report.append(Spacer(1, 5))
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1394
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1395 # Headful Phages
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1396 count_Headful = len(DR["Headful (pac)"])
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1397 ptext = '<u><font size=14>Headful Phages ('+ str(count_Headful) +')</font></u>'
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1398 report.append(Paragraph(ptext, styles["Left"]))
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1399 report.append(Spacer(1, 10))
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1400
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1401 if count_Headful != 0:
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1402
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1403 data = [["Name", "Class", "Left", "Right", "Type", "Orient", "Coverage", "Comments"]]
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1404 t=Table(data, 2*[1.50*inch]+5*[0.80*inch]+1*[1.25*inch], 1*[0.25*inch], hAlign='CENTER', style=[('FONT',(0,0),(-1,-1),'Helvetica-Bold'), ('GRID',(0,0),(-1,-1),0.5,colors.grey), ('FONTSIZE',(0,0),(-1,-1),12), ('ALIGN',(0,0),(-1,-1),'CENTER'),('VALIGN',(0,0),(-1,-1),'MIDDLE')])
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1405 report.append(t)
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1406
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1407 for DC in DR["Headful (pac)"]:
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1408 P_comments = ""
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1409 if int(DR["Headful (pac)"][DC]["ave_whole_cov"]) < 50:
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1410 P_comments = "Low coverage"
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1411
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1412 data = [[DC, DR["Headful (pac)"][DC]["P_class"], DR["Headful (pac)"][DC]["P_left"], DR["Headful (pac)"][DC]["P_right"], DR["Headful (pac)"][DC]["P_type"], DR["Headful (pac)"][DC]["P_orient"], int(DR["Headful (pac)"][DC]["ave_whole_cov"]), P_comments]]
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1413 t=Table(data, 2*[1.50*inch]+5*[0.80*inch]+1*[1.25*inch], 1*[0.25*inch], hAlign='CENTER', style=[('FONT',(0,0),(-1,-2),'Helvetica-Bold'), ('GRID',(0,0),(-1,-1),0.5,colors.grey), ('FONTSIZE',(0,0),(-1,-1),12), ('ALIGN',(0,0),(-1,-1),'CENTER'),('VALIGN',(0,0),(-1,-1),'MIDDLE')])
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1414 report.append(t)
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1415
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1416 report.append(Spacer(1, 5))
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1417
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1418 # OTHERS Phages
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1419 count_Others = len(DR["Mu-like"]) + len(DR["UNKNOWN"]) + len(DR["NEW"])
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1420 ptext = '<u><font size=14>Others Phages ('+ str(count_Others) +')</font></u>'
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1421 report.append(Paragraph(ptext, styles["Left"]))
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1422 report.append(Spacer(1, 10))
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1423
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1424 if count_Others != 0:
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1425
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1426 data = [["Name", "Class", "Left", "Right", "Type", "Orient", "Coverage", "Comments"]]
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1427 t=Table(data, 2*[1.50*inch]+5*[0.80*inch]+1*[1.25*inch], 1*[0.25*inch], hAlign='CENTER', style=[('FONT',(0,0),(-1,-1),'Helvetica-Bold'), ('GRID',(0,0),(-1,-1),0.5,colors.grey), ('FONTSIZE',(0,0),(-1,-1),12), ('ALIGN',(0,0),(-1,-1),'CENTER'),('VALIGN',(0,0),(-1,-1),'MIDDLE')])
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1428 report.append(t)
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1429
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1430 for DC in DR["Mu-like"]:
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1431 P_comments = ""
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1432 if int(DR["Mu-like"][DC]["ave_whole_cov"]) < 50:
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1433 P_comments = "Low coverage"
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1434
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1435 data = [[DC, DR["Mu-like"][DC]["P_class"], DR["Mu-like"][DC]["P_left"], DR["Mu-like"][DC]["P_right"], DR["Mu-like"][DC]["P_type"], DR["Mu-like"][DC]["P_orient"], int(DR["Mu-like"][DC]["ave_whole_cov"]), P_comments]]
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1436 t=Table(data, 2*[1.50*inch]+5*[0.80*inch]+1*[1.25*inch], 1*[0.25*inch], hAlign='CENTER', style=[('FONT',(0,0),(-1,-2),'Helvetica-Bold'), ('GRID',(0,0),(-1,-1),0.5,colors.grey), ('FONTSIZE',(0,0),(-1,-1),12), ('ALIGN',(0,0),(-1,-1),'CENTER'),('VALIGN',(0,0),(-1,-1),'MIDDLE')])
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1437 report.append(t)
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1438
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1439 for DC in DR["NEW"]:
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1440 P_comments = ""
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1441 if int(DR["NEW"][DC]["ave_whole_cov"]) < 50:
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1442 P_comments = "Low coverage"
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1443
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1444 data = [[DC, DR["NEW"][DC]["P_class"], DR["NEW"][DC]["P_left"], DR["NEW"][DC]["P_right"], DR["NEW"][DC]["P_type"], DR["NEW"][DC]["P_orient"], int(DR["NEW"][DC]["ave_whole_cov"]), P_comments]]
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1445 t=Table(data, 2*[1.50*inch]+5*[0.80*inch]+1*[1.25*inch], 1*[0.25*inch], hAlign='CENTER', style=[('FONT',(0,0),(-1,-2),'Helvetica-Bold'), ('GRID',(0,0),(-1,-1),0.5,colors.grey), ('FONTSIZE',(0,0),(-1,-1),12), ('ALIGN',(0,0),(-1,-1),'CENTER'),('VALIGN',(0,0),(-1,-1),'MIDDLE')])
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1446 report.append(t)
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1447
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1448 for DC in DR["UNKNOWN"]:
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1449 P_comments = ""
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1450 if int(DR["UNKNOWN"][DC]["ave_whole_cov"]) < 50:
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1451 P_comments = "Low coverage"
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1452
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1453 data = [[DC, DR["UNKNOWN"][DC]["P_class"], DR["UNKNOWN"][DC]["P_left"], DR["UNKNOWN"][DC]["P_right"], DR["UNKNOWN"][DC]["P_type"], DR["UNKNOWN"][DC]["P_orient"], int(DR["UNKNOWN"][DC]["ave_whole_cov"]), P_comments]]
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1454 t=Table(data, 2*[1.50*inch]+5*[0.80*inch]+1*[1.25*inch], 1*[0.25*inch], hAlign='CENTER', style=[('FONT',(0,0),(-1,-2),'Helvetica-Bold'), ('GRID',(0,0),(-1,-1),0.5,colors.grey), ('FONTSIZE',(0,0),(-1,-1),12), ('ALIGN',(0,0),(-1,-1),'CENTER'),('VALIGN',(0,0),(-1,-1),'MIDDLE')])
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1455 report.append(t)
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1456
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1457 report.append(Spacer(1, 5))
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1458
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1459 report.append(PageBreak())
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1460
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1461 return report
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1462
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1463 def WorkflowReport(phagename, P_class, P_left, P_right, P_type, P_orient, ave_whole_cov, multi = 0, phage_plus_norm=None, phage_minus_norm=None,*args, **kwargs):
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1464 """ Text report for each phage."""
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1465
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1466 P_comments = ""
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1467 if ave_whole_cov < 50:
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1468 P_comments = "WARNING: Low coverage"
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1469
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1470 if ave_whole_cov == 0:
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1471 P_comments = "No read match"
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1472
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1473 if not multi:
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1474 filoutWorkflow = open(phagename + "_workflow.txt", "w")
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1475 filoutWorkflow.write("#phagename\tClass\tLeft\tRight\tType\tOrient\tCoverage\tComments\n")
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1476 filoutWorkflow.write(phagename + "\t" + P_class + "\t" + str(P_left) + "\t" + str(P_right) + "\t" + P_type + "\t" + P_orient + "\t" + str(ave_whole_cov) + "\t" + P_comments + "\n")
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1477 filoutWorkflow.close()
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1478 else:
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1479 pval_left_peak="-"
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1480 pval_adj_left_peak="-"
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1481 pval_right_peak="-"
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1482 pval_adj_right_peak="-"
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1483 if isinstance(P_left,np.int64):
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1484 # get pvalue and adjusted pvalue for this + peak
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1485 left_peak_infos=phage_plus_norm.loc[phage_plus_norm['Position']==P_left]
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1486 pval_left_peak=left_peak_infos["pval_gamma"]
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1487 pval_left_peak=pval_left_peak.values[0]
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1488 pval_adj_left_peak=left_peak_infos["pval_gamma_adj"]
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1489 pval_adj_left_peak =pval_adj_left_peak.values[0]
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1490 if isinstance(P_right,np.int64):
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1491 # get pvalue and adjusted pvalue for this + peak
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1492 right_peak_infos=phage_minus_norm.loc[phage_minus_norm['Position']==P_right]
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1493 pval_right_peak=right_peak_infos["pval_gamma"]
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1494 pval_right_peak=pval_right_peak.values[0]
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1495 pval_adj_right_peak=right_peak_infos["pval_gamma_adj"]
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1496 pval_adj_right_peak=pval_adj_right_peak.values[0]
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1497 return phagename + "\t" + P_class + "\t" + str(P_left) + "\t" +str(pval_left_peak)+ "\t" +str(pval_adj_left_peak)+\
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1498 "\t" + str(P_right) + "\t" + str(pval_right_peak) + "\t" + str(pval_adj_right_peak)+ "\t" + P_type +\
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1499 "\t" + P_orient + "\t" + str(ave_whole_cov) + "\t" + P_comments + "\n"
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1500 return
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1501
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1502 def EstimateTime(secondes):
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1503 """ Convert secondes into time."""
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1504 conv = (86400,3600,60,1)
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1505 result = [0,0,0,0]
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1506 i=0
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1507 while secondes>0:
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1508 result[i]= secondes/conv[i]
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1509 secondes=secondes-result[i]*conv[i]
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1510 i+=1
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1511 return str(result[0]) + " Days " + str(result[1]) + " Hrs " + str(result[2]) + " Min " + str(result[3]) + " Sec"
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1512
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1513
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1514
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1515
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1516
69e8f12c8b31 "planemo upload"
bioit_sciensano
parents:
diff changeset
1517