Visualize single-cell developmental trajectories (pseudotime) to show how cells differentiate from stem cells to mature cells. Includes trajectory inference, pseudotime calculation, and publication-ready visualizations.
Install with Tessl CLI
npx tessl i github:aipoch/medical-research-skills --skill pseudotime-trajectory-viz72
Does it follow best practices?
If you maintain this skill, you can automatically optimize it using the tessl CLI to improve its score:
npx tessl skill review --optimize ./path/to/skillValidation for skill structure
Visualize single-cell developmental trajectories showing cellular differentiation processes using pseudotime analysis.
High - Requires understanding of single-cell analysis, dimensionality reduction, trajectory inference algorithms, and Python visualization libraries.
# Basic trajectory analysis from AnnData file
python scripts/main.py --input data.h5ad --output ./results
# Specify starting cells and lineage inference method
python scripts/main.py --input data.h5ad --start-cell stem_cell_cluster --method diffusion --output ./results
# Visualize specific gene expression along trajectories
python scripts/main.py --input data.h5ad --genes SOX2,OCT4,NANOG --plot-genes --output ./results
# Full analysis with custom parameters
python scripts/main.py --input data.h5ad \
--embedding umap \
--method slingshot \
--start-cell-type progenitor \
--n-lineages 3 \
--genes MARKER1,MARKER2,MARKER3 \
--output ./results \
--format pdf| Parameter | Type | Default | Description |
|---|---|---|---|
--input | path | required | Input AnnData (.h5ad) file path |
--output | path | ./trajectory_output | Output directory for results |
--embedding | enum | umap | Embedding for visualization: umap, tsne, pca, diffmap |
--method | enum | diffusion | Trajectory inference: diffusion, slingshot, paga, palantir |
--start-cell | string | auto | Root cell ID or cluster name for trajectory origin |
--start-cell-type | string | - | Cell type annotation to use as starting point |
--n-lineages | int | auto | Number of expected lineage branches |
--cluster-key | string | leiden | AnnData obs key for cell clusters |
--cell-type-key | string | cell_type | AnnData obs key for cell type annotations |
--genes | string | - | Comma-separated gene names to plot along pseudotime |
--plot-genes | flag | false | Generate gene expression heatmaps along trajectories |
--plot-branch | flag | true | Show lineage branch probabilities |
--format | enum | png | Output format: png, pdf, svg |
--dpi | int | 300 | Figure resolution |
--n-pcs | int | 30 | Number of principal components for analysis |
--n-neighbors | int | 15 | Number of neighbors for graph construction |
--diffmap-components | int | 5 | Number of diffusion components to compute |
Required AnnData (.h5ad) structure:
AnnData object with n_obs × n_vars = n_cells × n_genes
obs: 'leiden', 'cell_type' # Cluster and cell type annotations
var: 'highly_variable' # Highly variable gene marker
obsm: 'X_umap', 'X_pca' # Pre-computed embeddings (optional)
layers: 'spliced', 'unspliced' # For RNA velocity (optional)output_directory/
├── trajectory_plot.{format} # Main trajectory visualization
├── pseudotime_distribution.{format} # Pseudotime value distribution
├── lineage_tree.{format} # Branching lineage structure
├── gene_expression_heatmap.{format} # Gene dynamics heatmap (if --plot-genes)
├── gene_trends/
│ ├── {gene_name}_trend.{format} # Individual gene expression trends
│ └── ...
├── pseudotime_values.csv # Cell-level pseudotime values
├── lineage_assignments.csv # Cell lineage assignments
└── analysis_report.json # Analysis parameters and statistics{
"analysis_date": "2026-02-06T06:00:00",
"method": "diffusion",
"n_cells": 5000,
"n_lineages": 3,
"root_cell": "cell_1234",
"pseudotime_range": [0.0, 1.0],
"lineages": {
"lineage_1": {
"cell_count": 1500,
"terminal_state": "mature_type_A",
"mean_pseudotime": 0.75
},
"lineage_2": {
"cell_count": 1200,
"terminal_state": "mature_type_B",
"mean_pseudotime": 0.68
}
}
}cell_id,cluster,cell_type,pseudotime,lineage,branch_probability
cell_001,0,progenitor,0.05,lineage_1,0.95
cell_002,1,intermediate,0.42,lineage_1,0.88
...scanpy>=1.9.0 - Single-cell analysis frameworkscvelo>=0.2.5 - RNA velocity analysispalantir - Trajectory inference and pseudotimescikit-learn - Dimensionality reduction and clusteringmatplotlib>=3.5.0 - Plottingseaborn - Statistical visualizationpandas, numpy - Data manipulationanndata - Single-cell data structureOptional:
slingshot (R) via rpy2 - Alternative trajectory method# Preprocess data with scanpy (before using this tool)
import scanpy as sc
adata = sc.read_h5ad('raw_data.h5ad')
sc.pp.normalize_total(adata)
sc.pp.log1p(adata)
sc.pp.highly_variable_genes(adata, n_top_genes=2000)
sc.pp.scale(adata)
sc.tl.pca(adata)
sc.pp.neighbors(adata)
sc.tl.umap(adata)
sc.tl.leiden(adata)
adata.write('data.h5ad')
# Then run this skill
# python scripts/main.py --input data.h5ad --start-cell-type progenitor| Risk Indicator | Assessment | Level |
|---|---|---|
| Code Execution | Python/R scripts executed locally | Medium |
| Network Access | No external API calls | Low |
| File System Access | Read input files, write output files | Medium |
| Instruction Tampering | Standard prompt guidelines | Low |
| Data Exposure | Output files saved to workspace | Low |
# Python dependencies
pip install -r requirements.txtf11484c
If you maintain this skill, you can claim it as your own. Once claimed, you can manage eval scenarios, bundle related skills, attach documentation or rules, and ensure cross-agent compatibility.