Inspiration
Cancer has affected people in our families and that was really the main reason we wanted to work on something in this space. We saw the Cancer Applications in Genomics track and thought it would be cool to build something that lets people actually see and interact with the mutations that cause cancer instead of just reading about them in a textbook. We also wanted to make it so that you don't need to be a bio major to understand what's going on with these genes and mutations.
What it does
MutationMap is basically a tool where you can explore cancer related genetic mutations and see how they connect to different types of cancer. You pick from 8 genes (TP53, BRCA1, BRCA2, KRAS, BRAF, PIK3CA, EGFR, PTEN) and toggle on different mutations. There's a 3D DNA helix that shows where the mutations are on the gene and you can spin it around and click on stuff. Once you've selected your mutations you can run a prediction and it tells you the probability of 11 different cancer types. We also added an AI chatbot using Groq and Llama 3.3 70B so you can ask it questions about the results or about cancer biology in general and it explains things in normal language.
How we built it
The frontend is React with Three.js for the 3D helix and we used Vite to build it. Backend is Fastify on Node.js. For the actual cancer prediction we trained a Random Forest model in Python using scikit-learn on mutation data across 11 cancer types. The AI chat part uses the Groq API with Llama 3.3 70B. We deployed everything on Render as one service so the backend serves both the API and the frontend.
Challenges we ran into
Getting the model to tell the difference between breast cancer and ovarian cancer was really hard because they share a lot of the same BRCA1 and BRCA2 mutations. The model kept predicting ovarian when we wanted breast. We ended up having to redo how we generated the training data and make certain mutations more strongly tied to one cancer over another. The other big challenge was making sure the AI chatbot actually recommends mutation combos that work with our model. We had to test a bunch of combinations and put the ones that work into the chatbot's prompt so it gives good suggestions.
Accomplishments that we're proud of
We got the model to 95.2% accuracy across 11 cancer types which honestly surprised us. The 3D helix is something we're really proud of too because it actually maps mutations to their real relative positions on the gene so it's not just a random visual. Being able to get the ML model, the 3D visualization, and the AI chatbot all working together in a weekend felt like a lot. This project fits right into the Cancer Applications in Genomics track since it's all about exploring real driver mutations and understanding how they relate to different cancers. The AI side of it also connects to the AI Applications in Biomedical Research track since we're using both a trained model and an LLM to make genomic data easier to understand.
What we learned
Before this project we didn't really know the difference between driver mutations and passenger mutations or how genes like TP53 work as tumor suppressors. We learned a lot about cancer biology just from building this. On the coding side we figured out how to hook up a Python ML model to a Node.js backend, how to do 3D stuff in the browser with Three.js, and how to write prompts for an LLM that give accurate science answers instead of generic ones. We also realized how careful you have to be when you're building anything that makes predictions about health.
What's next for MutationMap
We want to add more genes and more mutations so the predictions cover more of the cancer genome. It would be cool to pull in real data from databases like COSMIC or TCGA instead of synthetic data. We're also thinking about letting users upload VCF files from actual genetic tests. Eventually we think this could be a really good educational tool for students or anyone who wants to understand how genetics and cancer are connected.
Built With
- avascript
- fastify-5
- groq-api-(llama-3.3-70b)
- html/css
- joblib
- node.js
- pandas
- python
- react-19
- react-three-fiber
- render
- scikit-learn
- three.js
- vite-6
Log in or sign up for Devpost to join the conversation.