utility methods for genotype counts
git-svn-id: file:///humgen/gsa-scr1/gsa-engineering/svn_contents/trunk@2912 348d0f76-0448-11de-a6fe-93d51630548a
This commit is contained in:
parent
7578678f99
commit
6ceae22793
|
|
@ -175,6 +175,9 @@ public class VariantContext {
|
|||
/** A mapping from sampleName -> genotype objects for all genotypes associated with this context */
|
||||
protected Map<String, Genotype> genotypes = null;
|
||||
|
||||
/** Counts for each of the possible Genotype types in this context */
|
||||
protected int[] genotypeCounts = null;
|
||||
|
||||
protected final static Map<String, Genotype> NO_GENOTYPES = Collections.unmodifiableMap(new HashMap<String, Genotype>());
|
||||
|
||||
// ---------------------------------------------------------------------------------------------------------
|
||||
|
|
@ -199,6 +202,7 @@ public class VariantContext {
|
|||
|
||||
if ( genotypes == null ) { genotypes = NO_GENOTYPES; }
|
||||
this.genotypes = Collections.unmodifiableMap(genotypes);
|
||||
calculateGenotypeCounts();
|
||||
|
||||
validate();
|
||||
}
|
||||
|
|
@ -695,7 +699,7 @@ public class VariantContext {
|
|||
* Genotype-specific functions -- are the genotypes monomorphic w.r.t. to the alleles segregating at this
|
||||
* site? That is, is the number of alternate alleles among all fo the genotype == 0?
|
||||
*
|
||||
* @return
|
||||
* @return true if it's monomorphic
|
||||
*/
|
||||
public boolean isMonomorphic() {
|
||||
return ! isVariant() || getChromosomeCount(getReference()) == getChromosomeCount();
|
||||
|
|
@ -705,12 +709,65 @@ public class VariantContext {
|
|||
* Genotype-specific functions -- are the genotypes polymorphic w.r.t. to the alleles segregating at this
|
||||
* site? That is, is the number of alternate alleles among all fo the genotype > 0?
|
||||
*
|
||||
* @return
|
||||
* @return true if it's polymorphic
|
||||
*/
|
||||
public boolean isPolymorphic() {
|
||||
return ! isMonomorphic();
|
||||
}
|
||||
|
||||
private void calculateGenotypeCounts() {
|
||||
genotypeCounts = new int[Genotype.Type.values().length];
|
||||
|
||||
for ( Genotype g : getGenotypes().values() ) {
|
||||
if ( g.isNoCall() )
|
||||
genotypeCounts[Genotype.Type.NO_CALL.ordinal()]++;
|
||||
else if ( g.isHomRef() )
|
||||
genotypeCounts[Genotype.Type.HOM_REF.ordinal()]++;
|
||||
else if ( g.isHet() )
|
||||
genotypeCounts[Genotype.Type.HET.ordinal()]++;
|
||||
else if ( g.isHomVar() )
|
||||
genotypeCounts[Genotype.Type.HOM_VAR.ordinal()]++;
|
||||
else
|
||||
throw new StingException("Genotype of unknown type: " + g);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Genotype-specific functions -- how many no-calls are there in the genotypes?
|
||||
*
|
||||
* @return number of no calls
|
||||
*/
|
||||
public int getNoCallCount() {
|
||||
return genotypeCounts[Genotype.Type.NO_CALL.ordinal()];
|
||||
}
|
||||
|
||||
/**
|
||||
* Genotype-specific functions -- how many hom ref calls are there in the genotypes?
|
||||
*
|
||||
* @return number of hom ref calls
|
||||
*/
|
||||
public int getHomRefCount() {
|
||||
return genotypeCounts[Genotype.Type.HOM_REF.ordinal()];
|
||||
}
|
||||
|
||||
/**
|
||||
* Genotype-specific functions -- how many het calls are there in the genotypes?
|
||||
*
|
||||
* @return number of het calls
|
||||
*/
|
||||
public int getHetCount() {
|
||||
return genotypeCounts[Genotype.Type.HET.ordinal()];
|
||||
}
|
||||
|
||||
/**
|
||||
* Genotype-specific functions -- how many hom var calls are there in the genotypes?
|
||||
*
|
||||
* @return number of hom var calls
|
||||
*/
|
||||
public int getHomVarCount() {
|
||||
return genotypeCounts[Genotype.Type.HOM_VAR.ordinal()];
|
||||
}
|
||||
|
||||
// ---------------------------------------------------------------------------------------------------------
|
||||
//
|
||||
// validation
|
||||
|
|
|
|||
Loading…
Reference in New Issue