【问题标题】:Create PDF reports using R Markdown (TinyTeX) in Snakemake using Conda使用 Conda 在 Snakemake 中使用 R Markdown (TinyTeX) 创建 PDF 报告
【发布时间】:2021-03-18 22:25:32
【问题描述】:

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

TinyTeX conda 依赖项在没有额外安装的情况下无法自行工作,这有点糟糕......

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

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
        """

康达 YAML:

name: r-rmarkdown
channels:
  - conda-forge
  - bioconda
dependencies:
  - r-base=4.0.3
  - r-rmarkdown=2.5
  - r-tinytex=0.27

提前致谢。

【问题讨论】:

  • 如果您知道tinytex::install_tinytex() 安装的文件,您可以在调用 Rscript 之前测试它的存在。如果这就是“使用带有 if 语句的命令 Rscript -e \"tinytex:::is_tinytex()\"”的意思,我认为这确实是最简单的事情。
  • Unrelated... 您不需要转义 shell 指令中的双引号,因为您将其包装在三重引号中。 IE。你可以做"tinytex foo bar" 而不是\"tinytex foo bar\"
  • 啊,当然,我的错。会改变 thnx ;)

标签: if-statement r-markdown conda snakemake tinytex


【解决方案1】:

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

knitr::opts_chunk$set(echo = TRUE)
library(knitr)
if (!tinytex:::is_tinytex()){
   tinytex::install_tinytex()
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-18
    • 1970-01-01
    • 2017-03-11
    • 2021-05-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多