Inspiration
One of the biggest issues in health today arises from genetic disorders. Diseases like Huntington’s, Cystic fibrosis, and fatal familial insomnia all originate from genetics. With new biological innovations like CRISPR Cas9 that allow for the possibility to edit DNA, these genetic diseases could potentially be wiped out. Thus, it will be important to know what genetic diseases an offspring might have to aid in association with these gene editing technologies. Even without considering genetic engineering, a program that can calculate the possibilities of your child having any genetic disorder can be helpful for expecting parents.
What it does
A helpful and fundamental way to represent the probabilities of genes is through Punnett squares. The alleles of one parent on the horizontal axis and the alleles of the other parent on the vertical axis are crossed in the inner boxes of the Punnett square. We extrapolate this basic technique for a comprehensive list of genetic disorders and their path of inheritance (whether the gene that encodes for the genetic disorder is recessive or dominant) in the Genetic Disorder Calculator.
The Genetic Disorder Calculator takes in information about the parents’ known genetic disorders that is inputted through a search bar on the website. Then, it outputs the possibility of the child having genetic disorders that their parents have and has a feature that allows the program to email the user the results.
How we built it
We used Python to code the foundational algorithm. Then, we use javascript to make a user search bar that has a drop down menu for suggestions of diseases as the user types. The entire user interface is encapsulated in a website coded with HTML and styled with CSS. We used Flask as a framework to connect our Python code to our website.
Challenges we ran into
One of our preliminary challenges was finding a data set that had a comprehensive list of genetic diseases and whether or not they are inherited as a dominant or recessive allele. However, after a bit more searching, we eventually did find a data set that had this information represented in a table along with additional information about the genetic diseases too. Because of this extra information, parsing through the data to isolate specific HTML tags was also a challenge. Keys and values had unnecessary values such as escape sequences. Cutting out this unnecessary information involved specific use of stripping and slicing methods.
When we were developing our website, we wanted to create a dropdown menu that stores around 300 items. At first, we were confused on how to accomplish this. However, we were able to code it more efficiently by using Python to write all of the links of each button for each genetic disease. Additionally, we had trouble combining the backend and the frontend together, but we researched the information we needed in order to complete this part successfully, learning new skills as we went on.
Accomplishments that we're proud of
Building this project was a journey that came with many challenges. However, we were able to work our way through them in order to achieve a functional program that we are proud of.
- Acquisition of data from the internet. Our idea of pulling from the HTML works well with our project since when new genetic diseases are discovered, the website gets updated along with our program.
- Coding the different probabilities for different genotypes of disorders
- Finishing the backend part of our website
- Connecting backend to the frontend
- Programming how to send an email through the website
- Brainstorming. During our brainstorming session on the first day, we came up with many ideas, and the creativity was flowing off of us. We thoroughly discussed the limitations, the feasibility, the audience, and the impact for each idea.
- Collaboration. Working as a team is a delicate but rewarding process, and we accomplished this with so much stride. We listened to each other’s ideas and problem-solved together when one of our team members wanted to clarify the most effective way to do a part of the project (for example using flask to connect the python code to our website).
What we learned
During this process, we have gained so much knowledge and so many new skills. We learned more about programming terminology such as "backend" and "frontend". We also have strengthened our knowledge on using Flask in order to connect python to the HTML part of our site, and how data is transferred in between. Moreover, we learned specific skills on how to create a selector menu and how to send emails through a website.
Most importantly, during this process, we learned how to communicate and work with our teammates, learning something new and awesome about each other.
What's next for Genetic Disorder Calculator
For a more accurate calculator, we could take in account generations further up the family tree. This would give the calculator better insight on the specific genotype for parents who express the dominant trait. In other words, this would help determine if the parent’s genotypes are heterozygous or homozygous more definitively. We can also use sibling data in the pedigree to improve the accuracy of our calculator. Additionally, we could also make improvements by adding diseases that are passed down with codominance and X-linked genes for a greater range of types of genetic diseases the calculator can process.
For the website itself, we can improve user accessibility and style. Furthermore, we could research more on deep learning and use Meta-Spec, a new AI tool, in order to improve disease prediction accuracy.
Log in or sign up for Devpost to join the conversation.