内容

1indexedfst

indexedfst类提供快速命名的随机访问索引FST文件。它基于FST软件包,可快速随机读取数据帧。这对于操纵大量绑定位点的集合而无需将它们全部加载到内存中特别有用。

从data.frame创建索引的FST文件非常简单:

库(scanmirapp)#我们创建一个临时目录,其中将保存文件tmp <-empdir()f < -  file.path(tmp,“ test”)#我们创建虚拟data.frame d <-data.frame(类别=示例(字母[1:4],10000,替换= true),var2 = sample(字母,10000,替换= true),var3 = runif(10000))saveindexedfst(d,index.by =“ category”,file.prefix = f)

然后可以通过以下方式加载文件(无需存储器中的所有数据):

d2 <-LoadIndexedFst(f)类(D2)
## [1]“ indexedfst” ## attr(“ package”)## [1]“ scanmirapp”
摘要(D2)
##  ## 10000行,3列(test.fst)## ## *'cattory':cartarai

我们可以看到D2比原来小得多d

格式(object.size(d),单位=“ kb”)
## [1]“ 237 kb”
格式(object.size(d2),单位=“ kb”)
## [1]“ 2.4 kb”

然而,可以正常在对象上使用许多功能:

nrow(D2)
## [1] 10000
NCOL(D2)
## [1] 3
Colnames(D2)
## [1]“类别”“ var2”“ var3”
头(D2)
##类别VAR2 VAR3 ## 1 A S 0.99006352 ## 2 A Y 0.18703840 ## 3 A B 0.85085857 ## 4 A Q 0.444559833 ## 5 A D 0.399744440 ## 6

另外,可以将对象作为列表访问(使用索引变量)。由于在这种情况下,使用类别列对文件进行索引,因此可以将不同的类别访问为名称对象的:

名称(D2)
## [1]“ a”“ b”“ c”“ d”
长度(D2)
## A B C D ## 2535 2532 2522 2411

我们可以使用以下方式专门阅读与一个类别有关的行

CATB <-d2 $ b头(CATB)
## category var2 var3 ## 1 B B 0.02741579 ## 2 B T 0.77084059 ## 3 B S 0.08444362 ## 4 B K 0.43586547 ## 5 B I 0.15520813 ## 6 B W 0.51126818

2将Granges存储为indexedfst

除了data.frames,格兰格可以保存为索引FST。为了证明这一点,我们首先创建一个虚拟granges对象:

图书馆(基因组机)
##加载所需软件包:Stats4
##加载所需包:生物基因
## ##附件包:'Biocgenerics'
##以下对象从“包:stats':## ## iqr,mad,sd,var,var,xtabs掩盖
##以下对象从“软件包:base”:## ## ## ## ##滤波器,查找,映射,位置,降低,任何deplicated,附加,## as.data.frame,basename,basename,cbind,cbind,colnames,dirname,do。呼叫,##重复,eval,evalq,get,grep,grep,grepl,intersect,is.unsorted,## lapply,mapply,mapply,mapply,mets,mget,order,order,order,pere,pmax.int,pmax.int,pmin,pmin,## pmin.int.int,inter.int,in等级,rbind,rownames,sapply,setdiff,sort,table,## tapply,union,union,unsplit,who.max,who.min.min
##加载所需软件包:S4VECTOR
## ##附件包:'S4VECTORS'
##以下对象从'package:base':## ## i,expliv.grid,unname掩盖
##加载所需包:iranges
##加载所需包:GenomeInfodB
gr < -  granges(示例(字母[1:3],200,替换= true),iranges(seq_len(200),宽度= 2))gr $ propertya < - 因子(sample [1:5],200,200,替换= true))gr
## Granges对象具有200范围和1个元数据列:## seqnames ranges strand |属性##    | ## [1] A 1-2 * |B ## [2] A 2-3 * |C ## [3] B 3-4 * |## [4] A 4-5 * |## [5] A 5-6 * |b ## ... ... ......。... ## [196] A 196-197 * |C ## [197] C 197-198 * | e ## [198] C 198-199 * | c ## [199] C 199-200 * | a ## [200] C 200-201 * | d ## ------- ## seqinfo: 3 sequences from an unspecified genome; no seqlengths

然后,可以通过以下方式加载文件(无需内存中的所有数据):

f2 < -  file.path(tmp,“ test2”)saveindexedfst(gr,index.by =“ seqnames”,file.prefix = f2)d1 <-loadIndexedfst(f2)名称(d1)
## [1]“ a”“ b”“ c”
头(D1 $ A)
## Granges对象,带有6个范围和1个元数据列:## seqnames ranges strand |属性##    | ## [1] A 1-2 * |B ## [2] A 2-3 * |C ## [3] A 4-5 * |## [4] A 5-6 * |B ## [5] A 7-8 * |C ## [6] A 8-9 * |C ## ------- ## seqinfo:来自未指定基因组的3个序列;没有seqlength

同样,我们可以使用其他列进行索引:

saveIndexedFst(gr,index.by =“ propertya”,file.prefix = f2)d2 <-loadIndexedfst(f2)名称(d2)
## [1]“ a”“ b”“ c”“ d”“ e”

3更多的…

3.1多线程

FST软件包支持多线程阅读和写作。这也可以应用indexedfst, 使用nthreads争论LoadIndexedFstSaveIndexedFst

3.2在引擎盖下

indexedfst课堂只是周围的包装纸FST包裹。除了FST文件,一个RDS文件保存包含索引数据。例如,对于我们的上一个示例,已保存以下文件:

list.files(TMP,“ test2”)
## [1]“ test2.fst”“ test2.idx.rds”

文件(或前缀)都可以用于加载,但是两个文件都需要具有相同的前缀。



会话信息

## R版本4.2.0 RC(2022-04-21 R82226)##平台:x86_64-pc-linux-gnu(64位)## blas:/home/biocbuild/bbs-3.16-bioc/r/lib/libblas.so ## lapack:/home/biocbuild/bbs-3.16-bioc/r/lib/lib/librlapack.so ### ## ## locale:## [1] lc_ctype = en_us.utf-8 lc_numeric = c ## [3] lc_time = en_gb lc_collat​​e = c ## [5] lc_us.us.utf-8 lc_messages = en_us.utf-8 ## [7]lc_paper = en_us.utf-8 lc_name = c ## [9] lc_address = c lc_telephone = c ## [11] lc_measurement = en_us.utf-8 lc_istientification = c ## ## ## ## ##附件:统计图形GRDEVICES ulter数据集方法## [8]基础## ##其他附件:## [1] genomicranges_1.49.0 genomeInfodb_1.33.1 iranges_2.31.31.0 ## [4][7] scanmirapp_1.3.0 biocstyle_2.25.0 ## ## ##通过名称空间加载(并且未连接):## [1] collespace_2.0-3 rjson_0.2.21 ## [3] ellipsis_0.3.25] DT_0.22 BIT64_4.0.5 ## [7] interactivedisplaybase_1.35.0 AnnotationDbi_1.59.0 ## [9] fansi_1.0.3 scanmir_1.3.0 ## [11] xml2_1.3.3 cachem_1.1.0.0.6 ## [13]## [17] dbplyr_2.1.1 PNG_0.1-7 ## [19] ShinyDashboard_0.7.7.2 Shiny_1.7.1.7.1 ## [21] Biocmanager_1.30.17 Compiler_4.2.0 ## [23]] matrix_1.4-1 fastmap_1.1.0 ## [27] lazyeval_0.2.2.2 cli_3.3.3.0 ## [29] later_1.3.0 htmltools_5.5.5.2 ## [31]glue_1.6.2 ## [35] GenomeInfoDbData_1.2.8 dplyr_1.0.9 ## [37] rappdirs_0.3.3 Rcpp_1.0.8.3 ## [39] Biobase_2.57.0 jquerylib_0.1.4 ## [41] vctrs_0.4.1 Biostrings_2.65.0 ##[43] Shinyjqui_0.4.1 rtracklayer_1.57.0 ## [45] rintrojs_0.3.0 ggseqlogo_0.1 ## [47] xfun_0.30 stringr_1.1.4.0 ## [49 ## [49] mime_0.0.0.12 lifecycle_1.1.1.1.1.1.1.1.1.1.1.1.1.1.1 #1.1.1.1.1.1.1.1.1##51 [51]0.13 ENSEMBLDB_2.21.1 ## [53] Shinycsssloaders_1.0.0 XML_3.99-0.9 ## [55] Waiter_0.2.5 AnnotationHub_3.5.0 ## [57]1。29.0 hms_1.1.1 ## [61] promises_1.2.0.1 MatrixGenerics_1.9.0 ## [63] parallel_4.2.0 SummarizedExperiment_1.27.1 ## [65] AnnotationFilter_1.21.0 yaml_2.3.5 ## [67] curl_4.3.2 memoise_2.0.1 ## [69] ggplot2_3.3.5 sass_0.4.1 ## [71] biomaRt_2.53.0 stringi_1.7.6 ## [73] RSQLite_2.2.13 BiocVersion_3.16.0 ## [75] BiocIO_1.7.0 GenomicFeatures_1.49.1 ## [77] filelock_1.0.2 BiocParallel_1.31.0 ## [79] rlang_1.0.2 pkgconfig_2.0.3 ## [81] bitops_1.0-7 matrixStats_0.62.0 ## [83] evaluate_0.15 lattice_0.20-45 ## [85] purrr_0.3.4 GenomicAlignments_1.33.0 ## [87] htmlwidgets_1.5.4 cowplot_1.1.1 ## [89] bit_4.0.4 tidyselect_1.1.2 ## [91] magrittr_2.0.3 bookdown_0.26 ## [93] R6_2.5.1 generics_0.1.2 ## [95] DelayedArray_0.23.0 DBI_1.1.2 ## [97] pillar_1.7.0 KEGGREST_1.37.0 ## [99] RCurl_1.98-1.6 tibble_3.1.6 ## [101] crayon_1.5.1 utf8_1.2.2 ## [103] plotly_4.10.0 BiocFileCache_2.5.0 ## [105] rmarkdown_2.14 progress_1.2.2 ## [107] grid_4.2.0 data.table_1.14.2 ## [109] blob_1.2.3 digest_0.6.29 ## [111] xtable_1.8-4 tidyr_1.2.0 ## [113] httpuv_1.6.5 fst_0.9.8 ## [115] munsell_0.5.0 viridisLite_0.4.0 ## [117] bslib_0.3.1