Spaces:
Runtime error
Runtime error
| import gradio as gr | |
| import torch | |
| from transformers import AutoTokenizer, AutoModelForSequenceClassification | |
| # Points to your newly renamed repo | |
| MODEL_ID = "assix-research/genomic-transformer-aphasia-recovery" | |
| # Load model and tokenizer | |
| print("Loading model from Hub...") | |
| tokenizer = AutoTokenizer.from_pretrained(MODEL_ID) | |
| model = AutoModelForSequenceClassification.from_pretrained( | |
| MODEL_ID, | |
| trust_remote_code=True | |
| ) | |
| def predict_recovery(dna_sequence): | |
| """ | |
| Function to process DNA sequence and return a clinical prediction. | |
| """ | |
| # Basic validation for DNA characters | |
| dna_sequence = dna_sequence.strip().upper() | |
| if not dna_sequence or not all(base in "ATCG" for base in dna_sequence): | |
| return "Error", "Invalid DNA sequence. Please use only A, T, C, and G." | |
| # Tokenize and predict | |
| inputs = tokenizer(dna_sequence, return_tensors="pt", truncation=True, max_length=1024) | |
| with torch.no_grad(): | |
| logits = model(**inputs).logits | |
| # Scale result for WAB-AQ (0-100) | |
| score = max(0, min(100, logits.item())) | |
| # Clinical Categorization | |
| if score > 75: | |
| category = "High Plasticity Potential" | |
| insight = "Genomic markers suggest a high capacity for spontaneous neural reorganization." | |
| elif score > 40: | |
| category = "Moderate Plasticity" | |
| insight = "Standard recovery path; likely to benefit significantly from consistent SLT." | |
| else: | |
| category = "Structural Reliance" | |
| insight = "Recovery may depend more on physical white matter integrity than genomic plasticity." | |
| return f"{score:.2f}/100", f"{category}: {insight}" | |
| # Build the Interface | |
| demo = gr.Interface( | |
| fn=predict_recovery, # Function name now matches definition above | |
| inputs=gr.Textbox( | |
| label="Input Genomic Sequence (Nucleotides)", | |
| placeholder="Enter 1024bp DNA sequence...", | |
| lines=8 | |
| ), | |
| outputs=[ | |
| gr.Label(label="Predicted WAB-AQ Potential"), | |
| gr.Textbox(label="Clinical Interpretation") | |
| ], | |
| title="🧬 Stroke-Recovery-Analyser (v1.0)", | |
| description="Analyze the biological plasticity potential for post-stroke aphasia recovery using a fine-tuned Nucleotide Transformer v2.", | |
| examples=[ | |
| ["ATGACCATCCTTTTCCTTACTATGGTTATTTCATACTTTGGTTGCATGAAGGCTGCCCCCATGAAAGAAGCAAACATCCGAGGACAAGGTGGCTTGGCCTACCCAGGTGTGCGGACCCATGGGACTCTGGAGAGCGTGAATGGGCCCAAGGCAGGTTCAAGAGGCTTGACATCATTGGCTGACACTTTCGAACACGTGATAGAAGAGCTGTTGGATGAGGACCAGAAAGTTCGGCCCAATGAAGAAAACAATAAGGACGCAGACTTGTACACGTCCAGGGTGATGCTCAGTAGTCAAGTGCCTTTGGAGCCTCCTCTTCTCTTTCTGCTGGAGGAATACAAAAATTACCTAGATGCTGCAAACATGTCCATGAGGGTCCGGCGCCACTCTGACCCTGCCCGCCGAGGGGAGCTGAGCGTGTGTGACAGTATTAGTGAGTGGGTAACGGCGGCAGACAAAAAGACTGCAGTGGACATGTCGGGCGGGACGGTCACAGTCCTTGAAAAGGTCCCTGTATCAAAAGGCCAACTGAAGCAATACTTCTACGAGACCAAGTGCAATCCCATGGGTTACACAAAAGAAGGCTGCAGGGGCATAGACAAAAGGCATTGGAACTCCCAGTGCCGAACTACCCAGTCGTACGTGCGGGCCCTTACCATGGATAGCAAAAAGAGAATTGGCTGGCGATTCATAAGGATAGACACTTCTTGTGTATGTACATTGACCATTAAAAGGGGAAGATAG"], # Val/Val | |
| ["ATGACCATCCTTTTCCTTACTATGGTTATTTCATACTTTGGTTGCATGAAGGCTGCCCCCATGAAAGAAGCAAACATCCGAGGACAAGGTGGCTTGGCCTACCCAGGTGTGCGGACCCATGGGACTCTGGAGAGCGTGAATGGGCCCAAGGCAGGTTCAAGAGGCTTGACATCATTGGCTGACACTTTCGAACACATGATAGAAGAGCTGTTGGATGAGGACCAGAAAGTTCGGCCCAATGAAGAAAACAATAAGGACGCAGACTTGTACACGTCCAGGGTGATGCTCAGTAGTCAAGTGCCTTTGGAGCCTCCTCTTCTCTTTCTGCTGGAGGAATACAAAAATTACCTAGATGCTGCAAACATGTCCATGAGGGTCCGGCGCCACTCTGACCCTGCCCGCCGAGGGGAGCTGAGCGTGTGTGACAGTATTAGTGAGTGGGTAACGGCGGCAGACAAAAAGACTGCAGTGGACATGTCGGGCGGGACGGTCACAGTCCTTGAAAAGGTCCCTGTATCAAAAGGCCAACTGAAGCAATACTTCTACGAGACCAAGTGCAATCCCATGGGTTACACAAAAGAAGGCTGCAGGGGCATAGACAAAAGGCATTGGAACTCCCAGTGCCGAACTACCCAGTCGTACGTGCGGGCCCTTACCATGGATAGCAAAAAGAGAATTGGCTGGCGATTCATAAGGATAGACACTTCTTGTGTATGTACATTGACCATTAAAAGGGGAAGATAG"] # Val/Met | |
| ] | |
| ) | |
| if __name__ == "__main__": | |
| demo.launch() |