Thermodynamic Metrics Interpretation Guideο
This guide helps you interpret the thermodynamic metrics in siRNAforge output files and optimize siRNA selection based on specific experimental needs.
Quick Reference Tableο
Metric |
Optimal Range |
Good Range |
Poor Range |
Units |
|---|---|---|---|---|
GC Content |
40-55% |
35-60% |
<35% or >65% |
% |
Asymmetry Score |
0.7-1.0 |
0.6-0.8 |
<0.5 |
0-1 scale |
Paired Fraction |
0.5-0.7 |
0.4-0.8 |
<0.3 or >0.9 |
0-1 scale |
MFE |
-4 to -7 |
-2 to -8 |
<-10 or >0 |
kcal/mol |
Duplex Stability ΞG |
see note |
see note |
β |
kcal/mol |
Delta ΞG End ( |
+2 to +5 |
+1 to +6 |
<0 |
kcal/mol |
Melting Temp |
65-75Β°C |
60-78Β°C |
<50Β°C or >80Β°C |
Β°C |
Off-target Count |
0-1 |
0-3 |
>5 |
count |
Note on off_target_count: as of 0.6.0 this column counts genuine off-targets only β
hits classified on-target, ortholog (same gene in another screened species) or repeat-mediated
are excluded and reported in their own columns (on_target_hits, ortholog_hits,
repeat_hits). A threshold carried over from an earlier version is now stricter than the author
intended, because the same numeric cutoff now applies to a smaller, cleaner count.
Note on duplex_stability_dg: since 0.5.2 this is the ΞG of the full guide:passenger
duplex, which scales with length β a fully paired 21mer measures -32 to -43 kcal/mol
(median -39). There is no efficacy-validated window for it in siRNAforge: it is not
enforced as a filter and does not feed composite_score. Compare candidates by the
length-normalised duplex_stability_score within a run instead. Pre-0.5.2 values (roughly
-5 to -25) came from folding the guide against itself and are not comparable.
Analyzing Your Resultsο
Step 1: Load and Examine Dataο
# View top candidates sorted by composite score
head -10 your_results/sirna_design/candidates_pass.csv
# Check distribution of key metrics
csvcut -c gc_content,asymmetry_score,mfe,duplex_stability_dg,delta_dg_end,melting_temp_c \
your_results/sirna_design/candidates_pass.csv | head -20
The awk filters below resolve columns by header name rather than by position, so they keep
working when the column set changes (0.5.2 added off_target_screened).
Step 2: Identify High-Quality Candidatesο
Look for siRNAs that meet multiple criteria. Note: off_target_count now counts genuine
off-targets only (see the note above), so <=3 here is a stricter bar than it was pre-0.6.0.
# Filter for high-quality candidates (example thresholds)
# GC 40-55%, asymmetry >=0.7, MFE -7..-4, less stable guide 5-prime end, <=3 GENUINE off-targets
awk -F',' '
NR==1 { for (i=1; i<=NF; i++) c[$i]=i; print; next }
$c["gc_content"]>=40 && $c["gc_content"]<=55 &&
$c["asymmetry_score"]>=0.7 &&
$c["mfe"]>=-7 && $c["mfe"]<=-4 &&
$c["delta_dg_end"]>=2 &&
$c["off_target_count"]<=3 { print }
' your_results/sirna_design/candidates_pass.csv
Step 3: Troubleshoot Poor Performanceο
If few candidates meet optimal criteria:
Low GC Content Issuesο
Problem: GC content consistently <35%
Solution: Consider relaxing GC minimum to 30% or target different transcript regions
Alternative: Focus on asymmetry and MFE scores instead
Poor Asymmetry Scoresο
Problem: Most candidates have asymmetry_score <0.6
Solution: Prioritize candidates with highest available asymmetry scores
Check: Verify end stability differences (delta_dg_end should be positive)
Overly Stable Duplexesο
Problem: MFE values <-10 kcal/mol (guide secondary structure)
Solution: Consider candidates with less negative (higher) MFE values
Alternative: Test experimentally as some cell types handle stable duplexes better
Application-Specific Guidelinesο
For High-Efficiency Applicationsο
When maximum knockdown is critical. off_target_count is genuine off-targets only, so <=1
is stricter than it reads pre-0.6.0 β a candidate with one ortholog hit and zero genuine
off-targets now passes this filter, where it would have failed before the redefinition.
# Prioritize asymmetry and low off-targets
# High asymmetry, actually screened, very few GENUINE off-targets, good end asymmetry
awk -F',' '
NR==1 { for (i=1; i<=NF; i++) c[$i]=i; print; next }
$c["asymmetry_score"]>=0.8 &&
$c["off_target_screened"]=="True" &&
$c["off_target_count"]<=1 &&
$c["delta_dg_end"]>=2 { print }
' results.csv
For Broad Target Coverageο
When targeting multiple isoforms. off_target_count excludes on-target/ortholog/repeat hits,
so <=5 genuine off-targets is a stricter bar than the same number was before the redefinition.
# Balance efficiency with transcript coverage
# Moderate asymmetry, hits at least half the input transcripts, few GENUINE off-targets
awk -F',' '
NR==1 { for (i=1; i<=NF; i++) c[$i]=i; print; next }
$c["asymmetry_score"]>=0.6 &&
$c["transcript_hit_fraction"]>=0.5 &&
$c["off_target_count"]<=5 { print }
' results.csv
For Sensitive Cell Typesο
When working with difficult-to-transfect cells:
# Favor stability and moderate parameters
# Higher GC for stability, strong length-normalised duplex, mid-range Tm
awk -F',' '
NR==1 { for (i=1; i<=NF; i++) c[$i]=i; print; next }
$c["gc_content"]>=45 && $c["gc_content"]<=60 &&
$c["duplex_stability_score"]>=0.7 &&
$c["melting_temp_c"]>=65 && $c["melting_temp_c"]<=75 { print }
' results.csv
Experimental Validation Tipsο
Testing Multiple Candidatesο
Select 3-5 candidates with diverse metric profiles
Include positive controls with known effective siRNAs
Test dose response to optimize concentration
Metric Correlation Analysisο
Monitor which metrics correlate with experimental success:
import pandas as pd
import seaborn as sns
# Load results and experimental data
results = pd.read_csv('sirna_results.csv')
experimental = pd.read_csv('knockdown_efficiency.csv')
# Merge and analyze correlations
combined = results.merge(experimental, on='id')
correlations = combined[['asymmetry_score', 'gc_content', 'mfe',
'delta_dg_end', 'knockdown_percent']].corr()
sns.heatmap(correlations, annot=True)
Iterative Optimizationο
Baseline Test: Use default siRNAforge parameters
Analyze Results: Identify which metrics correlate with success
Refine Parameters: Adjust thresholds based on your system
Validate: Test refined predictions experimentally
Common Troubleshootingο
No High-Quality Candidatesο
Possible Causes:
Target sequence has unfavorable composition
Overly strict filtering parameters
Transcript region lacks optimal sites
Solutions:
Relax one parameter at a time (start with GC content)
Increase candidate pool size (
--top-n 50)Try different transcript isoforms
Consider alternative target regions
All Candidates Have High Off-targetsο
Approach:
Prioritize candidates with lowest off-target counts
Use experimental validation to test specificity
Consider tissue-specific expression of off-targets
Implement additional experimental controls
System-Specific Optimizationο
Different organisms/cell types may require adjusted thresholds:
Plant cells: Often tolerate higher GC content (45-65%)
Primary cells: May need more stable duplexes
Cancer cell lines: Often more permissive of various parameters
In vivo applications: Require stricter off-target criteria
Advanced Analysisο
Composite Score Interpretationο
The composite score integrates multiple factors. Understanding its components helps optimization:
# Estimate component contributions (example weights)
def estimate_composite_components(row):
"""Estimate how each metric contributes to composite score"""
gc_component = score_gc_content(row['gc_content']) * 0.2
asymmetry_component = row['asymmetry_score'] * 0.3
structure_component = score_mfe(row['mfe']) * 0.2
offtarget_component = score_offtargets(row['off_target_count']) * 0.3
return {
'gc': gc_component,
'asymmetry': asymmetry_component,
'structure': structure_component,
'offtarget': offtarget_component
}
Custom Scoring Functionsο
For specialized applications, implement custom scoring (see Custom Scoring Tutorial):
def custom_therapeutic_score(candidate):
"""Scoring optimized for therapeutic applications"""
# Heavily weight safety (low off-targets)
safety_score = 1.0 / (1.0 + candidate.off_target_count) * 0.5
# Moderate weight on efficiency
efficiency_score = candidate.asymmetry_score * 0.3
# Stability for in vivo delivery
stability_score = score_stability(candidate.gc_content, candidate.mfe) * 0.2
return safety_score + efficiency_score + stability_score
Remember: These guidelines provide starting points. Experimental validation remains essential for confirming siRNA effectiveness in your specific system.