Tree operations

The objective of this notebook is to learn how to perform tree operations, such as subsetting and attachment.

Importing modules and basic settings

[1]:
import warnings
warnings.filterwarnings("ignore")
import scanpy as sc
import scFates as scf

sc.set_figure_params()
[2]:
adata = sc.read("data/empty_tree.h5ad",backup_url="https://github.com/LouisFaure/scFates_notebooks/raw/main/data/empty_tree.h5ad")
[3]:
scf.pl.trajectory(adata,basis="draw_graph_fa",color_cells="milestones")
_images/Tree_operations_3_0.png
[4]:
scf.pl.dendrogram(adata,color_milestones=True,color="milestones")
_images/Tree_operations_4_0.png

Subsetting of tree (extraction mode)

Subtree

[5]:
adata_extracted=scf.tl.subset_tree(adata,root_milestone="bifA",milestones=["Mono","DC"],copy=True)
subsetting tree
node 33 selected as a root --> added
    .uns['graph']['root'] selected root.
    .uns['graph']['pp_info'] for each PP, its distance vs root and segment assignment.
    .uns['graph']['pp_seg'] segments network information.
projecting cells onto the principal graph
    finished (0:00:01) --> added
    .obs['edge'] assigned edge.
    .obs['t'] pseudotime value.
    .obs['seg'] segment of the tree assigned.
    .obs['milestones'] milestone assigned.
    .uns['pseudotime_list'] list of cell projection from all mappings.
    finished (0:00:00) --> tree extracted
--> added
    .obs['old_milestones'], previous milestones from intial tree
[6]:
ax=sc.pl.scatter(adata,basis="draw_graph_fa",color="whitesmoke",show=False)
scf.pl.graph(adata_extracted,basis="draw_graph_fa",size_nodes=.1,ax=ax)
_images/Tree_operations_7_0.png
[7]:
scf.pl.dendrogram(adata_extracted,color="milestones")
_images/Tree_operations_8_0.png

Single branch

[8]:
adata_extracted=scf.tl.subset_tree(adata,root_milestone="bifA",milestones=["Ery"],copy=True)
subsetting tree
node 42 selected as a root --> added
    .uns['graph']['root'] selected root.
    .uns['graph']['pp_info'] for each PP, its distance vs root and segment assignment.
    .uns['graph']['pp_seg'] segments network information.
projecting cells onto the principal graph
    finished (0:00:01) --> added
    .obs['edge'] assigned edge.
    .obs['t'] pseudotime value.
    .obs['seg'] segment of the tree assigned.
    .obs['milestones'] milestone assigned.
    .uns['pseudotime_list'] list of cell projection from all mappings.
    finished (0:00:00) --> tree extracted
--> added
    .obs['old_milestones'], previous milestones from intial tree
[9]:
ax=sc.pl.scatter(adata,basis="draw_graph_fa",color="whitesmoke",show=False)
scf.pl.graph(adata_extracted,basis="draw_graph_fa",size_nodes=.1,ax=ax)
_images/Tree_operations_11_0.png
[10]:
scf.pl.dendrogram(adata_extracted,color="seg")
_images/Tree_operations_12_0.png

Subsetting of tree (substract mode)

[11]:
adata_subtracted=scf.tl.subset_tree(adata,root_milestone="bifA",milestones=["Ery"],
                                    mode="substract",copy=True)
subsetting tree
node 124 selected as a root --> added
    .uns['graph']['root'] selected root.
    .uns['graph']['pp_info'] for each PP, its distance vs root and segment assignment.
    .uns['graph']['pp_seg'] segments network information.
projecting cells onto the principal graph
    finished (0:00:03) --> added
    .obs['edge'] assigned edge.
    .obs['t'] pseudotime value.
    .obs['seg'] segment of the tree assigned.
    .obs['milestones'] milestone assigned.
    .uns['pseudotime_list'] list of cell projection from all mappings.
    finished (0:00:00) --> tree subsetted
--> added
    .obs['old_milestones'], previous milestones from intial tree
[12]:
ax=sc.pl.scatter(adata,basis="draw_graph_fa",color="whitesmoke",show=False)
scf.pl.graph(adata_subtracted,basis="draw_graph_fa",size_nodes=.1,ax=ax)
_images/Tree_operations_15_0.png
[13]:
scf.pl.dendrogram(adata_subtracted,color="seg")
_images/Tree_operations_16_0.png

Tree attachment

[14]:
adata_attached = scf.tl.attach_tree(adata_subtracted,adata_extracted)
attaching tree
    merging
    tree refitting
    finished (0:00:02) --> datasets combined
[15]:
scf.pl.graph(adata_attached,basis="draw_graph_fa",size_nodes=.1)
_images/Tree_operations_19_0.png