[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6EZWFXPEBP9S5XW1MN8BVHC":3,"skill-same:01M6EZWFXPEBP9S5XW1MN8BVHC":84},{"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":23,"publishedAt":43,"linkOnly":44,"markdownContent":45,"markdownBody":46,"frontMatter":47,"refName":50,"commitSha":51,"skillDirectory":52,"forksCount":14,"repositoryHtmlUrl":53,"repositoryHomepageUrl":54,"ownerHtmlUrl":55,"ownerBlogUrl":6,"ownerDescription":56,"updatedAt":57,"install":58,"resources":71},"01M6EZWFXPEBP9S5XW1MN8BVHC","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.","henriquescastilho\u002Fmy-claude","henriquescastilho","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F153296945?v=4","01M6ESH7EXPXTH9CVQ4K16SRG8","Henrique Scheer","01M6ESH7JHEK2PTNNH4HEH787Z",0,"BSD-3-Clause","https:\u002F\u002Fgithub.com\u002Fhenriquescastilho\u002Fmy-claude\u002Fblob\u002Fmain\u002F.codex\u002Fvendor_imports\u002Fclaude\u002Fmarketplaces\u002Fclaude-scientific-skills\u002Fscientific-skills\u002Fscvelo\u002FSKILL.md",[18],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000023","Skill与智能体开发","SCENARIO","使用场景",[5,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42],"cell","with","rna-seq","driver","dynamics","scvi","trajectory","single-cell","infer","state","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":15,"metadata":48,"description":7},{"skill-author":49},"Kuan-lin Huang","main","7925716f065257435fdb12e97f7e52842147d5ad",".codex\u002Fvendor_imports\u002Fclaude\u002Fmarketplaces\u002Fclaude-scientific-skills\u002Fscientific-skills\u002Fscvelo","https:\u002F\u002Fgithub.com\u002Fhenriquescastilho\u002Fmy-claude","https:\u002F\u002Fclaude.com\u002Fclaude-code","https:\u002F\u002Fgithub.com\u002Fhenriquescastilho","Software · Applied AI · Quantitative Modeling · Building with Claude.","2026-06-10 12:24:46",{"source":8,"skillName":5,"commands":59,"prompt":69,"zipAvailable":70},[60,63,66],{"tool":61,"command":62},"npx","npx skills add henriquescastilho\u002Fmy-claude --skill scvelo",{"tool":64,"command":65},"bunx","bunx skills add henriquescastilho\u002Fmy-claude --skill scvelo",{"tool":67,"command":68},"pnpm","pnpm dlx skills add henriquescastilho\u002Fmy-claude --skill scvelo","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fhenriquescastilho\u002Fmy-claude\u002Fblob\u002Fmain\u002F.codex\u002Fvendor_imports\u002Fclaude\u002Fmarketplaces\u002Fclaude-scientific-skills\u002Fscientific-skills\u002Fscvelo\u002FSKILL.md",true,[72,78],{"path":73,"resourceType":74,"resourceTypeDesc":75,"sizeBytes":76,"sourceHtmlUrl":77},"references\u002Fvelocity_models.md","REFERENCE","参考文档",5010,"https:\u002F\u002Fgithub.com\u002Fhenriquescastilho\u002Fmy-claude\u002Fblob\u002Fmain\u002F.codex\u002Fvendor_imports\u002Fclaude\u002Fmarketplaces\u002Fclaude-scientific-skills\u002Fscientific-skills\u002Fscvelo\u002Freferences\u002Fvelocity_models.md",{"path":79,"resourceType":80,"resourceTypeDesc":81,"sizeBytes":82,"sourceHtmlUrl":83},"scripts\u002Frna_velocity_workflow.py","SCRIPT","脚本",8072,"https:\u002F\u002Fgithub.com\u002Fhenriquescastilho\u002Fmy-claude\u002Fblob\u002Fmain\u002F.codex\u002Fvendor_imports\u002Fclaude\u002Fmarketplaces\u002Fclaude-scientific-skills\u002Fscientific-skills\u002Fscvelo\u002Fscripts\u002Frna_velocity_workflow.py",[85,125,134,143,165,190],{"skillNo":86,"name":87,"nameZh":6,"description":88,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":89,"licenseFileUrl":6,"sourceHtmlUrl":90,"categories":91,"keywords":106,"publishedAt":43},"01M6F0B6XPQ65AX2X0DWK8KT3E","markitdown","Convert files and office documents to Markdown. Supports PDF, DOCX, PPTX, XLSX, images (with OCR), audio (with transcription), HTML, CSV, JSON, XML, ZIP, YouTube URLs, EPubs and more.","MIT","https:\u002F\u002Fgithub.com\u002Fhenriquescastilho\u002Fmy-claude\u002Fblob\u002Fmain\u002F.codex\u002Fvendor_imports\u002Fclaude\u002Fmarketplaces\u002Fclaude-scientific-writer\u002Fskills\u002Fmarkitdown\u002FSKILL.md",[92,95,98,101],{"categoryNo":93,"categoryName":94,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000002","文档处理",{"categoryNo":96,"categoryName":97,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000003","演示文稿",{"categoryNo":99,"categoryName":100,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000004","电子表格",{"categoryNo":102,"categoryName":103,"taxonomyType":104,"taxonomyTypeDesc":105},"01JBSEEDCAT000000000000034","行政与办公人员","PROFESSION","适用职业",[87,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,25],"docx","PDF","pptx","xlsx","documents","csv","ocr","Audio","Bash","markdown","convert","read","write","edit","html","images","files","youtube",{"skillNo":126,"name":87,"nameZh":6,"description":88,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":89,"licenseFileUrl":6,"sourceHtmlUrl":127,"categories":128,"keywords":133,"publishedAt":43},"01M6F06SBHR9F0SDWE282Y8075","https:\u002F\u002Fgithub.com\u002Fhenriquescastilho\u002Fmy-claude\u002Fblob\u002Fmain\u002F.codex\u002Fvendor_imports\u002Fclaude\u002Fmarketplaces\u002Fclaude-scientific-writer\u002Fscientific_writer\u002F.claude\u002Fskills\u002Fmarkitdown\u002FSKILL.md",[129,130,131,132],{"categoryNo":93,"categoryName":94,"taxonomyType":21,"taxonomyTypeDesc":22},{"categoryNo":96,"categoryName":97,"taxonomyType":21,"taxonomyTypeDesc":22},{"categoryNo":99,"categoryName":100,"taxonomyType":21,"taxonomyTypeDesc":22},{"categoryNo":102,"categoryName":103,"taxonomyType":104,"taxonomyTypeDesc":105},[87,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,25],{"skillNo":135,"name":87,"nameZh":6,"description":88,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":89,"licenseFileUrl":6,"sourceHtmlUrl":136,"categories":137,"keywords":142,"publishedAt":43},"01M6F02D4R14EJAPBWVDF9J9VQ","https:\u002F\u002Fgithub.com\u002Fhenriquescastilho\u002Fmy-claude\u002Fblob\u002Fmain\u002F.codex\u002Fvendor_imports\u002Fclaude\u002Fmarketplaces\u002Fclaude-scientific-writer\u002F.claude\u002Fskills\u002Fmarkitdown\u002FSKILL.md",[138,139,140,141],{"categoryNo":93,"categoryName":94,"taxonomyType":21,"taxonomyTypeDesc":22},{"categoryNo":96,"categoryName":97,"taxonomyType":21,"taxonomyTypeDesc":22},{"categoryNo":99,"categoryName":100,"taxonomyType":21,"taxonomyTypeDesc":22},{"categoryNo":102,"categoryName":103,"taxonomyType":104,"taxonomyTypeDesc":105},[87,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,25],{"skillNo":144,"name":145,"nameZh":6,"description":146,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":89,"licenseFileUrl":6,"sourceHtmlUrl":147,"categories":148,"keywords":149,"publishedAt":43},"01M6F000KS6YB4MKS774G4R8ND","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\u002Fhenriquescastilho\u002Fmy-claude\u002Fblob\u002Fmain\u002F.codex\u002Fvendor_imports\u002Fclaude\u002Fmarketplaces\u002Fclaude-scientific-skills\u002Fscientific-skills\u002Fzarr-python\u002FSKILL.md",[],[150,151,152,153,154,155,156,157,158,159,160,161,162,163,164],"python","zarr python","storage","integration","s3","gcs","cloud","dask","parallel","pipelines","arrays","numpy","scientific computing","scale","scientific",{"skillNo":166,"name":167,"nameZh":6,"description":168,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":89,"licenseFileUrl":6,"sourceHtmlUrl":169,"categories":170,"keywords":172,"publishedAt":43},"01M6EZZJWFXM1GR78KTW6J0DN8","what-if-oracle","Run structured What-If scenario analysis with multi-branch possibility exploration. Use this skill when the user asks speculative questions like \"what if...\", \"what would happen if...\", \"what are the possibilities\", \"explore scenarios\", \"scenario analysis\", \"possibility space\", \"what could go wrong\", \"best case \u002F worst case\", \"risk analysis\", \"contingency planning\", \"strategic options\", or any question about uncertain futures. Also trigger when the user faces a fork-in-the-road decision, wants to stress-test an idea, or needs to think through consequences before committing.","https:\u002F\u002Fgithub.com\u002Fhenriquescastilho\u002Fmy-claude\u002Fblob\u002Fmain\u002F.codex\u002Fvendor_imports\u002Fclaude\u002Fmarketplaces\u002Fclaude-scientific-skills\u002Fscientific-skills\u002Fwhat-if-oracle\u002FSKILL.md",[171],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},[173,174,175,176,177,178,40,179,180,181,182,118,119,183,184,185,186,187,188,189],"oracle","what if oracle","go","run","ux","futures","explore","decision","branch","question","idea","exploration","options","stress-test","strategies","scenario","stress",{"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":89,"licenseFileUrl":6,"sourceHtmlUrl":194,"categories":195,"keywords":206,"publishedAt":43},"01M6EZZCXAEB49RXGQCJX5E8GB","venue-templates","Access comprehensive LaTeX templates, formatting requirements, and submission guidelines for major scientific publication venues (Nature, Science, PLOS, IEEE, ACM), academic conferences (NeurIPS, ICML, CVPR, CHI), research posters, and grant proposals (NSF, NIH, DOE, DARPA). This skill should be used when preparing manuscripts for journal submission, conference papers, research posters, or grant proposals and need venue-specific formatting requirements and templates.","https:\u002F\u002Fgithub.com\u002Fhenriquescastilho\u002Fmy-claude\u002Fblob\u002Fmain\u002F.codex\u002Fvendor_imports\u002Fclaude\u002Fmarketplaces\u002Fclaude-scientific-skills\u002Fscientific-skills\u002Fvenue-templates\u002FSKILL.md",[196,199,202,203],{"categoryNo":197,"categoryName":198,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000018","写作与文案",{"categoryNo":200,"categoryName":201,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000021","资料检索与研究",{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},{"categoryNo":204,"categoryName":205,"taxonomyType":104,"taxonomyTypeDesc":105},"01JBSEEDCAT000000000000036","内容创作者",[207,208,209,210,211,212,213,214,115,215,118,119,120,216,217,218,219,220,164,221],"templates","venue templates","research","guidelines","NeurIPS","ICML","LaTeX","science","access","proposals","Academic","requirements","formatting","journal","chi"]