Удалить и добавить информацию о последовательности в определенную позицию в файле

Использование Here-Document и Подстановка команд является стандартным способом в этом случае:

grep '^[a-zA-Z.:]' < "$filepath"
$(cat -- "$filepath")
IN

Для других вопросов они были объяснены во многих вопросах раньше:

0
03.04.2019, 01:46
2 ответа

Использованиеawk:

awk '(FNR-1) % 2 == 0 { name=$1; chr=$2; len=$3; next }
     (FNR-2) % 4 == 0 { seq=substr($0,1,6) }
                      { print name "." seq, chr, len
                        print substr($0,7) }' file.fastq >newfile.fastq

Эта awkпрограмма состоит из трех блоков.

  1. Первый блок запускает в каждой второй строке (последовательность и строки заголовка данных качества ), начиная с первой. Он сохраняет три бита информации в этой строке в трех переменных. Затем он сразу же переходит к следующей строке ввода.

  2. Второй блок извлекает 6 первых символов из строки последовательности в seq, но только для каждой четвертой строки, начиная со строки 2 (только строки последовательности ).

  3. Последний блок работает только со строками, не обработанными первым блоком (для каждой последовательности или строки данных качества )и формирует выходные данные.

Чтобы использовать это наgzip-сжатых файлах (илиbgzip-сжатых файлах, обычно используемых в проектах биоинформатики ),использовать

zcat file.fastq.gz | awk '...' | bgzip -c >newfile.gz

Чтобы использовать переменную в качестве значения, используемого для резки, рассмотрим

awk -v n=6 '(FNR-1) % 2 == 0 { name=$1; chr=$2; len=$3; next }
            (FNR-2) % 4 == 0 { seq=substr($0,1,n) }
                             { print name "." seq, chr, len
                               print substr($0,n+1) }'

Где -v n=6управляет длиной разреза.

Вы также можете поместить фактический awkкод (в одинарные кавычки )в отдельный файл сценария и использовать его как

awk -v n=6 -f script.awk file.fastq
3
28.01.2020, 02:22

данные в файле fastq, используйте gnu sed на 4 на 4 строки,

$ sed -nE ' N;N;N;s/(.+\.1)(\s.+\n)(.{6})(\w+)\s*(\n.+\.1)(.+\n).{6}(\w+)/\1.\3\2\4\5.\3\6\7/p' fastq

@SRR5394526.1.CGATGT 1 length=150
TAAATCAACGATAACTACACCG
+SRR5394526.1.CGATGT 1 length=150
FJJJJJJJJJJAJJJJJJJJJF
0
28.01.2020, 02:22

Теги

Похожие вопросы