Spaces:
Running
Running
Enhance model loading and error handling in app.py
Browse files
app.py
CHANGED
@@ -126,7 +126,13 @@ def load_model_and_tokenizer():
|
|
126 |
status_text.text(f"⚠️ Failed to load from Hugging Face: {str(e)[:50]}...")
|
127 |
status_text.text("Loading base model as fallback...")
|
128 |
st.session_state.model = BigBirdForMaskedLM.from_pretrained("adibvafa/CodonTransformer")
|
129 |
-
st.session_state.model
|
|
|
|
|
|
|
|
|
|
|
|
|
130 |
st.session_state.model_type = "base"
|
131 |
|
132 |
progress_bar.progress(100)
|
@@ -296,7 +302,8 @@ def calculate_input_metrics(sequence: str, organism: str, sequence_type: str) ->
|
|
296 |
metrics['tai'] = None
|
297 |
try:
|
298 |
analysis_dna = metrics['baseline_dna']
|
299 |
-
|
|
|
300 |
metrics['negative_cis_elements'] = count_negative_cis_elements(analysis_dna)
|
301 |
metrics['homopolymer_runs'] = calculate_homopolymer_runs(analysis_dna)
|
302 |
except:
|
@@ -608,9 +615,9 @@ def run_optimization(protein: str, organism: str, use_post_processing: bool = Fa
|
|
608 |
# Create enhanced result object
|
609 |
from CodonTransformer.CodonUtils import DNASequencePrediction
|
610 |
st.session_state.post_processed_results = DNASequencePrediction(
|
611 |
-
organism=
|
612 |
-
protein=
|
613 |
-
processed_input=
|
614 |
predicted_dna=polished_sequence
|
615 |
)
|
616 |
except Exception as e:
|
@@ -706,7 +713,7 @@ def single_sequence_optimization():
|
|
706 |
st.header("🧬 Input Sequence")
|
707 |
sequence_input = st.text_area(
|
708 |
"Enter Protein or DNA Sequence",
|
709 |
-
height=
|
710 |
placeholder="Enter protein sequence (MKWVT...) or DNA sequence (ATGGCG...)\n\nExample protein: MKWVTFISLLFLFSSAYSRGVFRRDAHKSEVAHRFKDLGEENFKALVLIAFAQYLQQCPFEDHVKLVNEVTEFAKTCVADESAENCDKSLHTLFGDKLCTVATLRETYGEMADCCAKQEPERNECFLQHKDDNPNLPRLVRPEVDVMCTAFHDNEETFLKKYLYEIARRHPYFYAPELLFFAKRYKAAFTECCQAADKAACLLPKLDELRDEGKASSAKQRLKCASLQKFGERAFKAWAVARLSQRFPKAEFAEVSKLVTDLTKVHTECCHGDLLECADDRADLAKYICENQDSISSKLKECCEKPLLEKSHCIAEVENDEMPADLPSLAADFVESKDVCKNYAEAKDVFLGMFLYEYARRHPDYSVVLLLRLAKTYETTLEKCCAAADPHECYAKVFDEFKPLVEEPQNLIKQNCELFEQLGEYKFQNALLVRYTKKVPQVSTPTLVEVSRNLGKVGSKCCKHPEAKRMPCAEDYLSVVLNQLCVLHEKTPVSDRVTKCCTE"
|
711 |
)
|
712 |
analyze_btn = st.button("Analyze Sequence", type="primary")
|
@@ -809,10 +816,10 @@ def single_sequence_optimization():
|
|
809 |
if st.button("🚀 Optimize Sequence", type="primary", use_container_width=True):
|
810 |
st.session_state.results = None
|
811 |
if st.session_state.sequence_type == "dna":
|
812 |
-
protein_sequence = translate_dna_to_protein(st.session_state.sequence_clean)
|
813 |
-
run_optimization(protein_sequence, st.session_state.organism, use_post_processing)
|
814 |
else:
|
815 |
-
run_optimization(st.session_state.sequence_clean, st.session_state.organism, use_post_processing)
|
816 |
|
817 |
# Enhanced progress display
|
818 |
if st.session_state.optimization_running:
|
@@ -906,7 +913,7 @@ def display_optimization_results(result, organism, original_sequence, sequence_t
|
|
906 |
|
907 |
# Optimized DNA sequence display
|
908 |
st.subheader("🧬 Optimized DNA Sequence")
|
909 |
-
st.text_area("Optimized DNA Sequence", result.predicted_dna, height=
|
910 |
|
911 |
# Enhanced download and export options
|
912 |
col1, col2, col3 = st.columns(3)
|
|
|
126 |
status_text.text(f"⚠️ Failed to load from Hugging Face: {str(e)[:50]}...")
|
127 |
status_text.text("Loading base model as fallback...")
|
128 |
st.session_state.model = BigBirdForMaskedLM.from_pretrained("adibvafa/CodonTransformer")
|
129 |
+
if isinstance(st.session_state.model, torch.nn.Module):
|
130 |
+
if isinstance(st.session_state.model, torch.nn.Module):
|
131 |
+
st.session_state.model.to(st.session_state.device)
|
132 |
+
else:
|
133 |
+
st.warning("Fallback model loaded is not a PyTorch module. Cannot move to device.")
|
134 |
+
else:
|
135 |
+
st.warning("Fallback model loaded is not a PyTorch module. Cannot move to device.")
|
136 |
st.session_state.model_type = "base"
|
137 |
|
138 |
progress_bar.progress(100)
|
|
|
302 |
metrics['tai'] = None
|
303 |
try:
|
304 |
analysis_dna = metrics['baseline_dna']
|
305 |
+
# scan_for_restriction_sites returns an int, not a list, so no need for len()
|
306 |
+
metrics['restriction_sites'] = scan_for_restriction_sites(analysis_dna)
|
307 |
metrics['negative_cis_elements'] = count_negative_cis_elements(analysis_dna)
|
308 |
metrics['homopolymer_runs'] = calculate_homopolymer_runs(analysis_dna)
|
309 |
except:
|
|
|
615 |
# Create enhanced result object
|
616 |
from CodonTransformer.CodonUtils import DNASequencePrediction
|
617 |
st.session_state.post_processed_results = DNASequencePrediction(
|
618 |
+
organism=_res.organism,
|
619 |
+
protein=_res.protein,
|
620 |
+
processed_input=_res.processed_input,
|
621 |
predicted_dna=polished_sequence
|
622 |
)
|
623 |
except Exception as e:
|
|
|
713 |
st.header("🧬 Input Sequence")
|
714 |
sequence_input = st.text_area(
|
715 |
"Enter Protein or DNA Sequence",
|
716 |
+
height=300,
|
717 |
placeholder="Enter protein sequence (MKWVT...) or DNA sequence (ATGGCG...)\n\nExample protein: MKWVTFISLLFLFSSAYSRGVFRRDAHKSEVAHRFKDLGEENFKALVLIAFAQYLQQCPFEDHVKLVNEVTEFAKTCVADESAENCDKSLHTLFGDKLCTVATLRETYGEMADCCAKQEPERNECFLQHKDDNPNLPRLVRPEVDVMCTAFHDNEETFLKKYLYEIARRHPYFYAPELLFFAKRYKAAFTECCQAADKAACLLPKLDELRDEGKASSAKQRLKCASLQKFGERAFKAWAVARLSQRFPKAEFAEVSKLVTDLTKVHTECCHGDLLECADDRADLAKYICENQDSISSKLKECCEKPLLEKSHCIAEVENDEMPADLPSLAADFVESKDVCKNYAEAKDVFLGMFLYEYARRHPDYSVVLLLRLAKTYETTLEKCCAAADPHECYAKVFDEFKPLVEEPQNLIKQNCELFEQLGEYKFQNALLVRYTKKVPQVSTPTLVEVSRNLGKVGSKCCKHPEAKRMPCAEDYLSVVLNQLCVLHEKTPVSDRVTKCCTE"
|
718 |
)
|
719 |
analyze_btn = st.button("Analyze Sequence", type="primary")
|
|
|
816 |
if st.button("🚀 Optimize Sequence", type="primary", use_container_width=True):
|
817 |
st.session_state.results = None
|
818 |
if st.session_state.sequence_type == "dna":
|
819 |
+
protein_sequence = translate_dna_to_protein(str(st.session_state.sequence_clean))
|
820 |
+
run_optimization(protein_sequence, str(st.session_state.organism), use_post_processing)
|
821 |
else:
|
822 |
+
run_optimization(str(st.session_state.sequence_clean), str(st.session_state.organism), use_post_processing)
|
823 |
|
824 |
# Enhanced progress display
|
825 |
if st.session_state.optimization_running:
|
|
|
913 |
|
914 |
# Optimized DNA sequence display
|
915 |
st.subheader("🧬 Optimized DNA Sequence")
|
916 |
+
st.text_area("Optimized DNA Sequence", result.predicted_dna, height=300)
|
917 |
|
918 |
# Enhanced download and export options
|
919 |
col1, col2, col3 = st.columns(3)
|