annotate frp_tool.py @ 0:e223b827a13e draft

Uploaded
author schang
date Tue, 02 Dec 2014 19:38:14 -0500
parents
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
e223b827a13e Uploaded
schang
parents:
diff changeset
1 #!/usr/bin/env python
e223b827a13e Uploaded
schang
parents:
diff changeset
2
e223b827a13e Uploaded
schang
parents:
diff changeset
3 '''
e223b827a13e Uploaded
schang
parents:
diff changeset
4 Author: Silvia Chang
e223b827a13e Uploaded
schang
parents:
diff changeset
5 Metagenomic Final Project
e223b827a13e Uploaded
schang
parents:
diff changeset
6 Fall 2014
e223b827a13e Uploaded
schang
parents:
diff changeset
7
e223b827a13e Uploaded
schang
parents:
diff changeset
8 Script to create fragment recruitment plots, after read-reference alignment using Bowtie (SAM output) and FR-HIT (fr-hit output) programs
e223b827a13e Uploaded
schang
parents:
diff changeset
9 Simplified/revised version of the fragrecruit project from https://github.com/mstrosaker/fragrecruit
e223b827a13e Uploaded
schang
parents:
diff changeset
10
e223b827a13e Uploaded
schang
parents:
diff changeset
11 Usage: ./frp_tool.py [options] --input --output
e223b827a13e Uploaded
schang
parents:
diff changeset
12
e223b827a13e Uploaded
schang
parents:
diff changeset
13 '''
e223b827a13e Uploaded
schang
parents:
diff changeset
14 import matplotlib.pyplot as plt
e223b827a13e Uploaded
schang
parents:
diff changeset
15 import os, sys, getopt, imp, errno
e223b827a13e Uploaded
schang
parents:
diff changeset
16 # import shutil
e223b827a13e Uploaded
schang
parents:
diff changeset
17 from refseq_parser import SequenceFile
e223b827a13e Uploaded
schang
parents:
diff changeset
18 from SAM_parser import SAMFile
e223b827a13e Uploaded
schang
parents:
diff changeset
19 from FRHIT_parser import FRHITFile
e223b827a13e Uploaded
schang
parents:
diff changeset
20
e223b827a13e Uploaded
schang
parents:
diff changeset
21 class FragmentPlotter:
e223b827a13e Uploaded
schang
parents:
diff changeset
22 '''Contains all functions to create fragment recruitment plots'''
e223b827a13e Uploaded
schang
parents:
diff changeset
23
e223b827a13e Uploaded
schang
parents:
diff changeset
24 # Color list. Can only handle 5 samples. Add more colors for more samples.
e223b827a13e Uploaded
schang
parents:
diff changeset
25 colors = [
e223b827a13e Uploaded
schang
parents:
diff changeset
26 (0.78, 0.59, 0.17, 1.0), #dark gold
e223b827a13e Uploaded
schang
parents:
diff changeset
27 (0.99, 0.60, 0.17, 1.0), #light orange
e223b827a13e Uploaded
schang
parents:
diff changeset
28 (0.60, 0.82, 0.47, 1.0), #medium/light green
e223b827a13e Uploaded
schang
parents:
diff changeset
29 (0.95, 0.40, 0.40, 1.0), #dark pink/fuschia
e223b827a13e Uploaded
schang
parents:
diff changeset
30 (0.17, 0.50, 0.69, 1.0), #medium teal/blue
e223b827a13e Uploaded
schang
parents:
diff changeset
31 (0.85, 0.64, 0.60, 1.0), #light plum
e223b827a13e Uploaded
schang
parents:
diff changeset
32 ]
e223b827a13e Uploaded
schang
parents:
diff changeset
33
e223b827a13e Uploaded
schang
parents:
diff changeset
34 def __init__(self, microbiome, pt_color, ymin=50):
e223b827a13e Uploaded
schang
parents:
diff changeset
35 self.microbiome = microbiome
e223b827a13e Uploaded
schang
parents:
diff changeset
36 self.decorated = False
e223b827a13e Uploaded
schang
parents:
diff changeset
37 self.pt_color = pt_color
e223b827a13e Uploaded
schang
parents:
diff changeset
38 self.ymin = ymin
e223b827a13e Uploaded
schang
parents:
diff changeset
39
e223b827a13e Uploaded
schang
parents:
diff changeset
40 def new_plot(self, ref_name, contigs, begin, length):
e223b827a13e Uploaded
schang
parents:
diff changeset
41 ''' Clears previous data and start a blank plot'''
e223b827a13e Uploaded
schang
parents:
diff changeset
42 # refgenome - string, organism name of the refgenome
e223b827a13e Uploaded
schang
parents:
diff changeset
43 # contigs - a list containing a [name,length] pair of the refgenome
e223b827a13e Uploaded
schang
parents:
diff changeset
44 # begin, length - integers indicate beginning/length of plot
e223b827a13e Uploaded
schang
parents:
diff changeset
45
e223b827a13e Uploaded
schang
parents:
diff changeset
46 plt.close()
e223b827a13e Uploaded
schang
parents:
diff changeset
47 # Initialize variables that will contain all the fragments information
e223b827a13e Uploaded
schang
parents:
diff changeset
48 self.refgenome = ref_name
e223b827a13e Uploaded
schang
parents:
diff changeset
49 self.contigs = contigs
e223b827a13e Uploaded
schang
parents:
diff changeset
50 self.begin = begin
e223b827a13e Uploaded
schang
parents:
diff changeset
51 self.samples = []
e223b827a13e Uploaded
schang
parents:
diff changeset
52 self.n_points = 0
e223b827a13e Uploaded
schang
parents:
diff changeset
53 self.x_points = []
e223b827a13e Uploaded
schang
parents:
diff changeset
54 self.y_points = []
e223b827a13e Uploaded
schang
parents:
diff changeset
55 self.clr_points = []
e223b827a13e Uploaded
schang
parents:
diff changeset
56 self.decorated = False
e223b827a13e Uploaded
schang
parents:
diff changeset
57
e223b827a13e Uploaded
schang
parents:
diff changeset
58 self.full_length = 0
e223b827a13e Uploaded
schang
parents:
diff changeset
59
e223b827a13e Uploaded
schang
parents:
diff changeset
60 # Builds the full length of the reference genome, or partial based on begin and length variables
e223b827a13e Uploaded
schang
parents:
diff changeset
61 for contig in self.contigs:
e223b827a13e Uploaded
schang
parents:
diff changeset
62 self.full_length += contig[1]
e223b827a13e Uploaded
schang
parents:
diff changeset
63
e223b827a13e Uploaded
schang
parents:
diff changeset
64 # Sets the range of the x axis
e223b827a13e Uploaded
schang
parents:
diff changeset
65 if length != 0:
e223b827a13e Uploaded
schang
parents:
diff changeset
66 self.xextent = begin + length
e223b827a13e Uploaded
schang
parents:
diff changeset
67 else:
e223b827a13e Uploaded
schang
parents:
diff changeset
68 self.xextent = self.full_length
e223b827a13e Uploaded
schang
parents:
diff changeset
69
e223b827a13e Uploaded
schang
parents:
diff changeset
70 def decorate(self):
e223b827a13e Uploaded
schang
parents:
diff changeset
71 ''' Decorates the plot by adding axes, axes labels, title, tickmarks, etc.'''
e223b827a13e Uploaded
schang
parents:
diff changeset
72 if not self.decorated:
e223b827a13e Uploaded
schang
parents:
diff changeset
73 self.decorated = True
e223b827a13e Uploaded
schang
parents:
diff changeset
74
e223b827a13e Uploaded
schang
parents:
diff changeset
75 # Sets the rc parameters, add x-axis tickmarks and labels them
e223b827a13e Uploaded
schang
parents:
diff changeset
76 plt.rc('xtick', labelsize=8)
e223b827a13e Uploaded
schang
parents:
diff changeset
77 ticks = [self.begin] # beginning tick
e223b827a13e Uploaded
schang
parents:
diff changeset
78 ticks.append(self.xextent/2) # mid tick
e223b827a13e Uploaded
schang
parents:
diff changeset
79 ticks.append(self.xextent) # last tick
e223b827a13e Uploaded
schang
parents:
diff changeset
80
e223b827a13e Uploaded
schang
parents:
diff changeset
81 labels = [int(self.begin)] # beginning nucleotide
e223b827a13e Uploaded
schang
parents:
diff changeset
82 labels.append(str(self.xextent/2)) # mid nucleotide
e223b827a13e Uploaded
schang
parents:
diff changeset
83 labels.append(str(self.xextent)) # last nucleotide
e223b827a13e Uploaded
schang
parents:
diff changeset
84
e223b827a13e Uploaded
schang
parents:
diff changeset
85 plt.xticks(ticks, labels)
e223b827a13e Uploaded
schang
parents:
diff changeset
86
e223b827a13e Uploaded
schang
parents:
diff changeset
87 # Sets x and y axes boundaries and labels
e223b827a13e Uploaded
schang
parents:
diff changeset
88 plt.xlim(self.begin, self.xextent)
e223b827a13e Uploaded
schang
parents:
diff changeset
89 plt.ylim(self.ymin, 100)
e223b827a13e Uploaded
schang
parents:
diff changeset
90 plt.ylabel("% Identity")
e223b827a13e Uploaded
schang
parents:
diff changeset
91
e223b827a13e Uploaded
schang
parents:
diff changeset
92 # Set plot titles
e223b827a13e Uploaded
schang
parents:
diff changeset
93 plt.title(self.refgenome)
e223b827a13e Uploaded
schang
parents:
diff changeset
94 plt.suptitle(self.microbiome)
e223b827a13e Uploaded
schang
parents:
diff changeset
95
e223b827a13e Uploaded
schang
parents:
diff changeset
96 def draw(self, filename):
e223b827a13e Uploaded
schang
parents:
diff changeset
97 '''Creates a scatter plot of fragments after they're added in add_points() and save the plots in the specified file name'''
e223b827a13e Uploaded
schang
parents:
diff changeset
98
e223b827a13e Uploaded
schang
parents:
diff changeset
99 # Sets points size and shape based on number of points recruited
e223b827a13e Uploaded
schang
parents:
diff changeset
100 if self.n_points > 10000:
e223b827a13e Uploaded
schang
parents:
diff changeset
101 pt_shape = 'o'
e223b827a13e Uploaded
schang
parents:
diff changeset
102 pt_size = 1
e223b827a13e Uploaded
schang
parents:
diff changeset
103 else:
e223b827a13e Uploaded
schang
parents:
diff changeset
104 pt_shape ='s'
e223b827a13e Uploaded
schang
parents:
diff changeset
105 pt_size = 3
e223b827a13e Uploaded
schang
parents:
diff changeset
106
e223b827a13e Uploaded
schang
parents:
diff changeset
107 # Generate the scatter plot
e223b827a13e Uploaded
schang
parents:
diff changeset
108 # plt.scatter(self.x_points, self.y_points, s=pt_size, c=self.clr_points, marker=pt_shape, alpha = 0.1, edgecolors='none')
e223b827a13e Uploaded
schang
parents:
diff changeset
109
e223b827a13e Uploaded
schang
parents:
diff changeset
110 # Adds the legend on the plot. Currently, can only add one. Uncomment the plt.legend method.
e223b827a13e Uploaded
schang
parents:
diff changeset
111 plt.scatter(self.x_points, self.y_points, s=pt_size, c=self.clr_points, marker=pt_shape, alpha = 0.1, edgecolors='none', label=self.samples[0])
e223b827a13e Uploaded
schang
parents:
diff changeset
112 plt.legend(loc='lower left', ncol=3, scatterpoints=1, markerscale=8, prop={'size':10})
e223b827a13e Uploaded
schang
parents:
diff changeset
113
e223b827a13e Uploaded
schang
parents:
diff changeset
114 # Adds titles, axes, etc
e223b827a13e Uploaded
schang
parents:
diff changeset
115 self.decorate()
e223b827a13e Uploaded
schang
parents:
diff changeset
116
e223b827a13e Uploaded
schang
parents:
diff changeset
117 # Save the images
e223b827a13e Uploaded
schang
parents:
diff changeset
118 plt.savefig(filename, dpi=150, bbox_inches=0)
e223b827a13e Uploaded
schang
parents:
diff changeset
119
e223b827a13e Uploaded
schang
parents:
diff changeset
120 def legend(self, filename, width=4):
e223b827a13e Uploaded
schang
parents:
diff changeset
121 '''Create a legend for the plot'''
e223b827a13e Uploaded
schang
parents:
diff changeset
122 plt.figure(figsize=(width, 0.45*len(self.samples)))
e223b827a13e Uploaded
schang
parents:
diff changeset
123 plt.axis('off')
e223b827a13e Uploaded
schang
parents:
diff changeset
124 plt.ylim(-1,0.1)
e223b827a13e Uploaded
schang
parents:
diff changeset
125
e223b827a13e Uploaded
schang
parents:
diff changeset
126 i = 0
e223b827a13e Uploaded
schang
parents:
diff changeset
127 ystep = 0
e223b827a13e Uploaded
schang
parents:
diff changeset
128 for s in self.samples:
e223b827a13e Uploaded
schang
parents:
diff changeset
129 plt.text(0.00, -1*ystep-0.1, 'text',
e223b827a13e Uploaded
schang
parents:
diff changeset
130 backgroundcolor=self.colors[i], color=self.colors[i])
e223b827a13e Uploaded
schang
parents:
diff changeset
131 plt.text(0.27, -1*ystep-0.1, s)
e223b827a13e Uploaded
schang
parents:
diff changeset
132 i += 1
e223b827a13e Uploaded
schang
parents:
diff changeset
133 ystep += 0.2
e223b827a13e Uploaded
schang
parents:
diff changeset
134
e223b827a13e Uploaded
schang
parents:
diff changeset
135 plt.title("Samples")
e223b827a13e Uploaded
schang
parents:
diff changeset
136 plt.savefig(filename, bbox_inches=0)
e223b827a13e Uploaded
schang
parents:
diff changeset
137
e223b827a13e Uploaded
schang
parents:
diff changeset
138 def show(self):
e223b827a13e Uploaded
schang
parents:
diff changeset
139 self.decorate()
e223b827a13e Uploaded
schang
parents:
diff changeset
140 plt.show()
e223b827a13e Uploaded
schang
parents:
diff changeset
141
e223b827a13e Uploaded
schang
parents:
diff changeset
142 def add_sample(self, name):
e223b827a13e Uploaded
schang
parents:
diff changeset
143 self.samples.append(name)
e223b827a13e Uploaded
schang
parents:
diff changeset
144
e223b827a13e Uploaded
schang
parents:
diff changeset
145 def add_points(self, sample, ref_contig, coordinate, identity):
e223b827a13e Uploaded
schang
parents:
diff changeset
146 x= 0
e223b827a13e Uploaded
schang
parents:
diff changeset
147
e223b827a13e Uploaded
schang
parents:
diff changeset
148 # Builds the reference length
e223b827a13e Uploaded
schang
parents:
diff changeset
149 for c in self.contigs:
e223b827a13e Uploaded
schang
parents:
diff changeset
150 if (ref_contig == c[0]):
e223b827a13e Uploaded
schang
parents:
diff changeset
151 break
e223b827a13e Uploaded
schang
parents:
diff changeset
152 x += c[1]
e223b827a13e Uploaded
schang
parents:
diff changeset
153
e223b827a13e Uploaded
schang
parents:
diff changeset
154 # Applies new color to different samples
e223b827a13e Uploaded
schang
parents:
diff changeset
155 clr = self.pt_color
e223b827a13e Uploaded
schang
parents:
diff changeset
156 for s in self.samples:
e223b827a13e Uploaded
schang
parents:
diff changeset
157 if(sample == s):
e223b827a13e Uploaded
schang
parents:
diff changeset
158 break
e223b827a13e Uploaded
schang
parents:
diff changeset
159 clr += 1
e223b827a13e Uploaded
schang
parents:
diff changeset
160
e223b827a13e Uploaded
schang
parents:
diff changeset
161 if x + coordinate >= self.begin and x + coordinate <= self.xextent:
e223b827a13e Uploaded
schang
parents:
diff changeset
162 self.n_points += 1
e223b827a13e Uploaded
schang
parents:
diff changeset
163 self.x_points.append(x + coordinate)
e223b827a13e Uploaded
schang
parents:
diff changeset
164 self.y_points.append(identity)
e223b827a13e Uploaded
schang
parents:
diff changeset
165 self.clr_points.append(self.colors[clr])
e223b827a13e Uploaded
schang
parents:
diff changeset
166
e223b827a13e Uploaded
schang
parents:
diff changeset
167 def usage():
e223b827a13e Uploaded
schang
parents:
diff changeset
168 print ('''Usage:
e223b827a13e Uploaded
schang
parents:
diff changeset
169 %s [options] <aligned_input> <ref_genome>
e223b827a13e Uploaded
schang
parents:
diff changeset
170 Options
e223b827a13e Uploaded
schang
parents:
diff changeset
171 -h: display this help message
e223b827a13e Uploaded
schang
parents:
diff changeset
172 -i <int>: minimum identity to include in plot (y-axis extent)
e223b827a13e Uploaded
schang
parents:
diff changeset
173 -b <int>: begin the plot at the nth nucleotide in the ref genome
e223b827a13e Uploaded
schang
parents:
diff changeset
174 -l <int>: include n nucleotides in the x-axis of the plot
e223b827a13e Uploaded
schang
parents:
diff changeset
175 the default behavior is to plot the entirety of the genome
e223b827a13e Uploaded
schang
parents:
diff changeset
176 -t <str>: title of the plot (e.g. name of reference genome). Put in quotes.
e223b827a13e Uploaded
schang
parents:
diff changeset
177 -m <str>: Name of the microbiome. Put in quotes.
e223b827a13e Uploaded
schang
parents:
diff changeset
178 -c <int>: number indicating color for plot points.
e223b827a13e Uploaded
schang
parents:
diff changeset
179 ''' % sys.argv[0])
e223b827a13e Uploaded
schang
parents:
diff changeset
180
e223b827a13e Uploaded
schang
parents:
diff changeset
181 if __name__ == '__main__':
e223b827a13e Uploaded
schang
parents:
diff changeset
182 # Parse all command-line arguments
e223b827a13e Uploaded
schang
parents:
diff changeset
183 # variable opts contains a list of the key-value pair of (option, value); variable args contains a list of the configuration file
e223b827a13e Uploaded
schang
parents:
diff changeset
184 try:
e223b827a13e Uploaded
schang
parents:
diff changeset
185 opts, args = getopt.getopt(sys.argv[1:], 'hi:b:l:t:m:c:', ['help', 'identity=', 'begin=', 'length=', 'title=', 'microbiome=', 'color='])
e223b827a13e Uploaded
schang
parents:
diff changeset
186 except getopt.GetoptError as err:
e223b827a13e Uploaded
schang
parents:
diff changeset
187 print(str(err))
e223b827a13e Uploaded
schang
parents:
diff changeset
188 usage()
e223b827a13e Uploaded
schang
parents:
diff changeset
189 sys.exit(2)
e223b827a13e Uploaded
schang
parents:
diff changeset
190
e223b827a13e Uploaded
schang
parents:
diff changeset
191 # Set some default values
e223b827a13e Uploaded
schang
parents:
diff changeset
192 identity = 50.0
e223b827a13e Uploaded
schang
parents:
diff changeset
193 begin = 0
e223b827a13e Uploaded
schang
parents:
diff changeset
194 length = 0
e223b827a13e Uploaded
schang
parents:
diff changeset
195 title = ''
e223b827a13e Uploaded
schang
parents:
diff changeset
196 microbiome=''
e223b827a13e Uploaded
schang
parents:
diff changeset
197 color = 0
e223b827a13e Uploaded
schang
parents:
diff changeset
198
e223b827a13e Uploaded
schang
parents:
diff changeset
199 # Parse options and set user-defined values
e223b827a13e Uploaded
schang
parents:
diff changeset
200 for opt, value in opts:
e223b827a13e Uploaded
schang
parents:
diff changeset
201 if opt in ('-h', '--help'):
e223b827a13e Uploaded
schang
parents:
diff changeset
202 usage()
e223b827a13e Uploaded
schang
parents:
diff changeset
203 sys.exit(0)
e223b827a13e Uploaded
schang
parents:
diff changeset
204 elif opt in ('-i', '--identity'):
e223b827a13e Uploaded
schang
parents:
diff changeset
205 identity = float(value)
e223b827a13e Uploaded
schang
parents:
diff changeset
206 elif opt in ('-b', '--begin'):
e223b827a13e Uploaded
schang
parents:
diff changeset
207 begin = int(value)
e223b827a13e Uploaded
schang
parents:
diff changeset
208 elif opt in ('-l', '--length'):
e223b827a13e Uploaded
schang
parents:
diff changeset
209 length = int(length)
e223b827a13e Uploaded
schang
parents:
diff changeset
210 elif opt in ('-t', '--title'):
e223b827a13e Uploaded
schang
parents:
diff changeset
211 title = str(value)
e223b827a13e Uploaded
schang
parents:
diff changeset
212 elif opt in ('-m', '--microbiome'):
e223b827a13e Uploaded
schang
parents:
diff changeset
213 microbiome = str(value)
e223b827a13e Uploaded
schang
parents:
diff changeset
214 elif opt in ('-c', '--color'):
e223b827a13e Uploaded
schang
parents:
diff changeset
215 color = int(value)
e223b827a13e Uploaded
schang
parents:
diff changeset
216 else:
e223b827a13e Uploaded
schang
parents:
diff changeset
217 assert False, "invalid option"
e223b827a13e Uploaded
schang
parents:
diff changeset
218
e223b827a13e Uploaded
schang
parents:
diff changeset
219 # Verify there are input files: input and ref_genome
e223b827a13e Uploaded
schang
parents:
diff changeset
220 if len(args) == 0:
e223b827a13e Uploaded
schang
parents:
diff changeset
221 print ('Need input files.')
e223b827a13e Uploaded
schang
parents:
diff changeset
222 usage()
e223b827a13e Uploaded
schang
parents:
diff changeset
223 sys.exit
e223b827a13e Uploaded
schang
parents:
diff changeset
224
e223b827a13e Uploaded
schang
parents:
diff changeset
225 # Load and read the configuration file. Treats the file as module object
e223b827a13e Uploaded
schang
parents:
diff changeset
226 # config = imp.load_source('*', args[0])
e223b827a13e Uploaded
schang
parents:
diff changeset
227
e223b827a13e Uploaded
schang
parents:
diff changeset
228 aligned_input= args[0]
e223b827a13e Uploaded
schang
parents:
diff changeset
229 ref_genome = args[1]
e223b827a13e Uploaded
schang
parents:
diff changeset
230
e223b827a13e Uploaded
schang
parents:
diff changeset
231 # Instantiate plotting object
e223b827a13e Uploaded
schang
parents:
diff changeset
232 plotter = FragmentPlotter(microbiome, color, ymin=identity)
e223b827a13e Uploaded
schang
parents:
diff changeset
233
e223b827a13e Uploaded
schang
parents:
diff changeset
234
e223b827a13e Uploaded
schang
parents:
diff changeset
235 # Begin the plotting commands, starting each with the reference genome
e223b827a13e Uploaded
schang
parents:
diff changeset
236 # for refgenome in ref_genome:
e223b827a13e Uploaded
schang
parents:
diff changeset
237 '''refgenome = [(name, taxonID, file_path), ..., ]'''
e223b827a13e Uploaded
schang
parents:
diff changeset
238 contigs = []
e223b827a13e Uploaded
schang
parents:
diff changeset
239
e223b827a13e Uploaded
schang
parents:
diff changeset
240 # Parse the reference genome's FASTA file.
e223b827a13e Uploaded
schang
parents:
diff changeset
241 fasta = open(ref_genome, 'r')
e223b827a13e Uploaded
schang
parents:
diff changeset
242 for refseq in SequenceFile(fasta):
e223b827a13e Uploaded
schang
parents:
diff changeset
243 contigs.append([refseq.name.split('|')[3], len(refseq.seq)])
e223b827a13e Uploaded
schang
parents:
diff changeset
244
e223b827a13e Uploaded
schang
parents:
diff changeset
245 fasta.close()
e223b827a13e Uploaded
schang
parents:
diff changeset
246
e223b827a13e Uploaded
schang
parents:
diff changeset
247 # Sets the ref genome's accession # as the title if title is not set (i.e. empty)
e223b827a13e Uploaded
schang
parents:
diff changeset
248 if title == '':
e223b827a13e Uploaded
schang
parents:
diff changeset
249 title = contigs[0][0]
e223b827a13e Uploaded
schang
parents:
diff changeset
250
e223b827a13e Uploaded
schang
parents:
diff changeset
251 # Initialize the new plot
e223b827a13e Uploaded
schang
parents:
diff changeset
252 plotter.new_plot(title, contigs, begin, length)
e223b827a13e Uploaded
schang
parents:
diff changeset
253
e223b827a13e Uploaded
schang
parents:
diff changeset
254 count_samp = 0
e223b827a13e Uploaded
schang
parents:
diff changeset
255 # for sample in aligned_input:
e223b827a13e Uploaded
schang
parents:
diff changeset
256 '''sample = [(name, {taxonID:path}), ...,]'''
e223b827a13e Uploaded
schang
parents:
diff changeset
257 # plotter.add_sample("test")
e223b827a13e Uploaded
schang
parents:
diff changeset
258 count_samp += 1
e223b827a13e Uploaded
schang
parents:
diff changeset
259
e223b827a13e Uploaded
schang
parents:
diff changeset
260 # Call the appropriate parser based on sample file extension
e223b827a13e Uploaded
schang
parents:
diff changeset
261 # file = '%s%s' % (config.basepath, sample[1][refgenome[1]])
e223b827a13e Uploaded
schang
parents:
diff changeset
262
e223b827a13e Uploaded
schang
parents:
diff changeset
263 # if aligned_input.endswith('.sam'):
e223b827a13e Uploaded
schang
parents:
diff changeset
264 # parser_func = SAMFile
e223b827a13e Uploaded
schang
parents:
diff changeset
265 # elif aligned_input.endswith('.fr-hit'):
e223b827a13e Uploaded
schang
parents:
diff changeset
266 # parser_func = FRHITFile
e223b827a13e Uploaded
schang
parents:
diff changeset
267 # else:
e223b827a13e Uploaded
schang
parents:
diff changeset
268 # print('Invalid file type')
e223b827a13e Uploaded
schang
parents:
diff changeset
269
e223b827a13e Uploaded
schang
parents:
diff changeset
270 parser_func = SAMFile
e223b827a13e Uploaded
schang
parents:
diff changeset
271
e223b827a13e Uploaded
schang
parents:
diff changeset
272 sample_name =""
e223b827a13e Uploaded
schang
parents:
diff changeset
273 for frag in parser_func(aligned_input):
e223b827a13e Uploaded
schang
parents:
diff changeset
274 if frag.identity >= identity:
e223b827a13e Uploaded
schang
parents:
diff changeset
275 sample_name = frag.name.split('.')[0]
e223b827a13e Uploaded
schang
parents:
diff changeset
276 plotter.add_points(frag.name, frag.refseq, frag.location, frag.identity)
e223b827a13e Uploaded
schang
parents:
diff changeset
277
e223b827a13e Uploaded
schang
parents:
diff changeset
278 plotter.add_sample(sample_name)
e223b827a13e Uploaded
schang
parents:
diff changeset
279 # Put this inside the sample for-loop to create individual plot per sample
e223b827a13e Uploaded
schang
parents:
diff changeset
280 plotter.draw('%s.png' % ("frp_image"))
e223b827a13e Uploaded
schang
parents:
diff changeset
281
e223b827a13e Uploaded
schang
parents:
diff changeset
282
e223b827a13e Uploaded
schang
parents:
diff changeset
283 # plotter.show()
e223b827a13e Uploaded
schang
parents:
diff changeset
284
e223b827a13e Uploaded
schang
parents:
diff changeset
285 # Draw the points and save file with taxonID as base name. Put this outside the sample for-loop to create an all-samples plot.
e223b827a13e Uploaded
schang
parents:
diff changeset
286 # Put this inside the sample for-loop to create individual plot per sample
e223b827a13e Uploaded
schang
parents:
diff changeset
287 # plotter.draw('%s/%s.png' % (config.shortname, refgenome[1]))
e223b827a13e Uploaded
schang
parents:
diff changeset
288
e223b827a13e Uploaded
schang
parents:
diff changeset
289 # plotter.legend('%s/legend.png' % (config.shortname))
e223b827a13e Uploaded
schang
parents:
diff changeset
290
e223b827a13e Uploaded
schang
parents:
diff changeset
291 # Make a tarball of the resulting PNGs
e223b827a13e Uploaded
schang
parents:
diff changeset
292 # os.system('tar -cvf %s.tar %s >/dev/null' %
e223b827a13e Uploaded
schang
parents:
diff changeset
293 # ( config.shortname, config.shortname))
e223b827a13e Uploaded
schang
parents:
diff changeset
294 # os.system('gzip %s.tar' % (config.shortname))
e223b827a13e Uploaded
schang
parents:
diff changeset
295 # shutil.rmtree(config.shortname)
e223b827a13e Uploaded
schang
parents:
diff changeset
296
e223b827a13e Uploaded
schang
parents:
diff changeset
297
e223b827a13e Uploaded
schang
parents:
diff changeset
298
e223b827a13e Uploaded
schang
parents:
diff changeset
299
e223b827a13e Uploaded
schang
parents:
diff changeset
300