怎么使用服务器运行pySCENIC

前言

  我们注意到在其他的一些论坛,有一些用户反馈,在服务器上面运行pyscenic不太顺畅。本文我们整理了在服务器上运行pyscenic的三个方法供大家参考,分别是conda安装pyscenic运行、arboreto_with_multiprocessing运行、容器化运行。总的来说,推荐使用容器化方式运行,其次是arboreto_with_multiprocessing方式,最次是conda安装pyscenic运行的方式。

  pyscenic的三个步骤,grn、ctx、aucell,分别耗时的级别是十几个小时、两三个小时、半小时,运行时间依据实际使用数据大小、服务器负载等具体情况有不同的时间表现,以上时间仅供参考,总之三部曲耗时是越来越短的。

  • 一些优质的文档
    1. 《使用西柚云自学pySCENIC所遇Error》
    2. 《使用pyscenic做转录因子分析》
    3. 《pySCENIC报错、解决和完整流程(IOS系统)》
    4. 《PyScenic教学(容器化)》

conda安装pyscenic运行

Dask

  • 默认的pyscenic是使用到了Dask的,Dask是一个python编写的,灵活的大数据并行计算库(框架),能在分布式集群中进行分布式并行计算,也可以在单机(多核心)中进行伪分布式并行计算。

环境配置与运行

  • 参考论坛里某位大佬的评论,pyscenic存在一些版本的问题,故安装的时候需要进行一些降级处理。

mamba create -y -n pyscenic310 python=3.10 -vvmamba activate pyscenic310pip config set global.index-url http://mirror.xiyoucloud.pro:63333/repository/pypi/simple
pip config set install.trusted-host mirror.xiyoucloud.pro
pip config set global.timeout 6000# pip 从 git 源码仓库直接 install 。要求是这个github仓库内要有setup.py文件。【这里有可能需要魔法】
pip install git+https://github.com/aertslab/pySCENICpip install numpy==1.23.5
pip install distributed==2024.2.1
pip install dask-expr==0.5.3
pip install numba==0.56.4# 第一步 grn,sample.loom、hs_hgnc_tfs.txt是输入,产出是adj.sample.tsv
time pyscenic grn --num_workers 20 --output adj.sample.tsv --method grnboost2 sample.loom hs_hgnc_tfs.txt# 第二步 ctx 输入是hg38__refseq-r80__10kb_up_and_down_tss.mc9nr.genes_vs_motifs.rankings.feather、motifs-v9-nr.hgnc-m0.001-o0.0.tbl,输出是reg.csv
time pyscenic ctx adj.sample.tsv hg38__refseq-r80__10kb_up_and_down_tss.mc9nr.genes_vs_motifs.rankings.feather --annotations_fname motifs-v9-nr.hgnc-m0.001-o0.0.tbl --expression_mtx_fname sample.loom --mode "dask_multiprocessing" --output reg.csv --num_workers 10 --mask_dropouts# 第三步 aucell,sample.loom、reg.csv是输入,产出是sample_SCENIC.loom
time pyscenic aucell sample.loom reg.csv --output sample_SCENIC.loom --num_workers 10

UserWarning: Port 8787 is already in use问题

  • Dask集群启动的时候,会启动一个web服务(web服务的可视化界面大概长下图这样,可以看到计算任务的资源使用情况以及任务拓扑图)对集群的运行进行数据的可视化,该服务监听8787端口,而Rstudio也是监听8787端口,二者就冲突了,但是这个不影响实际运行,因为Dask会随机选择一个未使用的端口来运行的。

Distributed core Error, Cancelled Error,CommClosedError问题

  • 这种报错为Dask的分布式运算协调失败导致运行报错,我们单独调用Dask库是没有问题的,服务端与客户端都能正常启动,也能调用多个核心进行并行计算。问题有可能出在pyscenic调用Dask的时候,有什么地方没处理好,导致进行多线程运算的时候偶尔出错,下面给出验证在西柚云服务器运行Dask是否有问题的Demo,与pyscenic没有什么关系,大家看看即可。
from dask.distributed import LocalCluster, Client# 创建一个本地的伪分布式集群,监听14951端口,这样就不会与Rstudio的8787端口冲突了
cluster = LocalCluster(scheduler_port=14950,dashboard_address=":14951")

from dask.distributed import Client# 创建Dask集群客户端
client = Client("127.0.0.1:14950")# 使用Dask进行并行计算
import dask.array as da
import numpy as np# 创建一个大数组
x = da.from_array(np.random.random((10000, 10000)), chunks=(1000, 1000))# 并行计算数组的平均值
mean = x.mean().compute()

arboreto_with_multiprocessing运行

  • 如果是单机运行pyscenic,还可以使用arboreto_with_multiprocessing来运行。
    arboreto_with_multiprocessing.py文件在安装了pyscenic后就能直接使用了的,其特别适合单机运行的情况,因为不使用Dask,放弃了多服务器节点运行的能力,但是好处是依赖更少,更加稳定,可以避免出现上面说的Dask分布式运算协调失败导致运行报错。

  • Arboreto是pyscenic的一个依赖库,主要用于加速GRN推断,特别是使用多进程来并行化GENIE3或GRNBoost2算法。所以arboreto_with_multiprocessing.py应该只负责第一步的共表达网络推断,第二、第三步和方法一是一样的。

环境配置与运行

mamba create -y -n pyscenic379-arboreto python=3.7.9 -vvmamba activate pyscenic379-arboretomamba install -y numpy==1.19.5 -vvpip install pyscenic==0.12.0# 第一步
time arboreto_with_multiprocessing.py --num_workers 20 --output adj.sample.tsv --method grnboost2 sample.loom hs_hgnc_tfs.txt# 第二步
time pyscenic ctx adj.sample.tsv hg38__refseq-r80__10kb_up_and_down_tss.mc9nr.genes_vs_motifs.rankings.feather --annotations_fname motifs-v9-nr.hgnc-m0.001-o0.0.tbl --expression_mtx_fname sample.loom --mode "dask_multiprocessing" --output reg.csv --num_workers 10 --mask_dropouts# 第三步
time pyscenic aucell sample.loom reg.csv --output sample_SCENIC.loom --num_workers 10

程序没有使用多核心问题

  • 此问题在仓库的issue(https://github.com/aertslab/pySCENIC/issues/463)中有提到,明明设置了num_workers为20,但是实际只有单核心在运行。有用户给出了解决方案是将pyscenic降级到0.12.0版本,实测可行。同时官方也指出了,可以使用容器化运行。

容器化运行

  • 可以看到,前面两个方法都需要安装特定版本的依赖才能运行,比较复杂。使用容器化技术,可以将一整套打包好的软件拉取下来运行,免去了很多环境配置调试的烦恼。

pyscenic的可用版本

  • pip

  • docker

环境配置与运行

  • pyscenic的最新版本为0.12.1,维护时间是2年前,最近的几个版本分别是:0.12.1、0.12.0、0.11.2、0.11.1。
  • 由于国内网络问题,所以需要从西柚云的docker仓库(拉取之前需要进行docker仓库的配置,具体仓库用法:西柚仓库集合)中拉取对应的镜像,否则会出现拉取镜像超时报错的情况。
sudo docker pull mirror.xiyoucloud.pro:63331/aertslab/pyscenic:0.12.1 sudo docker tag mirror.xiyoucloud.pro:63331/aertslab/pyscenic:0.12.1 aertslab/pyscenic:0.12.1# 第一步
time docker run -it --rm -v ${HOME}/pyscenic/docker:/data aertslab/pyscenic:0.12.1 pyscenic grn --num_workers 20 -o /data/adj.sample.tsv --method grnboost2 /data/sample.loom /data/hs_hgnc_tfs.txt# 第二步
time docker run -it --rm -v ${HOME}/pyscenic/docker:/data aertslab/pyscenic:0.12.1 pyscenic ctx /data/adj.sample.tsv /data/hg38__refseq-r80__10kb_up_and_down_tss.mc9nr.genes_vs_motifs.rankings.feather --annotations_fname /data/motifs-v9-nr.hgnc-m0.001-o0.0.tbl --expression_mtx_fname /data/sample.loom --mode "dask_multiprocessing" --output /data/reg.csv --num_workers 10 --mask_dropouts# 第三步
time docker run -it --rm -v ${HOME}/pyscenic/docker:/data aertslab/pyscenic:0.12.1 pyscenic aucell /data/sample.loom /data/reg.csv --output /data/sample_SCENIC.loom --num_workers 10

结语

  如果遇到在西柚云服务器运行软件死活运行不成功,甚至连朋友也运行不成功,问题出现“群体现象”,请及时联系我们。我们会尽最大可能为您解决,并像此文一样总结出来帮助大家。如果相关技术人员处理不力,可直接联系技术总负责人小柚子进行反馈或投诉,小柚子将尽快为大家协调解决问题。


  如果大家对我们的内容有任何反馈,或者有特定的软件使用教程需求,欢迎在后台留言告诉我们,我们系统整理后与大家分享。

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

QEMU 搭建arm linux开发环境

Qemu 作为一款强大的开源虚拟化软件,为我们提供了一个便捷且经济实惠的方式来模拟各种硬件环境,从而在上面安装和学习 Linux 系统。本文将详细介绍如何使用 Qemu 搭建 Linux 学习环境, 环境准备 操作系统:建议使用 Ubuntu 20.04…

坐井说天阔---DeepSeek-R1

前言 DeepSeek-R1这么火,虽然网上很多介绍和解读,但听人家的总不如自己去看看原论文。于是花了大概一周的时间,下班后有进入了研究生的状态---读论文。 DeepSeek这次的目标是探索在没有任何监督数据的情况下训练具有推理能力的大模型&#…

EasyExcel 复杂填充

EasyExcel ​Excel表格中用{}或者{.} 来表示包裹要填充的变量,如果单元格文本中本来就有{、}左右大括号,需要在括号前面使用斜杠转义\{ 、\}。 ​代码中被填充数据的实体对象的成员变量名或被填充map集合的key需要和Excel中被{}包裹的变量名称一致。 …

华为防火墙pppoe拨号接入互联网配置案例

目录 1.pppoe拨号背景2.网络拓扑3.网络需求4.网络配置4.1 网络基础配置4.2 pppoe配置4.2.1 pppoe服务端配置(现网环境可忽略)4.2.2 pppoe客户端配置4.2.3 结果验证 5.小结 1.pppoe拨号背景 PPPoE(Point-to-Point Protocol Over Ethernet)拨号产生的背景…

认识vue-admin

认识vue-admin **核心交付:** 为什么要基于现成架子二次开发 什么是二次开发:基于已有的代码(项目工程,脚手架)开进行新功能的开发 所以看懂已有的框架中的既有代码,变得很重要了 1. 背景知识 后台管理系统是一种最…

【16】思科AireOS:创建使用 LWA 认证的 WLAN

1. 概述 LWA(Local Web Authentication)是一种基于 Web 认证的方式,允许无线客户端在连接 WLAN 后,使用 Web 认证页面进行身份验证。该方法适用于访客网络或需要身份认证的场景。 本指南详细介绍如何在 Cisco AireOS 无线控制器(WLC)上配置 LWA 认证的 WLAN,并确保认证…

电解电容的参数指标

容量 这个值通常是室温25℃,在一定频率和幅度的交流信号下测得的容量。容量会随着温度、直流电压、交流电压值的变化而改变。 额定电压 施加在电容上的最大直流电压,通常要求降额使用。 例如额定电压是4V,降额到70%使用,最高施…

【C++】IO流

目录 一、C语言的输入与输出二、流是什么三、CIO流3.1 C标准IO流3.2 C文件IO流3.2.1 二进制读写3.2.2 文本读写 四、stringstream的简单介绍结尾 一、C语言的输入与输出 C语言中我们用到的最频繁的输入输出方式就是scanf ()与printf()。 scanf(): 从标准输入设备(键盘)读取数据…

软件开发 | GitHub企业版常见问题解读

什么是GitHub企业版? GitHub企业版是一个企业级软件开发平台,专为现代化开发的复杂工作流程而设计。 作为可扩展的平台解决方案,GitHub企业版使组织能够无缝集成其他工具和功能,并根据特定需求定制开发环境,提高整体…

红黑树:高效平衡二叉树的奥秘

🌟 快来参与讨论💬,点赞👍、收藏⭐、分享📤,共创活力社区。🌟 引言 在数据结构的奇妙世界里🧐,二叉搜索树就像一把神奇的钥匙,能高效地查找数据。但这把钥匙也…

[免费]SpringBoot公益众筹爱心捐赠系统【论文+源码+SQL脚本】

大家好,我是老师,看到一个不错的SpringBoot公益众筹爱心捐赠系统,分享下哈。 项目介绍 公益捐助平台的发展背景可以追溯到几十年前,当时人们已经开始通过各种渠道进行公益捐助。随着互联网的普及,本文旨在探讨公益事业…

【设计模式】03-理解常见设计模式-行为型模式(专栏完结)

前言 前面我们介绍完创建型模式和创建型模式,这篇介绍最后的行为型模式,也是【设计模式】专栏的最后一篇。 一、概述 行为型模式主要用于处理对象之间的交互和职责分配,以实现更灵活的行为和更好的协作。 二、常见的行为型模式 1、观察者模…

DeepSeek 助力 Vue 开发:打造丝滑的卡片(Card)

前言:哈喽,大家好,今天给大家分享一篇文章!并提供具体代码帮助大家深入理解,彻底掌握!创作不易,如果能帮助到大家或者给大家一些灵感和启发,欢迎收藏关注哦 💕 目录 Deep…

基于单片机的开关电源设计(论文+源码)

本次基于单片机的开关电源节能控制系统的设计中,在功能上设计如下: (1)系统输入220V; (2)系统.输出0-12V可调,步进0.1V; (3)LCD液晶显示实时电压&#xff…

SpringBoot(7)-Swagger

目录 一、是什么 二、SpringBoot集成Swagger 三、配置Swagger 3.1 配置文档信息 3.2 配置扫描接口 3.3 配置Swagger开关 3.4 配置API分组 3.5 实体配置 四、常用注解 五、总结 一、是什么 是一款API框架,API文档和API定义同步更新,可以在线测…

Atlassian工具集:Jira与Confluence集成优势、使用技巧、更新功能等

本文由Atlassian全球白金合作伙伴-龙智翻译整理,深入探讨了Jira和Confluence最受欢迎的集成功能与技巧,期待为您新一年的团队协作开个好头。 此前,来自K15t 的Customer Advocate Matt Reiner 和Atlassian副产品经理David Olive在一场学习会议…

Qt QOpenGLShaderProgram详解

1. 概述 QOpenGLShaderProgram 是 Qt 框架中用于管理 OpenGL 着色器程序的类。它提供了一种方便的方式来创建、编译和链接着色器,以及管理着色器程序中的属性和统一变量。通过 QOpenGLShaderProgram,开发者可以轻松地将顶点着色器和片段着色器组合成一个…

小爱音箱控制手机和电视听歌的尝试

最近买了小爱音箱pro,老婆让我扔了,吃灰多年的旧音箱。当然舍不得,比小爱还贵,刚好还有一台红米手机,能插音箱,为了让音箱更加灵活,买了个2元的蓝牙接收模块Type-c供电3.5接口。这就是本次尝试起…

ESXi安装【真机和虚拟机】(超详细)

项目简介: ESXi(Elastic Sky X Integrated)是VMware公司开发的一种裸机虚拟化管理程序,允许用户在单一物理服务器上运行多个虚拟机(VM)。它直接安装在服务器硬件上,而不是操作系统之上&#xff…

本地通过隧道连接服务器的mysql

前言 服务器上部署了 mysql,本地希望能访问该 mysql,但是又不希望 mysql 直接暴露在公网上 那么可以通过隧道连接 ssh 端口的方式进行连接 从外网看,服务器只开放了一个 ssh 端口,并没有开放 3306 监听端口 设置本地免密登录 …