sedを使用して種名に基づいてFASTAシーケンスファイルをソートする

sedを使用して種名に基づいてFASTAシーケンスファイルをソートする

複数の種の536個のDNA配列を含むFASTAファイルがありますが、必ずしも種名でソートする必要はありません。

シーケンスを含む私のヘッダーは次のとおりです。

>COLFG678-14|MZ630002|Agabus|adpressus|AEC6988|COI-5P
AATC
>INRMA1514-14|NA|Agabus|thomsoni|ABZ7453|COI-5P
ATTT
>CONOR053-14|NA|Agabus|sturmii|AAJ1337|COI-5P
ACAA
>COLFG676-14|MZ631238|Agabus|adpressus|AEC6988|COI-5P
AATG

これらのシーケンスには{A、C、G、T}文字が含まれ、通常は数百文字です。

私のデータセットの他のすべての種名と一緒にFASTAファイルにすべての種名を一緒に表示する必要があります。

ここで「種」とは、FASTAタイトルの3番目と4番目の区切り点に位置する種名を意味する。したがって、最初のヘッダーの">COLFG678-14|MZ630002|Agabus|adpressus|AEC6988|COI-5P"種名は次のようになります。アガリクス・ブレッセイ

私に必要な出力は

>COLFG676-14|MZ631238|Agabus|adpressus|AEC6988|COI-5P
AATG
>COLFG678-14|MZ630002|Agabus|adpressus|AEC6988|COI-5P
AATC
>CONOR053-14|NA|Agabus|sturmii|AAJ1337|COI-5P
ACAA
>INRMA1514-14|NA|Agabus|thomsoni|ABZ7453|COI-5P
ATTT

デフォルトでは、同じ名前のすべての種が一緒に表示されるように、種名で並べ替えます。簡単に入手できるので参考にしてください

>COLFG678-14|MZ630002|Agabus|adpressus|AEC6988|COI-5P
AATC
>COLFG676-14|MZ631238|Agabus|adpressus|AEC6988|COI-5P
AATG
>CONOR053-14|NA|Agabus|sturmii|AAJ1337|COI-5P
ACAA
>INRMA1514-14|NA|Agabus|thomsoni|ABZ7453|COI-5P
ATTT

最初の2つのヘッダーの順序が変わる場所です。種名と一緒に表記することはまだ一緒に現れることが重要です。

最も簡単な方法は使用することですsed(私はMac Proで実行しています)。

私は次のようなものを持っている必要があることを知っています

sed -i.bak ... file.fas // sort sequences and create a backup copy

...しかし、正規表現に初めて触れたので、これが何なのかよくわかりません。 3番目と4番目の区切り文字|、つまりで分割する必要があると思いますが|Agabus|adpressus|、これを最もよく表示する方法が何であるかよくわかりません。

ベストアンサー1

フィールド3と4に基づいて行をソートするだけです。フィールドは | で区切られます。

$ sed 'N;s/\n/#/g' infile | sort -t '|' -k3,4 | tr '#' '\n'

>COLFG676-14|MZ631238|Agabus|adpressus|AEC6988|COI-5P
AATG
>COLFG678-14|MZ630002|Agabus|adpressus|AEC6988|COI-5P
AATC
>CONOR053-14|NA|Agabus|sturmii|AAJ1337|COI-5P
ACAA
>INRMA1514-14|NA|Agabus|thomsoni|ABZ7453|COI-5P
ATTT

おすすめ記事