comparison Tryp_G.py @ 16:c4e87b277576 draft

Uploaded
author johnheap
date Mon, 03 Jun 2019 15:58:48 -0400
parents e91e41380946
children
comparison
equal deleted inserted replaced
15:597fe882966e 16:c4e87b277576
1 1 """
2 2 * Copyright 2018 University of Liverpool
3 3 * Author: John Heap, Computational Biology Facility, UoL
4 4 * Based on original scripts of Sara Silva Pereira, Institute of Infection and Global Health, UoL
5 5 *
6 6 * Licensed under the Apache License, Version 2.0 (the "License");
7 <!DOCTYPE html> 7 * you may not use this file except in compliance with the License.
8 <html lang="en"> 8 * You may obtain a copy of the License at
9 <head> 9 *
10 <meta charset="utf-8"> 10 * http://www.apache.org/licenses/LICENSE-2.0
11 <link rel="dns-prefetch" href="https://github.githubassets.com"> 11 *
12 <link rel="dns-prefetch" href="https://avatars0.githubusercontent.com"> 12 * Unless required by applicable law or agreed to in writing, software
13 <link rel="dns-prefetch" href="https://avatars1.githubusercontent.com"> 13 * distributed under the License is distributed on an "AS IS" BASIS,
14 <link rel="dns-prefetch" href="https://avatars2.githubusercontent.com"> 14 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15 <link rel="dns-prefetch" href="https://avatars3.githubusercontent.com"> 15 * See the License for the specific language governing permissions and
16 <link rel="dns-prefetch" href="https://github-cloud.s3.amazonaws.com"> 16 * limitations under the License.
17 <link rel="dns-prefetch" href="https://user-images.githubusercontent.com/"> 17 *
18 18 """
19 19
20 20 import subprocess
21 <link crossorigin="anonymous" media="all" integrity="sha512-3+HOqCwtQal5hOJQ+mdxiq5zmGOTjF6RhjDsPLxbKDYgGlLFeCwzoIanb7j5IiCuXKUqyC2q8FdkC4nmx2P2rA==" rel="stylesheet" href="https://github.githubassets.com/assets/frameworks-a2fba223d5af91496cac70d4ec3624df.css" /> 21 import re
22 <link crossorigin="anonymous" media="all" integrity="sha512-MRlTIqIyb8caK5+o8llXVntXovciHyAM4qE3kWU2S7SIjAPDxYp4mE0jQp4kP5UYegy+lG9y1I6VlsdzEjb5Qw==" rel="stylesheet" href="https://github.githubassets.com/assets/site-294181adec18ed639e160b96b45d17ac.css" /> 22 import os
23 <link crossorigin="anonymous" media="all" integrity="sha512-XjvAy/mMWN5aOA+pyb/FgAgcVgJkPkwTCwvFK07Ez/H44lvl55ZLGwtpyL4MaMrwDE8QYO+1VYljKFjqr4/iJA==" rel="stylesheet" href="https://github.githubassets.com/assets/github-5b066aa36cc405c9cbcbadf1bde399ed.css" /> 23 import sys
24 import shutil
25 import pandas as pd
26 import numpy as np
27 import matplotlib as mpl
28 mpl.use('Agg')
29 import matplotlib.pyplot as plt
30 from matplotlib.mlab import PCA
31 import seaborn as sns
32
33 # some globals for convenience
34
35 pList = ['P1', 'P2', 'P3', 'P4', 'P5', 'P6', 'P7', 'P8', 'P9', 'P10', 'P11', 'P12', 'P13', 'P14', 'P15']
36
37 quietString = "" #" >>"+os.path.dirname(os.path.realpath(__file__))+"/log/Vap_log.txt 2>&1"
38
39 def assembleWithVelvet(name, kmers, inslen, covcut, fastq1name,fastq2name):
40 #argString = "velveth " + name + "_k65 65 -shortPaired -fastq " + name + "_R1.fastq " + name + "_R2.fastq"
41 argString = "velveth " + name + "_k"+ kmers+" "+ kmers + " -shortPaired -fastq " + fastq1name+" "+fastq2name+quietString
42 print(argString)
43 returncode = subprocess.call(argString, shell=True)
44 if returncode != 0:
45 return "Error in velveth"
46 argString = "velvetg " + name + "_k"+kmers+" -exp_cov auto -ins_length "+inslen+" -cov_cutoff "+covcut+" -clean yes -ins_length_sd 50 -min_pair_count 20"+quietString
47 #argString = "velvetg " + name + "_k65 -exp_cov auto -ins_length 400 -cov_cutoff 5 -clean yes -ins_length_sd 50 -min_pair_count 20"+quietString
48 print(argString)
49 returncode = subprocess.call(argString, shell = True)
50 if returncode != 0:
51 return "Error in velvetg"
52 shutil.copyfile(name + "_k"+kmers+"//contigs.fa",name + ".fa") # my $namechange = "mv ".$input."_k65/contigs.fa ".$input.".fa";
53 return "ok"
54
55 def contigTranslation(name):
56 argString = "transeq " + name + ".fa " + name + "_6frame.fas -frame=6 " #+quietString
57 print(argString)
58 returncode = subprocess.call(argString, shell=True)
59
60
61 def HMMerMotifSearch(name):
62 motifs = ['1', '2a', '2b', '3', '4a', '4b', '4c', '5', '6', '7', '8a', '8b', '9a', '9b',
63 '9c', '10a', '10b', '11a', '11b', '12', '13a', '13b', '13c', '13d', '14', '15a', '15b', '15c']
64 lineCounts = []
65 compoundList = []
66 dir_path = os.path.dirname(os.path.realpath(__file__))
67 phylopath = dir_path + "/data/Motifs/Phylotype"
68 for m in motifs:
69 argString = "hmmsearch " + phylopath + m + ".hmm " + name + "_6frame.fas > Phy" + m + ".out" # +quietString
70 # argString = "hmmsearch "+phylopath + m + ".hmm " + dir_path+"/data/Test_6frame.fas > Phy" + m + ".out"
71 #print(argString)
72 subprocess.call(argString, shell=True)
73
74 hmmResult = open("Phy" + m + ".out", 'r')
75 tempout = open(dir_path + "/data/" + "Phy" + m + ".txt", 'w')
76 #regex = r"NODE_[0-9]{1,7}_length_[0-9]{1,7}_cov_[0-9]{1,10}.[0-9]{1,7}_[0-9]{1,2}"
77 n = 0
78 outList = []
79 for l in range(0,14):
80 hmmResult.readline() #hacky? miss out the first 14 lines. data we want starts on line 15
81
82
83 for line in hmmResult:
84 if re.search(r"inclusion", line):
85 #print("inclusion threshold reached")
86 break
87 if len(line) <= 1:
88 #print("end of data")
89 break
90 m = line[60:-1]
91 #print(m)
92 #tempout.write(m.group() + "\n")
93 outList.append("" + m + "\n")
94 n += 1
95 compoundList.append(outList)
96 lineCounts.append(n)
97 hmmResult.close()
98
99
100 print(lineCounts)
101 motifGroups = [['1'], ['2a', '2b'], ['3'], ['4a', '4b', '4c'], ['5'], ['6'], ['7'], ['8a', '8b'], ['9a', '9b',
102 '9c'],
103 ['10a', '10b'], ['11a', '11b'], ['12'], ['13a', '13b', '13c', '13d'], ['14'], ['15a', '15b', '15c']]
104 concatGroups = [1, 2, 1, 3, 1, 1, 1, 2, 3, 2, 2, 1, 4, 1, 3]
105 countList = []
106 countIndex = 0
107 totalCount = 0
108
109 for c in concatGroups:
110 a = []
111 for n in range(0, c):
112 a = a + compoundList.pop(0)
113 t = set(a)
114 countList.append(len(t))
115 totalCount += len(t)
116 countList.append(totalCount)
117 #print(countList)
118 #print("--------")
119 return countList
120
121
122
123 def relativeFrequencyTable(countList, name, htmlresource):
124 relFreqList = []
125 c = float(countList[15])
126 if c == 0:
127 return [0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0]
128 for i in range(0, 15):
129 relFreqList.append(countList[i] / c)
130
131 data = {'Phylotype': pList, 'Relative Frequency': relFreqList}
132 relFreq_df = pd.DataFrame(data)
133 j_fname = htmlresource+"/" + name + "_relative_frequency.csv"
134 relFreq_df.to_csv(j_fname)
135 return relFreqList # 0-14 = p1-p15 counts [15] = total counts
136
137
138
139
140 def getDeviationFromMean(frequencyList, name, htmlresource):
141 devList = []
142 dir_path = os.path.dirname(os.path.realpath(__file__))
143 j_fname = dir_path + "/data/congodata.csv"
144 #j_fname = r"data/congodata.csv"
145 congo_df = pd.read_csv(j_fname) # we get the means from congo_df
146 for p in range(0, 15):
147 m = congo_df[pList[p]].mean()
148 dev = -(m - frequencyList[p])
149 devList.append(dev)
150
151 data = {'Phylotype': pList, 'Deviation from Mean': devList}
152 dev_df = pd.DataFrame(data)
153 j_fname = htmlresource+"/" + name + "_deviation_from_mean.csv"
154 dev_df.to_csv(j_fname)
155 return devList
156
157
158 def relativeFrequencyHeatMap(name, freqList, pdf, htmlresource):
159 localFreqList = freqList[:]
160 localFreqList.insert(0, name)
161 dir_path = os.path.dirname(os.path.realpath(__file__))
162 j_fname = dir_path+"/data/congodata.csv"
163 #print(dir_path)
164 congo_df = pd.read_csv(j_fname)
165 congo_df.drop('Colour', axis=1, inplace=True)
166 congo_df.loc[congo_df.index.max() + 1] = localFreqList
167 ysize = len(congo_df) * 20 / 97.0 # make vertical size equivlanet 20' is ok for 97.
168
169 congo_df.set_index('Strain', inplace=True)
170
171 cg = sns.clustermap(congo_df, method='ward', cmap = "RdBu_r", col_cluster=False, yticklabels = congo_df.index.values,figsize = (10,ysize))
172 plt.setp(cg.ax_heatmap.yaxis.get_ticklabels(), rotation=0, fontsize=8) # get y labels printed horizontally
173 ax=cg.ax_heatmap
174 title = "Variant Antigen Profiles of $\itTrypanosoma$ $\itcongolense$ estimated as the phylotype proportion across the\nsample cohort. "
175 title += "Dendrogram reflects the relationships amongst the VSG repertoires of each strain. "
176 title += "Strains\nwere isolated from multiple African countries as described in Silva Pereira et al. (2018)."
177 title += "\nData was produced with the 'Variant Antigen Profiler' (Silva Pereira et al., 2019)."
178
179 #title = "Variant Antigen Profiles of Trypanosoma congolense estimated as the phylotype proportion across the sample cohort. Dendrogram reflects the relationships amongst the VSG repertoires of each strain. Strains were isolated from multiple African countries as described in Silva Pereira et al. (2018). Data was produced with the 'Variant Antigen Profiler' (Silva Pereira and Jackson, 2018)."
180 #ax.set_title(title, ha = "center", va = "bottom",wrap = "True")
181 #title = "Where is this!"
182 ax.text(-0.15,-0.05, title,va = "top",wrap = "True", transform = ax.transAxes )
183
184
185
186
187 # cg.dendrogram_col.linkage # linkage matrix for columns
188 # cg.dendrogram_row.linkage # linkage matrix for rows
189 #plt.savefig(r"results/" + name + "_heatmap.png")
190 plt.savefig(htmlresource+"/heatmap.png",bbox_inches='tight')
191 if pdf == 'PDF_Yes':
192 plt.savefig(htmlresource+"/heatmap.pdf", bbox_inches='tight')
193 #shutil.copyfile("heatmap.pdf",heatmapfn) #
194 #plt.show()
195
196 def deviationFromMeanHeatMap(name,devList, pdf, htmlresource):
197 localDevList = devList[:]
198 localDevList.insert(0, name)
199 dir_path = os.path.dirname(os.path.realpath(__file__))
200 j_fname = dir_path+ "/data/congodata_deviationfromthemean.csv"
201 #j_fname = r"data/congodata_deviationfromthemean.csv"
202 congo_df = pd.read_csv(j_fname)
203 congo_df.drop('Colour', axis=1, inplace=True)
204 congo_df.loc[congo_df.index.max() + 1] = localDevList
205 ysize = len(congo_df) * 20 / 97.0 # make vertical size equivlanet 20' is ok for 97.
206 congo_df.set_index('Strain', inplace=True)
207 cg = sns.clustermap(congo_df, method='ward',cmap = "RdBu_r", col_cluster=False, yticklabels = congo_df.index.values,figsize = (10,ysize))
208 plt.setp(cg.ax_heatmap.yaxis.get_majorticklabels(), rotation=0, fontsize=8) # get y labels printed horizontally
209 ax = cg.ax_heatmap
210 title = "Variant Antigen Profiles of $\itTrypanosoma$ $\itcongolense$ expressed as the deviation from the mean phylotypes "
211 title +="\nproportions of the sample cohort. Dendrogram reflects the relationships amongst the VSG repertoires of "
212 title +="each \nstrain. Strains were isolated from multiple African countries as described in Silva Pereira et al. (2018)."
213 title +="\nData was produced with the 'Variant Antigen Profiler' (Silva Pereira et al., 2019)."
214 #ax.set_title(title,ha = "center", va = "bottom",wrap = "True")
215 ax.text(-0.2, -0.05, title, va="top", transform=ax.transAxes, wrap="True")
216 plt.savefig(htmlresource+"/dheatmap.png",bbox_inches='tight')
217 if pdf == 'PDF_Yes':
218 plt.savefig(htmlresource+"/dheatmap.pdf", bbox_inches='tight')
219 #shutil.copyfile("dheatmap.pdf",dhmapfn)
220 #plt.show()
221
222
223 def plotPCA(name, freqList, pdf, htmlresource):
224 localFreqList = freqList[:]
225 localFreqList.insert(0, name)
226 localFreqList.append(name)
227 dir_path = os.path.dirname(os.path.realpath(__file__))
228 j_fname = dir_path + "/data/congodata.csv"
229 #j_fname = r"data/congodata.csv"
230 congo_df = pd.read_csv(j_fname)
231 congo_df.loc[congo_df.index.max() + 1] = localFreqList
232 # print(congo_df.tail(2))
233 myColours = congo_df['Colour']
234 myCountries = congo_df.drop_duplicates('Colour')['Colour'].tolist()
235 # print(myCountries)
236 congo_df.drop('Colour', axis=1, inplace=True)
237 congo_df.set_index('Strain', inplace=True)
238 dataArray = congo_df.as_matrix()
239 pcaResult = PCA(dataArray)
240 # pcaResult.center(0)
241 # can't seem to find a simple way of prooducing a decent legend.
242 # going to seperate items in to different countires.
243 compoundList = []
244 for i in myCountries:
245 compoundList.append([])
246
247 i = 0
248 for item in pcaResult.Y:
249 col = myCountries.index(myColours[i])
250 compoundList[col].append(-item[0])
251 compoundList[col].append(item[1])
252 i = i + 1
253 colormap = plt.cm.tab20 # nipy_spectral, Set1,Paired
254 cols = [colormap(i) for i in np.linspace(0, 1, 20)]
255 fig, ax = plt.subplots(figsize=(9, 6))
256 #plt.figure(num=1,figsize=(12, 6))
257 i = 0
258 for d in myCountries:
259 a = compoundList[i]
260 b = a[::2]
261 c = a[1::2]
262 ax.scatter(b, c, color=cols[i], label=myCountries[i])
263 i = i + 1
264 leg = ax.legend( bbox_to_anchor=(1.02,1.02), loc = "upper left") #move legend out of plot
265 title = "Principal Component Analysis of the Variant Antigen Profiles of $\itTrypanosoma$ $\itcongolense$. " \
266 "The plot reflects the\nrelationships amongst the VSG repertoires of each strain. Strains are color-coded " \
267 "by location of collection according\nto key. Strains were isolated from multiple African countries as described in Silva Pereira et al. (2018)."
268 title +="\nData was produced with the 'Variant Antigen Profiler' (Silva Pereira et al., 2019)."
269 #plt.title(title, ha = "center", va = "bottom",wrap = "True")
270 tx = ax.text(-0.1, -0.07, title, va="top", transform=ax.transAxes, wrap="True")
271 #fig.add_axes([0,0.05,1.05,1.05])
272 #fig.tight_layout(rect=[0, 0.03, 1, 0.95])
273 fig.subplots_adjust(bottom = 0.3)
274
275 fig.savefig(htmlresource+"/vapPCA.png", bbox_extra_artists=(leg,tx), bbox_inches='tight')
276 #fig.savefig(htmlresource+"/vapPCA.png", bbox_extra_artists=(leg,))
277 if pdf == 'PDF_Yes':
278 fig.savefig(htmlresource+"/vapPCA.pdf",bbox_extra_artists=(leg,tx), bbox_inches='tight')
279 #shutil.copyfile("vapPCA.pdf",PCAfn) # my $namechange = "mv ".$input."_k65/contigs.fa ".$input.".fa";
280 #plt.show()
281
282 def createHTML(name,htmlfn,freqList,devList):
283 #assumes imgs are heatmap.png, dheatmap.png, vapPCA.png and already in htmlresource
284 htmlString = r"<html><title>T.congolense VAP</title><body><div style='text-align:center'><h2><i>Trypanosoma congolense</i> Variant Antigen Profile</h2><h3>"
285 htmlString += name
286 htmlString += r"<br/>Genomic Analysis</h3>"
287 htmlString += "<p style = 'margin-left:23%; margin-right:23%'>Table Legend: Variant Antigen Profiles of <i>Trypanosoma congolense</i> estimated as the phylotype proportion and as the deviation from the mean across the sample cohort.<br>" \
288 "Data was produced with the 'Variant Antigen Profiler' (Silva Pereira et al., 2019).</p>"
289 htmlString += r"<style> table, th, tr, td {border: 1px solid black; border-collapse: collapse;}</style>"
290
291 htmlString += r"<table style='width:50%;margin-left:25%;text-align:center'><tr><th>Phylotype</th><th>Relative Frequency</th><th>Deviation from Mean</th></tr>"
292 tabString = ""
293 # flush out table with correct values
294 for i in range(0, 15):
295 f= format(freqList[i],'.4f')
296 d= format(devList[i],'.4f')
297 tabString += "<tr><td>phy" + str(i + 1) + "</td><td>" + f + "</td><td>" + d + "</td></tr>"
298 #tabString += "<tr><td>phy" + str(i + 1) + "</td><td>" + str(freqList[i]) + "</td><td>" + str(devList[i]) + "</td></tr>"
299 htmlString += tabString + "</table><br><br><br><br><br>"
300
301 htmlString += r"<h3>The Variation Heat Map and Dendrogram</h3><p>The absolute phylotype variation in the sample compared to model dataset.</p>"
302 imgString = r"<img src = 'heatmap.png' alt='Variation Heatmap' style='max-width:100%'><br><br>"
303 htmlString += imgString
304
305 htmlString += r"<br><br><br><br><h3>The Deviation Heat Map and Dendrogram</h3><p>The phylotype variation expressed as the deviation from your sample mean compared to the model dataset</p>"
306 imgString = r"<img src = 'dheatmap.png' alt='Deviation Heatmap' style='max-width:100%'><br><br>"
307 htmlString += imgString
308
309 htmlString += r"<br><br><br><br><h3>The Variation PCA plot</h3><p>PCA analysis corresponding to absolute variation. Colour coded according to location</p>"
310 imgString = r"<img src = 'vapPCA.png' alt='PCA Analysis' style='max-width:100%'><br><br>"
311 htmlString += imgString + r"</div></body></html>"
312
313 with open(htmlfn, "w") as htmlfile:
314 htmlfile.write(htmlString)
315
316
317 def assemble(args,dict):
318 #argdict = {'name': 2, 'pdfexport': 3, 'kmers': 4, 'inslen': 5, 'covcut': 6, 'forward': 7, 'reverse': 8, 'html_file': 9,'html_resource': 10}
319 assembleWithVelvet(args[dict['name']],args[dict['kmers']], args[dict['inslen']],args[dict['covcut']], args[dict['forward']],args[dict['reverse']])
320 contigTranslation(args[dict['name']])
321 myCountList = HMMerMotifSearch(args[dict['name']])
322 myFreqList = relativeFrequencyTable(myCountList, args[dict['name']],args[dict['html_resource']]) # saves out inputname_relative_frequncy.csv
323 # myFreqList = [0.111670020120724, 0.103621730382294, 0.0784708249496982, 0.0110663983903421,
324 # 0.0543259557344064, 0.0563380281690141, 0.0734406438631791, 0.0160965794768612,
325 # 0.0110663983903421, 0.028169014084507, 0.126760563380282, 0.0583501006036217, 0.062374245472837,
326 # 0.0372233400402414, 0.17102615694165]
327
328
329 myDevList = getDeviationFromMean(myFreqList, args[dict['name']], args[dict['html_resource']]) # saves out inputname_deviation_from_mean.csv
330 relativeFrequencyHeatMap(args[dict['name']], myFreqList,args[dict['pdfexport']], args[dict['html_resource']])
331 deviationFromMeanHeatMap(args[dict['name']], myDevList,args[dict['pdfexport']], args[dict['html_resource']])
332 plotPCA(args[dict['name']], myFreqList,args[dict['pdfexport']], args[dict['html_resource']])
333 createHTML(args[dict['name']], args[dict['html_file']], myFreqList, myDevList) # assumes imgs are heatmap.png, dheatmap.png, vapPCA.png and already in htmlresource
334
335 def contigs(args,dict):
336 #argdict = {'name': 2, 'pdfexport': 3, 'contigs': 4, 'html_file': 5, 'html_resource': 6}
337
338 shutil.copyfile(args[dict['contigs']], args[dict['name']]+".fa")
339
24 340
25 341
26 342 contigTranslation(args[dict['name']])
27 343 myCountList = HMMerMotifSearch(args[dict['name']])
28 344 myFreqList = relativeFrequencyTable(myCountList, args[dict['name']],
29 <meta name="viewport" content="width=device-width"> 345 args[dict['html_resource']]) # saves out inputname_relative_frequncy.csv
30 346 # myFreqList = [0.111670020120724, 0.103621730382294, 0.0784708249496982, 0.0110663983903421,
31 <title>VAPPER-Galaxy/Tryp_G.py at master · johnheap/VAPPER-Galaxy · GitHub</title> 347 # 0.0543259557344064, 0.0563380281690141, 0.0734406438631791, 0.0160965794768612,
32 <meta name="description" content="Contribute to johnheap/VAPPER-Galaxy development by creating an account on GitHub."> 348 # 0.0110663983903421, 0.028169014084507, 0.126760563380282, 0.0583501006036217, 0.062374245472837,
33 <link rel="search" type="application/opensearchdescription+xml" href="/opensearch.xml" title="GitHub"> 349 # 0.0372233400402414, 0.17102615694165]
34 <link rel="fluid-icon" href="https://github.com/fluidicon.png" title="GitHub"> 350
35 <meta property="fb:app_id" content="1401488693436528"> 351
36 352 myDevList = getDeviationFromMean(myFreqList, args[dict['name']],
37 <meta name="twitter:image:src" content="https://avatars0.githubusercontent.com/u/24318980?s=400&amp;v=4" /><meta name="twitter:site" content="@github" /><meta name="twitter:card" content="summary" /><meta name="twitter:title" content="johnheap/VAPPER-Galaxy" /><meta name="twitter:description" content="Contribute to johnheap/VAPPER-Galaxy development by creating an account on GitHub." /> 353 args[dict['html_resource']]) # saves out inputname_deviation_from_mean.csv
38 <meta property="og:image" content="https://avatars0.githubusercontent.com/u/24318980?s=400&amp;v=4" /><meta property="og:site_name" content="GitHub" /><meta property="og:type" content="object" /><meta property="og:title" content="johnheap/VAPPER-Galaxy" /><meta property="og:url" content="https://github.com/johnheap/VAPPER-Galaxy" /><meta property="og:description" content="Contribute to johnheap/VAPPER-Galaxy development by creating an account on GitHub." /> 354 relativeFrequencyHeatMap(args[dict['name']], myFreqList, args[dict['pdfexport']], args[dict['html_resource']])
39 355 deviationFromMeanHeatMap(args[dict['name']], myDevList, args[dict['pdfexport']], args[dict['html_resource']])
40 <link rel="assets" href="https://github.githubassets.com/"> 356 plotPCA(args[dict['name']], myFreqList, args[dict['pdfexport']], args[dict['html_resource']])
41 357 createHTML(args[dict['name']], args[dict['html_file']], myFreqList,
42 <meta name="pjax-timeout" content="1000"> 358 myDevList) # assumes imgs are heatmap.png, dheatmap.png, vapPCA.png and already in htmlresource
43 359
44 <meta name="request-id" content="A689:5C3D:C6144:14D916:5CF5617A" data-pjax-transient> 360
45 361 def genomicProcess(inputname, exportpdf, forwardFN, reverseFN, htmlfile, htmlresource):
46 362 assembleWithVelvet(inputname,forwardFN,reverseFN)
47 363 contigTranslation(inputname)
48 364 myCountList = HMMerMotifSearch(inputname)
49 <meta name="selected-link" value="repo_source" data-pjax-transient> 365 myFreqList = relativeFrequencyTable(myCountList, inputname, htmlresource) # saves out inputname_relative_frequncy.csv
50 366 #myFreqList = [0.111670020120724, 0.103621730382294, 0.0784708249496982, 0.0110663983903421,
51 <meta name="google-site-verification" content="KT5gs8h0wvaagLKAVWq8bbeNwnZZK1r1XQysX3xurLU"> 367 # 0.0543259557344064, 0.0563380281690141, 0.0734406438631791, 0.0160965794768612,
52 <meta name="google-site-verification" content="ZzhVyEFwb7w3e0-uOTltm8Jsck2F5StVihD0exw2fsA"> 368 # 0.0110663983903421, 0.028169014084507, 0.126760563380282, 0.0583501006036217, 0.062374245472837,
53 <meta name="google-site-verification" content="GXs5KoUUkNCoaAZn7wPN-t01Pywp9M3sEjnt_3_ZWPc"> 369 # 0.0372233400402414, 0.17102615694165]
54 370
55 <meta name="octolytics-host" content="collector.githubapp.com" /><meta name="octolytics-app-id" content="github" /><meta name="octolytics-event-url" content="https://collector.githubapp.com/github-external/browser_event" /><meta name="octolytics-dimension-request_id" content="A689:5C3D:C6144:14D916:5CF5617A" /><meta name="octolytics-dimension-region_edge" content="iad" /><meta name="octolytics-dimension-region_render" content="iad" /> 371
56 <meta name="analytics-location" content="/&lt;user-name&gt;/&lt;repo-name&gt;/blob/show" data-pjax-transient="true" /> 372 myDevList = getDeviationFromMean(myFreqList, inputname,htmlresource) # saves out inputname_deviation_from_mean.csv
57 373
58 374 relativeFrequencyHeatMap(inputname, myFreqList, exportpdf, htmlresource)
59 375 deviationFromMeanHeatMap(inputname, myDevList, exportpdf, htmlresource)
60 <meta name="google-analytics" content="UA-3769691-2"> 376 plotPCA(inputname, myFreqList, exportpdf, htmlresource)
61 377 createHTML(inputname, htmlfile, myFreqList,myDevList) # assumes imgs are heatmap.png, dheatmap.png, vapPCA.png and already in htmlresource
62 378 return
63 <meta class="js-ga-set" name="dimension1" content="Logged Out"> 379
64 380
65 381
66 382 if __name__ == "__main__":
67 383 #contigTranslation('Tcongo')
68 384 #contigTranslation('Test')
69 <meta name="hostname" content="github.com"> 385 #newHMMerMotifSearch('Test')
70 <meta name="user-login" content=""> 386 #HMMerMotifSearch('Tcongo')
71 387 #sys.exit()
72 <meta name="expected-hostname" content="github.com"> 388
73 <meta name="js-proxy-site-detection-payload" content="MTYzNmJkYWI5MWFjYjU5OWIzMjNlMGQxYjEyNWJiODU0ZmQ2MGY0MmUyYWY1MTI1ZTIwOGEzNDY0Mjc4MDRjMXx7InJlbW90ZV9hZGRyZXNzIjoiMTI4LjExOC4yNTAuNSIsInJlcXVlc3RfaWQiOiJBNjg5OjVDM0Q6QzYxNDQ6MTREOTE2OjVDRjU2MTdBIiwidGltZXN0YW1wIjoxNTU5NTg1MTQ3LCJob3N0IjoiZ2l0aHViLmNvbSJ9"> 389
74 390 myFreqList = [0.111670020120724, 0.103621730382294, 0.0784708249496982, 0.0110663983903421,
75 <meta name="enabled-features" content="UNIVERSE_BANNER,MARKETPLACE_INVOICED_BILLING,MARKETPLACE_SOCIAL_PROOF_CUSTOMERS,MARKETPLACE_TRENDING_SOCIAL_PROOF,MARKETPLACE_RECOMMENDATIONS"> 391 0.0543259557344064, 0.0563380281690141, 0.0734406438631791, 0.0160965794768612,
76 392 0.0110663983903421, 0.028169014084507, 0.126760563380282, 0.0583501006036217, 0.062374245472837,
77 <meta name="html-safe-nonce" content="2948e5e4e89293d0a3b1401d89108155900da211"> 393 0.0372233400402414, 0.17102615694165]
78 394 myDevList = [0.000790026,0.0073109,-0.001151769,-0.004502933,-0.013687421,-0.016159773,0.021689891,
79 <meta http-equiv="x-pjax-version" content="af1499c2254d0582d0a98af1dfd7f11b"> 395 0.007863809,-0.003133585,-0.001111709,-0.01313879,0.0036997,-0.00935284,0.005640693,0.015243802]
80 396
81 397 relativeFrequencyHeatMap('test', myFreqList, "PDF_Yes","results")
82 <link href="https://github.com/johnheap/VAPPER-Galaxy/commits/master.atom" rel="alternate" title="Recent Commits to VAPPER-Galaxy:master" type="application/atom+xml"> 398 deviationFromMeanHeatMap('test', myDevList, "PDF_Yes","results")
83 399 plotPCA('test',myFreqList,"PDF_Yes","results")
84 <meta name="go-import" content="github.com/johnheap/VAPPER-Galaxy git https://github.com/johnheap/VAPPER-Galaxy.git"> 400
85 401 createHTML('test',"results/test.html", myFreqList, myDevList)
86 <meta name="octolytics-dimension-user_id" content="24318980" /><meta name="octolytics-dimension-user_login" content="johnheap" /><meta name="octolytics-dimension-repository_id" content="139730674" /><meta name="octolytics-dimension-repository_nwo" content="johnheap/VAPPER-Galaxy" /><meta name="octolytics-dimension-repository_public" content="true" /><meta name="octolytics-dimension-repository_is_fork" content="false" /><meta name="octolytics-dimension-repository_network_root_id" content="139730674" /><meta name="octolytics-dimension-repository_network_root_nwo" content="johnheap/VAPPER-Galaxy" /><meta name="octolytics-dimension-repository_explore_github_marketplace_ci_cta_shown" content="false" /> 402 #contigTranslation("Test")
87 403 #myCountList = HMMerMotifSearch("Test")
88 404
89 <link rel="canonical" href="https://github.com/johnheap/VAPPER-Galaxy/blob/master/Tryp_G.py" data-pjax-transient> 405
90 406 sys.exit()
91
92 <meta name="browser-stats-url" content="https://api.github.com/_private/browser/stats">
93
94 <meta name="browser-errors-url" content="https://api.github.com/_private/browser/errors">
95
96 <link rel="mask-icon" href="https://github.githubassets.com/pinned-octocat.svg" color="#000000">
97 <link rel="icon" type="image/x-icon" class="js-site-favicon" href="https://github.githubassets.com/favicon.ico">
98
99 <meta name="theme-color" content="#1e2327">
100
101
102
103
104
105 <link rel="manifest" href="/manifest.json" crossOrigin="use-credentials">
106
107 </head>
108
109 <body class="logged-out env-production page-responsive page-blob">
110
111
112 <div class="position-relative js-header-wrapper ">
113 <a href="#start-of-content" tabindex="1" class="px-2 py-4 bg-blue text-white show-on-focus js-skip-to-content">Skip to content</a>
114 <div id="js-pjax-loader-bar" class="pjax-loader-bar"><div class="progress"></div></div>
115
116
117
118
119
120
121 <header class="Header-old header-logged-out js-details-container Details position-relative f4 py-2" role="banner">
122 <div class="container-lg d-lg-flex flex-items-center p-responsive">
123 <div class="d-flex flex-justify-between flex-items-center">
124 <a class="mr-4" href="https://github.com/" aria-label="Homepage" data-ga-click="(Logged out) Header, go to homepage, icon:logo-wordmark">
125 <svg height="32" class="octicon octicon-mark-github text-white" viewBox="0 0 16 16" version="1.1" width="32" aria-hidden="true"><path fill-rule="evenodd" d="M8 0C3.58 0 0 3.58 0 8c0 3.54 2.29 6.53 5.47 7.59.4.07.55-.17.55-.38 0-.19-.01-.82-.01-1.49-2.01.37-2.53-.49-2.69-.94-.09-.23-.48-.94-.82-1.13-.28-.15-.68-.52-.01-.53.63-.01 1.08.58 1.23.82.72 1.21 1.87.87 2.33.66.07-.52.28-.87.51-1.07-1.78-.2-3.64-.89-3.64-3.95 0-.87.31-1.59.82-2.15-.08-.2-.36-1.02.08-2.12 0 0 .67-.21 2.2.82.64-.18 1.32-.27 2-.27.68 0 1.36.09 2 .27 1.53-1.04 2.2-.82 2.2-.82.44 1.1.16 1.92.08 2.12.51.56.82 1.27.82 2.15 0 3.07-1.87 3.75-3.65 3.95.29.25.54.73.54 1.48 0 1.07-.01 1.93-.01 2.2 0 .21.15.46.55.38A8.013 8.013 0 0 0 16 8c0-4.42-3.58-8-8-8z"/></svg>
126 </a>
127
128 <div class="d-lg-none css-truncate css-truncate-target width-fit p-2">
129
130 <svg class="octicon octicon-repo" viewBox="0 0 12 16" version="1.1" width="12" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M4 9H3V8h1v1zm0-3H3v1h1V6zm0-2H3v1h1V4zm0-2H3v1h1V2zm8-1v12c0 .55-.45 1-1 1H6v2l-1.5-1.5L3 16v-2H1c-.55 0-1-.45-1-1V1c0-.55.45-1 1-1h10c.55 0 1 .45 1 1zm-1 10H1v2h2v-1h3v1h5v-2zm0-10H2v9h9V1z"/></svg>
131 <a class="Header-link" href="/johnheap">johnheap</a>
132 /
133 <a class="Header-link" href="/johnheap/VAPPER-Galaxy">VAPPER-Galaxy</a>
134
135
136 </div>
137
138 <div class="d-flex flex-items-center">
139 <a class="d-inline-block d-lg-none f5 text-white no-underline border border-gray-dark rounded-2 px-2 py-1 mr-3 mr-sm-5" data-hydro-click="{&quot;event_type&quot;:&quot;authentication.click&quot;,&quot;payload&quot;:{&quot;location_in_page&quot;:&quot;site header&quot;,&quot;repository_id&quot;:null,&quot;auth_type&quot;:&quot;SIGN_UP&quot;,&quot;client_id&quot;:null,&quot;originating_request_id&quot;:&quot;A689:5C3D:C6144:14D916:5CF5617A&quot;,&quot;originating_url&quot;:&quot;https://github.com/johnheap/VAPPER-Galaxy/blob/master/Tryp_G.py&quot;,&quot;referrer&quot;:null,&quot;user_id&quot;:null}}" data-hydro-click-hmac="4db17299ef1e6914fe50cf1f55d7204f9f9e582ea6e290408c8afc23cff44645" data-ga-click="(Logged out) Header, clicked Sign up, text:sign-up" href="/join?source=header-repo">
140 Sign&nbsp;up
141 </a>
142 <button class="btn-link d-lg-none mt-1 js-details-target" type="button" aria-label="Toggle navigation" aria-expanded="false">
143 <svg height="24" class="octicon octicon-three-bars text-white" viewBox="0 0 12 16" version="1.1" width="18" aria-hidden="true"><path fill-rule="evenodd" d="M11.41 9H.59C0 9 0 8.59 0 8c0-.59 0-1 .59-1H11.4c.59 0 .59.41.59 1 0 .59 0 1-.59 1h.01zm0-4H.59C0 5 0 4.59 0 4c0-.59 0-1 .59-1H11.4c.59 0 .59.41.59 1 0 .59 0 1-.59 1h.01zM.59 11H11.4c.59 0 .59.41.59 1 0 .59 0 1-.59 1H.59C0 13 0 12.59 0 12c0-.59 0-1 .59-1z"/></svg>
144 </button>
145 </div>
146 </div>
147
148 <div class="HeaderMenu HeaderMenu--logged-out position-fixed top-0 right-0 bottom-0 height-fit position-lg-relative d-lg-flex flex-justify-between flex-items-center flex-auto">
149 <div class="d-flex d-lg-none flex-justify-end border-bottom bg-gray-light p-3">
150 <button class="btn-link js-details-target" type="button" aria-label="Toggle navigation" aria-expanded="false">
151 <svg height="24" class="octicon octicon-x text-gray" viewBox="0 0 12 16" version="1.1" width="18" aria-hidden="true"><path fill-rule="evenodd" d="M7.48 8l3.75 3.75-1.48 1.48L6 9.48l-3.75 3.75-1.48-1.48L4.52 8 .77 4.25l1.48-1.48L6 6.52l3.75-3.75 1.48 1.48L7.48 8z"/></svg>
152 </button>
153 </div>
154
155 <nav class="mt-0 px-3 px-lg-0 mb-5 mb-lg-0" aria-label="Global">
156 <ul class="d-lg-flex list-style-none">
157 <li class="d-block d-lg-flex flex-lg-nowrap flex-lg-items-center border-bottom border-lg-bottom-0 mr-0 mr-lg-3 edge-item-fix position-relative flex-wrap flex-justify-between d-flex flex-items-center ">
158 <details class="HeaderMenu-details details-overlay details-reset width-full">
159 <summary class="HeaderMenu-summary HeaderMenu-link px-0 py-3 border-0 no-wrap d-block d-lg-inline-block">
160 Why GitHub?
161 <svg x="0px" y="0px" viewBox="0 0 14 8" xml:space="preserve" fill="none" class="icon-chevon-down-mktg position-absolute position-lg-relative">
162 <path d="M1,1l6.2,6L13,1"></path>
163 </svg>
164 </summary>
165 <div class="dropdown-menu flex-auto rounded-1 bg-white px-0 mt-0 pb-4 p-lg-4 position-relative position-lg-absolute left-0 left-lg-n4">
166 <a href="/features" class="py-2 lh-condensed-ultra d-block link-gray-dark no-underline h5 Bump-link--hover" data-ga-click="(Logged out) Header, go to Features">Features <span class="Bump-link-symbol float-right text-normal text-gray-light">&rarr;</span></a>
167 <ul class="list-style-none f5 pb-3">
168 <li class="edge-item-fix"><a href="/features/code-review/" class="py-2 lh-condensed-ultra d-block link-gray no-underline f5" data-ga-click="(Logged out) Header, go to Code review">Code review</a></li>
169 <li class="edge-item-fix"><a href="/features/project-management/" class="py-2 lh-condensed-ultra d-block link-gray no-underline f5" data-ga-click="(Logged out) Header, go to Project management">Project management</a></li>
170 <li class="edge-item-fix"><a href="/features/integrations" class="py-2 lh-condensed-ultra d-block link-gray no-underline f5" data-ga-click="(Logged out) Header, go to Integrations">Integrations</a></li>
171 <li class="edge-item-fix"><a href="/features/actions" class="py-2 lh-condensed-ultra d-block link-gray no-underline f5" data-ga-click="(Logged out) Header, go to Actions">Actions</a>
172 <li class="edge-item-fix"><a href="/features/package-registry" class="py-2 lh-condensed-ultra d-block link-gray no-underline f5" data-ga-click="(Logged out) Header, go to Package Registry">Package registry</a>
173 <li class="edge-item-fix"><a href="/features#team-management" class="py-2 lh-condensed-ultra d-block link-gray no-underline f5" data-ga-click="(Logged out) Header, go to Team management">Team management</a></li>
174 <li class="edge-item-fix"><a href="/features#social-coding" class="py-2 lh-condensed-ultra d-block link-gray no-underline f5" data-ga-click="(Logged out) Header, go to Social coding">Social coding</a></li>
175 <li class="edge-item-fix"><a href="/features#documentation" class="py-2 lh-condensed-ultra d-block link-gray no-underline f5" data-ga-click="(Logged out) Header, go to Documentation">Documentation</a></li>
176 <li class="edge-item-fix"><a href="/features#code-hosting" class="py-2 lh-condensed-ultra d-block link-gray no-underline f5" data-ga-click="(Logged out) Header, go to Code hosting">Code hosting</a></li>
177 </ul>
178
179 <ul class="list-style-none mb-0 border-lg-top pt-lg-3">
180 <li class="edge-item-fix"><a href="/customer-stories" class="py-2 lh-condensed-ultra d-block no-underline link-gray-dark no-underline h5 Bump-link--hover" data-ga-click="(Logged out) Header, go to Customer stories">Customer stories <span class="Bump-link-symbol float-right text-normal text-gray-light">&rarr;</span></a></li>
181 <li class="edge-item-fix"><a href="/security" class="py-2 lh-condensed-ultra d-block no-underline link-gray-dark no-underline h5 Bump-link--hover" data-ga-click="(Logged out) Header, go to Security">Security <span class="Bump-link-symbol float-right text-normal text-gray-light">&rarr;</span></a></li>
182 </ul>
183 </div>
184 </details>
185 </li>
186 <li class="border-bottom border-lg-bottom-0 mr-0 mr-lg-3">
187 <a href="/enterprise" class="HeaderMenu-link no-underline py-3 d-block d-lg-inline-block" data-ga-click="(Logged out) Header, go to Enterprise">Enterprise</a>
188 </li>
189
190 <li class="d-block d-lg-flex flex-lg-nowrap flex-lg-items-center border-bottom border-lg-bottom-0 mr-0 mr-lg-3 edge-item-fix position-relative flex-wrap flex-justify-between d-flex flex-items-center ">
191 <details class="HeaderMenu-details details-overlay details-reset width-full">
192 <summary class="HeaderMenu-summary HeaderMenu-link px-0 py-3 border-0 no-wrap d-block d-lg-inline-block">
193 Explore
194 <svg x="0px" y="0px" viewBox="0 0 14 8" xml:space="preserve" fill="none" class="icon-chevon-down-mktg position-absolute position-lg-relative">
195 <path d="M1,1l6.2,6L13,1"></path>
196 </svg>
197 </summary>
198
199 <div class="dropdown-menu flex-auto rounded-1 bg-white px-0 pt-2 pb-0 mt-0 pb-4 p-lg-4 position-relative position-lg-absolute left-0 left-lg-n4">
200 <ul class="list-style-none mb-3">
201 <li class="edge-item-fix"><a href="/explore" class="py-2 lh-condensed-ultra d-block link-gray-dark no-underline h5 Bump-link--hover" data-ga-click="(Logged out) Header, go to Explore">Explore GitHub <span class="Bump-link-symbol float-right text-normal text-gray-light">&rarr;</span></a></li>
202 </ul>
203
204 <h4 class="text-gray-light text-normal text-mono f5 mb-2 border-lg-top pt-lg-3">Learn &amp; contribute</h4>
205 <ul class="list-style-none mb-3">
206 <li class="edge-item-fix"><a href="/topics" class="py-2 lh-condensed-ultra d-block link-gray no-underline f5" data-ga-click="(Logged out) Header, go to Topics">Topics</a></li>
207 <li class="edge-item-fix"><a href="/collections" class="py-2 lh-condensed-ultra d-block link-gray no-underline f5" data-ga-click="(Logged out) Header, go to Collections">Collections</a></li>
208 <li class="edge-item-fix"><a href="/trending" class="py-2 lh-condensed-ultra d-block link-gray no-underline f5" data-ga-click="(Logged out) Header, go to Trending">Trending</a></li>
209 <li class="edge-item-fix"><a href="https://lab.github.com/" class="py-2 lh-condensed-ultra d-block link-gray no-underline f5" data-ga-click="(Logged out) Header, go to Learning lab">Learning Lab</a></li>
210 <li class="edge-item-fix"><a href="https://opensource.guide" class="py-2 lh-condensed-ultra d-block link-gray no-underline f5" data-ga-click="(Logged out) Header, go to Open source guides">Open source guides</a></li>
211 </ul>
212
213 <h4 class="text-gray-light text-normal text-mono f5 mb-2 border-lg-top pt-lg-3">Connect with others</h4>
214 <ul class="list-style-none mb-0">
215 <li class="edge-item-fix"><a href="https://github.com/events" class="py-2 lh-condensed-ultra d-block link-gray no-underline f5" data-ga-click="(Logged out) Header, go to Events">Events</a></li>
216 <li class="edge-item-fix"><a href="https://github.community" class="py-2 lh-condensed-ultra d-block link-gray no-underline f5" data-ga-click="(Logged out) Header, go to Community forum">Community forum</a></li>
217 <li class="edge-item-fix"><a href="https://education.github.com" class="py-2 pb-0 lh-condensed-ultra d-block link-gray no-underline f5" data-ga-click="(Logged out) Header, go to GitHub Education">GitHub Education</a></li>
218 </ul>
219 </div>
220 </details>
221 </li>
222
223 <li class="border-bottom border-lg-bottom-0 mr-0 mr-lg-3">
224 <a href="/marketplace" class="HeaderMenu-link no-underline py-3 d-block d-lg-inline-block" data-ga-click="(Logged out) Header, go to Marketplace">Marketplace</a>
225 </li>
226
227 <li class="d-block d-lg-flex flex-lg-nowrap flex-lg-items-center border-bottom border-lg-bottom-0 mr-0 mr-lg-3 edge-item-fix position-relative flex-wrap flex-justify-between d-flex flex-items-center ">
228 <details class="HeaderMenu-details details-overlay details-reset width-full">
229 <summary class="HeaderMenu-summary HeaderMenu-link px-0 py-3 border-0 no-wrap d-block d-lg-inline-block">
230 Pricing
231 <svg x="0px" y="0px" viewBox="0 0 14 8" xml:space="preserve" fill="none" class="icon-chevon-down-mktg position-absolute position-lg-relative">
232 <path d="M1,1l6.2,6L13,1"></path>
233 </svg>
234 </summary>
235
236 <div class="dropdown-menu flex-auto rounded-1 bg-white px-0 pt-2 pb-4 mt-0 p-lg-4 position-relative position-lg-absolute left-0 left-lg-n4">
237 <a href="/pricing" class="pb-2 lh-condensed-ultra d-block link-gray-dark no-underline h5 Bump-link--hover" data-ga-click="(Logged out) Header, go to Pricing">Plans <span class="Bump-link-symbol float-right text-normal text-gray-light">&rarr;</span></a>
238
239 <ul class="list-style-none mb-3">
240 <li class="edge-item-fix"><a href="/pricing#feature-comparison" class="py-2 lh-condensed-ultra d-block link-gray no-underline f5" data-ga-click="(Logged out) Header, go to Compare plans">Compare plans</a></li>
241 <li class="edge-item-fix"><a href="https://enterprise.github.com/contact" class="py-2 lh-condensed-ultra d-block link-gray no-underline f5" data-ga-click="(Logged out) Header, go to Contact Sales">Contact Sales</a></li>
242 </ul>
243
244 <ul class="list-style-none mb-0 border-lg-top pt-lg-3">
245 <li class="edge-item-fix"><a href="/nonprofit" class="py-2 lh-condensed-ultra d-block no-underline link-gray-dark no-underline h5 Bump-link--hover" data-ga-click="(Logged out) Header, go to Nonprofits">Nonprofit <span class="Bump-link-symbol float-right text-normal text-gray-light">&rarr;</span></a></li>
246 <li class="edge-item-fix"><a href="https://education.github.com" class="py-2 pb-0 lh-condensed-ultra d-block no-underline link-gray-dark no-underline h5 Bump-link--hover" data-ga-click="(Logged out) Header, go to Education">Education <span class="Bump-link-symbol float-right text-normal text-gray-light">&rarr;</span></a></li>
247 </ul>
248 </div>
249 </details>
250 </li>
251 </ul>
252 </nav>
253
254 <div class="d-lg-flex flex-items-center px-3 px-lg-0 text-center text-lg-left">
255 <div class="d-lg-flex mb-3 mb-lg-0">
256 <div class="header-search flex-self-stretch flex-lg-self-auto mr-0 mr-lg-3 mb-3 mb-lg-0 scoped-search site-scoped-search js-site-search position-relative js-jump-to"
257 role="combobox"
258 aria-owns="jump-to-results"
259 aria-label="Search or jump to"
260 aria-haspopup="listbox"
261 aria-expanded="false"
262 >
263 <div class="position-relative">
264 <!-- '"` --><!-- </textarea></xmp> --></option></form><form class="js-site-search-form" role="search" aria-label="Site" data-scope-type="Repository" data-scope-id="139730674" data-scoped-search-url="/johnheap/VAPPER-Galaxy/search" data-unscoped-search-url="/search" action="/johnheap/VAPPER-Galaxy/search" accept-charset="UTF-8" method="get"><input name="utf8" type="hidden" value="&#x2713;" />
265 <label class="form-control input-sm header-search-wrapper p-0 header-search-wrapper-jump-to position-relative d-flex flex-justify-between flex-items-center js-chromeless-input-container">
266 <input type="text"
267 class="form-control input-sm header-search-input jump-to-field js-jump-to-field js-site-search-focus js-site-search-field is-clearable"
268 data-hotkey="s,/"
269 name="q"
270 value=""
271 placeholder="Search"
272 data-unscoped-placeholder="Search GitHub"
273 data-scoped-placeholder="Search"
274 autocapitalize="off"
275 aria-autocomplete="list"
276 aria-controls="jump-to-results"
277 aria-label="Search"
278 data-jump-to-suggestions-path="/_graphql/GetSuggestedNavigationDestinations#csrf-token=9nFC/TA6FDAKMuNXw3enOJF6Z5i01AOdbn0jyVKtcamwMA8oxN0iwjwD6g/Gk0mUkRYceloKa1EiDDQCCe/w6g=="
279 spellcheck="false"
280 autocomplete="off"
281 >
282 <input type="hidden" class="js-site-search-type-field" name="type" >
283 <img src="https://github.githubassets.com/images/search-key-slash.svg" alt="" class="mr-2 header-search-key-slash">
284
285 <div class="Box position-absolute overflow-hidden d-none jump-to-suggestions js-jump-to-suggestions-container">
286
287 <ul class="d-none js-jump-to-suggestions-template-container">
288
289
290 <li class="d-flex flex-justify-start flex-items-center p-0 f5 navigation-item js-navigation-item js-jump-to-suggestion" role="option">
291 <a tabindex="-1" class="no-underline d-flex flex-auto flex-items-center jump-to-suggestions-path js-jump-to-suggestion-path js-navigation-open p-2" href="">
292 <div class="jump-to-octicon js-jump-to-octicon flex-shrink-0 mr-2 text-center d-none">
293 <svg height="16" width="16" class="octicon octicon-repo flex-shrink-0 js-jump-to-octicon-repo d-none" title="Repository" aria-label="Repository" viewBox="0 0 12 16" version="1.1" role="img"><path fill-rule="evenodd" d="M4 9H3V8h1v1zm0-3H3v1h1V6zm0-2H3v1h1V4zm0-2H3v1h1V2zm8-1v12c0 .55-.45 1-1 1H6v2l-1.5-1.5L3 16v-2H1c-.55 0-1-.45-1-1V1c0-.55.45-1 1-1h10c.55 0 1 .45 1 1zm-1 10H1v2h2v-1h3v1h5v-2zm0-10H2v9h9V1z"/></svg>
294 <svg height="16" width="16" class="octicon octicon-project flex-shrink-0 js-jump-to-octicon-project d-none" title="Project" aria-label="Project" viewBox="0 0 15 16" version="1.1" role="img"><path fill-rule="evenodd" d="M10 12h3V2h-3v10zm-4-2h3V2H6v8zm-4 4h3V2H2v12zm-1 1h13V1H1v14zM14 0H1a1 1 0 0 0-1 1v14a1 1 0 0 0 1 1h13a1 1 0 0 0 1-1V1a1 1 0 0 0-1-1z"/></svg>
295 <svg height="16" width="16" class="octicon octicon-search flex-shrink-0 js-jump-to-octicon-search d-none" title="Search" aria-label="Search" viewBox="0 0 16 16" version="1.1" role="img"><path fill-rule="evenodd" d="M15.7 13.3l-3.81-3.83A5.93 5.93 0 0 0 13 6c0-3.31-2.69-6-6-6S1 2.69 1 6s2.69 6 6 6c1.3 0 2.48-.41 3.47-1.11l3.83 3.81c.19.2.45.3.7.3.25 0 .52-.09.7-.3a.996.996 0 0 0 0-1.41v.01zM7 10.7c-2.59 0-4.7-2.11-4.7-4.7 0-2.59 2.11-4.7 4.7-4.7 2.59 0 4.7 2.11 4.7 4.7 0 2.59-2.11 4.7-4.7 4.7z"/></svg>
296 </div>
297
298 <img class="avatar mr-2 flex-shrink-0 js-jump-to-suggestion-avatar d-none" alt="" aria-label="Team" src="" width="28" height="28">
299
300 <div class="jump-to-suggestion-name js-jump-to-suggestion-name flex-auto overflow-hidden text-left no-wrap css-truncate css-truncate-target">
301 </div>
302
303 <div class="border rounded-1 flex-shrink-0 bg-gray px-1 text-gray-light ml-1 f6 d-none js-jump-to-badge-search">
304 <span class="js-jump-to-badge-search-text-default d-none" aria-label="in this repository">
305 In this repository
306 </span>
307 <span class="js-jump-to-badge-search-text-global d-none" aria-label="in all of GitHub">
308 All GitHub
309 </span>
310 <span aria-hidden="true" class="d-inline-block ml-1 v-align-middle">↵</span>
311 </div>
312
313 <div aria-hidden="true" class="border rounded-1 flex-shrink-0 bg-gray px-1 text-gray-light ml-1 f6 d-none d-on-nav-focus js-jump-to-badge-jump">
314 Jump to
315 <span class="d-inline-block ml-1 v-align-middle">↵</span>
316 </div>
317 </a>
318 </li>
319
320 </ul>
321
322 <ul class="d-none js-jump-to-no-results-template-container">
323 <li class="d-flex flex-justify-center flex-items-center f5 d-none js-jump-to-suggestion p-2">
324 <span class="text-gray">No suggested jump to results</span>
325 </li>
326 </ul>
327
328 <ul id="jump-to-results" role="listbox" class="p-0 m-0 js-navigation-container jump-to-suggestions-results-container js-jump-to-suggestions-results-container">
329
330
331 <li class="d-flex flex-justify-start flex-items-center p-0 f5 navigation-item js-navigation-item js-jump-to-scoped-search d-none" role="option">
332 <a tabindex="-1" class="no-underline d-flex flex-auto flex-items-center jump-to-suggestions-path js-jump-to-suggestion-path js-navigation-open p-2" href="">
333 <div class="jump-to-octicon js-jump-to-octicon flex-shrink-0 mr-2 text-center d-none">
334 <svg height="16" width="16" class="octicon octicon-repo flex-shrink-0 js-jump-to-octicon-repo d-none" title="Repository" aria-label="Repository" viewBox="0 0 12 16" version="1.1" role="img"><path fill-rule="evenodd" d="M4 9H3V8h1v1zm0-3H3v1h1V6zm0-2H3v1h1V4zm0-2H3v1h1V2zm8-1v12c0 .55-.45 1-1 1H6v2l-1.5-1.5L3 16v-2H1c-.55 0-1-.45-1-1V1c0-.55.45-1 1-1h10c.55 0 1 .45 1 1zm-1 10H1v2h2v-1h3v1h5v-2zm0-10H2v9h9V1z"/></svg>
335 <svg height="16" width="16" class="octicon octicon-project flex-shrink-0 js-jump-to-octicon-project d-none" title="Project" aria-label="Project" viewBox="0 0 15 16" version="1.1" role="img"><path fill-rule="evenodd" d="M10 12h3V2h-3v10zm-4-2h3V2H6v8zm-4 4h3V2H2v12zm-1 1h13V1H1v14zM14 0H1a1 1 0 0 0-1 1v14a1 1 0 0 0 1 1h13a1 1 0 0 0 1-1V1a1 1 0 0 0-1-1z"/></svg>
336 <svg height="16" width="16" class="octicon octicon-search flex-shrink-0 js-jump-to-octicon-search d-none" title="Search" aria-label="Search" viewBox="0 0 16 16" version="1.1" role="img"><path fill-rule="evenodd" d="M15.7 13.3l-3.81-3.83A5.93 5.93 0 0 0 13 6c0-3.31-2.69-6-6-6S1 2.69 1 6s2.69 6 6 6c1.3 0 2.48-.41 3.47-1.11l3.83 3.81c.19.2.45.3.7.3.25 0 .52-.09.7-.3a.996.996 0 0 0 0-1.41v.01zM7 10.7c-2.59 0-4.7-2.11-4.7-4.7 0-2.59 2.11-4.7 4.7-4.7 2.59 0 4.7 2.11 4.7 4.7 0 2.59-2.11 4.7-4.7 4.7z"/></svg>
337 </div>
338
339 <img class="avatar mr-2 flex-shrink-0 js-jump-to-suggestion-avatar d-none" alt="" aria-label="Team" src="" width="28" height="28">
340
341 <div class="jump-to-suggestion-name js-jump-to-suggestion-name flex-auto overflow-hidden text-left no-wrap css-truncate css-truncate-target">
342 </div>
343
344 <div class="border rounded-1 flex-shrink-0 bg-gray px-1 text-gray-light ml-1 f6 d-none js-jump-to-badge-search">
345 <span class="js-jump-to-badge-search-text-default d-none" aria-label="in this repository">
346 In this repository
347 </span>
348 <span class="js-jump-to-badge-search-text-global d-none" aria-label="in all of GitHub">
349 All GitHub
350 </span>
351 <span aria-hidden="true" class="d-inline-block ml-1 v-align-middle">↵</span>
352 </div>
353
354 <div aria-hidden="true" class="border rounded-1 flex-shrink-0 bg-gray px-1 text-gray-light ml-1 f6 d-none d-on-nav-focus js-jump-to-badge-jump">
355 Jump to
356 <span class="d-inline-block ml-1 v-align-middle">↵</span>
357 </div>
358 </a>
359 </li>
360
361
362
363 <li class="d-flex flex-justify-start flex-items-center p-0 f5 navigation-item js-navigation-item js-jump-to-global-search d-none" role="option">
364 <a tabindex="-1" class="no-underline d-flex flex-auto flex-items-center jump-to-suggestions-path js-jump-to-suggestion-path js-navigation-open p-2" href="">
365 <div class="jump-to-octicon js-jump-to-octicon flex-shrink-0 mr-2 text-center d-none">
366 <svg height="16" width="16" class="octicon octicon-repo flex-shrink-0 js-jump-to-octicon-repo d-none" title="Repository" aria-label="Repository" viewBox="0 0 12 16" version="1.1" role="img"><path fill-rule="evenodd" d="M4 9H3V8h1v1zm0-3H3v1h1V6zm0-2H3v1h1V4zm0-2H3v1h1V2zm8-1v12c0 .55-.45 1-1 1H6v2l-1.5-1.5L3 16v-2H1c-.55 0-1-.45-1-1V1c0-.55.45-1 1-1h10c.55 0 1 .45 1 1zm-1 10H1v2h2v-1h3v1h5v-2zm0-10H2v9h9V1z"/></svg>
367 <svg height="16" width="16" class="octicon octicon-project flex-shrink-0 js-jump-to-octicon-project d-none" title="Project" aria-label="Project" viewBox="0 0 15 16" version="1.1" role="img"><path fill-rule="evenodd" d="M10 12h3V2h-3v10zm-4-2h3V2H6v8zm-4 4h3V2H2v12zm-1 1h13V1H1v14zM14 0H1a1 1 0 0 0-1 1v14a1 1 0 0 0 1 1h13a1 1 0 0 0 1-1V1a1 1 0 0 0-1-1z"/></svg>
368 <svg height="16" width="16" class="octicon octicon-search flex-shrink-0 js-jump-to-octicon-search d-none" title="Search" aria-label="Search" viewBox="0 0 16 16" version="1.1" role="img"><path fill-rule="evenodd" d="M15.7 13.3l-3.81-3.83A5.93 5.93 0 0 0 13 6c0-3.31-2.69-6-6-6S1 2.69 1 6s2.69 6 6 6c1.3 0 2.48-.41 3.47-1.11l3.83 3.81c.19.2.45.3.7.3.25 0 .52-.09.7-.3a.996.996 0 0 0 0-1.41v.01zM7 10.7c-2.59 0-4.7-2.11-4.7-4.7 0-2.59 2.11-4.7 4.7-4.7 2.59 0 4.7 2.11 4.7 4.7 0 2.59-2.11 4.7-4.7 4.7z"/></svg>
369 </div>
370
371 <img class="avatar mr-2 flex-shrink-0 js-jump-to-suggestion-avatar d-none" alt="" aria-label="Team" src="" width="28" height="28">
372
373 <div class="jump-to-suggestion-name js-jump-to-suggestion-name flex-auto overflow-hidden text-left no-wrap css-truncate css-truncate-target">
374 </div>
375
376 <div class="border rounded-1 flex-shrink-0 bg-gray px-1 text-gray-light ml-1 f6 d-none js-jump-to-badge-search">
377 <span class="js-jump-to-badge-search-text-default d-none" aria-label="in this repository">
378 In this repository
379 </span>
380 <span class="js-jump-to-badge-search-text-global d-none" aria-label="in all of GitHub">
381 All GitHub
382 </span>
383 <span aria-hidden="true" class="d-inline-block ml-1 v-align-middle">↵</span>
384 </div>
385
386 <div aria-hidden="true" class="border rounded-1 flex-shrink-0 bg-gray px-1 text-gray-light ml-1 f6 d-none d-on-nav-focus js-jump-to-badge-jump">
387 Jump to
388 <span class="d-inline-block ml-1 v-align-middle">↵</span>
389 </div>
390 </a>
391 </li>
392
393
394 </ul>
395
396 </div>
397 </label>
398 </form> </div>
399 </div>
400
401 </div>
402
403 <a class="HeaderMenu-link no-underline mr-3" data-hydro-click="{&quot;event_type&quot;:&quot;authentication.click&quot;,&quot;payload&quot;:{&quot;location_in_page&quot;:&quot;site header menu&quot;,&quot;repository_id&quot;:null,&quot;auth_type&quot;:&quot;LOG_IN&quot;,&quot;client_id&quot;:null,&quot;originating_request_id&quot;:&quot;A689:5C3D:C6144:14D916:5CF5617A&quot;,&quot;originating_url&quot;:&quot;https://github.com/johnheap/VAPPER-Galaxy/blob/master/Tryp_G.py&quot;,&quot;referrer&quot;:null,&quot;user_id&quot;:null}}" data-hydro-click-hmac="7fd1ed56b1c18a397e503e29aacaabdeee72055191ae165b50c2653e1b12dcee" data-ga-click="(Logged out) Header, clicked Sign in, text:sign-in" href="/login?return_to=%2Fjohnheap%2FVAPPER-Galaxy%2Fblob%2Fmaster%2FTryp_G.py">
404 Sign&nbsp;in
405 </a> <a class="HeaderMenu-link d-inline-block no-underline border border-gray-dark rounded-1 px-2 py-1" data-hydro-click="{&quot;event_type&quot;:&quot;authentication.click&quot;,&quot;payload&quot;:{&quot;location_in_page&quot;:&quot;site header menu&quot;,&quot;repository_id&quot;:null,&quot;auth_type&quot;:&quot;SIGN_UP&quot;,&quot;client_id&quot;:null,&quot;originating_request_id&quot;:&quot;A689:5C3D:C6144:14D916:5CF5617A&quot;,&quot;originating_url&quot;:&quot;https://github.com/johnheap/VAPPER-Galaxy/blob/master/Tryp_G.py&quot;,&quot;referrer&quot;:null,&quot;user_id&quot;:null}}" data-hydro-click-hmac="c4ee822af15b8dc3e9aea42a32a712ba97b5159e47607cd4b7025cbaf04cede5" data-ga-click="(Logged out) Header, clicked Sign up, text:sign-up" href="/join?source=header-repo">
406 Sign&nbsp;up
407 </a> </div>
408 </div>
409 </div>
410 </header>
411
412 </div>
413
414 <div id="start-of-content" class="show-on-focus"></div>
415
416
417 <div id="js-flash-container">
418
419 </div>
420
421
422
423 <div class="application-main " data-commit-hovercards-enabled>
424 <div itemscope itemtype="http://schema.org/SoftwareSourceCode" class="">
425 <main >
426
427
428
429
430
431
432
433
434
435
436 <div class="pagehead repohead instapaper_ignore readability-menu experiment-repo-nav pt-0 pt-lg-4 ">
437 <div class="repohead-details-container clearfix container-lg p-responsive d-none d-lg-block">
438
439 <ul class="pagehead-actions">
440
441
442
443
444 <li>
445
446 <a class="tooltipped tooltipped-s btn btn-sm btn-with-count" aria-label="You must be signed in to watch a repository" rel="nofollow" data-hydro-click="{&quot;event_type&quot;:&quot;authentication.click&quot;,&quot;payload&quot;:{&quot;location_in_page&quot;:&quot;notification subscription menu watch&quot;,&quot;repository_id&quot;:null,&quot;auth_type&quot;:&quot;LOG_IN&quot;,&quot;client_id&quot;:null,&quot;originating_request_id&quot;:&quot;A689:5C3D:C6144:14D916:5CF5617A&quot;,&quot;originating_url&quot;:&quot;https://github.com/johnheap/VAPPER-Galaxy/blob/master/Tryp_G.py&quot;,&quot;referrer&quot;:null,&quot;user_id&quot;:null}}" data-hydro-click-hmac="d368ea9efe1c5a2dcfce963197a8e1728bece5fbf672873089afee1360fc84b5" href="/login?return_to=%2Fjohnheap%2FVAPPER-Galaxy">
447 <svg class="octicon octicon-eye v-align-text-bottom" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M8.06 2C3 2 0 8 0 8s3 6 8.06 6C13 14 16 8 16 8s-3-6-7.94-6zM8 12c-2.2 0-4-1.78-4-4 0-2.2 1.8-4 4-4 2.22 0 4 1.8 4 4 0 2.22-1.78 4-4 4zm2-4c0 1.11-.89 2-2 2-1.11 0-2-.89-2-2 0-1.11.89-2 2-2 1.11 0 2 .89 2 2z"/></svg>
448 Watch
449 </a> <a class="social-count" href="/johnheap/VAPPER-Galaxy/watchers"
450 aria-label="0 users are watching this repository">
451 0
452 </a>
453
454 </li>
455
456 <li>
457 <a class="btn btn-sm btn-with-count tooltipped tooltipped-s" aria-label="You must be signed in to star a repository" rel="nofollow" data-hydro-click="{&quot;event_type&quot;:&quot;authentication.click&quot;,&quot;payload&quot;:{&quot;location_in_page&quot;:&quot;star button&quot;,&quot;repository_id&quot;:139730674,&quot;auth_type&quot;:&quot;LOG_IN&quot;,&quot;client_id&quot;:null,&quot;originating_request_id&quot;:&quot;A689:5C3D:C6144:14D916:5CF5617A&quot;,&quot;originating_url&quot;:&quot;https://github.com/johnheap/VAPPER-Galaxy/blob/master/Tryp_G.py&quot;,&quot;referrer&quot;:null,&quot;user_id&quot;:null}}" data-hydro-click-hmac="ceea5226d4ab4d8521c883a628e33ec62a103b3de2b2586316b9ee1c827f8e8f" href="/login?return_to=%2Fjohnheap%2FVAPPER-Galaxy">
458 <svg class="octicon octicon-star v-align-text-bottom" viewBox="0 0 14 16" version="1.1" width="14" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M14 6l-4.9-.64L7 1 4.9 5.36 0 6l3.6 3.26L2.67 14 7 11.67 11.33 14l-.93-4.74L14 6z"/></svg>
459 Star
460 </a>
461 <a class="social-count js-social-count" href="/johnheap/VAPPER-Galaxy/stargazers"
462 aria-label="0 users starred this repository">
463 0
464 </a>
465
466 </li>
467
468 <li>
469 <a class="btn btn-sm btn-with-count tooltipped tooltipped-s" aria-label="You must be signed in to fork a repository" rel="nofollow" data-hydro-click="{&quot;event_type&quot;:&quot;authentication.click&quot;,&quot;payload&quot;:{&quot;location_in_page&quot;:&quot;repo details fork button&quot;,&quot;repository_id&quot;:139730674,&quot;auth_type&quot;:&quot;LOG_IN&quot;,&quot;client_id&quot;:null,&quot;originating_request_id&quot;:&quot;A689:5C3D:C6144:14D916:5CF5617A&quot;,&quot;originating_url&quot;:&quot;https://github.com/johnheap/VAPPER-Galaxy/blob/master/Tryp_G.py&quot;,&quot;referrer&quot;:null,&quot;user_id&quot;:null}}" data-hydro-click-hmac="76fdcda7eb696b02b75ff43b473d377db9f594433e4409293c92f7c0238fba60" href="/login?return_to=%2Fjohnheap%2FVAPPER-Galaxy">
470 <svg class="octicon octicon-repo-forked v-align-text-bottom" viewBox="0 0 10 16" version="1.1" width="10" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M8 1a1.993 1.993 0 0 0-1 3.72V6L5 8 3 6V4.72A1.993 1.993 0 0 0 2 1a1.993 1.993 0 0 0-1 3.72V6.5l3 3v1.78A1.993 1.993 0 0 0 5 15a1.993 1.993 0 0 0 1-3.72V9.5l3-3V4.72A1.993 1.993 0 0 0 8 1zM2 4.2C1.34 4.2.8 3.65.8 3c0-.65.55-1.2 1.2-1.2.65 0 1.2.55 1.2 1.2 0 .65-.55 1.2-1.2 1.2zm3 10c-.66 0-1.2-.55-1.2-1.2 0-.65.55-1.2 1.2-1.2.65 0 1.2.55 1.2 1.2 0 .65-.55 1.2-1.2 1.2zm3-10c-.66 0-1.2-.55-1.2-1.2 0-.65.55-1.2 1.2-1.2.65 0 1.2.55 1.2 1.2 0 .65-.55 1.2-1.2 1.2z"/></svg>
471 Fork
472 </a>
473 <a href="/johnheap/VAPPER-Galaxy/network/members" class="social-count"
474 aria-label="0 users forked this repository">
475 0
476 </a>
477 </li>
478 </ul>
479
480 <h1 class="public ">
481 <svg class="octicon octicon-repo" viewBox="0 0 12 16" version="1.1" width="12" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M4 9H3V8h1v1zm0-3H3v1h1V6zm0-2H3v1h1V4zm0-2H3v1h1V2zm8-1v12c0 .55-.45 1-1 1H6v2l-1.5-1.5L3 16v-2H1c-.55 0-1-.45-1-1V1c0-.55.45-1 1-1h10c.55 0 1 .45 1 1zm-1 10H1v2h2v-1h3v1h5v-2zm0-10H2v9h9V1z"/></svg>
482 <span class="author" itemprop="author"><a class="url fn" rel="author" data-hovercard-type="user" data-hovercard-url="/hovercards?user_id=24318980" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="/johnheap">johnheap</a></span><!--
483 --><span class="path-divider">/</span><!--
484 --><strong itemprop="name"><a data-pjax="#js-repo-pjax-container" href="/johnheap/VAPPER-Galaxy">VAPPER-Galaxy</a></strong>
485
486
487 </h1>
488
489 </div>
490
491 <nav class="hx_reponav reponav js-repo-nav js-sidenav-container-pjax container-lg p-responsive d-none d-lg-block"
492 itemscope
493 itemtype="http://schema.org/BreadcrumbList"
494 aria-label="Repository"
495 data-pjax="#js-repo-pjax-container">
496
497 <span itemscope itemtype="http://schema.org/ListItem" itemprop="itemListElement">
498 <a class="js-selected-navigation-item selected reponav-item" itemprop="url" data-hotkey="g c" aria-current="page" data-selected-links="repo_source repo_downloads repo_commits repo_releases repo_tags repo_branches repo_packages /johnheap/VAPPER-Galaxy" href="/johnheap/VAPPER-Galaxy">
499 <svg class="octicon octicon-code" viewBox="0 0 14 16" version="1.1" width="14" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M9.5 3L8 4.5 11.5 8 8 11.5 9.5 13 14 8 9.5 3zm-5 0L0 8l4.5 5L6 11.5 2.5 8 6 4.5 4.5 3z"/></svg>
500 <span itemprop="name">Code</span>
501 <meta itemprop="position" content="1">
502 </a> </span>
503
504 <span itemscope itemtype="http://schema.org/ListItem" itemprop="itemListElement">
505 <a itemprop="url" data-hotkey="g i" class="js-selected-navigation-item reponav-item" data-selected-links="repo_issues repo_labels repo_milestones /johnheap/VAPPER-Galaxy/issues" href="/johnheap/VAPPER-Galaxy/issues">
506 <svg class="octicon octicon-issue-opened" viewBox="0 0 14 16" version="1.1" width="14" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"/></svg>
507 <span itemprop="name">Issues</span>
508 <span class="Counter">0</span>
509 <meta itemprop="position" content="2">
510 </a> </span>
511
512 <span itemscope itemtype="http://schema.org/ListItem" itemprop="itemListElement">
513 <a data-hotkey="g p" itemprop="url" class="js-selected-navigation-item reponav-item" data-selected-links="repo_pulls checks /johnheap/VAPPER-Galaxy/pulls" href="/johnheap/VAPPER-Galaxy/pulls">
514 <svg class="octicon octicon-git-pull-request" viewBox="0 0 12 16" version="1.1" width="12" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M11 11.28V5c-.03-.78-.34-1.47-.94-2.06C9.46 2.35 8.78 2.03 8 2H7V0L4 3l3 3V4h1c.27.02.48.11.69.31.21.2.3.42.31.69v6.28A1.993 1.993 0 0 0 10 15a1.993 1.993 0 0 0 1-3.72zm-1 2.92c-.66 0-1.2-.55-1.2-1.2 0-.65.55-1.2 1.2-1.2.65 0 1.2.55 1.2 1.2 0 .65-.55 1.2-1.2 1.2zM4 3c0-1.11-.89-2-2-2a1.993 1.993 0 0 0-1 3.72v6.56A1.993 1.993 0 0 0 2 15a1.993 1.993 0 0 0 1-3.72V4.72c.59-.34 1-.98 1-1.72zm-.8 10c0 .66-.55 1.2-1.2 1.2-.65 0-1.2-.55-1.2-1.2 0-.65.55-1.2 1.2-1.2.65 0 1.2.55 1.2 1.2zM2 4.2C1.34 4.2.8 3.65.8 3c0-.65.55-1.2 1.2-1.2.65 0 1.2.55 1.2 1.2 0 .65-.55 1.2-1.2 1.2z"/></svg>
515 <span itemprop="name">Pull requests</span>
516 <span class="Counter">0</span>
517 <meta itemprop="position" content="3">
518 </a> </span>
519
520
521 <a data-hotkey="g b" class="js-selected-navigation-item reponav-item" data-selected-links="repo_projects new_repo_project repo_project /johnheap/VAPPER-Galaxy/projects" href="/johnheap/VAPPER-Galaxy/projects">
522 <svg class="octicon octicon-project" viewBox="0 0 15 16" version="1.1" width="15" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M10 12h3V2h-3v10zm-4-2h3V2H6v8zm-4 4h3V2H2v12zm-1 1h13V1H1v14zM14 0H1a1 1 0 0 0-1 1v14a1 1 0 0 0 1 1h13a1 1 0 0 0 1-1V1a1 1 0 0 0-1-1z"/></svg>
523 Projects
524 <span class="Counter" >0</span>
525 </a>
526
527
528 <a data-skip-pjax="true" class="js-selected-navigation-item reponav-item" data-selected-links="security alerts policy /johnheap/VAPPER-Galaxy/security/advisories" href="/johnheap/VAPPER-Galaxy/security/advisories">
529 <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16" class="octicon" height="16px" width="16px">
530 <path fill-rule="evenodd" clip-rule="evenodd" d="M1 2l7-2 7 2v6.02C15 12.69 9.69 16 8 16c-1.69 0-7-3.31-7-7.98V2zm1 .75L8 1l6 1.75v5.268C14 12.104 9.45 15 8 15c-1.45 0-6-2.896-6-6.982V2.75z"></path>
531 <path d="M3 3.5L8 2v12c-1.207 0-5-2.482-5-5.985V3.5z"></path>
532 </svg>
533
534 Security
535 </a>
536 <a class="js-selected-navigation-item reponav-item" data-selected-links="repo_graphs repo_contributors dependency_graph pulse people /johnheap/VAPPER-Galaxy/pulse" href="/johnheap/VAPPER-Galaxy/pulse">
537 <svg class="octicon octicon-graph" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M16 14v1H0V0h1v14h15zM5 13H3V8h2v5zm4 0H7V3h2v10zm4 0h-2V6h2v7z"/></svg>
538 Insights
539 </a>
540
541 </nav>
542
543 <div class="reponav-wrapper reponav-small d-lg-none">
544 <nav class="reponav js-reponav text-center no-wrap"
545 itemscope
546 itemtype="http://schema.org/BreadcrumbList">
547
548 <span itemscope itemtype="http://schema.org/ListItem" itemprop="itemListElement">
549 <a class="js-selected-navigation-item selected reponav-item" itemprop="url" aria-current="page" data-selected-links="repo_source repo_downloads repo_commits repo_releases repo_tags repo_branches repo_packages /johnheap/VAPPER-Galaxy" href="/johnheap/VAPPER-Galaxy">
550 <span itemprop="name">Code</span>
551 <meta itemprop="position" content="1">
552 </a> </span>
553
554 <span itemscope itemtype="http://schema.org/ListItem" itemprop="itemListElement">
555 <a itemprop="url" class="js-selected-navigation-item reponav-item" data-selected-links="repo_issues repo_labels repo_milestones /johnheap/VAPPER-Galaxy/issues" href="/johnheap/VAPPER-Galaxy/issues">
556 <span itemprop="name">Issues</span>
557 <span class="Counter">0</span>
558 <meta itemprop="position" content="2">
559 </a> </span>
560
561 <span itemscope itemtype="http://schema.org/ListItem" itemprop="itemListElement">
562 <a itemprop="url" class="js-selected-navigation-item reponav-item" data-selected-links="repo_pulls checks /johnheap/VAPPER-Galaxy/pulls" href="/johnheap/VAPPER-Galaxy/pulls">
563 <span itemprop="name">Pull requests</span>
564 <span class="Counter">0</span>
565 <meta itemprop="position" content="3">
566 </a> </span>
567
568 <span itemscope itemtype="http://schema.org/ListItem" itemprop="itemListElement">
569 <a itemprop="url" class="js-selected-navigation-item reponav-item" data-selected-links="repo_projects new_repo_project repo_project /johnheap/VAPPER-Galaxy/projects" href="/johnheap/VAPPER-Galaxy/projects">
570 <span itemprop="name">Projects</span>
571 <span class="Counter">0</span>
572 <meta itemprop="position" content="4">
573 </a> </span>
574
575
576 <a itemprop="url" class="js-selected-navigation-item reponav-item" data-selected-links="security alerts policy /johnheap/VAPPER-Galaxy/security/advisories" href="/johnheap/VAPPER-Galaxy/security/advisories">
577 <span itemprop="name">Security</span>
578 <meta itemprop="position" content="6">
579 </a>
580 <a class="js-selected-navigation-item reponav-item" data-selected-links="pulse /johnheap/VAPPER-Galaxy/pulse" href="/johnheap/VAPPER-Galaxy/pulse">
581 Pulse
582 </a>
583
584 </nav>
585 </div>
586
587
588 </div>
589 <div class="container-lg new-discussion-timeline experiment-repo-nav p-responsive">
590 <div class="repository-content ">
591
592
593
594
595
596
597
598 <a class="d-none js-permalink-shortcut" data-hotkey="y" href="/johnheap/VAPPER-Galaxy/blob/a4e16d71fe985f389930c02f94354b87d3aabadb/Tryp_G.py">Permalink</a>
599
600 <!-- blob contrib key: blob_contributors:v21:2e1bab5e249bd4f439027dfdd07ba21c -->
601 <div class="signup-prompt-bg rounded-1">
602 <div class="signup-prompt p-4 text-center mb-4 rounded-1">
603 <div class="position-relative">
604 <!-- '"` --><!-- </textarea></xmp> --></option></form><form action="/prompt_dismissals/signup" accept-charset="UTF-8" method="post"><input name="utf8" type="hidden" value="&#x2713;" /><input type="hidden" name="_method" value="put" /><input type="hidden" name="authenticity_token" value="rUlVltDIRxFtmVLWOALSaTw3jYYQnAkgOZNaBXl4TyU548taK3+va3xk4HBc3npM+B/jMCQq7vMKkG2ORne9cQ==" />
605 <button type="submit" class="position-absolute top-0 right-0 btn-link link-gray" data-ga-click="(Logged out) Sign up prompt, clicked Dismiss, text:dismiss">
606 Dismiss
607 </button>
608 </form> <h3 class="pt-2">Join GitHub today</h3>
609 <p class="col-6 mx-auto">GitHub is home to over 36 million developers working together to host and review code, manage projects, and build software together.</p>
610 <a class="btn btn-primary" data-hydro-click="{&quot;event_type&quot;:&quot;authentication.click&quot;,&quot;payload&quot;:{&quot;location_in_page&quot;:&quot;files signup prompt&quot;,&quot;repository_id&quot;:null,&quot;auth_type&quot;:&quot;SIGN_UP&quot;,&quot;client_id&quot;:null,&quot;originating_request_id&quot;:&quot;A689:5C3D:C6144:14D916:5CF5617A&quot;,&quot;originating_url&quot;:&quot;https://github.com/johnheap/VAPPER-Galaxy/blob/master/Tryp_G.py&quot;,&quot;referrer&quot;:null,&quot;user_id&quot;:null}}" data-hydro-click-hmac="93e6383cc468287e90a1abe17ee3e6216b82b1b7d4ae0b4a616d22c192163882" data-ga-click="(Logged out) Sign up prompt, clicked Sign up, text:sign-up" href="/join?source=prompt-blob-show">Sign up</a>
611 </div>
612 </div>
613 </div>
614
615
616 <div class="d-flex flex-items-start flex-shrink-0 mb-2 flex-column flex-md-row">
617 <span class="d-flex flex-justify-between width-full width-md-auto">
618
619 <details class="details-reset details-overlay select-menu branch-select-menu hx_rsm" id="branch-select-menu">
620 <summary class="btn btn-sm select-menu-button css-truncate"
621 data-hotkey="w"
622
623 title="Switch branches or tags">
624 <i>Branch:</i>
625 <span class="css-truncate-target">master</span>
626 </summary>
627
628 <details-menu class="select-menu-modal hx_rsm-modal position-absolute" style="z-index: 99;" src="/johnheap/VAPPER-Galaxy/ref-list/master/Tryp_G.py?source_action=show&amp;source_controller=blob" preload>
629 <include-fragment class="select-menu-loading-overlay anim-pulse">
630 <svg height="32" class="octicon octicon-octoface" viewBox="0 0 16 16" version="1.1" width="32" aria-hidden="true"><path fill-rule="evenodd" d="M14.7 5.34c.13-.32.55-1.59-.13-3.31 0 0-1.05-.33-3.44 1.3-1-.28-2.07-.32-3.13-.32s-2.13.04-3.13.32c-2.39-1.64-3.44-1.3-3.44-1.3-.68 1.72-.26 2.99-.13 3.31C.49 6.21 0 7.33 0 8.69 0 13.84 3.33 15 7.98 15S16 13.84 16 8.69c0-1.36-.49-2.48-1.3-3.35zM8 14.02c-3.3 0-5.98-.15-5.98-3.35 0-.76.38-1.48 1.02-2.07 1.07-.98 2.9-.46 4.96-.46 2.07 0 3.88-.52 4.96.46.65.59 1.02 1.3 1.02 2.07 0 3.19-2.68 3.35-5.98 3.35zM5.49 9.01c-.66 0-1.2.8-1.2 1.78s.54 1.79 1.2 1.79c.66 0 1.2-.8 1.2-1.79s-.54-1.78-1.2-1.78zm5.02 0c-.66 0-1.2.79-1.2 1.78s.54 1.79 1.2 1.79c.66 0 1.2-.8 1.2-1.79s-.53-1.78-1.2-1.78z"/></svg>
631 </include-fragment>
632 </details-menu>
633 </details>
634
635 <div class="BtnGroup flex-shrink-0 d-md-none">
636 <a href="/johnheap/VAPPER-Galaxy/find/master"
637 class="js-pjax-capture-input btn btn-sm BtnGroup-item"
638 data-pjax
639 data-hotkey="t">
640 Find file
641 </a>
642 <clipboard-copy value="Tryp_G.py" class="btn btn-sm BtnGroup-item">
643 Copy path
644 </clipboard-copy>
645 </div>
646 </span>
647 <h2 id="blob-path" class="breadcrumb flex-auto min-width-0 text-normal flex-md-self-center ml-md-2 mr-md-3 my-2 my-md-0">
648 <span class="js-repo-root text-bold"><span class="js-path-segment"><a data-pjax="true" href="/johnheap/VAPPER-Galaxy"><span>VAPPER-Galaxy</span></a></span></span><span class="separator">/</span><strong class="final-path">Tryp_G.py</strong>
649 </h2>
650
651 <div class="BtnGroup flex-shrink-0 d-none d-md-inline-block">
652 <a href="/johnheap/VAPPER-Galaxy/find/master"
653 class="js-pjax-capture-input btn btn-sm BtnGroup-item"
654 data-pjax
655 data-hotkey="t">
656 Find file
657 </a>
658 <clipboard-copy value="Tryp_G.py" class="btn btn-sm BtnGroup-item">
659 Copy path
660 </clipboard-copy>
661 </div>
662 </div>
663
664
665
666 <include-fragment src="/johnheap/VAPPER-Galaxy/contributors/master/Tryp_G.py" class="Box Box--condensed commit-loader">
667 <div class="Box-body bg-blue-light f6">
668 Fetching contributors&hellip;
669 </div>
670
671 <div class="Box-body d-flex flex-items-center" >
672 <img alt="" class="loader-loading mr-2" src="https://github.githubassets.com/images/spinners/octocat-spinner-32-EAF2F5.gif" width="16" height="16" />
673 <span class="text-red h6 loader-error">Cannot retrieve contributors at this time</span>
674 </div>
675 </include-fragment>
676
677
678
679
680
681 <div class="Box mt-3 position-relative">
682
683 <div class="Box-header py-2 d-flex flex-column flex-shrink-0 flex-md-row flex-md-items-center">
684
685 <div class="text-mono f6 flex-auto pr-3 flex-order-2 flex-md-order-1 mt-2 mt-md-0">
686 407 lines (338 sloc)
687 <span class="file-info-divider"></span>
688 20.2 KB
689 </div>
690
691 <div class="d-flex py-1 py-md-0 flex-auto flex-order-1 flex-md-order-2 flex-sm-grow-0 flex-justify-between">
692
693 <div class="BtnGroup">
694 <a id="raw-url" class="btn btn-sm BtnGroup-item" href="/johnheap/VAPPER-Galaxy/raw/master/Tryp_G.py">Raw</a>
695 <a class="btn btn-sm js-update-url-with-hash BtnGroup-item" data-hotkey="b" href="/johnheap/VAPPER-Galaxy/blame/master/Tryp_G.py">Blame</a>
696 <a rel="nofollow" class="btn btn-sm BtnGroup-item" href="/johnheap/VAPPER-Galaxy/commits/master/Tryp_G.py">History</a>
697 </div>
698
699
700 <div>
701
702 <button type="button" class="btn-octicon disabled tooltipped tooltipped-nw"
703 aria-label="You must be signed in to make or propose changes">
704 <svg class="octicon octicon-pencil" viewBox="0 0 14 16" version="1.1" width="14" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M0 12v3h3l8-8-3-3-8 8zm3 2H1v-2h1v1h1v1zm10.3-9.3L12 6 9 3l1.3-1.3a.996.996 0 0 1 1.41 0l1.59 1.59c.39.39.39 1.02 0 1.41z"/></svg>
705 </button>
706 <button type="button" class="btn-octicon btn-octicon-danger disabled tooltipped tooltipped-nw"
707 aria-label="You must be signed in to make or propose changes">
708 <svg class="octicon octicon-trashcan" viewBox="0 0 12 16" version="1.1" width="12" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M11 2H9c0-.55-.45-1-1-1H5c-.55 0-1 .45-1 1H2c-.55 0-1 .45-1 1v1c0 .55.45 1 1 1v9c0 .55.45 1 1 1h7c.55 0 1-.45 1-1V5c.55 0 1-.45 1-1V3c0-.55-.45-1-1-1zm-1 12H3V5h1v8h1V5h1v8h1V5h1v8h1V5h1v9zm1-10H2V3h9v1z"/></svg>
709 </button>
710 </div>
711 </div>
712 </div>
713
714
715
716 <div itemprop="text" class="Box-body p-0 blob-wrapper data type-python ">
717
718 <table class="highlight tab-size js-file-line-container" data-tab-size="8">
719 <tr>
720 <td id="L1" class="blob-num js-line-number" data-line-number="1"></td>
721 <td id="LC1" class="blob-code blob-code-inner js-file-line"><span class="pl-s"><span class="pl-pds">&quot;&quot;&quot;</span></span></td>
722 </tr>
723 <tr>
724 <td id="L2" class="blob-num js-line-number" data-line-number="2"></td>
725 <td id="LC2" class="blob-code blob-code-inner js-file-line"><span class="pl-s"> * Copyright 2018 University of Liverpool</span></td>
726 </tr>
727 <tr>
728 <td id="L3" class="blob-num js-line-number" data-line-number="3"></td>
729 <td id="LC3" class="blob-code blob-code-inner js-file-line"><span class="pl-s"> * Author: John Heap, Computational Biology Facility, UoL</span></td>
730 </tr>
731 <tr>
732 <td id="L4" class="blob-num js-line-number" data-line-number="4"></td>
733 <td id="LC4" class="blob-code blob-code-inner js-file-line"><span class="pl-s"> * Based on original scripts of Sara Silva Pereira, Institute of Infection and Global Health, UoL</span></td>
734 </tr>
735 <tr>
736 <td id="L5" class="blob-num js-line-number" data-line-number="5"></td>
737 <td id="LC5" class="blob-code blob-code-inner js-file-line"><span class="pl-s"> *</span></td>
738 </tr>
739 <tr>
740 <td id="L6" class="blob-num js-line-number" data-line-number="6"></td>
741 <td id="LC6" class="blob-code blob-code-inner js-file-line"><span class="pl-s"> * Licensed under the Apache License, Version 2.0 (the &quot;License&quot;);</span></td>
742 </tr>
743 <tr>
744 <td id="L7" class="blob-num js-line-number" data-line-number="7"></td>
745 <td id="LC7" class="blob-code blob-code-inner js-file-line"><span class="pl-s"> * you may not use this file except in compliance with the License.</span></td>
746 </tr>
747 <tr>
748 <td id="L8" class="blob-num js-line-number" data-line-number="8"></td>
749 <td id="LC8" class="blob-code blob-code-inner js-file-line"><span class="pl-s"> * You may obtain a copy of the License at</span></td>
750 </tr>
751 <tr>
752 <td id="L9" class="blob-num js-line-number" data-line-number="9"></td>
753 <td id="LC9" class="blob-code blob-code-inner js-file-line"><span class="pl-s"> *</span></td>
754 </tr>
755 <tr>
756 <td id="L10" class="blob-num js-line-number" data-line-number="10"></td>
757 <td id="LC10" class="blob-code blob-code-inner js-file-line"><span class="pl-s"> * http://www.apache.org/licenses/LICENSE-2.0</span></td>
758 </tr>
759 <tr>
760 <td id="L11" class="blob-num js-line-number" data-line-number="11"></td>
761 <td id="LC11" class="blob-code blob-code-inner js-file-line"><span class="pl-s"> *</span></td>
762 </tr>
763 <tr>
764 <td id="L12" class="blob-num js-line-number" data-line-number="12"></td>
765 <td id="LC12" class="blob-code blob-code-inner js-file-line"><span class="pl-s"> * Unless required by applicable law or agreed to in writing, software</span></td>
766 </tr>
767 <tr>
768 <td id="L13" class="blob-num js-line-number" data-line-number="13"></td>
769 <td id="LC13" class="blob-code blob-code-inner js-file-line"><span class="pl-s"> * distributed under the License is distributed on an &quot;AS IS&quot; BASIS,</span></td>
770 </tr>
771 <tr>
772 <td id="L14" class="blob-num js-line-number" data-line-number="14"></td>
773 <td id="LC14" class="blob-code blob-code-inner js-file-line"><span class="pl-s"> * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.</span></td>
774 </tr>
775 <tr>
776 <td id="L15" class="blob-num js-line-number" data-line-number="15"></td>
777 <td id="LC15" class="blob-code blob-code-inner js-file-line"><span class="pl-s"> * See the License for the specific language governing permissions and</span></td>
778 </tr>
779 <tr>
780 <td id="L16" class="blob-num js-line-number" data-line-number="16"></td>
781 <td id="LC16" class="blob-code blob-code-inner js-file-line"><span class="pl-s"> * limitations under the License.</span></td>
782 </tr>
783 <tr>
784 <td id="L17" class="blob-num js-line-number" data-line-number="17"></td>
785 <td id="LC17" class="blob-code blob-code-inner js-file-line"><span class="pl-s"> *</span></td>
786 </tr>
787 <tr>
788 <td id="L18" class="blob-num js-line-number" data-line-number="18"></td>
789 <td id="LC18" class="blob-code blob-code-inner js-file-line"><span class="pl-s"> <span class="pl-pds">&quot;&quot;&quot;</span></span></td>
790 </tr>
791 <tr>
792 <td id="L19" class="blob-num js-line-number" data-line-number="19"></td>
793 <td id="LC19" class="blob-code blob-code-inner js-file-line">
794 </td>
795 </tr>
796 <tr>
797 <td id="L20" class="blob-num js-line-number" data-line-number="20"></td>
798 <td id="LC20" class="blob-code blob-code-inner js-file-line"><span class="pl-k">import</span> subprocess</td>
799 </tr>
800 <tr>
801 <td id="L21" class="blob-num js-line-number" data-line-number="21"></td>
802 <td id="LC21" class="blob-code blob-code-inner js-file-line"><span class="pl-k">import</span> re</td>
803 </tr>
804 <tr>
805 <td id="L22" class="blob-num js-line-number" data-line-number="22"></td>
806 <td id="LC22" class="blob-code blob-code-inner js-file-line"><span class="pl-k">import</span> os</td>
807 </tr>
808 <tr>
809 <td id="L23" class="blob-num js-line-number" data-line-number="23"></td>
810 <td id="LC23" class="blob-code blob-code-inner js-file-line"><span class="pl-k">import</span> sys</td>
811 </tr>
812 <tr>
813 <td id="L24" class="blob-num js-line-number" data-line-number="24"></td>
814 <td id="LC24" class="blob-code blob-code-inner js-file-line"><span class="pl-k">import</span> shutil</td>
815 </tr>
816 <tr>
817 <td id="L25" class="blob-num js-line-number" data-line-number="25"></td>
818 <td id="LC25" class="blob-code blob-code-inner js-file-line"><span class="pl-k">import</span> pandas <span class="pl-k">as</span> pd</td>
819 </tr>
820 <tr>
821 <td id="L26" class="blob-num js-line-number" data-line-number="26"></td>
822 <td id="LC26" class="blob-code blob-code-inner js-file-line"><span class="pl-k">import</span> numpy <span class="pl-k">as</span> np</td>
823 </tr>
824 <tr>
825 <td id="L27" class="blob-num js-line-number" data-line-number="27"></td>
826 <td id="LC27" class="blob-code blob-code-inner js-file-line"><span class="pl-k">import</span> matplotlib <span class="pl-k">as</span> mpl</td>
827 </tr>
828 <tr>
829 <td id="L28" class="blob-num js-line-number" data-line-number="28"></td>
830 <td id="LC28" class="blob-code blob-code-inner js-file-line">mpl.use(<span class="pl-s"><span class="pl-pds">&#39;</span>Agg<span class="pl-pds">&#39;</span></span>)</td>
831 </tr>
832 <tr>
833 <td id="L29" class="blob-num js-line-number" data-line-number="29"></td>
834 <td id="LC29" class="blob-code blob-code-inner js-file-line"><span class="pl-k">import</span> matplotlib.pyplot <span class="pl-k">as</span> plt</td>
835 </tr>
836 <tr>
837 <td id="L30" class="blob-num js-line-number" data-line-number="30"></td>
838 <td id="LC30" class="blob-code blob-code-inner js-file-line"><span class="pl-k">from</span> matplotlib.mlab <span class="pl-k">import</span> <span class="pl-c1">PCA</span></td>
839 </tr>
840 <tr>
841 <td id="L31" class="blob-num js-line-number" data-line-number="31"></td>
842 <td id="LC31" class="blob-code blob-code-inner js-file-line"><span class="pl-k">import</span> seaborn <span class="pl-k">as</span> sns</td>
843 </tr>
844 <tr>
845 <td id="L32" class="blob-num js-line-number" data-line-number="32"></td>
846 <td id="LC32" class="blob-code blob-code-inner js-file-line">
847 </td>
848 </tr>
849 <tr>
850 <td id="L33" class="blob-num js-line-number" data-line-number="33"></td>
851 <td id="LC33" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-c">#</span> some globals for convenience</span></td>
852 </tr>
853 <tr>
854 <td id="L34" class="blob-num js-line-number" data-line-number="34"></td>
855 <td id="LC34" class="blob-code blob-code-inner js-file-line">
856 </td>
857 </tr>
858 <tr>
859 <td id="L35" class="blob-num js-line-number" data-line-number="35"></td>
860 <td id="LC35" class="blob-code blob-code-inner js-file-line">pList <span class="pl-k">=</span> [<span class="pl-s"><span class="pl-pds">&#39;</span>P1<span class="pl-pds">&#39;</span></span>, <span class="pl-s"><span class="pl-pds">&#39;</span>P2<span class="pl-pds">&#39;</span></span>, <span class="pl-s"><span class="pl-pds">&#39;</span>P3<span class="pl-pds">&#39;</span></span>, <span class="pl-s"><span class="pl-pds">&#39;</span>P4<span class="pl-pds">&#39;</span></span>, <span class="pl-s"><span class="pl-pds">&#39;</span>P5<span class="pl-pds">&#39;</span></span>, <span class="pl-s"><span class="pl-pds">&#39;</span>P6<span class="pl-pds">&#39;</span></span>, <span class="pl-s"><span class="pl-pds">&#39;</span>P7<span class="pl-pds">&#39;</span></span>, <span class="pl-s"><span class="pl-pds">&#39;</span>P8<span class="pl-pds">&#39;</span></span>, <span class="pl-s"><span class="pl-pds">&#39;</span>P9<span class="pl-pds">&#39;</span></span>, <span class="pl-s"><span class="pl-pds">&#39;</span>P10<span class="pl-pds">&#39;</span></span>, <span class="pl-s"><span class="pl-pds">&#39;</span>P11<span class="pl-pds">&#39;</span></span>, <span class="pl-s"><span class="pl-pds">&#39;</span>P12<span class="pl-pds">&#39;</span></span>, <span class="pl-s"><span class="pl-pds">&#39;</span>P13<span class="pl-pds">&#39;</span></span>, <span class="pl-s"><span class="pl-pds">&#39;</span>P14<span class="pl-pds">&#39;</span></span>, <span class="pl-s"><span class="pl-pds">&#39;</span>P15<span class="pl-pds">&#39;</span></span>]</td>
861 </tr>
862 <tr>
863 <td id="L36" class="blob-num js-line-number" data-line-number="36"></td>
864 <td id="LC36" class="blob-code blob-code-inner js-file-line">
865 </td>
866 </tr>
867 <tr>
868 <td id="L37" class="blob-num js-line-number" data-line-number="37"></td>
869 <td id="LC37" class="blob-code blob-code-inner js-file-line">quietString <span class="pl-k">=</span> <span class="pl-s"><span class="pl-pds">&quot;</span><span class="pl-pds">&quot;</span></span> <span class="pl-c"><span class="pl-c">#</span>&quot; &gt;&gt;&quot;+os.path.dirname(os.path.realpath(__file__))+&quot;/log/Vap_log.txt 2&gt;&amp;1&quot;</span></td>
870 </tr>
871 <tr>
872 <td id="L38" class="blob-num js-line-number" data-line-number="38"></td>
873 <td id="LC38" class="blob-code blob-code-inner js-file-line">
874 </td>
875 </tr>
876 <tr>
877 <td id="L39" class="blob-num js-line-number" data-line-number="39"></td>
878 <td id="LC39" class="blob-code blob-code-inner js-file-line"><span class="pl-k">def</span> <span class="pl-en">assembleWithVelvet</span>(<span class="pl-smi">name</span>, <span class="pl-smi">kmers</span>, <span class="pl-smi">inslen</span>, <span class="pl-smi">covcut</span>, <span class="pl-smi">fastq1name</span>,<span class="pl-smi">fastq2name</span>):</td>
879 </tr>
880 <tr>
881 <td id="L40" class="blob-num js-line-number" data-line-number="40"></td>
882 <td id="LC40" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">#</span>argString = &quot;velveth &quot; + name + &quot;_k65 65 -shortPaired -fastq &quot; + name + &quot;_R1.fastq &quot; + name + &quot;_R2.fastq&quot;</span></td>
883 </tr>
884 <tr>
885 <td id="L41" class="blob-num js-line-number" data-line-number="41"></td>
886 <td id="LC41" class="blob-code blob-code-inner js-file-line"> argString <span class="pl-k">=</span> <span class="pl-s"><span class="pl-pds">&quot;</span>velveth <span class="pl-pds">&quot;</span></span> <span class="pl-k">+</span> name <span class="pl-k">+</span> <span class="pl-s"><span class="pl-pds">&quot;</span>_k<span class="pl-pds">&quot;</span></span><span class="pl-k">+</span> kmers<span class="pl-k">+</span><span class="pl-s"><span class="pl-pds">&quot;</span> <span class="pl-pds">&quot;</span></span><span class="pl-k">+</span> kmers <span class="pl-k">+</span> <span class="pl-s"><span class="pl-pds">&quot;</span> -shortPaired -fastq <span class="pl-pds">&quot;</span></span> <span class="pl-k">+</span> fastq1name<span class="pl-k">+</span><span class="pl-s"><span class="pl-pds">&quot;</span> <span class="pl-pds">&quot;</span></span><span class="pl-k">+</span>fastq2name<span class="pl-k">+</span>quietString</td>
887 </tr>
888 <tr>
889 <td id="L42" class="blob-num js-line-number" data-line-number="42"></td>
890 <td id="LC42" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">print</span>(argString)</td>
891 </tr>
892 <tr>
893 <td id="L43" class="blob-num js-line-number" data-line-number="43"></td>
894 <td id="LC43" class="blob-code blob-code-inner js-file-line"> returncode <span class="pl-k">=</span> subprocess.call(argString, <span class="pl-v">shell</span><span class="pl-k">=</span><span class="pl-c1">True</span>)</td>
895 </tr>
896 <tr>
897 <td id="L44" class="blob-num js-line-number" data-line-number="44"></td>
898 <td id="LC44" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> returncode <span class="pl-k">!=</span> <span class="pl-c1">0</span>:</td>
899 </tr>
900 <tr>
901 <td id="L45" class="blob-num js-line-number" data-line-number="45"></td>
902 <td id="LC45" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> <span class="pl-s"><span class="pl-pds">&quot;</span>Error in velveth<span class="pl-pds">&quot;</span></span></td>
903 </tr>
904 <tr>
905 <td id="L46" class="blob-num js-line-number" data-line-number="46"></td>
906 <td id="LC46" class="blob-code blob-code-inner js-file-line"> argString <span class="pl-k">=</span> <span class="pl-s"><span class="pl-pds">&quot;</span>velvetg <span class="pl-pds">&quot;</span></span> <span class="pl-k">+</span> name <span class="pl-k">+</span> <span class="pl-s"><span class="pl-pds">&quot;</span>_k<span class="pl-pds">&quot;</span></span><span class="pl-k">+</span>kmers<span class="pl-k">+</span><span class="pl-s"><span class="pl-pds">&quot;</span> -exp_cov auto -ins_length <span class="pl-pds">&quot;</span></span><span class="pl-k">+</span>inslen<span class="pl-k">+</span><span class="pl-s"><span class="pl-pds">&quot;</span> -cov_cutoff <span class="pl-pds">&quot;</span></span><span class="pl-k">+</span>covcut<span class="pl-k">+</span><span class="pl-s"><span class="pl-pds">&quot;</span> -clean yes -ins_length_sd 50 -min_pair_count 20<span class="pl-pds">&quot;</span></span><span class="pl-k">+</span>quietString</td>
907 </tr>
908 <tr>
909 <td id="L47" class="blob-num js-line-number" data-line-number="47"></td>
910 <td id="LC47" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">#</span>argString = &quot;velvetg &quot; + name + &quot;_k65 -exp_cov auto -ins_length 400 -cov_cutoff 5 -clean yes -ins_length_sd 50 -min_pair_count 20&quot;+quietString</span></td>
911 </tr>
912 <tr>
913 <td id="L48" class="blob-num js-line-number" data-line-number="48"></td>
914 <td id="LC48" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">print</span>(argString)</td>
915 </tr>
916 <tr>
917 <td id="L49" class="blob-num js-line-number" data-line-number="49"></td>
918 <td id="LC49" class="blob-code blob-code-inner js-file-line"> returncode <span class="pl-k">=</span> subprocess.call(argString, <span class="pl-v">shell</span> <span class="pl-k">=</span> <span class="pl-c1">True</span>)</td>
919 </tr>
920 <tr>
921 <td id="L50" class="blob-num js-line-number" data-line-number="50"></td>
922 <td id="LC50" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> returncode <span class="pl-k">!=</span> <span class="pl-c1">0</span>:</td>
923 </tr>
924 <tr>
925 <td id="L51" class="blob-num js-line-number" data-line-number="51"></td>
926 <td id="LC51" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> <span class="pl-s"><span class="pl-pds">&quot;</span>Error in velvetg<span class="pl-pds">&quot;</span></span></td>
927 </tr>
928 <tr>
929 <td id="L52" class="blob-num js-line-number" data-line-number="52"></td>
930 <td id="LC52" class="blob-code blob-code-inner js-file-line"> shutil.copyfile(name <span class="pl-k">+</span> <span class="pl-s"><span class="pl-pds">&quot;</span>_k<span class="pl-pds">&quot;</span></span><span class="pl-k">+</span>kmers<span class="pl-k">+</span><span class="pl-s"><span class="pl-pds">&quot;</span>//contigs.fa<span class="pl-pds">&quot;</span></span>,name <span class="pl-k">+</span> <span class="pl-s"><span class="pl-pds">&quot;</span>.fa<span class="pl-pds">&quot;</span></span>) <span class="pl-c"><span class="pl-c">#</span> my $namechange = &quot;mv &quot;.$input.&quot;_k65/contigs.fa &quot;.$input.&quot;.fa&quot;;</span></td>
931 </tr>
932 <tr>
933 <td id="L53" class="blob-num js-line-number" data-line-number="53"></td>
934 <td id="LC53" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> <span class="pl-s"><span class="pl-pds">&quot;</span>ok<span class="pl-pds">&quot;</span></span></td>
935 </tr>
936 <tr>
937 <td id="L54" class="blob-num js-line-number" data-line-number="54"></td>
938 <td id="LC54" class="blob-code blob-code-inner js-file-line">
939 </td>
940 </tr>
941 <tr>
942 <td id="L55" class="blob-num js-line-number" data-line-number="55"></td>
943 <td id="LC55" class="blob-code blob-code-inner js-file-line"><span class="pl-k">def</span> <span class="pl-en">contigTranslation</span>(<span class="pl-smi">name</span>):</td>
944 </tr>
945 <tr>
946 <td id="L56" class="blob-num js-line-number" data-line-number="56"></td>
947 <td id="LC56" class="blob-code blob-code-inner js-file-line"> argString <span class="pl-k">=</span> <span class="pl-s"><span class="pl-pds">&quot;</span>transeq <span class="pl-pds">&quot;</span></span> <span class="pl-k">+</span> name <span class="pl-k">+</span> <span class="pl-s"><span class="pl-pds">&quot;</span>.fa <span class="pl-pds">&quot;</span></span> <span class="pl-k">+</span> name <span class="pl-k">+</span> <span class="pl-s"><span class="pl-pds">&quot;</span>_6frame.fas -frame=6 <span class="pl-pds">&quot;</span></span> <span class="pl-c"><span class="pl-c">#</span>+quietString</span></td>
948 </tr>
949 <tr>
950 <td id="L57" class="blob-num js-line-number" data-line-number="57"></td>
951 <td id="LC57" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">print</span>(argString)</td>
952 </tr>
953 <tr>
954 <td id="L58" class="blob-num js-line-number" data-line-number="58"></td>
955 <td id="LC58" class="blob-code blob-code-inner js-file-line"> returncode <span class="pl-k">=</span> subprocess.call(argString, <span class="pl-v">shell</span><span class="pl-k">=</span><span class="pl-c1">True</span>)</td>
956 </tr>
957 <tr>
958 <td id="L59" class="blob-num js-line-number" data-line-number="59"></td>
959 <td id="LC59" class="blob-code blob-code-inner js-file-line">
960 </td>
961 </tr>
962 <tr>
963 <td id="L60" class="blob-num js-line-number" data-line-number="60"></td>
964 <td id="LC60" class="blob-code blob-code-inner js-file-line">
965 </td>
966 </tr>
967 <tr>
968 <td id="L61" class="blob-num js-line-number" data-line-number="61"></td>
969 <td id="LC61" class="blob-code blob-code-inner js-file-line"><span class="pl-k">def</span> <span class="pl-en">HMMerMotifSearch</span>(<span class="pl-smi">name</span>):</td>
970 </tr>
971 <tr>
972 <td id="L62" class="blob-num js-line-number" data-line-number="62"></td>
973 <td id="LC62" class="blob-code blob-code-inner js-file-line"> motifs <span class="pl-k">=</span> [<span class="pl-s"><span class="pl-pds">&#39;</span>1<span class="pl-pds">&#39;</span></span>, <span class="pl-s"><span class="pl-pds">&#39;</span>2a<span class="pl-pds">&#39;</span></span>, <span class="pl-s"><span class="pl-pds">&#39;</span>2b<span class="pl-pds">&#39;</span></span>, <span class="pl-s"><span class="pl-pds">&#39;</span>3<span class="pl-pds">&#39;</span></span>, <span class="pl-s"><span class="pl-pds">&#39;</span>4a<span class="pl-pds">&#39;</span></span>, <span class="pl-s"><span class="pl-pds">&#39;</span>4b<span class="pl-pds">&#39;</span></span>, <span class="pl-s"><span class="pl-pds">&#39;</span>4c<span class="pl-pds">&#39;</span></span>, <span class="pl-s"><span class="pl-pds">&#39;</span>5<span class="pl-pds">&#39;</span></span>, <span class="pl-s"><span class="pl-pds">&#39;</span>6<span class="pl-pds">&#39;</span></span>, <span class="pl-s"><span class="pl-pds">&#39;</span>7<span class="pl-pds">&#39;</span></span>, <span class="pl-s"><span class="pl-pds">&#39;</span>8a<span class="pl-pds">&#39;</span></span>, <span class="pl-s"><span class="pl-pds">&#39;</span>8b<span class="pl-pds">&#39;</span></span>, <span class="pl-s"><span class="pl-pds">&#39;</span>9a<span class="pl-pds">&#39;</span></span>, <span class="pl-s"><span class="pl-pds">&#39;</span>9b<span class="pl-pds">&#39;</span></span>,</td>
974 </tr>
975 <tr>
976 <td id="L63" class="blob-num js-line-number" data-line-number="63"></td>
977 <td id="LC63" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">&#39;</span>9c<span class="pl-pds">&#39;</span></span>, <span class="pl-s"><span class="pl-pds">&#39;</span>10a<span class="pl-pds">&#39;</span></span>, <span class="pl-s"><span class="pl-pds">&#39;</span>10b<span class="pl-pds">&#39;</span></span>, <span class="pl-s"><span class="pl-pds">&#39;</span>11a<span class="pl-pds">&#39;</span></span>, <span class="pl-s"><span class="pl-pds">&#39;</span>11b<span class="pl-pds">&#39;</span></span>, <span class="pl-s"><span class="pl-pds">&#39;</span>12<span class="pl-pds">&#39;</span></span>, <span class="pl-s"><span class="pl-pds">&#39;</span>13a<span class="pl-pds">&#39;</span></span>, <span class="pl-s"><span class="pl-pds">&#39;</span>13b<span class="pl-pds">&#39;</span></span>, <span class="pl-s"><span class="pl-pds">&#39;</span>13c<span class="pl-pds">&#39;</span></span>, <span class="pl-s"><span class="pl-pds">&#39;</span>13d<span class="pl-pds">&#39;</span></span>, <span class="pl-s"><span class="pl-pds">&#39;</span>14<span class="pl-pds">&#39;</span></span>, <span class="pl-s"><span class="pl-pds">&#39;</span>15a<span class="pl-pds">&#39;</span></span>, <span class="pl-s"><span class="pl-pds">&#39;</span>15b<span class="pl-pds">&#39;</span></span>, <span class="pl-s"><span class="pl-pds">&#39;</span>15c<span class="pl-pds">&#39;</span></span>]</td>
978 </tr>
979 <tr>
980 <td id="L64" class="blob-num js-line-number" data-line-number="64"></td>
981 <td id="LC64" class="blob-code blob-code-inner js-file-line"> lineCounts <span class="pl-k">=</span> []</td>
982 </tr>
983 <tr>
984 <td id="L65" class="blob-num js-line-number" data-line-number="65"></td>
985 <td id="LC65" class="blob-code blob-code-inner js-file-line"> compoundList <span class="pl-k">=</span> []</td>
986 </tr>
987 <tr>
988 <td id="L66" class="blob-num js-line-number" data-line-number="66"></td>
989 <td id="LC66" class="blob-code blob-code-inner js-file-line"> dir_path <span class="pl-k">=</span> os.path.dirname(os.path.realpath(<span class="pl-c1">__file__</span>))</td>
990 </tr>
991 <tr>
992 <td id="L67" class="blob-num js-line-number" data-line-number="67"></td>
993 <td id="LC67" class="blob-code blob-code-inner js-file-line"> phylopath <span class="pl-k">=</span> dir_path <span class="pl-k">+</span> <span class="pl-s"><span class="pl-pds">&quot;</span>/data/Motifs/Phylotype<span class="pl-pds">&quot;</span></span></td>
994 </tr>
995 <tr>
996 <td id="L68" class="blob-num js-line-number" data-line-number="68"></td>
997 <td id="LC68" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">for</span> m <span class="pl-k">in</span> motifs:</td>
998 </tr>
999 <tr>
1000 <td id="L69" class="blob-num js-line-number" data-line-number="69"></td>
1001 <td id="LC69" class="blob-code blob-code-inner js-file-line"> argString <span class="pl-k">=</span> <span class="pl-s"><span class="pl-pds">&quot;</span>hmmsearch <span class="pl-pds">&quot;</span></span> <span class="pl-k">+</span> phylopath <span class="pl-k">+</span> m <span class="pl-k">+</span> <span class="pl-s"><span class="pl-pds">&quot;</span>.hmm <span class="pl-pds">&quot;</span></span> <span class="pl-k">+</span> name <span class="pl-k">+</span> <span class="pl-s"><span class="pl-pds">&quot;</span>_6frame.fas &gt; Phy<span class="pl-pds">&quot;</span></span> <span class="pl-k">+</span> m <span class="pl-k">+</span> <span class="pl-s"><span class="pl-pds">&quot;</span>.out<span class="pl-pds">&quot;</span></span> <span class="pl-c"><span class="pl-c">#</span> +quietString</span></td>
1002 </tr>
1003 <tr>
1004 <td id="L70" class="blob-num js-line-number" data-line-number="70"></td>
1005 <td id="LC70" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">#</span> argString = &quot;hmmsearch &quot;+phylopath + m + &quot;.hmm &quot; + dir_path+&quot;/data/Test_6frame.fas &gt; Phy&quot; + m + &quot;.out&quot;</span></td>
1006 </tr>
1007 <tr>
1008 <td id="L71" class="blob-num js-line-number" data-line-number="71"></td>
1009 <td id="LC71" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">#</span>print(argString)</span></td>
1010 </tr>
1011 <tr>
1012 <td id="L72" class="blob-num js-line-number" data-line-number="72"></td>
1013 <td id="LC72" class="blob-code blob-code-inner js-file-line"> subprocess.call(argString, <span class="pl-v">shell</span><span class="pl-k">=</span><span class="pl-c1">True</span>)</td>
1014 </tr>
1015 <tr>
1016 <td id="L73" class="blob-num js-line-number" data-line-number="73"></td>
1017 <td id="LC73" class="blob-code blob-code-inner js-file-line">
1018 </td>
1019 </tr>
1020 <tr>
1021 <td id="L74" class="blob-num js-line-number" data-line-number="74"></td>
1022 <td id="LC74" class="blob-code blob-code-inner js-file-line"> hmmResult <span class="pl-k">=</span> <span class="pl-c1">open</span>(<span class="pl-s"><span class="pl-pds">&quot;</span>Phy<span class="pl-pds">&quot;</span></span> <span class="pl-k">+</span> m <span class="pl-k">+</span> <span class="pl-s"><span class="pl-pds">&quot;</span>.out<span class="pl-pds">&quot;</span></span>, <span class="pl-s"><span class="pl-pds">&#39;</span>r<span class="pl-pds">&#39;</span></span>)</td>
1023 </tr>
1024 <tr>
1025 <td id="L75" class="blob-num js-line-number" data-line-number="75"></td>
1026 <td id="LC75" class="blob-code blob-code-inner js-file-line"> tempout <span class="pl-k">=</span> <span class="pl-c1">open</span>(dir_path <span class="pl-k">+</span> <span class="pl-s"><span class="pl-pds">&quot;</span>/data/<span class="pl-pds">&quot;</span></span> <span class="pl-k">+</span> <span class="pl-s"><span class="pl-pds">&quot;</span>Phy<span class="pl-pds">&quot;</span></span> <span class="pl-k">+</span> m <span class="pl-k">+</span> <span class="pl-s"><span class="pl-pds">&quot;</span>.txt<span class="pl-pds">&quot;</span></span>, <span class="pl-s"><span class="pl-pds">&#39;</span>w<span class="pl-pds">&#39;</span></span>)</td>
1027 </tr>
1028 <tr>
1029 <td id="L76" class="blob-num js-line-number" data-line-number="76"></td>
1030 <td id="LC76" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">#</span>regex = r&quot;NODE_[0-9]{1,7}_length_[0-9]{1,7}_cov_[0-9]{1,10}.[0-9]{1,7}_[0-9]{1,2}&quot;</span></td>
1031 </tr>
1032 <tr>
1033 <td id="L77" class="blob-num js-line-number" data-line-number="77"></td>
1034 <td id="LC77" class="blob-code blob-code-inner js-file-line"> n <span class="pl-k">=</span> <span class="pl-c1">0</span></td>
1035 </tr>
1036 <tr>
1037 <td id="L78" class="blob-num js-line-number" data-line-number="78"></td>
1038 <td id="LC78" class="blob-code blob-code-inner js-file-line"> outList <span class="pl-k">=</span> []</td>
1039 </tr>
1040 <tr>
1041 <td id="L79" class="blob-num js-line-number" data-line-number="79"></td>
1042 <td id="LC79" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">for</span> l <span class="pl-k">in</span> <span class="pl-c1">range</span>(<span class="pl-c1">0</span>,<span class="pl-c1">14</span>):</td>
1043 </tr>
1044 <tr>
1045 <td id="L80" class="blob-num js-line-number" data-line-number="80"></td>
1046 <td id="LC80" class="blob-code blob-code-inner js-file-line"> hmmResult.readline() <span class="pl-c"><span class="pl-c">#</span>hacky? miss out the first 14 lines. data we want starts on line 15</span></td>
1047 </tr>
1048 <tr>
1049 <td id="L81" class="blob-num js-line-number" data-line-number="81"></td>
1050 <td id="LC81" class="blob-code blob-code-inner js-file-line">
1051 </td>
1052 </tr>
1053 <tr>
1054 <td id="L82" class="blob-num js-line-number" data-line-number="82"></td>
1055 <td id="LC82" class="blob-code blob-code-inner js-file-line">
1056 </td>
1057 </tr>
1058 <tr>
1059 <td id="L83" class="blob-num js-line-number" data-line-number="83"></td>
1060 <td id="LC83" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">for</span> line <span class="pl-k">in</span> hmmResult:</td>
1061 </tr>
1062 <tr>
1063 <td id="L84" class="blob-num js-line-number" data-line-number="84"></td>
1064 <td id="LC84" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> re.search(<span class="pl-sr"><span class="pl-k">r</span><span class="pl-pds">&quot;</span>inclusion<span class="pl-pds">&quot;</span></span>, line):</td>
1065 </tr>
1066 <tr>
1067 <td id="L85" class="blob-num js-line-number" data-line-number="85"></td>
1068 <td id="LC85" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">#</span>print(&quot;inclusion threshold reached&quot;)</span></td>
1069 </tr>
1070 <tr>
1071 <td id="L86" class="blob-num js-line-number" data-line-number="86"></td>
1072 <td id="LC86" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">break</span></td>
1073 </tr>
1074 <tr>
1075 <td id="L87" class="blob-num js-line-number" data-line-number="87"></td>
1076 <td id="LC87" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> <span class="pl-c1">len</span>(line) <span class="pl-k">&lt;=</span> <span class="pl-c1">1</span>:</td>
1077 </tr>
1078 <tr>
1079 <td id="L88" class="blob-num js-line-number" data-line-number="88"></td>
1080 <td id="LC88" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">#</span>print(&quot;end of data&quot;)</span></td>
1081 </tr>
1082 <tr>
1083 <td id="L89" class="blob-num js-line-number" data-line-number="89"></td>
1084 <td id="LC89" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">break</span></td>
1085 </tr>
1086 <tr>
1087 <td id="L90" class="blob-num js-line-number" data-line-number="90"></td>
1088 <td id="LC90" class="blob-code blob-code-inner js-file-line"> m <span class="pl-k">=</span> line[<span class="pl-c1">60</span>:<span class="pl-k">-</span><span class="pl-c1">1</span>]</td>
1089 </tr>
1090 <tr>
1091 <td id="L91" class="blob-num js-line-number" data-line-number="91"></td>
1092 <td id="LC91" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">#</span>print(m)</span></td>
1093 </tr>
1094 <tr>
1095 <td id="L92" class="blob-num js-line-number" data-line-number="92"></td>
1096 <td id="LC92" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">#</span>tempout.write(m.group() + &quot;\n&quot;)</span></td>
1097 </tr>
1098 <tr>
1099 <td id="L93" class="blob-num js-line-number" data-line-number="93"></td>
1100 <td id="LC93" class="blob-code blob-code-inner js-file-line"> outList.append(<span class="pl-s"><span class="pl-pds">&quot;</span><span class="pl-pds">&quot;</span></span> <span class="pl-k">+</span> m <span class="pl-k">+</span> <span class="pl-s"><span class="pl-pds">&quot;</span><span class="pl-cce">\n</span><span class="pl-pds">&quot;</span></span>)</td>
1101 </tr>
1102 <tr>
1103 <td id="L94" class="blob-num js-line-number" data-line-number="94"></td>
1104 <td id="LC94" class="blob-code blob-code-inner js-file-line"> n <span class="pl-k">+=</span> <span class="pl-c1">1</span></td>
1105 </tr>
1106 <tr>
1107 <td id="L95" class="blob-num js-line-number" data-line-number="95"></td>
1108 <td id="LC95" class="blob-code blob-code-inner js-file-line"> compoundList.append(outList)</td>
1109 </tr>
1110 <tr>
1111 <td id="L96" class="blob-num js-line-number" data-line-number="96"></td>
1112 <td id="LC96" class="blob-code blob-code-inner js-file-line"> lineCounts.append(n)</td>
1113 </tr>
1114 <tr>
1115 <td id="L97" class="blob-num js-line-number" data-line-number="97"></td>
1116 <td id="LC97" class="blob-code blob-code-inner js-file-line"> hmmResult.close()</td>
1117 </tr>
1118 <tr>
1119 <td id="L98" class="blob-num js-line-number" data-line-number="98"></td>
1120 <td id="LC98" class="blob-code blob-code-inner js-file-line">
1121 </td>
1122 </tr>
1123 <tr>
1124 <td id="L99" class="blob-num js-line-number" data-line-number="99"></td>
1125 <td id="LC99" class="blob-code blob-code-inner js-file-line">
1126 </td>
1127 </tr>
1128 <tr>
1129 <td id="L100" class="blob-num js-line-number" data-line-number="100"></td>
1130 <td id="LC100" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">print</span>(lineCounts)</td>
1131 </tr>
1132 <tr>
1133 <td id="L101" class="blob-num js-line-number" data-line-number="101"></td>
1134 <td id="LC101" class="blob-code blob-code-inner js-file-line"> motifGroups <span class="pl-k">=</span> [[<span class="pl-s"><span class="pl-pds">&#39;</span>1<span class="pl-pds">&#39;</span></span>], [<span class="pl-s"><span class="pl-pds">&#39;</span>2a<span class="pl-pds">&#39;</span></span>, <span class="pl-s"><span class="pl-pds">&#39;</span>2b<span class="pl-pds">&#39;</span></span>], [<span class="pl-s"><span class="pl-pds">&#39;</span>3<span class="pl-pds">&#39;</span></span>], [<span class="pl-s"><span class="pl-pds">&#39;</span>4a<span class="pl-pds">&#39;</span></span>, <span class="pl-s"><span class="pl-pds">&#39;</span>4b<span class="pl-pds">&#39;</span></span>, <span class="pl-s"><span class="pl-pds">&#39;</span>4c<span class="pl-pds">&#39;</span></span>], [<span class="pl-s"><span class="pl-pds">&#39;</span>5<span class="pl-pds">&#39;</span></span>], [<span class="pl-s"><span class="pl-pds">&#39;</span>6<span class="pl-pds">&#39;</span></span>], [<span class="pl-s"><span class="pl-pds">&#39;</span>7<span class="pl-pds">&#39;</span></span>], [<span class="pl-s"><span class="pl-pds">&#39;</span>8a<span class="pl-pds">&#39;</span></span>, <span class="pl-s"><span class="pl-pds">&#39;</span>8b<span class="pl-pds">&#39;</span></span>], [<span class="pl-s"><span class="pl-pds">&#39;</span>9a<span class="pl-pds">&#39;</span></span>, <span class="pl-s"><span class="pl-pds">&#39;</span>9b<span class="pl-pds">&#39;</span></span>,</td>
1135 </tr>
1136 <tr>
1137 <td id="L102" class="blob-num js-line-number" data-line-number="102"></td>
1138 <td id="LC102" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">&#39;</span>9c<span class="pl-pds">&#39;</span></span>],</td>
1139 </tr>
1140 <tr>
1141 <td id="L103" class="blob-num js-line-number" data-line-number="103"></td>
1142 <td id="LC103" class="blob-code blob-code-inner js-file-line"> [<span class="pl-s"><span class="pl-pds">&#39;</span>10a<span class="pl-pds">&#39;</span></span>, <span class="pl-s"><span class="pl-pds">&#39;</span>10b<span class="pl-pds">&#39;</span></span>], [<span class="pl-s"><span class="pl-pds">&#39;</span>11a<span class="pl-pds">&#39;</span></span>, <span class="pl-s"><span class="pl-pds">&#39;</span>11b<span class="pl-pds">&#39;</span></span>], [<span class="pl-s"><span class="pl-pds">&#39;</span>12<span class="pl-pds">&#39;</span></span>], [<span class="pl-s"><span class="pl-pds">&#39;</span>13a<span class="pl-pds">&#39;</span></span>, <span class="pl-s"><span class="pl-pds">&#39;</span>13b<span class="pl-pds">&#39;</span></span>, <span class="pl-s"><span class="pl-pds">&#39;</span>13c<span class="pl-pds">&#39;</span></span>, <span class="pl-s"><span class="pl-pds">&#39;</span>13d<span class="pl-pds">&#39;</span></span>], [<span class="pl-s"><span class="pl-pds">&#39;</span>14<span class="pl-pds">&#39;</span></span>], [<span class="pl-s"><span class="pl-pds">&#39;</span>15a<span class="pl-pds">&#39;</span></span>, <span class="pl-s"><span class="pl-pds">&#39;</span>15b<span class="pl-pds">&#39;</span></span>, <span class="pl-s"><span class="pl-pds">&#39;</span>15c<span class="pl-pds">&#39;</span></span>]]</td>
1143 </tr>
1144 <tr>
1145 <td id="L104" class="blob-num js-line-number" data-line-number="104"></td>
1146 <td id="LC104" class="blob-code blob-code-inner js-file-line"> concatGroups <span class="pl-k">=</span> [<span class="pl-c1">1</span>, <span class="pl-c1">2</span>, <span class="pl-c1">1</span>, <span class="pl-c1">3</span>, <span class="pl-c1">1</span>, <span class="pl-c1">1</span>, <span class="pl-c1">1</span>, <span class="pl-c1">2</span>, <span class="pl-c1">3</span>, <span class="pl-c1">2</span>, <span class="pl-c1">2</span>, <span class="pl-c1">1</span>, <span class="pl-c1">4</span>, <span class="pl-c1">1</span>, <span class="pl-c1">3</span>]</td>
1147 </tr>
1148 <tr>
1149 <td id="L105" class="blob-num js-line-number" data-line-number="105"></td>
1150 <td id="LC105" class="blob-code blob-code-inner js-file-line"> countList <span class="pl-k">=</span> []</td>
1151 </tr>
1152 <tr>
1153 <td id="L106" class="blob-num js-line-number" data-line-number="106"></td>
1154 <td id="LC106" class="blob-code blob-code-inner js-file-line"> countIndex <span class="pl-k">=</span> <span class="pl-c1">0</span></td>
1155 </tr>
1156 <tr>
1157 <td id="L107" class="blob-num js-line-number" data-line-number="107"></td>
1158 <td id="LC107" class="blob-code blob-code-inner js-file-line"> totalCount <span class="pl-k">=</span> <span class="pl-c1">0</span></td>
1159 </tr>
1160 <tr>
1161 <td id="L108" class="blob-num js-line-number" data-line-number="108"></td>
1162 <td id="LC108" class="blob-code blob-code-inner js-file-line">
1163 </td>
1164 </tr>
1165 <tr>
1166 <td id="L109" class="blob-num js-line-number" data-line-number="109"></td>
1167 <td id="LC109" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">for</span> c <span class="pl-k">in</span> concatGroups:</td>
1168 </tr>
1169 <tr>
1170 <td id="L110" class="blob-num js-line-number" data-line-number="110"></td>
1171 <td id="LC110" class="blob-code blob-code-inner js-file-line"> a <span class="pl-k">=</span> []</td>
1172 </tr>
1173 <tr>
1174 <td id="L111" class="blob-num js-line-number" data-line-number="111"></td>
1175 <td id="LC111" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">for</span> n <span class="pl-k">in</span> <span class="pl-c1">range</span>(<span class="pl-c1">0</span>, c):</td>
1176 </tr>
1177 <tr>
1178 <td id="L112" class="blob-num js-line-number" data-line-number="112"></td>
1179 <td id="LC112" class="blob-code blob-code-inner js-file-line"> a <span class="pl-k">=</span> a <span class="pl-k">+</span> compoundList.pop(<span class="pl-c1">0</span>)</td>
1180 </tr>
1181 <tr>
1182 <td id="L113" class="blob-num js-line-number" data-line-number="113"></td>
1183 <td id="LC113" class="blob-code blob-code-inner js-file-line"> t <span class="pl-k">=</span> <span class="pl-c1">set</span>(a)</td>
1184 </tr>
1185 <tr>
1186 <td id="L114" class="blob-num js-line-number" data-line-number="114"></td>
1187 <td id="LC114" class="blob-code blob-code-inner js-file-line"> countList.append(<span class="pl-c1">len</span>(t))</td>
1188 </tr>
1189 <tr>
1190 <td id="L115" class="blob-num js-line-number" data-line-number="115"></td>
1191 <td id="LC115" class="blob-code blob-code-inner js-file-line"> totalCount <span class="pl-k">+=</span> <span class="pl-c1">len</span>(t)</td>
1192 </tr>
1193 <tr>
1194 <td id="L116" class="blob-num js-line-number" data-line-number="116"></td>
1195 <td id="LC116" class="blob-code blob-code-inner js-file-line"> countList.append(totalCount)</td>
1196 </tr>
1197 <tr>
1198 <td id="L117" class="blob-num js-line-number" data-line-number="117"></td>
1199 <td id="LC117" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">#</span>print(countList)</span></td>
1200 </tr>
1201 <tr>
1202 <td id="L118" class="blob-num js-line-number" data-line-number="118"></td>
1203 <td id="LC118" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">#</span>print(&quot;--------&quot;)</span></td>
1204 </tr>
1205 <tr>
1206 <td id="L119" class="blob-num js-line-number" data-line-number="119"></td>
1207 <td id="LC119" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> countList</td>
1208 </tr>
1209 <tr>
1210 <td id="L120" class="blob-num js-line-number" data-line-number="120"></td>
1211 <td id="LC120" class="blob-code blob-code-inner js-file-line">
1212 </td>
1213 </tr>
1214 <tr>
1215 <td id="L121" class="blob-num js-line-number" data-line-number="121"></td>
1216 <td id="LC121" class="blob-code blob-code-inner js-file-line">
1217 </td>
1218 </tr>
1219 <tr>
1220 <td id="L122" class="blob-num js-line-number" data-line-number="122"></td>
1221 <td id="LC122" class="blob-code blob-code-inner js-file-line">
1222 </td>
1223 </tr>
1224 <tr>
1225 <td id="L123" class="blob-num js-line-number" data-line-number="123"></td>
1226 <td id="LC123" class="blob-code blob-code-inner js-file-line"><span class="pl-k">def</span> <span class="pl-en">relativeFrequencyTable</span>(<span class="pl-smi">countList</span>, <span class="pl-smi">name</span>, <span class="pl-smi">htmlresource</span>):</td>
1227 </tr>
1228 <tr>
1229 <td id="L124" class="blob-num js-line-number" data-line-number="124"></td>
1230 <td id="LC124" class="blob-code blob-code-inner js-file-line"> relFreqList <span class="pl-k">=</span> []</td>
1231 </tr>
1232 <tr>
1233 <td id="L125" class="blob-num js-line-number" data-line-number="125"></td>
1234 <td id="LC125" class="blob-code blob-code-inner js-file-line"> c <span class="pl-k">=</span> <span class="pl-c1">float</span>(countList[<span class="pl-c1">15</span>])</td>
1235 </tr>
1236 <tr>
1237 <td id="L126" class="blob-num js-line-number" data-line-number="126"></td>
1238 <td id="LC126" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> c <span class="pl-k">==</span> <span class="pl-c1">0</span>:</td>
1239 </tr>
1240 <tr>
1241 <td id="L127" class="blob-num js-line-number" data-line-number="127"></td>
1242 <td id="LC127" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> [<span class="pl-c1">0</span>,<span class="pl-c1">0</span>,<span class="pl-c1">0</span>,<span class="pl-c1">0</span>,<span class="pl-c1">0</span>, <span class="pl-c1">0</span>,<span class="pl-c1">0</span>,<span class="pl-c1">0</span>,<span class="pl-c1">0</span>,<span class="pl-c1">0</span>, <span class="pl-c1">0</span>,<span class="pl-c1">0</span>,<span class="pl-c1">0</span>,<span class="pl-c1">0</span>,<span class="pl-c1">0</span>]</td>
1243 </tr>
1244 <tr>
1245 <td id="L128" class="blob-num js-line-number" data-line-number="128"></td>
1246 <td id="LC128" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">for</span> i <span class="pl-k">in</span> <span class="pl-c1">range</span>(<span class="pl-c1">0</span>, <span class="pl-c1">15</span>):</td>
1247 </tr>
1248 <tr>
1249 <td id="L129" class="blob-num js-line-number" data-line-number="129"></td>
1250 <td id="LC129" class="blob-code blob-code-inner js-file-line"> relFreqList.append(countList[i] <span class="pl-k">/</span> c)</td>
1251 </tr>
1252 <tr>
1253 <td id="L130" class="blob-num js-line-number" data-line-number="130"></td>
1254 <td id="LC130" class="blob-code blob-code-inner js-file-line">
1255 </td>
1256 </tr>
1257 <tr>
1258 <td id="L131" class="blob-num js-line-number" data-line-number="131"></td>
1259 <td id="LC131" class="blob-code blob-code-inner js-file-line"> data <span class="pl-k">=</span> {<span class="pl-s"><span class="pl-pds">&#39;</span>Phylotype<span class="pl-pds">&#39;</span></span>: pList, <span class="pl-s"><span class="pl-pds">&#39;</span>Relative Frequency<span class="pl-pds">&#39;</span></span>: relFreqList}</td>
1260 </tr>
1261 <tr>
1262 <td id="L132" class="blob-num js-line-number" data-line-number="132"></td>
1263 <td id="LC132" class="blob-code blob-code-inner js-file-line"> relFreq_df <span class="pl-k">=</span> pd.DataFrame(data)</td>
1264 </tr>
1265 <tr>
1266 <td id="L133" class="blob-num js-line-number" data-line-number="133"></td>
1267 <td id="LC133" class="blob-code blob-code-inner js-file-line"> j_fname <span class="pl-k">=</span> htmlresource<span class="pl-k">+</span><span class="pl-s"><span class="pl-pds">&quot;</span>/<span class="pl-pds">&quot;</span></span> <span class="pl-k">+</span> name <span class="pl-k">+</span> <span class="pl-s"><span class="pl-pds">&quot;</span>_relative_frequency.csv<span class="pl-pds">&quot;</span></span></td>
1268 </tr>
1269 <tr>
1270 <td id="L134" class="blob-num js-line-number" data-line-number="134"></td>
1271 <td id="LC134" class="blob-code blob-code-inner js-file-line"> relFreq_df.to_csv(j_fname)</td>
1272 </tr>
1273 <tr>
1274 <td id="L135" class="blob-num js-line-number" data-line-number="135"></td>
1275 <td id="LC135" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> relFreqList <span class="pl-c"><span class="pl-c">#</span> 0-14 = p1-p15 counts [15] = total counts</span></td>
1276 </tr>
1277 <tr>
1278 <td id="L136" class="blob-num js-line-number" data-line-number="136"></td>
1279 <td id="LC136" class="blob-code blob-code-inner js-file-line">
1280 </td>
1281 </tr>
1282 <tr>
1283 <td id="L137" class="blob-num js-line-number" data-line-number="137"></td>
1284 <td id="LC137" class="blob-code blob-code-inner js-file-line">
1285 </td>
1286 </tr>
1287 <tr>
1288 <td id="L138" class="blob-num js-line-number" data-line-number="138"></td>
1289 <td id="LC138" class="blob-code blob-code-inner js-file-line">
1290 </td>
1291 </tr>
1292 <tr>
1293 <td id="L139" class="blob-num js-line-number" data-line-number="139"></td>
1294 <td id="LC139" class="blob-code blob-code-inner js-file-line">
1295 </td>
1296 </tr>
1297 <tr>
1298 <td id="L140" class="blob-num js-line-number" data-line-number="140"></td>
1299 <td id="LC140" class="blob-code blob-code-inner js-file-line"><span class="pl-k">def</span> <span class="pl-en">getDeviationFromMean</span>(<span class="pl-smi">frequencyList</span>, <span class="pl-smi">name</span>, <span class="pl-smi">htmlresource</span>):</td>
1300 </tr>
1301 <tr>
1302 <td id="L141" class="blob-num js-line-number" data-line-number="141"></td>
1303 <td id="LC141" class="blob-code blob-code-inner js-file-line"> devList <span class="pl-k">=</span> []</td>
1304 </tr>
1305 <tr>
1306 <td id="L142" class="blob-num js-line-number" data-line-number="142"></td>
1307 <td id="LC142" class="blob-code blob-code-inner js-file-line"> dir_path <span class="pl-k">=</span> os.path.dirname(os.path.realpath(<span class="pl-c1">__file__</span>))</td>
1308 </tr>
1309 <tr>
1310 <td id="L143" class="blob-num js-line-number" data-line-number="143"></td>
1311 <td id="LC143" class="blob-code blob-code-inner js-file-line"> j_fname <span class="pl-k">=</span> dir_path <span class="pl-k">+</span> <span class="pl-s"><span class="pl-pds">&quot;</span>/data/congodata.csv<span class="pl-pds">&quot;</span></span></td>
1312 </tr>
1313 <tr>
1314 <td id="L144" class="blob-num js-line-number" data-line-number="144"></td>
1315 <td id="LC144" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">#</span>j_fname = r&quot;data/congodata.csv&quot;</span></td>
1316 </tr>
1317 <tr>
1318 <td id="L145" class="blob-num js-line-number" data-line-number="145"></td>
1319 <td id="LC145" class="blob-code blob-code-inner js-file-line"> congo_df <span class="pl-k">=</span> pd.read_csv(j_fname) <span class="pl-c"><span class="pl-c">#</span> we get the means from congo_df</span></td>
1320 </tr>
1321 <tr>
1322 <td id="L146" class="blob-num js-line-number" data-line-number="146"></td>
1323 <td id="LC146" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">for</span> p <span class="pl-k">in</span> <span class="pl-c1">range</span>(<span class="pl-c1">0</span>, <span class="pl-c1">15</span>):</td>
1324 </tr>
1325 <tr>
1326 <td id="L147" class="blob-num js-line-number" data-line-number="147"></td>
1327 <td id="LC147" class="blob-code blob-code-inner js-file-line"> m <span class="pl-k">=</span> congo_df[pList[p]].mean()</td>
1328 </tr>
1329 <tr>
1330 <td id="L148" class="blob-num js-line-number" data-line-number="148"></td>
1331 <td id="LC148" class="blob-code blob-code-inner js-file-line"> dev <span class="pl-k">=</span> <span class="pl-k">-</span>(m <span class="pl-k">-</span> frequencyList[p])</td>
1332 </tr>
1333 <tr>
1334 <td id="L149" class="blob-num js-line-number" data-line-number="149"></td>
1335 <td id="LC149" class="blob-code blob-code-inner js-file-line"> devList.append(dev)</td>
1336 </tr>
1337 <tr>
1338 <td id="L150" class="blob-num js-line-number" data-line-number="150"></td>
1339 <td id="LC150" class="blob-code blob-code-inner js-file-line">
1340 </td>
1341 </tr>
1342 <tr>
1343 <td id="L151" class="blob-num js-line-number" data-line-number="151"></td>
1344 <td id="LC151" class="blob-code blob-code-inner js-file-line"> data <span class="pl-k">=</span> {<span class="pl-s"><span class="pl-pds">&#39;</span>Phylotype<span class="pl-pds">&#39;</span></span>: pList, <span class="pl-s"><span class="pl-pds">&#39;</span>Deviation from Mean<span class="pl-pds">&#39;</span></span>: devList}</td>
1345 </tr>
1346 <tr>
1347 <td id="L152" class="blob-num js-line-number" data-line-number="152"></td>
1348 <td id="LC152" class="blob-code blob-code-inner js-file-line"> dev_df <span class="pl-k">=</span> pd.DataFrame(data)</td>
1349 </tr>
1350 <tr>
1351 <td id="L153" class="blob-num js-line-number" data-line-number="153"></td>
1352 <td id="LC153" class="blob-code blob-code-inner js-file-line"> j_fname <span class="pl-k">=</span> htmlresource<span class="pl-k">+</span><span class="pl-s"><span class="pl-pds">&quot;</span>/<span class="pl-pds">&quot;</span></span> <span class="pl-k">+</span> name <span class="pl-k">+</span> <span class="pl-s"><span class="pl-pds">&quot;</span>_deviation_from_mean.csv<span class="pl-pds">&quot;</span></span></td>
1353 </tr>
1354 <tr>
1355 <td id="L154" class="blob-num js-line-number" data-line-number="154"></td>
1356 <td id="LC154" class="blob-code blob-code-inner js-file-line"> dev_df.to_csv(j_fname)</td>
1357 </tr>
1358 <tr>
1359 <td id="L155" class="blob-num js-line-number" data-line-number="155"></td>
1360 <td id="LC155" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> devList</td>
1361 </tr>
1362 <tr>
1363 <td id="L156" class="blob-num js-line-number" data-line-number="156"></td>
1364 <td id="LC156" class="blob-code blob-code-inner js-file-line">
1365 </td>
1366 </tr>
1367 <tr>
1368 <td id="L157" class="blob-num js-line-number" data-line-number="157"></td>
1369 <td id="LC157" class="blob-code blob-code-inner js-file-line">
1370 </td>
1371 </tr>
1372 <tr>
1373 <td id="L158" class="blob-num js-line-number" data-line-number="158"></td>
1374 <td id="LC158" class="blob-code blob-code-inner js-file-line"><span class="pl-k">def</span> <span class="pl-en">relativeFrequencyHeatMap</span>(<span class="pl-smi">name</span>, <span class="pl-smi">freqList</span>, <span class="pl-smi">pdf</span>, <span class="pl-smi">htmlresource</span>):</td>
1375 </tr>
1376 <tr>
1377 <td id="L159" class="blob-num js-line-number" data-line-number="159"></td>
1378 <td id="LC159" class="blob-code blob-code-inner js-file-line"> localFreqList <span class="pl-k">=</span> freqList[:]</td>
1379 </tr>
1380 <tr>
1381 <td id="L160" class="blob-num js-line-number" data-line-number="160"></td>
1382 <td id="LC160" class="blob-code blob-code-inner js-file-line"> localFreqList.insert(<span class="pl-c1">0</span>, name)</td>
1383 </tr>
1384 <tr>
1385 <td id="L161" class="blob-num js-line-number" data-line-number="161"></td>
1386 <td id="LC161" class="blob-code blob-code-inner js-file-line"> dir_path <span class="pl-k">=</span> os.path.dirname(os.path.realpath(<span class="pl-c1">__file__</span>))</td>
1387 </tr>
1388 <tr>
1389 <td id="L162" class="blob-num js-line-number" data-line-number="162"></td>
1390 <td id="LC162" class="blob-code blob-code-inner js-file-line"> j_fname <span class="pl-k">=</span> dir_path<span class="pl-k">+</span><span class="pl-s"><span class="pl-pds">&quot;</span>/data/congodata.csv<span class="pl-pds">&quot;</span></span></td>
1391 </tr>
1392 <tr>
1393 <td id="L163" class="blob-num js-line-number" data-line-number="163"></td>
1394 <td id="LC163" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">#</span>print(dir_path)</span></td>
1395 </tr>
1396 <tr>
1397 <td id="L164" class="blob-num js-line-number" data-line-number="164"></td>
1398 <td id="LC164" class="blob-code blob-code-inner js-file-line"> congo_df <span class="pl-k">=</span> pd.read_csv(j_fname)</td>
1399 </tr>
1400 <tr>
1401 <td id="L165" class="blob-num js-line-number" data-line-number="165"></td>
1402 <td id="LC165" class="blob-code blob-code-inner js-file-line"> congo_df.drop(<span class="pl-s"><span class="pl-pds">&#39;</span>Colour<span class="pl-pds">&#39;</span></span>, <span class="pl-v">axis</span><span class="pl-k">=</span><span class="pl-c1">1</span>, <span class="pl-v">inplace</span><span class="pl-k">=</span><span class="pl-c1">True</span>)</td>
1403 </tr>
1404 <tr>
1405 <td id="L166" class="blob-num js-line-number" data-line-number="166"></td>
1406 <td id="LC166" class="blob-code blob-code-inner js-file-line"> congo_df.loc[congo_df.index.max() <span class="pl-k">+</span> <span class="pl-c1">1</span>] <span class="pl-k">=</span> localFreqList</td>
1407 </tr>
1408 <tr>
1409 <td id="L167" class="blob-num js-line-number" data-line-number="167"></td>
1410 <td id="LC167" class="blob-code blob-code-inner js-file-line"> ysize <span class="pl-k">=</span> <span class="pl-c1">len</span>(congo_df) <span class="pl-k">*</span> <span class="pl-c1">20</span> <span class="pl-k">/</span> <span class="pl-c1">97.0</span> <span class="pl-c"><span class="pl-c">#</span> make vertical size equivlanet 20&#39; is ok for 97.</span></td>
1411 </tr>
1412 <tr>
1413 <td id="L168" class="blob-num js-line-number" data-line-number="168"></td>
1414 <td id="LC168" class="blob-code blob-code-inner js-file-line">
1415 </td>
1416 </tr>
1417 <tr>
1418 <td id="L169" class="blob-num js-line-number" data-line-number="169"></td>
1419 <td id="LC169" class="blob-code blob-code-inner js-file-line"> congo_df.set_index(<span class="pl-s"><span class="pl-pds">&#39;</span>Strain<span class="pl-pds">&#39;</span></span>, <span class="pl-v">inplace</span><span class="pl-k">=</span><span class="pl-c1">True</span>)</td>
1420 </tr>
1421 <tr>
1422 <td id="L170" class="blob-num js-line-number" data-line-number="170"></td>
1423 <td id="LC170" class="blob-code blob-code-inner js-file-line">
1424 </td>
1425 </tr>
1426 <tr>
1427 <td id="L171" class="blob-num js-line-number" data-line-number="171"></td>
1428 <td id="LC171" class="blob-code blob-code-inner js-file-line"> cg <span class="pl-k">=</span> sns.clustermap(congo_df, <span class="pl-v">method</span><span class="pl-k">=</span><span class="pl-s"><span class="pl-pds">&#39;</span>ward<span class="pl-pds">&#39;</span></span>, <span class="pl-v">cmap</span> <span class="pl-k">=</span> <span class="pl-s"><span class="pl-pds">&quot;</span>RdBu_r<span class="pl-pds">&quot;</span></span>, <span class="pl-v">col_cluster</span><span class="pl-k">=</span><span class="pl-c1">False</span>, <span class="pl-v">yticklabels</span> <span class="pl-k">=</span> congo_df.index.values,<span class="pl-v">figsize</span> <span class="pl-k">=</span> (<span class="pl-c1">10</span>,ysize))</td>
1429 </tr>
1430 <tr>
1431 <td id="L172" class="blob-num js-line-number" data-line-number="172"></td>
1432 <td id="LC172" class="blob-code blob-code-inner js-file-line"> plt.setp(cg.ax_heatmap.yaxis.get_ticklabels(), <span class="pl-v">rotation</span><span class="pl-k">=</span><span class="pl-c1">0</span>, <span class="pl-v">fontsize</span><span class="pl-k">=</span><span class="pl-c1">8</span>) <span class="pl-c"><span class="pl-c">#</span> get y labels printed horizontally</span></td>
1433 </tr>
1434 <tr>
1435 <td id="L173" class="blob-num js-line-number" data-line-number="173"></td>
1436 <td id="LC173" class="blob-code blob-code-inner js-file-line"> ax<span class="pl-k">=</span>cg.ax_heatmap</td>
1437 </tr>
1438 <tr>
1439 <td id="L174" class="blob-num js-line-number" data-line-number="174"></td>
1440 <td id="LC174" class="blob-code blob-code-inner js-file-line"> title <span class="pl-k">=</span> <span class="pl-s"><span class="pl-pds">&quot;</span>Variant Antigen Profiles of $\itTrypanosoma$ $\itcongolense$ estimated as the phylotype proportion across the<span class="pl-cce">\n</span>sample cohort. <span class="pl-pds">&quot;</span></span></td>
1441 </tr>
1442 <tr>
1443 <td id="L175" class="blob-num js-line-number" data-line-number="175"></td>
1444 <td id="LC175" class="blob-code blob-code-inner js-file-line"> title <span class="pl-k">+=</span> <span class="pl-s"><span class="pl-pds">&quot;</span>Dendrogram reflects the relationships amongst the VSG repertoires of each strain. <span class="pl-pds">&quot;</span></span></td>
1445 </tr>
1446 <tr>
1447 <td id="L176" class="blob-num js-line-number" data-line-number="176"></td>
1448 <td id="LC176" class="blob-code blob-code-inner js-file-line"> title <span class="pl-k">+=</span> <span class="pl-s"><span class="pl-pds">&quot;</span>Strains<span class="pl-cce">\n</span>were isolated from multiple African countries as described in Silva Pereira et al. (2018).<span class="pl-pds">&quot;</span></span></td>
1449 </tr>
1450 <tr>
1451 <td id="L177" class="blob-num js-line-number" data-line-number="177"></td>
1452 <td id="LC177" class="blob-code blob-code-inner js-file-line"> title <span class="pl-k">+=</span> <span class="pl-s"><span class="pl-pds">&quot;</span><span class="pl-cce">\n</span>Data was produced with the &#39;Variant Antigen Profiler&#39; (Silva Pereira et al., 2019).<span class="pl-pds">&quot;</span></span></td>
1453 </tr>
1454 <tr>
1455 <td id="L178" class="blob-num js-line-number" data-line-number="178"></td>
1456 <td id="LC178" class="blob-code blob-code-inner js-file-line">
1457 </td>
1458 </tr>
1459 <tr>
1460 <td id="L179" class="blob-num js-line-number" data-line-number="179"></td>
1461 <td id="LC179" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">#</span>title = &quot;Variant Antigen Profiles of Trypanosoma congolense estimated as the phylotype proportion across the sample cohort. Dendrogram reflects the relationships amongst the VSG repertoires of each strain. Strains were isolated from multiple African countries as described in Silva Pereira et al. (2018). Data was produced with the &#39;Variant Antigen Profiler&#39; (Silva Pereira and Jackson, 2018).&quot;</span></td>
1462 </tr>
1463 <tr>
1464 <td id="L180" class="blob-num js-line-number" data-line-number="180"></td>
1465 <td id="LC180" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">#</span>ax.set_title(title, ha = &quot;center&quot;, va = &quot;bottom&quot;,wrap = &quot;True&quot;)</span></td>
1466 </tr>
1467 <tr>
1468 <td id="L181" class="blob-num js-line-number" data-line-number="181"></td>
1469 <td id="LC181" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">#</span>title = &quot;Where is this!&quot;</span></td>
1470 </tr>
1471 <tr>
1472 <td id="L182" class="blob-num js-line-number" data-line-number="182"></td>
1473 <td id="LC182" class="blob-code blob-code-inner js-file-line"> ax.text(<span class="pl-k">-</span><span class="pl-c1">0.15</span>,<span class="pl-k">-</span><span class="pl-c1">0.05</span>, title,<span class="pl-v">va</span> <span class="pl-k">=</span> <span class="pl-s"><span class="pl-pds">&quot;</span>top<span class="pl-pds">&quot;</span></span>,<span class="pl-v">wrap</span> <span class="pl-k">=</span> <span class="pl-s"><span class="pl-pds">&quot;</span>True<span class="pl-pds">&quot;</span></span>, <span class="pl-v">transform</span> <span class="pl-k">=</span> ax.transAxes )</td>
1474 </tr>
1475 <tr>
1476 <td id="L183" class="blob-num js-line-number" data-line-number="183"></td>
1477 <td id="LC183" class="blob-code blob-code-inner js-file-line">
1478 </td>
1479 </tr>
1480 <tr>
1481 <td id="L184" class="blob-num js-line-number" data-line-number="184"></td>
1482 <td id="LC184" class="blob-code blob-code-inner js-file-line">
1483 </td>
1484 </tr>
1485 <tr>
1486 <td id="L185" class="blob-num js-line-number" data-line-number="185"></td>
1487 <td id="LC185" class="blob-code blob-code-inner js-file-line">
1488 </td>
1489 </tr>
1490 <tr>
1491 <td id="L186" class="blob-num js-line-number" data-line-number="186"></td>
1492 <td id="LC186" class="blob-code blob-code-inner js-file-line">
1493 </td>
1494 </tr>
1495 <tr>
1496 <td id="L187" class="blob-num js-line-number" data-line-number="187"></td>
1497 <td id="LC187" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">#</span> cg.dendrogram_col.linkage # linkage matrix for columns</span></td>
1498 </tr>
1499 <tr>
1500 <td id="L188" class="blob-num js-line-number" data-line-number="188"></td>
1501 <td id="LC188" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">#</span> cg.dendrogram_row.linkage # linkage matrix for rows</span></td>
1502 </tr>
1503 <tr>
1504 <td id="L189" class="blob-num js-line-number" data-line-number="189"></td>
1505 <td id="LC189" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">#</span>plt.savefig(r&quot;results/&quot; + name + &quot;_heatmap.png&quot;)</span></td>
1506 </tr>
1507 <tr>
1508 <td id="L190" class="blob-num js-line-number" data-line-number="190"></td>
1509 <td id="LC190" class="blob-code blob-code-inner js-file-line"> plt.savefig(htmlresource<span class="pl-k">+</span><span class="pl-s"><span class="pl-pds">&quot;</span>/heatmap.png<span class="pl-pds">&quot;</span></span>,<span class="pl-v">bbox_inches</span><span class="pl-k">=</span><span class="pl-s"><span class="pl-pds">&#39;</span>tight<span class="pl-pds">&#39;</span></span>)</td>
1510 </tr>
1511 <tr>
1512 <td id="L191" class="blob-num js-line-number" data-line-number="191"></td>
1513 <td id="LC191" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> pdf <span class="pl-k">==</span> <span class="pl-s"><span class="pl-pds">&#39;</span>PDF_Yes<span class="pl-pds">&#39;</span></span>:</td>
1514 </tr>
1515 <tr>
1516 <td id="L192" class="blob-num js-line-number" data-line-number="192"></td>
1517 <td id="LC192" class="blob-code blob-code-inner js-file-line"> plt.savefig(htmlresource<span class="pl-k">+</span><span class="pl-s"><span class="pl-pds">&quot;</span>/heatmap.pdf<span class="pl-pds">&quot;</span></span>, <span class="pl-v">bbox_inches</span><span class="pl-k">=</span><span class="pl-s"><span class="pl-pds">&#39;</span>tight<span class="pl-pds">&#39;</span></span>)</td>
1518 </tr>
1519 <tr>
1520 <td id="L193" class="blob-num js-line-number" data-line-number="193"></td>
1521 <td id="LC193" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">#</span>shutil.copyfile(&quot;heatmap.pdf&quot;,heatmapfn) #</span></td>
1522 </tr>
1523 <tr>
1524 <td id="L194" class="blob-num js-line-number" data-line-number="194"></td>
1525 <td id="LC194" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">#</span>plt.show()</span></td>
1526 </tr>
1527 <tr>
1528 <td id="L195" class="blob-num js-line-number" data-line-number="195"></td>
1529 <td id="LC195" class="blob-code blob-code-inner js-file-line">
1530 </td>
1531 </tr>
1532 <tr>
1533 <td id="L196" class="blob-num js-line-number" data-line-number="196"></td>
1534 <td id="LC196" class="blob-code blob-code-inner js-file-line"><span class="pl-k">def</span> <span class="pl-en">deviationFromMeanHeatMap</span>(<span class="pl-smi">name</span>,<span class="pl-smi">devList</span>, <span class="pl-smi">pdf</span>, <span class="pl-smi">htmlresource</span>):</td>
1535 </tr>
1536 <tr>
1537 <td id="L197" class="blob-num js-line-number" data-line-number="197"></td>
1538 <td id="LC197" class="blob-code blob-code-inner js-file-line"> localDevList <span class="pl-k">=</span> devList[:]</td>
1539 </tr>
1540 <tr>
1541 <td id="L198" class="blob-num js-line-number" data-line-number="198"></td>
1542 <td id="LC198" class="blob-code blob-code-inner js-file-line"> localDevList.insert(<span class="pl-c1">0</span>, name)</td>
1543 </tr>
1544 <tr>
1545 <td id="L199" class="blob-num js-line-number" data-line-number="199"></td>
1546 <td id="LC199" class="blob-code blob-code-inner js-file-line"> dir_path <span class="pl-k">=</span> os.path.dirname(os.path.realpath(<span class="pl-c1">__file__</span>))</td>
1547 </tr>
1548 <tr>
1549 <td id="L200" class="blob-num js-line-number" data-line-number="200"></td>
1550 <td id="LC200" class="blob-code blob-code-inner js-file-line"> j_fname <span class="pl-k">=</span> dir_path<span class="pl-k">+</span> <span class="pl-s"><span class="pl-pds">&quot;</span>/data/congodata_deviationfromthemean.csv<span class="pl-pds">&quot;</span></span></td>
1551 </tr>
1552 <tr>
1553 <td id="L201" class="blob-num js-line-number" data-line-number="201"></td>
1554 <td id="LC201" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">#</span>j_fname = r&quot;data/congodata_deviationfromthemean.csv&quot;</span></td>
1555 </tr>
1556 <tr>
1557 <td id="L202" class="blob-num js-line-number" data-line-number="202"></td>
1558 <td id="LC202" class="blob-code blob-code-inner js-file-line"> congo_df <span class="pl-k">=</span> pd.read_csv(j_fname)</td>
1559 </tr>
1560 <tr>
1561 <td id="L203" class="blob-num js-line-number" data-line-number="203"></td>
1562 <td id="LC203" class="blob-code blob-code-inner js-file-line"> congo_df.drop(<span class="pl-s"><span class="pl-pds">&#39;</span>Colour<span class="pl-pds">&#39;</span></span>, <span class="pl-v">axis</span><span class="pl-k">=</span><span class="pl-c1">1</span>, <span class="pl-v">inplace</span><span class="pl-k">=</span><span class="pl-c1">True</span>)</td>
1563 </tr>
1564 <tr>
1565 <td id="L204" class="blob-num js-line-number" data-line-number="204"></td>
1566 <td id="LC204" class="blob-code blob-code-inner js-file-line"> congo_df.loc[congo_df.index.max() <span class="pl-k">+</span> <span class="pl-c1">1</span>] <span class="pl-k">=</span> localDevList</td>
1567 </tr>
1568 <tr>
1569 <td id="L205" class="blob-num js-line-number" data-line-number="205"></td>
1570 <td id="LC205" class="blob-code blob-code-inner js-file-line"> ysize <span class="pl-k">=</span> <span class="pl-c1">len</span>(congo_df) <span class="pl-k">*</span> <span class="pl-c1">20</span> <span class="pl-k">/</span> <span class="pl-c1">97.0</span> <span class="pl-c"><span class="pl-c">#</span> make vertical size equivlanet 20&#39; is ok for 97.</span></td>
1571 </tr>
1572 <tr>
1573 <td id="L206" class="blob-num js-line-number" data-line-number="206"></td>
1574 <td id="LC206" class="blob-code blob-code-inner js-file-line"> congo_df.set_index(<span class="pl-s"><span class="pl-pds">&#39;</span>Strain<span class="pl-pds">&#39;</span></span>, <span class="pl-v">inplace</span><span class="pl-k">=</span><span class="pl-c1">True</span>)</td>
1575 </tr>
1576 <tr>
1577 <td id="L207" class="blob-num js-line-number" data-line-number="207"></td>
1578 <td id="LC207" class="blob-code blob-code-inner js-file-line"> cg <span class="pl-k">=</span> sns.clustermap(congo_df, <span class="pl-v">method</span><span class="pl-k">=</span><span class="pl-s"><span class="pl-pds">&#39;</span>ward<span class="pl-pds">&#39;</span></span>,<span class="pl-v">cmap</span> <span class="pl-k">=</span> <span class="pl-s"><span class="pl-pds">&quot;</span>RdBu_r<span class="pl-pds">&quot;</span></span>, <span class="pl-v">col_cluster</span><span class="pl-k">=</span><span class="pl-c1">False</span>, <span class="pl-v">yticklabels</span> <span class="pl-k">=</span> congo_df.index.values,<span class="pl-v">figsize</span> <span class="pl-k">=</span> (<span class="pl-c1">10</span>,ysize))</td>
1579 </tr>
1580 <tr>
1581 <td id="L208" class="blob-num js-line-number" data-line-number="208"></td>
1582 <td id="LC208" class="blob-code blob-code-inner js-file-line"> plt.setp(cg.ax_heatmap.yaxis.get_majorticklabels(), <span class="pl-v">rotation</span><span class="pl-k">=</span><span class="pl-c1">0</span>, <span class="pl-v">fontsize</span><span class="pl-k">=</span><span class="pl-c1">8</span>) <span class="pl-c"><span class="pl-c">#</span> get y labels printed horizontally</span></td>
1583 </tr>
1584 <tr>
1585 <td id="L209" class="blob-num js-line-number" data-line-number="209"></td>
1586 <td id="LC209" class="blob-code blob-code-inner js-file-line"> ax <span class="pl-k">=</span> cg.ax_heatmap</td>
1587 </tr>
1588 <tr>
1589 <td id="L210" class="blob-num js-line-number" data-line-number="210"></td>
1590 <td id="LC210" class="blob-code blob-code-inner js-file-line"> title <span class="pl-k">=</span> <span class="pl-s"><span class="pl-pds">&quot;</span>Variant Antigen Profiles of $\itTrypanosoma$ $\itcongolense$ expressed as the deviation from the mean phylotypes <span class="pl-pds">&quot;</span></span></td>
1591 </tr>
1592 <tr>
1593 <td id="L211" class="blob-num js-line-number" data-line-number="211"></td>
1594 <td id="LC211" class="blob-code blob-code-inner js-file-line"> title <span class="pl-k">+=</span><span class="pl-s"><span class="pl-pds">&quot;</span><span class="pl-cce">\n</span>proportions of the sample cohort. Dendrogram reflects the relationships amongst the VSG repertoires of <span class="pl-pds">&quot;</span></span></td>
1595 </tr>
1596 <tr>
1597 <td id="L212" class="blob-num js-line-number" data-line-number="212"></td>
1598 <td id="LC212" class="blob-code blob-code-inner js-file-line"> title <span class="pl-k">+=</span><span class="pl-s"><span class="pl-pds">&quot;</span>each <span class="pl-cce">\n</span>strain. Strains were isolated from multiple African countries as described in Silva Pereira et al. (2018).<span class="pl-pds">&quot;</span></span></td>
1599 </tr>
1600 <tr>
1601 <td id="L213" class="blob-num js-line-number" data-line-number="213"></td>
1602 <td id="LC213" class="blob-code blob-code-inner js-file-line"> title <span class="pl-k">+=</span><span class="pl-s"><span class="pl-pds">&quot;</span><span class="pl-cce">\n</span>Data was produced with the &#39;Variant Antigen Profiler&#39; (Silva Pereira et al., 2019).<span class="pl-pds">&quot;</span></span></td>
1603 </tr>
1604 <tr>
1605 <td id="L214" class="blob-num js-line-number" data-line-number="214"></td>
1606 <td id="LC214" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">#</span>ax.set_title(title,ha = &quot;center&quot;, va = &quot;bottom&quot;,wrap = &quot;True&quot;)</span></td>
1607 </tr>
1608 <tr>
1609 <td id="L215" class="blob-num js-line-number" data-line-number="215"></td>
1610 <td id="LC215" class="blob-code blob-code-inner js-file-line"> ax.text(<span class="pl-k">-</span><span class="pl-c1">0.2</span>, <span class="pl-k">-</span><span class="pl-c1">0.05</span>, title, <span class="pl-v">va</span><span class="pl-k">=</span><span class="pl-s"><span class="pl-pds">&quot;</span>top<span class="pl-pds">&quot;</span></span>, <span class="pl-v">transform</span><span class="pl-k">=</span>ax.transAxes, <span class="pl-v">wrap</span><span class="pl-k">=</span><span class="pl-s"><span class="pl-pds">&quot;</span>True<span class="pl-pds">&quot;</span></span>)</td>
1611 </tr>
1612 <tr>
1613 <td id="L216" class="blob-num js-line-number" data-line-number="216"></td>
1614 <td id="LC216" class="blob-code blob-code-inner js-file-line"> plt.savefig(htmlresource<span class="pl-k">+</span><span class="pl-s"><span class="pl-pds">&quot;</span>/dheatmap.png<span class="pl-pds">&quot;</span></span>,<span class="pl-v">bbox_inches</span><span class="pl-k">=</span><span class="pl-s"><span class="pl-pds">&#39;</span>tight<span class="pl-pds">&#39;</span></span>)</td>
1615 </tr>
1616 <tr>
1617 <td id="L217" class="blob-num js-line-number" data-line-number="217"></td>
1618 <td id="LC217" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> pdf <span class="pl-k">==</span> <span class="pl-s"><span class="pl-pds">&#39;</span>PDF_Yes<span class="pl-pds">&#39;</span></span>:</td>
1619 </tr>
1620 <tr>
1621 <td id="L218" class="blob-num js-line-number" data-line-number="218"></td>
1622 <td id="LC218" class="blob-code blob-code-inner js-file-line"> plt.savefig(htmlresource<span class="pl-k">+</span><span class="pl-s"><span class="pl-pds">&quot;</span>/dheatmap.pdf<span class="pl-pds">&quot;</span></span>, <span class="pl-v">bbox_inches</span><span class="pl-k">=</span><span class="pl-s"><span class="pl-pds">&#39;</span>tight<span class="pl-pds">&#39;</span></span>)</td>
1623 </tr>
1624 <tr>
1625 <td id="L219" class="blob-num js-line-number" data-line-number="219"></td>
1626 <td id="LC219" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">#</span>shutil.copyfile(&quot;dheatmap.pdf&quot;,dhmapfn)</span></td>
1627 </tr>
1628 <tr>
1629 <td id="L220" class="blob-num js-line-number" data-line-number="220"></td>
1630 <td id="LC220" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">#</span>plt.show()</span></td>
1631 </tr>
1632 <tr>
1633 <td id="L221" class="blob-num js-line-number" data-line-number="221"></td>
1634 <td id="LC221" class="blob-code blob-code-inner js-file-line">
1635 </td>
1636 </tr>
1637 <tr>
1638 <td id="L222" class="blob-num js-line-number" data-line-number="222"></td>
1639 <td id="LC222" class="blob-code blob-code-inner js-file-line">
1640 </td>
1641 </tr>
1642 <tr>
1643 <td id="L223" class="blob-num js-line-number" data-line-number="223"></td>
1644 <td id="LC223" class="blob-code blob-code-inner js-file-line"><span class="pl-k">def</span> <span class="pl-en">plotPCA</span>(<span class="pl-smi">name</span>, <span class="pl-smi">freqList</span>, <span class="pl-smi">pdf</span>, <span class="pl-smi">htmlresource</span>):</td>
1645 </tr>
1646 <tr>
1647 <td id="L224" class="blob-num js-line-number" data-line-number="224"></td>
1648 <td id="LC224" class="blob-code blob-code-inner js-file-line"> localFreqList <span class="pl-k">=</span> freqList[:]</td>
1649 </tr>
1650 <tr>
1651 <td id="L225" class="blob-num js-line-number" data-line-number="225"></td>
1652 <td id="LC225" class="blob-code blob-code-inner js-file-line"> localFreqList.insert(<span class="pl-c1">0</span>, name)</td>
1653 </tr>
1654 <tr>
1655 <td id="L226" class="blob-num js-line-number" data-line-number="226"></td>
1656 <td id="LC226" class="blob-code blob-code-inner js-file-line"> localFreqList.append(name)</td>
1657 </tr>
1658 <tr>
1659 <td id="L227" class="blob-num js-line-number" data-line-number="227"></td>
1660 <td id="LC227" class="blob-code blob-code-inner js-file-line"> dir_path <span class="pl-k">=</span> os.path.dirname(os.path.realpath(<span class="pl-c1">__file__</span>))</td>
1661 </tr>
1662 <tr>
1663 <td id="L228" class="blob-num js-line-number" data-line-number="228"></td>
1664 <td id="LC228" class="blob-code blob-code-inner js-file-line"> j_fname <span class="pl-k">=</span> dir_path <span class="pl-k">+</span> <span class="pl-s"><span class="pl-pds">&quot;</span>/data/congodata.csv<span class="pl-pds">&quot;</span></span></td>
1665 </tr>
1666 <tr>
1667 <td id="L229" class="blob-num js-line-number" data-line-number="229"></td>
1668 <td id="LC229" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">#</span>j_fname = r&quot;data/congodata.csv&quot;</span></td>
1669 </tr>
1670 <tr>
1671 <td id="L230" class="blob-num js-line-number" data-line-number="230"></td>
1672 <td id="LC230" class="blob-code blob-code-inner js-file-line"> congo_df <span class="pl-k">=</span> pd.read_csv(j_fname)</td>
1673 </tr>
1674 <tr>
1675 <td id="L231" class="blob-num js-line-number" data-line-number="231"></td>
1676 <td id="LC231" class="blob-code blob-code-inner js-file-line"> congo_df.loc[congo_df.index.max() <span class="pl-k">+</span> <span class="pl-c1">1</span>] <span class="pl-k">=</span> localFreqList</td>
1677 </tr>
1678 <tr>
1679 <td id="L232" class="blob-num js-line-number" data-line-number="232"></td>
1680 <td id="LC232" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">#</span> print(congo_df.tail(2))</span></td>
1681 </tr>
1682 <tr>
1683 <td id="L233" class="blob-num js-line-number" data-line-number="233"></td>
1684 <td id="LC233" class="blob-code blob-code-inner js-file-line"> myColours <span class="pl-k">=</span> congo_df[<span class="pl-s"><span class="pl-pds">&#39;</span>Colour<span class="pl-pds">&#39;</span></span>]</td>
1685 </tr>
1686 <tr>
1687 <td id="L234" class="blob-num js-line-number" data-line-number="234"></td>
1688 <td id="LC234" class="blob-code blob-code-inner js-file-line"> myCountries <span class="pl-k">=</span> congo_df.drop_duplicates(<span class="pl-s"><span class="pl-pds">&#39;</span>Colour<span class="pl-pds">&#39;</span></span>)[<span class="pl-s"><span class="pl-pds">&#39;</span>Colour<span class="pl-pds">&#39;</span></span>].tolist()</td>
1689 </tr>
1690 <tr>
1691 <td id="L235" class="blob-num js-line-number" data-line-number="235"></td>
1692 <td id="LC235" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">#</span> print(myCountries)</span></td>
1693 </tr>
1694 <tr>
1695 <td id="L236" class="blob-num js-line-number" data-line-number="236"></td>
1696 <td id="LC236" class="blob-code blob-code-inner js-file-line"> congo_df.drop(<span class="pl-s"><span class="pl-pds">&#39;</span>Colour<span class="pl-pds">&#39;</span></span>, <span class="pl-v">axis</span><span class="pl-k">=</span><span class="pl-c1">1</span>, <span class="pl-v">inplace</span><span class="pl-k">=</span><span class="pl-c1">True</span>)</td>
1697 </tr>
1698 <tr>
1699 <td id="L237" class="blob-num js-line-number" data-line-number="237"></td>
1700 <td id="LC237" class="blob-code blob-code-inner js-file-line"> congo_df.set_index(<span class="pl-s"><span class="pl-pds">&#39;</span>Strain<span class="pl-pds">&#39;</span></span>, <span class="pl-v">inplace</span><span class="pl-k">=</span><span class="pl-c1">True</span>)</td>
1701 </tr>
1702 <tr>
1703 <td id="L238" class="blob-num js-line-number" data-line-number="238"></td>
1704 <td id="LC238" class="blob-code blob-code-inner js-file-line"> dataArray <span class="pl-k">=</span> congo_df.as_matrix()</td>
1705 </tr>
1706 <tr>
1707 <td id="L239" class="blob-num js-line-number" data-line-number="239"></td>
1708 <td id="LC239" class="blob-code blob-code-inner js-file-line"> pcaResult <span class="pl-k">=</span> PCA(dataArray)</td>
1709 </tr>
1710 <tr>
1711 <td id="L240" class="blob-num js-line-number" data-line-number="240"></td>
1712 <td id="LC240" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">#</span> pcaResult.center(0)</span></td>
1713 </tr>
1714 <tr>
1715 <td id="L241" class="blob-num js-line-number" data-line-number="241"></td>
1716 <td id="LC241" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">#</span> can&#39;t seem to find a simple way of prooducing a decent legend.</span></td>
1717 </tr>
1718 <tr>
1719 <td id="L242" class="blob-num js-line-number" data-line-number="242"></td>
1720 <td id="LC242" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">#</span> going to seperate items in to different countires.</span></td>
1721 </tr>
1722 <tr>
1723 <td id="L243" class="blob-num js-line-number" data-line-number="243"></td>
1724 <td id="LC243" class="blob-code blob-code-inner js-file-line"> compoundList <span class="pl-k">=</span> []</td>
1725 </tr>
1726 <tr>
1727 <td id="L244" class="blob-num js-line-number" data-line-number="244"></td>
1728 <td id="LC244" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">for</span> i <span class="pl-k">in</span> myCountries:</td>
1729 </tr>
1730 <tr>
1731 <td id="L245" class="blob-num js-line-number" data-line-number="245"></td>
1732 <td id="LC245" class="blob-code blob-code-inner js-file-line"> compoundList.append([])</td>
1733 </tr>
1734 <tr>
1735 <td id="L246" class="blob-num js-line-number" data-line-number="246"></td>
1736 <td id="LC246" class="blob-code blob-code-inner js-file-line">
1737 </td>
1738 </tr>
1739 <tr>
1740 <td id="L247" class="blob-num js-line-number" data-line-number="247"></td>
1741 <td id="LC247" class="blob-code blob-code-inner js-file-line"> i <span class="pl-k">=</span> <span class="pl-c1">0</span></td>
1742 </tr>
1743 <tr>
1744 <td id="L248" class="blob-num js-line-number" data-line-number="248"></td>
1745 <td id="LC248" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">for</span> item <span class="pl-k">in</span> pcaResult.Y:</td>
1746 </tr>
1747 <tr>
1748 <td id="L249" class="blob-num js-line-number" data-line-number="249"></td>
1749 <td id="LC249" class="blob-code blob-code-inner js-file-line"> col <span class="pl-k">=</span> myCountries.index(myColours[i])</td>
1750 </tr>
1751 <tr>
1752 <td id="L250" class="blob-num js-line-number" data-line-number="250"></td>
1753 <td id="LC250" class="blob-code blob-code-inner js-file-line"> compoundList[col].append(<span class="pl-k">-</span>item[<span class="pl-c1">0</span>])</td>
1754 </tr>
1755 <tr>
1756 <td id="L251" class="blob-num js-line-number" data-line-number="251"></td>
1757 <td id="LC251" class="blob-code blob-code-inner js-file-line"> compoundList[col].append(item[<span class="pl-c1">1</span>])</td>
1758 </tr>
1759 <tr>
1760 <td id="L252" class="blob-num js-line-number" data-line-number="252"></td>
1761 <td id="LC252" class="blob-code blob-code-inner js-file-line"> i <span class="pl-k">=</span> i <span class="pl-k">+</span> <span class="pl-c1">1</span></td>
1762 </tr>
1763 <tr>
1764 <td id="L253" class="blob-num js-line-number" data-line-number="253"></td>
1765 <td id="LC253" class="blob-code blob-code-inner js-file-line"> colormap <span class="pl-k">=</span> plt.cm.tab20 <span class="pl-c"><span class="pl-c">#</span> nipy_spectral, Set1,Paired</span></td>
1766 </tr>
1767 <tr>
1768 <td id="L254" class="blob-num js-line-number" data-line-number="254"></td>
1769 <td id="LC254" class="blob-code blob-code-inner js-file-line"> cols <span class="pl-k">=</span> [colormap(i) <span class="pl-k">for</span> i <span class="pl-k">in</span> np.linspace(<span class="pl-c1">0</span>, <span class="pl-c1">1</span>, <span class="pl-c1">20</span>)]</td>
1770 </tr>
1771 <tr>
1772 <td id="L255" class="blob-num js-line-number" data-line-number="255"></td>
1773 <td id="LC255" class="blob-code blob-code-inner js-file-line"> fig, ax <span class="pl-k">=</span> plt.subplots(<span class="pl-v">figsize</span><span class="pl-k">=</span>(<span class="pl-c1">9</span>, <span class="pl-c1">6</span>))</td>
1774 </tr>
1775 <tr>
1776 <td id="L256" class="blob-num js-line-number" data-line-number="256"></td>
1777 <td id="LC256" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">#</span>plt.figure(num=1,figsize=(12, 6))</span></td>
1778 </tr>
1779 <tr>
1780 <td id="L257" class="blob-num js-line-number" data-line-number="257"></td>
1781 <td id="LC257" class="blob-code blob-code-inner js-file-line"> i <span class="pl-k">=</span> <span class="pl-c1">0</span></td>
1782 </tr>
1783 <tr>
1784 <td id="L258" class="blob-num js-line-number" data-line-number="258"></td>
1785 <td id="LC258" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">for</span> d <span class="pl-k">in</span> myCountries:</td>
1786 </tr>
1787 <tr>
1788 <td id="L259" class="blob-num js-line-number" data-line-number="259"></td>
1789 <td id="LC259" class="blob-code blob-code-inner js-file-line"> a <span class="pl-k">=</span> compoundList[i]</td>
1790 </tr>
1791 <tr>
1792 <td id="L260" class="blob-num js-line-number" data-line-number="260"></td>
1793 <td id="LC260" class="blob-code blob-code-inner js-file-line"> b <span class="pl-k">=</span> a[::<span class="pl-c1">2</span>]</td>
1794 </tr>
1795 <tr>
1796 <td id="L261" class="blob-num js-line-number" data-line-number="261"></td>
1797 <td id="LC261" class="blob-code blob-code-inner js-file-line"> c <span class="pl-k">=</span> a[<span class="pl-c1">1</span>::<span class="pl-c1">2</span>]</td>
1798 </tr>
1799 <tr>
1800 <td id="L262" class="blob-num js-line-number" data-line-number="262"></td>
1801 <td id="LC262" class="blob-code blob-code-inner js-file-line"> ax.scatter(b, c, <span class="pl-v">color</span><span class="pl-k">=</span>cols[i], <span class="pl-v">label</span><span class="pl-k">=</span>myCountries[i])</td>
1802 </tr>
1803 <tr>
1804 <td id="L263" class="blob-num js-line-number" data-line-number="263"></td>
1805 <td id="LC263" class="blob-code blob-code-inner js-file-line"> i <span class="pl-k">=</span> i <span class="pl-k">+</span> <span class="pl-c1">1</span></td>
1806 </tr>
1807 <tr>
1808 <td id="L264" class="blob-num js-line-number" data-line-number="264"></td>
1809 <td id="LC264" class="blob-code blob-code-inner js-file-line"> leg <span class="pl-k">=</span> ax.legend( <span class="pl-v">bbox_to_anchor</span><span class="pl-k">=</span>(<span class="pl-c1">1.02</span>,<span class="pl-c1">1.02</span>), <span class="pl-v">loc</span> <span class="pl-k">=</span> <span class="pl-s"><span class="pl-pds">&quot;</span>upper left<span class="pl-pds">&quot;</span></span>) <span class="pl-c"><span class="pl-c">#</span>move legend out of plot</span></td>
1810 </tr>
1811 <tr>
1812 <td id="L265" class="blob-num js-line-number" data-line-number="265"></td>
1813 <td id="LC265" class="blob-code blob-code-inner js-file-line"> title <span class="pl-k">=</span> <span class="pl-s"><span class="pl-pds">&quot;</span>Principal Component Analysis of the Variant Antigen Profiles of $\itTrypanosoma$ $\itcongolense$. <span class="pl-pds">&quot;</span></span> \</td>
1814 </tr>
1815 <tr>
1816 <td id="L266" class="blob-num js-line-number" data-line-number="266"></td>
1817 <td id="LC266" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">&quot;</span>The plot reflects the<span class="pl-cce">\n</span>relationships amongst the VSG repertoires of each strain. Strains are color-coded <span class="pl-pds">&quot;</span></span> \</td>
1818 </tr>
1819 <tr>
1820 <td id="L267" class="blob-num js-line-number" data-line-number="267"></td>
1821 <td id="LC267" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">&quot;</span>by location of collection according<span class="pl-cce">\n</span>to key. Strains were isolated from multiple African countries as described in Silva Pereira et al. (2018).<span class="pl-pds">&quot;</span></span></td>
1822 </tr>
1823 <tr>
1824 <td id="L268" class="blob-num js-line-number" data-line-number="268"></td>
1825 <td id="LC268" class="blob-code blob-code-inner js-file-line"> title <span class="pl-k">+=</span><span class="pl-s"><span class="pl-pds">&quot;</span><span class="pl-cce">\n</span>Data was produced with the &#39;Variant Antigen Profiler&#39; (Silva Pereira et al., 2019).<span class="pl-pds">&quot;</span></span></td>
1826 </tr>
1827 <tr>
1828 <td id="L269" class="blob-num js-line-number" data-line-number="269"></td>
1829 <td id="LC269" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">#</span>plt.title(title, ha = &quot;center&quot;, va = &quot;bottom&quot;,wrap = &quot;True&quot;)</span></td>
1830 </tr>
1831 <tr>
1832 <td id="L270" class="blob-num js-line-number" data-line-number="270"></td>
1833 <td id="LC270" class="blob-code blob-code-inner js-file-line"> tx <span class="pl-k">=</span> ax.text(<span class="pl-k">-</span><span class="pl-c1">0.1</span>, <span class="pl-k">-</span><span class="pl-c1">0.07</span>, title, <span class="pl-v">va</span><span class="pl-k">=</span><span class="pl-s"><span class="pl-pds">&quot;</span>top<span class="pl-pds">&quot;</span></span>, <span class="pl-v">transform</span><span class="pl-k">=</span>ax.transAxes, <span class="pl-v">wrap</span><span class="pl-k">=</span><span class="pl-s"><span class="pl-pds">&quot;</span>True<span class="pl-pds">&quot;</span></span>)</td>
1834 </tr>
1835 <tr>
1836 <td id="L271" class="blob-num js-line-number" data-line-number="271"></td>
1837 <td id="LC271" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">#</span>fig.add_axes([0,0.05,1.05,1.05])</span></td>
1838 </tr>
1839 <tr>
1840 <td id="L272" class="blob-num js-line-number" data-line-number="272"></td>
1841 <td id="LC272" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">#</span>fig.tight_layout(rect=[0, 0.03, 1, 0.95])</span></td>
1842 </tr>
1843 <tr>
1844 <td id="L273" class="blob-num js-line-number" data-line-number="273"></td>
1845 <td id="LC273" class="blob-code blob-code-inner js-file-line"> fig.subplots_adjust(<span class="pl-v">bottom</span> <span class="pl-k">=</span> <span class="pl-c1">0.3</span>)</td>
1846 </tr>
1847 <tr>
1848 <td id="L274" class="blob-num js-line-number" data-line-number="274"></td>
1849 <td id="LC274" class="blob-code blob-code-inner js-file-line">
1850 </td>
1851 </tr>
1852 <tr>
1853 <td id="L275" class="blob-num js-line-number" data-line-number="275"></td>
1854 <td id="LC275" class="blob-code blob-code-inner js-file-line"> fig.savefig(htmlresource<span class="pl-k">+</span><span class="pl-s"><span class="pl-pds">&quot;</span>/vapPCA.png<span class="pl-pds">&quot;</span></span>, <span class="pl-v">bbox_extra_artists</span><span class="pl-k">=</span>(leg,tx), <span class="pl-v">bbox_inches</span><span class="pl-k">=</span><span class="pl-s"><span class="pl-pds">&#39;</span>tight<span class="pl-pds">&#39;</span></span>)</td>
1855 </tr>
1856 <tr>
1857 <td id="L276" class="blob-num js-line-number" data-line-number="276"></td>
1858 <td id="LC276" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">#</span>fig.savefig(htmlresource+&quot;/vapPCA.png&quot;, bbox_extra_artists=(leg,))</span></td>
1859 </tr>
1860 <tr>
1861 <td id="L277" class="blob-num js-line-number" data-line-number="277"></td>
1862 <td id="LC277" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> pdf <span class="pl-k">==</span> <span class="pl-s"><span class="pl-pds">&#39;</span>PDF_Yes<span class="pl-pds">&#39;</span></span>:</td>
1863 </tr>
1864 <tr>
1865 <td id="L278" class="blob-num js-line-number" data-line-number="278"></td>
1866 <td id="LC278" class="blob-code blob-code-inner js-file-line"> fig.savefig(htmlresource<span class="pl-k">+</span><span class="pl-s"><span class="pl-pds">&quot;</span>/vapPCA.pdf<span class="pl-pds">&quot;</span></span>,<span class="pl-v">bbox_extra_artists</span><span class="pl-k">=</span>(leg,tx), <span class="pl-v">bbox_inches</span><span class="pl-k">=</span><span class="pl-s"><span class="pl-pds">&#39;</span>tight<span class="pl-pds">&#39;</span></span>)</td>
1867 </tr>
1868 <tr>
1869 <td id="L279" class="blob-num js-line-number" data-line-number="279"></td>
1870 <td id="LC279" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">#</span>shutil.copyfile(&quot;vapPCA.pdf&quot;,PCAfn) # my $namechange = &quot;mv &quot;.$input.&quot;_k65/contigs.fa &quot;.$input.&quot;.fa&quot;;</span></td>
1871 </tr>
1872 <tr>
1873 <td id="L280" class="blob-num js-line-number" data-line-number="280"></td>
1874 <td id="LC280" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">#</span>plt.show()</span></td>
1875 </tr>
1876 <tr>
1877 <td id="L281" class="blob-num js-line-number" data-line-number="281"></td>
1878 <td id="LC281" class="blob-code blob-code-inner js-file-line">
1879 </td>
1880 </tr>
1881 <tr>
1882 <td id="L282" class="blob-num js-line-number" data-line-number="282"></td>
1883 <td id="LC282" class="blob-code blob-code-inner js-file-line"><span class="pl-k">def</span> <span class="pl-en">createHTML</span>(<span class="pl-smi">name</span>,<span class="pl-smi">htmlfn</span>,<span class="pl-smi">freqList</span>,<span class="pl-smi">devList</span>):</td>
1884 </tr>
1885 <tr>
1886 <td id="L283" class="blob-num js-line-number" data-line-number="283"></td>
1887 <td id="LC283" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">#</span>assumes imgs are heatmap.png, dheatmap.png, vapPCA.png and already in htmlresource</span></td>
1888 </tr>
1889 <tr>
1890 <td id="L284" class="blob-num js-line-number" data-line-number="284"></td>
1891 <td id="LC284" class="blob-code blob-code-inner js-file-line"> htmlString <span class="pl-k">=</span> <span class="pl-sr"><span class="pl-k">r</span><span class="pl-pds">&quot;</span>&lt;html&gt;&lt;title&gt;T<span class="pl-c1">.</span>congolense VAP&lt;/title&gt;&lt;body&gt;&lt;div style=&#39;text-align:center&#39;&gt;&lt;h2&gt;&lt;i&gt;Trypanosoma congolense&lt;/i&gt; Variant Antigen Profile&lt;/h2&gt;&lt;h3&gt;<span class="pl-pds">&quot;</span></span></td>
1892 </tr>
1893 <tr>
1894 <td id="L285" class="blob-num js-line-number" data-line-number="285"></td>
1895 <td id="LC285" class="blob-code blob-code-inner js-file-line"> htmlString <span class="pl-k">+=</span> name</td>
1896 </tr>
1897 <tr>
1898 <td id="L286" class="blob-num js-line-number" data-line-number="286"></td>
1899 <td id="LC286" class="blob-code blob-code-inner js-file-line"> htmlString <span class="pl-k">+=</span> <span class="pl-sr"><span class="pl-k">r</span><span class="pl-pds">&quot;</span>&lt;br/&gt;Genomic Analysis&lt;/h3&gt;<span class="pl-pds">&quot;</span></span></td>
1900 </tr>
1901 <tr>
1902 <td id="L287" class="blob-num js-line-number" data-line-number="287"></td>
1903 <td id="LC287" class="blob-code blob-code-inner js-file-line"> htmlString <span class="pl-k">+=</span> <span class="pl-s"><span class="pl-pds">&quot;</span>&lt;p style = &#39;margin-left:23%; margin-right:23%&#39;&gt;Table Legend: Variant Antigen Profiles of &lt;i&gt;Trypanosoma congolense&lt;/i&gt; estimated as the phylotype proportion and as the deviation from the mean across the sample cohort.&lt;br&gt;<span class="pl-pds">&quot;</span></span> \</td>
1904 </tr>
1905 <tr>
1906 <td id="L288" class="blob-num js-line-number" data-line-number="288"></td>
1907 <td id="LC288" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">&quot;</span>Data was produced with the &#39;Variant Antigen Profiler&#39; (Silva Pereira et al., 2019).&lt;/p&gt;<span class="pl-pds">&quot;</span></span></td>
1908 </tr>
1909 <tr>
1910 <td id="L289" class="blob-num js-line-number" data-line-number="289"></td>
1911 <td id="LC289" class="blob-code blob-code-inner js-file-line"> htmlString <span class="pl-k">+=</span> <span class="pl-sr"><span class="pl-k">r</span><span class="pl-pds">&quot;</span>&lt;style&gt; table, th, tr, td {border: 1px solid black; border-collapse: collapse;}&lt;/style&gt;<span class="pl-pds">&quot;</span></span></td>
1912 </tr>
1913 <tr>
1914 <td id="L290" class="blob-num js-line-number" data-line-number="290"></td>
1915 <td id="LC290" class="blob-code blob-code-inner js-file-line">
1916 </td>
1917 </tr>
1918 <tr>
1919 <td id="L291" class="blob-num js-line-number" data-line-number="291"></td>
1920 <td id="LC291" class="blob-code blob-code-inner js-file-line"> htmlString <span class="pl-k">+=</span> <span class="pl-sr"><span class="pl-k">r</span><span class="pl-pds">&quot;</span>&lt;table style=&#39;width:50%;margin-left:25%;text-align:center&#39;&gt;&lt;tr&gt;&lt;th&gt;Phylotype&lt;/th&gt;&lt;th&gt;Relative Frequency&lt;/th&gt;&lt;th&gt;Deviation from Mean&lt;/th&gt;&lt;/tr&gt;<span class="pl-pds">&quot;</span></span></td>
1921 </tr>
1922 <tr>
1923 <td id="L292" class="blob-num js-line-number" data-line-number="292"></td>
1924 <td id="LC292" class="blob-code blob-code-inner js-file-line"> tabString <span class="pl-k">=</span> <span class="pl-s"><span class="pl-pds">&quot;</span><span class="pl-pds">&quot;</span></span></td>
1925 </tr>
1926 <tr>
1927 <td id="L293" class="blob-num js-line-number" data-line-number="293"></td>
1928 <td id="LC293" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">#</span> flush out table with correct values</span></td>
1929 </tr>
1930 <tr>
1931 <td id="L294" class="blob-num js-line-number" data-line-number="294"></td>
1932 <td id="LC294" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">for</span> i <span class="pl-k">in</span> <span class="pl-c1">range</span>(<span class="pl-c1">0</span>, <span class="pl-c1">15</span>):</td>
1933 </tr>
1934 <tr>
1935 <td id="L295" class="blob-num js-line-number" data-line-number="295"></td>
1936 <td id="LC295" class="blob-code blob-code-inner js-file-line"> f<span class="pl-k">=</span> <span class="pl-c1">format</span>(freqList[i],<span class="pl-s"><span class="pl-pds">&#39;</span>.4f<span class="pl-pds">&#39;</span></span>)</td>
1937 </tr>
1938 <tr>
1939 <td id="L296" class="blob-num js-line-number" data-line-number="296"></td>
1940 <td id="LC296" class="blob-code blob-code-inner js-file-line"> d<span class="pl-k">=</span> <span class="pl-c1">format</span>(devList[i],<span class="pl-s"><span class="pl-pds">&#39;</span>.4f<span class="pl-pds">&#39;</span></span>)</td>
1941 </tr>
1942 <tr>
1943 <td id="L297" class="blob-num js-line-number" data-line-number="297"></td>
1944 <td id="LC297" class="blob-code blob-code-inner js-file-line"> tabString <span class="pl-k">+=</span> <span class="pl-s"><span class="pl-pds">&quot;</span>&lt;tr&gt;&lt;td&gt;phy<span class="pl-pds">&quot;</span></span> <span class="pl-k">+</span> <span class="pl-c1">str</span>(i <span class="pl-k">+</span> <span class="pl-c1">1</span>) <span class="pl-k">+</span> <span class="pl-s"><span class="pl-pds">&quot;</span>&lt;/td&gt;&lt;td&gt;<span class="pl-pds">&quot;</span></span> <span class="pl-k">+</span> f <span class="pl-k">+</span> <span class="pl-s"><span class="pl-pds">&quot;</span>&lt;/td&gt;&lt;td&gt;<span class="pl-pds">&quot;</span></span> <span class="pl-k">+</span> d <span class="pl-k">+</span> <span class="pl-s"><span class="pl-pds">&quot;</span>&lt;/td&gt;&lt;/tr&gt;<span class="pl-pds">&quot;</span></span></td>
1945 </tr>
1946 <tr>
1947 <td id="L298" class="blob-num js-line-number" data-line-number="298"></td>
1948 <td id="LC298" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">#</span>tabString += &quot;&lt;tr&gt;&lt;td&gt;phy&quot; + str(i + 1) + &quot;&lt;/td&gt;&lt;td&gt;&quot; + str(freqList[i]) + &quot;&lt;/td&gt;&lt;td&gt;&quot; + str(devList[i]) + &quot;&lt;/td&gt;&lt;/tr&gt;&quot;</span></td>
1949 </tr>
1950 <tr>
1951 <td id="L299" class="blob-num js-line-number" data-line-number="299"></td>
1952 <td id="LC299" class="blob-code blob-code-inner js-file-line"> htmlString <span class="pl-k">+=</span> tabString <span class="pl-k">+</span> <span class="pl-s"><span class="pl-pds">&quot;</span>&lt;/table&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;<span class="pl-pds">&quot;</span></span></td>
1953 </tr>
1954 <tr>
1955 <td id="L300" class="blob-num js-line-number" data-line-number="300"></td>
1956 <td id="LC300" class="blob-code blob-code-inner js-file-line">
1957 </td>
1958 </tr>
1959 <tr>
1960 <td id="L301" class="blob-num js-line-number" data-line-number="301"></td>
1961 <td id="LC301" class="blob-code blob-code-inner js-file-line"> htmlString <span class="pl-k">+=</span> <span class="pl-sr"><span class="pl-k">r</span><span class="pl-pds">&quot;</span>&lt;h3&gt;The Variation Heat Map and Dendrogram&lt;/h3&gt;&lt;p&gt;The absolute phylotype variation in the sample compared to model dataset<span class="pl-c1">.</span>&lt;/p&gt;<span class="pl-pds">&quot;</span></span></td>
1962 </tr>
1963 <tr>
1964 <td id="L302" class="blob-num js-line-number" data-line-number="302"></td>
1965 <td id="LC302" class="blob-code blob-code-inner js-file-line"> imgString <span class="pl-k">=</span> <span class="pl-sr"><span class="pl-k">r</span><span class="pl-pds">&quot;</span>&lt;img src = &#39;heatmap<span class="pl-c1">.</span>png&#39; alt=&#39;Variation Heatmap&#39; style=&#39;max-width:100%&#39;&gt;&lt;br&gt;&lt;br&gt;<span class="pl-pds">&quot;</span></span></td>
1966 </tr>
1967 <tr>
1968 <td id="L303" class="blob-num js-line-number" data-line-number="303"></td>
1969 <td id="LC303" class="blob-code blob-code-inner js-file-line"> htmlString <span class="pl-k">+=</span> imgString</td>
1970 </tr>
1971 <tr>
1972 <td id="L304" class="blob-num js-line-number" data-line-number="304"></td>
1973 <td id="LC304" class="blob-code blob-code-inner js-file-line">
1974 </td>
1975 </tr>
1976 <tr>
1977 <td id="L305" class="blob-num js-line-number" data-line-number="305"></td>
1978 <td id="LC305" class="blob-code blob-code-inner js-file-line"> htmlString <span class="pl-k">+=</span> <span class="pl-sr"><span class="pl-k">r</span><span class="pl-pds">&quot;</span>&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;h3&gt;The Deviation Heat Map and Dendrogram&lt;/h3&gt;&lt;p&gt;The phylotype variation expressed as the deviation from your sample mean compared to the model dataset&lt;/p&gt;<span class="pl-pds">&quot;</span></span></td>
1979 </tr>
1980 <tr>
1981 <td id="L306" class="blob-num js-line-number" data-line-number="306"></td>
1982 <td id="LC306" class="blob-code blob-code-inner js-file-line"> imgString <span class="pl-k">=</span> <span class="pl-sr"><span class="pl-k">r</span><span class="pl-pds">&quot;</span>&lt;img src = &#39;dheatmap<span class="pl-c1">.</span>png&#39; alt=&#39;Deviation Heatmap&#39; style=&#39;max-width:100%&#39;&gt;&lt;br&gt;&lt;br&gt;<span class="pl-pds">&quot;</span></span></td>
1983 </tr>
1984 <tr>
1985 <td id="L307" class="blob-num js-line-number" data-line-number="307"></td>
1986 <td id="LC307" class="blob-code blob-code-inner js-file-line"> htmlString <span class="pl-k">+=</span> imgString</td>
1987 </tr>
1988 <tr>
1989 <td id="L308" class="blob-num js-line-number" data-line-number="308"></td>
1990 <td id="LC308" class="blob-code blob-code-inner js-file-line">
1991 </td>
1992 </tr>
1993 <tr>
1994 <td id="L309" class="blob-num js-line-number" data-line-number="309"></td>
1995 <td id="LC309" class="blob-code blob-code-inner js-file-line"> htmlString <span class="pl-k">+=</span> <span class="pl-sr"><span class="pl-k">r</span><span class="pl-pds">&quot;</span>&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;h3&gt;The Variation PCA plot&lt;/h3&gt;&lt;p&gt;PCA analysis corresponding to absolute variation<span class="pl-c1">.</span> Colour coded according to location&lt;/p&gt;<span class="pl-pds">&quot;</span></span></td>
1996 </tr>
1997 <tr>
1998 <td id="L310" class="blob-num js-line-number" data-line-number="310"></td>
1999 <td id="LC310" class="blob-code blob-code-inner js-file-line"> imgString <span class="pl-k">=</span> <span class="pl-sr"><span class="pl-k">r</span><span class="pl-pds">&quot;</span>&lt;img src = &#39;vapPCA<span class="pl-c1">.</span>png&#39; alt=&#39;PCA Analysis&#39; style=&#39;max-width:100%&#39;&gt;&lt;br&gt;&lt;br&gt;<span class="pl-pds">&quot;</span></span></td>
2000 </tr>
2001 <tr>
2002 <td id="L311" class="blob-num js-line-number" data-line-number="311"></td>
2003 <td id="LC311" class="blob-code blob-code-inner js-file-line"> htmlString <span class="pl-k">+=</span> imgString <span class="pl-k">+</span> <span class="pl-sr"><span class="pl-k">r</span><span class="pl-pds">&quot;</span>&lt;/div&gt;&lt;/body&gt;&lt;/html&gt;<span class="pl-pds">&quot;</span></span></td>
2004 </tr>
2005 <tr>
2006 <td id="L312" class="blob-num js-line-number" data-line-number="312"></td>
2007 <td id="LC312" class="blob-code blob-code-inner js-file-line">
2008 </td>
2009 </tr>
2010 <tr>
2011 <td id="L313" class="blob-num js-line-number" data-line-number="313"></td>
2012 <td id="LC313" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">with</span> <span class="pl-c1">open</span>(htmlfn, <span class="pl-s"><span class="pl-pds">&quot;</span>w<span class="pl-pds">&quot;</span></span>) <span class="pl-k">as</span> htmlfile:</td>
2013 </tr>
2014 <tr>
2015 <td id="L314" class="blob-num js-line-number" data-line-number="314"></td>
2016 <td id="LC314" class="blob-code blob-code-inner js-file-line"> htmlfile.write(htmlString)</td>
2017 </tr>
2018 <tr>
2019 <td id="L315" class="blob-num js-line-number" data-line-number="315"></td>
2020 <td id="LC315" class="blob-code blob-code-inner js-file-line">
2021 </td>
2022 </tr>
2023 <tr>
2024 <td id="L316" class="blob-num js-line-number" data-line-number="316"></td>
2025 <td id="LC316" class="blob-code blob-code-inner js-file-line">
2026 </td>
2027 </tr>
2028 <tr>
2029 <td id="L317" class="blob-num js-line-number" data-line-number="317"></td>
2030 <td id="LC317" class="blob-code blob-code-inner js-file-line"><span class="pl-k">def</span> <span class="pl-en">assemble</span>(<span class="pl-smi">args</span>,<span class="pl-smi">dict</span>):</td>
2031 </tr>
2032 <tr>
2033 <td id="L318" class="blob-num js-line-number" data-line-number="318"></td>
2034 <td id="LC318" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">#</span>argdict = {&#39;name&#39;: 2, &#39;pdfexport&#39;: 3, &#39;kmers&#39;: 4, &#39;inslen&#39;: 5, &#39;covcut&#39;: 6, &#39;forward&#39;: 7, &#39;reverse&#39;: 8, &#39;html_file&#39;: 9,&#39;html_resource&#39;: 10}</span></td>
2035 </tr>
2036 <tr>
2037 <td id="L319" class="blob-num js-line-number" data-line-number="319"></td>
2038 <td id="LC319" class="blob-code blob-code-inner js-file-line"> assembleWithVelvet(args[dict[<span class="pl-s"><span class="pl-pds">&#39;</span>name<span class="pl-pds">&#39;</span></span>]],args[dict[<span class="pl-s"><span class="pl-pds">&#39;</span>kmers<span class="pl-pds">&#39;</span></span>]], args[dict[<span class="pl-s"><span class="pl-pds">&#39;</span>inslen<span class="pl-pds">&#39;</span></span>]],args[dict[<span class="pl-s"><span class="pl-pds">&#39;</span>covcut<span class="pl-pds">&#39;</span></span>]], args[dict[<span class="pl-s"><span class="pl-pds">&#39;</span>forward<span class="pl-pds">&#39;</span></span>]],args[dict[<span class="pl-s"><span class="pl-pds">&#39;</span>reverse<span class="pl-pds">&#39;</span></span>]])</td>
2039 </tr>
2040 <tr>
2041 <td id="L320" class="blob-num js-line-number" data-line-number="320"></td>
2042 <td id="LC320" class="blob-code blob-code-inner js-file-line"> contigTranslation(args[dict[<span class="pl-s"><span class="pl-pds">&#39;</span>name<span class="pl-pds">&#39;</span></span>]])</td>
2043 </tr>
2044 <tr>
2045 <td id="L321" class="blob-num js-line-number" data-line-number="321"></td>
2046 <td id="LC321" class="blob-code blob-code-inner js-file-line"> myCountList <span class="pl-k">=</span> HMMerMotifSearch(args[dict[<span class="pl-s"><span class="pl-pds">&#39;</span>name<span class="pl-pds">&#39;</span></span>]])</td>
2047 </tr>
2048 <tr>
2049 <td id="L322" class="blob-num js-line-number" data-line-number="322"></td>
2050 <td id="LC322" class="blob-code blob-code-inner js-file-line"> myFreqList <span class="pl-k">=</span> relativeFrequencyTable(myCountList, args[dict[<span class="pl-s"><span class="pl-pds">&#39;</span>name<span class="pl-pds">&#39;</span></span>]],args[dict[<span class="pl-s"><span class="pl-pds">&#39;</span>html_resource<span class="pl-pds">&#39;</span></span>]]) <span class="pl-c"><span class="pl-c">#</span> saves out inputname_relative_frequncy.csv</span></td>
2051 </tr>
2052 <tr>
2053 <td id="L323" class="blob-num js-line-number" data-line-number="323"></td>
2054 <td id="LC323" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">#</span> myFreqList = [0.111670020120724, 0.103621730382294, 0.0784708249496982, 0.0110663983903421,</span></td>
2055 </tr>
2056 <tr>
2057 <td id="L324" class="blob-num js-line-number" data-line-number="324"></td>
2058 <td id="LC324" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">#</span> 0.0543259557344064, 0.0563380281690141, 0.0734406438631791, 0.0160965794768612,</span></td>
2059 </tr>
2060 <tr>
2061 <td id="L325" class="blob-num js-line-number" data-line-number="325"></td>
2062 <td id="LC325" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">#</span> 0.0110663983903421, 0.028169014084507, 0.126760563380282, 0.0583501006036217, 0.062374245472837,</span></td>
2063 </tr>
2064 <tr>
2065 <td id="L326" class="blob-num js-line-number" data-line-number="326"></td>
2066 <td id="LC326" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">#</span> 0.0372233400402414, 0.17102615694165]</span></td>
2067 </tr>
2068 <tr>
2069 <td id="L327" class="blob-num js-line-number" data-line-number="327"></td>
2070 <td id="LC327" class="blob-code blob-code-inner js-file-line">
2071 </td>
2072 </tr>
2073 <tr>
2074 <td id="L328" class="blob-num js-line-number" data-line-number="328"></td>
2075 <td id="LC328" class="blob-code blob-code-inner js-file-line">
2076 </td>
2077 </tr>
2078 <tr>
2079 <td id="L329" class="blob-num js-line-number" data-line-number="329"></td>
2080 <td id="LC329" class="blob-code blob-code-inner js-file-line"> myDevList <span class="pl-k">=</span> getDeviationFromMean(myFreqList, args[dict[<span class="pl-s"><span class="pl-pds">&#39;</span>name<span class="pl-pds">&#39;</span></span>]], args[dict[<span class="pl-s"><span class="pl-pds">&#39;</span>html_resource<span class="pl-pds">&#39;</span></span>]]) <span class="pl-c"><span class="pl-c">#</span> saves out inputname_deviation_from_mean.csv</span></td>
2081 </tr>
2082 <tr>
2083 <td id="L330" class="blob-num js-line-number" data-line-number="330"></td>
2084 <td id="LC330" class="blob-code blob-code-inner js-file-line"> relativeFrequencyHeatMap(args[dict[<span class="pl-s"><span class="pl-pds">&#39;</span>name<span class="pl-pds">&#39;</span></span>]], myFreqList,args[dict[<span class="pl-s"><span class="pl-pds">&#39;</span>pdfexport<span class="pl-pds">&#39;</span></span>]], args[dict[<span class="pl-s"><span class="pl-pds">&#39;</span>html_resource<span class="pl-pds">&#39;</span></span>]])</td>
2085 </tr>
2086 <tr>
2087 <td id="L331" class="blob-num js-line-number" data-line-number="331"></td>
2088 <td id="LC331" class="blob-code blob-code-inner js-file-line"> deviationFromMeanHeatMap(args[dict[<span class="pl-s"><span class="pl-pds">&#39;</span>name<span class="pl-pds">&#39;</span></span>]], myDevList,args[dict[<span class="pl-s"><span class="pl-pds">&#39;</span>pdfexport<span class="pl-pds">&#39;</span></span>]], args[dict[<span class="pl-s"><span class="pl-pds">&#39;</span>html_resource<span class="pl-pds">&#39;</span></span>]])</td>
2089 </tr>
2090 <tr>
2091 <td id="L332" class="blob-num js-line-number" data-line-number="332"></td>
2092 <td id="LC332" class="blob-code blob-code-inner js-file-line"> plotPCA(args[dict[<span class="pl-s"><span class="pl-pds">&#39;</span>name<span class="pl-pds">&#39;</span></span>]], myFreqList,args[dict[<span class="pl-s"><span class="pl-pds">&#39;</span>pdfexport<span class="pl-pds">&#39;</span></span>]], args[dict[<span class="pl-s"><span class="pl-pds">&#39;</span>html_resource<span class="pl-pds">&#39;</span></span>]])</td>
2093 </tr>
2094 <tr>
2095 <td id="L333" class="blob-num js-line-number" data-line-number="333"></td>
2096 <td id="LC333" class="blob-code blob-code-inner js-file-line"> createHTML(args[dict[<span class="pl-s"><span class="pl-pds">&#39;</span>name<span class="pl-pds">&#39;</span></span>]], args[dict[<span class="pl-s"><span class="pl-pds">&#39;</span>html_file<span class="pl-pds">&#39;</span></span>]], myFreqList, myDevList) <span class="pl-c"><span class="pl-c">#</span> assumes imgs are heatmap.png, dheatmap.png, vapPCA.png and already in htmlresource</span></td>
2097 </tr>
2098 <tr>
2099 <td id="L334" class="blob-num js-line-number" data-line-number="334"></td>
2100 <td id="LC334" class="blob-code blob-code-inner js-file-line">
2101 </td>
2102 </tr>
2103 <tr>
2104 <td id="L335" class="blob-num js-line-number" data-line-number="335"></td>
2105 <td id="LC335" class="blob-code blob-code-inner js-file-line"><span class="pl-k">def</span> <span class="pl-en">contigs</span>(<span class="pl-smi">args</span>,<span class="pl-smi">dict</span>):</td>
2106 </tr>
2107 <tr>
2108 <td id="L336" class="blob-num js-line-number" data-line-number="336"></td>
2109 <td id="LC336" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">#</span>argdict = {&#39;name&#39;: 2, &#39;pdfexport&#39;: 3, &#39;contigs&#39;: 4, &#39;html_file&#39;: 5, &#39;html_resource&#39;: 6}</span></td>
2110 </tr>
2111 <tr>
2112 <td id="L337" class="blob-num js-line-number" data-line-number="337"></td>
2113 <td id="LC337" class="blob-code blob-code-inner js-file-line">
2114 </td>
2115 </tr>
2116 <tr>
2117 <td id="L338" class="blob-num js-line-number" data-line-number="338"></td>
2118 <td id="LC338" class="blob-code blob-code-inner js-file-line"> shutil.copyfile(args[dict[<span class="pl-s"><span class="pl-pds">&#39;</span>contigs<span class="pl-pds">&#39;</span></span>]], args[dict[<span class="pl-s"><span class="pl-pds">&#39;</span>name<span class="pl-pds">&#39;</span></span>]]<span class="pl-k">+</span><span class="pl-s"><span class="pl-pds">&quot;</span>.fa<span class="pl-pds">&quot;</span></span>)</td>
2119 </tr>
2120 <tr>
2121 <td id="L339" class="blob-num js-line-number" data-line-number="339"></td>
2122 <td id="LC339" class="blob-code blob-code-inner js-file-line">
2123 </td>
2124 </tr>
2125 <tr>
2126 <td id="L340" class="blob-num js-line-number" data-line-number="340"></td>
2127 <td id="LC340" class="blob-code blob-code-inner js-file-line"> </td>
2128 </tr>
2129 <tr>
2130 <td id="L341" class="blob-num js-line-number" data-line-number="341"></td>
2131 <td id="LC341" class="blob-code blob-code-inner js-file-line">
2132 </td>
2133 </tr>
2134 <tr>
2135 <td id="L342" class="blob-num js-line-number" data-line-number="342"></td>
2136 <td id="LC342" class="blob-code blob-code-inner js-file-line"> contigTranslation(args[dict[<span class="pl-s"><span class="pl-pds">&#39;</span>name<span class="pl-pds">&#39;</span></span>]])</td>
2137 </tr>
2138 <tr>
2139 <td id="L343" class="blob-num js-line-number" data-line-number="343"></td>
2140 <td id="LC343" class="blob-code blob-code-inner js-file-line"> myCountList <span class="pl-k">=</span> HMMerMotifSearch(args[dict[<span class="pl-s"><span class="pl-pds">&#39;</span>name<span class="pl-pds">&#39;</span></span>]])</td>
2141 </tr>
2142 <tr>
2143 <td id="L344" class="blob-num js-line-number" data-line-number="344"></td>
2144 <td id="LC344" class="blob-code blob-code-inner js-file-line"> myFreqList <span class="pl-k">=</span> relativeFrequencyTable(myCountList, args[dict[<span class="pl-s"><span class="pl-pds">&#39;</span>name<span class="pl-pds">&#39;</span></span>]],</td>
2145 </tr>
2146 <tr>
2147 <td id="L345" class="blob-num js-line-number" data-line-number="345"></td>
2148 <td id="LC345" class="blob-code blob-code-inner js-file-line"> args[dict[<span class="pl-s"><span class="pl-pds">&#39;</span>html_resource<span class="pl-pds">&#39;</span></span>]]) <span class="pl-c"><span class="pl-c">#</span> saves out inputname_relative_frequncy.csv</span></td>
2149 </tr>
2150 <tr>
2151 <td id="L346" class="blob-num js-line-number" data-line-number="346"></td>
2152 <td id="LC346" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">#</span> myFreqList = [0.111670020120724, 0.103621730382294, 0.0784708249496982, 0.0110663983903421,</span></td>
2153 </tr>
2154 <tr>
2155 <td id="L347" class="blob-num js-line-number" data-line-number="347"></td>
2156 <td id="LC347" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">#</span> 0.0543259557344064, 0.0563380281690141, 0.0734406438631791, 0.0160965794768612,</span></td>
2157 </tr>
2158 <tr>
2159 <td id="L348" class="blob-num js-line-number" data-line-number="348"></td>
2160 <td id="LC348" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">#</span> 0.0110663983903421, 0.028169014084507, 0.126760563380282, 0.0583501006036217, 0.062374245472837,</span></td>
2161 </tr>
2162 <tr>
2163 <td id="L349" class="blob-num js-line-number" data-line-number="349"></td>
2164 <td id="LC349" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">#</span> 0.0372233400402414, 0.17102615694165]</span></td>
2165 </tr>
2166 <tr>
2167 <td id="L350" class="blob-num js-line-number" data-line-number="350"></td>
2168 <td id="LC350" class="blob-code blob-code-inner js-file-line">
2169 </td>
2170 </tr>
2171 <tr>
2172 <td id="L351" class="blob-num js-line-number" data-line-number="351"></td>
2173 <td id="LC351" class="blob-code blob-code-inner js-file-line">
2174 </td>
2175 </tr>
2176 <tr>
2177 <td id="L352" class="blob-num js-line-number" data-line-number="352"></td>
2178 <td id="LC352" class="blob-code blob-code-inner js-file-line"> myDevList <span class="pl-k">=</span> getDeviationFromMean(myFreqList, args[dict[<span class="pl-s"><span class="pl-pds">&#39;</span>name<span class="pl-pds">&#39;</span></span>]],</td>
2179 </tr>
2180 <tr>
2181 <td id="L353" class="blob-num js-line-number" data-line-number="353"></td>
2182 <td id="LC353" class="blob-code blob-code-inner js-file-line"> args[dict[<span class="pl-s"><span class="pl-pds">&#39;</span>html_resource<span class="pl-pds">&#39;</span></span>]]) <span class="pl-c"><span class="pl-c">#</span> saves out inputname_deviation_from_mean.csv</span></td>
2183 </tr>
2184 <tr>
2185 <td id="L354" class="blob-num js-line-number" data-line-number="354"></td>
2186 <td id="LC354" class="blob-code blob-code-inner js-file-line"> relativeFrequencyHeatMap(args[dict[<span class="pl-s"><span class="pl-pds">&#39;</span>name<span class="pl-pds">&#39;</span></span>]], myFreqList, args[dict[<span class="pl-s"><span class="pl-pds">&#39;</span>pdfexport<span class="pl-pds">&#39;</span></span>]], args[dict[<span class="pl-s"><span class="pl-pds">&#39;</span>html_resource<span class="pl-pds">&#39;</span></span>]])</td>
2187 </tr>
2188 <tr>
2189 <td id="L355" class="blob-num js-line-number" data-line-number="355"></td>
2190 <td id="LC355" class="blob-code blob-code-inner js-file-line"> deviationFromMeanHeatMap(args[dict[<span class="pl-s"><span class="pl-pds">&#39;</span>name<span class="pl-pds">&#39;</span></span>]], myDevList, args[dict[<span class="pl-s"><span class="pl-pds">&#39;</span>pdfexport<span class="pl-pds">&#39;</span></span>]], args[dict[<span class="pl-s"><span class="pl-pds">&#39;</span>html_resource<span class="pl-pds">&#39;</span></span>]])</td>
2191 </tr>
2192 <tr>
2193 <td id="L356" class="blob-num js-line-number" data-line-number="356"></td>
2194 <td id="LC356" class="blob-code blob-code-inner js-file-line"> plotPCA(args[dict[<span class="pl-s"><span class="pl-pds">&#39;</span>name<span class="pl-pds">&#39;</span></span>]], myFreqList, args[dict[<span class="pl-s"><span class="pl-pds">&#39;</span>pdfexport<span class="pl-pds">&#39;</span></span>]], args[dict[<span class="pl-s"><span class="pl-pds">&#39;</span>html_resource<span class="pl-pds">&#39;</span></span>]])</td>
2195 </tr>
2196 <tr>
2197 <td id="L357" class="blob-num js-line-number" data-line-number="357"></td>
2198 <td id="LC357" class="blob-code blob-code-inner js-file-line"> createHTML(args[dict[<span class="pl-s"><span class="pl-pds">&#39;</span>name<span class="pl-pds">&#39;</span></span>]], args[dict[<span class="pl-s"><span class="pl-pds">&#39;</span>html_file<span class="pl-pds">&#39;</span></span>]], myFreqList,</td>
2199 </tr>
2200 <tr>
2201 <td id="L358" class="blob-num js-line-number" data-line-number="358"></td>
2202 <td id="LC358" class="blob-code blob-code-inner js-file-line"> myDevList) <span class="pl-c"><span class="pl-c">#</span> assumes imgs are heatmap.png, dheatmap.png, vapPCA.png and already in htmlresource</span></td>
2203 </tr>
2204 <tr>
2205 <td id="L359" class="blob-num js-line-number" data-line-number="359"></td>
2206 <td id="LC359" class="blob-code blob-code-inner js-file-line">
2207 </td>
2208 </tr>
2209 <tr>
2210 <td id="L360" class="blob-num js-line-number" data-line-number="360"></td>
2211 <td id="LC360" class="blob-code blob-code-inner js-file-line">
2212 </td>
2213 </tr>
2214 <tr>
2215 <td id="L361" class="blob-num js-line-number" data-line-number="361"></td>
2216 <td id="LC361" class="blob-code blob-code-inner js-file-line"><span class="pl-k">def</span> <span class="pl-en">genomicProcess</span>(<span class="pl-smi">inputname</span>, <span class="pl-smi">exportpdf</span>, <span class="pl-smi">forwardFN</span>, <span class="pl-smi">reverseFN</span>, <span class="pl-smi">htmlfile</span>, <span class="pl-smi">htmlresource</span>):</td>
2217 </tr>
2218 <tr>
2219 <td id="L362" class="blob-num js-line-number" data-line-number="362"></td>
2220 <td id="LC362" class="blob-code blob-code-inner js-file-line"> assembleWithVelvet(inputname,forwardFN,reverseFN)</td>
2221 </tr>
2222 <tr>
2223 <td id="L363" class="blob-num js-line-number" data-line-number="363"></td>
2224 <td id="LC363" class="blob-code blob-code-inner js-file-line"> contigTranslation(inputname)</td>
2225 </tr>
2226 <tr>
2227 <td id="L364" class="blob-num js-line-number" data-line-number="364"></td>
2228 <td id="LC364" class="blob-code blob-code-inner js-file-line"> myCountList <span class="pl-k">=</span> HMMerMotifSearch(inputname)</td>
2229 </tr>
2230 <tr>
2231 <td id="L365" class="blob-num js-line-number" data-line-number="365"></td>
2232 <td id="LC365" class="blob-code blob-code-inner js-file-line"> myFreqList <span class="pl-k">=</span> relativeFrequencyTable(myCountList, inputname, htmlresource) <span class="pl-c"><span class="pl-c">#</span> saves out inputname_relative_frequncy.csv</span></td>
2233 </tr>
2234 <tr>
2235 <td id="L366" class="blob-num js-line-number" data-line-number="366"></td>
2236 <td id="LC366" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">#</span>myFreqList = [0.111670020120724, 0.103621730382294, 0.0784708249496982, 0.0110663983903421,</span></td>
2237 </tr>
2238 <tr>
2239 <td id="L367" class="blob-num js-line-number" data-line-number="367"></td>
2240 <td id="LC367" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">#</span> 0.0543259557344064, 0.0563380281690141, 0.0734406438631791, 0.0160965794768612,</span></td>
2241 </tr>
2242 <tr>
2243 <td id="L368" class="blob-num js-line-number" data-line-number="368"></td>
2244 <td id="LC368" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">#</span> 0.0110663983903421, 0.028169014084507, 0.126760563380282, 0.0583501006036217, 0.062374245472837,</span></td>
2245 </tr>
2246 <tr>
2247 <td id="L369" class="blob-num js-line-number" data-line-number="369"></td>
2248 <td id="LC369" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">#</span> 0.0372233400402414, 0.17102615694165]</span></td>
2249 </tr>
2250 <tr>
2251 <td id="L370" class="blob-num js-line-number" data-line-number="370"></td>
2252 <td id="LC370" class="blob-code blob-code-inner js-file-line">
2253 </td>
2254 </tr>
2255 <tr>
2256 <td id="L371" class="blob-num js-line-number" data-line-number="371"></td>
2257 <td id="LC371" class="blob-code blob-code-inner js-file-line">
2258 </td>
2259 </tr>
2260 <tr>
2261 <td id="L372" class="blob-num js-line-number" data-line-number="372"></td>
2262 <td id="LC372" class="blob-code blob-code-inner js-file-line"> myDevList <span class="pl-k">=</span> getDeviationFromMean(myFreqList, inputname,htmlresource) <span class="pl-c"><span class="pl-c">#</span> saves out inputname_deviation_from_mean.csv</span></td>
2263 </tr>
2264 <tr>
2265 <td id="L373" class="blob-num js-line-number" data-line-number="373"></td>
2266 <td id="LC373" class="blob-code blob-code-inner js-file-line">
2267 </td>
2268 </tr>
2269 <tr>
2270 <td id="L374" class="blob-num js-line-number" data-line-number="374"></td>
2271 <td id="LC374" class="blob-code blob-code-inner js-file-line"> relativeFrequencyHeatMap(inputname, myFreqList, exportpdf, htmlresource)</td>
2272 </tr>
2273 <tr>
2274 <td id="L375" class="blob-num js-line-number" data-line-number="375"></td>
2275 <td id="LC375" class="blob-code blob-code-inner js-file-line"> deviationFromMeanHeatMap(inputname, myDevList, exportpdf, htmlresource)</td>
2276 </tr>
2277 <tr>
2278 <td id="L376" class="blob-num js-line-number" data-line-number="376"></td>
2279 <td id="LC376" class="blob-code blob-code-inner js-file-line"> plotPCA(inputname, myFreqList, exportpdf, htmlresource)</td>
2280 </tr>
2281 <tr>
2282 <td id="L377" class="blob-num js-line-number" data-line-number="377"></td>
2283 <td id="LC377" class="blob-code blob-code-inner js-file-line"> createHTML(inputname, htmlfile, myFreqList,myDevList) <span class="pl-c"><span class="pl-c">#</span> assumes imgs are heatmap.png, dheatmap.png, vapPCA.png and already in htmlresource</span></td>
2284 </tr>
2285 <tr>
2286 <td id="L378" class="blob-num js-line-number" data-line-number="378"></td>
2287 <td id="LC378" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span></td>
2288 </tr>
2289 <tr>
2290 <td id="L379" class="blob-num js-line-number" data-line-number="379"></td>
2291 <td id="LC379" class="blob-code blob-code-inner js-file-line">
2292 </td>
2293 </tr>
2294 <tr>
2295 <td id="L380" class="blob-num js-line-number" data-line-number="380"></td>
2296 <td id="LC380" class="blob-code blob-code-inner js-file-line">
2297 </td>
2298 </tr>
2299 <tr>
2300 <td id="L381" class="blob-num js-line-number" data-line-number="381"></td>
2301 <td id="LC381" class="blob-code blob-code-inner js-file-line">
2302 </td>
2303 </tr>
2304 <tr>
2305 <td id="L382" class="blob-num js-line-number" data-line-number="382"></td>
2306 <td id="LC382" class="blob-code blob-code-inner js-file-line"><span class="pl-k">if</span> <span class="pl-c1">__name__</span> <span class="pl-k">==</span> <span class="pl-s"><span class="pl-pds">&quot;</span>__main__<span class="pl-pds">&quot;</span></span>:</td>
2307 </tr>
2308 <tr>
2309 <td id="L383" class="blob-num js-line-number" data-line-number="383"></td>
2310 <td id="LC383" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">#</span>contigTranslation(&#39;Tcongo&#39;)</span></td>
2311 </tr>
2312 <tr>
2313 <td id="L384" class="blob-num js-line-number" data-line-number="384"></td>
2314 <td id="LC384" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">#</span>contigTranslation(&#39;Test&#39;)</span></td>
2315 </tr>
2316 <tr>
2317 <td id="L385" class="blob-num js-line-number" data-line-number="385"></td>
2318 <td id="LC385" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">#</span>newHMMerMotifSearch(&#39;Test&#39;)</span></td>
2319 </tr>
2320 <tr>
2321 <td id="L386" class="blob-num js-line-number" data-line-number="386"></td>
2322 <td id="LC386" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">#</span>HMMerMotifSearch(&#39;Tcongo&#39;)</span></td>
2323 </tr>
2324 <tr>
2325 <td id="L387" class="blob-num js-line-number" data-line-number="387"></td>
2326 <td id="LC387" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">#</span>sys.exit()</span></td>
2327 </tr>
2328 <tr>
2329 <td id="L388" class="blob-num js-line-number" data-line-number="388"></td>
2330 <td id="LC388" class="blob-code blob-code-inner js-file-line">
2331 </td>
2332 </tr>
2333 <tr>
2334 <td id="L389" class="blob-num js-line-number" data-line-number="389"></td>
2335 <td id="LC389" class="blob-code blob-code-inner js-file-line">
2336 </td>
2337 </tr>
2338 <tr>
2339 <td id="L390" class="blob-num js-line-number" data-line-number="390"></td>
2340 <td id="LC390" class="blob-code blob-code-inner js-file-line"> myFreqList <span class="pl-k">=</span> [<span class="pl-c1">0.111670020120724</span>, <span class="pl-c1">0.103621730382294</span>, <span class="pl-c1">0.0784708249496982</span>, <span class="pl-c1">0.0110663983903421</span>,</td>
2341 </tr>
2342 <tr>
2343 <td id="L391" class="blob-num js-line-number" data-line-number="391"></td>
2344 <td id="LC391" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">0.0543259557344064</span>, <span class="pl-c1">0.0563380281690141</span>, <span class="pl-c1">0.0734406438631791</span>, <span class="pl-c1">0.0160965794768612</span>,</td>
2345 </tr>
2346 <tr>
2347 <td id="L392" class="blob-num js-line-number" data-line-number="392"></td>
2348 <td id="LC392" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">0.0110663983903421</span>, <span class="pl-c1">0.028169014084507</span>, <span class="pl-c1">0.126760563380282</span>, <span class="pl-c1">0.0583501006036217</span>, <span class="pl-c1">0.062374245472837</span>,</td>
2349 </tr>
2350 <tr>
2351 <td id="L393" class="blob-num js-line-number" data-line-number="393"></td>
2352 <td id="LC393" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">0.0372233400402414</span>, <span class="pl-c1">0.17102615694165</span>]</td>
2353 </tr>
2354 <tr>
2355 <td id="L394" class="blob-num js-line-number" data-line-number="394"></td>
2356 <td id="LC394" class="blob-code blob-code-inner js-file-line"> myDevList <span class="pl-k">=</span> [<span class="pl-c1">0.000790026</span>,<span class="pl-c1">0.0073109</span>,<span class="pl-k">-</span><span class="pl-c1">0.001151769</span>,<span class="pl-k">-</span><span class="pl-c1">0.004502933</span>,<span class="pl-k">-</span><span class="pl-c1">0.013687421</span>,<span class="pl-k">-</span><span class="pl-c1">0.016159773</span>,<span class="pl-c1">0.021689891</span>,</td>
2357 </tr>
2358 <tr>
2359 <td id="L395" class="blob-num js-line-number" data-line-number="395"></td>
2360 <td id="LC395" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">0.007863809</span>,<span class="pl-k">-</span><span class="pl-c1">0.003133585</span>,<span class="pl-k">-</span><span class="pl-c1">0.001111709</span>,<span class="pl-k">-</span><span class="pl-c1">0.01313879</span>,<span class="pl-c1">0.0036997</span>,<span class="pl-k">-</span><span class="pl-c1">0.00935284</span>,<span class="pl-c1">0.005640693</span>,<span class="pl-c1">0.015243802</span>]</td>
2361 </tr>
2362 <tr>
2363 <td id="L396" class="blob-num js-line-number" data-line-number="396"></td>
2364 <td id="LC396" class="blob-code blob-code-inner js-file-line">
2365 </td>
2366 </tr>
2367 <tr>
2368 <td id="L397" class="blob-num js-line-number" data-line-number="397"></td>
2369 <td id="LC397" class="blob-code blob-code-inner js-file-line"> relativeFrequencyHeatMap(<span class="pl-s"><span class="pl-pds">&#39;</span>test<span class="pl-pds">&#39;</span></span>, myFreqList, <span class="pl-s"><span class="pl-pds">&quot;</span>PDF_Yes<span class="pl-pds">&quot;</span></span>,<span class="pl-s"><span class="pl-pds">&quot;</span>results<span class="pl-pds">&quot;</span></span>)</td>
2370 </tr>
2371 <tr>
2372 <td id="L398" class="blob-num js-line-number" data-line-number="398"></td>
2373 <td id="LC398" class="blob-code blob-code-inner js-file-line"> deviationFromMeanHeatMap(<span class="pl-s"><span class="pl-pds">&#39;</span>test<span class="pl-pds">&#39;</span></span>, myDevList, <span class="pl-s"><span class="pl-pds">&quot;</span>PDF_Yes<span class="pl-pds">&quot;</span></span>,<span class="pl-s"><span class="pl-pds">&quot;</span>results<span class="pl-pds">&quot;</span></span>)</td>
2374 </tr>
2375 <tr>
2376 <td id="L399" class="blob-num js-line-number" data-line-number="399"></td>
2377 <td id="LC399" class="blob-code blob-code-inner js-file-line"> plotPCA(<span class="pl-s"><span class="pl-pds">&#39;</span>test<span class="pl-pds">&#39;</span></span>,myFreqList,<span class="pl-s"><span class="pl-pds">&quot;</span>PDF_Yes<span class="pl-pds">&quot;</span></span>,<span class="pl-s"><span class="pl-pds">&quot;</span>results<span class="pl-pds">&quot;</span></span>)</td>
2378 </tr>
2379 <tr>
2380 <td id="L400" class="blob-num js-line-number" data-line-number="400"></td>
2381 <td id="LC400" class="blob-code blob-code-inner js-file-line">
2382 </td>
2383 </tr>
2384 <tr>
2385 <td id="L401" class="blob-num js-line-number" data-line-number="401"></td>
2386 <td id="LC401" class="blob-code blob-code-inner js-file-line"> createHTML(<span class="pl-s"><span class="pl-pds">&#39;</span>test<span class="pl-pds">&#39;</span></span>,<span class="pl-s"><span class="pl-pds">&quot;</span>results/test.html<span class="pl-pds">&quot;</span></span>, myFreqList, myDevList)</td>
2387 </tr>
2388 <tr>
2389 <td id="L402" class="blob-num js-line-number" data-line-number="402"></td>
2390 <td id="LC402" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">#</span>contigTranslation(&quot;Test&quot;)</span></td>
2391 </tr>
2392 <tr>
2393 <td id="L403" class="blob-num js-line-number" data-line-number="403"></td>
2394 <td id="LC403" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">#</span>myCountList = HMMerMotifSearch(&quot;Test&quot;)</span></td>
2395 </tr>
2396 <tr>
2397 <td id="L404" class="blob-num js-line-number" data-line-number="404"></td>
2398 <td id="LC404" class="blob-code blob-code-inner js-file-line">
2399 </td>
2400 </tr>
2401 <tr>
2402 <td id="L405" class="blob-num js-line-number" data-line-number="405"></td>
2403 <td id="LC405" class="blob-code blob-code-inner js-file-line">
2404 </td>
2405 </tr>
2406 <tr>
2407 <td id="L406" class="blob-num js-line-number" data-line-number="406"></td>
2408 <td id="LC406" class="blob-code blob-code-inner js-file-line"> sys.exit()</td>
2409 </tr>
2410 </table>
2411
2412 <details class="details-reset details-overlay BlobToolbar position-absolute js-file-line-actions dropdown d-none" aria-hidden="true">
2413 <summary class="btn-octicon ml-0 px-2 p-0 bg-white border border-gray-dark rounded-1" aria-label="Inline file action toolbar">
2414 <svg class="octicon octicon-kebab-horizontal" viewBox="0 0 13 16" version="1.1" width="13" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M1.5 9a1.5 1.5 0 1 0 0-3 1.5 1.5 0 0 0 0 3zm5 0a1.5 1.5 0 1 0 0-3 1.5 1.5 0 0 0 0 3zM13 7.5a1.5 1.5 0 1 1-3 0 1.5 1.5 0 0 1 3 0z"/></svg>
2415 </summary>
2416 <details-menu>
2417 <ul class="BlobToolbar-dropdown dropdown-menu dropdown-menu-se mt-2" style="width:185px">
2418 <li><clipboard-copy role="menuitem" class="dropdown-item" id="js-copy-lines" style="cursor:pointer;" data-original-text="Copy lines">Copy lines</clipboard-copy></li>
2419 <li><clipboard-copy role="menuitem" class="dropdown-item" id="js-copy-permalink" style="cursor:pointer;" data-original-text="Copy permalink">Copy permalink</clipboard-copy></li>
2420 <li><a class="dropdown-item js-update-url-with-hash" id="js-view-git-blame" role="menuitem" href="/johnheap/VAPPER-Galaxy/blame/a4e16d71fe985f389930c02f94354b87d3aabadb/Tryp_G.py">View git blame</a></li>
2421 <li><a class="dropdown-item" id="js-new-issue" role="menuitem" href="/johnheap/VAPPER-Galaxy/issues/new">Reference in new issue</a></li>
2422 </ul>
2423 </details-menu>
2424 </details>
2425
2426 </div>
2427
2428 </div>
2429
2430
2431
2432 <details class="details-reset details-overlay details-overlay-dark">
2433 <summary data-hotkey="l" aria-label="Jump to line"></summary>
2434 <details-dialog class="Box Box--overlay d-flex flex-column anim-fade-in fast linejump" aria-label="Jump to line">
2435 <!-- '"` --><!-- </textarea></xmp> --></option></form><form class="js-jump-to-line-form Box-body d-flex" action="" accept-charset="UTF-8" method="get"><input name="utf8" type="hidden" value="&#x2713;" />
2436 <input class="form-control flex-auto mr-3 linejump-input js-jump-to-line-field" type="text" placeholder="Jump to line&hellip;" aria-label="Jump to line" autofocus>
2437 <button type="submit" class="btn" data-close-dialog>Go</button>
2438 </form> </details-dialog>
2439 </details>
2440
2441
2442
2443 </div>
2444 <div class="modal-backdrop js-touch-events"></div>
2445 </div>
2446
2447 </main>
2448 </div>
2449
2450
2451 </div>
2452
2453
2454 <div class="footer container-lg width-full p-responsive" role="contentinfo">
2455 <div class="position-relative d-flex flex-row-reverse flex-lg-row flex-wrap flex-lg-nowrap flex-justify-center flex-lg-justify-between pt-6 pb-2 mt-6 f6 text-gray border-top border-gray-light ">
2456 <ul class="list-style-none d-flex flex-wrap col-12 col-lg-5 flex-justify-center flex-lg-justify-between mb-2 mb-lg-0">
2457 <li class="mr-3 mr-lg-0">&copy; 2019 <span title="0.91244s from unicorn-7478f9985c-zn698">GitHub</span>, Inc.</li>
2458 <li class="mr-3 mr-lg-0"><a data-ga-click="Footer, go to terms, text:terms" href="https://github.com/site/terms">Terms</a></li>
2459 <li class="mr-3 mr-lg-0"><a data-ga-click="Footer, go to privacy, text:privacy" href="https://github.com/site/privacy">Privacy</a></li>
2460 <li class="mr-3 mr-lg-0"><a data-ga-click="Footer, go to security, text:security" href="https://github.com/security">Security</a></li>
2461 <li class="mr-3 mr-lg-0"><a href="https://githubstatus.com/" data-ga-click="Footer, go to status, text:status">Status</a></li>
2462 <li><a data-ga-click="Footer, go to help, text:help" href="https://help.github.com">Help</a></li>
2463 </ul>
2464
2465 <a aria-label="Homepage" title="GitHub" class="footer-octicon d-none d-lg-block mx-lg-4" href="https://github.com">
2466 <svg height="24" class="octicon octicon-mark-github" viewBox="0 0 16 16" version="1.1" width="24" aria-hidden="true"><path fill-rule="evenodd" d="M8 0C3.58 0 0 3.58 0 8c0 3.54 2.29 6.53 5.47 7.59.4.07.55-.17.55-.38 0-.19-.01-.82-.01-1.49-2.01.37-2.53-.49-2.69-.94-.09-.23-.48-.94-.82-1.13-.28-.15-.68-.52-.01-.53.63-.01 1.08.58 1.23.82.72 1.21 1.87.87 2.33.66.07-.52.28-.87.51-1.07-1.78-.2-3.64-.89-3.64-3.95 0-.87.31-1.59.82-2.15-.08-.2-.36-1.02.08-2.12 0 0 .67-.21 2.2.82.64-.18 1.32-.27 2-.27.68 0 1.36.09 2 .27 1.53-1.04 2.2-.82 2.2-.82.44 1.1.16 1.92.08 2.12.51.56.82 1.27.82 2.15 0 3.07-1.87 3.75-3.65 3.95.29.25.54.73.54 1.48 0 1.07-.01 1.93-.01 2.2 0 .21.15.46.55.38A8.013 8.013 0 0 0 16 8c0-4.42-3.58-8-8-8z"/></svg>
2467 </a>
2468 <ul class="list-style-none d-flex flex-wrap col-12 col-lg-5 flex-justify-center flex-lg-justify-between mb-2 mb-lg-0">
2469 <li class="mr-3 mr-lg-0"><a data-ga-click="Footer, go to contact, text:contact" href="https://github.com/contact">Contact GitHub</a></li>
2470 <li class="mr-3 mr-lg-0"><a href="https://github.com/pricing" data-ga-click="Footer, go to Pricing, text:Pricing">Pricing</a></li>
2471 <li class="mr-3 mr-lg-0"><a href="https://developer.github.com" data-ga-click="Footer, go to api, text:api">API</a></li>
2472 <li class="mr-3 mr-lg-0"><a href="https://training.github.com" data-ga-click="Footer, go to training, text:training">Training</a></li>
2473 <li class="mr-3 mr-lg-0"><a href="https://github.blog" data-ga-click="Footer, go to blog, text:blog">Blog</a></li>
2474 <li><a data-ga-click="Footer, go to about, text:about" href="https://github.com/about">About</a></li>
2475
2476 </ul>
2477 </div>
2478 <div class="d-flex flex-justify-center pb-6">
2479 <span class="f6 text-gray-light"></span>
2480 </div>
2481 </div>
2482
2483
2484
2485 <div id="ajax-error-message" class="ajax-error-message flash flash-error">
2486 <svg class="octicon octicon-alert" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M8.893 1.5c-.183-.31-.52-.5-.887-.5s-.703.19-.886.5L.138 13.499a.98.98 0 0 0 0 1.001c.193.31.53.501.886.501h13.964c.367 0 .704-.19.877-.5a1.03 1.03 0 0 0 .01-1.002L8.893 1.5zm.133 11.497H6.987v-2.003h2.039v2.003zm0-3.004H6.987V5.987h2.039v4.006z"/></svg>
2487 <button type="button" class="flash-close js-ajax-error-dismiss" aria-label="Dismiss error">
2488 <svg class="octicon octicon-x" viewBox="0 0 12 16" version="1.1" width="12" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M7.48 8l3.75 3.75-1.48 1.48L6 9.48l-3.75 3.75-1.48-1.48L4.52 8 .77 4.25l1.48-1.48L6 6.52l3.75-3.75 1.48 1.48L7.48 8z"/></svg>
2489 </button>
2490 You can’t perform that action at this time.
2491 </div>
2492
2493
2494 <script crossorigin="anonymous" integrity="sha512-EPrD+nddbyhpiLL8l3M8VfJpZr4J2EWQLaPXZ+6A3VDJKzS5HeZ3dkMVieHSdvIPHsMbWPyVlY42SWKoS4XTfA==" type="application/javascript" src="https://github.githubassets.com/assets/compat-bootstrap-831f12d4.js"></script>
2495 <script crossorigin="anonymous" integrity="sha512-oFBEYscCdWEyvUQehaYyaCSiKtIN4UvpfFHNpIXLUTSQ35JcacPNj86R8fgJfI1e7BOjbLZPTv1nJg3TECiMLw==" type="application/javascript" src="https://github.githubassets.com/assets/frameworks-7af24171.js"></script>
2496
2497 <script crossorigin="anonymous" async="async" integrity="sha512-b9BDH7EZq1yaR2fUH08I378zVkToScLiQ//L0gdyPviliuwpWiVFkB8uW0K8zZszdeLeBpib7wGBLkPiIFgyHg==" type="application/javascript" src="https://github.githubassets.com/assets/github-bootstrap-2a8c2b54.js"></script>
2498
2499
2500
2501 <div class="js-stale-session-flash stale-session-flash flash flash-warn flash-banner" hidden
2502 >
2503 <svg class="octicon octicon-alert" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M8.893 1.5c-.183-.31-.52-.5-.887-.5s-.703.19-.886.5L.138 13.499a.98.98 0 0 0 0 1.001c.193.31.53.501.886.501h13.964c.367 0 .704-.19.877-.5a1.03 1.03 0 0 0 .01-1.002L8.893 1.5zm.133 11.497H6.987v-2.003h2.039v2.003zm0-3.004H6.987V5.987h2.039v4.006z"/></svg>
2504 <span class="signed-in-tab-flash">You signed in with another tab or window. <a href="">Reload</a> to refresh your session.</span>
2505 <span class="signed-out-tab-flash">You signed out in another tab or window. <a href="">Reload</a> to refresh your session.</span>
2506 </div>
2507 <template id="site-details-dialog">
2508 <details class="details-reset details-overlay details-overlay-dark lh-default text-gray-dark hx_rsm" open>
2509 <summary role="button" aria-label="Close dialog"></summary>
2510 <details-dialog class="Box Box--overlay d-flex flex-column anim-fade-in fast hx_rsm-dialog hx_rsm-modal">
2511 <button class="Box-btn-octicon m-0 btn-octicon position-absolute right-0 top-0" type="button" aria-label="Close dialog" data-close-dialog>
2512 <svg class="octicon octicon-x" viewBox="0 0 12 16" version="1.1" width="12" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M7.48 8l3.75 3.75-1.48 1.48L6 9.48l-3.75 3.75-1.48-1.48L4.52 8 .77 4.25l1.48-1.48L6 6.52l3.75-3.75 1.48 1.48L7.48 8z"/></svg>
2513 </button>
2514 <div class="octocat-spinner my-6 js-details-dialog-spinner"></div>
2515 </details-dialog>
2516 </details>
2517 </template>
2518
2519 <div class="Popover js-hovercard-content position-absolute" style="display: none; outline: none;" tabindex="0">
2520 <div class="Popover-message Popover-message--bottom-left Popover-message--large Box box-shadow-large" style="width:360px;">
2521 </div>
2522 </div>
2523
2524 <div aria-live="polite" class="js-global-screen-reader-notice sr-only"></div>
2525
2526 </body>
2527 </html>
2528