# app.py import streamlit as st from Bio import pairwise2 from Bio.pairwise2 import format_alignment # Page Configuration st.set_page_config( page_title="๐Ÿงฌ DNA Sequence Matcher", page_icon="๐Ÿงฌ", layout="centered" ) # Header st.markdown( "

๐Ÿงฌ DNA Sequence Matcher

", unsafe_allow_html=True ) st.markdown( "

Align and compare two DNA sequences using Biopython

", unsafe_allow_html=True ) # User Input for DNA Sequences st.subheader("๐Ÿ”ฌ Input DNA Sequences") seq1 = st.text_area("Enter DNA Sequence 1:", placeholder="e.g., ATCGTACGTA") seq2 = st.text_area("Enter DNA Sequence 2:", placeholder="e.g., ATCGTAGCTA") # Alignment Parameters st.subheader("โš™๏ธ Alignment Parameters") match_score = st.slider("Match Score", min_value=1, max_value=5, value=2) mismatch_penalty = st.slider("Mismatch Penalty", min_value=-5, max_value=0, value=-1) gap_open_penalty = st.slider("Gap Open Penalty", min_value=-5, max_value=0, value=-2) gap_extend_penalty = st.slider("Gap Extend Penalty", min_value=-5.0, max_value=0.0, value=-0.5, step=0.1) # Perform Alignment if st.button("๐Ÿงช Align Sequences"): if not seq1 or not seq2: st.warning("โš ๏ธ Please enter both DNA sequences.") else: alignments = pairwise2.align.globalms( seq1, seq2, match_score, mismatch_penalty, gap_open_penalty, gap_extend_penalty ) # Display Results st.subheader("๐Ÿ” Alignment Results") if alignments: for alignment in alignments[:1]: # Show only the top alignment st.code(format_alignment(*alignment)) else: st.error("โŒ No alignment could be found.") # Footer st.markdown( "

๐Ÿ’ป Developed by ChatGPT

", unsafe_allow_html=True )