【生信进阶练习1000days】day15-SRAdbV2包

文章目录

    • 学习来源
    • 1.Sequence Read Archive(SRA)
        • 1.1 Scroller提供两种方法来存取数据
    • 2. Query syntax
    • 3. Using the raw API without R/Bioconductor

学习来源

  • https://bioconductor.github.io/BiocWorkshops/public-data-resources-and-bioconductor.html#sequence-read-archive

1.Sequence Read Archive(SRA)

可以使用SRAdbV2获取SRA数据

  • 安装SRAdbV2包
install.packages('BiocManager')
BiocManager::install('seandavi/SRAdbV2')
  • 使用SRAdbV2 首先需要创建一个 R6类-Omicidx
oidx = Omicidx$new()
  • 创建好Omicidx实例后,就可以使用oidx$search()来进行数据检索
query=paste(
  paste0('sample_taxon_id:', 10116),
  'AND experiment_library_strategy:"rna seq"',
  'AND experiment_library_source:transcriptomic',
  'AND experiment_platform:illumina')
z = oidx$search(q=query,entity='full',size=100L

其中,entity 参数是指可以通过API获得的SRA实体类型, size 参数指查询结果返回的记录数

  • 由于有时候返回的结果集数据量很会大,所以我们可以使用 Scroller 来对结果进行检索提炼
s = z$scroll()
s
s$count

s$count 可以让我们简单看一下返回数据的条数有多少

1.1 Scroller提供两种方法来存取数据

  • 第一种方法,是把所有的查询结果都加载到R的内存中,但是这会很慢
res = s$collate(limit = 1000)
head(res)

然后使用 reset() 重新设置Scroller

s$reset()
s
  • 第二种方法是,使用 yield 方法来迭代取数据
j = 0
## fetch only 500 records, but
## `yield` will return NULL
## after ALL records have been fetched
while(s$fetched < 500) {
    res = s$yield()
    # do something interesting with `res` here if you like
    j = j + 1
    message(sprintf('total of %d fetched records, loop iteration # %d', s$fetched, j))
}

如果没有获取到完整的数据集,Scroller对象的has_next()方法会报出 TRUE
使用 reset() 函数可以将光标移动到数据集的开头

2. Query syntax

见这里
https://bioconductor.github.io/BiocWorkshops/public-data-resources-and-bioconductor.html#query-syntax

3. Using the raw API without R/Bioconductor

可以不通过R/Bioconductor,而是用原生API获取数据
SRAdbV2封装了web的API,因此可以通过web API访问其中数据

sra_browse_API()

基于web的API为实验数据查询提供了一个有用的接口,基于json的可以用

sra_get_swagger_json_url()

你可能感兴趣的:(2.3,生信进阶练习1000days)