R Markdown: невозможно получить доступ к команде Bash, установленной через Conda / Anaconda - PullRequest
1 голос
/ 27 сентября 2019

Я изучаю некоторые данные по биоинформатике, и мне нравится использовать ноутбуки R (т.е. Rmarkdown), когда я могу.Сейчас мне нужно использовать инструмент командной строки для анализа файла VCF, и я хотел бы сделать это с помощью фрагмента кода Bash в записной книжке Rmarkdown.

Проблема в том, что команда, которую я хочу использовать, былаустановлен с 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

В то время как при запуске из терминала я получаю вывод (используя condaокружение, называемое "binfo"):

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

Итак, как мне получить доступ к инструментам, установленным с помощью conda / в моем conda env, из фрагмента кода R ноутбука или Rmarkdown?Я долго искал и не смог найти никого, кто говорил бы о запуске conda команд в чанке оболочки в Rmarkdown.Буду признателен за любую помощь, потому что мне нравится формат тетради R для исследовательского анализа.

Ответы [ 2 ]

1 голос
/ 27 сентября 2019

Если ваша Conda правильно настроена для работы в bash, то вы можете использовать engine.opts, чтобы сообщить bash о необходимости запуска в режиме входа в систему (т. Е. Указать ваш .bash_profile (Mac) или .bashrc (Linux)):

```{bash, engine.opts='-l'}
bcftools view -H test.vcf.gz
```

Примечание по воспроизводимости

Поскольку воспроизводимость обычно является проблемой в научной работе, я добавлю, что вы, возможно, захотите сделать что-то, чтобы отразить состояние вашей среды Conda.Например, если вы работаете в управлении версиями, то передайте conda env export > environment.yaml.Другим вариантом будет вывод этой информации непосредственно в конце Rmd, как это обычно делается с sessionInfo().То есть,

```{bash, engine.opts='-l', comment=NA}
conda env export
```

, где comment=NA, чтобы вывод можно было аккуратно скопировать из отрендеренной версии.

0 голосов
/ 27 сентября 2019

Быстрое решение для bash: добавьте следующий скрипт init в ваши скрипты Bash.

eval "$(command conda 'shell.bash' 'hook' 2> /dev/null)"

# you may need to activate the "base" environment explicitly
conda activate base

Detail

Когда вы открываете свой терминал, интерактивныйоболочка порождена.Но ваш скрипт запускается в неинтерактивной оболочке.Файл конфигурации Bash ~/.bashrc не будет использоваться для сценариев, который пропускает инициализацию conda, и ваша "базовая" среда не отображается в PATH.

Ссылки

...