[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M71CSBCYRSHMHRGKA4FHM8GF":3,"skill-same:01M71CSBCYRSHMHRGKA4FHM8GF":78},{"skillNo":4,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":16,"categories":17,"keywords":18,"publishedAt":38,"linkOnly":39,"markdownContent":40,"markdownBody":41,"frontMatter":42,"refName":45,"commitSha":46,"skillDirectory":47,"forksCount":48,"repositoryHtmlUrl":49,"repositoryHomepageUrl":6,"ownerHtmlUrl":50,"ownerBlogUrl":6,"ownerDescription":6,"updatedAt":51,"install":52,"resources":65},"01M71CSBCYRSHMHRGKA4FHM8GF","scvelo",null,"RNA velocity analysis with scVelo. Estimate cell state transitions from unspliced\u002Fspliced mRNA dynamics, infer trajectory directions, compute latent time, and identify driver genes in single-cell RNA-seq data. Complements Scanpy\u002FscVI-tools for trajectory inference.","strmt7\u002Fai_skills_collection_benchmarked","strmt7","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F28989754?v=4","01M71929P914SWKQ7QJV24NBBY","Stratos","01M71929Q9VGKQ7PWYR95VSQQQ",1,"BSD-3-Clause","https:\u002F\u002Fgithub.com\u002Fstrmt7\u002Fai_skills_collection_benchmarked\u002Fblob\u002Fmain\u002Fincluded\u002Fskills\u002Fby-category\u002Fscience-research-data-analysis\u002Flatest-release-community\u002Fscvelo\u002FSKILL.md",[],[5,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37],"Tools","transitions","estimate","trajectory","state","with","compute","single","for","dynamics","seq","data","velocity","RNA","scanpy","analysis","directions","time","infer","2026-11-10 10:12:30",false,"---\nname: scvelo\ndescription: RNA velocity analysis with scVelo. Estimate cell state transitions from unspliced\u002Fspliced mRNA dynamics, infer trajectory directions, compute latent time, and identify driver genes in single-cell RNA-seq data. Complements Scanpy\u002FscVI-tools for trajectory inference.\nlicense: BSD-3-Clause\nmetadata:\n    skill-author: Kuan-lin Huang\n---\n\n# scVelo — RNA Velocity Analysis\n\n## Overview\n\nscVelo 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.\n\n**Installation:** `pip install scvelo`\n\n**Key resources:**\n- Documentation: https:\u002F\u002Fscvelo.readthedocs.io\u002F\n- GitHub: https:\u002F\u002Fgithub.com\u002Ftheislab\u002Fscvelo\n- Paper: Bergen et al. (2020) Nature Biotechnology. PMID: 32747759\n\n## When to Use This Skill\n\nUse scVelo when:\n\n- **Trajectory inference from snapshot data**: Determine which direction cells are differentiating\n- **Cell fate prediction**: Identify progenitor cells and their downstream fates\n- **Driver gene identification**: Find genes whose dynamics best explain observed trajectories\n- **Developmental biology**: Model hematopoiesis, neurogenesis, epithelial-to-mesenchymal transitions\n- **Latent time estimation**: Order cells along a pseudotime derived from splicing dynamics\n- **Complement to Scanpy**: Add directional information to UMAP embeddings\n\n## Prerequisites\n\nscVelo requires count matrices for both **unspliced** and **spliced** RNA. These are generated by:\n1. **STARsolo** or **kallisto|bustools** with `lamanno` mode\n2. **velocyto** CLI: `velocyto run10x` \u002F `velocyto run`\n3. **alevin-fry** \u002F **simpleaf** with spliced\u002Funspliced output\n\nData is stored in an `AnnData` object with `layers[\"spliced\"]` and `layers[\"unspliced\"]`.\n\n## Standard RNA Velocity Workflow\n\n### 1. Setup and Data Loading\n\n```python\nimport scvelo as scv\nimport scanpy as sc\nimport numpy as np\nimport matplotlib.pyplot as plt\n\n# Configure settings\nscv.settings.verbosity = 3       # Show computation steps\nscv.settings.presenter_view = True\nscv.settings.set_figure_params('scvelo')\n\n# Load data (AnnData with spliced\u002Funspliced layers)\n# Option A: Load from loom (velocyto output)\nadata = scv.read(\"cellranger_output.loom\", cache=True)\n\n# Option B: Merge velocyto loom with Scanpy-processed AnnData\nadata_processed = sc.read_h5ad(\"processed.h5ad\")  # Has UMAP, clusters\nadata_velocity = scv.read(\"velocyto.loom\")\nadata = scv.utils.merge(adata_processed, adata_velocity)\n\n# Verify layers\nprint(adata)\n# obs × var: N × G\n# layers: 'spliced', 'unspliced' (required)\n# obsm['X_umap'] (required for visualization)\n```\n\n### 2. Preprocessing\n\n```python\n# Filter and normalize (follows Scanpy conventions)\nscv.pp.filter_and_normalize(\n    adata,\n    min_shared_counts=20,   # Minimum counts in spliced+unspliced\n    n_top_genes=2000        # Top highly variable genes\n)\n\n# Compute first and second order moments (means and variances)\n# knn_connectivities must be computed first\nsc.pp.neighbors(adata, n_neighbors=30, n_pcs=30)\nscv.pp.moments(\n    adata,\n    n_pcs=30,\n    n_neighbors=30\n)\n```\n\n### 3. Velocity Estimation — Stochastic Model\n\nThe stochastic model is fast and suitable for exploratory analysis:\n\n```python\n# Stochastic velocity (faster, less accurate)\nscv.tl.velocity(adata, mode='stochastic')\nscv.tl.velocity_graph(adata)\n\n# Visualize\nscv.pl.velocity_embedding_stream(\n    adata,\n    basis='umap',\n    color='leiden',\n    title=\"RNA Velocity (Stochastic)\"\n)\n```\n\n### 4. Velocity Estimation — Dynamical Model (Recommended)\n\nThe dynamical model fits the full splicing kinetics and is more accurate:\n\n```python\n# Recover dynamics (computationally intensive; ~10-30 min for 10K cells)\nscv.tl.recover_dynamics(adata, n_jobs=4)\n\n# Compute velocity from dynamical model\nscv.tl.velocity(adata, mode='dynamical')\nscv.tl.velocity_graph(adata)\n```\n\n### 5. Latent Time\n\nThe dynamical model enables computation of a shared latent time (pseudotime):\n\n```python\n# Compute latent time\nscv.tl.latent_time(adata)\n\n# Visualize latent time on UMAP\nscv.pl.scatter(\n    adata,\n    color='latent_time',\n    color_map='gnuplot',\n    size=80,\n    title='Latent time'\n)\n\n# Identify top genes ordered by latent time\ntop_genes = adata.var['fit_likelihood'].sort_values(ascending=False).index[:300]\nscv.pl.heatmap(\n    adata,\n    var_names=top_genes,\n    sortby='latent_time',\n    col_color='leiden',\n    n_convolve=100\n)\n```\n\n### 6. Driver Gene Analysis\n\n```python\n# Identify genes with highest velocity fit\nscv.tl.rank_velocity_genes(adata, groupby='leiden', min_corr=0.3)\ndf = scv.DataFrame(adata.uns['rank_velocity_genes']['names'])\nprint(df.head(10))\n\n# Speed and coherence\nscv.tl.velocity_confidence(adata)\nscv.pl.scatter(\n    adata,\n    c=['velocity_length', 'velocity_confidence'],\n    cmap='coolwarm',\n    perc=[5, 95]\n)\n\n# Phase portraits for specific genes\nscv.pl.velocity(adata, ['Cpe', 'Gnao1', 'Ins2'],\n               ncols=3, figsize=(16, 4))\n```\n\n### 7. Velocity Arrows and Pseudotime\n\n```python\n# Arrow plot on UMAP\nscv.pl.velocity_embedding(\n    adata,\n    arrow_length=3,\n    arrow_size=2,\n    color='leiden',\n    basis='umap'\n)\n\n# Stream plot (cleaner visualization)\nscv.pl.velocity_embedding_stream(\n    adata,\n    basis='umap',\n    color='leiden',\n    smooth=0.8,\n    min_mass=4\n)\n\n# Velocity pseudotime (alternative to latent time)\nscv.tl.velocity_pseudotime(adata)\nscv.pl.scatter(adata, color='velocity_pseudotime', cmap='gnuplot')\n```\n\n### 8. PAGA Trajectory Graph\n\n```python\n# PAGA graph with velocity-informed transitions\nscv.tl.paga(adata, groups='leiden')\ndf = scv.get_df(adata, 'paga\u002Ftransitions_confidence', precision=2).T\ndf.style.background_gradient(cmap='Blues').format('{:.2g}')\n\n# Plot PAGA with velocity\nscv.pl.paga(\n    adata,\n    basis='umap',\n    size=50,\n    alpha=0.1,\n    min_edge_width=2,\n    node_size_scale=1.5\n)\n```\n\n## Complete Workflow Script\n\n```python\nimport scvelo as scv\nimport scanpy as sc\n\ndef run_rna_velocity(adata, n_top_genes=2000, mode='dynamical', n_jobs=4):\n    \"\"\"\n    Complete RNA velocity workflow.\n\n    Args:\n        adata: AnnData with 'spliced' and 'unspliced' layers, UMAP in obsm\n        n_top_genes: Number of top HVGs for velocity\n        mode: 'stochastic' (fast) or 'dynamical' (accurate)\n        n_jobs: Parallel jobs for dynamical model\n\n    Returns:\n        Processed AnnData with velocity information\n    \"\"\"\n    scv.settings.verbosity = 2\n\n    # 1. Preprocessing\n    scv.pp.filter_and_normalize(adata, min_shared_counts=20, n_top_genes=n_top_genes)\n\n    if 'neighbors' not in adata.uns:\n        sc.pp.neighbors(adata, n_neighbors=30)\n\n    scv.pp.moments(adata, n_pcs=30, n_neighbors=30)\n\n    # 2. Velocity estimation\n    if mode == 'dynamical':\n        scv.tl.recover_dynamics(adata, n_jobs=n_jobs)\n\n    scv.tl.velocity(adata, mode=mode)\n    scv.tl.velocity_graph(adata)\n\n    # 3. Downstream analyses\n    if mode == 'dynamical':\n        scv.tl.latent_time(adata)\n        scv.tl.rank_velocity_genes(adata, groupby='leiden', min_corr=0.3)\n\n    scv.tl.velocity_confidence(adata)\n    scv.tl.velocity_pseudotime(adata)\n\n    return adata\n```\n\n## Key Output Fields in AnnData\n\nAfter running the workflow, the following fields are added:\n\n| Location | Key | Description |\n|----------|-----|-------------|\n| `adata.layers` | `velocity` | RNA velocity per gene per cell |\n| `adata.layers` | `fit_t` | Fitted latent time per gene per cell |\n| `adata.obsm` | `velocity_umap` | 2D velocity vectors on UMAP |\n| `adata.obs` | `velocity_pseudotime` | Pseudotime from velocity |\n| `adata.obs` | `latent_time` | Latent time from dynamical model |\n| `adata.obs` | `velocity_length` | Speed of each cell |\n| `adata.obs` | `velocity_confidence` | Confidence score per cell |\n| `adata.var` | `fit_likelihood` | Gene-level model fit quality |\n| `adata.var` | `fit_alpha` | Transcription rate |\n| `adata.var` | `fit_beta` | Splicing rate |\n| `adata.var` | `fit_gamma` | Degradation rate |\n| `adata.uns` | `velocity_graph` | Cell-cell transition probability matrix |\n\n## Velocity Models Comparison\n\n| Model | Speed | Accuracy | When to Use |\n|-------|-------|----------|-------------|\n| `stochastic` | Fast | Moderate | Exploratory; large datasets |\n| `deterministic` | Medium | Moderate | Simple linear kinetics |\n| `dynamical` | Slow | High | Publication-quality; identifies driver genes |\n\n## Best Practices\n\n- **Start with stochastic mode** for exploration; switch to dynamical for final analysis\n- **Need good coverage of unspliced reads**: Short reads (\u003C 100 bp) may miss intron coverage\n- **Minimum 2,000 cells**: RNA velocity is noisy with fewer cells\n- **Velocity should be coherent**: Arrows should follow known biology; randomness indicates issues\n- **k-NN bandwidth matters**: Too few neighbors → noisy velocity; too many → oversmoothed\n- **Sanity check**: Root cells (progenitors) should have high unspliced\u002Fspliced ratios for marker genes\n- **Dynamical model requires distinct kinetic states**: Works best for clear differentiation processes\n\n## Troubleshooting\n\n| Problem | Solution |\n|---------|---------|\n| Missing unspliced layer | Re-run velocyto or use STARsolo with `--soloFeatures Gene Velocyto` |\n| Very few velocity genes | Lower `min_shared_counts`; check sequencing depth |\n| Random-looking arrows | Try different `n_neighbors` or velocity model |\n| Memory error with dynamical | Set `n_jobs=1`; reduce `n_top_genes` |\n| Negative velocity everywhere | Check that spliced\u002Funspliced layers are not swapped |\n\n## Additional Resources\n\n- **scVelo documentation**: https:\u002F\u002Fscvelo.readthedocs.io\u002F\n- **Tutorial notebooks**: https:\u002F\u002Fscvelo.readthedocs.io\u002Ftutorials\u002F\n- **GitHub**: https:\u002F\u002Fgithub.com\u002Ftheislab\u002Fscvelo\n- **Paper**: Bergen V et al. (2020) Nature Biotechnology. PMID: 32747759\n- **velocyto** (preprocessing): http:\u002F\u002Fvelocyto.org\u002F\n- **CellRank** (fate prediction, extends scVelo): https:\u002F\u002Fcellrank.readthedocs.io\u002F\n- **dynamo** (metabolic labeling alternative): https:\u002F\u002Fdynamo-release.readthedocs.io\u002F\n","# scVelo — RNA Velocity Analysis\n\n## Overview\n\nscVelo 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.\n\n**Installation:** `pip install scvelo`\n\n**Key resources:**\n- Documentation: https:\u002F\u002Fscvelo.readthedocs.io\u002F\n- GitHub: https:\u002F\u002Fgithub.com\u002Ftheislab\u002Fscvelo\n- Paper: Bergen et al. (2020) Nature Biotechnology. PMID: 32747759\n\n## When to Use This Skill\n\nUse scVelo when:\n\n- **Trajectory inference from snapshot data**: Determine which direction cells are differentiating\n- **Cell fate prediction**: Identify progenitor cells and their downstream fates\n- **Driver gene identification**: Find genes whose dynamics best explain observed trajectories\n- **Developmental biology**: Model hematopoiesis, neurogenesis, epithelial-to-mesenchymal transitions\n- **Latent time estimation**: Order cells along a pseudotime derived from splicing dynamics\n- **Complement to Scanpy**: Add directional information to UMAP embeddings\n\n## Prerequisites\n\nscVelo requires count matrices for both **unspliced** and **spliced** RNA. These are generated by:\n1. **STARsolo** or **kallisto|bustools** with `lamanno` mode\n2. **velocyto** CLI: `velocyto run10x` \u002F `velocyto run`\n3. **alevin-fry** \u002F **simpleaf** with spliced\u002Funspliced output\n\nData is stored in an `AnnData` object with `layers[\"spliced\"]` and `layers[\"unspliced\"]`.\n\n## Standard RNA Velocity Workflow\n\n### 1. Setup and Data Loading\n\n```python\nimport scvelo as scv\nimport scanpy as sc\nimport numpy as np\nimport matplotlib.pyplot as plt\n\n# Configure settings\nscv.settings.verbosity = 3       # Show computation steps\nscv.settings.presenter_view = True\nscv.settings.set_figure_params('scvelo')\n\n# Load data (AnnData with spliced\u002Funspliced layers)\n# Option A: Load from loom (velocyto output)\nadata = scv.read(\"cellranger_output.loom\", cache=True)\n\n# Option B: Merge velocyto loom with Scanpy-processed AnnData\nadata_processed = sc.read_h5ad(\"processed.h5ad\")  # Has UMAP, clusters\nadata_velocity = scv.read(\"velocyto.loom\")\nadata = scv.utils.merge(adata_processed, adata_velocity)\n\n# Verify layers\nprint(adata)\n# obs × var: N × G\n# layers: 'spliced', 'unspliced' (required)\n# obsm['X_umap'] (required for visualization)\n```\n\n### 2. Preprocessing\n\n```python\n# Filter and normalize (follows Scanpy conventions)\nscv.pp.filter_and_normalize(\n    adata,\n    min_shared_counts=20,   # Minimum counts in spliced+unspliced\n    n_top_genes=2000        # Top highly variable genes\n)\n\n# Compute first and second order moments (means and variances)\n# knn_connectivities must be computed first\nsc.pp.neighbors(adata, n_neighbors=30, n_pcs=30)\nscv.pp.moments(\n    adata,\n    n_pcs=30,\n    n_neighbors=30\n)\n```\n\n### 3. Velocity Estimation — Stochastic Model\n\nThe stochastic model is fast and suitable for exploratory analysis:\n\n```python\n# Stochastic velocity (faster, less accurate)\nscv.tl.velocity(adata, mode='stochastic')\nscv.tl.velocity_graph(adata)\n\n# Visualize\nscv.pl.velocity_embedding_stream(\n    adata,\n    basis='umap',\n    color='leiden',\n    title=\"RNA Velocity (Stochastic)\"\n)\n```\n\n### 4. Velocity Estimation — Dynamical Model (Recommended)\n\nThe dynamical model fits the full splicing kinetics and is more accurate:\n\n```python\n# Recover dynamics (computationally intensive; ~10-30 min for 10K cells)\nscv.tl.recover_dynamics(adata, n_jobs=4)\n\n# Compute velocity from dynamical model\nscv.tl.velocity(adata, mode='dynamical')\nscv.tl.velocity_graph(adata)\n```\n\n### 5. Latent Time\n\nThe dynamical model enables computation of a shared latent time (pseudotime):\n\n```python\n# Compute latent time\nscv.tl.latent_time(adata)\n\n# Visualize latent time on UMAP\nscv.pl.scatter(\n    adata,\n    color='latent_time',\n    color_map='gnuplot',\n    size=80,\n    title='Latent time'\n)\n\n# Identify top genes ordered by latent time\ntop_genes = adata.var['fit_likelihood'].sort_values(ascending=False).index[:300]\nscv.pl.heatmap(\n    adata,\n    var_names=top_genes,\n    sortby='latent_time',\n    col_color='leiden',\n    n_convolve=100\n)\n```\n\n### 6. Driver Gene Analysis\n\n```python\n# Identify genes with highest velocity fit\nscv.tl.rank_velocity_genes(adata, groupby='leiden', min_corr=0.3)\ndf = scv.DataFrame(adata.uns['rank_velocity_genes']['names'])\nprint(df.head(10))\n\n# Speed and coherence\nscv.tl.velocity_confidence(adata)\nscv.pl.scatter(\n    adata,\n    c=['velocity_length', 'velocity_confidence'],\n    cmap='coolwarm',\n    perc=[5, 95]\n)\n\n# Phase portraits for specific genes\nscv.pl.velocity(adata, ['Cpe', 'Gnao1', 'Ins2'],\n               ncols=3, figsize=(16, 4))\n```\n\n### 7. Velocity Arrows and Pseudotime\n\n```python\n# Arrow plot on UMAP\nscv.pl.velocity_embedding(\n    adata,\n    arrow_length=3,\n    arrow_size=2,\n    color='leiden',\n    basis='umap'\n)\n\n# Stream plot (cleaner visualization)\nscv.pl.velocity_embedding_stream(\n    adata,\n    basis='umap',\n    color='leiden',\n    smooth=0.8,\n    min_mass=4\n)\n\n# Velocity pseudotime (alternative to latent time)\nscv.tl.velocity_pseudotime(adata)\nscv.pl.scatter(adata, color='velocity_pseudotime', cmap='gnuplot')\n```\n\n### 8. PAGA Trajectory Graph\n\n```python\n# PAGA graph with velocity-informed transitions\nscv.tl.paga(adata, groups='leiden')\ndf = scv.get_df(adata, 'paga\u002Ftransitions_confidence', precision=2).T\ndf.style.background_gradient(cmap='Blues').format('{:.2g}')\n\n# Plot PAGA with velocity\nscv.pl.paga(\n    adata,\n    basis='umap',\n    size=50,\n    alpha=0.1,\n    min_edge_width=2,\n    node_size_scale=1.5\n)\n```\n\n## Complete Workflow Script\n\n```python\nimport scvelo as scv\nimport scanpy as sc\n\ndef run_rna_velocity(adata, n_top_genes=2000, mode='dynamical', n_jobs=4):\n    \"\"\"\n    Complete RNA velocity workflow.\n\n    Args:\n        adata: AnnData with 'spliced' and 'unspliced' layers, UMAP in obsm\n        n_top_genes: Number of top HVGs for velocity\n        mode: 'stochastic' (fast) or 'dynamical' (accurate)\n        n_jobs: Parallel jobs for dynamical model\n\n    Returns:\n        Processed AnnData with velocity information\n    \"\"\"\n    scv.settings.verbosity = 2\n\n    # 1. Preprocessing\n    scv.pp.filter_and_normalize(adata, min_shared_counts=20, n_top_genes=n_top_genes)\n\n    if 'neighbors' not in adata.uns:\n        sc.pp.neighbors(adata, n_neighbors=30)\n\n    scv.pp.moments(adata, n_pcs=30, n_neighbors=30)\n\n    # 2. Velocity estimation\n    if mode == 'dynamical':\n        scv.tl.recover_dynamics(adata, n_jobs=n_jobs)\n\n    scv.tl.velocity(adata, mode=mode)\n    scv.tl.velocity_graph(adata)\n\n    # 3. Downstream analyses\n    if mode == 'dynamical':\n        scv.tl.latent_time(adata)\n        scv.tl.rank_velocity_genes(adata, groupby='leiden', min_corr=0.3)\n\n    scv.tl.velocity_confidence(adata)\n    scv.tl.velocity_pseudotime(adata)\n\n    return adata\n```\n\n## Key Output Fields in AnnData\n\nAfter running the workflow, the following fields are added:\n\n| Location | Key | Description |\n|----------|-----|-------------|\n| `adata.layers` | `velocity` | RNA velocity per gene per cell |\n| `adata.layers` | `fit_t` | Fitted latent time per gene per cell |\n| `adata.obsm` | `velocity_umap` | 2D velocity vectors on UMAP |\n| `adata.obs` | `velocity_pseudotime` | Pseudotime from velocity |\n| `adata.obs` | `latent_time` | Latent time from dynamical model |\n| `adata.obs` | `velocity_length` | Speed of each cell |\n| `adata.obs` | `velocity_confidence` | Confidence score per cell |\n| `adata.var` | `fit_likelihood` | Gene-level model fit quality |\n| `adata.var` | `fit_alpha` | Transcription rate |\n| `adata.var` | `fit_beta` | Splicing rate |\n| `adata.var` | `fit_gamma` | Degradation rate |\n| `adata.uns` | `velocity_graph` | Cell-cell transition probability matrix |\n\n## Velocity Models Comparison\n\n| Model | Speed | Accuracy | When to Use |\n|-------|-------|----------|-------------|\n| `stochastic` | Fast | Moderate | Exploratory; large datasets |\n| `deterministic` | Medium | Moderate | Simple linear kinetics |\n| `dynamical` | Slow | High | Publication-quality; identifies driver genes |\n\n## Best Practices\n\n- **Start with stochastic mode** for exploration; switch to dynamical for final analysis\n- **Need good coverage of unspliced reads**: Short reads (\u003C 100 bp) may miss intron coverage\n- **Minimum 2,000 cells**: RNA velocity is noisy with fewer cells\n- **Velocity should be coherent**: Arrows should follow known biology; randomness indicates issues\n- **k-NN bandwidth matters**: Too few neighbors → noisy velocity; too many → oversmoothed\n- **Sanity check**: Root cells (progenitors) should have high unspliced\u002Fspliced ratios for marker genes\n- **Dynamical model requires distinct kinetic states**: Works best for clear differentiation processes\n\n## Troubleshooting\n\n| Problem | Solution |\n|---------|---------|\n| Missing unspliced layer | Re-run velocyto or use STARsolo with `--soloFeatures Gene Velocyto` |\n| Very few velocity genes | Lower `min_shared_counts`; check sequencing depth |\n| Random-looking arrows | Try different `n_neighbors` or velocity model |\n| Memory error with dynamical | Set `n_jobs=1`; reduce `n_top_genes` |\n| Negative velocity everywhere | Check that spliced\u002Funspliced layers are not swapped |\n\n## Additional Resources\n\n- **scVelo documentation**: https:\u002F\u002Fscvelo.readthedocs.io\u002F\n- **Tutorial notebooks**: https:\u002F\u002Fscvelo.readthedocs.io\u002Ftutorials\u002F\n- **GitHub**: https:\u002F\u002Fgithub.com\u002Ftheislab\u002Fscvelo\n- **Paper**: Bergen V et al. (2020) Nature Biotechnology. PMID: 32747759\n- **velocyto** (preprocessing): http:\u002F\u002Fvelocyto.org\u002F\n- **CellRank** (fate prediction, extends scVelo): https:\u002F\u002Fcellrank.readthedocs.io\u002F\n- **dynamo** (metabolic labeling alternative): https:\u002F\u002Fdynamo-release.readthedocs.io\u002F\n",{"name":5,"license":15,"metadata":43,"description":7},{"skill-author":44},"Kuan-lin Huang","main","5c95bcac4646c5aed06bd9aed5235cfc7985aafc","included\u002Fskills\u002Fby-category\u002Fscience-research-data-analysis\u002Flatest-release-community\u002Fscvelo",0,"https:\u002F\u002Fgithub.com\u002Fstrmt7\u002Fai_skills_collection_benchmarked","https:\u002F\u002Fgithub.com\u002Fstrmt7","2026-11-11 04:18:12",{"source":8,"skillName":5,"commands":53,"prompt":63,"zipAvailable":64},[54,57,60],{"tool":55,"command":56},"npx","npx skills add strmt7\u002Fai_skills_collection_benchmarked --skill scvelo",{"tool":58,"command":59},"bunx","bunx skills add strmt7\u002Fai_skills_collection_benchmarked --skill scvelo",{"tool":61,"command":62},"pnpm","pnpm dlx skills add strmt7\u002Fai_skills_collection_benchmarked --skill scvelo","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fstrmt7\u002Fai_skills_collection_benchmarked\u002Fblob\u002Fmain\u002Fincluded\u002Fskills\u002Fby-category\u002Fscience-research-data-analysis\u002Flatest-release-community\u002Fscvelo\u002FSKILL.md",true,[66,72],{"path":67,"resourceType":68,"resourceTypeDesc":69,"sizeBytes":70,"sourceHtmlUrl":71},"references\u002Fvelocity_models.md","REFERENCE","参考文档",5010,"https:\u002F\u002Fgithub.com\u002Fstrmt7\u002Fai_skills_collection_benchmarked\u002Fblob\u002Fmain\u002Fincluded\u002Fskills\u002Fby-category\u002Fscience-research-data-analysis\u002Flatest-release-community\u002Fscvelo\u002Freferences\u002Fvelocity_models.md",{"path":73,"resourceType":74,"resourceTypeDesc":75,"sizeBytes":76,"sourceHtmlUrl":77},"scripts\u002Frna_velocity_workflow.py","SCRIPT","脚本",8072,"https:\u002F\u002Fgithub.com\u002Fstrmt7\u002Fai_skills_collection_benchmarked\u002Fblob\u002Fmain\u002Fincluded\u002Fskills\u002Fby-category\u002Fscience-research-data-analysis\u002Flatest-release-community\u002Fscvelo\u002Fscripts\u002Frna_velocity_workflow.py",[79,111,140,166,190,218],{"skillNo":80,"name":81,"nameZh":6,"description":82,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":83,"licenseFileUrl":84,"sourceHtmlUrl":85,"categories":86,"keywords":95,"publishedAt":38},"01M71D4H3T6M57DFKN8HENAWRV","webapp-testing","Toolkit for interacting with and testing local web applications using Playwright. Supports verifying frontend functionality, debugging UI behavior, capturing browser screenshots, and viewing browser logs.","Apache-2.0","https:\u002F\u002Fgithub.com\u002Fstrmt7\u002Fai_skills_collection_benchmarked\u002Fblob\u002Fmain\u002Fincluded\u002Fskills\u002Fby-category\u002Ftesting-qa-benchmarking\u002Fofficial-reference\u002Fwebapp-testing\u002FLICENSE.txt","https:\u002F\u002Fgithub.com\u002Fstrmt7\u002Fai_skills_collection_benchmarked\u002Fblob\u002Fmain\u002Fincluded\u002Fskills\u002Fby-category\u002Ftesting-qa-benchmarking\u002Fofficial-reference\u002Fwebapp-testing\u002FSKILL.md",[87,92],{"categoryNo":88,"categoryName":89,"taxonomyType":90,"taxonomyTypeDesc":91},"01JBSEEDCAT000000000000008","测试与质量","SCENARIO","使用场景",{"categoryNo":93,"categoryName":94,"taxonomyType":90,"taxonomyTypeDesc":91},"01JBSEEDCAT000000000000009","前端开发",[96,97,98,27,99,100,101,102,103,104,105,24,106,107,108,109,110],"webapp","testing","webapp testing","applications","local","frontend","debugging","toolkit","logs","browser","playwright","web","behavior","ui","screenshots",{"skillNo":112,"name":113,"nameZh":6,"description":114,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":83,"licenseFileUrl":115,"sourceHtmlUrl":116,"categories":117,"keywords":121,"publishedAt":38},"01M71D4CQR2A2TB7GASCR5ZBG3","skill-creator","Create new skills, modify and improve existing skills, and measure skill performance. Use when users want to create a skill from scratch, edit, or optimize an existing skill, run evals to test a skill, benchmark skill performance with variance analysis, or optimize a skill's description for better triggering accuracy.","https:\u002F\u002Fgithub.com\u002Fstrmt7\u002Fai_skills_collection_benchmarked\u002Fblob\u002Fmain\u002Fincluded\u002Fskills\u002Fby-category\u002Ftesting-qa-benchmarking\u002Fofficial-reference\u002Fskill-creator-anthropics\u002FLICENSE.txt","https:\u002F\u002Fgithub.com\u002Fstrmt7\u002Fai_skills_collection_benchmarked\u002Fblob\u002Fmain\u002Fincluded\u002Fskills\u002Fby-category\u002Ftesting-qa-benchmarking\u002Fofficial-reference\u002Fskill-creator-anthropics\u002FSKILL.md",[118],{"categoryNo":119,"categoryName":120,"taxonomyType":90,"taxonomyTypeDesc":91},"01JBSEEDCAT000000000000023","Skill与智能体开发",[122,123,124,125,126,127,128,34,129,130,131,132,133,134,135,136,137,138,27,139],"skill creator","creator","performance","improve","run evals","new","when","create","optimize","variance analysis","run","edit","benchmark","a skill","existing skill","evals","modify","accuracy",{"skillNo":141,"name":142,"nameZh":6,"description":143,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":144,"licenseFileUrl":6,"sourceHtmlUrl":145,"categories":146,"keywords":149,"publishedAt":38},"01M71D488XHEZVXXSXFYP8ENMH","playwright-skill","Complete browser automation with Playwright. Auto-detects dev servers, writes reusable test scripts, and supports screenshots, responsive checks, UX validation, login flows, link checks, and arbitrary browser automation. Use when the user wants to test a website, automate browser interactions, validate web functionality, or perform browser-based testing.","MIT","https:\u002F\u002Fgithub.com\u002Fstrmt7\u002Fai_skills_collection_benchmarked\u002Fblob\u002Fmain\u002Fincluded\u002Fskills\u002Fby-category\u002Ftesting-qa-benchmarking\u002Flatest-release-browser-automation\u002Fplaywright-skill\u002FSKILL.md",[147,148],{"categoryNo":88,"categoryName":89,"taxonomyType":90,"taxonomyTypeDesc":91},{"categoryNo":119,"categoryName":120,"taxonomyType":90,"taxonomyTypeDesc":91},[106,150,151,152,97,153,154,128,155,105,156,157,158,159,160,161,162,163,164,165],"playwright skill","browser automation","flows","auto","access","Bash","website","ux","login","scripts","read","write","node","install","network","responsive",{"skillNo":167,"name":168,"nameZh":6,"description":169,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":83,"licenseFileUrl":170,"sourceHtmlUrl":171,"categories":172,"keywords":174,"publishedAt":38},"01M71CY25GM939M6RES91QSG3T","web-artifacts-builder","Suite of tools for creating elaborate, multi-component claude.ai HTML artifacts using modern frontend web technologies (React, Tailwind CSS, shadcn\u002Fui). Use for complex artifacts requiring state management, routing, or shadcn\u002Fui components - not for simple single-file HTML\u002FJSX artifacts.","https:\u002F\u002Fgithub.com\u002Fstrmt7\u002Fai_skills_collection_benchmarked\u002Fblob\u002Fmain\u002Fincluded\u002Fskills\u002Fby-category\u002Fsearch-retrieval-web-automation\u002Fofficial-reference\u002Fweb-artifacts-builder\u002FLICENSE.txt","https:\u002F\u002Fgithub.com\u002Fstrmt7\u002Fai_skills_collection_benchmarked\u002Fblob\u002Fmain\u002Fincluded\u002Fskills\u002Fby-category\u002Fsearch-retrieval-web-automation\u002Fofficial-reference\u002Fweb-artifacts-builder\u002FSKILL.md",[173],{"categoryNo":93,"categoryName":94,"taxonomyType":90,"taxonomyTypeDesc":91},[175,176,177,107,178,179,180,27,181,182,101,26,183,184,185,186,187,23,188,189],"builder","artifacts builder","artifacts","web artifacts builder","single-file","css","Tailwind","ui components","use","file","components","react","multi","routing","state management",{"skillNo":191,"name":192,"nameZh":6,"description":193,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":83,"licenseFileUrl":194,"sourceHtmlUrl":195,"categories":196,"keywords":206,"publishedAt":38},"01M71CXZB60QJJ1H4S3NN94WMZ","frontend-design","Create distinctive, production-grade frontend interfaces with high design quality. Use this skill when the user asks to build web components, pages, artifacts, posters, or applications (examples include websites, landing pages, dashboards, React components, HTML\u002FCSS layouts, or when styling\u002Fbeautifying any web UI). Generates creative, polished code and UI design that avoids generic AI aesthetics.","https:\u002F\u002Fgithub.com\u002Fstrmt7\u002Fai_skills_collection_benchmarked\u002Fblob\u002Fmain\u002Fincluded\u002Fskills\u002Fby-category\u002Fsearch-retrieval-web-automation\u002Fofficial-reference\u002Ffrontend-design\u002FLICENSE.txt","https:\u002F\u002Fgithub.com\u002Fstrmt7\u002Fai_skills_collection_benchmarked\u002Fblob\u002Fmain\u002Fincluded\u002Fskills\u002Fby-category\u002Fsearch-retrieval-web-automation\u002Fofficial-reference\u002Ffrontend-design\u002FSKILL.md",[197,198,201],{"categoryNo":93,"categoryName":94,"taxonomyType":90,"taxonomyTypeDesc":91},{"categoryNo":199,"categoryName":200,"taxonomyType":90,"taxonomyTypeDesc":91},"01JBSEEDCAT000000000000015","视觉设计",{"categoryNo":202,"categoryName":203,"taxonomyType":204,"taxonomyTypeDesc":205},"01JBSEEDCAT000000000000032","设计师","PROFESSION","适用职业",[101,207,208,180,209,210,211,99,212,213,183,128,177,214,185,215,186,216,217,24],"design","frontend design","ui design","generic","aesthetics","landing","pages","code","web ui","react components","examples",{"skillNo":219,"name":220,"nameZh":6,"description":221,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":144,"licenseFileUrl":6,"sourceHtmlUrl":222,"categories":223,"keywords":224,"publishedAt":38},"01M71CVZ54WFBTVA7R16PFY1ZE","zarr-python","Chunked N-D arrays for cloud storage. Compressed arrays, parallel I\u002FO, S3\u002FGCS integration, NumPy\u002FDask\u002FXarray compatible, for large-scale scientific computing pipelines.","https:\u002F\u002Fgithub.com\u002Fstrmt7\u002Fai_skills_collection_benchmarked\u002Fblob\u002Fmain\u002Fincluded\u002Fskills\u002Fby-category\u002Fscience-research-data-analysis\u002Flatest-release-community\u002Fzarr-python\u002FSKILL.md",[],[225,226,227,228,229,230,231,232,233,27,234,235,236,237,238,239,240,241],"zarr python","python","zarr","arrays","Cloud Storage","scientific","storage","parallel","dask","numpy","gcs","s3","integration","scientific computing","cloud","scale","pipelines"]