使用SRAdb V2获取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()
===========================================
A non-R solution is to use the SRA toolkit prefetch command on a list of SRA identifiers.
First you need the file list. You can batch download it. In your case, go to https://www.ncbi.nlm.nih.gov/sra?term=SRP026197 Top-right, click to "Send To", "File", "Accession List".
Once you have it saved in a file (default is SraAccList.txt) you can use the command (tested in SRA toolkit 2.9.0):
prefetch $(<SraAccList.txt)
===========================================
REF
https://www.biostars.org/p/93494/
https://blog.csdn.net/candle_light/article/details/92806204
原文:https://www.cnblogs.com/emanlee/p/14502070.html