Hippocamplus My Second Memory

Artistic representation of DNA tests' results

Christmas is coming. DNA tests are cool gifts but I’ve already offered it to some members of my family before. Now I was wondering if I could use this data in a more creative way and produce some kind of artistic representation of the DNA data to give them for Christmas. Some kind of DNA art or painting that would be unique.

Surprisingly, I didn’t find much on the internet for something like this. I expected some people to have already tried considering the success of 23andMe, Ancestry etc. One company sells scarves with motives generated from selected variants with associated traits (eye color, etc). Others were just printing photos of gels.

So I started tinkering a script around a year ago and now it feel like a good time to stop and put it out there. First, I’ve long passed the peak of excitement/inspiration. And second, I used the script a couple of month ago for a friend’s birthday present and I think it turned out OK. So here it is, my attempt at DNA art…

After getting some feedback from friends, I ended up implementing four different versions: tree, weave, noise, and stars. Each time, the DNA is used to create a background or some kind of mesh that, by itself, is not that amazing but could be combined with some photo edition to create cool images.

Version 1: Tree

The first idea was to represent how unique is the person. Each fork represents a mutation with three “options”: homozygous for the common allele, heterozygous, or homozygous for the rare allele. The complete tree would be huge and this version represents just the branch/path followed by that person. The image is unique because the “chances” to go though the same path (same choices at each fork) are extremely low. At least that’s what I wanted to communicate.

Version 2: Weave

Very similar to version 1 but with a thicker path/fork so that it covers more surface. This is better suited to use as a mask for a photo, while the first version worked mostly when combining with simple “texture” images.

Version 3: Noise

Here the goal was to create some kind of pixel noise based on the DNA data and see if larger patterns would arise. Each variant is represented as a pixel whose size depends on the genotype: no pixel if homozygous for the common allele; small pixel if heterozygous; large pixel if homozygous for the rare allele.

Version 4: Stars

Finally, variants are represented as points whose size depends on the genotype. Similar to the previous version: no point if homozygous for the common allele; small point if heterozygous; large point if homozygous for the rare allele. We can then make these points look like stars and combine with some other space images.


The scripts and some basic GIMP instructions are available on GitHub.


I didn’t think about that at first but there are so many variants that we don’t see much if we use all of them and print on a reasonable surface (having an entire wall covered with this would cool though). My solution was to pack variants and represent these packs with a special symbol. For example, draw 200 variants, then pack the next 10K, draw 200 variants, …

We could imagine these packs as nucleosomes, the DNA packing system. It could also be something more poetic like galaxies in the stars representation, or imagining the tree branch looping in a third dimension for version 1.

I used the frequency of the variant in the 1000GP to find out which allele is common vs rare. I like the idea of the brighter stars representing rare things about the person.