Skills Agentes

Scvelo

Análisis de velocidad de ARN con scVelo: estima transiciones de estado celular a partir de la dinámica de ARNm empalmado/no empalmado, infiere trayectorias, calcula tiempo latente e identifica genes conductores en scRNA-seq.

Estrellas
45.9k

en todo el repo

Actividad
61

0–100, la ruta de este skill

Actualizado
hace 2 meses

último commit aquí

Commits
5

últimos 90 días

Contexto
2.7k tok

66 tok en reposo

Paquete
3 archivos

24 KB

Instalar

Funciona con cualquier agente que lea SKILL.md

npx -y skills add K-Dense-AI/scientific-agent-skills --skill scvelo --agent claude-code

Se instala solo en este repositorio.

Qué hace

  • Estima transiciones de estado celular a partir de la dinámica de ARNm empalmado y no empalmado
  • Infiere la dirección de las trayectorias de diferenciación con los modelos estocástico y dinámico
  • Calcula tiempo latente para ordenar células a lo largo de una pseudotemporalidad basada en splicing
  • Identifica genes conductores cuya dinámica explica mejor las trayectorias observadas
  • Genera visualizaciones de velocidad (flechas, streams) sobre embeddings UMAP

Úsalo cuando

  • Inferir la dirección de diferenciación celular a partir de datos scRNA-seq de una sola instantánea
  • Predecir el destino de células progenitoras y sus linajes posteriores
  • Calcular tiempo latente o pseudotiempo derivado de la dinámica de splicing
  • Añadir información direccional a un embedding UMAP generado con Scanpy

No lo uses cuando

    Qué lo activa

    Di cualquiera de estas frases y el agente debería cargar este skill.

    • “Calcula la velocidad de ARN con el modelo dinámico de scVelo en este AnnData”
    • “Genera un stream plot de velocidad sobre el UMAP coloreado por cluster”
    • “Identifica los genes conductores de esta trayectoria de diferenciación”
    • “Calcula el tiempo latente y ordena las células a lo largo de la trayectoria”

    SKILL.md

    En inglés

    scVelo — RNA Velocity Analysis

    Overview

    scVelo is the leading Python package for RNA velocity analysis in single-cell RNA-seq data. It infers cell state transitions by modeling the kinetics of mRNA splicing — using the ratio of unspliced (pre-mRNA) to spliced (mature mRNA) abundances to determine whether a gene is being upregulated or downregulated in each cell. This allows reconstruction of developmental trajectories and identification of cell fate decisions without requiring time-course data.

    Installation: uv pip install scvelo

    Key resources:

    When to Use This Skill

    Use scVelo when:

    • Trajectory inference from snapshot data: Determine which direction cells are differentiating
    • Cell fate prediction: Identify progenitor cells and their downstream fates
    • Driver gene identification: Find genes whose dynamics best explain observed trajectories
    • Developmental biology: Model hematopoiesis, neurogenesis, epithelial-to-mesenchymal transitions
    • Latent time estimation: Order cells along a pseudotime derived from splicing dynamics
    • Complement to Scanpy: Add directional information to UMAP embeddings

    Prerequisites

    scVelo requires count matrices for both unspliced and spliced RNA. These are generated by:

    1. STARsolo or kallisto|bustools with lamanno mode
    2. velocyto CLI: velocyto run10x / velocyto run
    3. alevin-fry / simpleaf with spliced/unspliced output

    Data is stored in an AnnData object with layers["spliced"] and layers["unspliced"].

    Standard RNA Velocity Workflow

    1. Setup and Data Loading

    import scvelo as scv
    import scanpy as sc
    import numpy as np
    import matplotlib.pyplot as plt
    
    # Configure settings
    scv.settings.verbosity = 3       # Show computation steps
    scv.settings.presenter_view = True
    scv.settings.set_figure_params('scvelo')
    
    # Load data (AnnData with spliced/unspliced layers)
    # Option A: Load from loom (velocyto output)
    adata = scv.read("cellranger_output.loom", cache=True)
    
    # Option B: Merge velocyto loom with Scanpy-processed AnnData
    adata_processed = sc.read_h5ad("processed.h5ad")  # Has UMAP, clusters
    adata_velocity = scv.read("velocyto.loom")
    adata = scv.utils.merge(adata_processed, adata_velocity)
    
    # Verify layers
    print(adata)
    # obs × var: N × G
    # layers: 'spliced', 'unspliced' (required)
    # obsm['X_umap'] (required for visualization)
    

    2. Preprocessing

    # Filter and normalize. As of scVelo 0.3, filter_and_normalize() only filters
    # genes and normalizes per cell -- it no longer takes n_top_genes and no longer
    # log-transforms, so the log step and HVG selection come from Scanpy.
    scv.pp.filter_and_normalize(
        adata,
        min_shared_counts=20    # Minimum counts in spliced+unspliced
    )
    sc.pp.log1p(adata)
    sc.pp.highly_variable_genes(adata, n_top_genes=2000, subset=True)
    
    # Compute first and second order moments (means and variances)
    # knn_connectivities must be computed first
    sc.pp.neighbors(adata, n_neighbors=30, n_pcs=30)
    scv.pp.moments(
        adata,
        n_pcs=30,
        n_neighbors=30
    )
    

    3. Velocity Estimation — Stochastic Model

    The stochastic model is fast and suitable for exploratory analysis:

    # Stochastic velocity (faster, less accurate)
    scv.tl.velocity(adata, mode='stochastic')
    scv.tl.velocity_graph(adata)
    
    # Visualize
    scv.pl.velocity_embedding_stream(
        adata,
        basis='umap',
        color='leiden',
        title="RNA Velocity (Stochastic)"
    )
    

    4. Velocity Estimation — Dynamical Model (Recommended)

    The dynamical model fits the full splicing kinetics and is more accurate:

    # Recover dynamics (computationally intensive; ~10-30 min for 10K cells)
    scv.tl.recover_dynamics(adata, n_jobs=4)
    
    # Compute velocity from dynamical model
    scv.tl.velocity(adata, mode='dynamical')
    scv.tl.velocity_graph(adata)
    

    5. Latent Time

    The dynamical model enables computation of a shared latent time (pseudotime):

    # Compute latent time
    scv.tl.latent_time(adata)
    
    # Visualize latent time on UMAP
    scv.pl.scatter(
        adata,
        color='latent_time',
        color_map='gnuplot',
        size=80,
        title='Latent time'
    )
    
    # Identify top genes ordered by latent time
    top_genes = adata.var['fit_likelihood'].sort_values(ascending=False).index[:300]
    scv.pl.heatmap(
        adata,
        var_names=top_genes,
        sortby='latent_time',
        col_color='leiden',
        n_convolve=100
    )
    

    6. Driver Gene Analysis

    # Identify genes with highest velocity fit
    scv.tl.rank_velocity_genes(adata, groupby='leiden', min_corr=0.3)
    df = scv.DataFrame(adata.uns['rank_velocity_genes']['names'])
    print(df.head(10))
    
    # Speed and coherence
    scv.tl.velocity_confidence(adata)
    scv.pl.scatter(
        adata,
        c=['velocity_length', 'velocity_confidence'],
        cmap='coolwarm',
        perc=[5, 95]
    )
    
    # Phase portraits for specific genes
    scv.pl.velocity(adata, ['Cpe', 'Gnao1', 'Ins2'],
                   ncols=3, figsize=(16, 4))
    

    7. Velocity Arrows and Pseudotime

    # Arrow plot on UMAP
    scv.pl.velocity_embedding(
        adata,
        arrow_length=3,
        arrow_size=2,
        color='leiden',
        basis='umap'
    )
    
    # Stream plot (cleaner visualization)
    scv.pl.velocity_embedding_stream(
        adata,
        basis='umap',
        color='leiden',
        smooth=0.8,
        min_mass=4
    )
    
    # Velocity pseudotime (alternative to latent time)
    scv.tl.velocity_pseudotime(adata)
    scv.pl.scatter(adata, color='velocity_pseudotime', cmap='gnuplot')
    

    8. PAGA Trajectory Graph

    # PAGA graph with velocity-informed transitions
    scv.tl.paga(adata, groups='leiden')
    df = scv.get_df(adata, 'paga/transitions_confidence', precision=2).T
    df.style.background_gradient(cmap='Blues').format('{:.2g}')
    
    # Plot PAGA with velocity
    scv.pl.paga(
        adata,
        basis='umap',
        size=50,
        alpha=0.1,
        min_edge_width=2,
        node_size_scale=1.5
    )
    

    Complete Workflow Script

    import scvelo as scv
    import scanpy as sc
    
    def run_rna_velocity(adata, n_top_genes=2000, mode='dynamical', n_jobs=4):
        """
        Complete RNA velocity workflow.
    
        Args:
            adata: AnnData with 'spliced' and 'unspliced' layers, UMAP in obsm
            n_top_genes: Number of top HVGs for velocity
            mode: 'stochastic' (fast) or 'dynamical' (accurate)
            n_jobs: Parallel jobs for dynamical model
    
        Returns:
            Processed AnnData with velocity information
        """
        scv.settings.verbosity = 2
    
        # 1. Preprocessing (scVelo 0.3 dropped log/HVG from filter_and_normalize)
        scv.pp.filter_and_normalize(adata, min_shared_counts=20)
        sc.pp.log1p(adata)
        sc.pp.highly_variable_genes(adata, n_top_genes=n_top_genes, subset=True)
    
        if 'neighbors' not in adata.uns:
            sc.pp.neighbors(adata, n_neighbors=30)
    
        scv.pp.moments(adata, n_pcs=30, n_neighbors=30)
    
        # 2. Velocity estimation
        if mode == 'dynamical':
            scv.tl.recover_dynamics(adata, n_jobs=n_jobs)
    
        scv.tl.velocity(adata, mode=mode)
        scv.tl.velocity_graph(adata)
    
        # 3. Downstream analyses
        if mode == 'dynamical':
            scv.tl.latent_time(adata)
            scv.tl.rank_velocity_genes(adata, groupby='leiden', min_corr=0.3)
    
        scv.tl.velocity_confidence(adata)
        scv.tl.velocity_pseudotime(adata)
    
        return adata
    

    Key Output Fields in AnnData

    After running the workflow, the following fields are added:

    Location Key Description
    adata.layers velocity RNA velocity per gene per cell
    adata.layers fit_t Fitted latent time per gene per cell
    adata.obsm velocity_umap 2D velocity vectors on UMAP
    adata.obs velocity_pseudotime Pseudotime from velocity
    adata.obs latent_time Latent time from dynamical model
    adata.obs velocity_length Speed of each cell
    adata.obs velocity_confidence Confidence score per cell
    adata.var fit_likelihood Gene-level model fit quality
    adata.var fit_alpha Transcription rate
    adata.var fit_beta Splicing rate
    adata.var fit_gamma Degradation rate
    adata.uns velocity_graph Cell-cell transition probability matrix

    Velocity Models Comparison

    Model Speed Accuracy When to Use
    stochastic Fast Moderate Exploratory; large datasets
    deterministic Medium Moderate Simple linear kinetics
    dynamical Slow High Publication-quality; identifies driver genes

    Best Practices

    • Start with stochastic mode for exploration; switch to dynamical for final analysis
    • Need good coverage of unspliced reads: Short reads (< 100 bp) may miss intron coverage
    • Minimum 2,000 cells: RNA velocity is noisy with fewer cells
    • Velocity should be coherent: Arrows should follow known biology; randomness indicates issues
    • k-NN bandwidth matters: Too few neighbors → noisy velocity; too many → oversmoothed
    • Sanity check: Root cells (progenitors) should have high unspliced/spliced ratios for marker genes
    • Dynamical model requires distinct kinetic states: Works best for clear differentiation processes

    Troubleshooting

    Problem Solution
    Missing unspliced layer Re-run velocyto or use STARsolo with --soloFeatures Gene Velocyto
    Very few velocity genes Lower min_shared_counts; check sequencing depth
    Random-looking arrows Try different n_neighbors or velocity model
    Memory error with dynamical Set n_jobs=1; reduce n_top_genes
    Negative velocity everywhere Check that spliced/unspliced layers are not swapped

    Additional Resources

    Reproducido de K-Dense-AI/scientific-agent-skills bajo licencia BSD-3-Clause. Leer esta página en markdown.

    Archivos

    3 archivos en el paquete. Solo se lee SKILL.md al activarse — las referencias se cargan si el skill decide que las necesita.

    Antes de instalar

    Requiere Python 3.10+ con scvelo, scanpy y anndata, y capas 'spliced'/'unspliced' generadas por STARsolo, velocyto o alevin-fry/simpleaf.

    Detalles

    Creador
    K-Dense-AI
    Licencia
    BSD-3-Clause
    Recursos incluidos
    scripts en python + referencias
    Código fuente
    Ver SKILL.md

    Etiquetas

    Más de K-Dense-AI/scientific-agent-skills

    Este repo incluye 163 skills. Si instalas uno, normalmente ya tienes los demás. Ver el pack scientific-agent-skills entero y su comando de instalación

    Gestión integral de citas académicas: busca en OpenAlex, PubMed y Google Scholar, extrae metadatos precisos, valida citas y genera entradas BibTeX correctamente formateadas.

    Costo de contexto al activarse
    3.7k tok
    Tamaño del paquete
    21 archivos
    Última actualización
    hace 2 meses
    investigacion

    Realiza revisiones bibliográficas sistemáticas y completas usando varias bases académicas (PubMed, arXiv, bioRxiv, Semantic Scholar). Genera markdown y PDF con citas verificadas en varios estilos (APA, Nature, Vancouver).

    Costo de contexto al activarse
    3.2k tok
    Tamaño del paquete
    12 archivos
    Última actualización
    hace 2 meses
    investigacion

    Crea decks de diapositivas y presentaciones para charlas de investigación: PowerPoint, presentaciones de conferencia, seminarios, defensas de tesis. Da estructura, plantillas, guía de tiempos y validación visual.

    Costo de contexto al activarse
    5.1k tok
    Tamaño del paquete
    24 archivos
    Última actualización
    hace 2 meses
    documentos

    Crea infografías profesionales con Nano Banana Pro AI y refinamiento iterativo inteligente. Usa Gemini 3.6 Flash para revisar la calidad e integra investigación con Perplexity Sonar. Soporta 10 tipos, 8 estilos y paletas para daltonismo.

    Costo de contexto al activarse
    2.7k tok
    Tamaño del paquete
    8 archivos
    Última actualización
    hace 2 meses
    diseno ui

    Crea pósteres de investigación profesionales en LaTeX con beamerposter, tikzposter o baposter, para conferencias y comunicación científica: layout, colores, columnas múltiples e integración de figuras.

    Costo de contexto al activarse
    3.9k tok
    Tamaño del paquete
    17 archivos
    Última actualización
    hace 2 meses
    documentos

    Crea diagramas científicos de calidad de publicación con la IA Nano Banana 2 y refinamiento iterativo inteligente. Gemini 3.6 Flash revisa la calidad y solo regenera si está por debajo del umbral de tu tipo de documento.

    Costo de contexto al activarse
    4.1k tok
    Tamaño del paquete
    6 archivos
    Última actualización
    hace 2 meses
    diseno ui

    Skills relacionados

    Aeon

    45.9k

    Para tareas de machine learning con series temporales: clasificación, regresión, clustering, forecasting, detección de anomalías, segmentación y búsqueda de similitud, con APIs compatibles con scikit-learn.

    Costo de contexto al activarse
    3.1k tok
    Tamaño del paquete
    12 archivos
    Última actualización
    hace 2 meses
    datos analitica

    Anndata

    45.9k

    Estructura de datos para matrices anotadas en análisis de célula única. Úsala con archivos .h5ad o el ecosistema scverse; para análisis usa scanpy, para modelos probabilísticos scvi-tools, para escala poblacional cellxgene-census.

    Costo de contexto al activarse
    3k tok
    Tamaño del paquete
    6 archivos
    Última actualización
    hace 2 meses
    datos analitica

    Infiere redes de regulación génica (GRN) a partir de datos de expresión génica con algoritmos escalables (GRNBoost2, GENIE3), para transcriptómica bulk o de célula única, con computación distribuida.

    Costo de contexto al activarse
    2.1k tok
    Tamaño del paquete
    5 archivos
    Última actualización
    hace 2 meses
    datos analitica