pySCENIC报错、解决和完整流程(IOS系统)

news2024/11/22 11:42:31

该文首发于生信技能树,推文链接:https://mp.weixin.qq.com/s/W23Reg6Hi4XWxpMvfctP8g

明白了基因调控网络的基础知识之后,就可以尝试实际操作一下SCENIC分析。

基因调控网络的基础知识可见推文:https://mp.weixin.qq.com/s/sL_8YFulHsZ42L8G5DyY8w

由于R语言跑SCENIC流程实在是慢,还是决定尝试使用python版的SCENIC进行分析。

这次pySCENIC流程实践中出现了很多报错,花了很大时间和精力去解决。希望这个推文能够帮助到遇到同样问题的你。

同时十分感谢曾老师的鼎力相助!~

如果没有耐心读完报错和解决的过程,可以跳到文末。在文末处提供了完整流程一些解决报错的小思考

首先展示一下战友的情况:Macbook Pro, M2芯片,16GB内存,老爷车,但也够用。

分析前数据准备-R studio

1、导入数据

load("sce_epi.Rdata")
table(sce$location)
table(sce$seurat_clusters)
table(sce$celltype)
dim(sce)
# [1] 20930  2899

2、R语言中提取exp矩阵文件

library(Seurat)
library(SCopeLoomR)
# 将sce对象中的数据转置并保存为CSV
counts <- GetAssayData(sce, slot = "counts")
counts <- counts[,sample(1:ncol(counts), 100)]
# [1] 20930   100

## 保存为loom文件
library(loomR)
loom <- create(filename = "data/input_new.loom", 
               data = counts, overwrite = TRUE)
loom$close()
rm(loom)

后续都会用这个input_new.loom文件数据,如果loom经常出现被锁定的情况就用python语言去转换

GRN分析报错情况及解决流程
环境配置—终端/linux (不在R studio了哈!!)

先跟着众多公众号的教程进行环境配置, 本次采用python 3.9

conda create -y -n pyscenic_3.9 python=3.9
conda activate pyscenic_3.9
pip install pyscenic    
conda install numpy
conda install pandas
GRN分析—终端/linux (不在R studio了哈!!)

step1-基因调控网络的构建

输入:表达矩阵input_new.loom文件,转录因子文件 请注意需要把分析文件和工作路径均调整到同一个文件夹中,当然熟练之后也可以自己设定路径啥的。

# pyscenic grn方式
pyscenic grn \
--num_workers 10 \
--output step1out_grn.tsv \
--method grnboost2 \
input_new.loom \
allTFs_hg38.txt 

由于对python是真的非常不熟悉,就尝试依靠大模型。

尝试了这三种方法,都失败了! 具体细节就不放出来了,真是"又臭又长"。

接下来找了一个新的环境配置教程,把python提升到3.10并对软件工具进行版本设定

conda create -y -n pyscenic_env python=3.10
conda activate pyscenic_env
pip install pyscenic==0.12.1     
conda install numpy==1.23.5
conda install pandas==1.5.3

运行上述的同样代码,依旧报错。

尝试把pyscenic grn改成arboreto_with_multiprocessing.py。

arboreto_with_multiprocessing.py \
--num_workers 10 \
--output step1out_grn.tsv \
--method grnboost2 \
input_new.loom \
allTFs_hg38.txt 

可以运行了!

那为什么pyscenic grn改成arboreto_with_multiprocessing.py就可以运行了呢?

好吧,大模型给的解释其实是浅尝辄止。

step2-调控模块的识别

输入:起始位点的文件,motif和TFs映射关系文件和刚开始构建的loom文件

pyscenic ctx \
step1out_grn.tsv \
hg38_500bp_up_100bp_down_full_tx_v10_clust.genes_vs_motifs.rankings.feather \
hg38_10kbp_up_10kbp_down_full_tx_v10_clust.genes_vs_motifs.rankings.feather \
--annotations_fname motifs-v10nr_clust-nr.hgnc-m0.001-o0.0.tbl \
--expression_mtx_fname input.loom \
--mode "dask_multiprocessing" \
--output step2out_ctx.tsv \
--num_workers 10

第二步可以运行,唯一的小问题就是如果电脑不够给力的话,把--mode "dask_multiprocessing" \ 去掉。

step3-AUCell打分 输入: 一开始的loom文件和第二步得到的ctx文件。

pyscenic aucell \
input_new.loom \
step2out_ctx.tsv \
--output out_SCENIC.loom \
--num_workers 10

上述的方法都尝试了,然而还是没能成功!同时还尝试了更换python版本环境等,也未能成功。

突然想到最开始在配置环境的时候尝试的配置是python=3.7的环境(基于曾老师最初的推文),但电脑会提醒由于是基于osx-arm64的构架,所以不能配置python=3.7的环境。因此我在猜想会不会跟电脑的硬件构架的关?

查阅了osx-64 和 osx-arm64 相关的知识,发现确实有一些差异!

1. osx-64:

架构: 针对 x86_64 架构,也就是传统的 Intel 和 AMD 处理器架构。这是 Mac 电脑在 Apple Silicon (M1, M2) 之前使用的主流架构。

适用设备: 通常用于基于 Intel 处理器的 Mac 电脑(比如 MacBook、iMac、Mac Pro 等)。

软件兼容性: 针对 x86_64 架构编译的软件包,使用的是 Intel 指令集。

2. osx-arm64:

架构: 针对 ARM64 架构,也就是 Apple Silicon 芯片(如 M1, M2)。这些芯片基于 ARM 架构,与传统的 Intel x86_64 架构不同。

适用设备: 专为 Apple Silicon 处理器的 Mac 设备设计(如 M1/M2 MacBook Air, MacBook Pro, Mac mini, iMac 等)。

软件兼容性: 针对 ARM64 架构编译的软件包,使用的是 ARM 指令集。Apple Silicon 设备通常可以通过 Rosetta 2 运行 osx-64 编译的软件包,但 osx-arm64 的软件包会有更好的性能和优化。

接下来在构建环境的时候尝试使用osx-64的硬件构架。并且重新配置python3.7版本。

CONDA_SUBDIR=osx-64 conda create -n pyscenic_3.7 python=3.7
conda activate pyscenic_3.7
pip install pyscenic    
conda install numpy
conda install pandas
pyscenic grn \
--num_workers 10 \
--output step1out_grn.tsv \
--method grnboost2 \
input_new.loom \
allTFs_hg38.txt 

成功运行了!

pyscenic ctx \
step1out_grn.tsv \
hg38_500bp_up_100bp_down_full_tx_v10_clust.genes_vs_motifs.rankings.feather \
hg38_10kbp_up_10kbp_down_full_tx_v10_clust.genes_vs_motifs.rankings.feather \
--annotations_fname motifs-v10nr_clust-nr.hgnc-m0.001-o0.0.tbl \
--expression_mtx_fname input_new.loom \
--output step2out_ctx.tsv \
--mode "dask_multiprocessing" \
--num_workers 10 \
--mask_dropouts

pyscenic aucell \
input_new.loom \
step2out_ctx.tsv \
--output out_SCENIC.loom \
--num_workers 10

第三步的时候出现了loompy和pyscenic版本不兼容的问题,因此把loompy降级即可!

pip install loompy==2.0.17

然后重新运行第三步代码

在R studio中稍微试了一下

library(SCopeLoomR)
library(SCENIC)

scenicLoomPath='out_SCENIC.loom'
loom <- open_loom(scenicLoomPath)regulons_incidMat <- get_regulons(loom, column.attr.name="Regulons")regulons <- regulonsToGeneLists(regulons_incidMat)7 regulonAUC <- get_regulons_AUC(loom, column.attr.name="RegulonsAUC")

运行成功~

完整流程:
1、数据准备-R studio
load("sce_epi.Rdata")
table(sce$location)
table(sce$seurat_clusters)
table(sce$celltype)
dim(sce)
# [1] 20930  2899

library(Seurat)
library(SCopeLoomR)
# 将sce对象中的数据转置并保存为CSV
counts <- GetAssayData(sce, slot = "counts")
counts <- counts[,sample(1:ncol(counts), 100)]
# [1] 20930   100

## 保存为loom文件
library(loomR)
loom <- create(filename = "data/input_new.loom", 
               data = counts, overwrite = TRUE)
loom$close()
rm(loom)
2、环境配置及GRN运行-终端/linux

请注意把需要的文件放到同一个文件夹中,或者设置文件路径。

# 环境配置
# 当然如果没有遇到这样问题的,只需要按照常规方法配置环境!!
# conda create -n pyscenic_3.7 python=3.7
CONDA_SUBDIR=osx-64 conda create -n pyscenic_3.7 python=3.7
conda activate pyscenic_3.7
pip install pyscenic    
conda install numpy
conda install pandas
# GRN-step1 (两种方式)
pyscenic grn \
--num_workers 10 \
--output step1out_grn.tsv \
--method grnboost2 \
input_new.loom \
allTFs_hg38.txt 

# arboreto_with_multiprocessing.py \
# --num_workers 10 \
# --output step1out_grn.tsv \
# --method grnboost2 \
# input_new.loom \
# allTFs_hg38.txt 


# step2
pyscenic ctx \
step1out_grn.tsv \
hg38_500bp_up_100bp_down_full_tx_v10_clust.genes_vs_motifs.rankings.feather \
hg38_10kbp_up_10kbp_down_full_tx_v10_clust.genes_vs_motifs.rankings.feather \
--annotations_fname motifs-v10nr_clust-nr.hgnc-m0.001-o0.0.tbl \
--expression_mtx_fname input_new.loom \
--output step2out_ctx.tsv \
--mode "dask_multiprocessing" \
--num_workers 10 \
--mask_dropouts

# step3
pip install loompy==2.0.17

pyscenic aucell \
input_new.loom \
step2out_ctx.tsv \
--output out_SCENIC.loom \
--num_workers 10

得到了out_SCENIC.loom文件之后就可以放到R stduio中进行处理了!

小思考:

1、计算机是极其"理性"的,它不会以人或者物的意志而随意变化。也就是说如果它出现了报错,一定是能够追根溯源的,之前能运行的代码,只要按照相应条件一定也是能够运行的。因此遇到报错不要害怕,追根溯源即可!

2、尽量不要遗漏每一个报错并努力去理解每一个报错,解决之道就在“其”中。

3、熟悉基础知识和善用辅助工具这两者是并重的,大模型有它独到的优势,但始终不是万能,可能更多的时候我们还是需要靠自己去学习一些计算机/计算机语言基础知识,在这个基础之上更好的使用辅助工具。如果笔者自己能够更加熟悉硬件/计算机语言/分析框架等基础知识的话,应该能更快的做出调整吧。

参考资料:

1、生信技能树/生信随笔:

https://mp.weixin.qq.com/s/IqtNTMb4Jet0VF2-CzgrfA https://mp.weixin.qq.com/s/pN4qWdUszuGqr8nOJstn8w https://mp.weixin.qq.com/s/mBR3IwWvQDcTOXNwM_YCEg https://mp.weixin.qq.com/s/eRFUFPvNDfcU2kW6RkuLSw https://mp.weixin.qq.com/s/ncSW8EXrpzqD-3b7uXy5Mg

2、生信菜鸟团:

https://mp.weixin.qq.com/s/2czUaSzDWrkMF-p8FKDKqg

3、Ks科研分享与服务:

https://mp.weixin.qq.com/s/PS-iI3gtLhMpiM_09pk6sQ https://www.bilibili.com/video/BV1Yj411r7dE/?spm_id_from=333.999.0.0&vd_source=05b5479545ba945a8f5d7b2e7160ea34

4、科研小徐:

https://www.jianshu.com/p/f92e5a063e7a

5、arboreto_with_multiprocessing.py

https://github.com/aertslab/pySCENIC/blob/master/src/pyscenic/cli/arboreto_with_multiprocessing.py

致谢:感谢曾老师以及生信技能树团队全体成员。

:若对内容有疑惑或者有发现明确错误的朋友,请联系后台(欢迎交流)。更多内容可关注公众号:生信方舟

- END -

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

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

相关文章

海康二次开发学习笔记4-参数模块配置

参数模块配置 参数配置控件 工具箱中提供了两个参数配置控件. VmParamsConfigControl是不带渲染的参数配置控件.VmParamsConfigWithRenderControl是带渲染的参数配置控件. 1. VmParamsConfigWithRenderControl 配置模块数据源 private void button3_Click(object sender, …

90%的设计师都不知道的设计神器,教你一招快速搞定中秋节创意海报设计!

设计师们&#xff0c;这是不是你&#xff1a;素材多到眼花缭乱&#xff0c;想用的时候总是找不到&#xff1f;海报设计千篇一律&#xff0c;完美没灵感&#xff1f;别担心&#xff0c;今天就来聊聊如何用千鹿设计助手&#xff0c;快速制作一张创意满满的中秋海报&#xff01; …

若依后端 MyBatis改为MyBatis-Plus

引用 1.引入MyBatis-Plus依赖 在总目录的pom.xml&#xff0c;导入依赖 <mybatis-plus.version>3.4.3</mybatis-plus.version> <!-- mybatis-plus 增强CRUD --> <dependency> <groupId>com.baomidou</groupId> <artifactId>…

关机软件项目规划

一、概述 1.1 编写目的 此项目开发规划书的编写主要是为《UPS SNMP卡网络监控系统》中配套使用的关机软件做主要的规划和整合&#xff0c;在开发过程中起到引导作用&#xff0c;以及给使用者提供简要的说明。 1.2 项目背景 关机软件是UPS网络监控适配器项目监控层的组成部分…

16岁激活交学费银行卡需要本人实名电话卡,线下营业厅不给办,怎么办?

16岁激活交学费银行卡需要本人实名电话卡&#xff0c;线下营业厅不给办&#xff0c;怎么办&#xff1f; 话卡办理规定&#xff1a; 根据《民法典》和《电话用户真实身份信息登记规定》的相关要求&#xff0c;未满16周岁的用户通常需要在监护人的陪同下办理电话卡&#xff0c;并…

IO多路复用几种函数

1. select() 函数原型 int select(int nfds, fd_set *readfds, fd_set *writefds, fd_set *exceptfds, struct timeval *timeout);参数说明 nfds&#xff1a;指定文件描述符的范围。这个值应设置为所有文件描述符中最大值加一。例如&#xff0c;如果监视的文件描述符是 0 到 …

斯坦福大学cs231n (图像分类)

1.介绍 当作图像分类时&#xff0c;分类系统接收一些分类图像&#xff0c;比如猫咪。并且系统清楚了一些已经确定了分类或者标签的集合。那么&#xff0c;计算机的工作就是根据图片&#xff0c;给他分配一些固定的分类或者标签。 对于一个计算机来说&#xff0c;这是一个非常…

【CVPR‘24】DeCoTR:使用 2D 和 3D 注意力增强深度补全

DeCoTR: Enhancing Depth Completion with 2D and 3D Attentions DeCoTR: Enhancing Depth Completion with 2D and 3D Attentions 中文解析摘要介绍方法方法3.1 问题设置3.2 使用高效的 2D 注意力增强基线3.3 3D中的特征交叉注意力点云归一化位置嵌入3.4 捕捉 3D 中的全局上下…

软件测试常见面试题汇总(2024版)

一、常见的面试题汇总 1、你做了几年的测试、自动化测试&#xff0c;说一下 selenium 的原理是什么&#xff1f; 我做了五年的测试&#xff0c;1年的自动化测试&#xff1b; selenium 它是用 http 协议来连接 webdriver &#xff0c;客户端可以使用 Java 或者 Python 各种编…

MySQL的InnoDB、MyISAM的参数及常见错误码

1&#xff1a;参数 参数&#xff0c;也被称之为MySQL的系统变量&#xff0c;这些变量是影响MySQL运行的关键&#xff0c;对每个参数做出不同调整&#xff0c;都有可能直接影响到线上数据库的性能&#xff0c;具体的完整系统参数可参考《MySQL官网文档-系统变量》&#xff0c;官…

图表检测检测系统源码分享 # [一条龙教学YOLOV8标注好的数据集一键训练_70+全套改进创新点发刊_Web前端展示]

图表检测检测系统源码分享 [一条龙教学YOLOV8标注好的数据集一键训练_70全套改进创新点发刊_Web前端展示] 1.研究背景与意义 项目参考AAAI Association for the Advancement of Artificial Intelligence 项目来源AACV Association for the Advancement of Computer Vision …

通过写文件方式写入 Hive 数据

通过写文件方式写入 Hive 数据 Hive最简单的写入数据方式就是通过Hive Jdbc写入Hive数据&#xff0c;但这并不是写入Hive最高效的方法。 Hive通过读取相关Hdfs的文件来获取数据信息&#xff0c;而通过直接写入Hdfs文件数据达到写入Hive数据的效果&#xff0c;这是目前最高效的…

《python语言程序设计》2018版第8章第2题检测子串,你可以用str类中的find方法检测一个字符串

我先用in来做一次 def find_text(text_input1, text_input2):a str(text_input1)b str(text_input2)if b in a:print(f"The {b} is in {a} ")else:print(f"The {b} is not in {a} ")text_n1 "Welcome to shenyang" text_n2 "to"fi…

zdppy_cache缓存框架升级,支持用户级别的缓存隔离,支持超级管理员管理普通用户的缓存

启动服务 import zdppy_api as api import zdppy_cachekey1 "admin" key2 "admin"app api.Api(routes[*zdppy_cache.zdppy_api.cache(key1, key2, api) ])if __name__ __main__:import zdppy_uvicornzdppy_uvicorn.run(app, host"0.0.0.0",…

JVM-类加载过程

类加载过程是 Java 虚拟机 (JVM) 将 Java 代码编译后的字节码文件加载到内存中&#xff0c;并进行解析和验证&#xff0c;最终使程序能够运行的关键步骤。 类加载过程&#xff1a;加载->连接->初始化。连接过程又可分为三步&#xff1a;验证->准备->解析。 1. 加载…

Vitis AI 基本认知(Tiny-VGG 标签获取+预测后处理)

目录 1. 简介 2. 解析 2.1 获取标签 2.1.1 载入数据集 2.1.2 标签-Index 2.1.3 保存和读取类别标签 2.2 读取单个图片 2.3 载入模型并推理 2.3.1 tiny-vgg 模型结构 2.3.2 运行推理 2.4 置信度柱状图 2.5 预测标签 3. 完整代码 4. 总结 1. 简介 本博文在《Vitis …

Python酷库之旅-第三方库Pandas(105)

目录 一、用法精讲 456、pandas.DataFrame.rdiv方法 456-1、语法 456-2、参数 456-3、功能 456-4、返回值 456-5、说明 456-6、用法 456-6-1、数据准备 456-6-2、代码示例 456-6-3、结果输出 457、pandas.DataFrame.rtruediv方法 457-1、语法 457-2、参数 457-3…

云计算实训38——docker网络、跨主机容器之间的通讯

一、docker⽹络 1.桥接--bridge 所有容器连接到桥就可以使⽤外⽹&#xff0c;使⽤nat让容器可以访问外⽹ 使⽤ ip a s指令查看桥&#xff0c;所有容器连接到此桥&#xff0c;ip地址都是 172.17.0.0/16 ⽹段&#xff0c;桥是启动docker服务后出现&#xff0c;在centos使⽤ br…

centos安装mysql8.0版本,并且实现远程连接

一、 卸载mysql 查看mysql安装情况 rpm -qa | grep -i mysql 删除上图中所有信息 rpm -ev mysql-community-release-el7-5.noarch --nodeps 再次查询&#xff0c;没有数据&#xff0c;则为删除干净 find / -name mysql rm -rf /var/lib/mysql 将机器上的所有mysql相关文…

一篇文章带你真正了解接口测试(附视频教程+面试真题)

一、什么是接口测试&#xff1f; 所谓接口&#xff0c;是指同一个系统中模块与模块间的数据传递接口、前后端交互、跨系统跨平台跨数据库的对接。而接口测试&#xff0c;则是通过接口的不同情况下的输入&#xff0c;去对比输出&#xff0c;看看是否满足接口规范所规定的功能、…