10X单细胞(10X空间转录组)分析之将单细胞转录组映射到拷贝数进化树(scatrex)

hello,大家好,今天我们来分享一个很有意思的分析,那就是根据单细胞CNV数据绘制进化树,大家常见的进化树是下面这样的。

图片.png

关于CNV和进化树的分析,我也分享了很多,列举在这里,供大家参考

10X单细胞(10X空间转录组)数据分析之识别肿瘤细胞的CNV分析原理

10X单细胞(10X空间转录组)肿瘤数据分析之肿瘤进化(inferCNV+UPhyloplot2)

copyKAT推断单细胞转录组肿瘤细胞CNV(自动识别肿瘤normal和tumor)

今天我们来另外一种展示方式。

安装和加载

pip install scatrex
import scatrex
from scatrex import models
import scanpy as sc
import matplotlib.pyplot as plt
import numpy as np
import time

Simulate data

seed = 42

sim_sca = scatrex.SCATrEx(model=models.cna, verbose=True)

observed_tree_args = dict(n_nodes=4, node_weights=np.array([.1, 1, 1, 1]))
observed_tree_params = dict(n_regions=30, min_cn=1, min_nevents=5, max_nevents_frac=.5)
sim_sca.simulate_tree(observed_tree=None, n_extra_per_observed=1, n_genes=800, seed=seed,
                        observed_tree_params=observed_tree_params, observed_tree_args=observed_tree_args)
sim_sca.observed_tree.create_adata()

theta = 100
sim_sca.ntssb.reset_node_parameters(node_hyperparams=dict(log_lib_size_mean=7.1, log_lib_size_std=.6, 
                                                          num_global_noise_factors=4,
                                                          global_noise_factors_precisions_shape=5,
                                                          unobserved_factors_kernel_concentration=1./theta,
                                                          frac_dosage=1.,
                                                          baseline_shape=.7))

sim_sca.simulate_data(n_cells=1000, copy=False, seed=seed)
sc.pl.heatmap(sim_sca.adata, groupby='node', var_names=sim_sca.adata.var_names, use_raw=True, vmax=50, figsize=(16,8))
图片.png
sim_sca.observed_tree.plot_heatmap(vmax=4, vmin=0, figsize=(16,4))
图片.png

Run SCATrEx

theta = 100
args = dict(global_noise_factors_precisions_shape=100, num_global_noise_factors=4, 
            unobserved_factors_kernel_concentration=1/theta,
            unobserved_factors_kernel_rate=1.,
            unobserved_factors_root_kernel=.01)
sca = scatrex.SCATrEx(model=models.cna, verbose=True, model_args=args)
sca.model_args = args
sca.add_data(sim_sca.adata.raw.to_adata())
sca.set_observed_tree(sim_sca.observed_tree)
sca.normalize_data()
sca.project_data()

move_weights = {'add':3,
                'merge':6,
                'prune_reattach':1,
                'pivot_reattach':1,
                'swap':1,
                'add_reattach_pivot':.5,
                'subtree_reattach':.5,
                'push_subtree':.5,
                'extract_pivot':.5,
                'perturb_node':.0,
                'clean_node':.0,
                'subtree_pivot_reattach':.5,
                'reset_globals':.0,
                'full':.0,
                'globals':1}

search_kwargs = {'n_iters': 500, 'n_iters_elbo': 500,                
                'move_weights': move_weights,
                'local': True,
                'factor_delay': 0,
                'step_size': 0.01,
                'posterior_delay': 0,
                'mb_size': 200,
                'num_samples': 1,
                'window': 50,
                'max_nodes': 5,
                'add_rule_thres': .4,
                'joint_init': True,
                'anneal': False,
                'restart_step': 100}
sca.learn_tree(reset=True, search_kwargs=search_kwargs)
# Check concordance with ground truth assignments
import pandas as pd
print(pd.crosstab(sim_sca.adata.obs['obs_node'], sca.adata.obs['scatrex_obs_node']))
print()
print(pd.crosstab(sim_sca.adata.obs['node'], sca.adata.obs['scatrex_node']))
print()
图片.png
sca.ntssb.plot_tree(counts=True)
图片.png
sca.plot_unobserved_parameters(step=5.,estimated=True, title='Estimated unobserved factors', 
                               name='unobserved_factors',figsize=(16,4))
图片.png

怎么样,感觉还不错吧。

生活很好,有你更好

©著作权归作者所有,转载或内容合作请联系作者
禁止转载,如需转载请通过简信或评论联系作者。
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 158,847评论 4 362
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,208评论 1 292
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 108,587评论 0 243
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,942评论 0 205
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,332评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,587评论 1 218
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,853评论 2 312
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,568评论 0 198
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,273评论 1 242
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,542评论 2 246
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,033评论 1 260
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,373评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,031评论 3 236
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,073评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,830评论 0 195
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,628评论 2 274
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,537评论 2 269

推荐阅读更多精彩内容