Skip to content

A direction of pseudotime reversed: how to correct it ? #175

@akhst7

Description

@akhst7

I've been trying to construct a pseudotime trajectory from HSC to downstream lineages from Human BM scRNAseq data . This scRNAseq was done with the CITESeq, and annotation was done with CITESeq and transcriptome data (and initially analyzed by Seurat and available from https://www.icloud.com/iclouddrive/0fbp9OjMNaiqUjcWI0cQOGYTw#palantir%5F1), and resulting UMAP is shown below;

scv.pl.scatter(
    an,
    basis='X_sct1_umap.np',
    #components=["1, 2"],
    color="Level3M_noNA_copy",
    colorbar=True,
    figsize=(10,10),
    legend_fontsize=7,
    legend_fontoutline=2
    )
Image

To test Palantir PsuedoTime, I selected the root/early_cell (HSC) and some of the terminal lineage cells from regions of interest on UMAP as follows;

sc.pl.embedding(
    basis='X_sct1_umap.np', 
    adata=an, 
    color=["Level3M_noNA_copy"],
    palette=palette72, size=5, 
    add_outline=False, 
    groups=['HSC', 'pDC', 'ERP', 'Pro-B', 'Myeloid intermediate 1', 'immNeu']  )
Image

I used pal.utils.early_cell and pal.utils.find_terminal_states to find the pseudotime origin and desinations as follows;

early_cell = pal.utils.early_cell(an, celltype="HSC", celltype_column="Level3M_noNA_copy", eigvec_key="X_palantir_multiscale", fallback_seed=123)

terminal_cells=pal.utils.find_terminal_states(an, celltypes=["pDC", "ERP", "Pro-B", "Myeloid intermediate 1", "immNeu"], celltype_column="Level3M_noNA_copy", eigvec_key="X_palantir_multiscale", fallback_seed=123)

Quick check of locatioins of those cells on UMAP;

early_cell=pd.Series("Early_Cell", index="TATCTTGCAGTAGAAT-1_6")
combo_states=pd.concat([early_cell, terminal_cells])
pal.plot.highlight_cells_on_umap(an, cells=combo_states, embedding_basis="X_sct1_umap_np_small")
plt.show()
Image

The pseudotime was generated by using these cells as follows;

pr_res = pal.core.run_palantir(data=an, early_cell=early_cell, terminal_states=terminal_states, eigvec_key="X_palantir_multiscale")

Follwoing plots shows the result and diffustion components;

pal.plot.plot_palantir_results(an, embedding_basis="X_sct1_umap_np_small", s=3)
plt.show()
Image
pal.plot.plot_diffusion_components(an, dm_res='X_palantir_diff_comp', embedding_basis="X_umap")
Image

Looking at these plots, immature and mature states are reversed. The problem appears to be that Palantir is picking Myeloid intermediate 1, and immNeu as the start of pseudotime, insted of HSC.

As a comparison, I run scanpy dpt on the same data, which gave me somewhat a expected result.

sc.pl.embedding(
    an,
    basis="X_sct1_umap.np",
    color=["dpt_pseudotime", "palantir_pseudotime"],
    color_map="viridis",
)
Image

I've tried selecting different early-cells but no avail. At this point, I'd really appreciate any suggestions or inputs.

Thanks in advance.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions