comparison commons/core/parsing/VarscanHitForGnpSNP.py @ 38:2c0c0a89fad7

Uploaded
author m-zytnicki
date Thu, 02 May 2013 09:56:47 -0400
parents 769e306b7933
children
comparison
equal deleted inserted replaced
37:d22fadc825e3 38:2c0c0a89fad7
1 # Copyright INRA (Institut National de la Recherche Agronomique)
2 # http://www.inra.fr
3 # http://urgi.versailles.inra.fr
4 #
5 # This software is governed by the CeCILL license under French law and
6 # abiding by the rules of distribution of free software. You can use,
7 # modify and/ or redistribute the software under the terms of the CeCILL
8 # license as circulated by CEA, CNRS and INRIA at the following URL
9 # "http://www.cecill.info".
10 #
11 # As a counterpart to the access to the source code and rights to copy,
12 # modify and redistribute granted by the license, users are provided only
13 # with a limited warranty and the software's author, the holder of the
14 # economic rights, and the successive licensors have only limited
15 # liability.
16 #
17 # In this respect, the user's attention is drawn to the risks associated
18 # with loading, using, modifying and/or developing or reproducing the
19 # software by the user in light of its specific status of free software,
20 # that may mean that it is complicated to manipulate, and that also
21 # therefore means that it is reserved for developers and experienced
22 # professionals having in-depth computer knowledge. Users are therefore
23 # encouraged to load and test the software's suitability as regards their
24 # requirements in conditions enabling the security of their systems and/or
25 # data to be ensured and, more generally, to use and operate it in the
26 # same conditions as regards security.
27 #
28 # The fact that you are presently reading this means that you have had
29 # knowledge of the CeCILL license and that you accept its terms.
30
31
32 from commons.core.checker.CheckerException import CheckerException
33 from commons.core.parsing.VarscanHit import VarscanHit
34 import re
35
36 class VarscanHitForGnpSNP(VarscanHit):
37
38 def __init__(self):
39 VarscanHit.__init__(self)
40 self._reads1 = ''
41 self._reads2 = ''
42 self._varFreq = ''
43 self._strands1 = ''
44 self._strands2 = ''
45 self._qual1 = ''
46 self._qual2 = ''
47 self._pvalue = ''
48 self._5flank = ''
49 self._3flank = ''
50 self._gnpSnp_ref = ''
51 self._gnpSnp_var = ''
52 self._gnpSnp_position = 0
53 self._polymType = ''
54 self._polymLength = 0
55 self._occurrence = 1
56
57 ## Equal operator
58 #
59 # @param o a VarscanFileAnalysis instance
60 #
61 def __eq__(self, o):
62 return VarscanHit.__eq__(self, o) \
63 and self._reads1 == o._reads1 and self._reads2 == o._reads2 \
64 and self._varFreq == o._varFreq and self._strands1 == o._strands1 \
65 and self._strands2 == o._strands2 and self._qual1 == o._qual1 \
66 and self._qual2 == o._qual2 and self._pvalue == o._pvalue \
67 and self._3flank == o._3flank and self._5flank == o._5flank \
68 and self._gnpSnp_position == o._gnpSnp_position and self._gnpSnp_ref == o._gnpSnp_ref \
69 and self._gnpSnp_var == o._gnpSnp_var and self._polymLength == o._polymLength \
70 and self._polymType == o._polymType and self._occurrence == o._occurrence
71
72 def isPolymTypeAlreadyFoundAtThisChromAndThisPosition(self, iVarscanHitForGnpSNP):
73 return self._chrom == iVarscanHitForGnpSNP.getChrom() \
74 and self._position == iVarscanHitForGnpSNP.getPosition() \
75 and self._polymType == iVarscanHitForGnpSNP.getPolymType()
76
77 def manageOccurrence(self, iVarscanHitForGnpSNP=None):
78 if iVarscanHitForGnpSNP != None and self.isPolymTypeAlreadyFoundAtThisChromAndThisPosition(iVarscanHitForGnpSNP):
79 self._occurrence = iVarscanHitForGnpSNP.getOccurrence() + 1
80
81 def formatAlleles2GnpSnp(self):
82 if self.getVar().find("-") != -1:
83 self._polymType = "DELETION"
84 self._gnpSnp_position = int(self._position) + 1
85 self._gnpSnp_ref = self._var[1:]
86 self._gnpSnp_var = "-" * len(self._gnpSnp_ref)
87 self._polymLength = len(self._gnpSnp_ref)
88 elif self.getVar().find("+") != -1:
89 self._polymType = "INSERTION"
90 self._gnpSnp_position = int(self._position)
91 self._gnpSnp_var = self._var[1:]
92 self._gnpSnp_ref = "-" * len(self._gnpSnp_var)
93 self._polymLength = 1
94 else:
95 self._polymType = "SNP"
96 self._gnpSnp_position = int(self._position)
97 self._gnpSnp_var = self._var
98 self._gnpSnp_ref = self._ref
99 self._polymLength = 1
100
101 def setReads1(self, nbReadsLikeRef):
102 self._reads1 = nbReadsLikeRef
103
104 def setReads2(self, nbReadsLikeVar):
105 self._reads2 = nbReadsLikeVar
106
107 def setVarFreq(self, frequencyOfVariantAllele):
108 frequencyOfVariantAllele = frequencyOfVariantAllele.replace("%","")
109 frequencyOfVariantAllele = frequencyOfVariantAllele.replace(",",".")
110 self._varFreq = float(frequencyOfVariantAllele)
111
112 def setStrands1(self, strandsOfReferenceAllele):
113 self._strands1 = strandsOfReferenceAllele
114
115 def setStrands2(self, strandsOfVariantAllele):
116 self._strands2 = strandsOfVariantAllele
117
118 def setQual1(self, averageQualityOfRef):
119 self._qual1 = averageQualityOfRef
120
121 def setQual2(self, averageQualityOfVar):
122 self._qual2 = averageQualityOfVar
123
124 def setPvalue(self, pvalue):
125 self._pvalue = pvalue
126
127 def set5flank(self, s5flank):
128 self._5flank = s5flank
129
130 def set3flank(self, s3flank):
131 self._3flank = s3flank
132
133 def setGnpSNPRef(self, ref):
134 self._gnpSnp_ref = ref
135
136 def setGnpSNPVar(self, var):
137 self._gnpSnp_var = var
138
139 def setGnpSNPPosition(self, position):
140 self._gnpSnp_position = position
141
142 def setOccurrence(self, occurrence):
143 self._occurrence = occurrence
144
145 def setPolymType(self, polymType):
146 self._polymType = polymType
147
148 def setPolymLength(self, polymLength):
149 self._polymLength = polymLength
150
151 def getReads1(self):
152 return self._reads1
153
154 def getReads2(self):
155 return self._reads2
156
157 def getVarFreq(self):
158 return self._varFreq
159
160 def getStrands1(self):
161 return self._strands1
162
163 def getStrands2(self):
164 return self._strands2
165
166 def getQual1(self):
167 return self._qual1
168
169 def getQual2(self):
170 return self._qual2
171
172 def getPvalue(self):
173 return self._pvalue
174
175 def get5flank(self):
176 return self._5flank
177
178 def get3flank(self):
179 return self._3flank
180
181 def getPolymType(self):
182 return self._polymType
183
184 def getGnpSnpVar(self):
185 return self._gnpSnp_var
186
187 def getGnpSnpRef(self):
188 return self._gnpSnp_ref
189
190 def getGnpSnpPosition(self):
191 return self._gnpSnp_position
192
193 def getPolymLength(self):
194 return self._polymLength
195
196 def getOccurrence(self):
197 return self._occurrence
198
199 def setAttributes(self, lResults, iCurrentLineNumber):
200 VarscanHit.setAttributes(self, lResults, iCurrentLineNumber)
201 if lResults[4] != '':
202 self.setReads1(lResults[4])
203 else:
204 raise CheckerException ("The field Reads1 is empty in varscan file in line %s" % (iCurrentLineNumber))
205 if lResults[5] != '':
206 self.setReads2(lResults[5])
207 else:
208 raise CheckerException ("The field Reads2 is empty in varscan file in line %s" % (iCurrentLineNumber))
209 if lResults[6] != '' and re.match("[0-9\,\%]+", lResults[6]):
210 self.setVarFreq(lResults[6])
211 else:
212 raise CheckerException ("The field VarFreq is empty or in bad format in varscan file in line %s" % (iCurrentLineNumber))
213 if lResults[7] != '':
214 self.setStrands1(lResults[7])
215 else:
216 raise CheckerException ("The field Strands1 is empty in varscan file in line %s" % (iCurrentLineNumber))
217 if lResults[8] != '':
218 self.setStrands2(lResults[8])
219 else:
220 raise CheckerException ("The field Strands2 is empty in varscan file in line %s" % (iCurrentLineNumber))
221 if lResults[9] != '':
222 self.setQual1(lResults[9])
223 else:
224 raise CheckerException ("The field Qual1 is empty in varscan file in line %s" % (iCurrentLineNumber))
225 if lResults[10] != '':
226 self.setQual2(lResults[10])
227 else:
228 raise CheckerException ("The field Qual2 is empty in varscan file in line %s" % (iCurrentLineNumber))
229 if lResults[11] != '':
230 self.setPvalue(lResults[11])
231 else:
232 raise CheckerException ("The field Pvalue is empty in varscan file in line %s" % (iCurrentLineNumber))