如何将Rscript与Reader结合使用以从AWS s3获取数据

时间:2019-08-22 13:50:09

标签: r amazon-web-services amazon-s3

我有一些带有readr包的R代码,在本地计算机上运行良好-我使用list.files查找具有特定扩展名的文件,然后使用readr对找到的那些文件进行操作。

我的问题:我想对AWS S3中的文件做类似的事情,我正在寻找一些有关如何使用当前R代码执行相同操作的指针。

谢谢。

我想要什么: 给定这样的AWS文件夹/文件结构  -/folder1/subfolder1/quant.sf  -/folder1/subfolder2/quant.sf  -/folder1/subfolder3/quant.sf 等等,在每个子文件夹都有相同文件'quant.sf'的地方,我想获得一个包含S3路径的数据帧,并且我想使用下面显示的R代码​​对所有Quantum.sf文件进行操作。 / p>

下面,我展示了当前可在Linux机器上处理数据的R代码。

get_quants <- function(path1, ...) {
    additionalPath = list(...)

    suppressMessages(library(tximport))
    suppressMessages(library(readr))

    salmon_filepaths=file.path(path=path1,list.files(path1,recursive=TRUE, pattern="quant.sf"))

    samples = data.frame(samples = gsub(".*?quant/salmon_(.*?)/quant.sf", "\\1", salmon_filepaths) )
    row.names(samples)=samples[,1]
    names(salmon_filepaths)=samples$samples


    # IF no tx2Gene available, we will only get isoform level counts
    salmon_tx_data = tximport(salmon_filepaths, type="salmon", txOut = TRUE)


    ## Get transcript count summarization
    write.csv(as.data.frame(salmon_tx_data$counts), file = "tx_NumReads.csv")
    ## Get TPM
    write.csv(as.data.frame(salmon_tx_data$abundance), file  =  "tx_TPM_Abundance.csv")


    if(length(additionalPath > 0)) {

        tx2geneFile = additionalPath[[1]]
        my_tx2gene=read.csv(tx2geneFile,sep = "\t",stringsAsFactors = F, header=F)
        salmon_tx2gene_data = tximport(salmon_filepaths, type="salmon", txOut = FALSE, tx2gene=my_tx2gene)

        ## Get Gene count summarization
        write.csv(as.data.frame(salmon_tx2gene_data$counts), file = "tx2gene_NumReads.csv")
        ## Get TPM
        write.csv(as.data.frame(salmon_tx2gene_data$abundance),  file  =  "tx2gene_TPM_Abundance.csv")
    }
}

1 个答案:

答案 0 :(得分:0)

我发现使用aws.s3 R包最简单。在这种情况下,您将使用s3read_using()s3write_using()函数来与S3进行保存。像这样:

library(aws.s3)
my_tx2gene=s3read_using(FUN=read.csv, object="[path_in_s3_to_file]",sep = "\t",stringsAsFactors = F, header=F)

基本上,它是您要用于文件输入/输出的任何功能的包装。可以与read_json,saveRDS或其他任何工具配合使用!