У меня есть вопрос о случайном выборе чтения из выбранных парных файлов fastq. Я прочитал несколько тем, касающихся этого способа, но ни одна из них не смогла решить мою проблему, а именно: я получил два файла fastq R1.fastq и R2.fastq. Чего я хочу добиться, так это случайной выборки этих файлов, и из каждой выбранной пары чтений я хочу случайным образом выбрать только одно чтение.
То, что я сделал до сих пор, это...
Я пробовал свои файлы, используя seqtk:
seqtk sample -s100 R1.fastq 10000 > R1_sample.fastq
seqtk sample -s100 R2.fastq 10000 > R2_sample.fastq
затем я отсортировал каждый файл по идентификатору последовательности следующим образом:
paste - - - - < R1_sample.fastq | sort -k1 -t " " | tr "\t" "\n" > R1_sample_sorted.fastq
Я сделал то же самое с R2_sample.fastq. Затем я объединил оба отсортированных файла так, чтобы R1 был в одном столбце, а R2 во втором столбце:
pr -mts R1_sample_sorted.fastq R2_sample_sorted.fastq > merged.fastq
файл выглядит так:
@D3YGT8Q1:297:C7T4RACXX:3:1101:1000 @D3YGT8Q1:297:C7T4RACXX:3:1101:1000
TGATGTTTGGATGTAAAGTGAAATATTAGTTGGCG AGCTTTCCTCACTATCTGCTTCATCCGCCAACTAA
+ +
BBBFFFFFFFFFFFIFFIFFIIIIFIIIFIIFIII B0<FFFFFFFFFFIIIIIIIIIIIIIIIIIIIIII
@D3YGT8Q1:297:C7T4RACXX:3:1101:1000 @D3YGT8Q1:297:C7T4RACXX:3:1101:1000
CCTCCTAGGCGACCCAGACAATTATACCCTAGCCA TGTTTAAGGGGTTGGCTAGGGTATAATTGTCTGGG
+ +
BBBFFFFFFFFFFIIIIIIIIIIIIIIIIIIIIII BBBFFFFFFFFFFIIIIIIIIBFFIIIIIIIIIII
@D3YGT8Q1:297:C7T4RACXX:3:1101:1000 @D3YGT8Q1:297:C7T4RACXX:3:1101:1000
TTCTATTTATTACCTCAGAAGTTTTTTTCTTCGCA GTAAAAGGCTCAGAAAAATCCTGCGAAGAAAAAAA
+ +
BBBFFFFFFFFFFIIIIIIIIFIIFIIIFIIIIII BBBFFFFFFFFFFIIIIIIIIIIIIIIIIIIIIII
И теперь я хочу случайным образом выбрать только одно чтение из каждой пары. Моя первоначальная идея состояла в том, чтобы использовать shuf для получения случайного числа из диапазона 1-2:
shuf -i1-2 -n1
а потом каким-то образом выбрать чтение, соответствующее номеру, который я получил от shuf. Например, в первой итерации я получил 1, поэтому я выбираю чтение из столбца 1, во второй итерации я получил 2, поэтому из следующей пары чтений я выбираю чтение во втором столбце и т. д.
Я застрял здесь. Итак, мой вопрос: есть ли аккуратный способ сделать это? Может быть, с awk или каким-то другим способом? Любая помощь будет очень признательна.
Комментарий к ответу Ashafixs:
Спасибо за ответ и извините за огромную задержку...! Я протестировал ваши решения, и они оба имеют недостатки.
Для первого сценария я создал тестовые файлы fastq R1 и R2, каждый из которых содержит 6 операций чтения. После запуска сценария я ожидаю, что он также выведет 6 операций чтения (24 строки) в правильном порядке (ID, seq, desc, qual), но в виде набора операций чтения, случайно выбранных из файла R1 или R2. Что я получил из сценария:
@D3YGT8Q1:297:C7T4RACXX:3:1101:10002:27381 2:N:0:ATGCTCGTTCTCTCGT
AGCTTTCCTCACTATCTGCTTCATCCGCCAACTAATATTTCACTTTACATCCAAACATCAAGATC
+
B0<FFFFFFFFFFIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIFIFIFIIIIIIIIII
@D3YGT8Q1:297:C7T4RACXX:3:1101:10004:50631 2:N:0:ATGCTCGTTCTCTCGT
@D3YGT8Q1:297:C7T4RACXX:3:1101:10007:32152 1:N:0:ATGCTCGTTCTCTCGT
GTAAGGTTAGGAGGGTGTTAATTATTAAAATTAAGGCGAAGTTTATTACTCTTTTTTGAATGTTG
+
BBBFFFFFFFFFFIIBFFIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIFFFFFFFF
Вы можете видеть, что вывод неверен. Во втором чтении отсутствуют три строки, и всего должно быть шесть чтений, а не три. Кроме того, каждый раз, когда я запускаю скрипт, он выводит разное количество чтений.
Для второго сценария я ввожу объединенный файл fastq, как описано выше. Вывод похож на первый вывод скрипта:
@D3YGT8Q1:297:C7T4RACXX:3:1101:10002:27381 2:N:0:ATGCTCGTTCTCTCGT
AGCTTTCCTCACTATCTGCTTCATCCGCCAACTAATATTTCACTTTACATCCAAACATCAAGATC
+
B0<FFFFFFFFFFIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIFIFIFIIIIIIIIII
@D3YGT8Q1:297:C7T4RACXX:3:1101:10004:50631 2:N:0:ATGCTCGTTCTCTCGT
@D3YGT8Q1:297:C7T4RACXX:3:1101:10004:50631 2:N:0:ATGCTCGTTCTCTCGT
TGTTTAAGGGGTTGGCTAGGGTATAATTGTCTGGGTCGCCTAGGAGGAGATCGGAAGAGCGTCGT
+
BBBFFFFFFFFFFIIIIIIIIBFFIIIIIIIIIIIFFFIIIIIIFIIIIIFIIIFFFFFFFFFFF
@D3YGT8Q1:297:C7T4RACXX:3:1101:10004:88140 1:N:0:ATGCTCGTTCTCTCGT
ACTGTAACTTAAAAATGATCAAATTATGTTTCCCATGCATCAGGTGCAATGAGAAGCTCTTCATC
+
BBBFFFFFFFFFFIIIIIIIIIIFIIIIIIFIIIIIIIIIIIIIFIIIIIIIIIIIIIIIIIIII
@D3YGT8Q1:297:C7T4RACXX:3:1101:10007:32152 2:N:0:ATGCTCGTTCTCTCGT
CTAGTTTTGACAACATTCAAAAAAGAGTAATAAACTTCGCCTTAATTTTAATAATTAACACCCTC
+
BBBFFFFFFFFFFIIIIIIIIIIIIIIFFFIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIFIII
но на этот раз я всегда получаю пять прочтений. Еще не хватает одного. И второй и третий заголовки чтения одинаковы. Этого не должно происходить.