Overview

StrainPycon is a Python 3 package that can be used to disambiguate multiple strains in mixed samples of DNA. The package was developed in collaboration between researchers at Emory University and the Centers for Disease Control and Prevention (CDC).

As a motivating example, suppose you have a blood sample infected by multiple Plasmodium falciparum malaria parasites. Assuming you have done PCR on chosen SNP sites, the number of calls that differ from the reference genome are indicative of what proportion of the strains have mutated at that SNP. StrainPycon is an approach for identifying the strains in the sample through disambiguation (deconvolution) without requiring any prior knowledge about the sample or the parasite. The process can also help assess the multiplicity of infection in the sample, which can for instance aid malaria surveillance efforts.

Mathematically, StrainPycon solves the binary blind source separation problem and can compute certain high-dimensional integrals involving binary variables. The connection between these mathematical concepts and strain identification is discussed in richer detail in [1]. StrainPycon is based on a similar package named StrainRecon.jl and written in Julia [2].

Once installed, the basic usage of StrainPycon package looks as follows:

import strainpycon
S = strainpycon.StrainRecon()
# obtain measurement data:
# ...
results = S.compute(data, ...)
stats = S.posterior_stats(data, ...)
# etc...

For more comprehensive examples, see Examples section.

Citation

If you use StrainPycon in your work, please cite the following paper:

L. Mustonen, X. Gao, A. Santana, R. Mitchell, Y. Vigfusson, and L. Ruthotto.
A Bayesian framework for molecular strain identification from mixed diagnostic samples.
Inverse Problems 34(10), 105009. 2018.

References

[1]L. Mustonen, X. Gao, A. Santana, R. Mitchell, Y. Vigfusson, and L. Ruthotto, A Bayesian framework for molecular strain identification from mixed diagnostic samples, Inverse Problems 34(10), 105009, 2018, https://doi.org/10.1088/1361-6420/aad7cd
[2]https://github.com/lruthotto/StrainRecon.jl