以下に示すように、FASTQ形式のIlluminaシーケンスファイルがあります。
@ERR009148.2485 IL26_1382:7:1:224:616 length=36
ATCACATGCTCCTTGTTCTGCAGCTTGGTGCGGATG
+ERR009148.2485 IL26_1382:7:1:224:616 length=36
>>>>>>>>>>>>>>>>>>><>><>>>5>>->><->*
@ERR009148.2486 IL26_1382:7:1:914:59 length=36
AAAGAAGTAAAATAAGAAGGCAATGCTTGTGGAAGG
+ERR009148.2486 IL26_1382:7:1:914:59 length=36
.>>74::1>174151/7152313,3&003,00&2%2
@ERR009148.2487 IL26_1382:7:1:251:589 length=36
GCCATAAACACCCCAGCACCACATTCATCAGAAGGG
+ERR009148.2487 IL26_1382:7:1:251:589 length=36
>>>>>>>>>>>>>>>>>>>>>>8>>>>>>><;<>>7
@ERR009148.2488 IL26_1382:7:1:911:194 length=36
ATTGAGGTGGAGTAGATTAGGCGTAGGTAGAAGTAG
+ERR009148.2488 IL26_1382:7:1:911:194 length=36
<>>>=>>>>>>>=;<:>>7>==<<7;=67=/57/57
各レコードから元のシーケンスを抽出するだけです。sed
これを達成するためにどのコマンドを使用できますか?
予想出力:
ATCACATGCTCCTTGTTCTGCAGCTTGGTGCGGATG
AAAGAAGTAAAATAAGAAGGCAATGCTTGTGGAAGG
GCCATAAACACCCCAGCACCACATTCATCAGAAGGG
ATTGAGGTGGAGTAGATTAGGCGTAGGTAGAAGTAG
答え1
使用sed
。
sed -En '/^[ATGC]+$/p' infile
使用grep
:
grep -E '^[ATGC]+$' infile
使用awk
:
awk '/^[ATGC]+$/' infile
これらのコマンドはすべて、文字セットのみを含む行を返しますA, C, T, G
。
答え2
あなたは始めたいですFASTQ形式ファイル:
GNUを使用してファイルに空白行がないと仮定すると、次のようになりますsed
。
$ sed -n '2~4p' file.fastq
ATCACATGCTCCTTGTTCTGCAGCTTGGTGCGGATG
AAAGAAGTAAAATAAGAAGGCAATGCTTGTGGAAGG
GCCATAAACACCCCAGCACCACATTCATCAGAAGGG
ATTGAGGTGGAGTAGATTAGGCGTAGGTAGAAGTAG
この式は、入力データの2行目から始まり、4行()ごとに()を2~4p
印刷します。p
~4
より具体的で次の行を取得するには@
:
$ sed -n '/^@/{n;p;}' file.fastq
その後、その文字で始まる行を探し@
、その行を見つけたらn
次の行を読み取り()印刷します。
答え3
使用幸せ(以前のPerl_6)
~$ raku -ne '.put if m/^ <[ATGC]>+ $/;' file
上記は、Perlシリーズのプログラミング言語であるRakuで書かれた答えです。 Rakuは、他の言語のエンジンよりも読みやすい強力な正規表現エンジンを備えています。
-ne
non-autoprint:、、、、などのコマンドラインフラグを使用してawk
入力行を読み取り、デオキシリボヌクレオチド文字で構成される行全体と一致するかどうかをテストします。一致するものが見つかると()行が表示されます(どの変数が出力されるかを明確にするための略語)。A
T
G
C
$_
put
.put
$_.put
注:プログラマーは、次のように36マーシーケンスの一致を要求できます。
~$ raku -ne '.put if m/^ <[ATGC]>**36 $/;' file
または、FASTQ形式を4フィールド(つまり行)レコード形式で指定するので、オールインおよびlines
/rotor
をbatch
4つにまとめて読み取ることができます。次に、2行目(例:「フィールド2…元のシーケンス文字」)、0インデックスされます.[1]
。
~$ raku -e '*.[1].put for lines.rotor(4);' file
入力例:
@ERR009148.2485 IL26_1382:7:1:224:616 length=36
ATCACATGCTCCTTGTTCTGCAGCTTGGTGCGGATG
+ERR009148.2485 IL26_1382:7:1:224:616 length=36
>>>>>>>>>>>>>>>>>>><>><>>>5>>->><->*
@ERR009148.2486 IL26_1382:7:1:914:59 length=36
AAAGAAGTAAAATAAGAAGGCAATGCTTGTGGAAGG
+ERR009148.2486 IL26_1382:7:1:914:59 length=36
.>>74::1>174151/7152313,3&003,00&2%2
@ERR009148.2487 IL26_1382:7:1:251:589 length=36
GCCATAAACACCCCAGCACCACATTCATCAGAAGGG
+ERR009148.2487 IL26_1382:7:1:251:589 length=36
>>>>>>>>>>>>>>>>>>>>>>8>>>>>>><;<>>7
@ERR009148.2488 IL26_1382:7:1:911:194 length=36
ATTGAGGTGGAGTAGATTAGGCGTAGGTAGAAGTAG
+ERR009148.2488 IL26_1382:7:1:911:194 length=36
<>>>=>>>>>>>=;<:>>7>==<<7;=67=/57/57
出力例(すべてのコード例):
ATCACATGCTCCTTGTTCTGCAGCTTGGTGCGGATG
AAAGAAGTAAAATAAGAAGGCAATGCTTGTGGAAGG
GCCATAAACACCCCAGCACCACATTCATCAGAAGGG
ATTGAGGTGGAGTAGATTAGGCGTAGGTAGAAGTAG
https://en.wikipedia.org/wiki/FASTQ_format
https://docs.raku.org/言語/regexes
https://raku.org