一致するfastaファイルをインポートする

一致するfastaファイルをインポートする

list.txt:

58759__len__2903
58759__len__2903
673957__len__1655
673957__len__1655
3566454__len__1744

seq.fasta:

>58759__len__2903
TTTTCCGTAGAGGAGATCCCTATTTTTAGGTTTGTAAGAGATCATTTT
>67777__len__2978
TTTTTAGGTTTGTAAGACCGTAGAG
>673957__len__1655
CCCTATTTTTAGGTTTGTAAGGTTTGTAAGACCGTAGAG
>3566454__len__1744
GGTTTGTAAGACCGTAGAGGGTTTGTAAGACCGTAGAG

output.fasta:

>58759__len__2903
TTTTCCGTAGAGGAGATCCCTATTTTTAGGTTTGTAAGAGATCATTTT
>673957__len__1655
CCCTATTTTTAGGTTTGTAAGGTTTGTAAGACCGTAGAG
>3566454__len__1744
GGTTTGTAAGACCGTAGAGGGTTTGTAAGACCGTAGAG

行を一致させlist.txt(重複がある場合は一意の行のみを使用)、出力ファイルに示されているseq.fastaようにFASTAファイルを抽出します。

ベストアンサー1

あなたが示した簡単なケースは、マイナーなものです。シーケンスは1行を超えないため、簡単に使用してgrep各IDとその後の行を検索できます。

grep -Fwf list.txt -A 1  seq.fasta | grep -v '^--$'  > out.fasta

このオプションを使用すると、出力行グループ間に追加された行のみがフィルタリングされますgrep -v '^--$'--grep-A

不正行為を避けるために、(GNU)ソートを介してリストを渡すことができます。

grep -Fwf <(sort -u list.txt) -A 1  seq.fasta | grep -v '^--$'  > out.fasta

使用されるフラグは次のとおりです。

   -f FILE, --file=FILE
          Obtain  patterns  from  FILE,  one  per  line.   The  empty file
          contains zero patterns, and therefore matches nothing.   (-f  is
          specified by POSIX.)
   -w, --word-regexp
          Select  only  those  lines  containing  matches  that form whole
          words.  The test is that the matching substring must  either  be
          at  the  beginning  of  the  line,  or  preceded  by  a non-word
          constituent character.  Similarly, it must be either at the  end
          of  the  line  or  followed by a non-word constituent character.
          Word-constituent  characters  are  letters,  digits,   and   the
          underscore.
   -F, --fixed-strings
          Interpret PATTERN as a  list  of  fixed  strings,  separated  by
          newlines,  any  of  which is to be matched.  (-F is specified by
          POSIX.)
   -A NUM, --after-context=NUM
          Print NUM  lines  of  trailing  context  after  matching  lines.
          Places   a  line  containing  a  group  separator  (--)  between
          contiguous groups of matches.  With the  -o  or  --only-matching
          option, this has no effect and a warning is given.

ただし、ほとんどの場合、シーケンスは複数行で構成されているため、十分ではありません。この種の作業がたくさんある場合は、このexonerateツールバーをインストールすることをお勧めします。一般的には、バイオインフォマティクスの作業に非常に便利で、次の優れたツールが含まれていますfastafetch

  1. Guilty Freeキットをインストールします。これは Debian ベースのシステムのリポジトリにあり、以下からも取得できます。ここ

     sudo apt-get install exonerate
    
  2. fastaファイルのインデックスを作成します。これは、シーケンスをすばやく検索するために使用されます。

     fastaindex seq.fasta seq.idx 
    
  3. シーケンスを抽出します。

     $ fastafetch -f seq.fasta -i seq.idx -Fq <(sort -u list.txt )
     >3566454__len__1744
     GGTTTGTAAGACCGTAGAGGGTTTGTAAGACCGTAGAG
     >58759__len__2903
     TTTTCCGTAGAGGAGATCCCTATTTTTAGGTTTGTAAGAGATCATTTT
     >673957__len__1655
     CCCTATTTTTAGGTTTGTAAGGTTTGTAAGACCGTAGAG
    

おすすめ記事