Файлы журнала snakemake для неудачных заданий на слерме не существуют - PullRequest
0 голосов
/ 28 октября 2019

Я запускаю конвейер змеиного производства на высокопроизводительном кристалле. Иногда задания не выполняются из-за превышения времени на стене или памяти. Такие невыполненные задания не создают файлы журнала, или их файлы журнала удаляются как часть автоматического удаления файлов, связанных с ошибочными заданиями. Было бы удобно получить информацию о регистрации неудачных заданий, чтобы мне было легче понять, почему задание не удалось.

В настоящее время у меня есть параметры журналов для каждого задания, и файл cluster.json затем вызывает эти журналы для каждого задания. Общее правило, это вызов cluster.json и мой вызов snakemake, показанные ниже.

rule fastqScreen:
    input:
        Fast1="{sample}/{sample}.R1.fq.gz",
        Fast2="{sample}/{sample}.R2.fq.gz"
    output:
        output1="{sample}/{sample}.fq.gz",
        output2="{sample}/{sample}_screen.png",
        output3="{sample}/{sample}_screen.txt"
    log: "logs/{sample}FastScreen.log"
    params: 
        outprefix = "{sample}"
    threads: 4
    priority: 3
    shell:
        """
        cat {input.Fast1} {input.Fast2} > {output.output1} && /home/manninm/Programs/fastq_screen_v0.14.0/fastq_screen --aligner bowtie2 --quiet --force --threads {threads} {output.output1}
        """
"__default__": {
        "account": "kretzler",
        "job-name": "17_{rule}",
        "partition": "standard",
        "nodes": "1",
        "time": "10:00:00",
        "ntasks-per-node": "1",
        "cpus-per-task": "1",
        "mem": "4g",
        "output": "{log}.out.txt",
        "error": "{log}.err.txt",
        "mail-user": "$USER@umich.edu",
        "mail-type": "ALL"
    },
"HtSeq_Count": {
        "cpus-per-task": "{threads}",
        "--mem": "16g",
        "time": "8:00:00",
        "output": "{log}.out.txt",
        "error": "{log}.error.log"
    },
snakemake -j 1000 --restart-times 2 --max-jobs-per-second 5 --max-status-checks-per-second 5 --cluster-config cluster.json --cluster 'sbatch --job-name {cluster.job-name} --nodes {cluster.nodes} --ntasks-per-node {cluster.ntasks-per-node} --cpus-per-task {cluster.cpus-per-task} --mem {cluster.mem} --partition {cluster.partition} --time {cluster.time} --mail-user {cluster.mail-user} --mail-type {cluster.mail-type} --error {cluster.error} --output {cluster.output}'

Я хотел бы получить ошибку или причину сбоя задания, напечатанную в error.logфайл, связанный с каждым заданием, если это вообще возможно, я не понимаю, что я делаю не так, что приводит к исчезновению файлов журнала невыполненных заданий.

1 Ответ

1 голос
/ 29 октября 2019

Вам необходимо направить вывод команды в журнал

shell:
    """
    cat {input.Fast1} {input.Fast2} 1> {output.output1} 2> {log} && \ 
    /home/manninm/Programs/fastq_screen_v0.14.0/fastq_screen --aligner bowtie2 --quiet --force --threads {threads} {output.output1} > {log}
    """

Взгляните здесь для получения дополнительной информации о перенаправлении.

Кстати, slurm такжезахватывает stdout / stderr в файле slurm- [job-id] .out в папке, где вы выполняете snakemake.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...