Spaces:
Runtime error
Runtime error
File size: 3,835 Bytes
8bf0e05 36b0510 bb71d5a 8bf0e05 36b0510 8bf0e05 36b0510 8bf0e05 36b0510 8bf0e05 36b0510 8bf0e05 36b0510 c64cdc9 36b0510 c64cdc9 36b0510 c64cdc9 36b0510 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 | 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() |