#r #snakemake
Вопрос:
У меня возникли проблемы при попытке запустить правило змеиного змея, которое вызывает сценарий R. Соответствующее правило змеиного змея выглядит следующим образом:
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, как описано в документах snakemake? Я запускаю snakemake версии 6.5.1.
Ответ №1:
В примерах используется script:
, а не shell:
изменяется на
script:
"./deseq2.R"
скорее, чем
shell:
'''
Rscript ./deseq2.R
'''
Похоже, что snakemake необходимо ввести код R в скрипт, чтобы определить snakemake
переменную, и он не может сделать это с помощью произвольных команд оболочки. Это делается только в том случае, если файл сценария заканчивается на «.R».