4620 |
16 Nov 17 |
nicklas |
1 |
package net.sf.basedb.reggie.vcf; |
4620 |
16 Nov 17 |
nicklas |
2 |
|
4646 |
14 Dec 17 |
nicklas |
3 |
import java.io.Serializable; |
4620 |
16 Nov 17 |
nicklas |
4 |
import java.util.ArrayList; |
4620 |
16 Nov 17 |
nicklas |
5 |
import java.util.LinkedHashMap; |
4620 |
16 Nov 17 |
nicklas |
6 |
import java.util.List; |
4620 |
16 Nov 17 |
nicklas |
7 |
import java.util.Map; |
4620 |
16 Nov 17 |
nicklas |
8 |
|
4620 |
16 Nov 17 |
nicklas |
9 |
import org.json.simple.JSONObject; |
4620 |
16 Nov 17 |
nicklas |
10 |
|
4620 |
16 Nov 17 |
nicklas |
11 |
/** |
4620 |
16 Nov 17 |
nicklas |
Summary of data found in a VCF. |
4620 |
16 Nov 17 |
nicklas |
@author nicklas |
4620 |
16 Nov 17 |
nicklas |
@since 4.13 |
4620 |
16 Nov 17 |
nicklas |
15 |
*/ |
4620 |
16 Nov 17 |
nicklas |
16 |
public class VcfData |
4646 |
14 Dec 17 |
nicklas |
17 |
implements Serializable |
4620 |
16 Nov 17 |
nicklas |
18 |
{ |
4620 |
16 Nov 17 |
nicklas |
19 |
|
4646 |
14 Dec 17 |
nicklas |
20 |
private static final long serialVersionUID = -3339783464081195474L; |
7422 |
14 Nov 23 |
nicklas |
21 |
|
7422 |
14 Nov 23 |
nicklas |
22 |
private final boolean paired; |
4646 |
14 Dec 17 |
nicklas |
23 |
|
6444 |
19 Oct 21 |
nicklas |
24 |
private int totalCount; |
4620 |
16 Nov 17 |
nicklas |
25 |
private int homRefCount; |
4620 |
16 Nov 17 |
nicklas |
26 |
private int homAltCount; |
4620 |
16 Nov 17 |
nicklas |
27 |
private int hetCount; |
4620 |
16 Nov 17 |
nicklas |
28 |
|
4620 |
16 Nov 17 |
nicklas |
29 |
private int badCount; |
7414 |
10 Nov 23 |
nicklas |
30 |
private int phasedCount; |
4620 |
16 Nov 17 |
nicklas |
31 |
|
6513 |
07 Dec 21 |
nicklas |
32 |
private float sumHomGQ; |
6513 |
07 Dec 21 |
nicklas |
33 |
private float sumHetGQ; |
4620 |
16 Nov 17 |
nicklas |
34 |
|
6513 |
07 Dec 21 |
nicklas |
35 |
private int highGqCount; |
6513 |
07 Dec 21 |
nicklas |
36 |
private int lowGqCount; |
4648 |
15 Dec 17 |
nicklas |
37 |
|
7422 |
14 Nov 23 |
nicklas |
38 |
private Map<String, GtData> tumorGt; |
7422 |
14 Nov 23 |
nicklas |
39 |
private Map<String, GtData> normalGt; |
6450 |
21 Oct 21 |
nicklas |
40 |
private JSONObject infoHeaders; |
6450 |
21 Oct 21 |
nicklas |
41 |
private JSONObject formatHeaders; |
6513 |
07 Dec 21 |
nicklas |
42 |
private GenotypeQualityModel qualityModel; |
4620 |
16 Nov 17 |
nicklas |
43 |
|
4712 |
22 Mar 18 |
nicklas |
44 |
private int fileId; |
4712 |
22 Mar 18 |
nicklas |
45 |
|
7422 |
14 Nov 23 |
nicklas |
46 |
public VcfData(boolean paired) |
4620 |
16 Nov 17 |
nicklas |
47 |
{ |
7422 |
14 Nov 23 |
nicklas |
48 |
this.paired = paired; |
6513 |
07 Dec 21 |
nicklas |
49 |
this.qualityModel = null; |
7422 |
14 Nov 23 |
nicklas |
50 |
this.tumorGt = new LinkedHashMap<>(); |
7422 |
14 Nov 23 |
nicklas |
51 |
this.normalGt = new LinkedHashMap<>(); |
6450 |
21 Oct 21 |
nicklas |
52 |
this.infoHeaders = new JSONObject(); |
6450 |
21 Oct 21 |
nicklas |
53 |
this.formatHeaders = new JSONObject(); |
4620 |
16 Nov 17 |
nicklas |
54 |
} |
4620 |
16 Nov 17 |
nicklas |
55 |
|
7422 |
14 Nov 23 |
nicklas |
56 |
/** |
7422 |
14 Nov 23 |
nicklas |
Is this VCF paired normal/tumor data or not. |
7422 |
14 Nov 23 |
nicklas |
@since 4.50 |
7422 |
14 Nov 23 |
nicklas |
59 |
*/ |
7422 |
14 Nov 23 |
nicklas |
60 |
public boolean isPaired() |
7422 |
14 Nov 23 |
nicklas |
61 |
{ |
7422 |
14 Nov 23 |
nicklas |
62 |
return paired; |
7422 |
14 Nov 23 |
nicklas |
63 |
} |
7422 |
14 Nov 23 |
nicklas |
64 |
|
6444 |
19 Oct 21 |
nicklas |
65 |
public void setTotalCount(int totalCount) |
6444 |
19 Oct 21 |
nicklas |
66 |
{ |
6444 |
19 Oct 21 |
nicklas |
67 |
this.totalCount = totalCount; |
6444 |
19 Oct 21 |
nicklas |
68 |
} |
6444 |
19 Oct 21 |
nicklas |
69 |
|
6444 |
19 Oct 21 |
nicklas |
70 |
public int getTotalCount() |
6444 |
19 Oct 21 |
nicklas |
71 |
{ |
6444 |
19 Oct 21 |
nicklas |
72 |
return totalCount; |
6444 |
19 Oct 21 |
nicklas |
73 |
} |
6444 |
19 Oct 21 |
nicklas |
74 |
|
6450 |
21 Oct 21 |
nicklas |
75 |
/** |
6450 |
21 Oct 21 |
nicklas |
Adds information about an ##INFO header. |
6450 |
21 Oct 21 |
nicklas |
@since 4.34 |
6450 |
21 Oct 21 |
nicklas |
78 |
*/ |
6450 |
21 Oct 21 |
nicklas |
79 |
public void addInfoHeader(String id, String data) |
6450 |
21 Oct 21 |
nicklas |
80 |
{ |
6450 |
21 Oct 21 |
nicklas |
81 |
infoHeaders.put(id, data); |
6450 |
21 Oct 21 |
nicklas |
82 |
} |
6444 |
19 Oct 21 |
nicklas |
83 |
|
4620 |
16 Nov 17 |
nicklas |
84 |
/** |
6450 |
21 Oct 21 |
nicklas |
Adds information about a ##FORMAT header. |
6450 |
21 Oct 21 |
nicklas |
@since 4.34 |
6450 |
21 Oct 21 |
nicklas |
87 |
*/ |
6450 |
21 Oct 21 |
nicklas |
88 |
public void addFormatHeader(String id, String data) |
6450 |
21 Oct 21 |
nicklas |
89 |
{ |
6450 |
21 Oct 21 |
nicklas |
90 |
formatHeaders.put(id, data); |
6513 |
07 Dec 21 |
nicklas |
91 |
if ("GQ".equals(id)) |
6513 |
07 Dec 21 |
nicklas |
92 |
{ |
6513 |
07 Dec 21 |
nicklas |
93 |
if (data.contains("GenCall Score")) |
6513 |
07 Dec 21 |
nicklas |
94 |
{ |
6513 |
07 Dec 21 |
nicklas |
95 |
qualityModel = GenotypeQualityModel.GENCALL; |
6513 |
07 Dec 21 |
nicklas |
96 |
} |
6513 |
07 Dec 21 |
nicklas |
97 |
else if (data.contains("Genotype Quality")) |
6513 |
07 Dec 21 |
nicklas |
98 |
{ |
6513 |
07 Dec 21 |
nicklas |
99 |
qualityModel = GenotypeQualityModel.HAPLOTYPECALLER; |
6513 |
07 Dec 21 |
nicklas |
100 |
} |
6513 |
07 Dec 21 |
nicklas |
101 |
} |
6450 |
21 Oct 21 |
nicklas |
102 |
} |
6450 |
21 Oct 21 |
nicklas |
103 |
|
6450 |
21 Oct 21 |
nicklas |
104 |
/** |
6513 |
07 Dec 21 |
nicklas |
Set the quality score model to use. |
6513 |
07 Dec 21 |
nicklas |
@since 4.34 |
6513 |
07 Dec 21 |
nicklas |
107 |
*/ |
6513 |
07 Dec 21 |
nicklas |
108 |
public void setQualityModel(GenotypeQualityModel qualityModel) |
6513 |
07 Dec 21 |
nicklas |
109 |
{ |
6513 |
07 Dec 21 |
nicklas |
110 |
this.qualityModel = qualityModel; |
6513 |
07 Dec 21 |
nicklas |
111 |
} |
6513 |
07 Dec 21 |
nicklas |
112 |
|
6513 |
07 Dec 21 |
nicklas |
113 |
/** |
6513 |
07 Dec 21 |
nicklas |
Get the quality score model in use. |
6513 |
07 Dec 21 |
nicklas |
@since 4.34 |
6513 |
07 Dec 21 |
nicklas |
116 |
*/ |
6513 |
07 Dec 21 |
nicklas |
117 |
public GenotypeQualityModel getQualityModel() |
6513 |
07 Dec 21 |
nicklas |
118 |
{ |
6513 |
07 Dec 21 |
nicklas |
119 |
return qualityModel; |
6513 |
07 Dec 21 |
nicklas |
120 |
} |
6513 |
07 Dec 21 |
nicklas |
121 |
|
6513 |
07 Dec 21 |
nicklas |
122 |
/** |
6450 |
21 Oct 21 |
nicklas |
Get information about an ##INFO header. |
6450 |
21 Oct 21 |
nicklas |
@since 4.34 |
6450 |
21 Oct 21 |
nicklas |
125 |
*/ |
6450 |
21 Oct 21 |
nicklas |
126 |
public String getInfoHeader(String id) |
6450 |
21 Oct 21 |
nicklas |
127 |
{ |
6450 |
21 Oct 21 |
nicklas |
128 |
return (String)infoHeaders.get(id); |
6450 |
21 Oct 21 |
nicklas |
129 |
} |
6450 |
21 Oct 21 |
nicklas |
130 |
|
6450 |
21 Oct 21 |
nicklas |
131 |
/** |
6450 |
21 Oct 21 |
nicklas |
Get information about a ##FORMAT header. |
6450 |
21 Oct 21 |
nicklas |
@since 4.34 |
6450 |
21 Oct 21 |
nicklas |
134 |
*/ |
6450 |
21 Oct 21 |
nicklas |
135 |
public String getFormatHeader(String id) |
6450 |
21 Oct 21 |
nicklas |
136 |
{ |
6450 |
21 Oct 21 |
nicklas |
137 |
return (String)formatHeaders.get(id); |
6450 |
21 Oct 21 |
nicklas |
138 |
} |
6450 |
21 Oct 21 |
nicklas |
139 |
|
6450 |
21 Oct 21 |
nicklas |
140 |
/** |
4620 |
16 Nov 17 |
nicklas |
Adds genotype information for the given SNP. If |
4620 |
16 Nov 17 |
nicklas |
the data has no Genotype, it is ignored and only |
4620 |
16 Nov 17 |
nicklas |
the 'bad' counter is updated. |
4620 |
16 Nov 17 |
nicklas |
144 |
|
4620 |
16 Nov 17 |
nicklas |
@param id rsId for the SNP |
4620 |
16 Nov 17 |
nicklas |
@param gt Genotype information |
4620 |
16 Nov 17 |
nicklas |
147 |
*/ |
4620 |
16 Nov 17 |
nicklas |
148 |
public void addGt(GtData gt) |
4620 |
16 Nov 17 |
nicklas |
149 |
{ |
7422 |
14 Nov 23 |
nicklas |
150 |
addGt(null, gt); |
7422 |
14 Nov 23 |
nicklas |
151 |
} |
7422 |
14 Nov 23 |
nicklas |
152 |
|
7422 |
14 Nov 23 |
nicklas |
153 |
/** |
7422 |
14 Nov 23 |
nicklas |
Adds genotype information for the given SNP. Statistics if |
7422 |
14 Nov 23 |
nicklas |
collected for the tumor genotype information. If |
7422 |
14 Nov 23 |
nicklas |
the data has no Genotype, it is ignored and only |
7422 |
14 Nov 23 |
nicklas |
the 'bad' counter is updated. |
4648 |
15 Dec 17 |
nicklas |
158 |
|
7422 |
14 Nov 23 |
nicklas |
@param normal Genotype information for the normal sample (or null if no normal) |
7422 |
14 Nov 23 |
nicklas |
@param tumor Genotype information for the tumor |
7422 |
14 Nov 23 |
nicklas |
161 |
*/ |
7422 |
14 Nov 23 |
nicklas |
162 |
public void addGt(GtData normal, GtData tumor) |
7422 |
14 Nov 23 |
nicklas |
163 |
{ |
7422 |
14 Nov 23 |
nicklas |
164 |
GenoType genoType = tumor.getGenoType(); |
7422 |
14 Nov 23 |
nicklas |
165 |
float gq = tumor.getGQ(); |
7422 |
14 Nov 23 |
nicklas |
166 |
|
4620 |
16 Nov 17 |
nicklas |
167 |
if (genoType == GenoType.HOM_REF) |
4620 |
16 Nov 17 |
nicklas |
168 |
{ |
4620 |
16 Nov 17 |
nicklas |
169 |
homRefCount++; |
4648 |
15 Dec 17 |
nicklas |
170 |
sumHomGQ += gq; |
4620 |
16 Nov 17 |
nicklas |
171 |
} |
4620 |
16 Nov 17 |
nicklas |
172 |
else if (genoType == GenoType.HOM_ALT) |
4620 |
16 Nov 17 |
nicklas |
173 |
{ |
4620 |
16 Nov 17 |
nicklas |
174 |
homAltCount++; |
4648 |
15 Dec 17 |
nicklas |
175 |
sumHomGQ += gq; |
4620 |
16 Nov 17 |
nicklas |
176 |
} |
4620 |
16 Nov 17 |
nicklas |
177 |
else if (genoType == GenoType.HET) |
4620 |
16 Nov 17 |
nicklas |
178 |
{ |
4620 |
16 Nov 17 |
nicklas |
179 |
hetCount++; |
4648 |
15 Dec 17 |
nicklas |
180 |
sumHetGQ += gq; |
4620 |
16 Nov 17 |
nicklas |
181 |
} |
4620 |
16 Nov 17 |
nicklas |
182 |
else |
4620 |
16 Nov 17 |
nicklas |
183 |
{ |
4620 |
16 Nov 17 |
nicklas |
184 |
badCount++; |
4620 |
16 Nov 17 |
nicklas |
185 |
return; |
4620 |
16 Nov 17 |
nicklas |
186 |
} |
7422 |
14 Nov 23 |
nicklas |
187 |
if (tumor.isPhased()) phasedCount++; |
4620 |
16 Nov 17 |
nicklas |
188 |
|
6513 |
07 Dec 21 |
nicklas |
189 |
if (qualityModel != null) |
4648 |
15 Dec 17 |
nicklas |
190 |
{ |
6513 |
07 Dec 21 |
nicklas |
191 |
if (qualityModel.isHigh(gq)) |
6513 |
07 Dec 21 |
nicklas |
192 |
{ |
6513 |
07 Dec 21 |
nicklas |
193 |
highGqCount++; |
6513 |
07 Dec 21 |
nicklas |
194 |
} |
6513 |
07 Dec 21 |
nicklas |
195 |
else if (qualityModel.isLow(gq)) |
6513 |
07 Dec 21 |
nicklas |
196 |
{ |
6513 |
07 Dec 21 |
nicklas |
197 |
lowGqCount++; |
6513 |
07 Dec 21 |
nicklas |
198 |
} |
4648 |
15 Dec 17 |
nicklas |
199 |
} |
4648 |
15 Dec 17 |
nicklas |
200 |
|
7422 |
14 Nov 23 |
nicklas |
201 |
this.tumorGt.put(tumor.getId(), tumor); |
7422 |
14 Nov 23 |
nicklas |
202 |
if (normal != null) normalGt.put(normal.getId(), normal); |
4620 |
16 Nov 17 |
nicklas |
203 |
} |
4620 |
16 Nov 17 |
nicklas |
204 |
|
4620 |
16 Nov 17 |
nicklas |
205 |
/** |
4620 |
16 Nov 17 |
nicklas |
Get the number of genotypes called as HOM_REF. |
4620 |
16 Nov 17 |
nicklas |
207 |
*/ |
4620 |
16 Nov 17 |
nicklas |
208 |
public int getHomRefCount() |
4620 |
16 Nov 17 |
nicklas |
209 |
{ |
4620 |
16 Nov 17 |
nicklas |
210 |
return homRefCount; |
4620 |
16 Nov 17 |
nicklas |
211 |
} |
4620 |
16 Nov 17 |
nicklas |
212 |
|
4620 |
16 Nov 17 |
nicklas |
213 |
/** |
4620 |
16 Nov 17 |
nicklas |
Get the number of genotypes called as HOM_ALT. |
4620 |
16 Nov 17 |
nicklas |
215 |
*/ |
4620 |
16 Nov 17 |
nicklas |
216 |
public int getHomAltCount() |
4620 |
16 Nov 17 |
nicklas |
217 |
{ |
4620 |
16 Nov 17 |
nicklas |
218 |
return homAltCount; |
4620 |
16 Nov 17 |
nicklas |
219 |
} |
4620 |
16 Nov 17 |
nicklas |
220 |
|
4620 |
16 Nov 17 |
nicklas |
221 |
/** |
4620 |
16 Nov 17 |
nicklas |
Get the number of genotypes called as HET. |
4620 |
16 Nov 17 |
nicklas |
223 |
*/ |
4620 |
16 Nov 17 |
nicklas |
224 |
public int getHetCount() |
4620 |
16 Nov 17 |
nicklas |
225 |
{ |
4620 |
16 Nov 17 |
nicklas |
226 |
return hetCount; |
4620 |
16 Nov 17 |
nicklas |
227 |
} |
4620 |
16 Nov 17 |
nicklas |
228 |
|
4620 |
16 Nov 17 |
nicklas |
229 |
/** |
4671 |
07 Feb 18 |
nicklas |
Get the percentage of HET genotypes. |
4671 |
07 Feb 18 |
nicklas |
231 |
*/ |
4671 |
07 Feb 18 |
nicklas |
232 |
public float getHetPercentage() |
4671 |
07 Feb 18 |
nicklas |
233 |
{ |
7422 |
14 Nov 23 |
nicklas |
234 |
return tumorGt.size() > 0 ? 100f * hetCount / tumorGt.size() : 0; |
4671 |
07 Feb 18 |
nicklas |
235 |
} |
4671 |
07 Feb 18 |
nicklas |
236 |
|
4671 |
07 Feb 18 |
nicklas |
237 |
/** |
4620 |
16 Nov 17 |
nicklas |
Get the total number of genotypes (not including bad ones). |
4620 |
16 Nov 17 |
nicklas |
239 |
*/ |
4620 |
16 Nov 17 |
nicklas |
240 |
public int getGtCount() |
4620 |
16 Nov 17 |
nicklas |
241 |
{ |
7422 |
14 Nov 23 |
nicklas |
242 |
return tumorGt.size(); |
4620 |
16 Nov 17 |
nicklas |
243 |
} |
4620 |
16 Nov 17 |
nicklas |
244 |
|
4620 |
16 Nov 17 |
nicklas |
245 |
/** |
4620 |
16 Nov 17 |
nicklas |
Get the number of 'bad' genotypes. |
4620 |
16 Nov 17 |
nicklas |
247 |
*/ |
4620 |
16 Nov 17 |
nicklas |
248 |
public int getBadCount() |
4620 |
16 Nov 17 |
nicklas |
249 |
{ |
4620 |
16 Nov 17 |
nicklas |
250 |
return badCount; |
4620 |
16 Nov 17 |
nicklas |
251 |
} |
4620 |
16 Nov 17 |
nicklas |
252 |
|
4620 |
16 Nov 17 |
nicklas |
253 |
/** |
7414 |
10 Nov 23 |
nicklas |
Get the number of genotypes that are phased. |
7414 |
10 Nov 23 |
nicklas |
@since 4.50 |
7414 |
10 Nov 23 |
nicklas |
256 |
*/ |
7414 |
10 Nov 23 |
nicklas |
257 |
public int getPhasedCount() |
7414 |
10 Nov 23 |
nicklas |
258 |
{ |
7414 |
10 Nov 23 |
nicklas |
259 |
return phasedCount; |
7414 |
10 Nov 23 |
nicklas |
260 |
} |
7414 |
10 Nov 23 |
nicklas |
261 |
|
7414 |
10 Nov 23 |
nicklas |
262 |
/** |
4620 |
16 Nov 17 |
nicklas |
Get the sum of all GQ values for all HOM_REF or HOM_ALT genotypes. |
4620 |
16 Nov 17 |
nicklas |
264 |
*/ |
6513 |
07 Dec 21 |
nicklas |
265 |
public float getSumHomGQ() |
4620 |
16 Nov 17 |
nicklas |
266 |
{ |
4620 |
16 Nov 17 |
nicklas |
267 |
return sumHomGQ; |
4620 |
16 Nov 17 |
nicklas |
268 |
} |
4620 |
16 Nov 17 |
nicklas |
269 |
|
4620 |
16 Nov 17 |
nicklas |
270 |
/** |
4620 |
16 Nov 17 |
nicklas |
Get the sum of all GQ values for all HET genotypes. |
4620 |
16 Nov 17 |
nicklas |
272 |
*/ |
6513 |
07 Dec 21 |
nicklas |
273 |
public float getSumHetGQ() |
4620 |
16 Nov 17 |
nicklas |
274 |
{ |
4620 |
16 Nov 17 |
nicklas |
275 |
return sumHetGQ; |
4620 |
16 Nov 17 |
nicklas |
276 |
} |
4620 |
16 Nov 17 |
nicklas |
277 |
|
4620 |
16 Nov 17 |
nicklas |
278 |
/** |
6513 |
07 Dec 21 |
nicklas |
Get the number of genotypes that has a high GQ |
6513 |
07 Dec 21 |
nicklas |
value (eg. 99 or xx). |
4648 |
15 Dec 17 |
nicklas |
281 |
*/ |
6513 |
07 Dec 21 |
nicklas |
282 |
public int getHighGQCount() |
4648 |
15 Dec 17 |
nicklas |
283 |
{ |
6513 |
07 Dec 21 |
nicklas |
284 |
return highGqCount; |
4648 |
15 Dec 17 |
nicklas |
285 |
} |
4648 |
15 Dec 17 |
nicklas |
286 |
|
4648 |
15 Dec 17 |
nicklas |
287 |
/** |
6513 |
07 Dec 21 |
nicklas |
Get the number of genotype that has low GQ value |
6513 |
07 Dec 21 |
nicklas |
(eg. below 50 or 0.2). |
4648 |
15 Dec 17 |
nicklas |
290 |
*/ |
6513 |
07 Dec 21 |
nicklas |
291 |
public int getLowGQCount() |
4648 |
15 Dec 17 |
nicklas |
292 |
{ |
6513 |
07 Dec 21 |
nicklas |
293 |
return lowGqCount; |
4648 |
15 Dec 17 |
nicklas |
294 |
} |
4648 |
15 Dec 17 |
nicklas |
295 |
|
4648 |
15 Dec 17 |
nicklas |
296 |
/** |
4620 |
16 Nov 17 |
nicklas |
Get all genotypes found in this file. |
4620 |
16 Nov 17 |
nicklas |
298 |
*/ |
4620 |
16 Nov 17 |
nicklas |
299 |
public List<GtData> getGtData() |
4620 |
16 Nov 17 |
nicklas |
300 |
{ |
7422 |
14 Nov 23 |
nicklas |
301 |
return new ArrayList<>(tumorGt.values()); |
4620 |
16 Nov 17 |
nicklas |
302 |
} |
4620 |
16 Nov 17 |
nicklas |
303 |
|
4620 |
16 Nov 17 |
nicklas |
304 |
/** |
4620 |
16 Nov 17 |
nicklas |
Get the genotype data for the SNP with the given rsId. |
4620 |
16 Nov 17 |
nicklas |
306 |
*/ |
4620 |
16 Nov 17 |
nicklas |
307 |
public GtData getGtData(String id) |
4620 |
16 Nov 17 |
nicklas |
308 |
{ |
7422 |
14 Nov 23 |
nicklas |
309 |
return tumorGt.get(id); |
4620 |
16 Nov 17 |
nicklas |
310 |
} |
4620 |
16 Nov 17 |
nicklas |
311 |
|
4620 |
16 Nov 17 |
nicklas |
312 |
/** |
7422 |
14 Nov 23 |
nicklas |
Get the genotype data for paired normal with the given SNP id. |
7422 |
14 Nov 23 |
nicklas |
@since 4.50 |
7422 |
14 Nov 23 |
nicklas |
315 |
*/ |
7422 |
14 Nov 23 |
nicklas |
316 |
public GtData getNormalGtData(String id) |
7422 |
14 Nov 23 |
nicklas |
317 |
{ |
7422 |
14 Nov 23 |
nicklas |
318 |
return normalGt.get(id); |
7422 |
14 Nov 23 |
nicklas |
319 |
} |
7422 |
14 Nov 23 |
nicklas |
320 |
|
7422 |
14 Nov 23 |
nicklas |
321 |
/** |
4646 |
14 Dec 17 |
nicklas |
Get the id of the File item in BASE this data is coming from. |
4646 |
14 Dec 17 |
nicklas |
323 |
*/ |
4646 |
14 Dec 17 |
nicklas |
324 |
public int getFileId() |
4646 |
14 Dec 17 |
nicklas |
325 |
{ |
4646 |
14 Dec 17 |
nicklas |
326 |
return fileId; |
4646 |
14 Dec 17 |
nicklas |
327 |
} |
4646 |
14 Dec 17 |
nicklas |
328 |
|
4646 |
14 Dec 17 |
nicklas |
329 |
public void setFileId(int fileId) |
4646 |
14 Dec 17 |
nicklas |
330 |
{ |
4646 |
14 Dec 17 |
nicklas |
331 |
this.fileId = fileId; |
4646 |
14 Dec 17 |
nicklas |
332 |
} |
4646 |
14 Dec 17 |
nicklas |
333 |
|
4646 |
14 Dec 17 |
nicklas |
334 |
/** |
6513 |
07 Dec 21 |
nicklas |
Is the genotype call of low quality? |
6513 |
07 Dec 21 |
nicklas |
@since 4.34 |
6513 |
07 Dec 21 |
nicklas |
337 |
*/ |
6513 |
07 Dec 21 |
nicklas |
338 |
public boolean isLowQuality(GtData gt) |
6513 |
07 Dec 21 |
nicklas |
339 |
{ |
6513 |
07 Dec 21 |
nicklas |
340 |
return qualityModel != null && qualityModel.isLow(gt.getGQ()); |
6513 |
07 Dec 21 |
nicklas |
341 |
} |
6513 |
07 Dec 21 |
nicklas |
342 |
|
6513 |
07 Dec 21 |
nicklas |
343 |
/** |
6513 |
07 Dec 21 |
nicklas |
Is the genotype call of high quality? |
6513 |
07 Dec 21 |
nicklas |
@since 4.34 |
6513 |
07 Dec 21 |
nicklas |
346 |
*/ |
6513 |
07 Dec 21 |
nicklas |
347 |
public boolean isHighQuality(GtData gt) |
6513 |
07 Dec 21 |
nicklas |
348 |
{ |
6513 |
07 Dec 21 |
nicklas |
349 |
return qualityModel != null && qualityModel.isHigh(gt.getGQ()); |
6513 |
07 Dec 21 |
nicklas |
350 |
} |
6513 |
07 Dec 21 |
nicklas |
351 |
|
6513 |
07 Dec 21 |
nicklas |
352 |
/** |
4620 |
16 Nov 17 |
nicklas |
Get all information as a JSON object. A new JSON object |
4620 |
16 Nov 17 |
nicklas |
is created each time this method is called. |
4620 |
16 Nov 17 |
nicklas |
355 |
*/ |
4620 |
16 Nov 17 |
nicklas |
356 |
public JSONObject asJSONObject() |
4620 |
16 Nov 17 |
nicklas |
357 |
{ |
6451 |
22 Oct 21 |
nicklas |
358 |
return asJSONObject(true); |
6451 |
22 Oct 21 |
nicklas |
359 |
} |
6451 |
22 Oct 21 |
nicklas |
360 |
|
6451 |
22 Oct 21 |
nicklas |
361 |
/** |
6451 |
22 Oct 21 |
nicklas |
Get all information as a JSON object. A new JSON object |
6451 |
22 Oct 21 |
nicklas |
is created each time this method is called. |
6451 |
22 Oct 21 |
nicklas |
@since 4.34 |
6451 |
22 Oct 21 |
nicklas |
365 |
*/ |
6451 |
22 Oct 21 |
nicklas |
366 |
public JSONObject asJSONObject(boolean includeHeaders) |
6451 |
22 Oct 21 |
nicklas |
367 |
{ |
4620 |
16 Nov 17 |
nicklas |
368 |
JSONObject json = new JSONObject(); |
6444 |
19 Oct 21 |
nicklas |
369 |
json.put("totalCount", getTotalCount()); |
4620 |
16 Nov 17 |
nicklas |
370 |
json.put("homRefCount", getHomRefCount()); |
4620 |
16 Nov 17 |
nicklas |
371 |
json.put("homAltCount", getHomAltCount()); |
4620 |
16 Nov 17 |
nicklas |
372 |
json.put("hetCount", getHetCount()); |
4620 |
16 Nov 17 |
nicklas |
373 |
json.put("gtCount", getGtCount()); |
4620 |
16 Nov 17 |
nicklas |
374 |
json.put("badCount", getBadCount()); |
7414 |
10 Nov 23 |
nicklas |
375 |
json.put("phasedCount", getPhasedCount()); |
4620 |
16 Nov 17 |
nicklas |
376 |
json.put("sumHomGQ", getSumHomGQ()); |
4620 |
16 Nov 17 |
nicklas |
377 |
json.put("sumHetGQ", getSumHetGQ()); |
6513 |
07 Dec 21 |
nicklas |
378 |
if (getQualityModel() != null) json.put("qualityModel", getQualityModel().name()); |
6513 |
07 Dec 21 |
nicklas |
379 |
json.put("highGQCount", getHighGQCount()); |
6513 |
07 Dec 21 |
nicklas |
380 |
json.put("lowGQCount", getLowGQCount()); |
4646 |
14 Dec 17 |
nicklas |
381 |
json.put("fileId", getFileId()); |
6452 |
22 Oct 21 |
nicklas |
382 |
if (includeHeaders) |
6451 |
22 Oct 21 |
nicklas |
383 |
{ |
6451 |
22 Oct 21 |
nicklas |
384 |
json.put("infoHeaders", infoHeaders); |
6451 |
22 Oct 21 |
nicklas |
385 |
json.put("formatHeaders", formatHeaders); |
6451 |
22 Oct 21 |
nicklas |
386 |
} |
4620 |
16 Nov 17 |
nicklas |
387 |
return json; |
4620 |
16 Nov 17 |
nicklas |
388 |
} |
6451 |
22 Oct 21 |
nicklas |
389 |
|
4620 |
16 Nov 17 |
nicklas |
390 |
} |