*A dictionary is at the end for reference to biology terms.*

## Inspiration

We're at a hackathon right? So I thought, why stop at coding with 1s and 0s when we can code with A, T, G, and C? 🧬 Genetic engineering is a cornerstone of the modern world, whether its for agriculture, medicine, and more; but let's face it, it's got a bit of a learning curve. That's where GenomIQ comes in. I wanted to create a tool that lets anyone – yes, even you – play around with editing plasmids and dive into genetic engineering. But here's the kicker: we're not just making it easier, we're turbocharging it with the expressive ability of LLMs to potentially generate functional protein-coding DNA strings.

## What it does

GenomIQ streamlines plasmid engineering by combining AI-powered gene generation with a curated gene database. It uses a custom-finetuned Cohere model to create novel DNA sequences, validated for biological plausibility via AlphaFold 2 and iterated on. Alternatively, you can rapidly search for existing genes stored in our Chroma vectordb. The platform automatically optimizes restriction sites and integrates essential genetic elements. Users can easily design, modify, and export plasmids ready for real-world synthesis, bridging the gap between computational design and practical genetic engineering.

## How I built it

This is a Flask web app built with python, and vanilla html/css/js on the frontend. The vectordb is powered by Chroma. LLM is Cohere fine tuned on a short custom dataset included in the github repo. Restriction sites are automatically scored and sorted based on usefulness for clean insertion. Verification is performed by a local instance of Alphafold 2, which based on the provided DNA sequence will give you a structure file. I found a website that implements Prosa, a scoring metric for proteins, and built a web scrapper/bot that uploads your structure file and gathers the z-score from there. The plasmid viewer is a canvas that is updated whenever a route returns new features.

The repo also includes a file for a short fine tuning dataset builder tool with a GUI, that I put together to make it easier to fine tune my model.

I developed a benchmark set and performed an evaluation of the standard cohere model vs the fine tuned model, and compared their z-score across. As displayed in the image, the fine tune is much more capable of producing biologically plausible strings of DNA.
![Benchmark results](https://cdn.discordapp.com/attachments/966810847823405117/1284738453929590906/z_score_comparison.png?ex=66e7b96c&is=66e667ec&hm=80bb7c82525c97852610688a32b67fe929584bd00a5c22a68f06af78dc91dc87&)

## Challenges I ran into

Cohere api timeouts: lots of requests would not work randomly, had to use threading to check how long it was running, and be able to cut it off if it takes too long.

Frontend as a whole was a big challenge, I have hardly built web apps before so this was a lot of back and forth, wondering why X element wont go to the center of the page no matter how hard I try.

## Accomplishments that I'm proud of

Building a cool project in a day and a half :)

## What I learned

Vector db, alphafold, genetic engineering,

## What's next for GenomIQ

I want to evaluate what a tool like GenomIQ's place in the world could be. I want to reach out to people who would be interested in such a tool, and see what direction to take it in. There are a lot of improvements that can be made, as well as opportunity for some incredible new features.

## Dictionary

**Plasmid**: Small circular ring of DNA. These are typically cut up and have new genes inserted into them. Afterwards, these plasmids are inserted into organisms like yeast, bacteria, etc who will now express the new gene.

**Restriction site**: The zones on the plasmid where we do the cutting. Some sites are more desirable than others, typically given by uniqueness (only want to cut in one spot) and distance from other genes/features (don't want to cut up something important).

*Sorry if any of this seems jumbled... im really tired.*
## Inspiration

After looking into the materials challenge, we realized that our backgrounds in image processing as well as elegant UIs made for a perfect way to gather information about microstructures and display it in a way that could allow for simple, autonomous analysis.

## What it does

Our project is split into two parts:

First, using the provided datasets and python's OpenCV library, we use image processing to detect grain boundaries and different phases of images. This information is used to calculate various traits of the sample presented (such as the grain size, distribution, and phase fractions). This information is displayed in our web app using flask and bulma.

With our Selenium web scraper, we scrape the NIMS (the National Institute for Materials Science Japan) for microstructures. Then, using an automated photoshop workflow, they're cropped and organized based on magnification. These images are now ready to be processed using the aforementioned techniques.

## How we built it

We built our project mainly through good communication. We split up tasks and trusted each other to uphold our ends of the project. We all decided to communicate with each other frequently to ensure we were on the same page and aware of the status of our projects.

## Challenges we ran into

* Putting the pieces together: because we didn't all have skills conducive to a full Python project, our group had to learn flask to accommodate our skills and work through the challenges we faced.
* Grain boundary detection: some images (especially from our own scraped datasets) were very hard to analyze. Getting around this required some fine tuning of our algorithms and a lot of time.

## Accomplishments that we're proud of

We're proud to have:

* Learned how to web scrape
* Practiced the materials skills we built up in engineering
* Worked together in a group of three but still have created an amazing project

## What we learned

* How to better communicate our status with our parts of the project to ensure mutual success
* To take it easy
* How to best solve issues when we're struggling with identical code bases (it's probably an environment problem)

## What's next for MicroScan

For Version 2.0, MicroScan will:

* directly integrate the scraper into its codebase
* have more advanced detection and analysis of microstructure images
\*Use better kernel technology for grain boundary detection
\*Develop image analysis techniques to better analyze heavily curtained data (given curtain information)
## Inspiration

Protein Language Models are an exciting new area of development. We wanted to see how they could be applied outside of merely obtaining protein embeddings—to generate meaningful proteins. Enzymes are almost unparalleled in their ubiquity and usefulness throughout nature. Therefore, we saw it a natural fit to try to generate enzymes for our project.

## What it does

HackEnzyme takes in molecule strings called SMILES, and outputs the predicted amino acid sequence that breaks down or combines the substrate.

## How we built it

Our first goal was to acquire a dataset, we scraped multiple Rest Api’s to have a label: enzyme sequence: with corresponding: chemical compound strings, smiles. From this, we utilized models to map smiles strings into embeddings, and then appending back to its corresponding enzyme sequence.

We fine tuned Roslab.Prot\_T5\_Large on our bioinformatic dataset that we created earlier, integrating into our web application.

We implement esm-fold which maps protein sequences to 3d structures to better understand the output of our model.

## Challenges we ran into

Lack of datasets
Mapping smiles sequences to embedding space
File type embedding complications
Problem with Implementing the Model
Bypassing encoders
Training the Model
Lack of Computational Power
API integration with the front-end
The model
3D Protein Sequence Modelling
Chat-GPT LLM Integration

## Accomplishments that we're proud of

We are proud of our ability to collaborate on a topic that the majority of the team lacked understanding of. There was common discussion about different project ideas because of our lack of confidence; however, our perseverance and restlessness are what made our project pull-through.

## What we learned

Better understood transformer layers
3D Protein Modelling and Full-Stack Integration
A lot of Biology

## What's next for HackEnzyme

Optimizing the base model
Using more parameters
Training the model on a bigger dataset
Fine tuning on multiple sequence alignments, chemical properties, and functional annotations to create a model that can be used to generate enzymes with specific properties outside of their input and output.