-
Notifications
You must be signed in to change notification settings - Fork 57
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Simulation of Pseudotime with splatSimulatePaths() #156
Comments
Hi @spriyansh Thanks for giving {splatter} a go! Yes, you should be able to use the graph TD;
A-->|Path 1|B;
B-->|Path 2|C;
And there is a cell with You can find more information about how paths are calculated in the paper, the Splat parameters vignette and this issue #124. If you have a specific question after looking at those I'm happy to try and answer. |
Hi @lazappi; thanks for such a quick response. I want to simulate the branching trajectory as follows, graph TD;
A-->|Path-1|B;
B-->|Path-2|C;
B-->|Path-3|D;
I am taking a simple case where all the paths have the same number of steps, i.e., 100. Also, the paths after the branching point of both the diverging paths have the same time range. Path 1: 0-100 Here is what I have tried using the Splat parameters vignette
I simulated the topology as follows, as you suggested,
I made the following function to plot gene expression vs custom time. It can be reproduced using this file.
My question is, how can I get lineage-specific genes? How can I infer which gene is specific or regulate cells toward a specific path? My goal is to perform a differential expression at the bifurcating branching point and find path-specific genes. I want to know the ground truth to check how accurately I can predict the differentially expressed genes at a branching point. By ground truth, I mean, Which gene goes up or down along time w.r.t. to a lineage? Because in the image above it is kind of hard to judge the expression in path3 and path4. I appreciate any suggestions on how to do this. |
Your diagram only has three paths in it but I think what you have simulated with those parameters is this: graph TD;
A-->|Path-1|B;
B-->|Path-2|C;
B-->|Path-3|D;
D-->|Path-4|E;
To get the genes that are simulated as changing in each path you need to look at the DE factors as described in #57. Note that the difference here is that the factors tell you the change between the start and end of each path rather than between a group and some fictional origin cell. |
Thanks for the information. Here is another topology that I have tried, graph LR;
A-->|Path-1|B;
A-->|Path-2|C;
Simulation parameters
Here in the last plot for gene-1244, there is a clear distinction of paths at time point 1000 (as it is the max allowed steps per path). However, we cannot expect such a clear separation in actual experiments. Is there a way to simulate such an effect? I expect overlapping cells around 900-1100 steps/custom time. I tried changing |
I think you may be slightly misunderstanding the graph LR;
A-->|Path-1|B;
B-->|Path-2|C;
B-->|Path-3|D;
Which I think matches what you are seeing in your plot. To get this topology: graph LR;
A-->|Path-1|B;
A-->|Path-2|C;
You would need to use |
Okay, I got it now. One last thing I wanted to ask was about Can we simulate with a specific topology (bifurcating) combined with the Phenopath can simulate patterns like differential expression, pseudotime dependence, and pseudotime-covariate interactions. Is it possible to simulate such patterns along the steps of a path? I tried using
|
I am going to close this now but please comment if you have further questions. |
Hi @lazappi, great tool.
I was wondering whether there is a way to simulate or elucidate the pseudotime-like ordering of the simulated cells using splatSimulatePaths().
From what I see in the
colData(sce)
, there is a column Step. Can this be used as pseudotime-like ordering? Where themin(sce$Step)
could be considered as pseudotime 0 (starting points) andmax(sce$Step)
would be considered as most differentiated cell states.The idea is to plot gene expression against known pseudotime-like ordering—for example, the following plot but with known ground truth.
Is there a functionality for this in splatter or a workaround? Also, it would be really nice if you give an insight into how paths are computed, something like this
The text was updated successfully, but these errors were encountered: