A library for working with phylogenetic and population genetic data.
v0.32.0
VcfGenotype Class Reference

#include <genesis/population/format/vcf_common.hpp>

Detailed Description

Simple wrapper class for one genotype field for a sample.

The FORMAT GT genotype field in VCF contains entries such as

  • 0/1 to mark an unphased diploid genotype call, where one allele is the reference (index 0), and on alelle is the first alternative (index 1) in the ALT column of the record line.
  • 2|1 to mark a phased diploid genotype call, where the first phased allele is the second (index 2) alternative allele of the ALT column, and the second phased allele is the first (index 1) alternative allele.

Here, we model exactly one such entry, that is, one such index. For diploid calls, a sample hence needs two such values (two instances of this class); for triploic calls, three instances, and so forth.

For simplicity, the VcfFormatIterator::get_values() function returns all genotype entries for a given sample of a record/line. This can for example be used with vcf_genotype_string() to get a similar string representation of all called genotypes of a record than VCF uses.

The function variant_index() returns the index of the referenec (0) or alternative allele (>0) as exemplified above. The corresponding allele can be obtained via VcfRecord::get_variant() and VcfRecord::get_variants().

Definition at line 328 of file vcf_common.hpp.

Public Member Functions

 VcfGenotype (int32_t genotype)
 
 VcfGenotype (VcfGenotype &&)=default
 
 VcfGenotype (VcfGenotype const &)=default
 
 ~VcfGenotype ()=default
 
int32_t data () const
 Return the raw genotype value as used by htslib. More...
 
bool is_alternative () const
 True iff the called variant of this genotype is not the REF, but one of the ALT alleles. More...
 
bool is_missing () const
 True iff the variant call is missing for this genotype. More...
 
bool is_phased () const
 True iff the called variant is phased. More...
 
bool is_reference () const
 True iff the called variant of this genotype is the REF allele. More...
 
VcfGenotypeoperator= (VcfGenotype &&)=default
 
VcfGenotypeoperator= (VcfGenotype const &)=default
 
int32_t variant_index () const
 Return the index of the variant set for this genotype call. More...
 

Constructor & Destructor Documentation

◆ VcfGenotype() [1/3]

VcfGenotype ( int32_t  genotype)
inlineexplicit

Definition at line 336 of file vcf_common.hpp.

◆ ~VcfGenotype()

~VcfGenotype ( )
default

◆ VcfGenotype() [2/3]

VcfGenotype ( VcfGenotype const &  )
default

◆ VcfGenotype() [3/3]

VcfGenotype ( VcfGenotype &&  )
default

Member Function Documentation

◆ data()

int32_t data ( ) const

Return the raw genotype value as used by htslib.

Definition at line 727 of file vcf_common.cpp.

◆ is_alternative()

bool is_alternative ( ) const

True iff the called variant of this genotype is not the REF, but one of the ALT alleles.

In VCF, this corresponds to any integer entry > 0.

Definition at line 712 of file vcf_common.cpp.

◆ is_missing()

bool is_missing ( ) const

True iff the variant call is missing for this genotype.

In VCF, this corresponds to an entry of ..

Definition at line 717 of file vcf_common.cpp.

◆ is_phased()

bool is_phased ( ) const

True iff the called variant is phased.

Note that in the VCF specification 4.2 and htslib this seems to be handled differently: While the former required every genotype call to be marked as phased/unphased, the htslib implementation does not set the phased information for the first genotype call. Hence, if the GT field of a sample is 0|1|1, only the second and the third genotype call will return true in htslib using their bcf_gt_is_phased() macro. We here currently do not fix this, and hence propagate the htslib behaviour.

Definition at line 722 of file vcf_common.cpp.

◆ is_reference()

bool is_reference ( ) const

True iff the called variant of this genotype is the REF allele.

In VCF, this corresponds to an entry of 0.

Definition at line 707 of file vcf_common.cpp.

◆ operator=() [1/2]

VcfGenotype& operator= ( VcfGenotype &&  )
default

◆ operator=() [2/2]

VcfGenotype& operator= ( VcfGenotype const &  )
default

◆ variant_index()

int32_t variant_index ( ) const

Return the index of the variant set for this genotype call.

This corresponds to the indices of the result of VcfRecord::get_variants(). If the call is missing (. in VCF), -1 is returned instead.

Definition at line 702 of file vcf_common.cpp.


The documentation for this class was generated from the following files: