首页 > 解决方案 > 带有 R 脚本的 Snakemake,错误:找不到 snakemake 对象

问题描述

我在尝试运行调用 R 脚本的蛇形规则时遇到问题。相关的 snakemake 规则如下所示:

rule summarize_transcripts:
    input:
        lineages = expand("../final/{seq_run}/{exp}_transcript_lineages.csv", exp=EXP, seq_run=SEQ_RUN),
        salmon_dir = expand("../salmon_quant_results/{experiment_id}", experiment_id=EXP),
    output:
        species_counts = expand("../final/{seq_run}/{exp}_sp_counts.csv", exp=EXP, seq_run=SEQ_RUN),
        family_counts = expand("../final/{seq_run}/{exp}_family_counts.csv", exp=EXP, seq_run=SEQ_RUN)        
    shell:
        '''
        Rscript ./deseq2.R
        '''

这是我的 R 脚本的顶部,它在 S4 对象调用时失败:

library('DESeq2')
library('tximport')

#Read in dataframe that contains the trinity ID's linked to lineage information
df <- read.csv(snakemake@input[["lineages"]], header=TRUE)

库加载正常,错误消息指出:

Error in read.table(file = file, header = header, sep = sep, quote = quote,  : 
  object 'snakemake' not found
Calls: read.csv -> read.table
Execution halted

我试图将我的依赖项组织在一个 conda .yml 文件中,如下所示:

name: test_env

channels:
  - conda-forge
  - bioconda
  - r
  - default

dependencies:
  - star =2.7.1a
  - trinity =2.12.0
  - samtools =1.12
  - salmon =1.4.0
  - snakemake
  - pandas
  - r=4.1.0
  - r-essentials
  - bioconductor-deseq2
  - bioconductor-tximport

为什么 R 不能识别蛇形文件中描述的蛇形输入?我正在运行snakemake 6.5.1 版。

标签: rsnakemake

解决方案


示例使用script:而不是shell:因此更改为

script:
  "./deseq2.R"

而不是

shell:
    '''
    Rscript ./deseq2.R
    '''

看起来snakemake需要将R代码注入脚本来定义snakemake变量,而它不能用任意shell命令来做到这一点。仅当脚本文件以“.R”结尾时才会这样做


推荐阅读