For the Go rewrite of SnailLife I decided to focus on tools early. In the PHP version as the complexity of the simulation increased, my debugging methods were not able to keep up. I did some remote-stored categorized logging and such, but it wasn’t really enough. Figuring out a bug in the brain or the snail’s genome often took hours of digging around.
I figure now that I am adding more genes and expressers to SnailLife Go, it might be a good time to get a head start on some tooling and make a gene editing and monitoring tool.
SnailLife Genome Lab
Yes, I was tempted to call it CRISPR. But the tool will be called the SnailLife Genome Lab and will basically be another client that communicates with the SnailLife API to sequence and modify snail genes for debugging purposes. In this post I’m just thinking through the features I may want in very rough strokes.
Structure
Currently I have two SnailLife Go applications - the client and the server. But both of these live in the same project. SGL will be a separate GitLab project that will simply import the SnailLife common
package to get the basic snail, organ, and gene structs. It will communicate with the simulation itself through the server-side API. This will be a web application usable through a browser.
Features
- Find a snail by name or ID and display all of its genes
- View full catalog of genes registered in the simulation, their possible variations, and their expressers in the snail organism.
- Be able to modify an individual allele on a snail with another valid variation of that gene.
- Be able to make a copy of a snail in a gene editing sandbox and manipulate the copy; then optionally commit changes to the original.
- View gene modification logs for each snail.