Some of my projects

Here are some of the projects that I've been working on. These have allowed me to improve my skills in bioinformatics, python, MySQL, and web development.

Creating missing parent DNA from 3 or more children and one parent


I first wrote a simple routine to create as much of my father's DNA as I could from my siblings and my mother's file. Then I came across Whit Athey's paper and David Pike's implementation.

Here is an example of the testing output

Headings: mom; mom's DNA, children; the DNA from the 4 siblings, d_snps; the letter each sibling got from dad, d_pat; the phasing pattern for dad, m_snps; the letter each child got from mom, m_pat; the phasing pattern for mom

My code is at

I first scan the chromosome from the beginning looking for dad's phasing pattern. When that is found I rescan using that information to find mom's phasing pattern. Then I restart again phasing each snp from the beginning. When I detect a change in phasing pattern I stop phasing and scan forward seeing if the change happens once or more times. If the change is a one time thing I ignore it and leave the phasing pattern alone. I think this helps with errors.

My algorithm gets confused at crossovers. For example the pattern could go from '1000' to '0000' which would look to me like a change to no pattern. From there it might change to '0001'. I would think that the pattern changed from '1000' to '0001' and change of two, and wonder if it was an error, a double crossover, missed the crossover or what. So, I'm still tinkering with it in my spare time.

managing 23andme introductions

June, 2014

It is time consuming to send introductions to each of your 1000 23andme relatives. I wrote a program that sends a customized message to each relative and asks to share genomes. It worked for a time but then I think 23andme changed something in their API. It still sends an introduction but with the generic 23andme introduction and critically without the DNA sharing request. 23andme support has not been responsive. My code is at