Skip to content

Commit 88b438a

Browse files
authored
Add related packages to README, update bib entries, remove cellrank.org references (#1312)
* Add related packages section to README and update bib entries * Replace cellrank.org URLs with cellrank.readthedocs.io * Remove v1-to-v2 migration banner and rename version2 page * Unify docs landing page with README via {include} * Update package maintainers * Enable sphinx autobuild * Update teams page * Update teams page
1 parent 0c23eaa commit 88b438a

File tree

9 files changed

+101
-116
lines changed

9 files changed

+101
-116
lines changed

README.md

Lines changed: 33 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -8,16 +8,18 @@
88

99
# CellRank 2: Unified fate mapping in multiview single-cell data
1010

11+
<!-- image-start -->
1112
<picture>
12-
<source media="(prefers-color-scheme: dark)" srcset="docs/_static/img/dark_mode_overview.png">
13-
<img alt="CellRank overview" src="docs/_static/img/light_mode_overview.png" width="600px" align="center">
13+
<source media="(prefers-color-scheme: dark)" srcset="https://raw.githubusercontent.com/scverse/cellrank/main/docs/_static/img/dark_mode_overview.png">
14+
<img alt="CellRank overview" src="https://raw.githubusercontent.com/scverse/cellrank/main/docs/_static/img/light_mode_overview.png" width="600px" align="center">
1415
</picture>
16+
<!-- image-end -->
1517

1618
**CellRank** is a modular framework to study cellular dynamics based on Markov state modeling of
1719
multi-view single-cell data. See our [documentation], and the [CellRank 1] and [CellRank 2] manuscripts to learn more.
20+
Read a summary of the CellRank papers [here](https://cellrank.readthedocs.io/en/latest/about/cite.html#cellrank-papers).
1821

19-
> [!IMPORTANT]
20-
> Please refer to [our citation guide](https://cellrank.readthedocs.io/en/latest/about/cite.html) to cite our software correctly.
22+
⚠️ **Please refer to [our citation guide](https://cellrank.readthedocs.io/en/latest/about/cite.html) to cite our software correctly.**
2123

2224
CellRank scales to large cell numbers, is fully compatible with the [scverse] ecosystem, and is easy to use.
2325
In the backend, it is powered by [pyGPCCA] ([Reuter et al. (2018)]). Feel
@@ -41,12 +43,38 @@ pip install cellrank
4143

4244
See the [installation guide](https://cellrank.readthedocs.io/en/latest/installation.html) for more options.
4345

46+
## Related packages
47+
48+
If you like CellRank, check out these packages from the same authors.
49+
Almost all are part of the [scverse ecosystem].
50+
51+
| Package | Description | Reference |
52+
|---------|-------------|-----------|
53+
| [moscot] | Optimal transport for temporal, spatial, and spatio-temporal single-cell mapping | [Klein et al. (2025)] |
54+
| [moslin] | Trajectory inference with lineage barcodes via optimal transport (part of moscot) | [Lange et al. (2024)] |
55+
| [VeloVI] | RNA velocity with variational inference and uncertainty quantification (part of scvi-tools) | [Gayoso et al. (2024)] |
56+
| [RegVelo] | Jointly learning gene regulation and RNA velocity | [Wang et al. (2024)] |
57+
| [CellMapper] | kNN-based label, embedding, and molecular layer transfer between datasets ||
58+
| [CellAnnotator] | LLM-based cell type annotation with support for major LLM providers ||
59+
60+
[moscot]: https://moscot.readthedocs.io/
61+
[moslin]: https://moscot.readthedocs.io/en/latest/notebooks/tutorials/100_lineage.html
62+
[VeloVI]: https://docs.scvi-tools.org/en/1.3.3/tutorials/notebooks/scrna/velovi.html
63+
[RegVelo]: https://regvelo.readthedocs.io/
64+
[CellMapper]: https://cellmapper.readthedocs.io/
65+
[CellAnnotator]: https://cell-annotator.readthedocs.io/
66+
[scverse ecosystem]: https://scverse.org/packages/#ecosystem
67+
[Klein et al. (2025)]: https://doi.org/10.1038/s41586-024-08453-2
68+
[Lange et al. (2024)]: https://doi.org/10.1186/s13059-024-03422-4
69+
[Gayoso et al. (2024)]: https://doi.org/10.1038/s41592-023-01994-w
70+
[Wang et al. (2024)]: https://doi.org/10.1101/2024.12.11.627935
71+
4472
[La Manno et al. (2018)]: https://doi.org/10.1038/s41586-018-0414-6
4573
[Bergen et al. (2020)]: https://doi.org/10.1038/s41587-020-0591-3
4674
[Reuter et al. (2018)]: https://doi.org/10.1021/acs.jctc.8b00079
4775
[scverse]: https://scverse.org/
4876
[pyGPCCA]: https://github.com/msmdev/pyGPCCA
4977
[CellRank 1]: https://www.nature.com/articles/s41592-021-01346-6
5078
[CellRank 2]: https://doi.org/10.1038/s41592-024-02303-9
51-
[documentation]: https://cellrank.org
79+
[documentation]: https://cellrank.readthedocs.io/en/latest/
5280
[issue]: https://github.com/theislab/cellrank/issues/new/choose

docs/about/team.md

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
CellRank was started as a collaboration between the Theis lab at Helmholtz Munich and the Pe'er lab at Memorial Sloan
44
Kettering Cancer Center (MSKCC). We are happy about every code contribution we received so far, check out the
5-
[contributions](https://github.com/theislab/cellrank/graphs/contributors) section on GitHub for an overview.
5+
[contributions](https://github.com/theislab/cellrank/graphs/contributors) section on GitHub for an overview. CellRank is now part of the [scVerse GitHub organization](https://github.com/scverse).
66

77
## Principal Investigators
88

@@ -29,6 +29,13 @@ Kettering Cancer Center (MSKCC). We are happy about every code contribution we r
2929
```{eval-rst}
3030
.. grid:: auto
3131
32+
.. grid-item-card:: :fab:`twitter` `Marius Lange <https://twitter.com/MariusLange8>`_
33+
:img-top: https://avatars.githubusercontent.com/Marius1311
34+
35+
- :fas:`house` `mariuslange.com <https://mariuslange.com/>`_
36+
- :fas:`graduation-cap` `Google Scholar <https://scholar.google.com/citations?user=QrhWUR4AAAAJ>`__
37+
- :fab:`github` `Marius1311 <https://github.com/Marius1311>`_
38+
3239
.. grid-item-card:: :fab:`twitter` `Philipp Weiler <https://twitter.com/philippweiler7>`_
3340
:img-top: https://avatars.githubusercontent.com/u/28675704
3441
@@ -40,13 +47,6 @@ Kettering Cancer Center (MSKCC). We are happy about every code contribution we r
4047
4148
- :fas:`graduation-cap` `Google Scholar <https://scholar.google.com/citations?user=zByzdzcAAAAJ>`__
4249
- :fab:`github` `michalk8 <https://github.com/michalk8>`_
43-
44-
.. grid-item-card:: :fab:`twitter` `Marius Lange <https://twitter.com/MariusLange8>`_
45-
:img-top: https://mariuslange.com/author/marius-lange/avatar_huc2ea0f123de6d091882f094508aad23f_1614639_270x270_fill_q75_lanczos_center.jpg
46-
47-
- :fas:`house` `mariuslange.com <https://mariuslange.com/>`_
48-
- :fas:`graduation-cap` `Google Scholar <https://scholar.google.com/citations?user=QrhWUR4AAAAJ>`__
49-
- :fab:`github` `Marius1311 <https://github.com/Marius1311>`_
5050
```
5151

5252
## `pyGPCCA` Development

docs/about/version2.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
# Moving to CellRank 2
1+
# Moving from v1 to v2
22

33
The original CellRank version (v1) {cite}`lange:22` was a framework to analyze cellular dynamics based on RNA velocity
44
{cite}`manno:18,bergen:20` and gene expression similarity. Based on a
@@ -38,7 +38,7 @@ We outline the most important changes here. For a more detailed account, please
3838
- Removal of the `cellrank.external`: anyone wishing to contribute to CellRank can do this now directly via
3939
{mod}`cellrank.kernels` and {mod}`cellrank.estimators`. We welcome any contribution to CellRank,
4040
see our {doc}`contribution guide <../contributing>`, and feel free to get in touch via an
41-
[issue](https://github.com/theislab/cellrank/issues/new/choose) or [email](mailto:[email protected]).
41+
[issue](https://github.com/theislab/cellrank/issues/new/choose).
4242
- Replacement of the old `cellrank.external.WOTKernel` with a new {class}`cellrank.kernels.RealTimeKernel`: this is
4343
CellRank's interface with {mod}`moscot`, enabling us to analyze large-scale time-course studies with additional
4444
spatial or lineage readout {cite}`klein:23,lange:23`. In addition, the {class}`~cellrank.kernels.RealTimeKernel`

docs/conf.py

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -157,8 +157,6 @@
157157
html_show_sphinx = False
158158
html_show_sourcelink = False
159159
html_theme_options = {
160-
"announcement": "If you're moving from CellRank v1 to v2, "
161-
"see our <a href='https://cellrank.readthedocs.io/en/latest/about/version2.html'>notes on important changes</a>.",
162160
"sidebar_hide_name": True,
163161
"light_logo": "img/light_mode_logo.png",
164162
"dark_logo": "img/dark_mode_logo.png",

docs/contributing.md

Lines changed: 16 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -261,15 +261,28 @@ hatch run docs:build
261261
hatch run docs:open
262262
```
263263

264+
For live preview with auto-rebuild on save:
265+
266+
```bash
267+
hatch run docs:auto
268+
```
269+
264270
::::
265271

266272
::::{tab-item} uv
267273
:sync: uv
268274

269275
```bash
270-
cd docs
271-
uv run sphinx-build -M html . _build
272-
open _build/html/index.html # macOS; use xdg-open on Linux
276+
uv sync --group docs
277+
source .venv/bin/activate
278+
sphinx-build -M html docs docs/_build
279+
open docs/_build/html/index.html # macOS; use xdg-open on Linux
280+
```
281+
282+
For live preview with auto-rebuild on save:
283+
284+
```bash
285+
sphinx-autobuild docs docs/_build/html --open-browser --watch README.md
273286
```
274287

275288
::::

docs/index.md

Lines changed: 6 additions & 80 deletions
Original file line numberDiff line numberDiff line change
@@ -1,40 +1,6 @@
1-
---
2-
substitutions:
3-
CI: |-
4-
```{image} https://img.shields.io/github/actions/workflow/status/theislab/cellrank/test.yml?branch=main
5-
:alt: CI
6-
:target: https://github.com/theislab/cellrank/actions
7-
```
8-
Codecov: |-
9-
```{image} https://codecov.io/gh/theislab/cellrank/branch/main/graph/badge.svg
10-
:alt: Coverage
11-
:target: https://codecov.io/gh/theislab/cellrank
12-
```
13-
Discourse: |-
14-
```{image} https://img.shields.io/discourse/posts?color=yellow&logo=discourse&server=https%3A%2F%2Fdiscourse.scverse.org
15-
:alt: Discourse
16-
:target: https://discourse.scverse.org/c/ecosystem/cellrank/
17-
```
18-
Docs: |-
19-
```{image} https://img.shields.io/readthedocs/cellrank
20-
:alt: Documentation
21-
:target: https://cellrank.readthedocs.io/
22-
```
23-
Downloads: |-
24-
```{image} https://static.pepy.tech/badge/cellrank
25-
:alt: Downloads
26-
:target: https://pepy.tech/project/cellrank
27-
```
28-
PyPI: |-
29-
```{image} https://img.shields.io/pypi/v/cellrank.svg
30-
:alt: PyPI
31-
:target: https://pypi.org/project/cellrank
32-
```
33-
---
34-
35-
{{ PyPI }} {{ Downloads }} {{ CI }} {{ Docs }} {{ Codecov }} {{ Discourse }}
36-
37-
# CellRank 2: Unified fate mapping in multiview single-cell data
1+
```{include} ../README.md
2+
:end-before: <!-- image-start -->
3+
```
384

395
```{image} _static/img/light_mode_overview.png
406
:align: center
@@ -48,46 +14,9 @@ substitutions:
4814
:width: 600px
4915
```
5016

51-
**CellRank** {cite}`lange:22,weiler:24` is a modular framework to study cellular dynamics based on Markov state modeling of
52-
multi-view single-cell data. See {doc}`about CellRank <about/index>` to learn more and {doc}`our citation guide <about/cite>` for guidance on
53-
citing our work correctly. Two peer-reviewed publications accompany our software:
54-
55-
- [CellRank for directed single-cell fate mapping](https://doi.org/10.1038/s41592-021-01346-6)
56-
- [CellRank 2: unified fate mapping in multiview single-cell data](https://doi.org/10.1038/s41592-024-02303-9)
57-
58-
:::{important}
59-
Please refer to {doc}`our citation guide <about/cite>` to cite our software correctly.
60-
:::
61-
62-
CellRank scales to large cell numbers, is fully compatible with the [scverse] ecosystem, and is easy to use. In the
63-
backend, it is powered by the [pyGPCCA package](https://github.com/msmdev/pyGPCCA) {cite}`reuter:19,reuter:22`. Feel
64-
free to open an [issue] if you encounter a bug, need our help or just want to make a comment/suggestion.
65-
66-
:::{important}
67-
If you're moving from CellRank 1 to CellRank 2, check out {doc}`../about/version2`.
68-
:::
69-
70-
## CellRank's key applications
71-
72-
- Estimate differentiation direction based on a varied number of biological priors, including
73-
{doc}`pseudotime <notebooks/tutorials/kernels/300_pseudotime>`,
74-
{doc}`developmental potential <notebooks/tutorials/kernels/400_cytotrace>`,
75-
{doc}`RNA velocity <notebooks/tutorials/kernels/200_rna_velocity>`,
76-
{doc}`experimental time points <notebooks/tutorials/kernels/500_real_time>`, and {mod}`more <cellrank.kernels>`.
77-
- Compute initial, terminal and intermediate {doc}`macrostates <notebooks/tutorials/estimators/600_initial_terminal>`
78-
{cite}`reuter:19,reuter:22`.
79-
- Infer {doc}`fate probabilities and driver genes <notebooks/tutorials/estimators/700_fate_probabilities>`.
80-
- Visualize and cluster {doc}`gene expression trends <notebooks/tutorials/estimators/800_gene_trends>`.
81-
- ... and much more, check out our {doc}`API <api/index>`.
82-
83-
## Getting started with CellRank
84-
85-
We have {doc}`notebooks/tutorials/index` to help you getting started. To see CellRank in action, explore our
86-
manuscripts {cite}`lange:22,weiler:24` in Nature Methods.
87-
88-
## Contributing
89-
90-
We actively encourage any contribution! To get started, please check out the {doc}`contributing`.
17+
```{include} ../README.md
18+
:start-after: <!-- image-end -->
19+
```
9120

9221
```{toctree}
9322
:caption: General
@@ -114,6 +43,3 @@ about/team
11443
GitHub <https://github.com/theislab/cellrank>
11544
Discourse <https://discourse.scverse.org/c/ecosytem/cellrank/40>
11645
```
117-
118-
[issue]: https://github.com/theislab/cellrank/issues/new/choose
119-
[scverse]: https://scverse.org/

docs/references.bib

Lines changed: 31 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -526,14 +526,14 @@ @article{zhang:14
526526
year = {2014},
527527
}
528528

529-
@article{klein:23,
530-
author = {Klein, Dominik and Palla, Giovanni and Lange, Marius and Klein, Michal and Piran, Zoe and Gander, Manuel and Meng-Papaxanthos, Laetitia and Sterr, Michael and Bastidas-Ponce, Aimée and Tarquis-Medina, Marta and Lickert, Heiko and Bakhti, Mostafa and Nitzan, Mor and Cuturi, Marco and Theis, Fabian J.},
531-
publisher = {Cold Spring Harbor Laboratory},
532-
url = {https://www.biorxiv.org/content/early/2023/05/12/2023.05.11.540374},
533-
doi = {10.1101/2023.05.11.540374},
534-
journal = {bioRxiv},
529+
@article{klein:25,
530+
author = {Klein, Dominik and Palla, Giovanni and Lange, Marius and Klein, Michal and Piran, Zoe and Gander, Manuel and Meng-Papaxanthos, Laetitia and Sterr, Michael and Saber, Lama and Jing, Changying and Bastidas-Ponce, Aim\'{e}e and Cota, Perla and Tarquis-Medina, Marta and Parikh, Shrey and Gold, Ilan and Lickert, Heiko and Bakhti, Mostafa and Nitzan, Mor and Cuturi, Marco and Theis, Fabian J.},
531+
doi = {10.1038/s41586-024-08453-2},
532+
journal = {Nature},
533+
pages = {1065--1075},
535534
title = {Mapping cells through time and space with moscot},
536-
year = {2023},
535+
volume = {638},
536+
year = {2025},
537537
}
538538

539539
@article{cuturi:13,
@@ -545,14 +545,13 @@ @article{cuturi:13
545545
year = {2013},
546546
}
547547

548-
@article{lange:23,
549-
author = {Lange, Marius and Piran, Zoe and Klein, Michal and Spanjaard, Bastiaan and Klein, Dominik and Junker, Jan Philipp and Theis, Fabian J and Nitzan, Mor},
550-
publisher = {Cold Spring Harbor Laboratory},
551-
doi = {10.1101/2023.04.14.536867},
552-
journal = {bioRxiv},
553-
pages = {2023--04},
548+
@article{lange:24,
549+
author = {Lange, Marius and Piran, Zoe and Klein, Michal and Spanjaard, Bastiaan and Klein, Dominik and Junker, Jan Philipp and Theis, Fabian J. and Nitzan, Mor},
550+
doi = {10.1186/s13059-024-03422-4},
551+
journal = {Genome Biology},
554552
title = {Mapping lineage-traced cells across time points with moslin},
555-
year = {2023},
553+
volume = {25},
554+
year = {2024},
556555
}
557556

558557
@article{chizat:18,
@@ -825,3 +824,21 @@ @article{weiler:25
825824
title = {CellRank: consistent and data view agnostic fate mapping for single-cell genomics},
826825
year = {2026},
827826
}
827+
828+
@article{gayoso:24,
829+
author = {Gayoso, Adam and Weiler, Philipp and Lotfollahi, Mohammad and Klein, Dominik and Hong, Justin and Streets, Aaron M. and Theis, Fabian J. and Yosef, Nir},
830+
doi = {10.1038/s41592-023-01994-w},
831+
journal = {Nature Methods},
832+
pages = {50--59},
833+
title = {Deep generative modeling of transcriptional dynamics for {RNA} velocity analysis in single cells},
834+
volume = {21},
835+
year = {2024},
836+
}
837+
838+
@article{wang:24,
839+
author = {Wang, Weixu and Hu, Zhiyuan and Weiler, Philipp and Mayes, Sarah and Lange, Marius and Wang, Jingye and Xue, Zhengyuan and Sauka-Spengler, Tatjana and Theis, Fabian J.},
840+
doi = {10.1101/2024.12.11.627935},
841+
journal = {bioRxiv},
842+
title = {{RegVelo}: gene-regulatory-informed dynamics of single cells},
843+
year = {2024},
844+
}

pyproject.toml

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,8 @@ keywords = [
1616
license = "BSD-3-Clause"
1717
license-files = [ "LICENSE" ]
1818
maintainers = [
19-
{ name = "Michal Klein", email = "[email protected]" },
19+
{ name = "Marius Lange", email = "[email protected]" },
20+
{ name = "Philipp Weiler" },
2021
]
2122

2223
authors = [
@@ -93,6 +94,7 @@ docs = [
9394
"furo>=2024.8.6",
9495
"myst-nb>=1.2",
9596
"sphinx>=7.4",
97+
"sphinx-autobuild",
9698
"sphinx-autodoc-typehints>=2.5",
9799
"sphinx-copybutton>=0.5",
98100
"sphinx-design>=0.6",
@@ -132,6 +134,7 @@ dependency-groups = [ "docs" ]
132134
scripts.build = "sphinx-build -M html docs docs/_build {args}"
133135
scripts.open = "python -m webbrowser -t docs/_build/html/index.html"
134136
scripts.clean = "git clean -fdX -- {args:docs}"
137+
scripts.auto = "sphinx-autobuild docs docs/_build/html --open-browser --watch README.md {args}"
135138

136139
[tool.ruff]
137140
line-length = 120

src/cellrank/kernels/_real_time_kernel.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -218,7 +218,7 @@ def from_moscot(
218218
copy: bool = False,
219219
**kwargs: Any,
220220
) -> "RealTimeKernel":
221-
"""Construct the kernel from :mod:`moscot` :cite:`klein:23`.
221+
"""Construct the kernel from :mod:`moscot` :cite:`klein:25`.
222222
223223
Parameters
224224
----------

0 commit comments

Comments
 (0)