-Added convenience method to VCF record to tell if it's a no call and have rodVCF use it before querying for info fields
-Don't restrict info fields to 2-letter keys [about to move these to core] git-svn-id: file:///humgen/gsa-scr1/gsa-engineering/svn_contents/trunk@2002 348d0f76-0448-11de-a6fe-93d51630548a
This commit is contained in:
parent
740a5484c4
commit
3793519bd4
|
|
@ -304,13 +304,17 @@ public class RodVCF extends BasicReferenceOrderedDatum implements VariationRod,
|
|||
if (lst.size() != 1) {
|
||||
throw new IllegalStateException("VCF object does not have one and only one genotype record");
|
||||
}
|
||||
VCFGenotypeRecord rec = lst.get(0);
|
||||
if ( rec.isEmptyGenotype() )
|
||||
return null;
|
||||
|
||||
double qual = 0;
|
||||
if (lst.get(0).getAlleles().equals(this.getReference()))
|
||||
if (rec.getAlleles().equals(this.getReference()))
|
||||
qual = refQual;
|
||||
else if (lst.get(0).getFields().containsKey("GQ"))
|
||||
qual = Double.valueOf(lst.get(0).getFields().get("GQ")) / 10.0;
|
||||
int coverage = (lst.get(0).getFields().containsKey("RD") ? Integer.valueOf(lst.get(0).getFields().get("RD")) : 0);
|
||||
return new VCFGenotypeCall(this.getReference().charAt(0), this.getLocation(), Utils.join("", lst.get(0).getAlleles()), qual, coverage, lst.get(0).getSampleName());
|
||||
else if (rec.getFields().containsKey("GQ"))
|
||||
qual = Double.valueOf(rec.getFields().get("GQ")) / 10.0;
|
||||
int coverage = (rec.getFields().containsKey("RD") ? Integer.valueOf(rec.getFields().get("RD")) : 0);
|
||||
return new VCFGenotypeCall(this.getReference().charAt(0), this.getLocation(), Utils.join("", rec.getAlleles()), qual, coverage, rec.getSampleName());
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
|
@ -329,6 +333,9 @@ public class RodVCF extends BasicReferenceOrderedDatum implements VariationRod,
|
|||
double refQual = (this.getNegLog10PError());
|
||||
// add the reference
|
||||
for (VCFGenotypeRecord rec : mCurrentRecord.getVCFGenotypeRecords()) {
|
||||
if ( rec.isEmptyGenotype() )
|
||||
continue;
|
||||
;
|
||||
double qual = 0;
|
||||
if (rec.getAlleles().equals(this.getReference()))
|
||||
qual = refQual;
|
||||
|
|
|
|||
|
|
@ -101,5 +101,5 @@ public class IndelSubsets implements ConcordanceType {
|
|||
return Math.max(leftRun, rightRun);
|
||||
}
|
||||
|
||||
public String getInfoName() { return "IS"; }
|
||||
public String getInfoName() { return "IndelSubsets"; }
|
||||
}
|
||||
|
|
@ -32,11 +32,11 @@ public class NWayVenn implements ConcordanceType {
|
|||
while ( iter.hasNext() ) {
|
||||
tag.append(iter.next());
|
||||
if ( iter.hasNext() )
|
||||
tag.append(".");
|
||||
tag.append("-");
|
||||
}
|
||||
|
||||
return tag.toString();
|
||||
}
|
||||
|
||||
public String getInfoName() { return "NV"; }
|
||||
public String getInfoName() { return "NwayVenn"; }
|
||||
}
|
||||
|
|
@ -94,5 +94,5 @@ public class SNPGenotypeConcordance implements ConcordanceType {
|
|||
return altAllele1 == altAllele2;
|
||||
}
|
||||
|
||||
public String getInfoName() { return "SG"; }
|
||||
public String getInfoName() { return "SnpConcordance"; }
|
||||
}
|
||||
|
|
@ -58,5 +58,5 @@ public class SimpleVenn implements ConcordanceType {
|
|||
return "concordant";
|
||||
}
|
||||
|
||||
public String getInfoName() { return "SV"; }
|
||||
public String getInfoName() { return "Venn"; }
|
||||
}
|
||||
|
|
|
|||
|
|
@ -115,6 +115,13 @@ public class VCFGenotypeRecord {
|
|||
|
||||
}
|
||||
|
||||
public boolean isEmptyGenotype() {
|
||||
for ( VCFGenotypeEncoding encoding : mGenotypeAlleles ) {
|
||||
if ( encoding.getType() != VCFGenotypeEncoding.TYPE.UNCALLED )
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
public boolean equals(Object other) {
|
||||
if (other instanceof VCFGenotypeRecord) {
|
||||
|
|
|
|||
Loading…
Reference in New Issue