前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >使用R语言的parallel包调用多个线程加快数据处理进度

使用R语言的parallel包调用多个线程加快数据处理进度

作者头像
生信技能树
发布2021-10-12 12:08:13
3.3K0
发布2021-10-12 12:08:13
举报
文章被收录于专栏:生信技能树生信技能树

R语言里面做并行计算的包很多,如下所示:

代码语言:javascript
复制
install.packages(c(
  'foreach',
  'iterators',
  'doMC',
  'doParallel',
  'doSNOW'
))

有意思的是我仍然是选择老牌r包,parallel;

使用方法非常简单, 就是 makeCluster 函数定义好需要并行计算的线程数量,然后之前的apply家族循环就区别在函数名字前面加上par的签字,比如 lapply就替换成为了 parLapply 函数。

最开始的代码是:

代码语言:javascript
复制
system.time(lapply(1:1000000, function(x){
  sample(1:100,10)
}))

  user  system elapsed 
  7.105   0.268   7.380 

lapply就替换成为了 parLapply 函数 之后的代码是;

代码语言:javascript
复制
library(parallel) 
cl <- makeCluster(8)  
system.time(parLapply(cl,1:1000000, function(x){ 
  sample(1:100,10)
})) 

实战举例:是使用ChIPseeker包对十万多个ChIP-seq的bed坐标文件进行注释,就自定义了函数 run_ChIPseeker,然后把全部的bed文件路径名字存储在 fs这个向量,然后就可以使用 parLapply 的模式,使用8个线程进行并行计算啦,代码如下所示:

代码语言:javascript
复制
library(parallel) 
cl <- makeCluster(8)  
source('../function.R')
parLapply(cl,fs,
          function(bedPeaksFile){ 
            source('../function.R')
            run_ChIPseeker(bedPeaksFile,'human')
          }) # lapply的并行版本 

stopCluster(cl) # 关闭集群

值得注意的是,8个线程内部都需要定义 run_ChIPseeker 函数哦。

在我的Windows电脑里面,效果如下所示:

Windows电脑的R并行计算

看懂这些代码,需要 有R语言基础哦:

生信基石之R语言

B站的10个小时教学视频务必看完,参考 GitHub 仓库存放的相关学习路线指导资料:https://github.com/jmzeng1314/R_bilibili ,可以参考一些优秀笔记,比如https://mubu.com/doc/2KUiSCfVsg

  • 初级10 个题目:http://www.bio-info-trainee.com/3793.html
  • 中级要求是:http://www.bio-info-trainee.com/3750.html
  • 高级要求是完成20题:http://www.bio-info-trainee.com/3415.html
  • 统计专题 30题:http://www.bio-info-trainee.com/4385.html
  • 可视化专题30题:http://www.bio-info-trainee.com/4387.html

再怎么强调生物信息学数据分析学习过程的计算机基础知识的打磨都不为过,我把它粗略的分成基于R语言的统计可视化,以及基于Linux的NGS数据处理

把R的知识点路线图搞定,如下:

  • 了解常量和变量概念
  • 加减乘除等运算(计算器)
  • 多种数据类型(数值,字符,逻辑,因子)
  • 多种数据结构(向量,矩阵,数组,数据框,列表)
  • 文件读取和写出
  • 简单统计可视化
  • 无限量函数学习
本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2021-09-30,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 生信技能树 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 生信基石之R语言
相关产品与服务
GPU 云服务器
GPU 云服务器(Cloud GPU Service,GPU)是提供 GPU 算力的弹性计算服务,具有超强的并行计算能力,作为 IaaS 层的尖兵利器,服务于深度学习训练、科学计算、图形图像处理、视频编解码等场景。腾讯云随时提供触手可得的算力,有效缓解您的计算压力,提升业务效率与竞争力。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档