ヘッダー行の最後:次に@で始まるバーコードシーケンスを追加した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
私の目標は、シーケンス読み取りのすべての2行目にバーコードを追加し、残りは変更しないことです。以下は予想される出力です(バーコードは各シーケンス行の最後の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
私は次の仮定をします。
すべてのレコードには正確に4つの行があります。これはいいえfastq形式に必要ですが、短い読み取りデータの場合であることがよくあります。
:
バーコードは常に最初の行から始まり、4行ごとに最後の文字の後の最後の文字です。
これらの仮定が成立している場合は、次のことができます。
awk -F':' 'NR % 4 == 1 {seq=$NF}
NR % 4 == 2 { $0=$0 seq}1' R1test.fq > R1test_new.fq
これはあなたのコードに似たアイデアです。不要な手順を削除し、いくつかの問題を解決しました。最後は1
awkの「この行の印刷」の略語です。
-F
フィールド区切り文字を設定するためにコードで使用を設定できないため、コードは機能しません。awk
これはawk言語の機能ではなく-F
バイナリのオプションです。awk
awkスクリプトでフィールド区切り文字を変更するには、FS
変数(たとえばBEGIN{FS=":"}
)を使用できます。次に、フィールド区切り文字を変更しても、コードが実行される前に行がすでに分割されているため、問題になりません。ブロック内でのみ区切り文字を設定できますBEGIN{}
。別の場所に設定した場合は、awkにその行を再分析するように指示する必要があります。とにかく、あなたは:
フィールドセパレータではないことを望みます;
。
警告する:
シーケンスの長さがフレッド品質スコアの長さと一致しないため、実行しようとするダウンストリーム処理が中断される可能性があります。これは本当に良いアイデアだと確信していますか?
答え2
fastaファイルの要件を処理する1つの方法は、GNU sedストリームエディタを使用することです。
ここで、sedは@で始まる行を見て、その行に次の行を追加します。その後、 @ 行の最後の 12 文字が追加行に追加されます。
sed -Ee '
/^@/N
s/(.{12})\n.*/&\1/
' R1test.fq > R1test_new.fq