我正在探索一些生物信息学数据,我希望在可能的情况下使用R笔记本(即Rmarkdown)。现在,我需要使用命令行工具来分析VCF文件,我想通过Rmarkdown笔记本中的Bash代码块来完成它。
问题是我要使用的命令与conda
一起安装到了conda环境中。该工具为bcftools
。当我尝试访问此命令时,出现此错误(注释掉代码块以显示rmarkdown代码块格式):
#```{bash}
bcftools view -H test.vcf.gz
#```
/var/folders/9l/phf62p1s0cxgnzp4hgl7hy8h0000gn/T/RtmplzEvEh/chunk-code-6869322acde0.txt: line 3: bcftools: command not found
如果我从Terminal运行,则会得到输出(使用名为“ binfo”的conda环境):
> bcftools view -H test.vcf.gz | head -n 3
chr10 78484538 . A C . PASS DP=57;SOMATIC;SS=2;SSC=16;GPV=1;SPV=0.024109 GT:GQ:DP:RD:AD:FREQ:DP4 0/0:.:34:33:0:0%:0,33,0,0 0/1:.:23:19:4:17.39%:1,18,0,4
chr12 4333138 . G T . PASS DP=119;SOMATIC;SS=2;SSC=14;GPV=1;SPV=0.034921 GT:GQ:DP:RD:AD:FREQ:DP4 0/0:.:72:71:1:1.39%:71,0,1,0 0/1:.:47:42:5:10.64%:42,0,5,0
chr15 75086860 . C T . PASS DP=28;SOMATIC;SS=2;SSC=18;GPV=1;SPV=0.013095 GT:GQ:DP:RD:AD:FREQ:DP4 0/0:.:15:15:0:0%:4,11,0,0 0/1:.:13:8:5:38.46%:5,3,1,4
(binfo)
那么,如何从R Notebook / Rmarkdown bash代码块访问conda / conda env中安装的工具?我搜索了很长时间,但找不到任何人谈论在Rmarkdown的shell块中运行conda
命令。任何帮助将不胜感激,因为我喜欢R笔记本格式用于探索性分析。
答案 0 :(得分:2)
如果您的Conda是properly configured to work in bash,则可以使用engine.opts
告诉bash以登录模式启动(即,将.bash_profile
(Mac)或.bashrc
用作源( Linux)):
```{bash engine.opts='-l'}
bcftools view -H test.vcf.gz
```
如果与zsh
(例如Mac OS 10.15 Catalina用户)一起使用,则交互式标记--interactive|-i
是您想要的(来源: @Leo )。
```{zsh engine.opts='-i'}
bcftools view -H test.vcf.gz
```
同样,这假定您先前已经运行conda init zsh
来设置Conda以使用该Shell。
由于可重复性通常是科研工作中要考虑的问题,因此我要补充一点,您可能想做一些事情来捕获Conda环境的状态。例如,如果您正在使用版本控制,则提交conda env export > environment.yaml
。另一个选择是直接在Rmd的末尾输出该信息,就像通常用sessionInfo()
完成的那样。就是
```{bash engine.opts='-l', comment=NA}
conda env export
```
comment=NA
所在的位置,以便可以从呈现的版本中完全复制输出。
答案 1 :(得分:0)
bash
的快速解决方案:在您的Bash脚本中将以下初始化脚本添加。
eval "$(command conda 'shell.bash' 'hook' 2> /dev/null)"
# you may need to activate the "base" environment explicitly
conda activate base
打开终端时,会生成一个交互式外壳。但是您的脚本在非交互式外壳中运行。 Bash配置文件~/.bashrc
将不用于脚本,脚本将跳过conda
的初始化,并且您的“基本”环境不会暴露在PATH
中。