内容

1注释

静态包

基于网络的资源,例如,biomaRt,PSICQUIC,GEOquery,…

公司通过资源AnnotationHub

库(AnnotationHub)中心= AnnotationHub ()
# # snapshotDate (): 2016-11-15
中心
与43905条记录# # # # # AnnotationHub snapshotDate (): 2016-11-15 # # # $ dataprovider: BroadInstitute, UCSC的,运用,EncodeDCC, ftp://ftp.ncbi.nlm.nih.gov/gene/DATA/..。# # # $物种:智人,亩,牛,黑猩猩,鲐鱼类、鼠属norvegi……# # # $ rdataclass:农庄,BigWigFile FaFile, TwoBitFile, ChainFile, OrgDb, Inparanoid8Db data.fr…# # #额外mcols (): taxonomyid,基因组,描述,coordinate_1_based,维护者,# # # rdatadateadded, preparerclass,标签,sourceurl, sourcetype # # #检索记录,例如,对象[[“AH2”]]的# # # # # #标题AH2 | Ailuropoda_melanoleuca.ailMel1.69.dna.toplevel。fa # # AH3 | Ailuropoda_melanoleuca.ailMel1.69.dna_rm.toplevel。fa # # AH4 | Ailuropoda_melanoleuca.ailMel1.69.dna_sm.toplevel。fa # # AH5 | Ailuropoda_melanoleuca.ailMel1.69.ncrna。fa # # AH6 | Ailuropoda_melanoleuca.ailMel1.69.pep.all。fa # #……# # # # AH51083 | Pteropus_vampyrus.pteVam1.85.gtf AH51084 | Rattus_norvegicus.Rnor_6.0.85.abinitio。gtf # # AH51085 | Rattus_norvegicus.Rnor_6.0.85.chr。gtf # # AH51086 | Rattus_norvegicus.Rnor_6.0.85。gtf # # AH51087 | Saccharomyces_cerevisiae.R64-1-1.85.abinitio.gtf
查询(中心,c(“运用”、“81. gtf”))
与69条记录# # # # # AnnotationHub snapshotDate (): 2016-11-15 # # # $ dataprovider:运用# # # $物种:Ailuropoda melanoleuca, Anas platyrhynchos,安乐有害无益,阿斯蒂阿纳克斯mexicanus,…# # # # # # $ rdataclass:农庄额外mcols (): taxonomyid,基因组,描述,coordinate_1_based,维护者,# # # rdatadateadded, preparerclass,标签,sourceurl, sourcetype # # #检索记录,例如,对象[[“AH47937”]]的# # # # # #标题AH47937 | Ailuropoda_melanoleuca.ailMel1.81。gtf # # AH47938 | Anas_platyrhynchos.BGI_duck_1.0.81。gtf # # AH47939 | Anolis_carolinensis.AnoCar2.0.81。gtf # # AH47940 | Astyanax_mexicanus.AstMex102.81。gtf # # AH47941 | Bos_taurus.UMD3.1.81。gtf # #……# # AH48001 | Tupaia_belangeri.TREESHREW.81。gtf # # AH48002 | Tursiops_truncatus.turTru1.81。gtf # # AH48003 | Vicugna_pacos.vicPac1.81。gtf # # AH48004 | Xenopus_tropicalis.JGI_4.2.81。gtf # # AH48005 | Xiphophorus_maculatus.Xipmac4.4.2.81.gtf
中心[[" AH48004 "]]
# #从缓存加载“/ home / mtmorgan / / .AnnotationHub / 54310
# #使用填充seqinfo猜测工作
与581787年# #农庄对象范围和19元数据列:# # seqnames范围链|源类型分阶段# # < Rle > < IRanges > < Rle > | <因素> <因素> <数字> <整数> # # [1]GL172637.1[148] - |运用基因< NA > < NA > # # [2] GL172637.1[148] - |运用记录< NA > < NA > # # [3] GL172637.1[148] - |运用外显子< NA > < NA > # # [4] GL172637.1(606、720) - - - - - - |运用基因< NA > < NA > # # [5] GL172637.1(606、720) - - - - - - |运用记录< NA > < NA > # #………………………# # [581783]GL180121.1(865、867) + |运用start_codon < NA > 0 # # [581784] GL180121.1(992、1334) + |运用外显子< NA > < NA > # # [581785] GL180121.1(992、1334) + |运用cd < NA > 2 # # [581786] GL180121.1(1817、1835) + |运用外显子< NA > < NA > # # [581787] GL180121.1(1817、1835) + |运用cd < NA > 1 # # gene_id gene_version gene_name gene_source gene_biotype # # <人物> <数字> <人物> <人物> <人物> # # [1]ENSXETG00000030486 1 U5运用核内小rna # # [2] ENSXETG00000030486 1 U5运用核内小rna # # [3] ENSXETG00000030486 1 U5运用核内小rna # # [4] ENSXETG00000031766 1 U5运用核内小rna # # [5] ENSXETG00000031766 1 U5运用核内小rna # #………………# # [581783]ENSXETG00000033193 1 < NA >运用protein_coding # # [581784] ENSXETG00000033193 1 < NA >运用protein_coding # # [581785] ENSXETG00000033193 1 < NA >运用protein_coding # # [581786] ENSXETG00000033193 1 < NA >运用protein_coding # # [581787] ENSXETG00000033193 1 < NA >运用protein_coding # # transcript_id transcript_version transcript_name transcript_source # # <人物> <数字> <人物> <人物> # # [1]< NA > < NA > < NA > < NA > # # [2] ENSXETT00000065882 1 u5 - 201运用# # [3]ENSXETT00000065882 1 u5 - 201运用# # [4]< NA > < NA > < NA > < NA > # # [5] ENSXETT00000061796 1 u5 - 201运用# #……………# # [581783]ENSXETT00000053735 2 < NA >运用# # [581784]ENSXETT00000053735 2 < NA >运用# # [581785]ENSXETT00000053735 2 < NA >运用# # [581786]ENSXETT00000053735 2 < NA >运用# # [581787]ENSXETT00000053735 2 < NA >运用# # transcript_biotype exon_number exon_id exon_version protein_id # # <人物> <数字> <人物> <数字> <人物> # # [1]< NA > < NA > < NA > < NA > < NA > # #[2]核内小rna < NA > < NA > < NA > < NA > # #[3]核内小rna ENSXETE00000393193 1 < NA > # # [4] < NA > < NA > < NA > < NA > < NA > # #[5]核内小rna < NA > < NA > < NA > < NA > # #………………# # [581783]protein_coding 1 < NA > < NA > < NA > # # [581784] protein_coding ENSXETE00000303775 2 < NA > # # [581785] protein_coding 2 < NA > < NA > ENSXETP00000053735 # # [581786] protein_coding 3 ENSXETE00000416553 1 < NA > # # [581787] protein_coding 3 < NA > < NA > ENSXETP00000053735 # # protein_version # # <数字> # # [1]< NA > # # [2] < NA > # # [3] < NA > # # [4] < NA > # # [5] < NA > # #……# # # # [581783]< NA > [581784] < NA > # # # # [581786] [581785] 2 < NA > # # [581787] 2 # # - - - - - - - # # seqinfo: 2375年从JGI_4基因组序列;没有seqlengths

加载机构方案智人

库(org.Hs.eg.db)

使用select ()标注HNRNPC基因符号Entrez标识符和不那么正式的名字。创建一个地图符号和ENTREZID之间使用mapIds ()

选择(org.Hs.eg。db,“HNRNPC”, c (“ENTREZID”、“GENENAME”),“象征”)
# #的选择()返回1:1键和列之间的映射
# # 1 # #符号ENTREZID GENENAME HNRNPC 3183异构核核糖核蛋白C (C1、C2)
sym2eg < - mapIds (org.Hs.eg。db:“HNRNPC”、“ENTREZID”,“象征”)
# #的选择()返回1:1键和列之间的映射

负载的TxDb包UCSC hg19 knownGene轨道

库(TxDb.Hsapiens.UCSC.hg19.knownGene) txdb < - TxDb.Hsapiens.UCSC.hg19.knownGene

提取坐标的基因和基因的外显子分组HNRNPC基因。

gns < -基因(txdb) exonsBy (txdb,“基因”)[sym2eg]
# # GRangesList对象长度1:# # # # 3183美元农庄对象2 19范围和元数据列:# # seqnames范围链| exon_id exon_name # # < Rle > < IRanges > < Rle > | <整数> <人物> # # [1]chr14 (21677296、21677296) - | 184100 < NA > # # [2] chr14 (21678927、21678927) - | 184101 < NA > # # [3] chr14 (21679565、21679565) - | 184102 < NA > # # [4] chr14 (21679565、21679565) - | 184103 < NA > # # [5] chr14 (21679969、21679969) - | 184104 < NA > # #…………………# # [15]chr14 (21702237、21702237) - | 184114 < NA > # # [16] chr14 (21730760、21730760) - | 184115 < NA > # # [17] chr14 (21731470、21731470) - | 184116 < NA > # # [18] chr14 (21731826、21731826) - | 184117 < NA > # # [19] chr14 (21737457、21737457) - | 184118 < NA > # # # # - - - - - - - # # seqinfo: 93年从hg19基因组序列(1循环)

RNAseqData.HNRNPC.bam.chr14包是一个实验数据的一个例子的包。它包含的一个子集BAM文件用于基因可拆卸的实验中,所述RNAseqData.HNRNPC.bam.chr14 ?。加载包和BAM文件的路径。

库(RNAseqData.HNRNPC.bam.chr14) fls的= RNAseqData.HNRNPC.bam。chr14_BAMFILES basename (fls的)
# # ERR127306_chr14 [1]”。砰”“ERR127307_chr14。砰”“ERR127308_chr14。砰”“ERR127309_chr14。bam ERR127302_chr14 # # [5]。砰”“ERR127303_chr14。砰”“ERR127304_chr14。bam ERR127305_chr14.bam”

创建BamFileList (),基本上告诉R BAM文件的路径,而不是,说,从电子表格文本文件。

图书馆(GenomicAlignments) bfl = BamFileList (fls) bfl = bfl [[1]]

使用基因坐标查询特定基因组区域的BAM文件;看到? ScanBamParam ()其他方面的限制数据输入。

库(Rsamtools)参数< - ScanBamParam (= gns [sym2eg]) readGAlignments (bfl、参数=参数)
与5422年# # GAlignments对象对齐和0元数据列:# # seqnames链雪茄qwidth开始结束宽度njunc # # < Rle > < Rle > <人物> <整数> <整数> <整数> <整数> <整数> # # [1]chr14 + 72 72 21677347 21677418 72 0 # # [2] chr14 + 72 72 21677352 21677423 72 0 # # [3] chr14 + 72 72 21677354 21677425 72 0 # # [4] chr14 + 72 72 21677355 21677426 72 0 # # [5] chr14 + 72 72 21677373 21677444 72 0 # #………………………# # [5418]chr14 - 72 72 21737512 21737583 72 0 # # [5419] chr14 - 72 72 21737520 21737591 72 0 # # [5420] chr14 - 72 72 21737520 21737591 72 0 # # [5421] chr14 - 72 72 21737521 21737592 72 0 # # [5422] chr14 - 72 72 21737534 21737605 72 0 # # - - - - - - - # # seqinfo: 93年从一个未指明的基因组序列

加载气道实验数据的包

库(气管)数据(气管)气道
# #类:RangedSummarizedExperiment # #暗淡:64102 8 # #元数据(1):“# # # #化验(1):计数rownames (64102): ENSG00000000003 ENSG00000000005……LRG_98 LRG_99构成了rowData名称(0):# # # # colnames (8): SRR1039508 SRR1039509……SRR1039520 SRR1039521 # # colData名称(9):SampleName细胞……样本BioSample

行名称运用基因标识符。使用mapIds ()从这些基因符号映射。

symid < - mapIds (org.Hs.eg。db, rownames(气管),“象征”、“运用”)
# #的选择()返回1:许多钥匙和列之间的映射

基因符号添加到总结实验对象。

mcols (rowRanges(气管)symid < - symid美元

1.1AnnotationHub

表观基因学项目生成的全基因组地图监管标志的细胞系。

检索表从表观基因组的路线图AnnotationHub

< - AnnotationHub库(AnnotationHub)中心()
# # snapshotDate (): 2016-11-15
查询(中心,c(“表观基因组”、“元数据”))
# # # # # AnnotationHub 1记录snapshotDate(): 2016-11-15 # # #名称():AH41830 # # # $ dataprovider: BroadInstitute # # # $物种:智人# # # $ rdataclass: data.frame # # # $标题:EID_metadata。标签# # # $描述:元数据EpigenomeRoadMap项目# # # $ taxonomyid: # # # 9606基因组:hg19 # # # $ sourcetype:标签# # # $ sourceurl: http://egg2.wustl.edu/roadmap/data/byFileType/metadata/EID_metadata.tab # # # $ sourcelastmodifieddate: 2015-02-15 # # # $ sourcesize: 18035 # # #标签:c (“EpigenomeRoadMap”、“元数据”)# # #检索记录的对象[[“AH41830”]] '
元< -中心[[“AH41830”]]
# #从缓存加载“/ home / mtmorgan / / .AnnotationHub / 47270

探讨元数据来识别感兴趣的细胞系;看到也元数据电子表格的版本可用的数据项目的表观基因组路线图。

表(元美元解剖学)
# # # #肾上腺血液骨大脑乳房# # 1 27 1 13 3 # #子宫颈ESC ESC_DERIVED脂肪GI_COLON # # 1 8 9 3 3 # # GI_DUODENUM GI_ESOPHAGUS GI_INTESTINE GI_RECTUM GI_STOMACH # # 2 1 3 3 4 # #心IPSC肾肝肺# # 4 5 1 2 5 # #肌肉MUSCLE_LEG卵巢胰腺胎盘# # 7 1 1 2 2 # #皮脾STROMAL_CONNECTIVE胸腺血管# # 8 1 2 2 2
元(元美元解剖学= =“肝”,)
# #开斋节组颜色记忆STD_NAME # # 64 E066其他# 999999押尾学。ADLT肝脏# # 116 E118 ENCODE2012 LIV.HEPG2 # 000000。CNCR HepG2肝癌细胞株# # EDACC_NAME解剖类型年龄性别SOLID_LIQUID种族# # 64 Adult_Liver肝脏PrimaryTissue未知混合固体未知# # 116 HepG2_Hepatocellular_Carcinoma肝脏CellLine男# # SINGLEDONOR_COMPOSITE # # 64 C # # 116 SD

使用“开斋节”查询和检索总结染色质状态的“记忆”文件

查询(中心,c (“E118”、“记忆”))
# # # # # AnnotationHub 1记录snapshotDate(): 2016-11-15 # # #名称():AH46971 # # # $ dataprovider: BroadInstitute # # # $物种:智人# # # $ rdataclass:农庄# # # $标题:E118_15_coreMarks_mnemonics.bed。广州# # # $描述:15染色质状态分割从EpigenomeRoadMap项目# # # $ taxonomyid: # # # 9606基因组:hg19 # # # $ sourcetype:床# # # $ sourceurl: http://egg2.wustl.edu/roadmap/data/byFileType/chromhmmSegmentations/ChmmModels/cor..。# # # $ sourcelastmodifieddate: 2013-10-11 # # # $ sourcesize: 3231313 # # # $标签:c (“EpigenomeRoadMap”、“chromhmmSegmentations”,“ChmmModels”、“coreMarks”, # # #“E118”、“ENCODE2012”、“LIV.HEPG2。CNCR”、“HepG2肝癌细胞株”)# # #检索记录的对象[[“AH46971”]] '
E118 < -中心[[“AH46971”]]
# #从缓存加载“/ home / mtmorgan / / .AnnotationHub / 52411
E118
与561497范围和4 # #农庄对象元数据列:# # seqnames范围链|简写的名称# # < Rle > < IRanges > < Rle > | <人物> <人物> # # [1]chr10 [113200] * | 15 _quies静止/低# # [2]chr10 (113201、119600) * | 14 _reprpcwk弱压抑PolyComb # # [3] chr10 (119601、120000) * | 10 _tssbiv二价/准备TSS # # [4] chr10 (120001、120200) * | 1 _tssa活跃TSS # # [5] chr10 (120201、120400) * | 2 _tssaflnk侧翼活跃TSS # #…………………# # [561493]chrY (58907201、58907201) * | # # 15 _quies静止/低[561494]chrY (58967401、58967401) * | 9 _het异染色质# # [561495]chrY (58972001、58972001) * | 8 _znf / rpt ZNF基因& # #重复[561496]chrY (58997401、58997401) * | 9 _het异染色质# # [561497]chrY (59033601、59033601) * | 15 _quies静止/低# # color_name color_code # # <人物> <人物> # #[1]白色# FFFFFF # # [2] Gainsboro # C0C0C0 # # [3] IndianRed # CD5C5C # #红# FF0000 # #[4][5]橙红色# FF4500 # #………# #[561493]白色# FFFFFF # #[561494]苍白的宝石绿# 8 a91d0 # #[561495]中浅绿色# 66 cdaa # #[561496]苍白的宝石绿# 8 a91d0 # #[561497]白色# FFFFFF # # - - - - - - - # # seqinfo: 93年从hg19基因组序列(1循环)

探索的对象,例如,制表的不同分类(染色质状态的名字列)。对象返回子集,例如,只是这些区域标记为异染色质的

表(E118美元名称)
# # # #活跃TSS二价增强剂二价/准备TSS # # 20010 23155 13214 # #增强剂侧翼活跃TSS侧翼二价TSS /掺# # 110260 45115 15844 # #基因的增强子异染色质静止/低# # 14995 31193 61759 # #压抑PolyComb转录Transcr强劲。在基因5’和3’# # 44013 32522 2515 # #弱压抑PolyComb弱ZNF基因转录和重复# # 60867 83738 2297
E118 [E118 $名称% %“异染色质”)
与31193范围和4 # #农庄对象元数据列:# # seqnames范围链|简写的名称color_name # # < Rle > < IRanges > < Rle > | <人物> <人物> <人物> # # [1]chr10 (140201、143800) * | 9 _het异染色质苍白的宝石绿# # [2]chr10 (806201、807800) * | 9 _het异染色质苍白的宝石绿# # [3]chr10 (842001、843800) * | 9 _het异染色质苍白的宝石绿# # [4]chr10 (1024601、1024601) * | 9 _het异染色质苍白的宝石绿# # [5]chr10 (1191601、1191601) * | 9 _het异染色质苍白的宝石绿# #……………………# # [31189]chrY (58883001、58883001) * | 9 _het异染色质苍白的宝石绿# # [31190]chrY (58890001、58890001) * | 9 _het异染色质苍白的宝石绿# # [31191]chrY (58906401、58906401) * | 9 _het异染色质苍白的宝石绿# # [31192]chrY (58967401、58967401) * | 9 _het异染色质苍白的宝石绿# # [31193]chrY (58997401、58997401) * | 9 _het异染色质苍白的宝石绿# # color_code # # <人物> # 8 a91d0 # # # # [1] [2] # 8 a91d0 # 8 a91d0 # # # # [3] [4] # 8 8 a91d0 a91d0 # # [5] # # #……# 8 a91d0 # # # # [31189] [31190] # 8 a91d0 # 8 a91d0 # # # # [31191] [31192] # 8 a91d0 # # [31193] # 8 a91d0 # # - - - - - - - # # seqinfo: 93年从hg19基因组序列(1循环)

你能使用TxDb包和基因()subsetByOverlaps ()异色的功能,确定有多少基因重叠,或基因最近的()每个增强器?

1.2biomaRt

参观biomart网站并找出如何浏览数据检索,例如,基因chromosmes 21和22。你需要浏览到运用集市,人类spaiens数据集,建立染色体21和22的过滤器,然后指定你想运用基因返回id属性。

现在做同样的过程biomaRt:

库(biomaRt)头(listMarts(), 3) # #集市列表头(listDatasets (useMart(“运用”)),3)运用< - # # # #集市数据集完全指定的集市useMart(“运用”,数据集=“hsapiens_gene_ensembl”)负责人(listFilters(运用),3)# #过滤器myFilter < -“chromosome_name substr (filterOptions (myFilter运用),1,50)# #返回值myvalue < - c(“21”、“22”)头(listAttributes(运用),3)# #属性myAttributes < - c (“ensembl_gene_id”、“chromosome_name”) # #组装和查询集市res < - getBM(属性= myAttributes过滤器= myFilter值= myvalue集市=运用)

2沟通的结果

2.1可视化

2.2减价

2.3交互式应用程序:闪亮的

3性能和大数据

3.1非常高效。R代码

本节的目的是为了突出实践写正确,健壮和高效的代码。

3.1.1优先级

  1. 正确的:符合手工制成的例子(相同的(),all.equal ())
  2. 健壮的:支持现实的输入,例如,0-length向量,NA值,…
  3. 简单:下个月容易理解;一个同事容易描述它;容易发现逻辑错误;容易提高。
  4. 快,或者至少是合理的考虑到现代计算机的速度。

3.1.2策略

  1. 配置文件
    • 在一般条款的脚本了解它是什么做的。
    • 一步通过执行代码,看看它,并了解每一行的速度。
    • 时间评估选择行或简单的代码块system.time ()或者是微基准测试包中。
    • 配置文件代码的工具,显示多少时间花在每个函数调用或线——内置的Rprof ()函数,或包等lineproforgydF4y2Baaprof
  2. Vectorize——操作向量,而不是显式循环

    x < - 1:10日志(x) # #不是(我在seq_along (x)) x[我]< -日志(x[我])
    # # [1]0.0000000 0.6931472 1.0986123 1.3862944 1.6094379 1.7917595 1.9459101 2.0794415 2.1972246 2.3025851 # # [10]
  3. 预先分配内存,然后填写结果

    结果< -数字(10)结果[1]< - runif(1)(我在2:长度(结果)结果[我]< - runif结果(1)*(- 1)的结果
    # # 3.441333 [1]e-01 6.069639 e-02 2.268026 e-02 1.419491 4.268918 1.242687 1.792039 e 03 e-04 e-04 e-05 # # [8] 4.236969 e-05 4.437225 e-06 3.167490 e-07
  4. 提升公共子表达式之外的重复计算,子表达式只计算一次
    • 简单,例如,“葫芦”不断的乘法循环
    • 更高级的,例如,使用lm.fit ()而不是反复拟合相同的设计矩阵。
  5. 重用现有的测试代码

3.1.3案例研究:预先分配和vectorize

这里有一个明显的低效率的函数:

f0 < -函数(n = 2) {# # stopifnot (is.integer (n) & &(长度(n) = = 1) & & # # ! is.na (n) & & (n > 0))结果< -数字()(我在seq_len (n))结果[[我]]< - *日志(i)结果}

使用system.time ()研究该算法如何尺度n,关注时间。

system.time (f0 (10000))
用户系统运行# # # # 0.116 0.000 0.114
n < - 1000 * seq(2) 1, 20日t < -酸式焦磷酸钠(n,函数(i) system.time (f0(我)[[3]])情节(t ~ n、类型=“b”)

记住当前的“正确”值,一个大致时间

n < - 10000系统。预计时间(< - f0 (n))
用户系统运行# # # # 0.112 0.000 0.112
(预计)
# # [1]0.000000 1.386294 2.197225 2.772589 3.218876 3.583519

修改函数起重机通用乘法器,一个的循环。确保“优化”的结果和原始的计算都是相同的。使用微基准测试包比较两个版本

f1 < -函数(n = 2){结果< -数字()(我在seq_len (n))结果[[我]]< -日志(i)} *结果相同的(预期,f1 (n))
# # [1]
库(微基准测试)微基准测试(f0 (n), f1 (n),时间= 5)
# # # #单位:毫秒expr最小lq意味着平均uq最大neval cld # # f0 (n) 101.6763 141.9907 134.4311 142.1036 142.8454 143.5394 5 # # f1 (n) 102.2081 141.9909 134.3802 142.3994 142.5739 142.7289 - 5

采用“预先分配和填补”策略

f2 < -函数(n = 2){结果< -数字(n)(我在seq_len (n))结果[[我]]< -日志(i)} *结果相同的(预期,f2 (n))
# # [1]
微基准测试(f0 (n), f2 (n),时间= 5)
# # # #单位:毫秒expr最小lq意味着平均uq最大neval cld # # f0 (n) 104.145114 142.395721 135.414263 142.434957 143.815981 144.279540 5 b # # f2 (n) 6.604505 6.707636 6.862423 6.908245 6.950165 7.141563 - 5

使用一个*应用()函数来避免显式地预先分配,使机会向量化更加明显。

f3 < -函数(n = 2) *酸式焦磷酸钠(seq_len (n),日志)相同(预期,f3 (n))
# # [1]
微基准测试(f0 (n), f2 (n), f3 (n),时间= 10)
# # # #单位:毫秒expr最小lq意味着平均uq最大neval cld # # f0 (n) 101.765217 141.698686 181.256096 142.881494 145.519752 565.655864 10 b # # f2 (n) 6.476120 6.575258 7.189349 6.704238 7.097990 9.449406 10 # # f3 (n) 2.975692 3.113096 3.342878 3.305314 3.562432 3.828177 10

现在提出了一行代码,显然,它可以很容易地向量化。抓住机遇:进行向量化

f4 < -函数(n = 2) *日志(seq_len (n))相同(预期,f4 (n))
# # [1]
微基准测试(f0 (n), f3 (n), f4 (n),时间= 10)
# # # #单元:微秒expr最小lq意味着平均uq最大neval cld # # f0 (n) 99705.017 102091.968 129560.0144 141659.351 142267.701 142727.076 10 b # # f3 (n) 3000.622 3148.994 7250.2057 3218.886 3305.377 43790.584 10 # # f4 (n) 205.374 209.281 228.5647 229.648 246.669 259.864 10

f4 ()肯定似乎是赢家。它规模如何n吗?(重复几次)

n < - 10 ^ (8) # 100 x大于f0 t < -酸式焦磷酸钠(n,函数(i) system.time (f4 (i))[[3]])情节(t ~ n, log =“xy”类型=“b”)

有不同的反应模式的解释吗?

经验教训:

  1. Vectorizing提供了一个巨大的进步在迭代
  2. Pre-allocate-and-fill需要显式迭代时很有帮助。
  3. *应用()功能帮助避免需要明确的预先分配,使机会向量化更加明显。这可能会在一个小的性能成本,但通常是值得的
  4. 提升公共子表达式可以有利于提高性能时显式迭代是必需的。

3.2平行的评价

当数据装入内存太大,我们可以遍历文件块或子集的数据字段或基因组的位置。

迭代

限制

平行进行

BiocParallel提供一个标准化接口简单并行评估。包构建提供了访问多核功能的平行包以及BatchJobs为集群运行工作。

一般的想法:

3.2.1之上练习:睡觉串行和并行

这个小示例激励使用并行执行和展示了bplapply ()可以减少吗拉普兰人

使用system.time ()探索这需要多长时间执行n增加从1到10。使用相同的()微基准测试比较选择f0 ()f1 ()正确性和性能。

有趣的睡了1秒,然后回报

图书馆(BiocParallel)有趣的< -函数(i) {Sys.sleep(1)我}# #系列f0 < -函数(n)拉普兰人(seq_len (n),有趣)# #平行f1 < -函数(n) bplapply (seq_len (n),有趣)