annotate aggregate.py @ 16:e5211663e357 draft

Uploaded
author kaymccoy
date Fri, 12 Aug 2016 22:56:15 -0400
parents
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
16
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
1 # A translation of aggregate.pl into python! For analysis of Tn-Seq.
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
2 # This script requires BioPython just like calc_fitness.py, so you need it installed along with its dependencies if you want to run these scripts on your own.
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
3 # How to install BioPython and a list of its dependencies can be found here: http://biopython.org/DIST/docs/install/Installation.html
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
4 # K. McCoy
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
5
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
6
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
7
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
8
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
9
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
10
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
11
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
12
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
13
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
14 ##### ARGUMENTS #####
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
15
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
16 def print_usage():
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
17 print "Aggregate.py's usage is as follows:" + "\n\n"
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
18 print "\033[1m" + "Required" + "\033[0m" + "\n"
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
19 print "-o" + "\t\t" + "Output file for aggregated data." + "\n"
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
20 print "\n"
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
21 print "\033[1m" + "Optional" + "\033[0m" + "\n"
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
22 print "-c" + "\t\t" + "Check for missing genes in the data set - provide a reference genome in genbank format. Missing genes will be sent to stdout." + "\n"
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
23 print "-m" + "\t\t" + "Place a mark in an extra column for this set of genes. Provide a file with a list of genes seperated by newlines." + "\n"
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
24 print "-x" + "\t\t" + "Cutoff: Don't include fitness scores with average counts (c1+c2)/2 < x (default: 0)" + "\n"
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
25 print "-b" + "\t\t" + "Blanks: Exclude -b % of blank fitness scores (scores where c2 = 0) (default: 0 = 0%)" + "\n"
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
26 print "-f" + "\t\t" + "An in-between file carrying information on the blank count found from calc_fitness or consol_fitness; one of two ways to pass a blank count to this script" + "\n"
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
27 print "-w" + "\t\t" + "Use weighted algorithm to calculate averages, variance, sd, se" + "\n"
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
28 print "-l" + "\t\t" + "Weight ceiling: maximum value to use as a weight (default: 999,999)" + "\n"
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
29 print "\n"
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
30 print "All remainder arguements will be treated as fitness files (those files created by calc_fitness.py)" + "\n"
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
31 print "\n"
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
32
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
33 import argparse
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
34 parser = argparse.ArgumentParser()
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
35 parser.add_argument("-o", action="store", dest="summary")
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
36 parser.add_argument("-c", action="store", dest="find_missing")
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
37 parser.add_argument("-m", action="store", dest="marked")
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
38 parser.add_argument("-x", action="store", dest="cutoff")
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
39 parser.add_argument("-b", action="store", dest="blank_pc")
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
40 parser.add_argument("-f", action="store", dest="blank_file")
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
41 parser.add_argument("-w", action="store", dest="weighted")
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
42 parser.add_argument("-l", action="store", dest="weight_ceiling")
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
43 parser.add_argument("fitnessfiles", nargs=argparse.REMAINDER)
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
44
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
45 arguments = parser.parse_args()
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
46
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
47 if not arguments.summary:
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
48 print "\n" + "You are missing a value for the -o flag. "
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
49 print_usage()
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
50 quit()
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
51
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
52 if not arguments.fitnessfiles:
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
53 print "\n" + "You are missing fitness file(s); these should be entered immediately after all the flags. "
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
54 print_usage()
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
55 quit()
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
56
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
57 # 999,999 is a trivial placeholder number
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
58
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
59 if (not arguments.weight_ceiling):
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
60 arguments.weight_ceiling = 999999
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
61
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
62 # Cutoff exists to discard positions with a low number of counted transcripts, because their fitness may not be as accurate - for the same reasoning that studies with low sample sizes can be innacurate.
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
63
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
64 if (not arguments.cutoff):
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
65 arguments.cutoff = 0
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
66
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
67 # Gets information from the txt output file of calc_fit / consol, if inputted
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
68
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
69 if arguments.blank_file:
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
70 with open(arguments.blank_file) as file:
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
71 blank_pc = file.read().splitlines()
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
72 arguments.blank_pc = float(blank_pc[0].split()[1])
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
73
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
74 if (not arguments.blank_pc):
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
75 arguments.blank_pc = 0
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
76
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
77
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
78
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
79
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
80
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
81 ##### SUBROUTINES #####
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
82
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
83 # A subroutine that calculates the average, variance, standard deviation (sd), and standard error (se) of a group of scores; for use when aggregating scores by gene later on
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
84
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
85 import math
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
86 def average(scores):
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
87 sum = 0
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
88 num = 0
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
89 for i in scores:
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
90 ###!!!
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
91 print type(sum)
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
92 print type(i)
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
93 sum += i
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
94 num += 1
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
95 average = sum/num
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
96 xminusxbars = 0
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
97 for i in scores:
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
98 xminusxbars += (i - average)**2
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
99 variance = xminusxbars/(num-1)
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
100 sd = math.sqrt(variance)
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
101 se = sd / math.sqrt(num)
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
102 return (average, variance, sd, se)
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
103
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
104 # A subroutine that calculates the weighted average, variance, standard deviation (sd), and standard error (se) of a group of scores; the weights come from the number of reads each insertion location has
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
105 # For use when aggregating scores by gene later on, if the weighted argument is called
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
106
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
107 def weighted_average(scores,weights):
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
108 sum = 0
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
109 weighted_average = 0
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
110 weighted_variance = 0
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
111 top = 0
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
112 bottom = 0
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
113 i = 0
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
114 while i < len(weights):
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
115 if not scores[i]:
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
116 scores[i] = 0.0
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
117 top += float(weights[i])*float(scores[i])
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
118 bottom += float(weights[i])
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
119 i += 1
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
120 if bottom == 0:
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
121 return 0
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
122 weighted_average = top/bottom
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
123 top = 0
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
124 bottom = 0
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
125 i = 0
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
126 while i < len(weights):
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
127 top += float(weights[i]) * (float(scores[i]) - weighted_average)**2
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
128 bottom += float(weights[i])
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
129 i += 1
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
130 weighted_variance = top/bottom
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
131 weighted_stdev = math.sqrt(weighted_variance)
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
132 weighted_stder = weighted_stdev/math.sqrt(len(scores))
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
133 return (weighted_average, weighted_variance, weighted_stdev, weighted_stder)
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
134
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
135
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
136
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
137
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
138
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
139
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
140
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
141
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
142
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
143
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
144 ##### AGGREGATION / CALCULATIONS #####
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
145
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
146 #Reads the genes which should be marked in the final aggregate file into an array
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
147
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
148 import os.path
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
149 if arguments.marked:
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
150 with open(arguments.marked) as file:
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
151 marked_set = file.read().splitlines()
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
152
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
153 #Creates a dictionary of dictionaries to contain a summary of all genes and their fitness values
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
154 #The fitness values and weights match up, so that the weight of gene_summary[locus]["w"][2] would be gene_summary[locus]["s"][2]
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
155
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
156 import csv
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
157 gene_summary = {}
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
158 for eachfile in arguments.fitnessfiles:
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
159 with open(eachfile) as csvfile:
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
160 lines = csv.reader(csvfile)
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
161 for line in lines:
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
162 locus = line[9]
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
163 w = line[12]
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
164 if w == 'nW':
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
165 continue
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
166 if not w:
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
167 w == 0
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
168 c1 = float(line[2])
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
169 c2 = float(line[3])
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
170 avg = (c1+c2)/2
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
171 if avg < float(arguments.cutoff):
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
172 continue
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
173 if avg > float(arguments.weight_ceiling):
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
174 avg = arguments.weight_ceiling
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
175 if locus not in gene_summary:
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
176 gene_summary[locus] = {"w" : [], "s": []}
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
177 gene_summary[locus]["w"].append(w)
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
178 gene_summary[locus]["s"].append(avg)
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
179
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
180 #If finding any missing gene loci is requested in the arguments, starts out by loading all the known features from a genbank file
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
181
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
182 from Bio import SeqIO
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
183 if (arguments.find_missing):
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
184 output = [["locus","mean","var","sd","se","gene","Total","Blank","Not Blank","Blank Removed","M\n"]]
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
185 handle = open(arguments.find_missing, "rU")
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
186 for record in SeqIO.parse(handle, "genbank"):
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
187 refname = record.id
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
188 features = record.features
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
189 handle.close()
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
190
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
191 #Goes through the features to find which are genes
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
192
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
193 for feature in features:
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
194 gene = ""
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
195 if feature.type == "gene":
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
196 locus = "".join(feature.qualifiers["locus_tag"])
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
197 if "gene" in feature.qualifiers:
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
198 gene = "".join(feature.qualifiers["gene"])
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
199 else:
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
200 continue
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
201
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
202 #Goes through the fitness scores of insertions within each gene, and removes whatever % of blank fitness scores were requested along with their corresponding weights
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
203
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
204 #!!! issue = locus["w"] returning str not float for some reason!
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
205
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
206 sum = 0
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
207 num = 0
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
208 avgsum = 0
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
209 blank_ws = 0
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
210 i = 0
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
211 if locus in gene_summary.keys():
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
212 for w in gene_summary[locus]["w"]:
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
213 if float(w) == 0:
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
214 blank_ws += 1
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
215 else:
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
216 sum += float(w)
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
217 num += 1
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
218 count = num + blank_ws
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
219 removed = 0
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
220 to_remove = int(float(arguments.blank_pc)*count)
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
221 if blank_ws > 0:
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
222 i = 0
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
223 while i < len(gene_summary[locus]["w"]):
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
224 w = gene_summary[locus]["w"][i]
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
225 if removed == to_remove:
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
226 break
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
227 if float(w) == 0:
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
228 del gene_summary[locus]["w"][i]
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
229 del gene_summary[locus]["s"][i]
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
230 removed += 1
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
231 i -= 1
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
232 i += 1
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
233
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
234 #If all the fitness values within a gene are empty, sets mean/var to 0.10 and Xs out sd/se; marks the gene if that's requested
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
235
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
236 if num == 0:
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
237 if (arguments.marked and locus in marked_set):
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
238 output.append([locus, "0.10", "0.10", "X", "X", gene, count, blank_ws, num, removed, "M", "\n"])
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
239 else:
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
240 output.append([locus, "0.10", "0.10", "X", "X", gene, count, blank_ws, num, removed, "\n"])
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
241
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
242 #Otherwise calls average() or weighted_average() to find the aggregate w / count / standard deviation / standard error of the insertions within each gene; marks the gene if that's requested
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
243
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
244 else:
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
245 if not arguments.weighted:
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
246 (average, variance, stdev, stderr) = average(gene_summary[locus]["w"])
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
247 else:
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
248 (average, variance, stdev, stderr) = weighted_average(gene_summary[locus]["w"],gene_summary[locus]["s"])
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
249 if (arguments.marked and locus in marked_set):
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
250 output.append([locus, average, variance, stdev, stderr, gene, count, blank_ws, num, removed, "M", "\n"])
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
251 else:
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
252 output.append([locus, average, variance, stdev, stderr, gene, count, blank_ws, num, removed, "\n"])
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
253
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
254 #If a gene doesn't have any insertions, sets mean/var to 0.10 and Xs out sd/se, plus leaves count through removed blank because there were no reads.
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
255
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
256 else:
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
257 if (arguments.marked and locus in marked_set):
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
258 output.append([locus, "0.10", "0.10", "X", "X", gene, "", "", "", "", "M", "\n"])
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
259 else:
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
260 output.append([locus, "0.10", "0.10", "X", "X", gene, "", "", "", "", "\n"])
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
261
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
262 #Writes the aggregated fitness file
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
263
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
264 with open(arguments.summary, "wb") as csvfile:
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
265 writer = csv.writer(csvfile)
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
266 writer.writerows(output)
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
267
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
268 #If finding missing genes is not requested, just finds the aggregate w / count / standard deviation / standard error of the insertions within each gene, and writes them to a file, plus marks the genes requested
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
269 #This is never called through Galaxy since finding missing genes is just better than not finding them.
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
270
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
271 else:
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
272 output = [["Locus","W","Count","SD","SE","M\n"]]
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
273 for gene in gene_summary.keys():
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
274 sum = 0
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
275 num = 0
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
276 average = 0
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
277 if "w" not in gene_summary[gene]:
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
278 continue
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
279 for i in gene_summary[gene]["w"]:
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
280 sum += i
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
281 num += 1
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
282 average = sum/num
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
283 xminusxbars = 0
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
284 for i in w:
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
285 xminusxbars += (i-average)**2
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
286 if num > 1:
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
287 sd = math.sqrt(xminusxbars/(num-1))
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
288 se = sd / math.sqrt(num)
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
289 if (arguments.marked and locus in marked_set):
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
290 output.append([gene, average, num, sd, se, "M", "\n"])
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
291 else:
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
292 output.append([gene, average, num, sd, se, "\n"])
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
293 with open(arguments.summary, "wb") as csvfile:
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
294 writer = csv.writer(csvfile)
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
295 writer.writerows(output)
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
296
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
297
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
298
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
299
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
300
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
301
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
302
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
303
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
304
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
305
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
306
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
307
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
308
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
309
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
310
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
311
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
312
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
313
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
314
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
315
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
316
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
317
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
318
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
319
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
320
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
321
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
322
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
323
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
324
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
325
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
326
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
327
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
328
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
329
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
330
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
331
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
332
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
333
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
334
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
335
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
336
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
337
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
338
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
339
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
340
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
341
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
342
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
343
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
344
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
345
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
346
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
347
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
348
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
349
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
350
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
351
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
352
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
353
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
354
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
355
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
356
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
357
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
358
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
359
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
360
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
361
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
362
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
363
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
364
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
365
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
366
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
367
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
368
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
369
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
370
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
371
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
372
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
373
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
374
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
375
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
376
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
377
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
378
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
379
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
380
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
381
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
382
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
383
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
384
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
385
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
386
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
387
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
388
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
389
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
390
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
391 #
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
392 # ~MMM=:DMMM?, +NMMO=,:~I8MMMMM8+, , ~I8MMMMMN87~?8NNMMN8: +NMND~ +MN= ,$MMMI ?M8, ,OM8, :MN+ =MM? ,MMDNMMD ,+DM8I, ,,:::~~~::::::::::
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
393 # IMMMNMM8I ,I8MM87~::+$8NNMMMMOI+=~~:, ,,:~=?$DNMMMMMMDOZI7ZDMMMD8I , , $M8+?8MM8I , 7MI +MN= ZMN, 8MD MMN8MMM, :$ONM8I+=:, ,,,::::~~~~~=====~:
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
394 # , ,DMNN7: , ,OMMN7==~::~=?8NNMMMMMMNNMMMMMMMMMMMN8OO8ODNMMMMMD~ , IMMNMN~ ,OM+ ,NM$ ,NMO, :MM$ , ,:::,,::::,, $MNMMNM, ,,, :?ONMMNN8?~,, , ,,,,,,,::~~=+++??=~
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
395 # ,,:=+????+, I$ :ZMMN8$~:,,, ,:=?7$O8DD8O$7+==+$O8DNMMMMMMMMM$ ?$, == ,~, ~NM= 8MD, ,OM8ZMMO , ,::::::~~~:,, ?MNMMZ ,,,,,, ,+7ONMNMD8O$+~, ,,,,,,::~====::
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
396 # ,:=IONMMMMMMMMMMM8: ZN$: ,~DMMMND7=, ,,:~====:=$DNMMMMMMMN88MMMZ +N$ , ,7DN8= =MN, IMM =DMN7 ,,,,,,,,,, ,~?, ,,,,, , ~?$8MMMMNN8Z?~:,, ,:::,,,
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
397 #+ONMMMMMMNO7=:,, ,,+MMO, 7D$: ~OMNMNNMNNNNNNNNNNNMMMMMMMMMNMMMM?,~MMM8 ND, 7MM=, ?NN:, +MO, ?MM, ,,,, , :,:=$DMMMMMMN87=~, ,,,,,
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
398 #MMND8$: , 7NM7 , =?~,,, :?88DDDNNMNNNDNDD88Z?:, ZMM$ ,MMMO ,MM+ZNMM? ::ZNZ, +M$ ,MM?, , ,, ,,:=?Z8NMMMMMN8Z+=,
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
399 #: ~ZMM8~ ,,,, 8MM, +MMM, 7ZZI~=$OOZ$: ,:+???+, +MZ =MN= ,,, , ,,:~=?IIII$ZO88DDNNNNNNMMMMMMMMMMN~,
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
400 # ,:OMMM? ,,:,, 8MM ~NNM7 :OMMMMMMMMO: =M8, :NM~ = ,~?I, ,,,,,,,,,,,,,, ,~$DNMMMMMMMMMND8O888Z$II7777I??+++===:,
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
401 # ?DMM8?, OMN??NMM$ ~8MMMO?===7MMM8: ~NM= =NN: ,OM~ ,, +NMMN~ ,,,,, ,,,,,,,, ,?$O8NNMDDZ7?+=~:, , , ,
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
402 # , ~$MMMD+ , , ~MMNMMN~ : +NMMZ, NMNM~ 7MI , ZNN,, IMN, :DMNM+ ~+NMMMD~, ,,,,,,,, ,, ,,,,,:, +OMNMMOI~,
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
403 # , $MMMM$, , ,=?ODNMNNMNMMMMNNND~ ,$D$, , ,8MM8 ,MMM7 ,ZMNNMM= DMMNMMMMMMMMMMMMNI: , ,,,,,,,,, ,,, ?NMO=, ,
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
404 # ,~ZNMND7, ,,:~=+$DNNMMMMNDDDD888OZZZZ8NMMN IMMN: ,MMN~ +Z$+, ?NNNDO+:?O888OI, ,,,,,,, ,,, +MN+
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
405 # =ONMMM8~ , ,:=IDMMMMMMMND8$+:, , ,INMNZ :MMM~, , +MMD , ,, ,,::,,,, ,,:::, ?M8: ,
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
406 #8MMMNZ~ , =I$ONMMNDZ7?+, ,,=I8NMD7: DMMN DMN= ,:::, ,:~~=~~:,, :ZMMZI+: ,, ,,,,,,,
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
407 #MN7:,:=7ONMMMD$?=, , ~7ODNMM$+: ~MMM++7ZOZOO8O8D8$~ ,MM8 ,,,,::~~==~~:,, :+7DMMMMNNDD88OOZZZO88DNNNN8=, ,,,,,,,
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
408 #I,~+DMMNND7: , ,$MMMMMN7, $MMN :??+=~::,,,, NMD, ,:,,:::~=~~,,,, ,,=I$8DNMMMMMMMMMNMMMNZ: ,,,,,,
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
409 #DNMNN7:, ,+ONMMMMNI: NMM$ DMN= ,,,,:::::~~::,, ?DMMMMDZ=, ,,,
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
410 #N8$: ,,, ,:=?ONMMMD8Z+, ,,,, MMM= ZMMI ,=?$8NMMMMMMMMMMMN87=~~,,, :=ZMMMMD$~
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
411 # , ,=ZNMMMMMNI:, ,~?Z88888$=, ,:~+??~, MMM, IMM$ ,=ZNMMMMMN8$+~=~=~~===7ODNMMMN8DNMMMN+, ,,
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
412 # , ~?$ODMMMMNZ?: :II+~, ,=7= :?77?=:====?O+ ,,:,,, MMM, ?MM$ ,,,, :?ONMM8II=, , =DMMMM87=, ,,,,
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
413 # , ,, ,~I8MMMMMMN87?~:=+?7$ZOO88DD888O$I+~:, ~ZZ: ,$7,~??, ,?+ ,+Z8$?==??= MMM =MM$ :?ODNNNNNNNMMO: ,:?NNMNO= ,,,IMMMNZ, ,,,:,,,,,,,,,,,,,
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
414 #, ,~7DNMMMMMMMMMMMNNNNMMMNND8Z7II7$$$$ZODNNNMND$, :O$: , ,IN$, I+ +ZZ=,, 7+ MMM =ODDDDNNNNNN8= :MM$ ?DDNN8?::,, ,,7NMM8, 7NMNZ~, :OMMM$, , ,,:::~~:,,,,,,,,,,,,,,,,,
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
415 #?8NMMMMMMMMMMMN8I:,,, ~$NMMM$ :87 +DM$ ID+~78I, O7 :=+~ MMM , , ?MM7 $NMN$, :I8MMMMMMNMDNNNNNNNNNDD88ZI=: ,ZMM7, +MMN~ ,,,:::,, ,,:,::::,,,,,,
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
416 #MMMD8DNMDZ7=: ,:=+7ZNNNDOZ~ =DI , :7MM7, IDDZI, =DN88ZI77$N? NMM: $MM= ~: =OMNZ+ ,=7DMMMMMMNDDOOOOZ$7IIIII77$ZOO8NNMMD$+~ :OND~, ,, MMN= ,,,,,,,,,,,,,
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
417 #: ,,, , ,:+ZNMNNMMNO?: +8? +NMN7 , , ON~ 8MM$ NMD, ,7MMMN, 7MMO, ,:ONMMMMN8I: ,~ZNMNN$, ~MM? , ZMNND?~: ,,, ,, ,,,,,,
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
418 # , , ,:~?7$ZZ8NNMMMNO7I=, ~D+ ZNO=, , :NM$: =MMM NMO ~NMNMMM :ZDN$, ,,=7DMD$?=, :?ZMD$: :DMNOZZZ$: ,,,,, ~IDMMMMMMMMMMMMMMMMMMMMM8~
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
419 # , =DMNNNNNNNN8$= : , ,,~?ODNZ: :DM? =: ,MMM7 +MN~ ,MM8:NMN INMZ, ,=ONOI , +NMZ ,,+ZDMMMMMMMN+, ,,,,,,, ,~?$ODNNNNNNNMMMMMMMMD= ,
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
420 # ,:::::~7$I?=: ,~78NMNMMMMM? :+Z+ M8 $MM, =, DMMD NMN DMO OMM77NMI, ?8$~ , ~ZDDDNNNNNMMMMMMMMNMNNNNNDD8Z+:, IMN: I8DNMMMMN7~: ,,,,,, +$O$, ~$DMMMMMMMD~ ,, ,
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
421 # :I+ :ID? ~ZDNNNNMMNO?~,, ,:::::=7ONMNNNDMMMN$ ,=IONNMMMMZ:, ~MO ,7MMMI $MN, , :MMN ?8NDDNND$~ +MM~ ,MM~=MMMNMD, =ONNDDNMMMMMMMMMMMMNNND88DNNNNNMMMMMMMNDO7+~::,:,7MM+ =DMMMNNO? ~ZMMMMM7::~INMMMMMMMMMMMMMN8:
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
422 #:MMM+,INMMM: ,:~+78NMMMM8?==++++++???++??I$Z77$$$$$$$7II??I$ZZO8MMMMM8Z7~ ,IZI ~77+ ?MMMMD88MN8+~, +8MO$OMMMMMNMMMZ, ~=: OMM? ,MM? ZMM~MMMM8~ ,:+7$$$$ZZ7?==: :8MDOZ$ZZZODMMMMMM8+, ,:=?$ZZOOOOOOZ$: , , ,=8MNMMMMMMMMMMNDZ$7$MMMMMMMMMMMMMMMMMMNI+?I7ZDNMMMMMMMMMM$,
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
423 #=MMMZ$MMMMMM~ ,::::~==~~+I$8NMMMMMN$::::::::,,, ,,=ONDDO$7II?+~, , ,,$DD87: =NND= , ,+$$=:~, ,:, ,MMD NMI ,~?Z8DND88$?: 8MM$MMMZ:=~:,~~:::,,,=$DNMND$MM8, ~DMNMMMN?, :7$7?+==~=:,,,,,,,, ,,,,,,, ,,,,,,::,,,,,:::::::,,,::::::,, ,OM$,7MMMMMMNZ= , ~8MMMMMMMNDO7I7MMMMMMMMMMMMN8Z7+?NMMMD,,
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
424 #NMMMMMM? ,++, ~=I??= :7$ 7MM+ 7M7 ,:?ZZ$MMM8NMZ~+, :?INMMM? +$NMMMNZ: :+?I7$$Z$O88D88DDDDNNNNNNNNNNNNNNNNNNDDNDDDNNNNNMMNMMMMMMMNNNN$:??~ ,+II?=, , ,, ,?I??+=~, :MMMMMNM
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
425 #MMMMMD~ ,:=++++++++++=~,,, +MMN: ,MMD, :M$ ,INMNMMMMMMMMMM~~~?D, :OMM8: ,+$8Z$+,,$MMMMMD, :IODDDD
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
426 #N$~,,, ,~I$8NMMMMMMMMMNMMMMMMMMMMMMMMMMNNNN7: ZMMMM? NMMMNZ~:, +$: ,NMNI:::~?8MMM7I? IO ~I$ODNNNDND8OO$I?DMMMD$I8NMMMMMMMNMNMMMMMMM8=, ,
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
427 # ,:~?ONMMMMNNNDDD8NMD+, ,~?Z8NMNM8=, , $MNNNMM? :DMMMNDD8DZ7$+, ,8NMMNMNMMMD$: =8, ,INMMMNZI?====+I$$8DDNMMMMMMNNNMND7, :~$DMMMNMO
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
428 # ,?DMMMMMNNNMMM+::~++ZMMMM8ZZZZZZ$II77II7???=~:, ,+DMN7 =NMM8, ,NMMNMNMN$?I7I77OZ~ ~8D$~, ,MMMMMMNM8: :DMMM, , DMO=ZMZ,
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
429 # ,?OMMN87=, IZNNNMMMMMMMMMMND7IIII??III$8DDNN8Z+, , ~MM ?OMMMM~ ,MMMMMZ+ ~I= IMMMO$$= ?NNM? MN~ +NM:
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
430 # IMM8~ =MD, ?N= :,, ,+77?=+, $8MM7::OMMMMMMZ+ I+, ?NI , :MMM8$ NNI, 7M$
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
431 # ,MMN $MD 7M+ ~ODNZ~, :7MMN? , $MMMN= 7MNMN: +8+ ,D8~ =MMDD8Z= =NMD OM7,
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
432 # OMMD~ IMN: =8O:,~+$OO? :IZ+: :ZMMNM8= =DMMI ~8MM8= , ,, :8M?,$MM, ::, DM, =Z~ ,I8DDDN8$DMN~ MN ,=Z8DNDZZ= MD: ,
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
433 # ,,,,,,,, ?8NNMM8$I????++=+8MMMD$77$ZDMMNMMMDNOZ~ :IZ8DOI~, =MMMNMNM8I:, ,7M8I +MND7 ~MNDDM8~ 7MI MM7 :8MDDM7 8N= ~ID$, ,:Z$?:,,,=ONNMNMD= ?M$ :: +MI ,,,,,,::~~:::,,,,,,, ,+OMO:, ,
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
434 # ,,,::~===~~:, ,~+I$88DNNNNNNNNNDNDD8O$?~:, ,7DNMNDMMMN~,ZMND$8NNDZ=, $M? ?NNN7 =MO OMD$MM= MMMINMO $M7 DN: 8MMD: ?D~ :O8ZDMMMMD=, ,ZN$ ,INNMD= :NO ,:+8MMMMMMMMDI:,::,,
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
435 #=~~~::~~::, ~?78MMMDNMM? :+I$DD87?=, OMNDO$7$OI: 7N+ ?MNMN~ MMMNM$ 7M$ 7M$ +NMMO, ?N~ ~8+ ~7NMMNNOI= ~?ONZ+ ~ZNND,$M8 ~MO $MMMMMMMMMM7:::~~~~~~=+++===~~~:::,,
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
436 # ,~ONMMNO~, :?8NNMN8?~ZNMMMMMMMMMNMMNDOI=~NM? =MMM+ NMMMO 8M$ ,MM, $MMMN =D, ,?N~ , ?NMMMNNNDDO8DDD887, ,$ND= :O$NMZ IMO ,IMMMMN$, 7NO, ,,,,,:,,,
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
437 # ,~IDMNN8OI, :~+$DMMMMMMMN87+=~~~~?ZDNNMM, ?NM? :NMN :MM7 ~MN ~DMMMN O~ :DD, ,MMMMNNOI:,, , ,=ZODD8D? :MMM: NMZ +8NM8, ,, :~ ,,~:,
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
438 # ,INNMMNNO+ :=78NNZIIONMNNDMMN ,7D~ :MN~ MNMM?=MM $? OD, ,IMD ,:8MNMNNNNNNNNMMNM7: :8~ ZND OMN7, :NNMMMMN :8MMMMMNZ=:
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
439 # :O88NMMN$=~:, ?MMN88NMMMD =MN? =, :NM +7$NO, =N8 , OMI, ,, 7M: ZDDND? MMO ,, +MM8?OMN: ,::
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
440 # :$NMMMNMM8I: ,8MD, +MMN= ,=?77=:ZMMM7 ?MN ~$+ 7M7 ,DZ :M~ IMM8: ,8MN, , ,,,, :MMD,=DMM+,?O8= , ,
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
441 # ,=I77$ONNNZ?+ONMZ =$D ,+=::+$8NNMNDNMD7?, ?MN :~~: ~D7 ,NI ,M7 ~?ZNZ?, 8MM~ =ZMMN~$MMMMMMMNMMD$ONMMMMD:
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
442 # ~DMM= ~I7=, =DMMMD7MMM, :+?=?O$: ~N: ~MN88D$: NMM=, ~MMMMMMMMMMMMOZMMMMMM7::8MMI
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
443 # , :DNNI :~IDMMND :::=?II?==~::ZN7=+I$ZZZ8DZ+~~: IMMM~ ~MMMNMMMMMI~:7NMMMMD7,: +NM8,
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
444 # :NMM7, ~MM+ ,,,:~==~~~: , OMMN: ?NNMMMMM8, ~NMNO, =MMMN?,,
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
445 # ,,,,,,,, ,$8MMO= ~M8 +MNO: ,MM~ , :: ,~, ,,:::,,,,
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
446 # ,::,,,, ~ONND+ OD+ ?NMD, ?? ,::::::,,
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
447 # :=+??=:,,,,, ~?$D87I: ~Z? =$DM$: ,::,,,,,,,,
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
448 # ,:~==~, :+=, $NNNNZ~ ,,:~~: , :DMMMI
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
449 # ,~~~~~:,,, ,,, ,~IMMMN8O+, ,:~?7$Z7~, :ZDMNNDNM8ZI
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
450 # ,,~~:,, , :$DNNMMN8?, , ,~7ZOO?: ,:$NMMMM? :7NMMD?,
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
451 # ,:~~:,,, $NMMMMMNMNO?~ ~?ODDD$=, :?8MMMMMD?~7NMMMD$~ :ONMMN?
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
452 # ,,,,,,,,, ?$DMMMMMMMMMMD$?=~, ,~7ZZODN87????I$ODNMDOZ$7I: ~$ZDMD7==~ =$ZDND$++~,
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
453 # ~?++=~~, ~+?II7ZNMMMMMM8$$$?~, ,~?II7Z8DDOZ$77II+: ~?IZDM8O$I~, :??$8MMNZZ7+,
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
454 # , , ,+D7 :=IZ8NMMMNNMNNO$= ,:?ZDNNMMMNMND8Z7=, =ZNMMMMMD?,, :ONMNMMMN?,
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
455 # ,MMMM7 ,,::~IONNMMNNDDD8OZI=, ,::::=+I$ONMNNNNDDDNNMMMMMMMMMD87: ,:~=ZNNNDOI, ~7$ZO8DDNNNNDD8O+:,
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
456 #~, +MMMMDI?~ ,~+Z8DNDNNMMMMDD$+:,,, , ,~?7O8DNNNNNNMMMMMNOOZI??++?IZ88$: ,,~ZDMMMMMMMMMMMMMMMMMMNNNNNMMMNND8$=,,
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
457 # ,~: NMMMMOZMM8: ,7DZ~ ,,~IONMMMMMMMMMNDZ+~: , ,=I8DNMMMMMNMNMMMMMDNMMMMNMMMNNNDDDDD8O8Z$7II+++IZDDMMNMN$,,
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
458 # :~: MMMMMNMMM+ :, +?DOI~ ,:~?7$$ZODDNMNN8Z7??+=~:, ,~=+?7I?=:,,,,:=?I7$$$$$$$ZZZOO8DDNNMMNNNNNMMMMNMZ+
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
459 # ~=, MMMMMMMM8 ,NNNO , ,~?ZDNMNNNNNNND8O7?:,,, ,~=7DMMMMMMMMMZ~
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
460 # ,:+~ ,MMMMMMMMO ~N8: ,,:~, ,:~:,,, ,:~, ,:~~=+++?7$O8DNNNNNMMN8$=, ~+$ZO8DNNMMNNNND8OOOZ$+:, :=+I8MMMMDOI
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
461 # ,=+ MMMMMMMMMDMZ, ~?: ,,,,, ,:~~~, ,NN?$NMMMMMMMMMMMN87~:,,,=+=:,,,,,,:?NMMNMMMMMMNNDNDI8MMM+ ,
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
462 # +=, $MMMN?$NMN, ,+?+:, ,,:~~:, :=~, 8M= , :7ONNNO?~, , :$NNMMMMMMMMMMMMMN,
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
463 # ,+? ,NNO,, , :ODNNNZ: :?777I= IMO ,,=$Z7+~ ,?NNMMNZ: :7NMMMMMNMMMM8 , ,IDND~
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
464 # ,=~, 7I :+I+~::,, ~?I~ , ,~=~==: ZMZ ?8I: :I$DND$?~ :?$8MMN$?: ?ZDMMMMMMMM7 +$NMMMMMI
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
465 # ~~ , ,=+=: ,== ::, , ZMM: ?NN8: ,7NMMNI, ,$NMMMO: =NMMMNMM+ I8NMMMM,
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
466 # ~= ,~:,,~~, ,:, ,,,, , ,, +MN8 ,~OMM8Z, :+ZMNDOI =IMMN8= ,=NNMO ?NMMMD
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
467 # ::, ,,,:: ,:, ,, =MMO~ , ?NMMMI, ,INMMMDI, ~DMMN+, NMO ?DNO~
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
468 # ,~, ,,,::, ,, , ,, ,INMND+: :MMM+ ~ZDDMMMD?~:$MMMMMMMMMMM?
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
469 # ,, :~~:, ,:, ,, :ZMMMMNNMMMN, ,=ONMMMMNM$,,,,,, ,,
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
470 #Z, :, ,, ,~=~, ,, ,=?7$I= , :~~~, ,,,,
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
471 #MD= :: ,,,, , ,, ,,,,
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
472 #MNMI :: ,,, ,,,,
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
473 #7MMM? , ,~: :~:, ,:,
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
474 # OMMMO: ~NMD, :=: :+=: ,,,
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
475 # ~MMMN8: NMMM~ +?: ,:=++~ ,:,,
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
476 # $MMMMMNI,?MMMMZ ,DM7 ,=I= ~+~~:, ,:,,,
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
477 # +MMO~OMMMMMMMMD MMM7 , , =$~ ?OZ+ ,:,
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
478 # ~NMN: :+DNN7MMMNMMMDODMMN+ :+?, +77+~: :::,
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
479 # IMM+ ,NMMMMMMMMN?NM7 ~7+, , :+$I, , +8? :+~
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
480 # =NMD, NMMMMMM8~ ?NN, =ND? ,=??: ,8NMMMM= :++
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
481 # +DO, ~ZZ$ODI :8M~ :=I8NMNMMD+, ,:~~=: , +8MO$DMD+ ~===~: :~~:
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
482 # :$~ 7NMD$, ZMM8I? ,~=: , ZNN7,:MM8~,OMNMD8DMM= ++:
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
483 # =ZNOI: ?DND= ,?I~ ,,,: ,$ND+ ?NMNNNNN7+, 7MN, ,=+~
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
484 # :ZI: :, ,=7: ::,, $NN= 7NMMMM7: :DMMMN8NMMDDMN7 ,::,
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
485 # ~?= ,,, ,ZM= DMMD8 ?MMMMNN7, ,I+ :~~,
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
486 # =+, ,,, ,, =Z8: +$~
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
487 # :~ ,,~~,
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
488 # :, ::,
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
489 # ::, ,:::,
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
490 # ,, ,~
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
491 # ,, ,,,
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
492 #
e5211663e357 Uploaded
kaymccoy
parents:
diff changeset
493 #