首页 > 其他分享 >CytoTRACE推测细胞分化状态

CytoTRACE推测细胞分化状态

时间:2023-04-16 10:13:11浏览次数:32  
标签:分化 python CytoTRACE 推测 intervaltree SC using adata

<众~号@生信探索>

python环境

CytoTRACE的iCytoTRACE函数需要调用python去除批次效应,因此需要先设置好python环境

mamba create -n SC && mamba activate SC

mamba install -y -c conda-forge python=3.10 notebook ipywidgets pandas numpy seaborn matplotlib ipykernel openpyxl pyarrow scanpy python-igraph leidenalg pytables jaxlib leidenalg
pip install scanoramaCT -i https://pypi.tuna.tsinghua.edu.cn/simple
which python
# /opt/homebrew/Caskroom/mambaforge/base/envs/SC/bin/python

修改bug

找到intervaltree/intervaltree.py这个脚本修改bug

#25行的
import collections
#替换为
import collections.abc as collections
#我的intervaltree/intervaltree.py文件路径在
/opt/homebrew/Caskroom/mambaforge/base/envs/SC/lib/python3.10/site-packages/intervaltree/intervaltree.py

如果你不知道去哪里找intervaltree/intervaltree.py文件可以在terminal中,倒入python库,报错的时候有文件路径,如果没报错就不需要修改了。

mamba activate SC
ipython
import scanoramaCT

安装CytoTRACE

using函数是我写在$HOME/.Rprofile中的函数,因此每次打开R就能使用。

using的功能是一次加载多个包,并且使用了suppressPackageStartupMessages函数,因此不会显示加载包过程中的信息。

wget https://cytotrace.stanford.edu/CytoTRACE_0.3.3.tar.gz
using(remotes)
remotes::install_local("CytoTRACE_0.3.3.tar.gz")

从anndata导出数据

adata是注释好细胞类型的数据,CellType是细胞类型,library_id是不同样本编号代表批次效应。

这里使用了Arrow格式作为R和Python的中间数据,可以参考。

adata=sc.read("adata.h5ad").raw.to_adata()
# AnnData object with n_obs × n_vars = 14268 × 32285
#     obs: 'CellType', 'library_id', 'n_genes', 'doublet_score', 'predicted_doublet', 'Cluster'
#     uns: 'Cluster_colors', 'CellType_colors', 'hvg', 'leiden', 'library_id_colors', 'log1p', 'neighbors', 'pca', 'scrublet', 'umap'
#     obsm: 'X_harmony', 'X_pca', 'X_umap'
#     obsp: 'connectivities', 'distances'
adata.to_df().reset_index().to_feather("matrix.arrow",compression='zstd', compression_level=1)
# Phenotype tables, NO headers
adata.obs.to_csv("pd.csv",index=True,header=False)
# batch info
adata.obs.loc[:,['library_id']].to_csv("batch.csv",index=False,header=True)

R中设置python路径

using(reticulate)
reticulate::use_python("/opt/homebrew/Caskroom/mambaforge/base/envs/SC/bin/python")
reticulate::py_exe()

整理input

  • 读入
using(data.table, arrow, CytoTRACE, dplyr, tidyr, purrr)
df <- arrow::read_ipc_file("matrix.arrow")
batch <- data.table::fread("batch.csv")
pd <- data.table::fread("pd.csv")

  • 整理

datasets是没有名字的列表,里边是表达矩阵Matrix类型,phe是有名字的向量,名字是细胞barcode,值是细胞类型

a <- split(df, batch$library_id)
datasets <- purrr::map(a, ~ column_to_rownames(.x, "index") %>% t())
names(datasets) <- NULL
phe <- pd$V2
names(phe) <- pd$V1
rm(df, batch, pd) # 删除不需要的变量

iCytoTRACE

results <- CytoTRACE::iCytoTRACE(datasets, enableFast = TRUE, ncores = 8, subsamplesize = 1000)
CytoTRACE::plotCytoTRACE(results, phenotype = phe, gene = "Top2a", outputDir = './')
CytoTRACE::plotCytoGenes(results, numOfGenes = 10, outputDir = './')

Reference

https://mp.weixin.qq.com/s/S1-ClJEtR0ro0sYnIF6iaw
https://mp.weixin.qq.com/s/Al-FqOLMPBlrrT-JNchVhw
https://mp.weixin.qq.com/s/WiqU3nUFUysXf1M519l_Dg

标签:分化,python,CytoTRACE,推测,intervaltree,SC,using,adata
From: https://www.cnblogs.com/BioQuest/p/17322584.html

相关文章

  • Apple TV特制A5芯片重大发现和推测
    大约一个月前,在支持1080P流媒体播放的新AppleTV发布后,雷锋网已经报道过相关拆解文章(详情)。不同于iPhone4S的双核A5芯片,从新AppleTV的主板上,我们找到了特制的单核A5芯片......
  • Lstm 推测模拟sin函数
    LstmSin函数推测模拟 说明:Sin函数的推测,用前面3个连续sin函数的历史结果推测第4个的值。例如:已知y1,y2,y3推测y4。输入input_x为(length,batch,size)长度、b......
  • R语言生态学:进化树推断物种分化历史:分类单元数与时间关系、支系图可视化
    全文链接:http://tecdat.cn/?p=31434原文出处:拓端数据部落公众号我们围绕进化树技术进行一些咨询,分析生物类群在时间上的多样性是如何变化的。我们将用到分类单元数-时间......
  • 单细胞 | CNV和SNV(genome + MT)推测lineage tree
     正式进入cancergenomics领域,只不过是从scRNA-seq与scATAC-seq入手。我们的问题是如何从有限的SNV和CNV数据里推测出CRC的lineage的关系。 使用的工具:https://git......
  • 部署于K8S集群上面应用性能影响点推测
    前言本人2017年第一次接触K8S.中间断断续续学习K8S相关的内容.但是最近一年,几乎没太有学习.因为之前学习了四五年,一直以为产品马上要用结果一直被浇冷水.去年开......
  • cartographer-位姿推测部分
    下面就详细讲解一下外推器是怎么推算位姿的。先看一下PoseExtrapolator的实现:解释一下它的功能:保持某个时间段内的位姿以估计线速度和角速度;用速度来推测运动;如果使用了I......