Следующий поток: возможно ли преобразовать канал очереди в канал значений? - PullRequest
0 голосов
/ 29 декабря 2018

У меня есть процесс A, который выводит файл в канал outA.Я хочу использовать этот файл в качестве входных данных для 3 последующих процессов B, C и D.Поскольку созданный канал outA является канальным по умолчанию, я не могу напрямую использовать файл более одного раза (в отличие от каналов значений).

В настоящее время я использую оператор into для дублирования канала outA как описано здесь (см. код ниже).

Я также знаю, что вы можете создать канал значений из файла, выполнив Channel.value(file('/path/to/file.txt')).

Мой код в настоящее время:

// Upstream process creating a queue channel with one file
process A {
    output:
        file outA
    "echo 'Bonjour le monde !' > $outA"
}

// Queue channel triplication
outA.into {inB; inC; inD}

// Downstream processes all using the same file
process B {
    input:
        file inB
    "script of process B $inB"
}

process C {
    input:
        file inC
    "script of process C $inC"
}

process D {
    input:
        file inD
    "script of process D $inD"
}

Я отлично работаю, как есть, но мне интересно, возможно ли преобразовать канал очереди outA в канал значений, чтобы я могиспользуйте тот же канал, что и вход для процессов B, C и D.

1 Ответ

0 голосов
/ 02 января 2019

Для этого можно использовать оператор first(), например:

inX = outA.first()

process B {
    input:
        file inX
    "script of process B $inX"
}

etc

Также обратите внимание, что когда у процесса нет входных данных (например, у процесса A), его выходы являются неявными каналами значений.

...