バイオインフォマティクスでマルチファスタファイルのヘッダー名を変更する

バイオインフォマティクスでマルチファスタファイルのヘッダー名を変更する

これは標準のfasta形式ファイルではなく、私のfile1.fa(seqID、\ t、シーケンス)です。

abc MFSKPTKAPLNKGQEAVAKEFFDFLLDPNATEFNISGPGGTGKTFLMSHLIDDTMPA
cef AFSKPTKAPLNKGQEAVAKEFFDFLLDPNATEFNESGPGGTGKTFLMSHLIDDTMFA
rig AAAAAAAAAAAAAAAAAAAAAAAAAAGGEGKFKKKKKSKKKKKKKKKKKKKKKKKKK

それでは、次のように標準のfasta形式に変換したいと思います。

>abc
MFSKPTKAPLNKGQEAVAKEFFDFLLDPNATEFNISGPGGTGKTFLMSHLIDDTMPA
>cef 
AFSKPTKAPLNKGQEAVAKEFFDFLLDPNATEFNESGPGGTGKTFLMSHLIDDTMFA
>rig 
AAAAAAAAAAAAAAAAAAAAAAAAAAGGEGKFKKKKKSKKKKKKKKKKKKKKKKKKK

このようなことを試しましたが、「>」を追加する方法がわかりません。誰でも助けることができますか?

less -S file1.fa | sed 's/\t/\n/g' > file2.fa

答え1

sed 代わりに単に使用することもできますless。ファイルを編集することもできます。所定の位置に出力を新しいファイルにリダイレクトせずに。

あなたのsedコマンドは次のとおりです

sed -i'.bak' 's/\(.*\)\t/>\1\n/g' file1.fa

または編集したくない場合所定の位置にあなたはそれを使用することができます:

sed  's/\(.*\)\t/>\1\n/g' file1.fa > file2.fa

答え2

使用幸せ(以前のPerl_6)

raku -pe 's/^ (<:Ll>+) (\s) />$0\n/;'   

#OR

raku -pe 's/^ <((<:Ll>+) (\s))> <:Lu>+ />$0\n/;' 

この回答では、Rakuの:Ll(Unicode小文字)および:Lu(Unicode大文字)文字クラス定義を使用します.

https://docs.raku.org/言語/regexes#Unicode_properties

必要に応じて、\S+空白ではなく1つ以上の文字を表すために単に置き換えることができます。\sより具体的なトークンに変更することもできます\t

2番目の例では、Rakuの<(...)>キャプチャフラグはRakuに一致するオブジェクトを除くすべてのアイテムを削除するように指示するため、代替アイテムに一致<:Lu>+(削除ではない)があります。

入力例:

abc MFSKPTKAPLNKGQEAVAKEFFDFLLDPNATEFNISGPGGTGKTFLMSHLIDDTMPA
cef AFSKPTKAPLNKGQEAVAKEFFDFLLDPNATEFNESGPGGTGKTFLMSHLIDDTMFA
rig AAAAAAAAAAAAAAAAAAAAAAAAAAGGEGKFKKKKKSKKKKKKKKKKKKKKKKKKK

出力例:

>abc
MFSKPTKAPLNKGQEAVAKEFFDFLLDPNATEFNISGPGGTGKTFLMSHLIDDTMPA
>cef
AFSKPTKAPLNKGQEAVAKEFFDFLLDPNATEFNESGPGGTGKTFLMSHLIDDTMFA
>rig
AAAAAAAAAAAAAAAAAAAAAAAAAAGGEGKFKKKKKSKKKKKKKKKKKKKKKKKKK

https://docs.raku.org/言語/regexes
https://conf.raku.org/talk/156
https://raku.org

関連情報