This is a rather specific question about the package scvelo, which uses RNA velocity to infer pseudotime dynamics in scRNAseq data sets.
Basically, I'm unable to fit the splicing dynamics to my data using their standard approaches.
The basic pipeline I'm running is:
import scvelo as scv
adata = scanpy.read("filename") # adata is a pre-processed AnnData object
scv.pp.filter_and_normalize(adata, min_shared_counts=20, n_top_genes=2000)
scv.tl.recover_dynamics(adata, max_iter=20, n_jobs=4)
scv.tl.velocity(adata, mode='dynamical', filter_genes= False)
When I then look at the top likelihood genes, the fitted model is clearly very far off.
Now I'm wondering if this is a problem with the fitting procedure (which seems likely to me), or with the data itself. scvelo
uses a custom fitting procedure based on the Expectation maximization algorithm, which is an iterative maximum likelihood approach. However, it could get stuck in local maxima that do not correspond to the global maximum.
Any ideas what could be done to solve this? I've already addressed this question to the scvelo developers [link], but they have not responded to me.