bio-immunoinformatics-immunogenicity-scoring
Score and prioritize neoantigens and epitopes for immunogenicity using multi-factor models combining MHC binding, processing, expression, and sequence features. Rank candidates for vaccine design. Use when prioritizing epitopes for vaccine development or identifying the most immunogenic neoantigens.
Best use case
bio-immunoinformatics-immunogenicity-scoring is best used when you need a repeatable AI agent workflow instead of a one-off prompt.
Score and prioritize neoantigens and epitopes for immunogenicity using multi-factor models combining MHC binding, processing, expression, and sequence features. Rank candidates for vaccine design. Use when prioritizing epitopes for vaccine development or identifying the most immunogenic neoantigens.
Teams using bio-immunoinformatics-immunogenicity-scoring should expect a more consistent output, faster repeated execution, less prompt rewriting.
When to use this skill
- You want a reusable workflow that can be run more than once with consistent structure.
When not to use this skill
- You only need a quick one-off answer and do not need a reusable workflow.
- You cannot install or maintain the underlying files, dependencies, or repository context.
Installation
Claude Code / Cursor / Codex
Manual Installation
- Download SKILL.md from GitHub
- Place it in
.claude/skills/bio-immunoinformatics-immunogenicity-scoring/SKILL.mdinside your project - Restart your AI agent — it will auto-discover the skill
How bio-immunoinformatics-immunogenicity-scoring Compares
| Feature / Agent | bio-immunoinformatics-immunogenicity-scoring | Standard Approach |
|---|---|---|
| Platform Support | Not specified | Limited / Varies |
| Context Awareness | High | Baseline |
| Installation Complexity | Unknown | N/A |
Frequently Asked Questions
What does this skill do?
Score and prioritize neoantigens and epitopes for immunogenicity using multi-factor models combining MHC binding, processing, expression, and sequence features. Rank candidates for vaccine design. Use when prioritizing epitopes for vaccine development or identifying the most immunogenic neoantigens.
Where can I find the source code?
You can find the source code on GitHub using the link provided at the top of the page.
Related Guides
SKILL.md Source
## Version Compatibility
Reference examples tested with: MHCflurry 2.1+, numpy 1.26+, pandas 2.2+
Before using code patterns, verify installed versions match. If versions differ:
- Python: `pip show <package>` then `help(module.function)` to check signatures
If code throws ImportError, AttributeError, or TypeError, introspect the installed
package and adapt the example to match the actual API rather than retrying.
# Immunogenicity Scoring
**"Rank my neoantigen candidates by immunogenicity"** → Score and prioritize epitopes using multi-factor models combining MHC binding, proteasomal processing, expression level, and sequence foreignness for vaccine candidate selection.
- Python: `mhcflurry` for binding + processing predictions, custom scoring pipeline
## Multi-Factor Scoring
**Goal:** Calculate a composite immunogenicity score from multiple weighted factors (binding, agretopicity, processing, expression, clonality, foreignness).
**Approach:** Score each factor on a 0-1 scale, then combine via weighted sum with domain-informed weights.
```python
import pandas as pd
import numpy as np
def calculate_immunogenicity_score(peptide_data):
'''Calculate composite immunogenicity score
Factors considered:
1. MHC binding affinity (IC50)
2. Agretopicity (MT vs WT binding ratio)
3. Proteasomal processing
4. TAP transport
5. Expression level
6. Clonality (VAF for neoantigens)
7. Self-similarity (avoid tolerance)
Each factor scored 0-1, then weighted and combined.
'''
scores = {}
# 1. Binding affinity (lower IC50 = better)
# Transform to 0-1: 1 at 0nM, 0 at 5000nM
ic50 = peptide_data.get('ic50_nM', 500)
scores['binding'] = 1 - min(ic50 / 5000, 1)
# 2. Agretopicity (MT binds better than WT)
# Ratio of WT/MT IC50, capped at 10
agretopicity = peptide_data.get('agretopicity', 1.0)
scores['agretopicity'] = min(agretopicity / 10, 1)
# 3. Processing score (from MHCflurry)
processing = peptide_data.get('processing_score', 0.5)
scores['processing'] = processing
# 4. Expression (log scale, capped)
expression = peptide_data.get('expression_tpm', 10)
scores['expression'] = min(np.log10(expression + 1) / 3, 1)
# 5. Clonality (for neoantigens)
vaf = peptide_data.get('vaf', 0.5)
scores['clonality'] = vaf
# 6. Self-similarity (lower = better, less tolerance)
self_sim = peptide_data.get('self_similarity', 0.5)
scores['foreignness'] = 1 - self_sim
# Weighted combination
weights = {
'binding': 0.25,
'agretopicity': 0.20,
'processing': 0.10,
'expression': 0.15,
'clonality': 0.15,
'foreignness': 0.15
}
total = sum(scores[k] * weights[k] for k in weights)
return total, scores
```
## Processing Prediction
**Goal:** Predict proteasomal cleavage and TAP transport probability for candidate peptides.
**Approach:** Use MHCflurry's Class1ProcessingPredictor to score peptide processing likelihood.
```python
from mhcflurry import Class1ProcessingPredictor
def predict_processing_score(peptides):
'''Predict proteasomal cleavage and TAP transport
Processing score reflects probability that peptide will be:
1. Cleaved from protein by proteasome
2. Transported by TAP into ER
3. Loaded onto MHC
Higher processing score = more likely to be presented
'''
predictor = Class1ProcessingPredictor.load()
results = []
for peptide in peptides:
# Need surrounding sequence context for processing
# In practice, extract from protein context
pred = predictor.predict(peptides=[peptide])
results.append({
'peptide': peptide,
'processing_score': pred['processing_score'].values[0]
})
return pd.DataFrame(results)
```
## Self-Similarity Assessment
**Goal:** Determine whether a candidate peptide resembles self-peptides, indicating potential T-cell tolerance.
**Approach:** Compute pairwise sequence identity against a proteome peptide set and flag high-similarity matches.
```python
def calculate_self_similarity(peptide, proteome_peptides, threshold=0.8):
'''Check if peptide is similar to self-peptides
High similarity to self-peptides suggests:
- T-cells may be tolerized (deleted during development)
- Lower likelihood of immune response
Threshold 0.8 = 80% identity considered "self-like"
'''
def sequence_identity(seq1, seq2):
if len(seq1) != len(seq2):
return 0
matches = sum(1 for a, b in zip(seq1, seq2) if a == b)
return matches / len(seq1)
max_similarity = 0
most_similar = None
for self_peptide in proteome_peptides:
sim = sequence_identity(peptide, self_peptide)
if sim > max_similarity:
max_similarity = sim
most_similar = self_peptide
return {
'similarity': max_similarity,
'is_self_like': max_similarity >= threshold,
'closest_self': most_similar
}
```
## Hydrophobicity at Position 2
**Goal:** Assess MHC anchor residue quality by checking hydrophobicity at key positions.
**Approach:** Check whether position 2 and C-terminal residues fall within the hydrophobic amino acid set preferred by HLA-A*02:01-like alleles.
```python
def check_anchor_hydrophobicity(peptide):
'''Check hydrophobicity at MHC anchor positions
For HLA-A*02:01 and similar alleles:
- Position 2: Prefers hydrophobic (L, I, V, M)
- Position 9 (C-terminus): Prefers hydrophobic (L, V, I)
Strong anchors improve binding stability.
'''
hydrophobic = set('LIVMFYW')
pos2 = peptide[1] if len(peptide) > 1 else ''
pos_last = peptide[-1]
return {
'pos2_hydrophobic': pos2 in hydrophobic,
'pos_last_hydrophobic': pos_last in hydrophobic,
'anchor_score': (pos2 in hydrophobic) + (pos_last in hydrophobic)
}
```
## Rank Epitopes
**Goal:** Rank epitopes by composite immunogenicity score and assign confidence tiers for prioritization.
**Approach:** Score all candidates, sort by immunogenicity, and assign high/medium/low tiers based on percentile ranking.
```python
def rank_epitopes(epitope_df, top_n=20):
'''Rank epitopes by immunogenicity
Returns top candidates with scores and confidence tiers.
Confidence tiers:
- High: Top 5%, all factors favorable
- Medium: Top 20%, most factors favorable
- Low: Remaining, some factors favorable
'''
epitope_df = epitope_df.copy()
# Calculate scores
scores = []
factor_scores = []
for _, row in epitope_df.iterrows():
total, factors = calculate_immunogenicity_score(row.to_dict())
scores.append(total)
factor_scores.append(factors)
epitope_df['immunogenicity_score'] = scores
factor_df = pd.DataFrame(factor_scores)
# Combine
result = pd.concat([epitope_df, factor_df], axis=1)
# Rank
result = result.sort_values('immunogenicity_score', ascending=False)
# Assign tiers
n = len(result)
result['tier'] = 'low'
result.iloc[:int(n * 0.20), result.columns.get_loc('tier')] = 'medium'
result.iloc[:int(n * 0.05), result.columns.get_loc('tier')] = 'high'
return result.head(top_n)
```
## Compare Candidates
**Goal:** Select a diverse set of vaccine candidates with broad HLA coverage and non-overlapping positions.
**Approach:** Iterate through ranked candidates, selecting those with non-overlapping genomic positions to maximize epitope diversity.
```python
def compare_vaccine_candidates(candidates_df):
'''Compare and select vaccine candidates
Vaccine design typically selects:
- Multiple epitopes (5-20)
- Diverse HLA coverage
- High immunogenicity scores
- Non-overlapping sequences
'''
# Group by HLA coverage
hla_coverage = candidates_df.groupby('allele').size()
# Select diverse set
selected = []
used_positions = set()
for _, candidate in candidates_df.iterrows():
# Check for overlap with selected
pos = candidate.get('position', 0)
if not any(abs(pos - p) < 5 for p in used_positions):
selected.append(candidate)
used_positions.add(pos)
if len(selected) >= 20:
break
return pd.DataFrame(selected)
```
## Related Skills
- immunoinformatics/mhc-binding-prediction - Binding affinity component
- immunoinformatics/neoantigen-prediction - Input candidates
- immunoinformatics/epitope-prediction - Epitope identificationRelated Skills
bio-immunoinformatics-tcr-epitope-binding
Predict TCR-epitope specificity using ERGO-II and deep learning models for T-cell receptor antigen recognition. Match TCRs to their cognate epitopes or predict TCR targets. Use when analyzing TCR repertoire specificity or identifying antigen-reactive T-cells.
bio-immunoinformatics-neoantigen-prediction
Identify tumor neoantigens from somatic mutations using pVACtools for personalized cancer immunotherapy. Predict mutant peptides that bind patient HLA and may elicit T-cell responses. Use when identifying vaccine targets or checkpoint inhibitor response biomarkers from tumor sequencing data.
bio-immunoinformatics-mhc-binding-prediction
Predict peptide-MHC class I and II binding affinity using MHCflurry and NetMHCpan neural network models. Identify potential T-cell epitopes from protein sequences. Use when predicting MHC binding for vaccine design or neoantigen identification.
bio-immunoinformatics-epitope-prediction
Predict B-cell and T-cell epitopes using BepiPred, IEDB tools, and structure-based methods for vaccine and antibody design. Identify immunogenic regions in antigens. Use when designing vaccines, mapping antibody binding sites, or predicting immunogenic peptides.
zinc-database
Access ZINC (230M+ purchasable compounds). Search by ZINC ID/SMILES, similarity searches, 3D-ready structures for docking, analog discovery, for virtual screening and drug discovery.
zarr-python
Chunked N-D arrays for cloud storage. Compressed arrays, parallel I/O, S3/GCS integration, NumPy/Dask/Xarray compatible, for large-scale scientific computing pipelines.
xlsx
Use this skill any time a spreadsheet file is the primary input or output. This means any task where the user wants to: open, read, edit, or fix an existing .xlsx, .xlsm, .csv, or .tsv file (e.g., adding columns, computing formulas, formatting, charting, cleaning messy data); create a new spreadsheet from scratch or from other data sources; or convert between tabular file formats. Trigger especially when the user references a spreadsheet file by name or path — even casually (like "the xlsx in my downloads") — and wants something done to it or produced from it. Also trigger for cleaning or restructuring messy tabular data files (malformed rows, misplaced headers, junk data) into proper spreadsheets. The deliverable must be a spreadsheet file. Do NOT trigger when the primary deliverable is a Word document, HTML report, standalone Python script, database pipeline, or Google Sheets API integration, even if tabular data is involved.
writing-skills
Use when creating new skills, editing existing skills, or verifying skills work before deployment
writing-plans
Use when you have a spec or requirements for a multi-step task, before touching code
wikipedia-search
Search and fetch structured content from Wikipedia using the MediaWiki API for reliable, encyclopedic information
wellally-tech
Integrate digital health data sources (Apple Health, Fitbit, Oura Ring) and connect to WellAlly.tech knowledge base. Import external health device data, standardize to local format, and recommend relevant WellAlly.tech knowledge base articles based on health data. Support generic CSV/JSON import, provide intelligent article recommendations, and help users better manage personal health data.
weightloss-analyzer
分析减肥数据、计算代谢率、追踪能量缺口、管理减肥阶段