Snakemake: опция Zip в раскрытии не работает

Я использую expand и glob_wildcards в своем скрипте snakamake. У меня есть два подкаталога в моих библиотеках директорий с файлами fastq вперед и назад, структурированными следующим образом:

libraries:
    - MMETSP1:
           - SRR19_1
           - SRR19_2
    - MMETSP2:
          - SRR20_1
          - SRR20_2

Я получаю все возможные комбинации в двух каталогах с помощью zip вариант расширения. Но то, что я хотел, - это просто список файлов вперед с разделителями-запятыми (например, SRR19_1, SRR20_1) и т.д. для обратных файлов (например: SRR19_2, SRR20_2).

И когда я удаляю опцию zip, у меня возникает эта ошибка:

MissingInputException in line 159 of /projet/fr2424/sib/gniang/script/snakemake/scripts/dntap_test.py:
Missing input files for rule trinity:
/projet/fr2424/sib/gniang/script/snakemake/libraries/MMESTP1/SRR1300320_1.fastq.gz
/projet/fr2424/sib/gniang/script/snakemake/libraries/MMESTP1/SRR1300320_2.fastq.gz
/projet/fr2424/sib/gniang/script/snakemake/libraries/MMETSP2/SRR1300319_2.fastq.gz
/projet/fr2424/sib/gniang/script/snakemake/libraries/MMETSP2/SRR1300319_1.fastq.gz

Я использую этот скрипт:

#!/usr/bin/python

#  Imports
import os
import glob
import sys

# Get current working directory
dir_path = os.getcwd()

# User defined ouput directory
OUT_DIR = config["directories"]["outdir"]

#  User defined input directory
LIBRARY_DIR = config["directories"]["libraries"]

# Relative output directories
TRINITY_DIR = OUT_DIR + "trinity_out"

# Wildcards for input files
(LIBRARY, FASTQ, SENS) = glob_wildcards(LIBRARY_DIR + "{mmetsp}/{reads}_{type}.fastq.gz")


# ALL
rule all:
    input:
        trinity_out = TRINITY_DIR + "/Trinity.fasta",
        forward = directory(TRIMMOMATIC_DIR + "/forward.trimmomatic.paired.fastq"),
        reverse = directory(TRIMMOMATIC_DIR + "/reverse.trimmomatic.paired.fastq")

# TRINITY: This rule is use to de novo assemble filtered FASTQ files into
# contigs.
rule trinity:
    input:
        forward = expand(LIBRARY_DIR + "{mmetsp}" + "/" + "{reads}_1.fastq.gz", mmetsp=LIBRARY, reads=FASTQ),
        reverse = expand(LIBRARY_DIR + "{mmetsp}" + "/" + "{reads}_2.fastq.gz", mmetsp=LIBRARY, reads=FASTQ),
    output:
        trinity_out = TRINITY_DIR + "/Trinity.fasta",
        forward = directory(TRIMMOMATIC_DIR + "/forward.trimmomatic.paired.fastq"),
        reverse = directory(TRIMMOMATIC_DIR + "/reverse.trimmomatic.paired.fastq"),
    log:
        OUT_DIR + "logs/trinity/trinity.log"
    params:
        max_memory = config["trinity_params"]["max_memory"],
        trinity_dir = directory(TRINITY_DIR),
        trimmomatic_out = directory(TRIMMOMATIC_DIR),
        trimmomatic_params = config["trimmomatic_params"],
        illumina_adaptor = config["samples"]["illumina_adaptor"],
    threads:
        config["threads"]["trinity"]
    run:

        shell("""

        {trinity} \
        --seqType fq \
        --left {input.forward}  \
        --right {input.reverse} \
        --trimmomatic \
        --quality_trimming_params "ILLUMINACLIP:{params.illumina_adaptor}:2:30:10 {params.trimmomatic_params}" \
        --normalize_reads \
        --normalize_by_read_set \
        --output {params.trinity_dir} \
        --CPU {threads} \
        --output {params.trinity_dir} \
        --CPU {threads} \
        --max_memory {params.max_memory} > {log}

        mkdir -p {params.trimmomatic_out}
        mkdir -p {params.trimmomatic_out}/forward.trimmomatic.paired.fastq
        mkdir -p {params.trimmomatic_out}/forward.trimmomatic.paired.fastq
        mkdir -p {params.trimmomatic_out}/forward.trimmomatic.unpaired.fastq
        mkdir -p {params.trimmomatic_out}/reverse.trimmomatic.unpaired.fastq

        mv {params.trinity_dir}/*P.qtrim.gz {output.forward}
        mv {params.trinity_dir}/*P.qtrim.gz {output.reverse}
        mv {params.trinity_dir}/*U.qtrim.fq {params.trimmomatic_out}/forward.trimmomatic.unpaired.fastq
        mv {params.trinity_dir}/*U.qtrim.fq {params.trimmomatic_out}/reverse.trimmomatic.unpaired.fastq
        """)

Может кто-то помочь мне, пожалуйста.

Я бы посоветовал опубликовать минимальный код, который показывает вашу проблему. Ваш текущий пример кода слишком длинный.

Manavalan Gajapathy 31.07.2018 15:52

Хорошо, я сделаю это

Guita Niang 31.07.2018 16:10

Возможно, вы могли бы написать функцию Python для получения списков прямых и обратных файлов? Это могло бы упростить задачу.

Manavalan Gajapathy 31.07.2018 18:16

Большое спасибо за Ваш ответ. Я использовал python glob для создания списка обратных и прямых файлов, и это отлично сработало. Спасибо за совет. Я хотел узнать, можно ли использовать одну библиотеку в sime для запуска сценария, а затем использовать другую. Это означает, что если я хочу запустить сценарий один с файлами fastq в library1, а во второй раз - с библиотекой two. заранее спасибо

Guita Niang 02.08.2018 10:38
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
0
4
266
0

Другие вопросы по теме