Я реализовал некоторые рабочие процессы анализа данных NGS с помощью Nextflow. Я использовал парные конечные каналы (метод fromFilePairs) для некоторых своих рабочих процессов. У меня возникла проблема, которой я не ожидал после выполнения нескольких рабочих процессов: мои идентификаторы образцов иногда смешивались, что приводило к неточным выводам для процессов, в которых это произошло. Я думаю, это связано с проблемой недетерминированных входных каналов (https://www.nextflow.io/blog/2019/troubleshooting-nextflow-resume.html).
Предположим, я применил свой рабочий процесс к этим файлам с парным концом: sample1_R {1,2} .fastq, sample2_R {1,2} .fastq
process Step1 {
input:
tuple pair_ID, file(A) from channelA
tuple pair_ID, file(B) from channelB
tuple pair_ID, file(C) from channelC
...
}
Для этого типа процесса с более чем одним кортежем pair_ID в качестве входных данных пара_ID данных (= имена моих образцов) может быть перепутана, и мой процесс в конечном итоге будет использовать случайные входные файлы A и B из < strong> sample1 и входной файл C из sample2 вместо всех файлов (A, B, C) из тот же pair_ID (ключ = only sample1 или only sample2). У меня возникла эта проблема со случайно смешанными именами входных файлов (которая повлияла на выходные данные) после нескольких выполнений рабочего процесса, после использования -resume при возникновении ошибки, но также после полного успешного выполнения рабочего процесса.
Чтобы иметь один и тот же ключ (pair_ID) между входными файлами, испускаемыми каждым из 3 каналов, я использовал оператор join
:
Process Step1 {
input:
tuple pair_ID, file(A), file(B), file(C) from channelA.join(channelB).join(channelC)
...
}
Этот оператор, кажется, заставляет все работать так, как ожидалось, я не вижу никакого смешения в своих идентификаторах образцов и в моих окончательных результатах. В документе (https://www.nextflow.io/docs/latest/operator.html?highlight=join#join), join
, похоже, подходит только для двух каналов, поэтому я не уверен, правильно ли я использую его для трех каналов.
Подходит ли мой метод join
? Или все еще есть недостатки? Есть ли лучший способ исправить мою проблему? Если я не уверен, что этот метод является правильным, чтобы избежать смешения в моем идентификаторе образцов, я мог бы перейти на другую систему управления рабочим процессом, такую как Snakemake, но я бы действительно хотел бы решить эту проблему и продолжить использование Nextflow.
Заранее спасибо, не сомневайтесь, если что-то непонятно!