[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6M02PZYW0Q9VKA0H241PZ3F":3,"skill-same:01M6M02PZYW0Q9VKA0H241PZ3F":78},{"skillNo":4,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":15,"categories":16,"keywords":17,"publishedAt":39,"linkOnly":40,"markdownContent":41,"markdownBody":42,"frontMatter":43,"refName":46,"commitSha":47,"skillDirectory":48,"forksCount":13,"repositoryHtmlUrl":49,"repositoryHomepageUrl":6,"ownerHtmlUrl":50,"ownerBlogUrl":6,"ownerDescription":6,"updatedAt":51,"install":52,"resources":65},"01M6M02PZYW0Q9VKA0H241PZ3F","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.","endman100\u002Fskill-router-nexus","endman100","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F31997019?v=4","01M6KPDX17BYDWW4RRB0TNGGMX","01M6KPDX64Y2QBEWVFG5W5PWPF",0,"BSD-3-Clause","https:\u002F\u002Fgithub.com\u002Fendman100\u002Fskill-router-nexus\u002Fblob\u002Fmain\u002FScience\u002Fbioinformatics-and-omics\u002Fscvelo\u002FSKILL.md",[],[5,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38],"single","state","estimate","for","seq","directions","with","dynamics","scvi","trajectory","infer","cell","RNA","transitions","time","compute","velocity","scanpy","analysis","Tools","data","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":14,"metadata":44,"description":7},{"skill-author":45},"Kuan-lin Huang","main","f19b254e8975d0bfddb394686706106930d7964d","Science\u002Fbioinformatics-and-omics\u002Fscvelo","https:\u002F\u002Fgithub.com\u002Fendman100\u002Fskill-router-nexus","https:\u002F\u002Fgithub.com\u002Fendman100","2026-11-12 18:13:37",{"source":8,"skillName":5,"commands":53,"prompt":63,"zipAvailable":64},[54,57,60],{"tool":55,"command":56},"npx","npx skills add endman100\u002Fskill-router-nexus --skill scvelo",{"tool":58,"command":59},"bunx","bunx skills add endman100\u002Fskill-router-nexus --skill scvelo",{"tool":61,"command":62},"pnpm","pnpm dlx skills add endman100\u002Fskill-router-nexus --skill scvelo","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fendman100\u002Fskill-router-nexus\u002Fblob\u002Fmain\u002FScience\u002Fbioinformatics-and-omics\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\u002Fendman100\u002Fskill-router-nexus\u002Fblob\u002Fmain\u002FScience\u002Fbioinformatics-and-omics\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\u002Fendman100\u002Fskill-router-nexus\u002Fblob\u002Fmain\u002FScience\u002Fbioinformatics-and-omics\u002Fscvelo\u002Fscripts\u002Frna_velocity_workflow.py",[79,104,140,163,172,196],{"skillNo":80,"name":81,"nameZh":6,"description":82,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":83,"licenseFileUrl":84,"sourceHtmlUrl":85,"categories":86,"keywords":92,"publishedAt":39},"01M6MPCT5BXVER8HQZTW3QE9AS","create-master","基于佛教经典文献，生成特定高僧大德的 AI 教学角色","MIT","https:\u002F\u002Fgithub.com\u002Fendman100\u002Fskill-router-nexus\u002Fblob\u002Fmain\u002FMetaphysics-and-Spirituality\u002FMaster-skill\u002FLICENSE","https:\u002F\u002Fgithub.com\u002Fendman100\u002Fskill-router-nexus\u002Fblob\u002Fmain\u002FMetaphysics-and-Spirituality\u002FMaster-skill\u002FSKILL.md",[87],{"categoryNo":88,"categoryName":89,"taxonomyType":90,"taxonomyTypeDesc":91},"01JBSEEDCAT000000000000039","教师与教育","PROFESSION","适用职业",[93,94,95,96,97,98,99,100,101,102,103],"create master","master","create","生成","true","webfetch","edit","write","read","grep","Bash",{"skillNo":105,"name":106,"nameZh":6,"description":107,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":83,"licenseFileUrl":108,"sourceHtmlUrl":109,"categories":110,"keywords":122,"publishedAt":39},"01M6M43AKE95Y64E1JRXEF5QQ3","writing-dna-skill","从至少 20 篇完整文章中蒸馏可复用的写作 DNA，分析语言、文章结构、选题逻辑、素材策略、认知框架和视觉风格，并生成 Writing-DNA.md；按该 DNA 写作时会读取全部蒸馏产物和 5 篇相关原文。用于中英文作者、账号、品牌或出版物的风格分析与一致性写作。 Distill reusable Writing DNA from at least 20 complete articles for Chinese or English authors, publications, brands, and accounts; use for language, structure, topic logic, source strategy, cognitive-frame, and visual-style analysis.","https:\u002F\u002Fgithub.com\u002Fendman100\u002Fskill-router-nexus\u002Fblob\u002Fmain\u002FWriting-and-Content\u002Fwriting-dna-skill\u002FLICENSE","https:\u002F\u002Fgithub.com\u002Fendman100\u002Fskill-router-nexus\u002Fblob\u002Fmain\u002FWriting-and-Content\u002Fwriting-dna-skill\u002FSKILL.md",[111,116,119],{"categoryNo":112,"categoryName":113,"taxonomyType":114,"taxonomyTypeDesc":115},"01JBSEEDCAT000000000000018","写作与文案","SCENARIO","使用场景",{"categoryNo":117,"categoryName":118,"taxonomyType":114,"taxonomyTypeDesc":115},"01JBSEEDCAT000000000000023","Skill与智能体开发",{"categoryNo":120,"categoryName":121,"taxonomyType":90,"taxonomyTypeDesc":91},"01JBSEEDCAT000000000000036","内容创作者",[123,124,125,126,127,128,129,130,131,132,133,134,135,96,36,136,137,21,138,139],"writing dna skill","DNA","writing","strategy","english","logic","visual","structure","chinese","reusable","use","style","distill","frame","source","at","complete",{"skillNo":141,"name":142,"nameZh":6,"description":143,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":83,"licenseFileUrl":144,"sourceHtmlUrl":145,"categories":146,"keywords":149,"publishedAt":39},"01M6M428TTCGQ4ME3KY99VN037","stop-slop","Remove AI writing patterns from prose. Use when drafting, editing, or reviewing text to eliminate predictable AI tells.","https:\u002F\u002Fgithub.com\u002Fendman100\u002Fskill-router-nexus\u002Fblob\u002Fmain\u002FWriting-and-Content\u002Fstop-slop\u002FLICENSE","https:\u002F\u002Fgithub.com\u002Fendman100\u002Fskill-router-nexus\u002Fblob\u002Fmain\u002FWriting-and-Content\u002Fstop-slop\u002FSKILL.md",[147,148],{"categoryNo":112,"categoryName":113,"taxonomyType":114,"taxonomyTypeDesc":115},{"categoryNo":120,"categoryName":121,"taxonomyType":90,"taxonomyTypeDesc":91},[150,151,152,153,154,155,156,157,158,133,159,160,161,21,162,125],"slop","stop slop","stop","drafting","when","drafts","https","patterns","prose","remove","editing","text","content",{"skillNo":164,"name":165,"nameZh":6,"description":166,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":83,"licenseFileUrl":167,"sourceHtmlUrl":168,"categories":169,"keywords":170,"publishedAt":39},"01M6M41X0B7EBX42TK435DMGGR","shuorenhua","检查和清理中英文文本里的 AI 套路，适用于“去 AI 味”“说人话”“自然一点”“别像模板”“先标问题”这类改写和审稿需求；按场景控制力度，同时保留事实、术语、语域和责任主体。","https:\u002F\u002Fgithub.com\u002Fendman100\u002Fskill-router-nexus\u002Fblob\u002Fmain\u002FWriting-and-Content\u002Fshuorenhua\u002FLICENSE","https:\u002F\u002Fgithub.com\u002Fendman100\u002Fskill-router-nexus\u002Fblob\u002Fmain\u002FWriting-and-Content\u002Fshuorenhua\u002FSKILL.md",[],[165,171],"文本",{"skillNo":173,"name":174,"nameZh":6,"description":175,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":83,"licenseFileUrl":176,"sourceHtmlUrl":177,"categories":178,"keywords":179,"publishedAt":39},"01M6M3ZD12WBEW5KXKDM4N6DFG","naming","Name products, SaaS, brands, open source projects, bots, and apps. Use when the user needs to name something, find a brand name, or pick a product name. Metaphor-driven process that produces memorable, meaningful names and avoids AI slop.","https:\u002F\u002Fgithub.com\u002Fendman100\u002Fskill-router-nexus\u002Fblob\u002Fmain\u002FWriting-and-Content\u002Fnaming-main\u002FLICENSE","https:\u002F\u002Fgithub.com\u002Fendman100\u002Fskill-router-nexus\u002Fblob\u002Fmain\u002FWriting-and-Content\u002Fnaming-main\u002FSKILL.md",[],[174,180,181,182,183,184,133,185,101,137,186,187,188,189,103,190,191,192,193,154,194,195,150],"repo","websearch","product name","apps","bots","view","brand","pick","gh","projects","open","saas","open source","product","describe","ai slop",{"skillNo":197,"name":198,"nameZh":6,"description":199,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":83,"licenseFileUrl":200,"sourceHtmlUrl":201,"categories":202,"keywords":204,"publishedAt":39},"01M6M3YVXAFAAWJ7F6JMPFREYE","humanizer-zh","去除文本中的 AI 生成痕迹。适用于编辑或审阅文本，使其听起来更自然、更像人类书写。\n基于维基百科的\"AI 写作特征\"综合指南。检测并修复以下模式：夸大的象征意义、\n宣传性语言、以 -ing 结尾的肤浅分析、模糊的归因、破折号过度使用、三段式法则、\nAI 词汇、否定式排比、过多的连接性短语。","https:\u002F\u002Fgithub.com\u002Fendman100\u002Fskill-router-nexus\u002Fblob\u002Fmain\u002FWriting-and-Content\u002Fhumanizer-zh\u002FLICENSE","https:\u002F\u002Fgithub.com\u002Fendman100\u002Fskill-router-nexus\u002Fblob\u002Fmain\u002FWriting-and-Content\u002Fhumanizer-zh\u002FSKILL.md",[203],{"categoryNo":112,"categoryName":113,"taxonomyType":114,"taxonomyTypeDesc":115},[205,206,207,101,100,99,125,96,171,208,150,152],"humanizer","zh","humanizer zh","翻译"]