1行にはDNA配列識別子があり、その直下の次の行にはDNA配列を含むファイルがあります。 DNA配列は長いが整列している。
ファイル1.fasta:
>AB244308.1.1447 233_28379 1..292
------------------------------------- ------------- ------------------------ -------------------------- ----------- GTGCAG -CCGC-CGC-GGTAATAC-GG-AGGAT-GCG-A-GCG-TTATC-CGG-ATTCATT-GG-GT-TTA--AAGGGTGCGCAGG-CGG-GCGT-AT- ---------- - -------AA------GTCA--------- -- - ------------ ----GGG--G--TG--A-AA-TG--CC- AC- GG ------------------------- ------------------------ - ------------------------- ------------------------ - ------------------------- ------------------------ ---------CT- C-AA------------ ------------- -------------- ---------- ------------- --- ---------------------------------- ----- -------- --- ---CCGTGGA--AC----TG--CC---T-- T---- ---------- T--GA-TA---C- ----------- ---- ---------- ---------- --T--GT--AT--GTC--- -- ---------- ---------- ----- ---------- --------- ---- -- ---------- --TTGAGT--T-- ---T-AG------TT-GA---- ------AGTG---GG- C - - - - - - - - - - - - - - - - - - - - - - - - - - - - ---------------------- ------- -------- - --------------- ------GG--A--ATG------ --- -- -------------- ------------- -- --------- ----- -- ------TAGC-AT--GT-AG-CG- GT--G--- ------- ----A--AA----------- ---- ------- ----------------- ------------ ------- --- ----TG-C-AT-AG--AG-A-TG---------- ------------ ----- --CT-- ----AC------AGA-AC- A-CC--------- -------- ---- ----------- --- ---GA--T--A--GC-GAA-G--GC----A----- -G--CTCA- --CTA-------- -A- -GT-TA------------------- -------- ------ ---------- ----------- ------ ------- -------------- ------ -----AG ---------ACT--GA--CG-----C--- -------------- ------ ----- -----TC--A-TG- -CA-CG-A--AA-GC---- G-TG--GG -G-AT-CA-AA-CA--GG-AT-- ------TA-G-ATA- -------CC-CCC-GTA--GT -CC---- ---------------- - ----------------------------------------------------------- -------- ------ ------- -------------- ------ ---- ----- ------------ ------ -------------- ------------------ -- ------ ----------- ----------------------- ------ --
このファイルには、この形式に従う約112,000のシーケンスがあります。約20個のシーケンス識別子があり、これをfastaファイルから抽出して別のファイルに保存したいと思います。
シーケンス識別子は以下のようにtxtファイルにあります。
ファイル2.txt:
AB244308.1.1447
New.ReferenceOTU151
New.CleanUp.ReferenceOTU19
New.ReferenceOTU59
New.CleanUp.ReferenceOTU6
シーケンス識別子を持つ行を抽出するだけでなく、DNAシーケンスを含む次の行を抽出してすべての新しいテキストファイルに印刷したいと思います。
この答えで知りました(別のファイルリストの文字列を含むテキストファイルから行を抽出するには?)grepとsedを使用する必要があります。別の答えも見つかりました(https://stackoverflow.com/questions/7103531/how-to-get-the-part-of-file-after-the-line-that-matches-grep-expression-first)はgrepに一致する行を取得することに関連しています。
残念ながら、これらの答えを組み合わせて何をしたいのかわかりません。
答え1
彼らが言ったように、猫の皮をむく方法はいくつかあります。
grep -F -f File2.txt -A 1 File1.fasta > File3.log
< File2.txt sed -e 's|[.]|\\&|g; s|.*|g/^>&/.,.+1W File3.log|' | ed -s - File1.fasta
ed
ここでは、動的に生成されたバッチスクリプトにシーケンス識別子を適用します。次にed
それを渡してfasta
ファイルを処理し、結果を保存するために使用します。File3.log
答え2
シーケンスが常に1行にある場合、これはマイナーです(標準のfasta形式ではありません。btw、fastaは通常1行に60文字です)。一致する行と次の行を印刷するには、grep
withを使用して検索するパターンのリストを指定します。-A 1
-f
grep -A1 -f File2.txt File1.fasta
ただし、1つのシーケンスを呼び出し、>foobar
別のシーケンスに名前を付け、>foo
このfoo
場合は両方とも印刷されます。より複雑なソリューションについては、私の答えをご覧ください。ここ。 retrievesqs.plスクリプトをご希望の場合はお知らせください。そのリンクでは使用できなくなります。この回答を更新する必要があります。
答え3
20個の識別子のそれぞれにtxtファイルがありますか?次に、それらが順序1.txtなどと呼ばれると仮定します。 (適応してください)
for file in sequence*.txt; do
id=`grep AB $file`
grep $id -A1 $file1.fasta |grep -v $id
done
2行目は常にIDが含まれていると想定していますAB
。それ以外の場合は、常に最初の行にすることもできます。その後、それを使用しますhead -1 $file
。
3行目はid行と後続行を抽出します。 2番目のgrepはid行を削除します。どのシーケンスがどのIDに対応しているのかを知るために、ID行をシーケンスと共に出力したい場合は、それを削除できます。
追加grep
オプションを使用すると、-m1
ファイルに一致するものが1つしかないことがわかり、検索速度をわずかに向上させることができます。