Agent Skillsjaechang-hits/SciAgent-Skills › viennarna-structure-prediction

viennarna-structure-prediction

GitHub

基于ViennaRNA工具包预测RNA二级结构、MFE折叠及碱基配对概率。适用于siRNA/sgRNA靶向设计、核酶设计及RNA-RNA相互作用建模,支持Python绑定与CLI批量处理。

skills/molecular-biology/viennarna-structure-prediction/SKILL.md jaechang-hits/SciAgent-Skills

触发场景

预测RNA最小自由能二级结构 评估siRNA或sgRNA的靶向效率与可及性 计算RNA-RNA相互作用或共折叠 分析RNA结构的碱基配对概率矩阵

安装

npx skills add jaechang-hits/SciAgent-Skills --skill viennarna-structure-prediction -g -y
更多选项

非标准路径

npx skills add https://github.com/jaechang-hits/SciAgent-Skills/tree/main/skills/molecular-biology/viennarna-structure-prediction -g -y

不安装直接使用

npx skills use jaechang-hits/SciAgent-Skills@viennarna-structure-prediction

指定 Agent (Claude Code)

npx skills add jaechang-hits/SciAgent-Skills --skill viennarna-structure-prediction -a claude-code -g -y

安装 repo 全部 skill

npx skills add jaechang-hits/SciAgent-Skills --all -g -y

预览 repo 内 skill

npx skills add jaechang-hits/SciAgent-Skills --list

SKILL.md

Frontmatter
{
    "name": "viennarna-structure-prediction",
    "license": "MIT",
    "description": "Predict RNA secondary structure, MFE folding, base-pair probabilities, RNA-RNA interactions via ViennaRNA Python bindings. Pipeline: sequence → MFE → partition function and pair-probability matrix → dot-bracket → duplex. Use for siRNA\/sgRNA targeting, ribozyme design, RNA accessibility. Use RNAfold CLI for batch use without Python."
}

ViennaRNA Structure Prediction

Overview

ViennaRNA is the gold-standard toolkit for RNA secondary structure prediction based on thermodynamic nearest-neighbor parameters. It predicts the minimum free energy (MFE) structure and dot-bracket notation for a given RNA sequence, computes the full partition function to obtain base pair probabilities, and models RNA-RNA interactions via co-folding and duplex prediction. The Python bindings (import RNA) expose the full ViennaRNA C library with sequence-level and fold-compound APIs. Command-line programs (RNAfold, RNAalifold, RNAduplex) are also available and demonstrated here.

When to Use

  • Predicting the minimum free energy secondary structure of an RNA sequence (mRNA, lncRNA, miRNA precursor, aptamer)
  • Computing base pair probability matrices to assess structural uncertainty and identify well-defined stem-loops
  • Designing or evaluating siRNA accessibility by folding the target mRNA region and checking for double-stranded structure
  • Assessing sgRNA targeting efficiency by predicting guide RNA secondary structure that may reduce on-target activity
  • Modeling RNA-RNA interactions (co-folding or duplex prediction) for miRNA-target binding or antisense oligonucleotide design
  • Calculating folding free energies for a set of sequences to compare thermodynamic stability
  • Use mfold (web server) or RNAstructure instead when you need Mfold algorithm predictions specifically or need the Efold partition function; ViennaRNA uses the Turner 2004 nearest-neighbor parameters and is the standard for research-grade thermodynamic prediction

Prerequisites

  • Python packages: ViennaRNA (Python bindings), matplotlib, numpy
  • Data requirements: RNA sequences as strings (ACGU alphabet; T is auto-converted to U by ViennaRNA)
  • Environment: Python 3.8+; conda installation strongly recommended (handles C library dependencies)
# Install via conda (recommended)
conda install -c conda-forge -c bioconda viennarna

# Verify installation
python -c "import RNA; print(RNA.__version__)"
# 2.6.4

# Install additional Python dependencies
pip install matplotlib numpy pandas

# Optional: verify CLI tools are available
RNAfold --version
# RNAfold 2.6.4

Quick Start

import RNA

# Predict MFE structure for an RNA sequence
sequence = "GCGGAUUUAGCUCAGUUGGGAGAGCGCCAGACUGAAGAUCUGGAGGUCCUGUGUUCGAUCCACAGAAUUCGCACCA"
structure, mfe = RNA.fold(sequence)

print(f"Sequence:  {sequence}")
print(f"Structure: {structure}")
print(f"MFE:       {mfe:.2f} kcal/mol")
# Sequence:  GCGGAUUUAGCUCAGUUGGGAGAGCGCCAGACUGAAGAUCUGGAGGUCCUGUGUUCGAUCCACAGAAUUCGCACCA
# Structure: (((((((..((((........)))).(((((.......))))).....(((((.......))))))))))))....
# MFE:       -31.30 kcal/mol

Workflow

Step 1: Sequence Preparation and MFE Folding

Load an RNA sequence and compute its minimum free energy secondary structure using RNA.fold(). Validate the input and inspect the dot-bracket output.

import RNA

def prepare_sequence(seq: str) -> str:
    """Normalize sequence: uppercase, replace T→U, validate alphabet."""
    seq = seq.upper().replace("T", "U").strip()
    invalid = set(seq) - set("ACGUNX")
    if invalid:
        raise ValueError(f"Invalid characters in sequence: {invalid}")
    return seq

# E. coli tRNA-Phe (GenBank: M10217)
raw_seq = "GCGGAUUUAGCUCAGUUGGGAGAGCGCCAGACUGAAGAUCUGGAGGUCCUGUGUUCGAUCCACAGAAUUCGCACCA"
sequence = prepare_sequence(raw_seq)

structure, mfe = RNA.fold(sequence)

print(f"Sequence length: {len(sequence)} nt")
print(f"Structure:       {structure}")
print(f"MFE:             {mfe:.2f} kcal/mol")

# Validate: structure length must equal sequence length
assert len(structure) == len(sequence), "Structure and sequence length mismatch"

# Count stems (paired bases)
n_paired   = structure.count("(") + structure.count(")")
n_unpaired = structure.count(".")
print(f"Paired bases: {n_paired}  |  Unpaired bases: {n_unpaired}")
print(f"Stem fraction: {n_paired/len(sequence):.2f}")

Step 2: Create a Fold Compound for Advanced Analysis

The RNA.fold_compound object is the central API for partition function, base pair probabilities, and constrained folding.

import RNA

sequence = "GCGGAUUUAGCUCAGUUGGGAGAGCGCCAGACUGAAGAUCUGGAGGUCCUGUGUUCGAUCCACAGAAUUCGCACCA"

# Create fold compound (wraps the sequence with model parameters)
fc = RNA.fold_compound(sequence)

# Compute MFE structure via the fold compound API
structure, mfe = fc.mfe()
print(f"MFE structure: {structure}")
print(f"MFE:           {mfe:.2f} kcal/mol")

# Evaluate free energy of an alternative structure
alt_structure = "." * len(sequence)   # fully unfolded
energy = fc.eval_structure(alt_structure)
print(f"Fully unfolded energy: {energy:.2f} kcal/mol")
print(f"Folding stabilization:  {energy - mfe:.2f} kcal/mol")

Step 3: Partition Function and Base Pair Probabilities

Compute the thermodynamic partition function to obtain ensemble-level base pair probabilities. High-probability pairs indicate well-defined structural elements.

import RNA
import numpy as np

sequence = "GCGGAUUUAGCUCAGUUGGGAGAGCGCCAGACUGAAGAUCUGGAGGUCCUGUGUUCGAUCCACAGAAUUCGCACCA"
n = len(sequence)

fc = RNA.fold_compound(sequence)

# Step 1: MFE folding (required before pf for proper initialization)
structure_mfe, mfe = fc.mfe()

# Step 2: Rescale Boltzmann factors for numerical stability (optional but recommended)
fc.exp_params_rescale(mfe)

# Step 3: Compute partition function
structure_pf, gibbs_free_energy = fc.pf()
print(f"Gibbs free energy (ensemble): {gibbs_free_energy:.2f} kcal/mol")
print(f"MFE structure:  {structure_mfe}")
print(f"Centroid (pf):  {structure_pf}")

# Step 4: Retrieve base pair probability matrix
bpp = fc.bpp()   # returns (n+1)x(n+1) matrix; 1-indexed

# Convert to 0-indexed numpy array for analysis
probs = np.zeros((n, n))
for i in range(1, n + 1):
    for j in range(i + 1, n + 1):
        if bpp[i][j] > 0.0:
            probs[i - 1][j - 1] = bpp[i][j]
            probs[j - 1][i - 1] = bpp[i][j]

# Identify high-confidence pairs (p > 0.9)
high_conf = [(i, j, probs[i, j]) for i in range(n) for j in range(i + 1, n) if probs[i, j] > 0.9]
print(f"\nHigh-confidence base pairs (p > 0.9): {len(high_conf)}")
for i, j, p in high_conf[:5]:
    print(f"  {sequence[i]}{i+1} — {sequence[j]}{j+1}: p={p:.3f}")

Step 4: Visualize Base Pair Probability Matrix

Plot the base pair probability matrix as a heatmap to visualize structural regions.

import RNA
import numpy as np
import matplotlib.pyplot as plt
import matplotlib.colors as mcolors

sequence = "GCGGAUUUAGCUCAGUUGGGAGAGCGCCAGACUGAAGAUCUGGAGGUCCUGUGUUCGAUCCACAGAAUUCGCACCA"
n = len(sequence)

fc = RNA.fold_compound(sequence)
structure_mfe, mfe = fc.mfe()
fc.exp_params_rescale(mfe)
fc.pf()
bpp = fc.bpp()

# Build matrix
probs = np.zeros((n, n))
for i in range(1, n + 1):
    for j in range(i + 1, n + 1):
        if bpp[i][j] > 0.0:
            probs[i - 1][j - 1] = bpp[i][j]
            probs[j - 1][i - 1] = bpp[i][j]

fig, ax = plt.subplots(figsize=(8, 7))
im = ax.imshow(probs, cmap="hot_r", vmin=0, vmax=1, origin="upper", aspect="equal")
plt.colorbar(im, ax=ax, label="Base pair probability")

ax.set_xlabel("Nucleotide position")
ax.set_ylabel("Nucleotide position")
ax.set_title(f"Base Pair Probability Matrix\n(n={n} nt, MFE={mfe:.2f} kcal/mol)")
plt.tight_layout()
plt.savefig("bpp_matrix.png", dpi=150, bbox_inches="tight")
print("Saved: bpp_matrix.png")

Step 5: RNA-RNA Duplex Prediction (Co-folding)

Use RNA.cofold() to predict the interaction between two RNA sequences by concatenating them with an & separator.

import RNA

# miRNA (hsa-miR-21-5p) and its target sequence in mRNA (PTEN 3'UTR region)
mirna_seq  = "UAGCUUAUCAGACUGAUGUUGA"
target_seq = "UCAACAUCAGUCUGAUAAGCUA"   # approximate complementary target

# Co-fold: concatenate with & separator
cofold_seq = mirna_seq + "&" + target_seq
structure, mfe = RNA.cofold(cofold_seq)

print(f"miRNA:          {mirna_seq}")
print(f"Target:         {target_seq}")
print(f"Co-fold MFE:    {mfe:.2f} kcal/mol")

# Parse the structure — & is retained in output
n1, n2 = len(mirna_seq), len(target_seq)
struct_mirna  = structure[:n1]
struct_ampersand = structure[n1]
struct_target = structure[n1 + 1:]

print(f"miRNA structure:  {struct_mirna}")
print(f"Target structure: {struct_target}")

paired_in_duplex = struct_mirna.count("(") + struct_mirna.count(")")
print(f"Bases paired across the duplex: {paired_in_duplex}")

Step 6: RNA Accessibility Analysis for siRNA Design

Compute the accessibility of a target region within a longer mRNA sequence — critical for siRNA and antisense oligonucleotide efficiency.

import RNA
import numpy as np

def compute_accessibility(mrna_seq: str, window: int = 40) -> list:
    """
    Compute per-position probability of being unpaired (accessible) using
    a sliding-window approach on the partition function.
    Returns list of (position, accessibility) tuples.
    """
    n = len(mrna_seq)
    fc = RNA.fold_compound(mrna_seq)
    _, mfe = fc.mfe()
    fc.exp_params_rescale(mfe)
    fc.pf()
    bpp = fc.bpp()

    # Probability of being paired at each position
    p_paired = np.zeros(n)
    for i in range(1, n + 1):
        for j in range(1, n + 1):
            if i != j:
                p = bpp[min(i,j)][max(i,j)]
                p_paired[i - 1] += p

    p_unpaired = 1.0 - np.clip(p_paired, 0, 1)
    return p_unpaired

# Example: 80-nt mRNA segment with a known accessible region
mrna = "AUGCUAGCUAGCUAGCUAUGCUAGCUAGCUUUUUUUUUUUUAUGCUAGCUAGCUAGCUAGCUAGCUAGCUAGCUAGC"
p_unpaired = compute_accessibility(mrna)

import matplotlib.pyplot as plt
fig, ax = plt.subplots(figsize=(10, 3))
ax.bar(range(1, len(mrna) + 1), p_unpaired, color="#2166ac", alpha=0.8)
ax.axhline(0.5, color="red", lw=1, ls="--", label="50% unpaired")
ax.set_xlabel("Position (nt)")
ax.set_ylabel("P(unpaired)")
ax.set_title("RNA Accessibility Profile")
ax.legend()
plt.tight_layout()
plt.savefig("rna_accessibility.png", dpi=150, bbox_inches="tight")
print("Saved: rna_accessibility.png")

# Top 5 most accessible positions (siRNA target candidates)
best = sorted(enumerate(p_unpaired, 1), key=lambda x: -x[1])[:5]
print("\nMost accessible positions:")
for pos, prob in best:
    print(f"  Position {pos}: P(unpaired) = {prob:.3f}  ({mrna[pos-1]})")

Step 7: Command-Line RNAfold and Output Parsing

Use the RNAfold CLI for batch folding via subprocess, then parse the output.

# Fold a single sequence from stdin
echo "GCGGAUUUAGCUCAGUUGGGAGAGCGCCAGACUGAAGAUCUGGAGGUCCUGUGUUCGAUCCACAGAAUUCGCACCA" | RNAfold

# Output:
# GCGGAUUUAGCUCAGUUGGGAGAGCGCCAGACUGAAGAUCUGGAGGUCCUGUGUUCGAUCCACAGAAUUCGCACCA
# (((((((..((((........)))).(((((.......))))).....(((((.......)))))))))))).... (-31.30)

# Batch fold from FASTA file
RNAfold < sequences.fasta > structures.txt

# Generate base pair probability dot plot (PostScript)
RNAfold --noPS < sequences.fasta   # suppress PostScript output
RNAfold -p < sequences.fasta       # save dot plot as rna.ps
# Python: run RNAfold via subprocess and parse output
import subprocess
import re

def run_rnafold(sequence: str) -> tuple:
    """Run RNAfold CLI and return (structure, mfe) tuple."""
    result = subprocess.run(
        ["RNAfold", "--noPS"],
        input=sequence,
        capture_output=True, text=True, timeout=30
    )
    if result.returncode != 0:
        raise RuntimeError(f"RNAfold failed: {result.stderr}")

    lines = result.stdout.strip().split("\n")
    # Last line: structure and energy, e.g. "((....)) (-5.40)"
    match = re.match(r"^([.()\[\]{}<>|]+)\s+\((-?\d+\.\d+)\)$", lines[-1])
    if not match:
        raise ValueError(f"Could not parse RNAfold output: {lines[-1]}")
    structure = match.group(1)
    mfe       = float(match.group(2))
    return structure, mfe

sequences = [
    ("tRNA-Phe", "GCGGAUUUAGCUCAGUUGGGAGAGCGCCAGACUGAAGAUCUGGAGGUCCUGUGUUCGAUCCACAGAAUUCGCACCA"),
    ("miR-21",   "UAGCUUAUCAGACUGAUGUUGA"),
]

for name, seq in sequences:
    struct, mfe = run_rnafold(seq)
    print(f"{name}: {mfe:.2f} kcal/mol  |  {struct}")

Step 8: Constrained Folding and Suboptimal Structures

Apply hard constraints (force or forbid specific base pairs) and enumerate suboptimal structures.

import RNA

sequence = "GCGGAUUUAGCUCAGUUGGGAGAGCGCCAGACUGAAGAUCUGGAGGUCCUGUGUUCGAUCCACAGAAUUCGCACCA"

# --- Constrained folding: force specific pairs ---
fc = RNA.fold_compound(sequence)

# Add hard constraint: force positions 1-7 to be paired (known stem)
hc = RNA.hc_add_bp(fc, 1, 72)  # force pair between position 1 and 72 (0-indexed in C API)
structure_c, mfe_c = fc.mfe()
print(f"Constrained MFE:   {mfe_c:.2f} kcal/mol")
print(f"Constrained struct: {structure_c}")

# --- Enumerate suboptimal structures (delta_mfe threshold) ---
fc_sub = RNA.fold_compound(sequence)
_, mfe_opt = fc_sub.mfe()

# Get suboptimal structures within 5 kcal/mol of MFE
delta = 5.0  # kcal/mol window
subopt_list = RNA.subopt(sequence, int(delta * 100))   # energy in 10-cal units
print(f"\nSuboptimal structures within {delta} kcal/mol of MFE:")
print(f"Total suboptimal structures: {len(subopt_list)}")
for s in subopt_list[:3]:
    e = s.energy / 100.0  # convert from 10-cal to kcal/mol
    print(f"  {s.structure}  ({e:.2f} kcal/mol)")

Key Parameters

Parameter Default Range / Options Effect
sequence (RNA.fold) ACGU string Input RNA sequence; T is auto-converted to U
temperature (model detail) 37.0 °C 0100 °C Folding temperature; lower temp stabilizes structures
dangles (model detail) 2 0, 1, 2, 3 Dangling end treatment; 2=average, 0=none, use 2 for most applications
noGU (model detail) False True/False Disallow G-U wobble pairs when True
noLP (model detail) False True/False Disallow lonely base pairs (single-bp stems); reduces noise
delta (RNA.subopt) float kcal/mol Energy window above MFE for suboptimal structure enumeration
window (sliding window) int nt Sliding window size for long-sequence accessibility analysis

Common Recipes

Recipe: Batch MFE Folding from a FASTA File

When to use: Fold a library of RNA sequences (e.g., candidate aptamers, guide RNAs) and compare energies.

import RNA
from pathlib import Path

def read_fasta(fasta_path: str) -> list:
    """Parse FASTA file, return list of (name, sequence) tuples."""
    records = []
    name, seq = None, []
    for line in Path(fasta_path).read_text().splitlines():
        if line.startswith(">"):
            if name:
                records.append((name, "".join(seq).upper().replace("T", "U")))
            name, seq = line[1:].split()[0], []
        else:
            seq.append(line.strip())
    if name:
        records.append((name, "".join(seq).upper().replace("T", "U")))
    return records

# Example: fold sequences from a FASTA file
sequences = [
    ("aptamer_1", "GGGUUUUGAAACUAAACUAGGCUCUAGCGCUGGUGUCCCUUCCCGGCUCUAGCCUCAGCAGAAGCUUGAAAAAACCC"),
    ("aptamer_2", "GGGAGACAAGAAUAAACGCUCAACGUCUACCAUGAUCGAAUGCUAGCCUUCUAGCUUGCUUCGGCAGCACUAUAGGG"),
    ("aptamer_3", "GGGCGACCCUGAUGAGUCCCAAGUCGAAACGAUUCCUUUUUAAACUCAUGGUGCCCAGCCUCGCUCAGCA"),
]

print(f"{'Name':<15} {'Length':>8} {'MFE':>10} {'Structure'}")
print("-" * 80)
for name, seq in sequences:
    struct, mfe = RNA.fold(seq)
    print(f"{name:<15} {len(seq):>8} {mfe:>10.2f}  {struct[:50]}...")

Recipe: Check sgRNA Secondary Structure

When to use: Evaluate whether a CRISPR sgRNA guide sequence folds into secondary structures that reduce Cas9 binding efficiency.

import RNA

def assess_sgrna(guide_seq: str, scaffold: str = None) -> dict:
    """
    Assess sgRNA secondary structure.
    guide_seq: 20-nt spacer sequence (RNA)
    scaffold: constant sgRNA scaffold sequence (default: SpCas9)
    """
    if scaffold is None:
        # SpCas9 sgRNA scaffold (Addgene standard)
        scaffold = "GUUUUAGAGCUAGAAAUAGCAAGUUAAAAUAAGGCUAGUCCGUUAUCAACUUGAAAAAGUGGCACCGAGUCGGUGCUUU"

    full_sgrna = guide_seq.upper().replace("T", "U") + scaffold
    fc = RNA.fold_compound(full_sgrna)
    structure, mfe = fc.mfe()
    fc.exp_params_rescale(mfe)
    fc.pf()
    bpp = fc.bpp()

    n_guide = len(guide_seq)
    # Check if any guide bases are paired (bad for targeting)
    guide_paired = sum(
        bpp[min(i, j)][max(i, j)]
        for i in range(1, n_guide + 1)
        for j in range(1, n_guide + 1)
        if i != j
    )
    guide_accessibility = 1.0 - min(1.0, guide_paired / n_guide)
    return {
        "guide_seq":    guide_seq,
        "mfe":          mfe,
        "structure":    structure[:n_guide],
        "guide_access": guide_accessibility,
        "predicted_ok": guide_accessibility > 0.7,
    }

guides = ["GCACUAGUGACGCAUGGCAC", "GGGCAUAGCUAGCUAGCUAU", "AAAUUCGCACUAGUGACGCA"]
for g in guides:
    result = assess_sgrna(g)
    status = "OK" if result["predicted_ok"] else "WARN (self-paired)"
    print(f"{g}: accessibility={result['guide_access']:.2f}, MFE={result['mfe']:.1f} kcal/mol  [{status}]")

Recipe: Mountain Plot Visualization of RNA Structure

When to use: Create a mountain plot — a classic RNA structure visualization showing stem height along the sequence.

import RNA
import matplotlib.pyplot as plt

def dot_bracket_to_mountain(structure: str) -> list:
    """Convert dot-bracket structure to mountain plot heights."""
    heights = []
    level = 0
    for c in structure:
        if c == "(":
            level += 1
        heights.append(level)
        if c == ")":
            level -= 1
    return heights

sequence = "GCGGAUUUAGCUCAGUUGGGAGAGCGCCAGACUGAAGAUCUGGAGGUCCUGUGUUCGAUCCACAGAAUUCGCACCA"
structure, mfe = RNA.fold(sequence)
heights = dot_bracket_to_mountain(structure)

fig, axes = plt.subplots(2, 1, figsize=(12, 5), sharex=True,
                          gridspec_kw={"height_ratios": [1, 3]})

# Top: sequence text
axes[0].text(0.5, 0.5, "tRNA-Phe  |  E. coli", ha="center", va="center",
             fontsize=10, transform=axes[0].transAxes)
axes[0].axis("off")

# Bottom: mountain plot
axes[1].fill_between(range(len(sequence)), heights, step="mid",
                      color="#2c7bb6", alpha=0.7, label=f"MFE = {mfe:.2f} kcal/mol")
axes[1].set_xlabel("Nucleotide position")
axes[1].set_ylabel("Stem height")
axes[1].set_title("Mountain Plot")
axes[1].legend()
plt.tight_layout()
plt.savefig("mountain_plot.png", dpi=150, bbox_inches="tight")
print(f"Saved: mountain_plot.png  (MFE structure: {structure[:40]}...)")

Expected Outputs

Output Type Description
structure string Dot-bracket notation of MFE secondary structure; ( and ) for paired bases, . for unpaired
mfe float (kcal/mol) Minimum free energy of the predicted structure; more negative = more stable
bpp (n+1)×(n+1) matrix Base pair probability matrix from partition function; element [i][j] = P(i paired with j), 1-indexed
bpp_matrix.png PNG Heatmap visualization of base pair probabilities
rna_accessibility.png PNG Per-position probability of being unpaired
mountain_plot.png PNG Mountain plot of stem heights along the sequence

Troubleshooting

Problem Cause Solution
ImportError: No module named 'RNA' ViennaRNA Python bindings not installed Install via conda install -c conda-forge viennarna; pip install alone may fail to link C library
RuntimeError: RNAfold not found ViennaRNA CLI not in PATH Confirm with which RNAfold; if using conda env, activate it before running scripts
MFE is unexpectedly positive (> 0) Very short or repetitive sequence with no favorable pairs Short sequences (< 10 nt) often have positive MFE; check sequence length and composition
bpp matrix all zeros after fc.pf() fc.mfe() must be called before fc.pf() on the same fold compound Always call fc.mfe() first, then fc.exp_params_rescale(mfe), then fc.pf()
Suboptimal enumeration returns thousands of structures Window too large for long sequences Reduce delta to 2–3 kcal/mol for long sequences; very stable sequences have dense suboptimal ensembles
Co-fold (RNA.cofold) shows unexpected pairing Intramolecular folding dominates in one strand Inspect each strand separately first; low individual-strand MFE indicates strong self-structure interfering with duplex

References

版本历史

  • 02745ef 当前 2026-07-19 09:21

同 Skill 集合

legacy/opentrons-integration/SKILL.md
legacy/plotly-interactive-visualization/SKILL.md
legacy/seaborn-statistical-visualization/SKILL.md
legacy/single-cell-annotation/SKILL.md
skills/biostatistics/pymc-bayesian-modeling/SKILL.md
skills/biostatistics/scikit-survival-analysis/SKILL.md
skills/biostatistics/statistical-analysis/SKILL.md
skills/biostatistics/statsmodels-statistical-modeling/SKILL.md
skills/cell-biology/cellpose-cell-segmentation/SKILL.md
skills/cell-biology/flowio-flow-cytometry/SKILL.md
skills/cell-biology/napari-image-viewer/SKILL.md
skills/cell-biology/opencv-bioimage-analysis/SKILL.md
skills/cell-biology/pyimagej-fiji-bridge/SKILL.md
skills/cell-biology/scikit-image-processing/SKILL.md
skills/cell-biology/trackpy-particle-tracking/SKILL.md
skills/data-visualization/matplotlib-scientific-plotting/SKILL.md
skills/data-visualization/plotly-interactive-plots/SKILL.md
skills/data-visualization/scientific-visualization/SKILL.md
skills/data-visualization/seaborn-statistical-plots/SKILL.md
skills/data-visualization/statistical-significance-annotation/SKILL.md
skills/genomics-bioinformatics/alignment/bwa-mem2-dna-aligner/SKILL.md
skills/genomics-bioinformatics/alignment/pysam-genomic-files/SKILL.md
skills/genomics-bioinformatics/alignment/samtools-bam-processing/SKILL.md
skills/genomics-bioinformatics/alignment/star-rna-seq-aligner/SKILL.md
skills/genomics-bioinformatics/annotation/bakta-genome-annotation/SKILL.md
skills/genomics-bioinformatics/annotation/prokka-genome-annotation/SKILL.md
skills/genomics-bioinformatics/annotation/roary-pangenome/SKILL.md
skills/genomics-bioinformatics/arboreto-grn-inference/SKILL.md
skills/genomics-bioinformatics/biopython-molecular-biology/SKILL.md
skills/genomics-bioinformatics/biopython-sequence-analysis/SKILL.md
skills/genomics-bioinformatics/databases/archs4-database/SKILL.md
skills/genomics-bioinformatics/databases/bioservices-multi-database/SKILL.md
skills/genomics-bioinformatics/databases/cbioportal-database/SKILL.md
skills/genomics-bioinformatics/databases/clinvar-database/SKILL.md
skills/genomics-bioinformatics/databases/cosmic-database/SKILL.md
skills/genomics-bioinformatics/databases/dbsnp-database/SKILL.md
skills/genomics-bioinformatics/databases/depmap-crispr-essentiality/SKILL.md
skills/genomics-bioinformatics/databases/ena-database/SKILL.md
skills/genomics-bioinformatics/databases/encode-database/SKILL.md
skills/genomics-bioinformatics/databases/ensembl-database/SKILL.md
skills/genomics-bioinformatics/databases/gene-database/SKILL.md
skills/genomics-bioinformatics/databases/geo-database/SKILL.md
skills/genomics-bioinformatics/databases/gget-genomic-databases/SKILL.md
skills/genomics-bioinformatics/databases/gnomad-database/SKILL.md
skills/genomics-bioinformatics/databases/gwas-database/SKILL.md
skills/genomics-bioinformatics/databases/jaspar-database/SKILL.md
skills/genomics-bioinformatics/databases/kegg-database/SKILL.md
skills/genomics-bioinformatics/databases/monarch-database/SKILL.md
skills/genomics-bioinformatics/databases/quickgo-database/SKILL.md
skills/genomics-bioinformatics/databases/regulomedb-database/SKILL.md
skills/genomics-bioinformatics/databases/remap-database/SKILL.md
skills/genomics-bioinformatics/databases/ucsc-genome-browser/SKILL.md
skills/genomics-bioinformatics/etetoolkit/SKILL.md
skills/genomics-bioinformatics/homer-motif-analysis/SKILL.md
skills/genomics-bioinformatics/interval-ops/bedtools-genomic-intervals/SKILL.md
skills/genomics-bioinformatics/interval-ops/deeptools-ngs-analysis/SKILL.md
skills/genomics-bioinformatics/interval-ops/geniml/SKILL.md
skills/genomics-bioinformatics/interval-ops/gtars/SKILL.md
skills/genomics-bioinformatics/macs3-peak-calling/SKILL.md
skills/genomics-bioinformatics/qc/busco-status-interpretation/SKILL.md
skills/genomics-bioinformatics/qc/fastp-fastq-preprocessing/SKILL.md
skills/genomics-bioinformatics/qc/multiqc-qc-reports/SKILL.md
skills/genomics-bioinformatics/rnaseq/deseq2-differential-expression/SKILL.md
skills/genomics-bioinformatics/rnaseq/featurecounts-rna-counting/SKILL.md
skills/genomics-bioinformatics/rnaseq/gseapy-gene-enrichment/SKILL.md
skills/genomics-bioinformatics/rnaseq/pydeseq2-differential-expression/SKILL.md
skills/genomics-bioinformatics/rnaseq/salmon-rna-quantification/SKILL.md
skills/genomics-bioinformatics/scikit-bio/SKILL.md
skills/genomics-bioinformatics/single-cell/anndata-data-structure/SKILL.md
skills/genomics-bioinformatics/single-cell/celltypist-cell-annotation/SKILL.md
skills/genomics-bioinformatics/single-cell/cellxgene-census/SKILL.md
skills/genomics-bioinformatics/single-cell/harmony-batch-correction/SKILL.md
skills/genomics-bioinformatics/single-cell/popv-cell-annotation/SKILL.md
skills/genomics-bioinformatics/single-cell/scanpy-scrna-seq/SKILL.md
skills/genomics-bioinformatics/single-cell/scvi-tools-single-cell/SKILL.md
skills/genomics-bioinformatics/single-cell/single-cell-annotation-guide/SKILL.md
skills/genomics-bioinformatics/variant/bcftools-variant-manipulation/SKILL.md
skills/genomics-bioinformatics/variant/cnvkit-copy-number/SKILL.md
skills/genomics-bioinformatics/variant/gatk-variant-calling/SKILL.md
skills/genomics-bioinformatics/variant/plink2-gwas-analysis/SKILL.md
skills/genomics-bioinformatics/variant/snpeff-variant-annotation/SKILL.md
skills/genomics-bioinformatics/variant/vcf-variant-filtering/SKILL.md
skills/lab-automation/benchling-integration/SKILL.md
skills/lab-automation/opentrons-protocol-api/SKILL.md
skills/lab-automation/protocolsio-integration/SKILL.md
skills/lab-automation/pylabrobot/SKILL.md
skills/lab-automation/western-blot-quantification/SKILL.md
skills/medical-imaging/histolab-wsi-processing/SKILL.md
skills/medical-imaging/nnunet-segmentation/SKILL.md
skills/medical-imaging/omero-integration/SKILL.md
skills/medical-imaging/pathml/SKILL.md
skills/medical-imaging/pydicom-medical-imaging/SKILL.md
skills/medical-imaging/simpleitk-image-registration/SKILL.md
skills/molecular-biology/plannotate-plasmid-annotation/SKILL.md
skills/molecular-biology/sgrna-design-guide/SKILL.md
skills/proteomics-protein-engineering/esm-protein-language-model/SKILL.md
skills/proteomics-protein-engineering/hmdb-database/SKILL.md
skills/proteomics-protein-engineering/interpro-database/SKILL.md
skills/proteomics-protein-engineering/matchms-spectral-matching/SKILL.md
skills/proteomics-protein-engineering/maxquant-proteomics/SKILL.md
skills/proteomics-protein-engineering/metabolomics-workbench-database/SKILL.md
skills/proteomics-protein-engineering/pyopenms-mass-spectrometry/SKILL.md
skills/proteomics-protein-engineering/uniprot-protein-database/SKILL.md
skills/scientific-computing/aeon/SKILL.md
skills/scientific-computing/astropy-astronomy/SKILL.md
skills/scientific-computing/dask-parallel-computing/SKILL.md
skills/scientific-computing/degenerate-input-filtering/SKILL.md
skills/scientific-computing/exploratory-data-analysis/SKILL.md
skills/scientific-computing/geopandas-geospatial/SKILL.md
skills/scientific-computing/hypogenic-hypothesis-generation/SKILL.md
skills/scientific-computing/matlab-scientific-computing/SKILL.md
skills/scientific-computing/nan-safe-correlation/SKILL.md
skills/scientific-computing/networkx-graph-analysis/SKILL.md
skills/scientific-computing/neurokit2/SKILL.md
skills/scientific-computing/neuropixels-analysis/SKILL.md
skills/scientific-computing/nextflow-workflow-engine/SKILL.md
skills/scientific-computing/polars-dataframes/SKILL.md
skills/scientific-computing/pyhealth/SKILL.md
skills/scientific-computing/pymoo/SKILL.md
skills/scientific-computing/scikit-learn-machine-learning/SKILL.md
skills/scientific-computing/shap-model-explainability/SKILL.md
skills/scientific-computing/simpy-discrete-event-simulation/SKILL.md
skills/scientific-computing/snakemake-workflow-engine/SKILL.md
skills/scientific-computing/spikeinterface-electrophysiology/SKILL.md
skills/scientific-computing/sympy-symbolic-math/SKILL.md
skills/scientific-computing/torch-geometric-graph-neural-networks/SKILL.md
skills/scientific-computing/transformers-bio-nlp/SKILL.md
skills/scientific-computing/umap-learn/SKILL.md
skills/scientific-computing/uspto-database/SKILL.md
skills/scientific-computing/vaex-dataframes/SKILL.md
skills/scientific-computing/zarr-python/SKILL.md
skills/scientific-writing/biorxiv-database/SKILL.md
skills/scientific-writing/cancer-research-figure-guide/SKILL.md
skills/scientific-writing/cell-figure-guide/SKILL.md
skills/scientific-writing/citation-management/SKILL.md
skills/scientific-writing/clinical-decision-support-documents/SKILL.md
skills/scientific-writing/elife-figure-guide/SKILL.md
skills/scientific-writing/general-figure-guide/SKILL.md
skills/scientific-writing/hypothesis-generation/SKILL.md
skills/scientific-writing/lancet-figure-guide/SKILL.md
skills/scientific-writing/latex-research-posters/SKILL.md
skills/scientific-writing/literature-review/SKILL.md
skills/scientific-writing/nature-figure-guide/SKILL.md
skills/scientific-writing/nejm-figure-guide/SKILL.md
skills/scientific-writing/openalex-database/SKILL.md
skills/scientific-writing/peer-review-methodology/SKILL.md
skills/scientific-writing/pnas-figure-guide/SKILL.md
skills/scientific-writing/pubmed-database/SKILL.md
skills/scientific-writing/science-figure-guide/SKILL.md
skills/scientific-writing/scientific-brainstorming/SKILL.md
skills/scientific-writing/scientific-critical-thinking/SKILL.md
skills/scientific-writing/scientific-literature-search/SKILL.md
skills/scientific-writing/scientific-manuscript-writing/SKILL.md
skills/scientific-writing/scientific-schematics/SKILL.md
skills/scientific-writing/scientific-slides/SKILL.md
skills/structural-biology-drug-discovery/alphafold-database-access/SKILL.md
skills/structural-biology-drug-discovery/autodock-vina-docking/SKILL.md
skills/structural-biology-drug-discovery/chembl-database-bioactivity/SKILL.md
skills/structural-biology-drug-discovery/clinicaltrials-database-search/SKILL.md
skills/structural-biology-drug-discovery/dailymed-database/SKILL.md
skills/structural-biology-drug-discovery/datamol-cheminformatics/SKILL.md
skills/structural-biology-drug-discovery/ddinter-database/SKILL.md
skills/structural-biology-drug-discovery/deepchem/SKILL.md
skills/structural-biology-drug-discovery/diffdock/SKILL.md
skills/structural-biology-drug-discovery/drugbank-database-access/SKILL.md
skills/structural-biology-drug-discovery/emdb-database/SKILL.md
skills/structural-biology-drug-discovery/fda-database/SKILL.md
skills/structural-biology-drug-discovery/gtopdb-database/SKILL.md
skills/structural-biology-drug-discovery/mdanalysis-trajectory/SKILL.md
skills/structural-biology-drug-discovery/medchem/SKILL.md
skills/structural-biology-drug-discovery/molfeat-molecular-featurization/SKILL.md
skills/structural-biology-drug-discovery/opentargets-database/SKILL.md
skills/structural-biology-drug-discovery/pdb-database/SKILL.md
skills/structural-biology-drug-discovery/pubchem-compound-search/SKILL.md
skills/structural-biology-drug-discovery/pytdc-therapeutics-data-commons/SKILL.md
skills/structural-biology-drug-discovery/rdkit-cheminformatics/SKILL.md
skills/structural-biology-drug-discovery/sar-analysis/SKILL.md
skills/structural-biology-drug-discovery/torchdrug/SKILL.md
skills/structural-biology-drug-discovery/unichem-database/SKILL.md
skills/structural-biology-drug-discovery/zinc-database/SKILL.md
skills/systems-biology-multiomics/brenda-database/SKILL.md
skills/systems-biology-multiomics/cellchat-cell-communication/SKILL.md
skills/systems-biology-multiomics/cobrapy-metabolic-modeling/SKILL.md
skills/systems-biology-multiomics/kegg-pathway-analysis/SKILL.md
skills/systems-biology-multiomics/lamindb-data-management/SKILL.md
skills/systems-biology-multiomics/libsbml-network-modeling/SKILL.md
skills/systems-biology-multiomics/mofaplus-multi-omics/SKILL.md
skills/systems-biology-multiomics/muon-multiomics-singlecell/SKILL.md
skills/systems-biology-multiomics/omics-analysis-guide/SKILL.md
skills/systems-biology-multiomics/reactome-database/SKILL.md
skills/systems-biology-multiomics/string-database-ppi/SKILL.md
.claude/skills/sciagent-skill-creator/SKILL.md
skills/genomics-bioinformatics/databases/clinpgx-database/SKILL.md
skills/genomics-bioinformatics/databases/mouse-phenome-database/SKILL.md
skills/medical-imaging/imaging-data-commons/SKILL.md
skills/proteomics-protein-engineering/pride-database/SKILL.md
skills/structural-biology-drug-discovery/mdtraj-trajectory-analysis/SKILL.md
skills/structural-biology-drug-discovery/smina-molecular-docking/SKILL.md

元信息

文件数
0
版本
02745ef
Hash
0fe2f843
收录时间
2026-07-19 09:21

首页 - Wiki
Copyright © 2011-2026 iteam. Current version is 2.155.2. UTC+08:00, 2026-07-22 08:23
浙ICP备14020137号-1 $访客地图$