У меня есть вопрос о случайном выборе чтения из выборочных файлов fastq с парным концом. Я прочитал несколько тем по этому поводу, но никто не смог решить мою проблему: Я получил два файла fastq R1.fastq и R2.fastq. Я хочу добиться случайного отбора этих файлов, и из каждой выборочной пары считываний я хочу случайным образом выбрать только одно чтение.Выбор случайного чтения из пары считываний в файле fastq
То, что я до сих пор есть ...
Я пробовал свои файлы с помощью seqtk:
seqtk sample -s100 R1.fastq 10000 > R1_sample.fastq
seqtk sample -s100 R2.fastq 10000 > R2_sample.fastq
я отсортирован каждый файл по последовательности ID так:
paste - - - - < R1_sample.fastq | sort -k1 -t " " | tr "\t" "\n" > R1_sample_sorted.fastq
I сделал то же самое с 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
, а затем каким-то образом выбрать для чтения cooresponding на номер я получил от 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
, но на этот раз я всегда получаю пять раз. Все еще отсутствует. И второй и третий считывающие заголовки одинаковы. Этого не должно быть.
Были ли сценарии решают вашу проблему? –