内容

1生物学

基因表达

RNA-seq

单细胞技术

2大数据

2.1做什么,怎么做

是什么?

  • 不符合内存
  • 计算处理成本高

常见用例

  • 在这堆干草堆里,我的针在哪里
  • 处理——例如,简化为汇总统计

2.2策略

查询

  • 例如,数据库

处理

  • 迭代&块
  • 分布式/并行

3.现实:对象

3.1对象

我们将设置一些数据来使用(不要注意这个!)

dir <- tempdir() if (!dir.exists(dir)) dir.create(dir)库(气道)数据(气道)write.table(colData(气道),文件。路径(dir, "samples.csv")) write.table(化验(气道),文件。路径(dir,“expression.csv”))

相关数据元素

<- read.table(file. table)路径(dir, "samples.csv"))样本
## SampleName cell dex albut Run avgLength实验## SRR1039508 GSM1275862 N61311 untrt untrt SRR1039509 GSM1275863 N61311 trt untrt SRR1039509 126 SRX384346 ## SRR1039512 GSM1275866 N052611 trt untrt SRR1039512 126 SRX384349 ## SRR1039513 GSM1275867 N052611 trt untrt SRR1039513 # SRR1039516 GSM1275870 N080611 trt untrt SRR1039516 # SRR1039517 GSM1275871 N080611 trt untrt SRR1039517 126 srx1039554 ## SRR1039517## SRR1039508 SRS508568 SAMN02422669 ## SRR1039509 SRS508567 SAMN02422675 ## SRR1039512 SRS508571 SAMN02422678 ## SRR1039513 SRS508572 SAMN02422682 ## SRR1039517 SRS508575 SAMN02422673 ## SRR1039520 SRS508579 SAMN02422683 ## SRR1039521 SRS508580 SAMN02422677
计数<- read.table(file. table)路径(dir, "expression.csv"))
# # # # SRR1039508 SRR1039509 SRR1039512 SRR1039513 SRR1039516 ENSG00000000003 679 448 873 408 1138 # # ENSG00000000005 0 0 0 0 0 # # ENSG00000000419 467 515 621 365 587 260 211 263 164 245 # # ENSG00000000457 60 55 40 35 78 # # # # ENSG00000000460 ENSG00000000938 0 0 2 0 1 # # SRR1039517 SRR1039520 SRR1039521 # # # # ENSG00000000005 ENSG00000000003 1047 770 572 0 0 0 # # ENSG00000000419 799 417 508 331 233 229 # # ENSG00000000457 60 # # # # ENSG00000000460 63 76 ENSG00000000938 0 0 0
Counts <- as.matrix(Counts)

协调数据管理

  • 分开管理的样品而且计数是否容易出错,例如子集样品但不是计数,中断了样本行与计数列的关联。
库(SummarizedExperiment) SummarizedExperiment ()
##类:summarizeexperiments ## dim: 0 0 ##元数据(0):## assays(0): ## rownames: NULL ## rowData names(0): ## colnames: NULL ## colData names(0):

一个“S4”对象,用于用行和列注释协调“分析”矩阵

se <- summarizeexperiment (assays = list(counts = counts), colData = samples) se
##类:summarizeexperiment ## dim: 64102 8 ##元数据(0):## assays(1):计数## rownames(64102): ENSG00000000003 ENSG00000000005…LRG_98 LRG_99 ## rowData names(0): ## colnames(8): SRR1039508 SRR1039509…SRR1039520 SRR1039521 ## colData names(9): SampleName cell…样本BioSample

类允许开发人员简化数据访问

  • 例如,类似矩阵的“界面”
  • 访问器,因此可以选择内部表示来提高效率,同时用户界面仍然易于使用
se美元敏捷
## [1] untrt trt untrt trt untrt trt trt untrt trt ##级别:trt untrt
Se [, Se $dex == "trt"]
##类:summarizeexperiment ## dim: 64102 4 ##元数据(0):## assays(1):计数## rownames(64102): ENSG00000000003 ENSG00000000005…LRG_98 LRG_99 ## rowData names(0): ## colnames(4): SRR1039509 SRR1039513 SRR1039517 SRR1039521 ## colData names(9): SampleName cell…样本BioSample

数据操作,例如,非零行

idx <- rowsum(化验(se)) > 0 se[idx,]
##类:summarizeexperiment ## dim: 33469 8 ##元数据(0):## assays(1):计数## rownames(33469): ENSG00000000003 ENSG00000000419…ENSG00000273492 ## ENSG00000273493 ## rowData names(0): ## colnames(8): SRR1039508 SRR1039509…SRR1039520 SRR1039521 ## colData names(9): SampleName cell…样本BioSample

简单的可视化

dotchart(colsum(化验(se)), xlab = "库大小")

expr <- rowsum(化验(se)) plot(密度(log(expr[expr > 0])), ylab = "log表达式")

4整洁的数据和整洁的世界

不是“更好”,而是不同

基本R和形式对象方面的挑战

“整洁”分析

库(dplyr)库(宠物猫)

管,% > %

数据表示

自同态:一进一出

Cars <- rownames_to_column(mtcars, "make") %>% as_tibble() Cars %>% filter(cyl >= 6)
# # #一个宠物猫:21 x 12 # #让mpg共青团disp惠普见鬼wt qsec vs是齿轮碳水化合物# # <空空的> <双> <双> <双> <双> <双> <双> <双> <双> <双> <双> <双> # # 1马自达6 R…21 160 110 3.9 2.62 16.5 0 1 4 4 # # 2马自达6 R…21 160 110 3.9 2.88 17.0 21.4 0 1 4 4 # # 3大黄蜂…6 258 110 3.08 3.22 19.4 1 0 3 1 # # 4大黄蜂…18.7 8 360 175 3.15 3.44 17.0 0 0 3 2 # # 5的18.1 6 225 105 2.76 3.46 20.2 14.3 1 0 3 1 # # 6掸子…8 360 245 3.21 3.57 15.8 0 0 3 4 # # 7芝加哥商业交易所280 19.2 168人。123 3.92 3.44 18.3 1 0 44 ## 8 Merc 28…17.8 6 168。123 3.92 3.44 18.9 1 0 44 ## 9 Merc 45…16.4 8 276。180 3.07 4.07 17.4 0 0 3 3 ## 10 Merc 45…17.3 8 276。180 3.07 3.73 17.6 0 0 3 3 ## #
select(make, mpg, cyl, disp)
## A tibble: 32 x 4 ## make mpg cyl disp ##     ## 1马自达RX4 21 6 160 ## 2马自达RX4 Wag 21 6 160 ## 3 Datsun 710 22.8 4 108 ## 4大黄蜂4 Drive 21.4 6 258 ## 5大黄蜂Sportabout 18.7 8 360 ## 6 Valiant 18.1 6 225 ## 7 Duster 360 14.3 8 360 ## 8 Merc 240D 24.4 4 147。Merc 230 22.8 4 141。默克280 19.2 6 168。还有22行

通常情况下,与“tidyverse”中的其他包配合良好

库(ggplot2)
汽车%>% ggplot(aes(x = factor(cyl), y = mpg)) + geom_boxplot()

5数据库

5.1数据库表示

创建一个sqlite数据库

airway_db <- file. library(RSQLite)path(dir, "air . SQLite ") con <- dbConnect(SQLite(), airway_db)

添加示例表

sample <- tibble::rownames_to_column(as.data.frame(colData(se)), var="Accession") dbWriteTable(con, "sample", sample)

以“整洁”的形式添加一个计数表

count <- shape::melt(化验(se), c("Feature", "Accession")) colnames(count)[3] = "count" dbWriteTable(con, "count", count)

使用SQL语句提取数据

dbListTables (con)
##[1]“计数”“样本”
dbGetQuery(con, "SELECT * FROM Sample;")
2 SRR1039509 GSM1275863 N61311 trt untrt SRR1039509 126 SRX384346 ## 3 SRR1039512 GSM1275866 N052611 trt untrt SRR1039512 126 SRX384349 ## 4 SRR1039513 GSM1275867 N052611 trt untrt SRR1039513 87 SRX384350 ## 5 SRR1039516 GSM1275870 N080611 trt t untrt SRR1039516 126 SRX384354 ## 7SRR1039520 GSM1275874 N061011 untrt untrt SRR1039520 101 SRX384357 ## 8 SRR1039521 GSM1275875 N061011 trt untrt SRR1039521 98 SRX384358 ##样本生物样本## 1 SRS508568 SAMN02422669 ## 2 SRS508567 SAMN02422675 ## 3 SRS508571 SAMN02422678 ## 4 SRS508572 SAMN02422670 ## 5 SRS508575 SAMN02422682 ## 6 SRS508576 SAMN02422673 ## 7 SRS508579 SAMN02422683 ## 8 SRS508580 SAMN02422677
dbGetQuery(con, "SELECT access, cell, dex FROM Sample;")
##接入单元编号## 1 SRR1039508 N61311不支持2 SRR1039509 N61311不支持3 SRR1039512 N052611不支持4 SRR1039513 N052611不支持5 SRR1039516 N080611不支持6 SRR1039517 N080611不支持7 SRR1039520 N061011不支持8 SRR1039521 N061011不支持
dbGetQuery(con, "SELECT * FROM Count LIMIT 3;)
##特性接入计数## 1 ENSG00000000003 SRR1039508 679 ## 2 ENSG00000000005 SRR1039508 0 ## 3 ENSG00000000419 SRR1039508 467
dbDisconnect (con)

5.2dbplyr

开放数据库

Library (dplyr) Library (dbplyr) SRC <- src_sqlite(airway_db) SRC
## src: sqlite 3.22.0 [/private/var/folders/yn/gmsh_22s2c55v816r6d51fx1tnyl61/T/RtmpLt7lbb/airway.]Sqlite] ## tbls:计数,样本

对“样本”表的操作-标准动词,加上收集()

台(src,“样本”)
## #来源:表<样本> [??## #数据库:sqlite 3.22.0 ## # [/private/var/folders/yn/gmsh_22s2c55v816r6d51fx1tnyl61/T/RtmpLt7lbb/airway。##添加SampleName cell dex albut运行avgLength实验样本##         ## 1 SRR10395…GSM1275863 N613…trt untrt SRR1…126 SRX384346 SRR1…## 3 SRR10395…GSM1275866 N052…trt untrt SRR1…87 SRX384350 SRR1…## 5 SRR10395…GSM1275867 N052…GSM1275871 N080… trt untrt SRR1… 126 SRX384354 SRS50… ## 7 SRR10395… GSM1275874 N061… untrt untrt SRR1… 101 SRX384357 SRS50… ## 8 SRR10395… GSM1275875 N061… trt untrt SRR1… 98 SRX384358 SRS50… ## # … with 1 more variable: BioSample 
tbl(src, "Sample") %>% select(access, cell, dex)
## #源:惰性查询[?? ?## #数据库:sqlite 3.22.0 ## # [/private/var/folders/yn/gmsh_22s2c55v816r6d51fx1tnyl61/T/RtmpLt7lbb/airway。1 SRR1039508 N61311 trt ## 2 SRR1039509 N61311 trt ## 3 SRR1039513 N052611 trt ## 5 SRR1039516 N080611 trt ## 6 SRR1039517 N080611 trt ## 7 SRR1039520 N061011 trt ## 8 SRR1039521 N061011 trt ##
台(src,“样本”)% > %过滤器(敏捷= =“泰爱泰党”)% > %收集()
## # A tibble: 4 x 10 ## Accession SampleName cell dex albut Run avgLength Experiment Sample ##        …trt untrt SRR1…126 srx3843t SRR1…## 2 SRR10395…GSM1275867 N052…trt untrt SRR1…## 3 SRR10395…GSM1275871 N080…trt untrt SRR1…## 4 SRR10395…GSM1275875 N061…trt untrt SRR1

计数表上的操作

台(src,“数”)
## #来源:表<计数> [??## #数据库:sqlite 3.22.0 ## # [/private/var/folders/yn/gmsh_22s2c55v816r6d51fx1tnyl61/T/RtmpLt7lbb/airway。sqlite) # #功能加入数# # <空空的> <空空的> < int > # # 1 ENSG00000000003 SRR1039508 679 # # 2 ENSG00000000005 SRR1039508 0 # # 3 ENSG00000000419 SRR1039508 467 # # 4 ENSG00000000457 SRR1039508 260 # # 5 ENSG00000000460 SRR1039508 60 # # 6 ENSG00000000938 SRR1039508 0 # # 7 ENSG00000000971 SRR1039508 3251 # # 8 ENSG00000001036 SRR1039508 1433 # # 9 ENSG00000001084 SRR1039508 519 # # 10 ENSG00000001167 SRR1039508 394  ## # ... 有更多的行
tbl(src, "Count") %>% group_by(Accession) %>% summary (library_size = SUM(Count)) %>% collect()
## # 1 SRR1039508 20637971 ## 2 SRR1039509 18809481 ## 3 SRR1039512 25348649 ## 4 SRR1039513 15163415 ## 5 SRR1039516 24448408 ## 6 SRR1039517 30818215 ## 7 SRR1039520 19126151 ## 8 SRR1039521 21164133

表间关系

left_join(tbl(src, "Count"), tbl(src, "Sample"))
##加入,by = "Accession"
## #源:惰性查询[?? ?## #数据库:sqlite 3.22.0 ## # [/private/var/folders/yn/gmsh_22s2c55v816r6d51fx1tnyl61/T/RtmpLt7lbb/airway。sqlite) # #功能加入细胞计数SampleName敏捷albut运行avgLength # # <空空的> <空空的> < int > <空空的> <空空的> <空空的> <空空的> <空空的> < int > # # 1 ENSG00 SRR10395…679年GSM1275862 N613…untrt untrt SRR1…126 # # 2 ENSG00…SRR10395…0 GSM1275862 N613…untrt untrt SRR1…126 # # 3 ENSG00…SRR10395…467年GSM1275862 N613…untrt untrt SRR1…126 # # 4 ENSG00…SRR10395…260年GSM1275862 N613…untrt untrt SRR1…126 # # 5 ENSG00…SRR10395…60 GSM1275862 N613…untrt untrt SRR1…126 # # 6 ENSG00…SRR10395…0 GSM1275862 N613……untrt untrt SRR1… 126 ## 7 ENSG00… SRR10395… 3251 GSM1275862 N613… untrt untrt SRR1… 126 ## 8 ENSG00… SRR10395… 1433 GSM1275862 N613… untrt untrt SRR1… 126 ## 9 ENSG00… SRR10395… 519 GSM1275862 N613… untrt untrt SRR1… 126 ## 10 ENSG00… SRR10395… 394 GSM1275862 N613… untrt untrt SRR1… 126 ## # … with more rows, and 3 more variables: Experiment , Sample , ## # BioSample 
left_join(tbl(src, "Count"), tbl(src, "Sample") %>% select(access, cell, dex))
##加入,by = "Accession"
## #源:惰性查询[?? ?## #数据库:sqlite 3.22.0 ## # [/private/var/folders/yn/gmsh_22s2c55v816r6d51fx1tnyl61/T/RtmpLt7lbb/airway。sqlite) # #功能加入计数细胞敏捷# # <空空的> <空空的> < int > <空空的> < >从而向# # 1 ENSG00000000003 SRR1039508 679 N61311 untrt # # 2 ENSG00000000005 SRR1039508 0 N61311 untrt # # 3 ENSG00000000419 SRR1039508 467 N61311 untrt # # 4 ENSG00000000457 SRR1039508 260 N61311 untrt # # 5 ENSG00000000460 SRR1039508 60 N61311 untrt # # 6 ENSG00000000938 SRR1039508 0 N61311 untrt # # 7 ENSG00000000971 SRR1039508 3251 N61311 untrt # # 8 ENSG00000001036 SRR1039508 1433 N61311 untrt # # 9 ENSG00000001084 SRR1039508519 N61311 untrt ## 10 ENSG00000001167 SRR1039508 394 N61311 untrt ## #

图书馆的规模

  • 查找列(加入)计数

    tbl(src, "Count") %>% group_by(Accession) %>% summary (library_size = SUM(Count))
    ## #源:惰性查询[?? ?## #数据库:sqlite 3.22.0 ## # [/private/var/folders/yn/gmsh_22s2c55v816r6d51fx1tnyl61/T/RtmpLt7lbb/airway。##接入library_size ##   ## 1 SRR1039508 20637971 ## 2 SRR1039509 18809481 ## 3 SRR1039512 25348649 ## 4 SRR1039513 15163415 ## 5 SRR1039516 24448408 ## 6 SRR1039517 30818215 ## 7 SRR1039520 19126151 ## 8 SRR1039521 21164133

过滤非零计数的行

  • 具有非零计数的行

    keep <- tbl(src, "Count") %>% group_by(Feature) %>% summary (row_sum = SUM(Count)) %>% filter(row_sum > 0) %>% select(Feature)
  • left_join ()只保留这些行

    left_join(keep, tbl(src, "Count"))
    ##加入,by = "Feature"
    ## #源:惰性查询[?? ?## #数据库:sqlite 3.22.0 ## # [/private/var/folders/yn/gmsh_22s2c55v816r6d51fx1tnyl61/T/RtmpLt7lbb/airway。sqlite) # #功能加入数# # <空空的> <空空的> < int > # # 1 ENSG00000000003 SRR1039508 679 # # 2 ENSG00000000003 SRR1039509 448 # # 3 ENSG00000000003 SRR1039512 873 # # 4 ENSG00000000003 SRR1039513 408 # # 5 ENSG00000000003 SRR1039516 1138 # # 6 ENSG00000000003 SRR1039517 1047 # # 7 ENSG00000000003 SRR1039520 770 # # 8 ENSG00000000003 SRR1039521 572 # # 9 ENSG00000000419 SRR1039508 467 # # 10 ENSG00000000419 SRR1039509 515  ## # ... 有更多的行

5.3旁白:SRAdb

library(BiocFileCache) if (nrow(bfcquery(query="SRAdb", field =" rname")) == 0L) {fl <- SRAdb::getSRAdbFile(tempdir())) bfcadd(rname ="SRAdb", fpath = fl, action =" move")}
fl <- BiocFileCache::bfcrpath(rnames = "SRAdb") src <- src_sqlite(fl) tbl(src, "study") tbl(src, "study") %>% filter(study_title %like% "%ovarian%")

6其他磁盘上或远程表示形式

数据库适用于“关系”数据。

科学数据的“大”部分通常是不相关的

数据库和科学数据的访问模式往往不同。

处理数据的策略:遍历文件

6.1hdf5

库(rhdf5)

快速的“按块”访问

6.2TENxBrainData

tenx <- TENxBrainData()

幻想……

Log (1 + assay(tenx))
## <27998 x 1306127> DelayedMatrix对象类型为“double”:## aaacctgagataggag1…Tttgtcatctgaaaga-133 ##[1,] 0。0 ##[2,] 0。0 ##[3,] 0。0 ##[4,] 0。0 ##[5,] 0。0 ## ... ...##[27994,] 0.0000000。0 ##[27995,] 0.6931472。0 ##[27996,] 0.0000000。 0 ## [27997,] 0.0000000 . 0 ## [27998,] 0.0000000 . 0

子集

tenx_子集<- tenx[, sample(ncol(tenx), 200)] count <- as.matrix(化验(tenx_子集))dotchart(unname(colsum (count)), xlab = "库大小")

(1 + rowsum (count)))

实际上,块数据处理是透明的

dotchart(unname(colsum(化验(tenx_子集))),xlab = "库大小")

6.3restfulSE

7结束问题

7.1确认

这项工作的一部分得到了陈-扎克伯格倡议DAF的支持,这是硅谷社区基金会的一个顾问基金。

本报告中报告的研究由NHGRI和国立卫生研究院的NCI支持,资助编号为U41HG004059、U24CA180996和U24CA232979。内容仅为作者的责任,并不一定代表美国国立卫生研究院的官方观点。

这项工作是代表SOUND联盟进行的,由欧盟H2020个性化健康和护理计划资助,行动合同号为633974。

会话信息

## R版本3.6.0 alpha (2019-04-03 r76311) ##平台:x86_64-apple-darwin17.7.0(64位)##运行在macOS High Sierra 10.13.6 ## ##矩阵产品:默认## BLAS: /Users/ma38727/bin/R-3-6-branch/lib/libRblas。/Users/ma38727/bin/R-3-6-branch/lib/libRlapack。dylib # # # #语言环境:# # [1]en_US.UTF-8 / en_US.UTF-8 en_US.UTF-8 / C / en_US.UTF-8 / en_US。UTF-8 ## ##附加的基本包:##[1]并行stats4统计图形grDevices utils数据集##[8]方法基础## ##其他附加包:# # # # [1] TENxBrainData_1.3.0 HDF5Array_1.11.11 [3] SingleCellExperiment_1.5.2 rhdf5_2.27.15 # # [5] dbplyr_1.3.0 RSQLite_2.1.1 # # [7] ggplot2_3.1.1 tibble_2.1.1 # # [9] dplyr_0.8.0.1 airway_1.3.0 # # [11] SummarizedExperiment_1.13.0 DelayedArray_0.9.9 # # [13] BiocParallel_1.17.18 matrixStats_0.54.0 # # [15] Biobase_2.43.1 GenomicRanges_1.35.1 # # [17] GenomeInfoDb_1.19.3 IRanges_2.17.4 # # [19] S4Vectors_0.21.22 BiocGenerics_0.29.2 # # [21] BiocStyle_2.11.0 # # # #加载(而不是通过一个名称空间附):# # # # [1] httr_1.4.0 bit64_0.9-7 [3] AnnotationHub_2.15.12 shiny_1.3.0 # # [5] assertthat_0.2.1 interactiveDisplayBase_1.21.0 # # [7] BiocManager_1.30.4.9006 BiocFileCache_1.7.7 # # [9] blob_1.1.1 GenomeInfoDbData_1.2.1 # # [11] yaml_2.2.0 pillar_1.3.1 # # [13] lattice_0.20-38 glue_1.3.1 # # [15] digest_0.6.18 promises_1.0.1 # # [17] XVector_0.23.2 colorspace_1.4-1 # # [19] httpuv_1.5.1 htmltools_0.3.6 # # [21] Matrix_1.2-17 plyr_1.8.4 # # [23] pkgconfig_2.0.2 bookdown_0.9 # # [25] zlibbioc_1.29.0[39] tools_3.6.0 memoise_1.1.0 ## [41] Rhdf5lib_1.5.4 munsell_0.5.0 ## [43] AnnotationDbi_1.45.1 compiler_3.6.0 ## [45] rlang_0.3.4 grid_3.6.0 ## [47] RCurl_1.95-4.12 rappdirs_0.3.1 ## [51] rmarkdown_1.12 ExperimentHub_1.9.3 ## [53] gtable_0.3.0 ## [35] crayon_1.3.4 memoise_1.1.0 ## [37] evaluate_0.13 fansi_0.4.0 ## [39] tools_3.6.0 string_1 .4.0 ## [41] Rhdf5lib_1.5.4codetools_0.2-16 # # [55] DBI_1.0.0 reshape_0.8.8 # # [57] curl_3.3 R6_2.4.0 # # [59] knitr_1.22 bit_1.1-14 # # [61] utf8_1.1.4 stringi_1.4.3 # # [63] Rcpp_1.0.1 tidyselect_0.2.5 # # [65] xfun_0.6