pySCENIC单细胞转录因子分析更新:数据库、软件更新

news2024/12/25 10:14:07

***pySCENIC全部往期精彩系列
1、PySCENIC(一):python版单细胞转录组转录因子分析
2、PySCENIC(二):pyscenic单细胞转录组转录因子分析
3、PySCENIC(三):pyscenic单细胞转录因子分析可视化
4、PySCENIC(四):pyscenic结果之差异转录因子分析及其他可视化首先说一句,我们之前也发过R语言版本的SCENIC,但是后来我们感觉容易出错,而且费时,所以就没有再探究过。可是总是有小伙伴喜欢跑R,然后说这里错了,那里找不见,其实我们的帖子写于2022年,但是数据库已经更新了,去官网下载新的数据库,不能无脑跑代码。回到pySCENIC,之前我们写过整个系列4篇帖子,分析可视化都是很完善了。可是近期跑的时候发现在第一步有点问题,要么跑不动,要么出错,怀疑是软件和数据库没有更新的缘故,故而更新一下测试。这个帖子主要有两部分内容。

Section1

首先准备单细胞数据,我们准备了27001个基因6000个细胞的数据:提取表达数据,这些操作和之前的一样,没有区别。

#====================================================================================
#                               1、R中提取seurat单细胞counts矩阵
#====================================================================================

setwd("D:/KS项目/公众号文章/pySCENIC更新")
library(Seurat)
dim(uterus)
# [1] 27001 27914
table(uterus$orig.ident)
# AEH   EEC    HC 
# 9525 12033  6356
#对于每个样本抽取2000个细胞进行分析,这里只是演示,太多细胞没有意义,也是为了降低文件大小
Idents(uterus) <- 'orig.ident'
sce_test <- subset(x = uterus, downsample = 2000)
table(sce_test$orig.ident)
# AEH  EEC   HC 
# 2000 2000 2000 
table(sce_test$celltype)
# Ciliated epithelial cells           Endothelial cells                 Lymphocytes 
# 427                         631                        2844 
# Macrophages         Smooth muscle cells         Stromal fibroblasts 
# 110                         474                         593 
# Unciliated epithelial cells 
# 921 

dim(sce_test)#我们用这6000个细胞进行演示
# [1] 27001  6000


#提取表达矩阵,用于后续分析
Idents(sce_test) <- 'celltype'
write.csv(t(as.matrix(sce_test@assays$RNA@counts)),file = "sce_exp.csv")
saveRDS(sce_test, file = 'sce_test.rds')

我们这次干脆一不做二不休,将之前的pyscenic的环境删除干净,重新建立环境,重新下载最新版软件pyscenic0.12.1好了。准备的数据集也用最新的。数据库网址:cisTarget databases,需要什么自己下载选择即可。


#删除之前的环境,重新建立环境并下载软件
conda info --envs
conda env remove -n pyscenic
#创建环境
conda create -y -n pyscenic python=3.7
conda activate pyscenic
pip install pyscenic -i http://pypi.douban.com/simple/ --trusted-host pypi.douban.com
pip install scanpy -i http://pypi.douban.com/simple/ --trusted-host pypi.douban.com


#需要的数据库下载
#1、Databases ranking the whole genome  :https://resources.aertslab.org/cistarget/databases/
#我这里是人的:#需要下载什么。自己实际选择
wget https://resources.aertslab.org/cistarget/databases/homo_sapiens/hg38/refseq_r80/mc_v10_clust/gene_based/hg38_10kbp_up_10kbp_down_full_tx_v10_clust.genes_vs_motifs.rankings.feather

#2、Motif to TF annotations database 
wget https://resources.aertslab.org/cistarget/motif2tf/motifs-v10nr_clust-nr.hgnc-m0.001-o0.0.tbl

#3、A list of transcription factors 
wget https://resources.aertslab.org/cistarget/tf_lists/allTFs_hg38.txt

这是所有软件版本

image.png

分析的话很好办,还是和之前一样,标准的3步。第一步我们花了大概12多小时。后面的步骤就比较快了。运行是没有任何问题。甚至最后的结果loom文件我们用之前的R可视化代码直接“闭眼”运行,没有任何问题,所以在这里出问题的小伙伴,考虑下自己数据的问题,软件的问题。


pyscenic grn --num_workers 10 \
--sparse \
--method grnboost2 \
--output grn.csv \
sce.loom \
allTFs_hg38.txt

pyscenic ctx --num_workers 10 \
--output regulons.csv \
--expression_mtx_fname sce.loom \
--mode "custom_multiprocessing" \
--motifs-v10nr_clust-nr.hgnc-m0.001-o0.0.tbl\
grn.csv \
hg38_10kbp_up_10kbp_down_full_tx_v10_clust.genes_vs_motifs.rankings.feather


pyscenic aucell --num_workers 6 \
--output sample_SCENIC.loom \
sce.loom \
regulons.csv

image.png

到这里我们还想探讨一个问题,那就是第一步为什么那么慢,如果仔细了解过的话都知道,第一步的目的是推断转录因子与提供的表达矩阵基因的共表达模块,所以慢就是因为基因多,所以前面我们第一步就是因为运行了所有的基因。这里我们测试了两个数据,一个是1000个基因1500个细胞,一个是1000个6000个细胞,发现运行时间是一样的。

#一个比对
#1000个基因1500个细胞的运行时间
2023-05-30 09:06:44,608 - pyscenic.cli.pyscenic - INFO - Loading expression matrix.
2023-05-30 09:06:44,765 - pyscenic.cli.pyscenic - INFO - Inferring regulatory networks.
2023-05-30 09:09:02,645 - pyscenic.cli.pyscenic - INFO - Writing results to file.

#1000个基因6000个细胞的运行时间
2023-05-30 09:32:42,268 - pyscenic.cli.pyscenic - INFO - Loading expression matrix.
2023-05-30 09:32:42,531 - pyscenic.cli.pyscenic - INFO - Inferring regulatory networks.
2023-05-30 09:35:03,436 - pyscenic.cli.pyscenic - INFO - Writing results to file.

所以我们建议在运行之前,可以对基因进行过滤,例如只有几个细胞表达的基因,或者大多数细胞表达为0的基因可以过滤后在进行分析,因为这些基因没有实质的意义和贡献,对于数据的分析结果也没有影响,还能提高效率。这个思路我认为是没有什么问题的。

Section2

Section1的方式我们之前的帖子说过,相信很多小伙伴已经了解掌握了,只需要更新数据库和软件即可。那么这一部分我们增加的是利用docker镜像进行pyscenic分析。关于docker这里不展开说,可以自行百度。其实爱学习的小伙伴在pyscenic官网的步骤中已经看到了作者讲的,docker镜像分析的步骤。docker的一个优势是速快稍微快一点,不容易出错,我们也测试了,好像是快那么一点。docker的安装需要root权限,所以不懂linux的小伙伴最好不要动,因为sudo很容易搞坏电脑。如果是服务器,一般共享的也没root权限。docker的安装可联系管理员。本地的linux子系统当然是可以安装的。


#安装docker,需要root权限
# 参考:
# 知乎:https://zhuanlan.zhihu.com/p/433898505
# docker官网:https://docs.docker.com/engine/install/ubuntu/
sudo apt-get update
sudo apt-get install ca-certificates curl gnupg

sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
sudo chmod a+r /etc/apt/keyrings/docker.gpg

echo \
"deb [arch="$(dpkg --print-architecture)" signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
  "$(. /etc/os-release && echo "$VERSION_CODENAME")" stable" | \
sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

docker --help

# Usage:  docker [OPTIONS] COMMAND
# 
# A self-sufficient runtime for containers
# 
# Common Commands:
#   run         Create and run a new container from an image
# exec        Execute a command in a running container
# ps          List containers
# build       Build an image from a Dockerfile
# pull        Download an image from a registry
# push        Upload an image to a registry
# images      List images
# login       Log in to a registry

sudo service docker start
service docker status

安装好docker后,我们就可以下载pyscenic了。

#docker安装最新版pyscenic
sudo docker pull aertslab/pyscenic:0.12.1
# sudo: /etc/sudoers.d is owned by uid 1000000, should be 0
# [sudo] password for tq_ziv: 
#   0.12.1: Pulling from aertslab/pyscenic
# 1efc276f4ff9: Pull complete 
# 126aaa6587b8: Pull complete 
# 0dd06b55ca68: Pull complete 
# 3950cece0b72: Pull complete 
# a4cc5c9d5acb: Pull complete 
# bdf10448670a: Pull complete 
# 6c5350e3d2c5: Pull complete 
# Digest: sha256:0c06b8b0a00117e1a4b61303e9ad775bf53c9e410d4c344151c15bf0d143a288
# Status: Downloaded newer image for aertslab/pyscenic:0.12.1
# docker.io/aertslab/pyscenic:0.12.1

# pySCENIC CLI version + ipython kernel + scanpy.
docker pull aertslab/pyscenic_scanpy:0.12.1_1.9.1

分析也是基本的三部:


#run pyscenic
#step1
sudo docker run -it --rm \
     -v /home/tq_ziv/pyscenic:/pyscenic aertslab/pyscenic:0.12.1 \
     pyscenic grn \
     --num_workers 10 \
     --method grnboost2 \
     --output /pyscenic/grn.csv \
     --sparse \
     /pyscenic/sce.loom \
     /pyscenic/allTFs_hg38.txt

#step2
sudo docker run -it --rm \
     -v /home/tq_ziv/pyscenic:/pyscenic aertslab/pyscenic:0.12.1 \
     pyscenic ctx \
     /pyscenic/grn.csv \
     /pyscenic/hg38_10kbp_up_10kbp_down_full_tx_v10_clust.genes_vs_motifs.rankings.feather \
     --annotations_fname /pyscenic/motifs-v10nr_clust-nr.hgnc-m0.001-o0.0.tbl \
     --expression_mtx_fname /pyscenic/sce.loom \
     --mode "custom_multiprocessing" \
     --output /pyscenic/regulons.csv \
     --num_workers 10

#step3
sudo docker run -it --rm \
     -v /home/tq_ziv/pyscenic:/pyscenic aertslab/pyscenic:0.12.1 \
     pyscenic aucell \
     /pyscenic/sce.loom \
     /pyscenic/regulons.csv \
     -o /pyscenic/sample_SCENIC.loom \
     --num_workers 6

这样就完成了,分析结束后按照之前的帖子进行下游的分析和可视化即可。这就是pyscenic的全部内容了。时不时更新下数据库,更新下软件,切记不可拿到别人的代码不思考便运行,不可能顺利拿到结果。觉得分享有用的点个赞、分享一下再走呗!当然了一般的共享服务器是没有root权限的,也不可能用sudo命令进行操作。可以参考我们专属的服务器:专属注册链接:西柚云超算

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/643021.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

我的创作纪念日之这四年的收获与体会

第一次来写自己的创作纪念哈&#xff0c;不知不觉都已经过去整整四年了&#xff0c;好与不好还请大家担待&#xff1a; 1、机缘 1. 记得是大一、大二的时候就听学校的大牛说&#xff0c;可以通过写 CSDN 博客&#xff0c;来提升自己的代码和逻辑能力&#xff0c;以及后面工作…

图解LeetCode——994. 腐烂的橘子

一、题目 在给定的 m x n 网格 grid 中&#xff0c;每个单元格可以有以下三个值之一&#xff1a; 值 0 代表空单元格&#xff1b;值 1 代表新鲜橘子&#xff1b;值 2 代表腐烂的橘子。 每分钟&#xff0c;腐烂的橘子 周围 4 个方向上相邻 的新鲜橘子都会腐烂。 返回直到单元格…

醒醒吧,连新来的实习生都在进阶自动化,你还在点点点吗,聪明人都在提升自己!

5年测试老兵了&#xff0c;真的很迷茫&#xff0c;觉得自己不再提升自己&#xff0c;真的会被实习生替代。 很多朋友跟我吐槽&#xff0c;说自己虽然已经工作3-4年&#xff0c;可工作依旧是点点点&#xff0c;新来的实习生用一周的时间就把工作内容学会了&#xff0c;他的压力…

让博客支持使用 ChatGPT 生成文章摘要是一种什么样的体验?

让博客支持使用 ChatGPT 生成文章摘要是一种什么样的体验&#xff1f; 起因 Sakurairo 主题支持了基于 ChatGPT 的 AI 摘要功能&#xff0c;我有点眼红&#xff0c;但是因为那是个主题限定功能&#xff0c;而我用的又是 Argon&#xff0c;遂想着让 Argon 也支持 AI 摘要功能。…

【spring】spring是什么?详解它的特点与模块

作者&#xff1a;Insist-- 个人主页&#xff1a;insist--个人主页 作者会持续更新网络知识和python基础知识&#xff0c;期待你的关注 目录 一、spring介绍 二、spring的特点&#xff08;七点&#xff09; 1、简化开发 2、AOP的支持 3、声明式事务的支持 4、方便测试 5、…

springcloud 父项目建立(一)

我们开发项目&#xff0c;现在基本都用到maven&#xff0c;以及用父子项目&#xff0c;以及公共模块依赖&#xff0c;来构建方便扩展的项目体系&#xff1b; 首先我们建立父项目 microservice &#xff0c;主要是一个pom&#xff0c;管理module&#xff0c;以及管理依赖&#x…

shell实现多并发控制

背景&#xff1a; 遇到一个业务需求&#xff0c;一个上位机需要向多个下位机传送文件&#xff0c;当前的实现是for循环遍历所有下位机&#xff0c;传送文件&#xff0c;但是此种方法耗时太久&#xff0c;需要优化。因此可以通过并发的方式向下位机传送文件。 这边写一段测试代…

【Vue3 第二十七章】路由和状态管理

一、路由 1.1 服务端路由 与 客户端路由 服务端路由 服务端路由指的是服务器根据用户访问的 URL 路径返回不同的响应结果。当我们在一个传统的服务端渲染的 web 应用中点击一个链接时&#xff0c;浏览器会从服务端获得全新的 HTML&#xff0c;然后重新加载整个页面。客户端路…

人机交互学习-2 人机交互基础知识

人机交互基础知识 交互框架作用执行/评估活动周期 EEC四个组成部分七个阶段和两个步骤 执行隔阂&评估隔阂扩展EEC模型四个部分两个阶段 交互形式命令行交互菜单驱动界面基于表格的界面直接操纵问答界面隐喻界面自然语言交互交互形式小结 理解用户信息处理模型信号处理机人类…

“秩序与自由”——超详细的低代码开发B端产品前端页面设计规范

Hi&#xff0c;我们是钟茂林和李星潮&#xff0c;来自万应低代码 UI 设计团队。 编辑搜图 编辑搜图 左&#xff1a;钟茂林 右&#xff1a;李星潮 在过去&#xff0c;B 端应用通常只在企业内部员工中使用&#xff0c;与 C 端产品数以千万计的用户相比显得少之…

Pycharm 配置Django 框架(详解篇)

首先你必须具备pycharm 专业版 / 社区版也可以 打开pycharm专业版 找到在最下方菜单栏找到 Terminal 第二步&#xff1a;检查自己的python版本 python --version 第三步&#xff1a; 寻找和自己python版本匹配的django版本 &#xff08;图片来源&#xff1a; 化雨随风 …

【NLP模型】文本建模(2)TF-IDF关键词提取原理

一、说明 tf-idf是个可以提取文章关键词的模型&#xff1b;他是基于词频&#xff0c;以及词的权重综合因素考虑的词价值刻度模型。一般地开发NLP将包含三个层次单元&#xff1a;最大数据单元是语料库、语料库中有若干文章、文章中有若干词语。这样从词频上说&#xff0c;就有词…

华为OD机试真题 JavaScript 实现【最小传输时延】【2023 B卷 100分】,附详细解题思路

一、题目描述 某通信网络中有N个网络节点&#xff0c;用1到N进行标识。 网络通过一个有向无环图表示&#xff0c;其中图的边的值表示结点之间的消息传递时延。 现给定相连节点之间的时延列表times[i] {u,v,w}&#xff0c;u表示源节点&#xff0c;v表示目的节点&#xff0c;…

C++入门攻略

C补足C语言部分缺陷 1.命名空间&#xff1a;1.1 命名空间namespace关键字1.命名空间中可以定义变量、函数、类型2.命名空间可以嵌套3.相同命名空间共存 1.2 命名空间的使用方式&#xff1a;1.名称加用域作用限定符的方式访问&#xff08;同上&#xff09;2.使用using引入某个空…

现在学大数据还来得及么

种一棵树最好的时机是十年前&#xff0c;其次是现在。如果你想学&#xff0c;那么就一定来的及。 Python 已成利器 在大数据领域中大放异彩 Python&#xff0c;成为职场人追求效率的利器&#xff0c;因为不管什么工作&#xff0c;数据都会是工作的一部分&#xff0c;有数据的…

学习【菜鸟教程】【C++ 继承】

链接 1. 教程原文 面向对象程序设计中最重要的一个概念是继承。继承允许我们依据另一个类来定义一个类&#xff0c;这使得创建和维护一个应用程序变得更容易。这样做&#xff0c;也达到了重用代码功能和提高执行效率的效果。 当创建一个类时&#xff0c;您不需要重新编写新的…

精通postman教程(一)下载及安装详解

作为一名测试工程师&#xff0c;那么Postman绝对是大伙必备的工具之一。 在这个系列教程中&#xff0c;我将为大伙详细讲解如何使用Postman进行API测试。 今天我将先为大伙介绍Postman的下载安装方法&#xff0c;让你们快速上手这款工具。 一、下载 下载地址&#xff1a;Do…

基于Java学院党员管理系统设计与实现(源码+lw+部署文档+讲解等)

博主介绍&#xff1a; ✌全网粉丝30W,csdn特邀作者、博客专家、CSDN新星计划导师、java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战 ✌ &#x1f345; 文末获取源码联系 &#x1f345; &#x1f447;&#x1f3fb; 精…

Java学习笔记(视频:韩顺平老师)4.0

如果你喜欢这篇文章的话&#xff0c;请给作者点赞哟&#xff0c;你的支持是我不断前进的动力。 因为作者能力水平有限&#xff0c;欢迎各位大佬指导。 目录 如果你喜欢这篇文章的话&#xff0c;请给作者点赞哟&#xff0c;你的支持是我不断前进的动力。 控制结构 顺序 分…

【面试系列】2023金三银四面经

&#x1f431; 个人主页&#xff1a;不叫猫先生&#xff0c;公众号&#xff1a;前端舵手 &#x1f64b;‍♂️ 作者简介&#xff1a;2022年度博客之星前端领域TOP 2&#xff0c;前端领域优质作者、阿里云专家博主&#xff0c;专注于前端各领域技术&#xff0c;共同学习共同进步…