r - 带有 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 版。
解决方案
示例使用script:
而不是shell:
因此更改为
script:
"./deseq2.R"
而不是
shell:
'''
Rscript ./deseq2.R
'''
看起来snakemake需要将R代码注入脚本来定义snakemake
变量,而它不能用任意shell命令来做到这一点。仅当脚本文件以“.R”结尾时才会这样做
推荐阅读
- python - 将张量列表转换为 numpy,然后对数字求和
- java - JavaFx GridPane 中的相对大小
- java - Java 11 HttpClient 设置最大连接数
- r - 如何在 R 中绘制带有置信区间的交叉验证 BRT 模型 (gbm.step) 引导的平均 ROC?
- javascript - TypeScript:一个依赖于另一个的接口属性
- angular - 如何使用气泡图的 apexcharts 以角度制作自定义工具提示
- python - 如何解决在漂亮的 Tables Python 中重复显示数据的问题
- c# - 为 Visual Studio 定义模板时,是否可以指定光标(插入符号)位置?
- r - R. 在目录中的许多数据帧列表上运行 lm 函数。错误:“字符”类型的“环境”参数无效
- continuous-integration - 基于正则表达式的规则子句在 GitLab CI 中不起作用