首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Conda在Snakemake中使用R Markdown (TinyTeX)创建PDF报表

使用Conda在Snakemake中使用R Markdown (TinyTeX)创建PDF报表
EN

Stack Overflow用户
提问于 2020-12-07 23:35:52
回答 1查看 116关注 0票数 2

我目前在使用Snakemake的conda环境中使用TinyTeX时遇到了一些问题。在运行管道之前,我必须使用命令tinytex::install_tinytex()安装TinyTeX安装文件。这会在创建的环境之外安装TinyTeX (这不是什么大问题……但也不是首选的)。主要的问题是,每次我执行我的Snakemake流水线时,它都会尝试重新安装我不想要的安装。谁能告诉我检查它是否已经安装的最简单的方法是什么?我应该将命令Rscript -e \"tinytex:::is_tinytex()\"与if-语句一起使用吗?通过在Snakemake中调用Rscript -e来编写if语句的最佳方式是什么?或者我应该在第一次运行时编写一个布尔文本文件来指定以前是否安装过TinyTeX?

在没有额外安装的情况下,TinyTeX conda依赖项不能独立工作,这有点糟糕……

Snakemake规则(忽略输入/输出):

代码语言:javascript
复制
rule assembly_report_rmarkdown:
    input:
        rules.assembly_graph2image_bandage.output,
        rules.assembly_assessment_quast.output,
        rules.coverage_calculator_shortreads.output,
        rules.coverage_calculator_longreads.output
    output:
        config["outdir"] + "Hybrid_assembly_report.pdf"
    conda:
        "envs/r-rmarkdown.yaml"
    shell:
        """
        cp report/RMarkdown/Hybrid_assembly_report.Rmd {config[outdir]}Hybrid_assembly_report.Rmd
        Rscript -e \"tinytex::install_tinytex()\"
        Rscript -e \"rmarkdown::render('{config[outdir]}Hybrid_assembly_report.Rmd')\"
        rm -f {config[outdir]}Hybrid_assembly_report.Rmd {config[outdir]}Hybrid_assembly_report.tex
        """

Conda YAML:

代码语言:javascript
复制
name: r-rmarkdown
channels:
  - conda-forge
  - bioconda
dependencies:
  - r-base=4.0.3
  - r-rmarkdown=2.5
  - r-tinytex=0.27

提前谢谢。

EN

回答 1

Stack Overflow用户

发布于 2020-12-09 18:45:27

我想我已经解决了这个问题。我没有调用Rscript -e,而是将下面的if语句放在R Markdown的设置块中(如果我是正确的,它会在运行任何其他代码之前运行)。然后,我卸载了TinyTeX,看看它是否只安装一次,它确实安装了一次。

代码语言:javascript
复制
knitr::opts_chunk$set(echo = TRUE)
library(knitr)
if (!tinytex:::is_tinytex()){
   tinytex::install_tinytex()
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65184691

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档