使用大数据

马丁摩根
2015年2月3日

可扩展计算

  1. 高效的R.代码
  2. 迭代
  3. 限制
  4. 采样
  5. 并行评估

并行评估生物体

实验室

高效代码

将以下内容作为函数写入。用系统时间()探索这需要多长时间执行N从100到10000增加。使用完全相同的()Microbenchmark.比较替代方案F1()F2(), 和F3()对于这三种不同功能的正确性和性能。这些功能使用哪些策略?

f0 < - 函数(n){##效率低下!ANS < -  numeric()for(i在seq_len(n))ANS < -  C(ANS,EXP(I))ANS} F1 <函数(n){ANS < -  numeric(n)for(i在seq_len(n))ANS [[i]] < -  exp(i)ans} f2 <函数(n)sapply(seq_len(n),exp)f3 <函数(n)exp(seq_len(n))

平行睡觉

去睡觉1秒钟,然后返回一世。这需要8秒钟。

图书馆(Biocparallel)有趣< - 函数(i){sys.sleep(1)i} ##串行f0 < - 函数(n)lapply(seq_len(n),fun)##并行f1 < -  function(n)bppppply(SEQ_LEN(N),乐趣)

计数重叠 - 我们自己的版本

感兴趣的区域,像BAM文件中的染色体命名。

库(TXDB.HSAPIENS.CUCSC.HG19.KNOKNOKNGENE)EXBYTX < -  EXONSBIENS.UCSC.HG19.KNOKNGENE,“TX”)MAP0 < -  READ.DELIM(“〜/ IGV / GENOMES / HG19_ALIAS.TAB”,标题= false,stringsasfactors = false)地图< -  setNames(map0 $ v1,map0 $ v2)seqlevels(exbytx,force = true)< - 地图

通过BAM文件迭代的函数

count1 < - 函数(文件名,ROI){##创建和打开BAM文件BF < -  BAMFILE(FILENAME,ExuctionSize = 1000000)打开(BF)##初始化变量n < -  0#读取的读数< - 整数(长度(ROI))#读取的读数重叠ROI名称(计数)< - 名称(ROI)##读取和数量的数据,直到完成重复{##输入ALN < -  Readgalignments(BF)#输入下一块if(长度(aln)== 0)#停止条件中断n < -  n +长度(aln)#我们如何做?消息(n)##重叠OLAP < -  sopeoverlaps(ALN,ROI,Type =“内部”,Ignore.Strand = True)Count < -  Count + Tabulate(主题(OLAP),主管长度(OLAP))} ##完成和返回结果关闭(bf)计数}

一种提升:基因组夫妇:: dreambyyield()替换重复 {}部分

suppresspackagestartupmessages({libraryfiricfiles)})##如何输入数据产量的下一个块< - 函数(x,...)readgalignments(x)} ##到每个块映射到哪些块映射< - 函数(值,......,ROI){OLAPS < -  sopeoverlaps(值,ROI,Type =“内部”,Ignore.Strand = True)表格(主题(OLAP),主管长度(OLAP))} ##如何组合映射的块减少<- `+`reamenByyield(BF,产量,地图,减少,ROI = ROI)

在行动中

filename < - “〜/ bam / srr1039508_sorted.bam”count < -  count1(filename,exbytx)

并行化

库(生物竞争)##所有BAM文件文件名< -  dir(“〜/ bam”,pattern =“bam $”,full = true)名称(文件名)< - 子(“_ sorted.bam”,“”,basename(文件名))##迭代计数< -  BPLAPPLY(FILENAMES,COUNT1,EXBYTX)计数< -  simpleify2ARRAY(计数)头(计数)

资源