Снейкмейк с множеством правил Rule All

Я хочу, чтобы в моем правиле было несколько входов, но я не уверен, как это кодировать. Это мой код:

include:
    'config.py'
rule all:
    input:
        expand(WORK_DIR +"/trimmed/TFB{sample}_R{read_no}.fastq.gz.good",
        sample=SAMPLE_TFB ,read_no=['1', '2']),
        expand(WORK_DIR +"/kallisto/TFB/{sample}", sample=SAMPLE_TFB)
rule fastp:
    input:
        R1= SAMPLES_DIR + "/TFB{sample}_R1.fastq.gz",
        R2= SAMPLES_DIR + "/TFB{sample}_R2.fastq.gz"
    output:
        R1out= WORK_DIR + "/trimmed/TFB{sample}_R1.fastq.gz.good",
        R2out= WORK_DIR + "/trimmed/TFB{sample}_R2.fastq.gz.good"
    shell:
        "fastp -i {input.R1} -I {input.R2} -o {output.R1out} -O {output.R2out}"
rule kallisto_index:
    input:
        file = REF_DIR + "/gencode.v28.transcripts.fa"
    shell:
        "nice -n 19 kallisto index -i {input.file}"
rule kallisto_TFB:
    input:
        index = REF_DIR + "/gencode.v28.transcripts.idx",
        R1trimmed = TRIMMED_DIR + "/TFB{sample}_R1.fastq.gz.good",
        R2trimmed = TRIMMED_DIR + "/TFB{sample}_R2.fastq.gz.good"
    output:
        kall_Out = WORK_DIR + "/kallisto/TFB/{sample}"
    threads: 14
    log: KALLISTO_LOG + "/{sample}"
    shell:
        "nice -n 19 kallisto quant -i {index} -o {output.kallOut} --bias \
        -b 100 --rf-stranded -t {threads} {R1trimmed} {R2trimmed} >& {log}"

Когда я пытаюсь запустить, я получаю такую ​​ошибку:

SyntaxError in line 8 of /work/users/leboralli/trofoZikaLincRNAs/scripts/Snakefile:
Unexpected keyword expand in rule definition (Snakefile, line 8)

Думаю, я не совсем понял, как все это правило работает. Кто-нибудь может просветить меня?

Номера строк не совпадают. Можете ли вы подтвердить, что показанный здесь код является именно тем, который вызвал указанную ошибку?

Manavalan Gajapathy 23.05.2018 17:26

Попробуйте поместить свое первое расширение в одну строку, возможно, не уверен, что вы можете разделить ее вот так

rioualen 23.05.2018 20:05

@rioualen expand разрешает разделение строк

Manavalan Gajapathy 24.05.2018 03:39
Почему в 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
3
1 129
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Подобные ошибки обычно вызваны смешиванием пробелов и табуляции для отступа. Обязательно используйте только пробелы.

Я подтверждаю это. Я исправил свой код только пробелами и теперь работает. Спасибо.

Leandro Boralli 24.05.2018 19:04

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