Examples

Mapping Ancient Samples

This creates a 3D map of ancient samples that have been found by archaeologists and included in published research. You can optionally include all samples (*), specific haplogroups (ex.: 'B2'), or a haplogroup and its descendant groups (ex.: 'B2*'). Any unparseable text will yield the default map of B2.
The data comes from a large spreadsheet of ~10,000 samples that have been included in archaeological research. I used a little bit of Python to clean up the data, then transferred it into a sqlite database on this website's server. This script pulls a Pandas dataframe from the database then filters by whatever haplogroup the user inputs. The input goes through some safety checks and then I use a regex to match the haplogroup formatting in the database. This is restricted to haplogroup filtering for simplicity, but it would be very easy to add a feature to show all the samples from a specific country, within a certain timeframe, etc.

Phylogenetic networks

This takes an RDF and combines identical samples into weighted nodes, then uses Kruskal's maximum spanning tree algorithm to create a fully connected graph. The nodes with several closely related leaf nodes are older, ancestral haplotypes. I enjoy graph theory so this is one of my favorite projects. The library I currently use creates a locally hosted server to serve a live/dynamic graph of all the data in html, but running that through my website seems like a moderate security issue, so I've been trying to find a workaround that can be integrated with my website.