Я пытаюсь выровнять данные RNA-seq с помощью Salmon, однако, поскольку я работаю с различными линиями мышей, требуемый индекс генома будет зависеть от линии мыши. Я сохраняю эту информацию в имени файла, поэтому идея состоит в том, что если входной файл имеет определенное имя, то следует использовать определенный индекс, в противном случае следует использовать другой индекс.
Этот сценарий отлично работает и возвращает все файлы, которые мне нужны, однако он всегда будет использовать команду оболочки в операторе else и полностью игнорирует оператор if, несмотря на имена файлов. технически идентичны.
Я пробовал разные вещи, но безуспешно, поэтому мне также хотелось бы узнать лучший способ (не обязательно самый универсальный, поскольку этот конвейер предназначен только для моего использования) для достижения того, что я хотел бы.
Код:
rule salmon_mapping:
input:
fastq="data/raw_data/{sample}.fastq.gz",
c57_index="/gpfs/data01/glasslab/home/cag104/refs/Mus_musculus/Ensemble/C57/Salmon_Index/",
aj_index="/gpfs/data01/glasslab/home/cag104/refs/Mus_musculus/Ensemble/AJ/Salmon_Index/"
log:
"logs/salmon/{sample}_quant.log"
params:
prefix="{sample}"
output:
"data/processed_data/{sample}/quant.sf",
"data/processed_data/{sample}/cmd_info.json"
run:
if {input.fastq} == "data/raw_data/mouse_AJ_M_Liver_Hepatocyte_RNA_notx_CG_1_VML_s20180131_GTCCGC.fastq.gz" or {input.fastq} == "data/raw_data/mouse_AJ_M_Liver_Hepatocyte_RNA_notx_CG_2_VML_s20180131_GTGAAA.fastq.gz":
shell("salmon quant -p 16 -i {input.aj_index} -l A -r <(gunzip -c {input.fastq}) -o data/processed_data/{wildcards.sample} &> {log}")
else:
shell("salmon quant -p 16 -i {input.c57_index} -l A -r <(gunzip -c {input.fastq}) -o data/processed_data/{wildcards.sample} &> {log}"