annotate Tryp_V_T.py @ 30:6669fd407dc9 draft default tip

Uploaded
author johnheap
date Fri, 07 Jun 2019 11:07:05 -0400
parents b3d2d0a771e1
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
19
fe79425b1fa4 Uploaded
johnheap
parents: 9
diff changeset
1 """
fe79425b1fa4 Uploaded
johnheap
parents: 9
diff changeset
2 * Galaxy Version
fe79425b1fa4 Uploaded
johnheap
parents: 9
diff changeset
3
fe79425b1fa4 Uploaded
johnheap
parents: 9
diff changeset
4 * Copyright 2019 University of Liverpool
fe79425b1fa4 Uploaded
johnheap
parents: 9
diff changeset
5 * Author John Heap, Computational Biology Facility, UoL
fe79425b1fa4 Uploaded
johnheap
parents: 9
diff changeset
6 * Based on original scripts of Sara Silva Silva Pereira, Institute of Infection and Global Health, UoL
fe79425b1fa4 Uploaded
johnheap
parents: 9
diff changeset
7 *
fe79425b1fa4 Uploaded
johnheap
parents: 9
diff changeset
8 * Licensed under the Apache License, Version 2.0 (the "License");
fe79425b1fa4 Uploaded
johnheap
parents: 9
diff changeset
9 * you may not use this file except in compliance with the License.
fe79425b1fa4 Uploaded
johnheap
parents: 9
diff changeset
10 * You may obtain a copy of the License at
fe79425b1fa4 Uploaded
johnheap
parents: 9
diff changeset
11 *
fe79425b1fa4 Uploaded
johnheap
parents: 9
diff changeset
12 * http://www.apache.org/licenses/LICENSE-2.0
fe79425b1fa4 Uploaded
johnheap
parents: 9
diff changeset
13 *
fe79425b1fa4 Uploaded
johnheap
parents: 9
diff changeset
14 * Unless required by applicable law or agreed to in writing, software
fe79425b1fa4 Uploaded
johnheap
parents: 9
diff changeset
15 * distributed under the License is distributed on an "AS IS" BASIS,
fe79425b1fa4 Uploaded
johnheap
parents: 9
diff changeset
16 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
fe79425b1fa4 Uploaded
johnheap
parents: 9
diff changeset
17 * See the License for the specific language governing permissions and
fe79425b1fa4 Uploaded
johnheap
parents: 9
diff changeset
18 * limitations under the License.
fe79425b1fa4 Uploaded
johnheap
parents: 9
diff changeset
19 *
fe79425b1fa4 Uploaded
johnheap
parents: 9
diff changeset
20 """
fe79425b1fa4 Uploaded
johnheap
parents: 9
diff changeset
21
fe79425b1fa4 Uploaded
johnheap
parents: 9
diff changeset
22
fe79425b1fa4 Uploaded
johnheap
parents: 9
diff changeset
23 import subprocess
fe79425b1fa4 Uploaded
johnheap
parents: 9
diff changeset
24 import pandas as pd
fe79425b1fa4 Uploaded
johnheap
parents: 9
diff changeset
25 import re
fe79425b1fa4 Uploaded
johnheap
parents: 9
diff changeset
26 import os
fe79425b1fa4 Uploaded
johnheap
parents: 9
diff changeset
27 import sys
fe79425b1fa4 Uploaded
johnheap
parents: 9
diff changeset
28 import shutil
fe79425b1fa4 Uploaded
johnheap
parents: 9
diff changeset
29 # import matplotlib as mpl
fe79425b1fa4 Uploaded
johnheap
parents: 9
diff changeset
30 # mpl.use('Agg')
fe79425b1fa4 Uploaded
johnheap
parents: 9
diff changeset
31 import matplotlib.pyplot as plt
fe79425b1fa4 Uploaded
johnheap
parents: 9
diff changeset
32 import numpy as np
fe79425b1fa4 Uploaded
johnheap
parents: 9
diff changeset
33
fe79425b1fa4 Uploaded
johnheap
parents: 9
diff changeset
34
fe79425b1fa4 Uploaded
johnheap
parents: 9
diff changeset
35
fe79425b1fa4 Uploaded
johnheap
parents: 9
diff changeset
36
fe79425b1fa4 Uploaded
johnheap
parents: 9
diff changeset
37 # copies the user provided Fasta file to data/reference/file/file.fasta
fe79425b1fa4 Uploaded
johnheap
parents: 9
diff changeset
38 def uploadUserReferenceFastq(refFastq):
fe79425b1fa4 Uploaded
johnheap
parents: 9
diff changeset
39 refBase = os.path.basename(refFastq)
fe79425b1fa4 Uploaded
johnheap
parents: 9
diff changeset
40 ref = os.path.splitext(refBase)[0] # 'mydata/test.fasta' -> 'test'
fe79425b1fa4 Uploaded
johnheap
parents: 9
diff changeset
41 dir_path = os.path.dirname(os.path.realpath(__file__)) # directory of this file
fe79425b1fa4 Uploaded
johnheap
parents: 9
diff changeset
42 refDir = dir_path + "/data/Reference/" + ref #propose putting file in '/data/reference/ref/
fe79425b1fa4 Uploaded
johnheap
parents: 9
diff changeset
43 if not os.path.isdir(refDir): # if directory data/Reference/ref doesn't exist
fe79425b1fa4 Uploaded
johnheap
parents: 9
diff changeset
44 os.mkdir(refDir)
fe79425b1fa4 Uploaded
johnheap
parents: 9
diff changeset
45 refPath = refDir+"/"
fe79425b1fa4 Uploaded
johnheap
parents: 9
diff changeset
46 shutil.copy(refFastq, refPath + refBase) #copy reference file into the directory
fe79425b1fa4 Uploaded
johnheap
parents: 9
diff changeset
47 argString = "bowtie2-build " + refPath + refBase+" "+refPath+ref
fe79425b1fa4 Uploaded
johnheap
parents: 9
diff changeset
48 print("Building the bowtie2 reference files.")
fe79425b1fa4 Uploaded
johnheap
parents: 9
diff changeset
49 subprocess.call(argString, shell=True)
fe79425b1fa4 Uploaded
johnheap
parents: 9
diff changeset
50 return
fe79425b1fa4 Uploaded
johnheap
parents: 9
diff changeset
51
fe79425b1fa4 Uploaded
johnheap
parents: 9
diff changeset
52 def transcriptMapping(inputname, refFastq, forwardFN, reverseFN):
fe79425b1fa4 Uploaded
johnheap
parents: 9
diff changeset
53 # where is our Reference data?
fe79425b1fa4 Uploaded
johnheap
parents: 9
diff changeset
54 refBase = os.path.basename(refFastq)
fe79425b1fa4 Uploaded
johnheap
parents: 9
diff changeset
55 ref = os.path.splitext(refBase)[0]
fe79425b1fa4 Uploaded
johnheap
parents: 9
diff changeset
56 dir_path = os.path.dirname(os.path.realpath(__file__))
fe79425b1fa4 Uploaded
johnheap
parents: 9
diff changeset
57 refDir = dir_path + "/data/Reference/" + ref + "/"
fe79425b1fa4 Uploaded
johnheap
parents: 9
diff changeset
58 refName = refDir + ref
fe79425b1fa4 Uploaded
johnheap
parents: 9
diff changeset
59 # now have reference file so we can proceed with the transcript mapping via bowtie2
fe79425b1fa4 Uploaded
johnheap
parents: 9
diff changeset
60 argString = "bowtie2 -x "+refName+" -1 "+forwardFN+" -2 "+reverseFN+" -S "+inputname+".sam"
fe79425b1fa4 Uploaded
johnheap
parents: 9
diff changeset
61 print(argString)
fe79425b1fa4 Uploaded
johnheap
parents: 9
diff changeset
62 subprocess.call(argString, shell=True) #outputs a name.sam file
fe79425b1fa4 Uploaded
johnheap
parents: 9
diff changeset
63 return
fe79425b1fa4 Uploaded
johnheap
parents: 9
diff changeset
64
fe79425b1fa4 Uploaded
johnheap
parents: 9
diff changeset
65
fe79425b1fa4 Uploaded
johnheap
parents: 9
diff changeset
66
fe79425b1fa4 Uploaded
johnheap
parents: 9
diff changeset
67 def processSamFiles(inputname):
fe79425b1fa4 Uploaded
johnheap
parents: 9
diff changeset
68 cur_path = os.getcwd()
fe79425b1fa4 Uploaded
johnheap
parents: 9
diff changeset
69 samName = cur_path+"/"+inputname
fe79425b1fa4 Uploaded
johnheap
parents: 9
diff changeset
70 argString = "samtools view -bS "+inputname+".sam > "+samName+".bam"
fe79425b1fa4 Uploaded
johnheap
parents: 9
diff changeset
71 print(argString)
fe79425b1fa4 Uploaded
johnheap
parents: 9
diff changeset
72 subprocess.call(argString, shell=True)
fe79425b1fa4 Uploaded
johnheap
parents: 9
diff changeset
73
fe79425b1fa4 Uploaded
johnheap
parents: 9
diff changeset
74 argString = "samtools sort "+samName+".bam -o "+samName+".sorted"
fe79425b1fa4 Uploaded
johnheap
parents: 9
diff changeset
75 print("argstring = "+argString)
fe79425b1fa4 Uploaded
johnheap
parents: 9
diff changeset
76 subprocess.call(argString, shell=True)
fe79425b1fa4 Uploaded
johnheap
parents: 9
diff changeset
77
fe79425b1fa4 Uploaded
johnheap
parents: 9
diff changeset
78 argString = "samtools index "+samName+".sorted "+samName+".sorted.bai"
fe79425b1fa4 Uploaded
johnheap
parents: 9
diff changeset
79 print("argstring = " + argString)
fe79425b1fa4 Uploaded
johnheap
parents: 9
diff changeset
80 subprocess.call(argString, shell=True)
fe79425b1fa4 Uploaded
johnheap
parents: 9
diff changeset
81 return #we have saved out the relevent name.bam, name.sorted and name.sorted.bai files
fe79425b1fa4 Uploaded
johnheap
parents: 9
diff changeset
82
fe79425b1fa4 Uploaded
johnheap
parents: 9
diff changeset
83 # we will not have the .gtf file so call cufflinks without -G option
fe79425b1fa4 Uploaded
johnheap
parents: 9
diff changeset
84 def transcriptAbundance(inputname):
fe79425b1fa4 Uploaded
johnheap
parents: 9
diff changeset
85 argString = "cufflinks -o "+inputname+".cuff -u -p 8 "+inputname+".sorted"
21
1b5bf8383973 Uploaded
johnheap
parents: 19
diff changeset
86 subprocess.call(argString, shell=True)
19
fe79425b1fa4 Uploaded
johnheap
parents: 9
diff changeset
87 os.remove(inputname+".sorted") #remove name.sorted
fe79425b1fa4 Uploaded
johnheap
parents: 9
diff changeset
88 os.remove(inputname+".sorted.bai")
fe79425b1fa4 Uploaded
johnheap
parents: 9
diff changeset
89 os.remove(inputname+".bam")
fe79425b1fa4 Uploaded
johnheap
parents: 9
diff changeset
90 return
fe79425b1fa4 Uploaded
johnheap
parents: 9
diff changeset
91
fe79425b1fa4 Uploaded
johnheap
parents: 9
diff changeset
92 def transcriptsForBlast(name, refFastq):
fe79425b1fa4 Uploaded
johnheap
parents: 9
diff changeset
93 # quick and dirty just to see.
fe79425b1fa4 Uploaded
johnheap
parents: 9
diff changeset
94 refBase = os.path.basename(refFastq)
fe79425b1fa4 Uploaded
johnheap
parents: 9
diff changeset
95 ref = os.path.splitext(refBase)[0] # 'mydata/test.fasta' -> 'test'
fe79425b1fa4 Uploaded
johnheap
parents: 9
diff changeset
96 dir_path = os.path.dirname(os.path.realpath(__file__)) # directory of this file
fe79425b1fa4 Uploaded
johnheap
parents: 9
diff changeset
97 refPath = dir_path + "/data/Reference/" + ref + "/" + refBase # eg refPath = data/Reference/Trinity/Trinity.fasta
fe79425b1fa4 Uploaded
johnheap
parents: 9
diff changeset
98 # used for dirty # refPath = 'Trinity.fasta' # dirty one
26
7983a9305b53 Uploaded
johnheap
parents: 25
diff changeset
99 cur_path = os.getcwd()
7983a9305b53 Uploaded
johnheap
parents: 25
diff changeset
100 track_df = pd.read_csv(cur_path+'/' + name + '.cuff/genes.fpkm_tracking', sep='\t')
19
fe79425b1fa4 Uploaded
johnheap
parents: 9
diff changeset
101 names = track_df['locus']
fe79425b1fa4 Uploaded
johnheap
parents: 9
diff changeset
102 # print(len(names))
fe79425b1fa4 Uploaded
johnheap
parents: 9
diff changeset
103 # print(names[:5])
fe79425b1fa4 Uploaded
johnheap
parents: 9
diff changeset
104
fe79425b1fa4 Uploaded
johnheap
parents: 9
diff changeset
105 nlist = []
fe79425b1fa4 Uploaded
johnheap
parents: 9
diff changeset
106 for n in range(0,len(names)):
fe79425b1fa4 Uploaded
johnheap
parents: 9
diff changeset
107 i = names[n].find(':')
fe79425b1fa4 Uploaded
johnheap
parents: 9
diff changeset
108 nlist.append(names[n][:i])
fe79425b1fa4 Uploaded
johnheap
parents: 9
diff changeset
109 nameset = set(nlist) #get unique.
fe79425b1fa4 Uploaded
johnheap
parents: 9
diff changeset
110 with open(refPath, 'r') as myRef:
fe79425b1fa4 Uploaded
johnheap
parents: 9
diff changeset
111 refData = myRef.read()
fe79425b1fa4 Uploaded
johnheap
parents: 9
diff changeset
112 refData= refData+'\n>'
fe79425b1fa4 Uploaded
johnheap
parents: 9
diff changeset
113
fe79425b1fa4 Uploaded
johnheap
parents: 9
diff changeset
114 with open(name + '_for_blast.fa', 'w') as outfile:
fe79425b1fa4 Uploaded
johnheap
parents: 9
diff changeset
115 for trans_id in nameset:
fe79425b1fa4 Uploaded
johnheap
parents: 9
diff changeset
116 namepos = refData.find(trans_id)
fe79425b1fa4 Uploaded
johnheap
parents: 9
diff changeset
117 endpos = refData.find('>', namepos)
fe79425b1fa4 Uploaded
johnheap
parents: 9
diff changeset
118 outfile.write('>'+refData[namepos:endpos])
fe79425b1fa4 Uploaded
johnheap
parents: 9
diff changeset
119
fe79425b1fa4 Uploaded
johnheap
parents: 9
diff changeset
120 pass
fe79425b1fa4 Uploaded
johnheap
parents: 9
diff changeset
121
fe79425b1fa4 Uploaded
johnheap
parents: 9
diff changeset
122 def blastContigs(test_name,html_resource, database):
fe79425b1fa4 Uploaded
johnheap
parents: 9
diff changeset
123 db_path = database
25
c0a6a170163e Uploaded
johnheap
parents: 21
diff changeset
124 #argString = "makeblastdb - in " + db_path
c0a6a170163e Uploaded
johnheap
parents: 21
diff changeset
125 #subprocess.call(argString, shell=True)
c0a6a170163e Uploaded
johnheap
parents: 21
diff changeset
126
c0a6a170163e Uploaded
johnheap
parents: 21
diff changeset
127 argString = "blastx -db " + db_path + " -query "+test_name+"_for_blast.fa -outfmt 10 -out "+test_name+"_blast.txt"
19
fe79425b1fa4 Uploaded
johnheap
parents: 9
diff changeset
128 print(argString)
fe79425b1fa4 Uploaded
johnheap
parents: 9
diff changeset
129 returncode = subprocess.call(argString, shell=True)
fe79425b1fa4 Uploaded
johnheap
parents: 9
diff changeset
130 if returncode != 0:
fe79425b1fa4 Uploaded
johnheap
parents: 9
diff changeset
131 return "Error in blastall"
fe79425b1fa4 Uploaded
johnheap
parents: 9
diff changeset
132 blast_df = pd.read_csv(""+test_name+"_blast.txt")
fe79425b1fa4 Uploaded
johnheap
parents: 9
diff changeset
133 blast_df.columns = ['qaccver', 'saccver', 'pident', 'length', 'mismatch', 'gapopen', 'qstart', 'qend', 'sstart', 'send', 'evalue','bitscore']
fe79425b1fa4 Uploaded
johnheap
parents: 9
diff changeset
134 blastResult_df = blast_df[(blast_df['pident']>=70) & (blast_df['length'] > 100) & (blast_df['evalue'] <=0.001) ]
fe79425b1fa4 Uploaded
johnheap
parents: 9
diff changeset
135 blastResult_df = blastResult_df[['qaccver', 'saccver', 'pident', 'evalue', 'bitscore']] #query accession.version, subject accession.version, Percentage of identical matches
fe79425b1fa4 Uploaded
johnheap
parents: 9
diff changeset
136 # need to allocate the transcripts (if allocated more than once to the phylotype with least error.
fe79425b1fa4 Uploaded
johnheap
parents: 9
diff changeset
137 transcripts = blastResult_df['qaccver']
fe79425b1fa4 Uploaded
johnheap
parents: 9
diff changeset
138 b_df = pd.DataFrame(columns=['qaccver', 'saccver', 'pident', 'evalue', 'bitscore'])
fe79425b1fa4 Uploaded
johnheap
parents: 9
diff changeset
139 transSet = set(transcripts)
fe79425b1fa4 Uploaded
johnheap
parents: 9
diff changeset
140 for t in transSet:
fe79425b1fa4 Uploaded
johnheap
parents: 9
diff changeset
141 temp_df = blastResult_df[(blastResult_df['qaccver'] == t)]
fe79425b1fa4 Uploaded
johnheap
parents: 9
diff changeset
142 # get one with smallest error value
fe79425b1fa4 Uploaded
johnheap
parents: 9
diff changeset
143 #print(t + ":")
fe79425b1fa4 Uploaded
johnheap
parents: 9
diff changeset
144 #print(temp_df)
fe79425b1fa4 Uploaded
johnheap
parents: 9
diff changeset
145 temp_df = temp_df.sort_values(by=['evalue'])
fe79425b1fa4 Uploaded
johnheap
parents: 9
diff changeset
146 b_df = b_df.append(temp_df.iloc[[0]])
fe79425b1fa4 Uploaded
johnheap
parents: 9
diff changeset
147
fe79425b1fa4 Uploaded
johnheap
parents: 9
diff changeset
148 b_df.sort_values(by=['qaccver'])
fe79425b1fa4 Uploaded
johnheap
parents: 9
diff changeset
149 b_df.to_csv(test_name + '_transcript.csv')
28
be77587bdfda Uploaded
johnheap
parents: 27
diff changeset
150 b_df.to_csv(html_resource+'/'+test_name + '_transcript.csv')
be77587bdfda Uploaded
johnheap
parents: 27
diff changeset
151
19
fe79425b1fa4 Uploaded
johnheap
parents: 9
diff changeset
152 return b_df
fe79425b1fa4 Uploaded
johnheap
parents: 9
diff changeset
153
fe79425b1fa4 Uploaded
johnheap
parents: 9
diff changeset
154
fe79425b1fa4 Uploaded
johnheap
parents: 9
diff changeset
155 def createMultiHTML(tdict,composite_df):
fe79425b1fa4 Uploaded
johnheap
parents: 9
diff changeset
156 labelList = composite_df.columns.tolist()
fe79425b1fa4 Uploaded
johnheap
parents: 9
diff changeset
157 htmlString = r"<html><title>T.vivax VAP (Transcriptomic Pathway(</title><body><div style='text-align:center'><h2><i>Trypanosoma vivax</i> Variant Antigen Profile</h2><h3>"
fe79425b1fa4 Uploaded
johnheap
parents: 9
diff changeset
158 htmlString += r"Sample name: "+tdict['name']
fe79425b1fa4 Uploaded
johnheap
parents: 9
diff changeset
159 htmlString += r"<br>Transcriptomic Analysis</h3></p>"
fe79425b1fa4 Uploaded
johnheap
parents: 9
diff changeset
160 htmlString += "<p style = 'margin-left:20%; margin-right:20%'>Legend: " \
fe79425b1fa4 Uploaded
johnheap
parents: 9
diff changeset
161 "Variant Antigen Profile of a <i>Trypanosoma vivax</i> transcriptomes. " \
fe79425b1fa4 Uploaded
johnheap
parents: 9
diff changeset
162 "Weighted Frequency reflects Phylotype abundance and is expressed as " \
fe79425b1fa4 Uploaded
johnheap
parents: 9
diff changeset
163 "phylotype frequencies adjusted for the combined transcript abundance. " \
fe79425b1fa4 Uploaded
johnheap
parents: 9
diff changeset
164 "Data was produced with VAPPER-Variant Antigen Profiler " \
fe79425b1fa4 Uploaded
johnheap
parents: 9
diff changeset
165 "(Silva Pereira et al., 2019).</p> "
fe79425b1fa4 Uploaded
johnheap
parents: 9
diff changeset
166 htmlString += r"<style> table, th, tr, td {border: 1px solid black; border-collapse: collapse;}</style>"
fe79425b1fa4 Uploaded
johnheap
parents: 9
diff changeset
167
fe79425b1fa4 Uploaded
johnheap
parents: 9
diff changeset
168 header = r"<table style='width:50%;margin-left:25%;text-align:center'><tr><th>Phylotype</th>"
fe79425b1fa4 Uploaded
johnheap
parents: 9
diff changeset
169 wLists = []
fe79425b1fa4 Uploaded
johnheap
parents: 9
diff changeset
170
fe79425b1fa4 Uploaded
johnheap
parents: 9
diff changeset
171 for j in range(1,len(labelList)):
fe79425b1fa4 Uploaded
johnheap
parents: 9
diff changeset
172 wLists.append(composite_df[labelList[j]])
fe79425b1fa4 Uploaded
johnheap
parents: 9
diff changeset
173 header += r"<th>" + str(labelList[j]) + "</th>"
fe79425b1fa4 Uploaded
johnheap
parents: 9
diff changeset
174
fe79425b1fa4 Uploaded
johnheap
parents: 9
diff changeset
175 htmlString += "</tr>\n" + header
fe79425b1fa4 Uploaded
johnheap
parents: 9
diff changeset
176 tabString = ""
fe79425b1fa4 Uploaded
johnheap
parents: 9
diff changeset
177 phyList = composite_df['Phylotype']
fe79425b1fa4 Uploaded
johnheap
parents: 9
diff changeset
178
fe79425b1fa4 Uploaded
johnheap
parents: 9
diff changeset
179
fe79425b1fa4 Uploaded
johnheap
parents: 9
diff changeset
180
fe79425b1fa4 Uploaded
johnheap
parents: 9
diff changeset
181 for i in range(0, len(composite_df)):
fe79425b1fa4 Uploaded
johnheap
parents: 9
diff changeset
182 tabString += "<tr><td>" + str(phyList[i]) + "</td>"
fe79425b1fa4 Uploaded
johnheap
parents: 9
diff changeset
183 for j in range(0,len(labelList)-1):
fe79425b1fa4 Uploaded
johnheap
parents: 9
diff changeset
184 #print(j)
fe79425b1fa4 Uploaded
johnheap
parents: 9
diff changeset
185 f = format(wLists[j][i], '.4f')
fe79425b1fa4 Uploaded
johnheap
parents: 9
diff changeset
186 tabString += "<td>" + str(f) + "</td>"
fe79425b1fa4 Uploaded
johnheap
parents: 9
diff changeset
187 tabString += "</tr>\n"
fe79425b1fa4 Uploaded
johnheap
parents: 9
diff changeset
188
fe79425b1fa4 Uploaded
johnheap
parents: 9
diff changeset
189 htmlString += tabString + "</table><br><br><br><br><br>"
fe79425b1fa4 Uploaded
johnheap
parents: 9
diff changeset
190 htmlString += r"<h3>Weighted Relative Frequencies of Detected Phylotypes.</h3>"
fe79425b1fa4 Uploaded
johnheap
parents: 9
diff changeset
191 imgString = r"<img src = '"+ tdict['name']+"_phylotypes.png' alt='Bar chart of phylotype variation' style='max-width:100%'><br><br>"
fe79425b1fa4 Uploaded
johnheap
parents: 9
diff changeset
192 htmlString += imgString
fe79425b1fa4 Uploaded
johnheap
parents: 9
diff changeset
193
fe79425b1fa4 Uploaded
johnheap
parents: 9
diff changeset
194 with open(tdict['html_file'], "w") as htmlfile:
fe79425b1fa4 Uploaded
johnheap
parents: 9
diff changeset
195 htmlfile.write(htmlString)
fe79425b1fa4 Uploaded
johnheap
parents: 9
diff changeset
196
fe79425b1fa4 Uploaded
johnheap
parents: 9
diff changeset
197
fe79425b1fa4 Uploaded
johnheap
parents: 9
diff changeset
198 def createHTML(tdict,sum_df):
fe79425b1fa4 Uploaded
johnheap
parents: 9
diff changeset
199 #assumes imgs are heatmap.png, dheatmap.png, vapPCA.png and already in htmlresource
fe79425b1fa4 Uploaded
johnheap
parents: 9
diff changeset
200 htmlString = r"<html><title>T.vivax VAP (Transcriptomic Pathway(</title><body><div style='text-align:center'><h2><i>Trypanosoma vivax</i> Variant Antigen Profile</h2><h3>"
fe79425b1fa4 Uploaded
johnheap
parents: 9
diff changeset
201 htmlString += r"Sample name: "+tdict['name']
fe79425b1fa4 Uploaded
johnheap
parents: 9
diff changeset
202 htmlString += r"<br>Transcriptomic Analysis</h3></p>"
fe79425b1fa4 Uploaded
johnheap
parents: 9
diff changeset
203 htmlString += "<p style = 'margin-left:20%; margin-right:20%'>Legend: " \
fe79425b1fa4 Uploaded
johnheap
parents: 9
diff changeset
204 "Variant Antigen Profile of a <i>Trypanosoma vivax</i> transcriptome. " \
fe79425b1fa4 Uploaded
johnheap
parents: 9
diff changeset
205 "Weighted Frequency reflects Phylotype abundance and is expressed as " \
fe79425b1fa4 Uploaded
johnheap
parents: 9
diff changeset
206 "phylotype frequencies adjusted for the combined transcript abundance. " \
fe79425b1fa4 Uploaded
johnheap
parents: 9
diff changeset
207 "Data was produced with VAPPER-Variant Antigen Profiler " \
fe79425b1fa4 Uploaded
johnheap
parents: 9
diff changeset
208 "(Silva Pereira et al., 2019).</p> "
fe79425b1fa4 Uploaded
johnheap
parents: 9
diff changeset
209 htmlString += r"<style> table, th, tr, td {border: 1px solid black; border-collapse: collapse;}</style>"
fe79425b1fa4 Uploaded
johnheap
parents: 9
diff changeset
210
fe79425b1fa4 Uploaded
johnheap
parents: 9
diff changeset
211 htmlString += r"<table style='width:50%;table-layout: auto; margin-left:25%;text-align:center'><tr><th>Phylotype</th>" \
fe79425b1fa4 Uploaded
johnheap
parents: 9
diff changeset
212 r"<th>Combined FPKM</th><th>Weighted Frequency</th></tr>"
fe79425b1fa4 Uploaded
johnheap
parents: 9
diff changeset
213 tabString = ""
fe79425b1fa4 Uploaded
johnheap
parents: 9
diff changeset
214 # flush out table with correct values
fe79425b1fa4 Uploaded
johnheap
parents: 9
diff changeset
215 phySeries = sum_df['Phylotype']
fe79425b1fa4 Uploaded
johnheap
parents: 9
diff changeset
216 # sacSeries = sum_df['saccver']
fe79425b1fa4 Uploaded
johnheap
parents: 9
diff changeset
217 fSeries = sum_df['FPKM']
fe79425b1fa4 Uploaded
johnheap
parents: 9
diff changeset
218 total = fSeries.sum()
fe79425b1fa4 Uploaded
johnheap
parents: 9
diff changeset
219 # print("Total="+str(total))
fe79425b1fa4 Uploaded
johnheap
parents: 9
diff changeset
220 for i in range(0, len(sum_df)):
fe79425b1fa4 Uploaded
johnheap
parents: 9
diff changeset
221 # print(phySeries[i])
fe79425b1fa4 Uploaded
johnheap
parents: 9
diff changeset
222 f = format(fSeries[i], '.2f')
fe79425b1fa4 Uploaded
johnheap
parents: 9
diff changeset
223 w = format(fSeries[i]/total, '.2f')
fe79425b1fa4 Uploaded
johnheap
parents: 9
diff changeset
224
fe79425b1fa4 Uploaded
johnheap
parents: 9
diff changeset
225 #w = format(weightList[i], '.4f')
fe79425b1fa4 Uploaded
johnheap
parents: 9
diff changeset
226
fe79425b1fa4 Uploaded
johnheap
parents: 9
diff changeset
227 tabString += "<tr><td>" + str(phySeries[i]) + "</td><td>" + str(f) + "</td><td>"+str(w)+"</tr>"
fe79425b1fa4 Uploaded
johnheap
parents: 9
diff changeset
228 htmlString += tabString + "</table><br><br><br><br><br>"
fe79425b1fa4 Uploaded
johnheap
parents: 9
diff changeset
229 htmlString += r"<h3>Weighted Relative Frequencies of Detected Phylotypes.</h3>"
fe79425b1fa4 Uploaded
johnheap
parents: 9
diff changeset
230 imgString = r"<img src = '"+ tdict['name']+"_phylotypes.png' alt='Bar chart of phylotype variation' style='max-width:100%'><br><br>"
fe79425b1fa4 Uploaded
johnheap
parents: 9
diff changeset
231 htmlString += imgString
fe79425b1fa4 Uploaded
johnheap
parents: 9
diff changeset
232
29
b3d2d0a771e1 Uploaded
johnheap
parents: 28
diff changeset
233 with open(tdict['html_file'], "w") as htmlfile:
19
fe79425b1fa4 Uploaded
johnheap
parents: 9
diff changeset
234 htmlfile.write(htmlString)
fe79425b1fa4 Uploaded
johnheap
parents: 9
diff changeset
235
fe79425b1fa4 Uploaded
johnheap
parents: 9
diff changeset
236
fe79425b1fa4 Uploaded
johnheap
parents: 9
diff changeset
237
fe79425b1fa4 Uploaded
johnheap
parents: 9
diff changeset
238 def getPhyloNumber(sac):
fe79425b1fa4 Uploaded
johnheap
parents: 9
diff changeset
239 i = sac.find('_')
fe79425b1fa4 Uploaded
johnheap
parents: 9
diff changeset
240 return int(sac[1:i])
fe79425b1fa4 Uploaded
johnheap
parents: 9
diff changeset
241
fe79425b1fa4 Uploaded
johnheap
parents: 9
diff changeset
242 def combineFPMK(tdict):
27
92c5ecb025b6 Uploaded
johnheap
parents: 26
diff changeset
243 # dir_path = os.path.dirname(os.path.realpath(__file__))+'/'
92c5ecb025b6 Uploaded
johnheap
parents: 26
diff changeset
244 cur_path = os.getcwd()+'/'
92c5ecb025b6 Uploaded
johnheap
parents: 26
diff changeset
245 fpkm_df = pd.read_csv(cur_path+tdict['name']+'.cuff/genes.fpkm_tracking', sep='\t')
19
fe79425b1fa4 Uploaded
johnheap
parents: 9
diff changeset
246
fe79425b1fa4 Uploaded
johnheap
parents: 9
diff changeset
247 #fpkm_df = pd.read_csv('genes.fpkm_tracking',sep='\t')
fe79425b1fa4 Uploaded
johnheap
parents: 9
diff changeset
248 #print(fpkm_df.head())
fe79425b1fa4 Uploaded
johnheap
parents: 9
diff changeset
249 fpkm_df['locus'] = fpkm_df['locus'].apply(lambda names: names[:names.find(':')])
fe79425b1fa4 Uploaded
johnheap
parents: 9
diff changeset
250 #print(fpkm_df.head())
21
1b5bf8383973 Uploaded
johnheap
parents: 19
diff changeset
251
27
92c5ecb025b6 Uploaded
johnheap
parents: 26
diff changeset
252 reducedBlast_df = pd.read_csv(cur_path + tdict['name']+'_transcript.csv')
19
fe79425b1fa4 Uploaded
johnheap
parents: 9
diff changeset
253 # reducedBlast_df = pd.read_csv('TrinityVT_transcript.csv')
fe79425b1fa4 Uploaded
johnheap
parents: 9
diff changeset
254 saccverSet = set(reducedBlast_df['saccver'])
fe79425b1fa4 Uploaded
johnheap
parents: 9
diff changeset
255 saccverList = list(saccverSet)
fe79425b1fa4 Uploaded
johnheap
parents: 9
diff changeset
256 saccverList.sort()
fe79425b1fa4 Uploaded
johnheap
parents: 9
diff changeset
257 # print(saccverList[:5])
fe79425b1fa4 Uploaded
johnheap
parents: 9
diff changeset
258 new_df = pd.DataFrame(columns=['qaccver','saccver','FPKM'])
fe79425b1fa4 Uploaded
johnheap
parents: 9
diff changeset
259 for sv in saccverList:
fe79425b1fa4 Uploaded
johnheap
parents: 9
diff changeset
260 #print(sv)
fe79425b1fa4 Uploaded
johnheap
parents: 9
diff changeset
261 temp_df = reducedBlast_df[reducedBlast_df['saccver'] == sv]
fe79425b1fa4 Uploaded
johnheap
parents: 9
diff changeset
262 qList = list(temp_df['qaccver'])
fe79425b1fa4 Uploaded
johnheap
parents: 9
diff changeset
263 for q in qList:
fe79425b1fa4 Uploaded
johnheap
parents: 9
diff changeset
264 f_df = fpkm_df[(fpkm_df['locus'] == q)]
fe79425b1fa4 Uploaded
johnheap
parents: 9
diff changeset
265 if len(f_df) > 1:
fe79425b1fa4 Uploaded
johnheap
parents: 9
diff changeset
266 print('WARNING MULTIPLE FPKM')
fe79425b1fa4 Uploaded
johnheap
parents: 9
diff changeset
267 new_fpkm=list(f_df['FPKM'])
fe79425b1fa4 Uploaded
johnheap
parents: 9
diff changeset
268 f = (new_fpkm[0])
fe79425b1fa4 Uploaded
johnheap
parents: 9
diff changeset
269 # print(f)
fe79425b1fa4 Uploaded
johnheap
parents: 9
diff changeset
270 new_df = new_df.append({'qaccver': q, 'saccver': sv, 'FPKM': f}, ignore_index=True)
fe79425b1fa4 Uploaded
johnheap
parents: 9
diff changeset
271 FPKMsum_df = new_df.groupby('saccver')['FPKM'].sum().reset_index()
fe79425b1fa4 Uploaded
johnheap
parents: 9
diff changeset
272
fe79425b1fa4 Uploaded
johnheap
parents: 9
diff changeset
273 FPKMsum_df['Phylotype'] = FPKMsum_df.apply(lambda row: getPhyloNumber(row['saccver']), axis=1)
fe79425b1fa4 Uploaded
johnheap
parents: 9
diff changeset
274 FPKMsum_df = FPKMsum_df.sort_values(by=['Phylotype'])
fe79425b1fa4 Uploaded
johnheap
parents: 9
diff changeset
275 FPKMsum_df = FPKMsum_df.reset_index(drop=True)
fe79425b1fa4 Uploaded
johnheap
parents: 9
diff changeset
276
fe79425b1fa4 Uploaded
johnheap
parents: 9
diff changeset
277 # print(FPKMsum_df)
fe79425b1fa4 Uploaded
johnheap
parents: 9
diff changeset
278 FPKMsum_df.to_csv('FPKM_sum.csv')
fe79425b1fa4 Uploaded
johnheap
parents: 9
diff changeset
279 FPKMsum2_df = FPKMsum_df.groupby('Phylotype')['FPKM'].sum().reset_index()
fe79425b1fa4 Uploaded
johnheap
parents: 9
diff changeset
280 FPKMsum2_df = FPKMsum2_df.sort_values(by=['Phylotype'])
fe79425b1fa4 Uploaded
johnheap
parents: 9
diff changeset
281
fe79425b1fa4 Uploaded
johnheap
parents: 9
diff changeset
282 # print(FPKMsum2_df)
fe79425b1fa4 Uploaded
johnheap
parents: 9
diff changeset
283 FPKMsum2_df.to_csv('FPKM_sum2.csv') # in case more than one entry for a particular phylotype
28
be77587bdfda Uploaded
johnheap
parents: 27
diff changeset
284 htmlres = tdict['html_resource']
be77587bdfda Uploaded
johnheap
parents: 27
diff changeset
285 FPKMsum2_df.to_csv(htmlres+'/FPKM_sum2.csv') # in case more than one entry for a particular phylotype
be77587bdfda Uploaded
johnheap
parents: 27
diff changeset
286
19
fe79425b1fa4 Uploaded
johnheap
parents: 9
diff changeset
287 return FPKMsum_df, FPKMsum2_df
fe79425b1fa4 Uploaded
johnheap
parents: 9
diff changeset
288
fe79425b1fa4 Uploaded
johnheap
parents: 9
diff changeset
289
fe79425b1fa4 Uploaded
johnheap
parents: 9
diff changeset
290
fe79425b1fa4 Uploaded
johnheap
parents: 9
diff changeset
291 def normalisef(f,max):
fe79425b1fa4 Uploaded
johnheap
parents: 9
diff changeset
292 return f/max
fe79425b1fa4 Uploaded
johnheap
parents: 9
diff changeset
293
fe79425b1fa4 Uploaded
johnheap
parents: 9
diff changeset
294 def getComposite_sum2(nameList,sum2_dfs):
fe79425b1fa4 Uploaded
johnheap
parents: 9
diff changeset
295 # lets get a composite sum2_df from all of the sum2_dfs
fe79425b1fa4 Uploaded
johnheap
parents: 9
diff changeset
296 phyList = []
fe79425b1fa4 Uploaded
johnheap
parents: 9
diff changeset
297
fe79425b1fa4 Uploaded
johnheap
parents: 9
diff changeset
298 for i in range(0, len(sum2_dfs)):
fe79425b1fa4 Uploaded
johnheap
parents: 9
diff changeset
299 total = sum2_dfs[i]['FPKM'].sum()
fe79425b1fa4 Uploaded
johnheap
parents: 9
diff changeset
300 sum2_dfs[i]['w'] = sum2_dfs[i].apply(lambda row: normalisef(row['FPKM'], total), axis=1)
fe79425b1fa4 Uploaded
johnheap
parents: 9
diff changeset
301 pSeries = sum2_dfs[i]['Phylotype']
fe79425b1fa4 Uploaded
johnheap
parents: 9
diff changeset
302 for p in pSeries:
fe79425b1fa4 Uploaded
johnheap
parents: 9
diff changeset
303 phyList.append(p) # get all the phylotypes in this one
fe79425b1fa4 Uploaded
johnheap
parents: 9
diff changeset
304 phyList = list(set(phyList))
fe79425b1fa4 Uploaded
johnheap
parents: 9
diff changeset
305 phyList.sort()
fe79425b1fa4 Uploaded
johnheap
parents: 9
diff changeset
306 composite_sum2_df = pd.DataFrame(phyList, columns=['Phylotype'])
fe79425b1fa4 Uploaded
johnheap
parents: 9
diff changeset
307 for i in range(0, len(sum2_dfs)):
fe79425b1fa4 Uploaded
johnheap
parents: 9
diff changeset
308 wList = []
fe79425b1fa4 Uploaded
johnheap
parents: 9
diff changeset
309 pindf = list(sum2_dfs[i]['Phylotype'])
fe79425b1fa4 Uploaded
johnheap
parents: 9
diff changeset
310 # print(pindf)
fe79425b1fa4 Uploaded
johnheap
parents: 9
diff changeset
311 for p in phyList:
fe79425b1fa4 Uploaded
johnheap
parents: 9
diff changeset
312 if p in pindf:
fe79425b1fa4 Uploaded
johnheap
parents: 9
diff changeset
313 df = sum2_dfs[i]
fe79425b1fa4 Uploaded
johnheap
parents: 9
diff changeset
314 w = df.loc[df['Phylotype'] == p, 'w'].iloc[0]
fe79425b1fa4 Uploaded
johnheap
parents: 9
diff changeset
315 else:
fe79425b1fa4 Uploaded
johnheap
parents: 9
diff changeset
316 w = 0
fe79425b1fa4 Uploaded
johnheap
parents: 9
diff changeset
317 wList.append(w)
fe79425b1fa4 Uploaded
johnheap
parents: 9
diff changeset
318 composite_sum2_df[nameList[i]] = wList
fe79425b1fa4 Uploaded
johnheap
parents: 9
diff changeset
319 #print(composite_sum2_df)
fe79425b1fa4 Uploaded
johnheap
parents: 9
diff changeset
320 #composite_sum2_df.to_csv('composite.csv')
fe79425b1fa4 Uploaded
johnheap
parents: 9
diff changeset
321 return composite_sum2_df
fe79425b1fa4 Uploaded
johnheap
parents: 9
diff changeset
322
fe79425b1fa4 Uploaded
johnheap
parents: 9
diff changeset
323
fe79425b1fa4 Uploaded
johnheap
parents: 9
diff changeset
324 def doMultiBarChart(tdict, composite_df): #array of multiple sum2_dfs
fe79425b1fa4 Uploaded
johnheap
parents: 9
diff changeset
325 labelList = composite_df.columns.tolist()
fe79425b1fa4 Uploaded
johnheap
parents: 9
diff changeset
326 sampnum = len(labelList)-1
fe79425b1fa4 Uploaded
johnheap
parents: 9
diff changeset
327 # need to arrange bars
fe79425b1fa4 Uploaded
johnheap
parents: 9
diff changeset
328 # number of phylotype = len(composite_df)
fe79425b1fa4 Uploaded
johnheap
parents: 9
diff changeset
329 #number of bars = (len(labelist)-1) +1 for space
fe79425b1fa4 Uploaded
johnheap
parents: 9
diff changeset
330 # ytick needs to ne
fe79425b1fa4 Uploaded
johnheap
parents: 9
diff changeset
331
fe79425b1fa4 Uploaded
johnheap
parents: 9
diff changeset
332 cmap = plt.cm.get_cmap('tab10')
fe79425b1fa4 Uploaded
johnheap
parents: 9
diff changeset
333 palette = [cmap(i) for i in range(cmap.N)]
fe79425b1fa4 Uploaded
johnheap
parents: 9
diff changeset
334 title = "Legend: Variant Antigen Profile of a $\itTrypanosoma$ $\itvivax$ transcriptomes. " \
fe79425b1fa4 Uploaded
johnheap
parents: 9
diff changeset
335 "Phylotype abundance is expressed as phylotype frequencies adjusted " \
fe79425b1fa4 Uploaded
johnheap
parents: 9
diff changeset
336 "for combined transcript abundance. " \
fe79425b1fa4 Uploaded
johnheap
parents: 9
diff changeset
337 "Data was produced with VAPPER-Variant Antigen Profiler (Silva Pereira et al., 2019)."
fe79425b1fa4 Uploaded
johnheap
parents: 9
diff changeset
338 width = 0.6
fe79425b1fa4 Uploaded
johnheap
parents: 9
diff changeset
339 ind = np.arange(width*sampnum/2, len(composite_df)*width*(sampnum+1), width*(sampnum+1))
fe79425b1fa4 Uploaded
johnheap
parents: 9
diff changeset
340 #print(ind)
fe79425b1fa4 Uploaded
johnheap
parents: 9
diff changeset
341 ysize = len(composite_df)*0.4
fe79425b1fa4 Uploaded
johnheap
parents: 9
diff changeset
342
fe79425b1fa4 Uploaded
johnheap
parents: 9
diff changeset
343 fig, ax = plt.subplots(figsize=(10,ysize))
fe79425b1fa4 Uploaded
johnheap
parents: 9
diff changeset
344
fe79425b1fa4 Uploaded
johnheap
parents: 9
diff changeset
345
fe79425b1fa4 Uploaded
johnheap
parents: 9
diff changeset
346 for s in range(1, len(labelList)):
fe79425b1fa4 Uploaded
johnheap
parents: 9
diff changeset
347 ax.barh(ind, composite_df[labelList[s]], width, color=palette[s], label=labelList[s])
fe79425b1fa4 Uploaded
johnheap
parents: 9
diff changeset
348 ind = ind + width
fe79425b1fa4 Uploaded
johnheap
parents: 9
diff changeset
349
fe79425b1fa4 Uploaded
johnheap
parents: 9
diff changeset
350 ax.set(yticks=np.arange(width*(sampnum+2)/2, len(composite_df)*width*(sampnum+1), width*(sampnum+1)), yticklabels=composite_df['Phylotype']) # , ylim=[(len(labelList)-1) * width - 1, len(composite_df)])
fe79425b1fa4 Uploaded
johnheap
parents: 9
diff changeset
351 ax.legend()
fe79425b1fa4 Uploaded
johnheap
parents: 9
diff changeset
352
fe79425b1fa4 Uploaded
johnheap
parents: 9
diff changeset
353
fe79425b1fa4 Uploaded
johnheap
parents: 9
diff changeset
354 ax.set_ylabel('Phylotype')
fe79425b1fa4 Uploaded
johnheap
parents: 9
diff changeset
355 ax.invert_yaxis() # labels read top-to-bottom
fe79425b1fa4 Uploaded
johnheap
parents: 9
diff changeset
356 ax.set_xlabel('Weighted Phylotype Frequency')
fe79425b1fa4 Uploaded
johnheap
parents: 9
diff changeset
357
fe79425b1fa4 Uploaded
johnheap
parents: 9
diff changeset
358 # plt.text(-0.3, -0.15, title, va="top", wrap="True")
fe79425b1fa4 Uploaded
johnheap
parents: 9
diff changeset
359 #plt.tight_layout()
fe79425b1fa4 Uploaded
johnheap
parents: 9
diff changeset
360
fe79425b1fa4 Uploaded
johnheap
parents: 9
diff changeset
361 plt.subplots_adjust(bottom=0.1, top=0.92, left=0.15, right=0.9)
fe79425b1fa4 Uploaded
johnheap
parents: 9
diff changeset
362 ax.set_title(title, x=0, wrap='True',ha='left',)
fe79425b1fa4 Uploaded
johnheap
parents: 9
diff changeset
363
fe79425b1fa4 Uploaded
johnheap
parents: 9
diff changeset
364 plt.savefig(tdict['html_resource'] + tdict['name']+"_phylotypes.png")
fe79425b1fa4 Uploaded
johnheap
parents: 9
diff changeset
365 if tdict['pdf'] == 'PDF_Yes':
fe79425b1fa4 Uploaded
johnheap
parents: 9
diff changeset
366 plt.savefig(tdict['html_resource'] + tdict['name']+"phylotypes.pdf")
27
92c5ecb025b6 Uploaded
johnheap
parents: 26
diff changeset
367 # plt.show()
19
fe79425b1fa4 Uploaded
johnheap
parents: 9
diff changeset
368 pass
fe79425b1fa4 Uploaded
johnheap
parents: 9
diff changeset
369
fe79425b1fa4 Uploaded
johnheap
parents: 9
diff changeset
370
fe79425b1fa4 Uploaded
johnheap
parents: 9
diff changeset
371
fe79425b1fa4 Uploaded
johnheap
parents: 9
diff changeset
372 def doBarChart(tdict, sum2_df):
fe79425b1fa4 Uploaded
johnheap
parents: 9
diff changeset
373 cmap = plt.cm.get_cmap('tab20')
fe79425b1fa4 Uploaded
johnheap
parents: 9
diff changeset
374 palette = [cmap(i) for i in range(cmap.N)]
fe79425b1fa4 Uploaded
johnheap
parents: 9
diff changeset
375 title = "Legend: Variant Antigen Profile of a $\itTrypanosoma$ $\itvivax$ transcriptome. " \
fe79425b1fa4 Uploaded
johnheap
parents: 9
diff changeset
376 "Phylotype abundance is expressed as phylotype frequencies adjusted " \
fe79425b1fa4 Uploaded
johnheap
parents: 9
diff changeset
377 "for combined transcript abundance. " \
fe79425b1fa4 Uploaded
johnheap
parents: 9
diff changeset
378 "Data was produced with VAPPER-Variant Antigen Profiler (Silva Pereira et al., 2019)."
fe79425b1fa4 Uploaded
johnheap
parents: 9
diff changeset
379 # get a list of phylotype, create equivalent of saccver, get a list of
fe79425b1fa4 Uploaded
johnheap
parents: 9
diff changeset
380 maxFPKM = sum2_df['FPKM'].max()
fe79425b1fa4 Uploaded
johnheap
parents: 9
diff changeset
381 total = sum2_df['FPKM'].sum()
fe79425b1fa4 Uploaded
johnheap
parents: 9
diff changeset
382
fe79425b1fa4 Uploaded
johnheap
parents: 9
diff changeset
383 sum2_df['Normalised'] = sum2_df.apply(lambda row: normalisef(row['FPKM'], maxFPKM),axis=1)
fe79425b1fa4 Uploaded
johnheap
parents: 9
diff changeset
384 sum2_df['Weighted'] = sum2_df.apply(lambda row: normalisef(row['FPKM'], total),axis=1)
fe79425b1fa4 Uploaded
johnheap
parents: 9
diff changeset
385 pList = sum2_df['Phylotype']
fe79425b1fa4 Uploaded
johnheap
parents: 9
diff changeset
386 phList = []
fe79425b1fa4 Uploaded
johnheap
parents: 9
diff changeset
387 for p in pList:
fe79425b1fa4 Uploaded
johnheap
parents: 9
diff changeset
388 phList.append(str(p))
fe79425b1fa4 Uploaded
johnheap
parents: 9
diff changeset
389
fe79425b1fa4 Uploaded
johnheap
parents: 9
diff changeset
390 fList = sum2_df['Weighted']
fe79425b1fa4 Uploaded
johnheap
parents: 9
diff changeset
391 ysize = len(phList)*0.3
fe79425b1fa4 Uploaded
johnheap
parents: 9
diff changeset
392 fig, ax = plt.subplots(figsize=(10,ysize))
fe79425b1fa4 Uploaded
johnheap
parents: 9
diff changeset
393
fe79425b1fa4 Uploaded
johnheap
parents: 9
diff changeset
394 ax.barh(phList, fList, color=palette)
fe79425b1fa4 Uploaded
johnheap
parents: 9
diff changeset
395 ax.set_ylabel('Phylotype')
fe79425b1fa4 Uploaded
johnheap
parents: 9
diff changeset
396 ax.invert_yaxis() # labels read top-to-bottom
fe79425b1fa4 Uploaded
johnheap
parents: 9
diff changeset
397 ax.set_xlabel('Weighted Phylotype Frequency')
fe79425b1fa4 Uploaded
johnheap
parents: 9
diff changeset
398
fe79425b1fa4 Uploaded
johnheap
parents: 9
diff changeset
399 # plt.text(-0.3, -0.15, title, va="top", wrap="True")
fe79425b1fa4 Uploaded
johnheap
parents: 9
diff changeset
400 #plt.tight_layout()
fe79425b1fa4 Uploaded
johnheap
parents: 9
diff changeset
401 plt.subplots_adjust(bottom=0.1, top=0.9, left=0.15, right=0.9)
fe79425b1fa4 Uploaded
johnheap
parents: 9
diff changeset
402 ax.set_title(title, x=0, wrap='True',ha='left',)
fe79425b1fa4 Uploaded
johnheap
parents: 9
diff changeset
403
25
c0a6a170163e Uploaded
johnheap
parents: 21
diff changeset
404 plt.savefig(tdict['html_resource'] + '/' + tdict['name']+"_phylotypes.png")
19
fe79425b1fa4 Uploaded
johnheap
parents: 9
diff changeset
405 if tdict['pdf'] == 'PDF_Yes':
25
c0a6a170163e Uploaded
johnheap
parents: 21
diff changeset
406 plt.savefig(tdict['html_resource'] + '/' + tdict['name']+"phylotypes.pdf")
19
fe79425b1fa4 Uploaded
johnheap
parents: 9
diff changeset
407 # plt.show()
fe79425b1fa4 Uploaded
johnheap
parents: 9
diff changeset
408 pass
fe79425b1fa4 Uploaded
johnheap
parents: 9
diff changeset
409
fe79425b1fa4 Uploaded
johnheap
parents: 9
diff changeset
410 # argdict = {'name':2, 'pdfexport': 3, 'refFastq': 4, 'forward': 5, 'reverse': 6, 'html_file': 7, 'html_resource': 8}
fe79425b1fa4 Uploaded
johnheap
parents: 9
diff changeset
411
fe79425b1fa4 Uploaded
johnheap
parents: 9
diff changeset
412 def transcriptomicProcess(args,argdict):
21
1b5bf8383973 Uploaded
johnheap
parents: 19
diff changeset
413 dir_path = os.path.dirname(os.path.realpath(__file__))
19
fe79425b1fa4 Uploaded
johnheap
parents: 9
diff changeset
414 tdict = {}
fe79425b1fa4 Uploaded
johnheap
parents: 9
diff changeset
415 tdict['name'] = args[argdict['name']]
fe79425b1fa4 Uploaded
johnheap
parents: 9
diff changeset
416 tdict['refFastq'] = args[argdict['refFastq']]
fe79425b1fa4 Uploaded
johnheap
parents: 9
diff changeset
417 tdict['forward'] = args[argdict['forward']]
fe79425b1fa4 Uploaded
johnheap
parents: 9
diff changeset
418 tdict['reverse'] = args[argdict['reverse']]
21
1b5bf8383973 Uploaded
johnheap
parents: 19
diff changeset
419 dir_path = os.path.dirname(os.path.realpath(__file__))
1b5bf8383973 Uploaded
johnheap
parents: 19
diff changeset
420 tdict['vivax_trans_database'] = dir_path+'/data/vivax/Database/Phylotype_typeseqs.fas'
19
fe79425b1fa4 Uploaded
johnheap
parents: 9
diff changeset
421 tdict['pdf'] = args[argdict['pdfexport']]
fe79425b1fa4 Uploaded
johnheap
parents: 9
diff changeset
422 tdict['html_file'] = args[argdict['html_file']]
fe79425b1fa4 Uploaded
johnheap
parents: 9
diff changeset
423 tdict['html_resource'] = args[argdict['html_resource']]
fe79425b1fa4 Uploaded
johnheap
parents: 9
diff changeset
424
fe79425b1fa4 Uploaded
johnheap
parents: 9
diff changeset
425 uploadUserReferenceFastq(tdict['refFastq'])
fe79425b1fa4 Uploaded
johnheap
parents: 9
diff changeset
426 transcriptMapping(tdict['name'], tdict['refFastq'], tdict['forward'], tdict['reverse']) #uses bowtie
fe79425b1fa4 Uploaded
johnheap
parents: 9
diff changeset
427 processSamFiles(tdict['name']) #uses samtools
fe79425b1fa4 Uploaded
johnheap
parents: 9
diff changeset
428 transcriptAbundance(tdict['name']) #uses cufflinks -> ?.cuff/*.*
fe79425b1fa4 Uploaded
johnheap
parents: 9
diff changeset
429 transcriptsForBlast(tdict['name'], tdict['refFastq']) #creates name+4blast.fa
21
1b5bf8383973 Uploaded
johnheap
parents: 19
diff changeset
430 blastContigs(tdict['name'], tdict['html_resource'], tdict['vivax_trans_database'])
19
fe79425b1fa4 Uploaded
johnheap
parents: 9
diff changeset
431 sum_df, sum2_df = combineFPMK(tdict)
fe79425b1fa4 Uploaded
johnheap
parents: 9
diff changeset
432 doBarChart(tdict, sum2_df)
fe79425b1fa4 Uploaded
johnheap
parents: 9
diff changeset
433 createHTML(tdict, sum_df)
fe79425b1fa4 Uploaded
johnheap
parents: 9
diff changeset
434
fe79425b1fa4 Uploaded
johnheap
parents: 9
diff changeset
435
fe79425b1fa4 Uploaded
johnheap
parents: 9
diff changeset
436 if __name__ == "__main__":
fe79425b1fa4 Uploaded
johnheap
parents: 9
diff changeset
437 exit()
fe79425b1fa4 Uploaded
johnheap
parents: 9
diff changeset
438
fe79425b1fa4 Uploaded
johnheap
parents: 9
diff changeset
439