This module is a general-purpose framework for evaluating if a family exihibits, for example, and autosomal dominant pattern. The logic for this was tuned in gemini but we make it available here as a more general purpose library to encourage:
- community driven improvements
- use outside of gemini
- more comprehensive testing
Finding variants that match autosomal dominance in a trio, for example is very simple to find, however, after considering multiple generations, arbitrary family sizes, depth cutoffs, and unknown genotypes and phenotypes to support to real-world datasets it becomes tedious and error-prone.
- autosomal dominant
- autosomal recessive
- de novo
- X-linked dominant, recessive, and de novo
- compound heterozygote
- mendelian violation
For now, the use is via api only. Users can look at the tests to see how to use. Most functions have a signature like:
auto_dom(self, min_depth=0, gt_ll=False, strict=True, only_affected=True)
where the arguments enforce a minimum depth, a maximum genotype likelihood, strictness (mostly related to parent-offspring requirements) and wether to allow unaffecteds to have the variant (or be homozygous alt).
- add support for X-linked soon.
- add a simple example of running on a VCF+PED
- code coverage
- code documentation
Tests can be run as:
nosetests --with-coverage -x --with-doctest --cover-package inheritance
the generic code is in inheritance/inheritance.py
and a specific implementation that we use in gemini is in inheritance/pyeval.py
.
To make this available for a new resource, for example to bcftools
we would look at the implementation of Filter in inheritance/pyval.py
and make the generated strings match those expected by bcftools
.