mrna-design-studio / MODELS_ADDED.md
offtargeteffect's picture
Deploy mRNA Design Studio (Docker SDK)
99f834c verified
|
Raw
History Blame Contribute Delete
4.76 kB
# mRNA Scoring Models - Implementation Summary
I've successfully added two mRNA scoring models to the core package as requested.
## Models Added
### 1. **RNAstructure MFE Scorer** (`models/rna_structure_scorer.py`)
**What it does**: Predicts the minimum free energy (MFE) of mRNA secondary structure to assess translation efficiency.
**Key features**:
- Uses ViennaRNA when available for accurate MFE calculation
- Falls back to GC-content based proxy scoring when ViennaRNA is not installed
- Score range: 0-100 (optimal: 40-70)
- Higher scores indicate stronger secondary structures
**Scientific basis**: Based on ViennaRNA thermodynamic calculations (Lorenz et al., 2011)
---
### 2. **mRNA Stability Scorer** (`models/mrna_stability_scorer.py`)
**What it does**: Composite stability prediction combining five established mRNA design principles.
**Scoring components**:
1. **GC Content** (30% weight) - Optimal range: 50-60%
2. **Codon Adaptation Index** (25% weight) - Codon optimization
3. **Homopolymer Detection** (20% weight) - Penalizes long identical runs
4. **5' UTR Structure** (15% weight) - Moderate stability preferred
5. **Kozak Consensus** (10% weight) - Translation initiation strength
**Key features**:
- Score range: 0-100 (70+ = excellent, 40-70 = acceptable, <40 = poor)
- Configurable for different organisms (default: human)
- Individual component scores accessible for detailed analysis
**Scientific basis**:
- Kozak sequence analysis (Mauro & Edelman, 2002)
- CAI methodology (Sharp & Li, 1987)
- mRNA stability research (Presnyak et al., 2015)
---
## Files Created
```
models/
β”œβ”€β”€ rna_structure_scorer.py # RNAstructure MFE model
β”œβ”€β”€ mrna_stability_scorer.py # mRNA Stability composite model
β”œβ”€β”€ __init__.py # Updated to export new models
└── README.md # Full documentation
tests/
└── test_models.py # Added comprehensive tests for both models
demo/
└── demo_models.py # Demo script showing usage
```
---
## Testing Results
All tests pass successfully:
```bash
$ pytest tests/test_models.py::TestRNAStructureMFEScorer -v
$ pytest tests/test_models.py::TestmRNAStabilityScorer -v
8 passed in 0.13s βœ“
```
---
## Usage Example
```python
from core.models.sequence import mRNASequence
from models import RNAStructureMFEScorer, mRNAStabilityScorer
# Create a sequence
seq = mRNASequence(
name="my_mrna",
source="local",
five_prime_utr="GTTGCTCCTTCGGGCCTGTGGCGGCT",
kozak="GCCACCATGG",
cds="ATGGTGAGCAAGGGCGAGGAG...",
)
# Score with MFE model
mfe_scorer = RNAStructureMFEScorer()
mfe_score = mfe_scorer.score(seq)
print(f"MFE Score: {mfe_score:.1f}/100")
# Score with Stability model
stability_scorer = mRNAStabilityScorer(organism="human")
stability_score = stability_scorer.score(seq)
print(f"Stability Score: {stability_score:.1f}/100")
```
---
## Demo Output
Run the demo to see both models in action:
```bash
$ PYTHONPATH=. .venv/bin/python demo/demo_models.py
```
Sample output:
```
RNAstructure MFE Scorer
Score: 64.2/100
Interpretation: Optimal structure for translation βœ“
mRNA Stability Scorer
Overall Score: 76.2/100
Interpretation: Excellent design βœ“
Component Breakdown:
GC Content (30%): 100.0/100
CAI (25%): 63.9/100
Homopolymers (20%): 65.0/100
5' UTR (15%): 61.5/100
Kozak (10%): 80.0/100
```
---
## ModelRegistry Integration
Both models are compatible with the existing ModelRegistry system:
```python
from models import ModelRegistry
registry = ModelRegistry()
registry._register(RNAStructureMFEScorer(), "scoring", "builtin", "")
registry._register(mRNAStabilityScorer(), "scoring", "builtin", "")
# Batch score sequences
results = registry.run_scoring("mRNA Stability", sequences)
```
---
## Dependencies
**Required**:
- Core Python libraries (no additional dependencies for basic functionality)
**Optional** (for enhanced features):
- `ViennaRNA` - For accurate RNA secondary structure prediction
- `BioPython` - For advanced codon usage analysis
Both models degrade gracefully when optional dependencies are missing.
---
## Next Steps
To integrate these models into the UI sidebar:
1. Update `ui/components/sidebar.py` to show loaded models
2. Implement model loading UI in the "βŠ• Load Model" button handler
3. Auto-register built-in models on app startup
4. Add model scoring to the Worklist view
---
## References
- **ViennaRNA**: Lorenz et al. (2011). Algorithms for Molecular Biology, 6:26
- **Kozak**: Mauro & Edelman (2002). PNAS, 99(19):12031-12036
- **CAI**: Sharp & Li (1987). Nucleic Acids Research, 15(3):1281-1295
- **mRNA Stability**: Presnyak et al. (2015). Cell, 160(6):1111-1124