Interpretable learning of temporal cellular dynamics from single-cell data.
The 8 matches · 1 of them tie a paragraph to a whole file, not to given lines: a weak match, whose lines are not tinted
- [1] § STAR★Methods › Method details › RNA velocity ↔ scvelo/core/_models.py, the whole file · a weak match · score 0.75 · spliced RNA, degradation rate, splicing rate, transcription rate, abundance, unspliced
- [2] § STAR★Methods › Method details › RNA velocity ↔ scvelo/inference/_metabolic_labeling.py, lines 381–491 · score 0.75 · mRNA, splicing kinetics, degradation rate, transcription rate, inference
- [3] § STAR★Methods › Method details › Neural ODE ↔ neurovelo/model.py, lines 11–40 · score 0.72 · hidden layer, neural ODE, cellular dynamics, latent space, dimensional
- [4] § STAR★Methods › Method details › Encoder/decoder architecture ↔ neurovelo/module.py, lines 95–131 · score 0.63 · linear decoder, latent representation, latent space, encoder, reconstruction, gene
- [5] § STAR★Methods › Method details › Model architecture ↔ neurovelo/model.py, lines 11–40 · score 0.61 · auto encoder, neural ODEs, latent space, NeuroVelo, Model, dynamics
- [6] § STAR★Methods › Method details › Model architecture ↔ neurovelo/module.py, lines 95–131 · score 0.60 · auto encoder, latent representation, latent space, linear, NeuroVelo
- [7] § STAR★Methods › Method details › Neural ODE ↔ neurovelo/train.py, lines 20–77 · score 0.53 · hidden layer, latent space, ODEs, dimensional, Linear, cells
- [8] § Results › Reconstructing dynamical mechanisms from scRNA-seq data ↔ scvelo/datasets/_datasets.py, lines 278–302 · score 0.51 · immune cell, bone marrow, scVelo
Paper
Loaded from Europe PMC by your browser, not stored by OSCR: doi.org · Europe PMC
The paper is loaded when this pane is shown.
The authors' code
Python · 168 lines · 5.8 KB · BSD-3-Clause · 2 matches
- import torch
- import torch.nn as nn
- import torch.nn.functional as F
- from torchdiffeq import odeint
- from typing import Optional
- from typing_extensions import Literal
- from .module import LatentODE, Encoder, Decoder
- class TNODE(nn.Module):
- """
- Class to automatically infer treatment wise cellular dynamics using autoencoder and neural ODE.
- Parameters
- ----------
- n_int
- Number of genes.
- n_latent
- Dimension of latent space.
- (Default: 20)
- n_sample
- Number of samples or treatment as independant ODEs
- (Default: 1)
- n_ode_hidden
- The dimensionality of the hidden layer for the ODE function.
- (Default: 128)
- n_vae_hidden
- The dimensionality of the hidden layer for the AutoEncoder.
- (Default: 128)
- batch_norm
- Whether to include `BatchNorm` layer.
- (Default: 'False')
- ode_method
- ODE Solver method.
- (Default: 'euler')
- same_ode
- Whether to initialize all ODEs with same initialization
- (Default: 'False')
- """
- def __init__(
- self,
- n_int: int,
- n_latent: int = 20,
- n_sample: int = 1,
- n_ode_hidden: int = 128,
- n_vae_hidden: int = 128,
- batch_norm: bool = False,
- ode_method: str = 'dopri5',
- same_ode: bool = False,
- pre_ptime: bool = False,
- reconstruct_xt: bool = False,
- ):
- super().__init__()
- self.n_int = n_int
- self.n_latent = n_latent
- self.n_ode_hidden = n_ode_hidden
- self.n_vae_hidden = n_vae_hidden
- self.batch_norm = batch_norm
- self.ode_method = ode_method
- self.n_sample = n_sample
- self.same_ode = same_ode
- self.pre_ptime = pre_ptime
- self.reconstruct_xt = reconstruct_xt
- self.lode_func = nn.ModuleDict({f'node_{i}': LatentODE(n_latent, n_ode_hidden) for i in range(self.n_sample)})
- self.encoder = Encoder(n_int, n_latent, n_vae_hidden, batch_norm)
- self.decoder = Decoder(n_int, n_latent, n_vae_hidden, batch_norm)
- self.beta, self.lam = torch.nn.Parameter(torch.Tensor(self.n_latent), requires_grad=True), torch.nn.Parameter(torch.Tensor(self.n_latent), requires_grad=True)
- nn.init.uniform_(self.beta)
- nn.init.uniform_(self.lam)
- def forward(self, s: torch.Tensor, u: torch.Tensor, Pt: torch.Tensor, g: torch.Tensor) -> tuple:
- """
- Given the transcriptomes and the treatments of cells, this function predicts the time, latent space and dynamics of the cells.
- Parameters
- ----------
- s
- Spliced reads.
- u
- Unspliced reads.
- Pt
- Pseudotime tensor (Only if you want your velocity to follow specific pseudotime)
- g
- Sample/Treatment index.
- Returns
- ----------
- 5-tuple of :class:`torch.Tensor`
- Tensors for loss, including:
- 1) total loss,
- 2) reconstruction loss from encoder-derived latent space,
- 3) reconstruction loss from ODE-solver latent space,
- """
- if self.pre_ptime:
- Ts, z_s = self.encoder(s)
- _, z_u = self.encoder(u)
- Ts = Ts.ravel()
- index = torch.argsort(Ts)
- Ts = Ts[index]
- s = s[index]
- z_s = z_s[index]
- u = u[index]
- z_u = z_u[index]
- g = g[index]
- Pt = Pt[index]
- index2 = (Ts[:-1] != Ts[1:])
- index2 = torch.cat((index2, torch.tensor([True]).to(index2.device))) ## index2 is used to get unique time points as odeint requires strictly increasing/decreasing time points
- Ts = Ts[index2]
- s = s[index2]
- z_s = z_s[index2]
- z_u = z_u[index2]
- u = u[index2]
- g = g[index2]
- Pt = Pt[index2]
- pt_loss = F.mse_loss(Pt, Ts, reduction='mean')
- else:
- Ts, z_s = self.encoder(s)
- _, z_u = self.encoder(u)
- Ts = Ts.ravel()
- index = torch.argsort(Ts)
- Ts = Ts[index]
- s = s[index]
- z_s = z_s[index]
- u = u[index]
- z_u = z_u[index]
- g = g[index]
- index2 = (Ts[:-1] != Ts[1:])
- index2 = torch.cat((index2, torch.tensor([True]).to(index2.device))) ## index2 is used to get unique time points as odeint requires strictly increasing/decreasing time points
- Ts = Ts[index2]
- s = s[index2]
- z_s = z_s[index2]
- z_u = z_u[index2]
- u = u[index2]
- g = g[index2]
- pt_loss = 0
- pred_z = torch.empty(s.size(0), self.n_latent).to(s.device)
- z_div = torch.Tensor([0]).to(s.device)
- for i in range(self.n_sample):
- mask = g == i
- if mask.sum() == 0:
- continue
- zsm = z_s[mask]
- zum = z_u[mask]
- Tm = Ts[mask]
- z0 = zsm[0]
- pred_z[mask] = odeint(self.lode_func[f'node_{i}'], z0, Tm, method = self.ode_method).view(-1, self.n_latent)
- z_div += F.mse_loss(self.lode_func[f'node_{i}'](Tm, pred_z[mask]), (torch.exp(self.beta)*zum-torch.exp(self.lam)*zsm), reduction='mean')
- pred_x_s = self.decoder(z_s)
- pred_x_u = self.decoder(z_u)
- if self.reconstruct_xt:
- pred_x_t = self.decoder(pred_z)
- recon_loss_xt = F.mse_loss(s, pred_x_t, reduction='mean')
- else:
- recon_loss_xt = F.mse_loss(z_s, pred_z, reduction='mean')
- recon_loss_ec = F.mse_loss(s, pred_x_s, reduction='mean')
- recon_loss_ec_u = F.mse_loss(u, pred_x_u, reduction='mean')
- loss =recon_loss_ec + recon_loss_ec_u + z_div + recon_loss_xt + pt_loss
- return loss, recon_loss_ec, recon_loss_ec_u, z_div
model.py at commit 0f069ba, under BSD-3-Clause · at the source
Overview
- Theoretical and Scientific Data Science, International School for Advanced Studies, Trieste, Italy
- Abdus Salam International Centre for Theoretical Physics, Trieste, Italy
- Computational Biology Research Centre, Human Technopole, Milan, Italy
- School of Biomedical Sciences, University of Hong Kong, Hong Kong, China
- School of Informatics, University of Edinburgh, Edinburgh, UK
Abstract
The abstract is not reproduced here: the paper's license (CC BY-NC-ND) does not allow it. Read it in the paper, at the publisher or on Europe PMC.
Repositories
Its files are read in the Code ↔ Paper reader above, with 8 matches between paragraphs and lines of code.
idriskb/NeuroVelo
0f069baf23e64b1184af70b9983060d28d9fb6a3, 10 May 2025Availability: 1 check, the latest on 30 September 2026: the link answers
- 30 September 2026: the link answers
14 files
- neurovelo/
__init__.py , Python, 2 lines - neurovelo/
data.py , Python, 70 lines - neurovelo/
grn.py , Python, 382 lines - neurovelo/
model.py , Python, 168 lines, 2 matches - neurovelo/
module.py , Python, 131 lines, 2 matches - neurovelo/
train.py , Python, 302 lines, 1 match - neurovelo/
utils.py , Python, 430 lines - notebooks/
GRN_animation_tutorial.i , Jupyter, 50 linespynb - notebooks/
Human_bone_marrow.ipynb , Jupyter, 193 lines - notebooks/
Mouse_Erythroid.ipynb , Jupyter, 206 lines - notebooks/
Pancreas.ipynb , Jupyter, 197 lines - setup.py, Python, 37 lines
- LICENSE, License, 28 lines
- README.md, Text, 107 lines
Zenodo 18358806
Availability: 1 check, the latest on 30 September 2026: the link answers (HTTP 200)
- 30 September 2026: the link answers (HTTP 200)
theislab/scvelo
f63c0e70596ced2f1bee8cf07e8ab66037cf86b2, 25 February 2026Availability: 1 check, the latest on 30 September 2026: the link answers
- 30 September 2026: the link answers
83 files
- docs/
source/ , Python, 50 lines_ext/ edit_on_github.py - docs/
source/ , Python, 107 linesconf.py - scvelo/
__init__.py , Python, 53 lines - scvelo/
core/ , Python, 46 lines__init__.py - scvelo/
core/ , Python, 767 lines_anndata.py - scvelo/
core/ , Python, 124 lines_arithmetic.py - scvelo/
core/ , Python, 53 lines_base.py - scvelo/
core/ , Python, 151 lines_linear_models.py - scvelo/
core/ , Python, 31 lines_metrics.py - scvelo/
core/ , Python, 149 lines, 1 match_models.py - scvelo/
core/ , Python, 168 lines_parallelize.py - scvelo/
core/ , Python, 44 lines_utils.py - scvelo/
datasets/ , Python, 27 lines__init__.py - scvelo/
datasets/ , Python, 1 line_biomart.py - scvelo/
datasets/ , Python, 330 lines, 1 match_datasets.py - scvelo/
datasets/ , Python, 1 line_load.py - scvelo/
datasets/ , Python, 52 lines_read.py - scvelo/
datasets/ , Python, 199 lines_simulate.py - scvelo/
inference/ , Python, 15 lines__init__.py - scvelo/
inference/ , Python, 491 lines, 1 match_metabolic_labeling.py - scvelo/
logging/ , Python, 21 lines__init__.py - scvelo/
logging/ , Python, 286 lines_logging.py - scvelo/
plotting/ , Python, 36 lines__init__.py - scvelo/
plotting/ , Python, 152 linesdocs.py - scvelo/
plotting/ , Python, 145 linesgridspec.py - scvelo/
plotting/ , Python, 167 linesheatmap.py - scvelo/
plotting/ , Python, 1,114 linespaga.py - scvelo/
plotting/ , Python, 118 linespalettes.py - scvelo/
plotting/ , Python, 166 linesproportions.py - scvelo/
plotting/ , Python, 64 linespseudotime.py - scvelo/
plotting/ , Python, 913 linesscatter.py - scvelo/
plotting/ , Python, 190 linessimulation.py - scvelo/
plotting/ , Python, 60 linessummary.py - scvelo/
plotting/ , Python, 1,843 linesutils.py - scvelo/
plotting/ , Python, 269 linesvelocity.py - scvelo/
plotting/ , Python, 274 linesvelocity_embedding.py - scvelo/
plotting/ , Python, 339 linesvelocity_embedding_grid. py - scvelo/
plotting/ , Python, 264 linesvelocity_embedding_strea m.py - scvelo/
plotting/ , Python, 352 linesvelocity_graph.py - scvelo/
preprocessing/ , Python, 12 lines__init__.py - scvelo/
preprocessing/ , Python, 226 linesmoments.py - scvelo/
preprocessing/ , Python, 589 linesneighbors.py - scvelo/
preprocessing/ , Python, 418 linesutils.py - scvelo/
read_load.py , Python, 139 lines - scvelo/
settings.py , Python, 372 lines - scvelo/
tools/ , Python, 49 lines__init__.py - scvelo/
tools/ , Python, 37 lines_core.py - scvelo/
tools/ , Python, 486 lines_em_model.py - scvelo/
tools/ , Python, 1,232 lines_em_model_core.py - scvelo/
tools/ , Python, 1,918 lines_em_model_utils.py - scvelo/
tools/ , Python, 331 lines_steady_state_model.py - scvelo/
tools/ , Python, 263 linesoptimization.py - scvelo/
tools/ , Python, 301 linespaga.py - scvelo/
tools/ , Python, 401 linesrank_velocity_genes.py - scvelo/
tools/ , Python, 106 linesscore_genes_cell_cycle.p y - scvelo/
tools/ , Python, 326 linesterminal_states.py - scvelo/
tools/ , Python, 221 linestransition_matrix.py - scvelo/
tools/ , Python, 521 linesutils.py - scvelo/
tools/ , Python, 550 linesvelocity.py - scvelo/
tools/ , Python, 159 linesvelocity_confidence.py - scvelo/
tools/ , Python, 203 linesvelocity_embedding.py - scvelo/
tools/ , Python, 405 linesvelocity_graph.py - scvelo/
tools/ , Python, 284 linesvelocity_pseudotime.py - scvelo/
utils.py , Python, 59 lines - tests/
__init__.py , Python, 1 line - tests/
conftest.py , Python, 436 lines - tests/
core/ , Python, 3 lines__init__.py - tests/
core/ , Python, 1,228 linestest_anndata.py - tests/
core/ , Python, 253 linestest_arithmetic.py - tests/
core/ , Python, 361 linestest_base.py - tests/
core/ , Python, 85 linestest_linear_models.py - tests/
core/ , Python, 55 linestest_metrics.py - tests/
core/ , Python, 262 linestest_models.py - tests/
datasets/ , Python, 65 linestest_datasets.py - tests/
datasets/ , Python, 155 linestest_simulate.py - tests/
preprocessing/ , Python, 1 line__init__.py - tests/
preprocessing/ , Python, 512 linestest_moments.py - tests/
preprocessing/ , Python, 2,047 linestest_neighbors.py - tests/
preprocessing/ , Python, 1,302 linestest_utils.py - tests/
test_basic.py , Python, 74 lines - tests/
tools/ , Python, 24 linestest_steady_state_model. py - LICENSE, License, 29 lines
- README.md, Text, 87 lines
scverse/scanpy
7db89c60639ed01c027ae8a10af65ff972232cda, 27 September 2026Availability: 1 check, the latest on 28 September 2026: the link answers
- 28 September 2026: the link answers
106 files
- benchmarks/
benchmarks/ , Python, 1 line__init__.py - benchmarks/
benchmarks/ , Python, 215 lines_utils.py - benchmarks/
benchmarks/ , Python, 243 linespreprocessing_counts.py - benchmarks/
benchmarks/ , Python, 167 linespreprocessing_log.py - benchmarks/
benchmarks/ , Python, 81 linestools.py - ci/
scripts/ , Python, 232 lineslow-vers.py - ci/
scripts/ , Python, 122 linestowncrier_automation.py - docs/
conf.py , Python, 325 lines - docs/
extensions/ , Python, 187 linesarray_support.py - docs/
extensions/ , Python, 35 linesautosummary_skip_depreca ted.py - docs/
extensions/ , Python, 62 linesautosummary_skip_inherit ed.py - docs/
extensions/ , Python, 30 linesdebug_docstrings.py - docs/
extensions/ , Python, 36 linesfunction_images.py - docs/
extensions/ , Python, 53 linesgit_ref.py - docs/
extensions/ , Python, 85 linesmyst_ignore_mime_types.p y - docs/
extensions/ , Python, 55 linesparam_police.py - docs/
extensions/ , Python, 115 linesreturns_prose_wrap.py - docs/
how-to/ , Jupyter, 103 linescell-cycle.ipynb - docs/
how-to/ , Jupyter, 71 linesknn-transformers.ipynb - docs/
how-to/ , Jupyter, 475 linesplotting-with-marsilea.i pynb - docs/
tutorials/ , Jupyter, 434 linesbasics/ clustering-2017.ipynb - docs/
tutorials/ , Jupyter, 384 linesbasics/ clustering.ipynb - docs/
tutorials/ , Jupyter, 351 linesbasics/ integrating-data-using-i ngest.ipynb - docs/
tutorials/ , Jupyter, 180 linesexperimental/ dask.ipynb - docs/
tutorials/ , Jupyter, 408 linesexperimental/ pearson_residuals.ipynb - docs/
tutorials/ , Jupyter, 774 linesplotting/ advanced.ipynb - docs/
tutorials/ , Jupyter, 464 linesplotting/ core.ipynb - docs/
tutorials/ , Jupyter, 309 linestrajectories/ paga-paul15.ipynb - src/
scanpy/ , Python, 82 lines__init__.py - src/
scanpy/ , Python, 7 lines__main__.py - src/
scanpy/ , Python, 106 lines_compat.py - src/
scanpy/ , Python, 44 lines_docs.py - src/
scanpy/ , Python, 126 lines_keys.py - src/
scanpy/ , Python, 221 lines_settings/ __init__.py - src/
scanpy/ , Python, 343 lines_settings/ presets.py - src/
scanpy/ , Python, 96 lines_settings/ verbosity.py - src/
scanpy/ , Python, 1,009 lines_utils/ __init__.py - src/
scanpy/ , Python, 119 lines_utils/ _docs.py - src/
scanpy/ , Python, 38 lines_utils/ _doctests.py - src/
scanpy/ , Python, 41 lines_utils/ _numba.py - src/
scanpy/ , Python, 329 lines_utils/ random.py - src/
scanpy/ , Python, 152 linescli.py - src/
scanpy/ , Python, 31 linesdatasets/ __init__.py - src/
scanpy/ , Python, 615 linesdatasets/ _datasets.py - src/
scanpy/ , Python, 173 linesdatasets/ _ebi_expression_atlas.py - src/
scanpy/ , Python, 44 linesdatasets/ _utils.py - src/
scanpy/ , Python, 7 linesexperimental/ __init__.py - src/
scanpy/ , Python, 80 linesexperimental/ _docs.py - src/
scanpy/ , Python, 17 linesexperimental/ pp/ __init__.py - src/
scanpy/ , Python, 395 linesexperimental/ pp/ _highly_variable_genes.p y - src/
scanpy/ , Python, 265 linesexperimental/ pp/ _normalization.py - src/
scanpy/ , Python, 161 linesexperimental/ pp/ _recipes.py - src/
scanpy/ , Python, 13 linesexternal/ __init__.py - src/
scanpy/ , Python, 603 linesexternal/ exporting.py - src/
scanpy/ , Python, 379 linesexternal/ pl.py - src/
scanpy/ , Python, 40 linesexternal/ pp/ __init__.py - src/
scanpy/ , Python, 158 linesexternal/ pp/ _bbknn.py - src/
scanpy/ , Python, 122 linesexternal/ pp/ _hashsolo.py - src/
scanpy/ , Python, 224 linesexternal/ pp/ _magic.py - src/
scanpy/ , Python, 175 linesexternal/ pp/ _mnn_correct.py - src/
scanpy/ , Python, 153 linesexternal/ pp/ _scanorama_integrate.py - src/
scanpy/ , Python, 25 linesexternal/ tl/ __init__.py - src/
scanpy/ , Python, 179 linesexternal/ tl/ _harmony_timeseries.py - src/
scanpy/ , Python, 341 linesexternal/ tl/ _palantir.py - src/
scanpy/ , Python, 176 linesexternal/ tl/ _phate.py - src/
scanpy/ , Python, 285 linesexternal/ tl/ _phenograph.py - src/
scanpy/ , Python, 175 linesexternal/ tl/ _pypairs.py - src/
scanpy/ , Python, 236 linesexternal/ tl/ _sam.py - src/
scanpy/ , Python, 146 linesexternal/ tl/ _trimap.py - src/
scanpy/ , Python, 177 linesexternal/ tl/ _wishbone.py - src/
scanpy/ , Python, 31 linesget/ __init__.py - src/
scanpy/ , Python, 777 linesget/ _aggregated.py - src/
scanpy/ , Python, 183 linesget/ _kernels.py - src/
scanpy/ , Python, 929 linesget/ get.py - src/
scanpy/ , Python, 30 linesio/ __init__.py - src/
scanpy/ , Python, 44 linesio/ _download.py - src/
scanpy/ , Python, 121 linesio/ _params.py - src/
scanpy/ , Python, 867 linesio/ _read.py - src/
scanpy/ , Python, 104 linesio/ _write/ __init__.py - src/
scanpy/ , Python, 247 lineslogging.py - src/
scanpy/ , Python, 9 linesmetrics/ __init__.py - src/
scanpy/ , Python, 145 linesmetrics/ _common.py - src/
scanpy/ , Python, 244 linesmetrics/ _gearys_c.py - src/
scanpy/ , Python, 223 linesmetrics/ _metrics.py - src/
scanpy/ , Python, 181 linesmetrics/ _morans_i.py - src/
scanpy/ , Python, 914 linesneighbors/ __init__.py - src/
scanpy/ , Python, 1 lineneighbors/ _backends/ __init__.py - src/
scanpy/ , Python, 11 linesneighbors/ _backends/ _common.py - src/
scanpy/ , Python, 101 linesneighbors/ _backends/ rapids.py - src/
scanpy/ , Python, 374 linesneighbors/ _bbknn.py - src/
scanpy/ , Python, 270 linesneighbors/ _common.py - src/
scanpy/ , Python, 186 linesneighbors/ _connectivity.py - src/
scanpy/ , Python, 29 linesneighbors/ _doc.py - src/
scanpy/ , Python, 108 linesneighbors/ _types.py - src/
scanpy/ , Python, 41 linesplotting/ __init__.py - src/
scanpy/ , Python, 107 linesplotting/ _common.py - src/
scanpy/ , Python, 41 linesplotting/ _v2/ __init__.py - src/
scanpy/ , Python, 50 linesplotting/ _v2/ _api.py - src/
scanpy/ , Python, 785 linesplotting/ _v2/ _core.py - src/
scanpy/ , Python, 171 linesplotting/ _v2/ _pp.py - src/
scanpy/ , Python, 242 linesplotting/ _v2/ _tl.py - src/
scanpy/ , Python, 132 linesplotting/ legacy/ __init__.py - src/
scanpy/ , Python, 2,653 linesplotting/ legacy/ _anndata.py - src/
scanpy/ , Python, 914 linesplotting/ legacy/ _baseplot_class.py - repository limit reached (2,000 files or 30 MB): the rest is at the source (124 files)
- LICENSE, License, 30 lines
- README.md, Text, 75 lines
rtqichen/torchdiffeq
657943acefa826ef04c025ebeb1ff5e9d60dc268, 3 April 2025Availability: 1 check, the latest on 30 September 2026: the link answers
- 30 September 2026: the link answers
37 files
- examples/
bouncing_ball.py , Python, 212 lines - examples/
cnf.py , Python, 286 lines - examples/
latent_ode.py , Python, 338 lines - examples/
learn_physics.py , Python, 285 lines - examples/
ode_demo.py , Python, 182 lines - examples/
odenet_mnist.py , Python, 376 lines - setup.py, Python, 30 lines
- tests/
DETEST/ , Python, 334 linesdetest.py - tests/
DETEST/ , Python, 59 linesrun.py - tests/
api_tests.py , Python, 43 lines - tests/
event_tests.py , Python, 68 lines - tests/
gradient_tests.py , Python, 139 lines - tests/
norm_tests.py , Python, 310 lines - tests/
odeint_tests.py , Python, 390 lines - tests/
problems.py , Python, 105 lines - tests/
run_all.py , Python, 9 lines - torchdiffeq/
__init__.py , Python, 5 lines - torchdiffeq/
_impl/ , Python, 2 lines__init__.py - torchdiffeq/
_impl/ , Python, 25 linesadaptive_heun.py - torchdiffeq/
_impl/ , Python, 288 linesadjoint.py - torchdiffeq/
_impl/ , Python, 22 linesbosh3.py - torchdiffeq/
_impl/ , Python, 36 linesdopri5.py - torchdiffeq/
_impl/ , Python, 76 linesdopri8.py - torchdiffeq/
_impl/ , Python, 35 linesevent_handling.py - torchdiffeq/
_impl/ , Python, 22 linesfehlberg2.py - torchdiffeq/
_impl/ , Python, 228 linesfixed_adams.py - torchdiffeq/
_impl/ , Python, 60 linesfixed_grid.py - torchdiffeq/
_impl/ , Python, 140 linesfixed_grid_implicit.py - torchdiffeq/
_impl/ , Python, 48 linesinterp.py - torchdiffeq/
_impl/ , Python, 395 linesmisc.py - torchdiffeq/
_impl/ , Python, 231 linesodeint.py - torchdiffeq/
_impl/ , Python, 558 linesrk_common.py - torchdiffeq/
_impl/ , Python, 60 linesscipy_wrapper.py - torchdiffeq/
_impl/ , Python, 181 linessolvers.py - torchdiffeq/
_impl/ , Python, 82 linestsit5.py - LICENSE, License, 21 lines
- README.md, Text, 166 lines
The paper's code and data availability statement is in the Data section.
Tracing map
Proposed by the machine: these links were found in the paper and verified at the source, without human review. The map will receive a Zenodo DOI once one of the paper's authors has validated it with their ORCID.
What the map holds:
- 5 repositories of the authors' code, each at its verified commit, with its license and how the link was found in the paper;
- 232 scripts, each with its path and the digest of its content;
- 8 matches between paragraphs of the paper and lines of the code (method lexical-v1);
- neither the text of the paper nor the code itself.
Its JSON (tracing-map.json) is deposited on Zenodo with its DOI once the map is validated.
Data
No dataset and no data link were found in the paper.
Code and data availability statement
The paper has a code and data availability statement. Its license (CC BY-NC-ND) does not allow reproducing it here; in short, from what the harvester recognized in it:
- it points to the authors' code: idriskb/
NeuroVelo , Zenodo 18358806 - it says that the data are available on request
- it says that the code is available on request
Read it in the paper: doi.org/10.1016/j.crmeth.2026.101342.
Versions
The history of this record: each version stored by the harvester or made by a correction of its authors or of the maintainers of its code, and what changed in its facts. The texts of the paper (its abstract, its availability statements) are not part of it; versions that changed only those are not listed.
Version 1, 30 September 2026: the first record
Recorded: type, language, journal, volume, issue, pages, dates, 6 authors, 4 keywords, 8 MeSH terms, 2 funders, 30 references.
Cite
This paper
Kouadri Boudjelthia, I., Milite, S., El Kazwini, N., Huang, Y., Sottoriva, A., & Sanguinetti, G. (2026). Interpretable learning of temporal cellular dynamics from single-cell data. Cell reports methods, 6(3), 101342. https://
BibTeX
@article{kouadriboudjelt
author = {Kouadri Boudjelthia, Idris and Milite, Salvatore and El Kazwini, Nour and Huang, Yuanhua and Sottoriva, Andrea and Sanguinetti, Guido},
title = {{Interpretable learning of temporal cellular dynamics from single-cell data}},
journal = {Cell reports methods},
year = {2026},
month = mar,
volume = {6},
number = {3},
pages = {101342},
publisher = {Elsevier},
issn = {2667-2375},
doi = {10.1016/
url = {https://
pmid = {41875867},
pmcid = {PMC13030976}
}
RIS
TY - JOUR
AU - Kouadri Boudjelthia, Idris
AU - Milite, Salvatore
AU - El Kazwini, Nour
AU - Huang, Yuanhua
AU - Sottoriva, Andrea
AU - Sanguinetti, Guido
TI - Interpretable learning of temporal cellular dynamics from single-cell data
T2 - Cell reports methods
J2 - Cell Rep Methods
PY - 2026
DA - 2026/
VL - 6
IS - 3
SP - 101342
SN - 2667-2375
PB - Elsevier
DO - 10.1016/
UR - https://
LA - en
ER -
CSL-JSON
{
"id": "10.1016/
"type": "article-journal",
"title": "Interpretable learning of temporal cellular dynamics from single-cell data",
"container-title": "Cell reports methods",
"author": [
{
"family": "Kouadri Boudjelthia",
"given": "Idris"
},
{
"family": "Milite",
"given": "Salvatore"
},
{
"family": "El Kazwini",
"given": "Nour"
},
{
"family": "Huang",
"given": "Yuanhua"
},
{
"family": "Sottoriva",
"given": "Andrea"
},
{
"family": "Sanguinetti",
"given": "Guido"
}
],
"container-title-short":
"volume": "6",
"issue": "3",
"page": "101342",
"DOI": "10.1016/
"PMID": "41875867",
"PMCID": "PMC13030976",
"ISSN": "2667-2375",
"publisher": "Elsevier",
"URL": "https://
"language": "en",
"issued": {
"date-parts": [
[
2026,
3,
1
]
]
}
}
The tracing map gets a citation of its own once an author has validated it and it has a DOI.
Similar papers
The papers with a page that share the most with this one: the tools found in their code, their categories, datasets, cited references and authors, the rarest counting most.
- [1] doi:10.7554/elife.108950 [code]
- Comprehensive RNA velocity by modeling the cascade of gene regulation, transcription, and splicing from single-cell RNA sequencing data with TSvelo.Journal: eLifeIn common: scVelo, anndata, Scanpy, 7 other tools, genetics / omics, cellular / molecular, 13 references
- [2] doi:10.1093/bioinformatics/btag652 [code]
- mmVelo: a deep generative model for estimating cell state-dependent dynamics across multiple modalities.Journal: Bioinformatics (Oxford, England)In common: scVelo, UMAP, anndata, 9 other tools, genetics / omics, 9 references
- [3] doi:10.1016/j.xcrm.2026.102766 [code]
- A longitudinal single-cell and spatial multiomic atlas of pediatric high-grade glioma.Journal: Cell reports. MedicineIn common: scVelo, rpy2, UMAP, 13 other tools, genetics / omics, cellular / molecular, 3 references
- [4] doi:10.1038/s41467-026-74000-4 [code]
- ArchVelo: archetypal velocity modeling for single-cell multi-omic trajectories.Journal: Nature communicationsIn common: scVelo, anndata, Numba, 7 other tools, genetics / omics, cellular / molecular, 7 references
- [5] doi:10.1016/j.isci.2026.116055 [code]
- Mapping the transcriptional diversity of calcium signaling in the mouse and human brain.Journal: iScienceIn common: rpy2, UMAP, anndata, 12 other tools, genetics / omics, 1 reference
- [6] doi:10.1038/s41586-026-10629-x [code]
- Whole-genome duplication shaped cell-type evolution in the vertebrate brain.Journal: NatureIn common: scVelo, UMAP, anndata, 10 other tools, genetics / omics, cellular / molecular, 2 references
- [7] doi:10.64898/2026.03.30.714220 [code]
- An integrated single cell and spatial omics atlas of human prenatal developmentJournal: bioRxiv (preprint)In common: scVelo, UMAP, anndata, 11 other tools, 1 reference
- [8] doi:10.1038/s41593-026-02267-3 [code]
- Spatial proteomic analysis in human Alzheimer's disease brains enables identification of microenvironment-depende
nt microglial cell states. Journal: Nature neuroscienceIn common: rpy2, UMAP, anndata, 11 other tools, genetics / omics, cellular / molecular - [9] doi:10.1038/s41586-026-10490-y [code]
- Lineage and organ signals sequentially build organ intrinsic nervous systems.Journal: NatureIn common: scVelo, UMAP, anndata, 9 other tools, 2 references
- [10] doi:10.1371/journal.pcbi.1014346 [code]
- StPedf: Cell trajectory inference of spatial transcriptomics via spatial proximity embedding and spatial density-adaptive fusion.Journal: PLoS computational biologyIn common: rpy2, anndata, Scanpy, 8 other tools, genetics / omics, 2 references
Contribute
The authors of this paper can claim it, correct its record and validate its tracing map, and the maintainers of its code (its owner, or a public member of its organization) correct what it says of their repository; anyone signed in can ask for its removal. Every request goes to OSCR's own machine, which answers it; your account page follows them.
Sign in with ORCID to claim this paper as one of its authors, correct its record or validate its tracing map: when the paper's metadata lists your ORCID iD, you are recognized at once. Maintainers of its code: sign in with GitHub, then claim the repository on your account page.
Claim this paper
Correct its record
Say what each link of this record is, remove the ones that are not the paper's, add the ones that are missing. The correction becomes a new version of the record, in its Versions section.
Validate its tracing map
You validate the map as this page shows it: 5 repositories of the authors' code, each at its verified commit and with its license, 232 scripts, and 8 matches between paragraphs and code (see the Code and Map sections). It then receives a DOI on Zenodo, with you (your ORCID iD) and OSCR as its creators; the code itself is not deposited.
The map's fingerprint: sha256:0599ef41caf54940…
Add the badge to its README
The badge links the code to this page. Copy one of these into the README of the paper's code: only you decide where it goes, and nothing is changed for you.
Markdown
[, paste the snippet at the top, then “Commit changes…” and, to review it first, “Create a new branch and start a pull request”. You open the pull request; OSCR asks for no permission.
Request its removal
To ask OSCR to remove this record, the copies of its authors' scripts or its tracing map, use the removal request page: signed in, you say who you are, what to remove and why, then review and confirm the request. Published rules decide every request (how).
Discussion, reproductions, activity
Discussion: questions and error reports about this paper and its code, from signed-in readers and its authors. It opens with sign-in.
Reproductions: reports from readers who ran the authors' code: what they reproduced, with which environment, commit and data. It opens with sign-in.
Activity: what happens around this paper: new versions of its record, its map's validation, discussions and reproductions. It opens with sign-in.
