So I’ve been working on something like this on-and-off for three years now haha. Not so much the visualisation part but more like the underlying database and interface. I think it started as a Python / Flask project (
mycofile) and then I transitioned to Rust (
Here’s the repo for myka: A culture library & cultivation log for tracking the expansion of mycelia. From the readme:
myka has begun life as a local storage and query tool for interacting with a library of fungal cultures. It will grow to allow the storage and querying of culture lines, with each line forming an append-only log of cultivation events (e.g. agar → grain → woodchips).
Additional (imagined) capabilities will include tracking yields and environmental conditions to allow for optimization based on generated statistics.
The eventual goal is to make
myka truly mycelial by leveraging p2p sociotechnology…
Hypercore + Hyperswarm
Back-up your virtual library and cultivation logs with peers. Share your virtual library with peers to facilitate trade. Share media and substrate recipes with peers.
The basic design is a command-line tool with a SQLite database. The CLI_API.md doc offers an outline of the planned interface and types of interactions.
Most recently, after a lot of head-scratching about how to add substrate ingredients, I settled on using
TOML files to store recipes. This is pretty cool because it offers a humyn-readable way to add and edit recipes. These recipes can then be linked-to by ID when specifying a substrate for a culture line item (in other words, a single instance of a culture in a discreet container).
Here’s a screenshot: the window on the left shows a
TOML file containing the recipe for Potato Dextrose Agar (PDA). The window on the right shows example usage of the
myka tool to print out a recipe by tag. It’s also possible to print recipes according to a given ingredient.
I’m trying to design it all in such a way that it would be easy to integrate with a front-end client (this could be where the visualisation aspects comes in). The
Line object is where the magic’s at in terms of linking expansion events; each new instance of a culture points back to the ID of the parent culture / container.
The whole thing still needs a ton of thought and work but I think it could be pretty cool