私はUnixに初めて触れました!
fastqファイルに3つ以上のAsが連続して含まれる読み取り数は何ですか?
egrep 'A{3}' を使用して、AAA が何人かを教えてくれます。しかし今はAAA連続3つ以上を知りたいです。ただし、> =は機能しません。これを決定するためにawkを使用できますか?
また、正規表現を使用して4つ以上のAの後にT以外の項目がある読み取り数を確認するにはどうすればよいですか? (GCまたはA)したがって、Aは> = 4でなければならず、次にGCorAになる必要があります。
編集:連続して3Aと言うと、次のような意味です。 GGCTAAAAAACGGAT
答え1
3つ以上の場合は、次のものをa
使用できますa{3,}
。たとえば、
$ echo a | grep -E 'a{3,}'
$ echo aa | grep -E 'a{3,}'
$ echo aaa | grep -E 'a{3,}'
aaa
$ echo aaaa | grep -E 'a{3,}'
aaaa
$ echo aaaaaaaaaa | grep -E 'a{3,}'
aaaaaaaaaa
3つ以上のa
sの後にa以外の項目がある場合は、次のようにt
使用できます。a{3,}[^t]
$ echo aaa | grep -E 'a{3,}[^t]'
$ echo aaat | grep -E 'a{3,}[^t]'
$ echo aaax | grep -E 'a{3,}[^t]'
aaax
ただし、anはa
aではないt
ため、 'aaaa'などの項目と一致し、その後a
にa以外の文字が続きますt
(この場合a
)。
$ echo aaaa | grep -E 'a{3,}[^t]'
aaaa
a
文字列がisでもなくisでもないで終わるようにするには、次のようにしt
ますa{3,}[^at]
。たとえば、
$ echo aaaa | grep -E 'a{3,}[^ta]'
$ echo aaaaaaaa | grep -E 'a{3,}[^ta]'
$ echo aaaaaaaattt | grep -E 'a{3,}[^ta]'
$ echo aaaaaaaab | grep -E 'a{3,}[^ta]'
aaaaaaaab
答え2
3 つ以上のシーケンス数を印刷するには、A
次のようにします。
awk '{print gsub (/AAAA*/, "&")}' file
3
4
4
1
2番目のリクエストの場合は、上記の内容を編集してください。
awk '{print gsub (/AAAAA*[CG]/, "&")}' file
「Followed by A」はA *パターンで上書きされました。
答え3
fastqファイルに3つ以上のAsが連続して含まれる読み取りは何ですか?
fastq形式のファイルなので、正確な数を得るには、すべての行ではなく実際のシーケンス行のみを表示する必要があります。変数を使用して各4行シーケンスブロックの2行目に一致を制限することでNR
これを達成できます。
awk 'NR%4 == 2 && /AAA/ { count++ } END { print count+0 }' foo.fastq
4つ以上のAとT以外の項目に続く読み取りは何回実行されましたか? (GCまたはA)
awk 'NR%4 == 2 && /AAAA([^T]|$)/ { count++ } END { print count+0 }' foo.fastq
AAAAAT
(4つのAとその後に別のAがあるので一致します。)