FASTQ 헤더를 시퀀스 읽기에 다시 추가

FASTQ 헤더를 시퀀스 읽기에 다시 추가

헤더 줄에 마지막 : 다음에 @로 시작하는 바코드 시퀀스가 ​​추가된 fastq 파일이 있습니다. 이 패턴은 4줄마다 반복됩니다. 아래는 예입니다:

@FCID:1:1101:15473:1334 1:N:0:TATTTGCGACAA
AGTGGACTAGGGGATGCCAGCCGCCGCGGTAATACGTAGGTGGCAAGCGTTATCCGGATTTATTGGGCGTAAAGGGAACGCAGGCGGTCTTTTAAGTCTGATGTGAAAGCCTTCGGCTTAACCGGAGTAGTGCTTTGGAAACTGTGCAGCTCGAGTGCAGGAGAGGTAAGCGGAATTCCTAGTGTAGCGGTGAAATGCGTAGATATTAGGAGGAACACCAGTGGCGAAGGCGGCTTACTGGACTGTAACT
+
AAAABFFFFFFCGGGGGGGGGGGGGGGGGGGGGHHHHHHGHHGGGHGHGGGGHHHGGGGGHHHHHHHHGGGGHHHGHHGGGGGGGGGGGGHHHHHHHGHGHHHHHHHHFHHHHHHGGGGHHHHGGGGGHHHHHHHHHHGHHHHHHFHHFHGGGGDFHHHHH.EGGGBFFGGGGGGEFFFGGGGFFGGGF-DFEFFFFFFA.-./FFFFBFFFBFFFFFFA?;/B?F@DCFEAAF-@FFBBBBFFEFFFB;
@FCID:1:1101:15528:1336 1:N:0:GCGGGAAAAAAA
GAATTGGACGAGTGCCAGCAGCCGCGGTAATACGTAGGTGGCAAGCGTTATCCGGAATTATTGGGCGTAAAGAGGGAGCAGGCGGCAGCAAAGGTCTGTGGTGAAAGACTGAAGCTTAACTTCAGTAAGCCATAGAAACCGGGCAGCTAGAGTGCAGGAGAGGATCGTGGAATTCCATGTGTAGCGGTGAAATGCGTAGATATATGGAGGAACACCAGTGGCGAAGGCGACGATCTGGCCTGCAACTGAC
+
DDDDDFFFFCDCGGGGGGGGGGHGGGGGGGHHHHHHHGHHGHHHGHGGGGHHHGGGGGHHHHHHHHGGGGHHGHHGGGGHHHGGGGGGGHHHHGGHHHHHHHGHHHHHHHHHHHHGHHHGHGHHHHHHHHHHHHHHHHHHGGGGGGGHHHHHGHGHHHGGHGDHHGDFFGGGGGGGGGGFGGGFGGG9?EGFGGFFAD;EFFFFFFFFFFFFFFFDEEFFFFFFF-DE->CFFEEAFFFFFFFBFFFFF0

내 목표는 시퀀스 읽기의 모든 두 번째 행에 바코드를 추가하고 나머지는 변경하지 않는 것입니다. 다음은 예상되는 출력입니다(바코드는 각 시퀀스 라인의 마지막 12자입니다).

@FCID:1:1101:15473:1334 1:N:0:TATTTGCGACAA
AGTGGACTAGGGGATGCCAGCCGCCGCGGTAATACGTAGGTGGCAAGCGTTATCCGGATTTATTGGGCGTAAAGGGAACGCAGGCGGTCTTTTAAGTCTGATGTGAAAGCCTTCGGCTTAACCGGAGTAGTGCTTTGGAAACTGTGCAGCTCGAGTGCAGGAGAGGTAAGCGGAATTCCTAGTGTAGCGGTGAAATGCGTAGATATTAGGAGGAACACCAGTGGCGAAGGCGGCTTACTGGACTGTAACTTATTTGCGACAA
+
AAAABFFFFFFCGGGGGGGGGGGGGGGGGGGGGHHHHHHGHHGGGHGHGGGGHHHGGGGGHHHHHHHHGGGGHHHGHHGGGGGGGGGGGGHHHHHHHGHGHHHHHHHHFHHHHHHGGGGHHHHGGGGGHHHHHHHHHHGHHHHHHFHHFHGGGGDFHHHHH.EGGGBFFGGGGGGEFFFGGGGFFGGGF-DFEFFFFFFA.-./FFFFBFFFBFFFFFFA?;/B?F@DCFEAAF-@FFBBBBFFEFFFB;
@FCID:1:1101:15528:1336 1:N:0:GCGGGAAAAAAA
GAATTGGACGAGTGCCAGCAGCCGCGGTAATACGTAGGTGGCAAGCGTTATCCGGAATTATTGGGCGTAAAGAGGGAGCAGGCGGCAGCAAAGGTCTGTGGTGAAAGACTGAAGCTTAACTTCAGTAAGCCATAGAAACCGGGCAGCTAGAGTGCAGGAGAGGATCGTGGAATTCCATGTGTAGCGGTGAAATGCGTAGATATATGGAGGAACACCAGTGGCGAAGGCGACGATCTGGCCTGCAACTGACGCGGGAAAAAAA
+
DDDDDFFFFCDCGGGGGGGGGGHGGGGGGGHHHHHHHGHHGHHHGHGGGGHHHGGGGGHHHHHHHHGGGGHHGHHGGGGHHHGGGGGGGHHHHGGHHHHHHHGHHHHHHHHHHHHGHHHGHGHHHHHHHHHHHHHHHHHHGGGGGGGHHHHHGHGHHHGGHGDHHGDFFGGGGGGGGGGFGGGFGGG9?EGFGGFFAD;EFFFFFFFFFFFFFFFDEEFFFFFFF-DE->CFFEEAFFFFFFFBFFFFF0

awk를 사용해 보았지만 작동하지 않습니다.

awk '(FNR) % 4 == 1 { -F; seq=$8; next }
     (FNR) % 4 == 2 { line[FNR]=$0; print $0 seq}' R1test.fq > R1test_new.fq

누구든지 도와줄 수 있나요?

답변1

나는 다음과 같은 가정을 하겠다.

  1. 모든 레코드에는 정확히 4개의 행이 있습니다. 이것은아니요fastq 형식에 필요하지만 짧은 읽기 데이터의 경우인 경우가 많습니다.

  2. :바코드는 항상 첫 번째 줄부터 시작하여 4줄마다 마지막 문자 다음의 마지막 문자입니다.

이러한 가정이 성립하는 경우 다음을 수행할 수 있습니다.

awk -F':' 'NR % 4 == 1 {seq=$NF}
     NR % 4 == 2 { $0=$0 seq}1' R1test.fq > R1test_new.fq

이것은 귀하의 코드와 비슷한 아이디어입니다. 불필요한 단계를 제거하고 일부 문제를 해결했습니다. 마지막은 1awk의 "이 줄 인쇄"에 대한 약어입니다.

-F필드 구분 기호를 설정하기 위해 코드에서 사용을 설정할 수 없기 때문에 코드가 작동하지 않습니다. awk이는 awk 언어의 기능이 아니라 -F바이너리에 대한 옵션입니다 . awkawk 스크립트에서 필드 구분 기호를 변경하려면 FS변수(예 BEGIN{FS=":"}: )를 사용할 수 있습니다. 다음으로, 필드 구분 기호를 변경하더라도 코드가 실행되기 전에 줄이 이미 분할되어 있으므로 문제가 되지 않습니다. 블록 내에서만 구분 기호를 설정할 수 있습니다 BEGIN{}. 다른 곳에 설정한 경우 awk에게 해당 행을 다시 분석하도록 지시해야 합니다. 어쨌든, 당신은 :필드 구분자로 가 아닌 것을 원합니다 ;.

경고하다:

시퀀스의 길이가 프레드 품질 점수의 길이와 일치하지 않기 때문에 수행하려는 다운스트림 처리가 중단될 수 있습니다. 이것이 정말 좋은 생각이라고 확신하시나요?

답변2

fasta 파일 요구 사항을 처리하는 한 가지 방법은 GNU sed 스트림 편집기를 사용하는 것입니다.

여기서 sed는 @로 시작하는 줄을 보고 해당 줄에 다음 줄을 추가합니다. 그런 다음 @ 줄의 마지막 12자가 추가 줄에 추가됩니다.

sed -Ee '
  /^@/N
  s/(.{12})\n.*/&\1/
' R1test.fq > R1test_new.fq

관련 정보