Spaces:
Sleeping
Sleeping
| import streamlit as st | |
| from difflib import SequenceMatcher | |
| # Function to calculate DNA sequence similarity | |
| def calculate_similarity(seq1, seq2): | |
| # Calculate similarity ratio using SequenceMatcher | |
| seq_matcher = SequenceMatcher(None, seq1, seq2) | |
| return seq_matcher.ratio() * 100 | |
| # Function to display DNA sequence matching results | |
| def display_results(seq1, seq2, similarity): | |
| st.subheader("Results") | |
| st.write(f"DNA Sequence 1: {seq1}") | |
| st.write(f"DNA Sequence 2: {seq2}") | |
| if similarity == 100: | |
| st.success("The DNA sequences are an exact match!") | |
| elif similarity > 0: | |
| st.warning(f"The sequences are {similarity:.2f}% similar.") | |
| else: | |
| st.error("The sequences do not match.") | |
| # Title of the app | |
| st.title("DNA Sequence Matching App") | |
| # User input for DNA Sequences | |
| st.subheader("Enter two DNA sequences to match:") | |
| seq1 = st.text_area("DNA Sequence 1 (e.g., ATCGGCTA)", height=150) | |
| seq2 = st.text_area("DNA Sequence 2 (e.g., ATCGGCTA)", height=150) | |
| if st.button("Match Sequences"): | |
| # Remove any spaces or newline characters from the sequences | |
| seq1 = seq1.replace(" ", "").replace("\n", "").upper() | |
| seq2 = seq2.replace(" ", "").replace("\n", "").upper() | |
| # Check if the sequences are non-empty | |
| if seq1 and seq2: | |
| similarity = calculate_similarity(seq1, seq2) | |
| display_results(seq1, seq2, similarity) | |
| else: | |
| st.error("Both DNA sequences must be entered.") | |
| # Optional: DNA Sequence Upload (CSV or Text file input) | |
| st.sidebar.subheader("Upload DNA Sequences") | |
| uploaded_file = st.sidebar.file_uploader("Upload file with DNA sequences", type=["txt", "csv"]) | |
| if uploaded_file is not None: | |
| # Read the uploaded file and assume it's a text file with sequences | |
| content = uploaded_file.read().decode("utf-8").strip().splitlines() | |
| if len(content) >= 2: | |
| seq1 = content[0] | |
| seq2 = content[1] | |
| similarity = calculate_similarity(seq1, seq2) | |
| display_results(seq1, seq2, similarity) | |
| else: | |
| st.sidebar.error("The uploaded file must contain at least two DNA sequences.") | |