saherPervaiz's picture
Create app.py
94676e0 verified
import streamlit as st
# Function to find matches between reference and query sequences
def find_matches(reference, query):
matches = ""
for ref_char, query_char in zip(reference, query):
if ref_char == query_char:
matches += ref_char.upper()
else:
matches += "-"
match_percentage = (matches.count("-") / len(reference)) if len(reference) else 0
return matches, round((1 - match_percentage) * 100, 2)
# Streamlit app
st.title("DNA Sequence Matching 🧬")
st.subheader("Analyze the similarity between two DNA sequences")
# Input fields for sequences
reference = st.text_area(
"Enter Reference DNA Sequence:",
placeholder="e.g., ACTGACTGACTG"
).strip().upper()
query = st.text_area(
"Enter Query DNA Sequence:",
placeholder="e.g., ACTGTTTGACTG"
).strip().upper()
# Validate input
if st.button("Match DNA Sequences"):
if not reference or not query:
st.error("Please provide both Reference and Query DNA sequences.")
elif len(reference) != len(query):
st.error("The Reference and Query sequences must have the same length.")
else:
# Find matches and calculate percentage
matches, percentage = find_matches(reference, query)
# Display results
st.write("**Reference Sequence:**")
st.code(reference)
st.write("**Query Sequence:**")
st.code(query)
st.write("**Matching Sequence:**")
st.code(matches)
st.success(f"Match Percentage: {percentage}%")
st.write("Note: Sequences must be of the same length for accurate matching.")