Я пишу правило создания змеи, которое будет обрабатывать выполнение fastq-обрезки для данных секвенирования одного или парного конца. Если данные сопряжены, должно быть два выходных файла, если один конец, должен быть один.
Правило, которое я написал, работает до сих пор, однако у меня нет его, что вторая пара обрезанных является выходным файлом. Это означает, что snakemake не проверяет, существует ли этот файл. Он выдаст, но не проверяет, возможно ли иметь дополнительный вывод?
input:
#get the value in the fast1 column
fastq_file = lambda wildcards: return_fastq(wildcards.fastq_name,wildcards.unit,first_pair = True)
output:
out_fastqc = config["fastp_trimmed_output_folder"] + "{unit}/{fastq_name}_trimmed.fastq.gz",
fastpjson = config["fastp_trimmed_output_folder"] + "{unit}/{fastq_name}_fastp.json",
fastphtml = config["fastp_trimmed_output_folder"] + "{unit}/{fastq_name}_fastp.html"
params:
fastp_parameters = return_parsed_extra_params(config['fastp_parameters']),
fastq_file2 = lambda wildcards: return_fastq(wildcards.fastq_name,wildcards.unit,first_pair = False),
out_fastqc2 = lambda wildcards: return_fastq2_name(wildcards.fastq_name,wildcards.unit),
fastpjson = config["fastp_trimmed_output_folder"] + "{unit}/{fastq_name}_fastp.json",
fastphtml = config["fastp_trimmed_output_folder"] + "{unit}/{fastq_name}_fastp.html"
run:
if config["end_type"] == "se":
shell("{config[fastp_path]} -i {input.fastq_file} -o {output.out_fastqc} --json {output.fastpjson} --html {output.fastphtml} {params.fastp_parameters}")
if config["end_type"] == "pe":
shell("{config[fastp_path]} --in1 {input.fastq_file} --in2 {params.fastq_file2} --out1 {output.out_fastqc} --out2 {params.out_fastqc2} --json {output.fastpjson} --html {output.fastphtml} {params.fastp_parameters}")
Цель состоит в том, чтобы out_fastqc2 был включен в качестве необязательного вывода правила, чтобы snakemake проверил, существует ли он, и, если нет, соответствующим образом выдаст мне ошибку.
Если Snakemake не разрешает дополнительные выходы, я мог бы просто разделить на два правила, но это не совсем то, что я хотел бы.