日韩黑丝制服一区视频播放|日韩欧美人妻丝袜视频在线观看|九九影院一级蜜桃|亚洲中文在线导航|青草草视频在线观看|婷婷五月色伊人网站|日本一区二区在线|国产AV一二三四区毛片|正在播放久草视频|亚洲色图精品一区

分享

infercnvpy:Python版單細(xì)胞infercnv分析

 TS的美夢 2024-09-19
我們之前介紹過R語言版本的infercnv分析(單細(xì)胞腫瘤inferCNV分析及可視化(詳細(xì)注釋版))。其實python也有相應(yīng)的包進(jìn)行cnv分析,優(yōu)點是相比于R來說過,速度是快了不少。這一期就簡單介紹下infercnvpy的使用,infercnvpy的算法參考了infercnv,但是可能還是有些區(qū)別,因為在最后的結(jié)果上不能和R版infercnv做到一模一樣,infercnvpy于scanpy有良好的結(jié)合和拓展,那么使用scanpy進(jìn)行單細(xì)胞分析的話,infercnvpy做拷貝數(shù)變異分析就是很好的選擇。請注意:infercnvpy教程很久之前就已經(jīng)在VIP發(fā)布,公眾號并未發(fā)布過,具體內(nèi)容詳見打包代碼單細(xì)胞---python版CNV分析!
更多詳細(xì)內(nèi)容請參見:
https://github.com/icbi-lab/infercnvpy
https://infercnvpy./en/latest/

首先安裝包:
#安裝軟件pip install infercnvpy -i https://pypi.tuna./simple some-package

因為我們單細(xì)胞不是scanpy分析的,是基于seurat的,所以為了演示infercnvpy,我們是將但洗腦seurat object轉(zhuǎn)化為adata。
import scanpy as scimport infercnvpy as cnvimport matplotlib.pyplot as pltimport warnings
warnings.simplefilter("ignore")
sc.settings.set_figure_params(figsize=(5, 5))

#library(sceasy)#library(reticulate)#use_condaenv('sceasy')#loompy <- reticulate::import('loompy')# sceasy::convertFormat(uterus, from="seurat", to="anndata", outFile='sce_uterus.h5ad')

import anndataadata = anndata.read_h5ad('sce_uterus.h5ad')adata# AnnData object with n_obs × n_vars = 27914 × 27001# obs: 'orig.ident', 'nCount_RNA', 'nFeature_RNA', 'S.Score', 'G2M.Score', 'Phase', 'percent.mt', 'percent.rb', 'percent.hb', 'integrated_snn_res.0.1', 'integrated_snn_res.0.2', 'integrated_snn_res.0.3', 'integrated_snn_res.0.4', 'integrated_snn_res.0.5', 'integrated_snn_res.0.6', 'integrated_snn_res.0.7', 'integrated_snn_res.0.8', 'integrated_snn_res.0.9', 'integrated_snn_res.1', 'integrated_snn_res.1.1', 'integrated_snn_res.1.2', 'seurat_clusters', 'celltype', 'cell_type', 'group_cell'# var: 'name'# obsm: 'X_pca', 'X_tsne'

sc.pl.tsne(adata, color="cell_type")


額外需要的文件和R版是一樣的,就是那個Genomic positions文件,需要將其信息添加到adata到adata。
gene_annotations = pd.read_csv('geneannotation.csv')

# 將染色體位置信息添加到 adata.varadata.var['chromosome'] = ''  # 初始化染色體列adata.var['start'] = 0   # 初始化起始位置列adata.var['end'] = 0     # 初始化結(jié)束位置列
# 匹配基因ID并添加染色體位置信息for gene_id in adata.var_names:    if gene_id in gene_annotations['gene_symbol'].values:        # 找到匹配的基因并獲取其染色體位置信息        chromosome, start, end = gene_annotations.loc[gene_annotations['gene_symbol'] == gene_id, ['chromosome', 'start', 'end']].values[0]        adata.var.loc[gene_id, 'chromosome'] = chromosome        adata.var.loc[gene_id, 'start'] = start        adata.var.loc[gene_id, 'end'] = end
#去掉NAadata = adata[: , adata.var.chromosome.notna()]

run infercnvpy:速度很快!

#run infercnvpycnv.tl.infercnv(    adata,    reference_key="group_cell",    reference_cat=[        "HC_Ly",        "HC_Endo",        "HC_Uepi",        "HC_Cepi",        "HC_Mac",        "HC_SMC",        "HC_Sfib",    ],    window_size=250,)
cnv.pl.chromosome_heatmap(adata, groupby="group_cell")

#Clustering by CNV profiles and identifying tumor cellscnv.tl.pca(adata)cnv.pp.neighbors(adata)cnv.tl.leiden(adata)
cnv.pl.chromosome_heatmap(adata, groupby="cnv_leiden", dendrogram=True)

#我這里按照cnv_score進(jìn)行區(qū)分adata.obs["cnv_status"] = "normal"adata.obs.loc[adata.obs["cnv_score"]>0.008, "cnv_status"] = (    "tumor")
sc.pl.tsne(adata, color="cnv_status")

cnv.pl.chromosome_heatmap(adata[adata.obs["cnv_status"] == "normal", :])

最后,我們可以將cell信息提取,然后再R里面區(qū)分提取惡性細(xì)胞。總之,infercnvpy在分析和可視化上面表現(xiàn)都挺好,可以嘗試一下!

覺得我們分享有些用的,點個贊再走唄!

    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章