正則表達(dá)式
學(xué)習(xí)資料:
為什么要學(xué)習(xí)正則表達(dá)式:在進(jìn)行基因序列比對(duì)的時(shí)候配椭,需要對(duì)每個(gè)基因的特定序列進(jìn)行匹配星压、評(píng)分花沉,匹配規(guī)則往往比較復(fù)雜,正則表達(dá)式可以高效的實(shí)現(xiàn)這一需求督暂。
入門知識(shí)點(diǎn):
- \b是正則表達(dá)式規(guī)定的一個(gè)特殊代碼(好吧裳食,某些人叫它元字符哆姻,metacharacter),代表著單詞的開頭或結(jié)尾,也就是單詞的分界處封断。雖然通常英文的單詞是由空格斯辰,標(biāo)點(diǎn)符號(hào)或者換行來(lái)分隔的,但是\b并不匹配這些單詞分隔字符中的任何一個(gè)坡疼,它只匹配一個(gè)位置彬呻。
舉例:從him,history,high,hi中查找hi這個(gè)單詞,需要使用的正則表達(dá)式為:\bhi\b
假如你要找的是hi后面不遠(yuǎn)處跟著一個(gè)Lucy柄瑰,你應(yīng)該用\bhi\b.*\bLucy\b
*同樣是元字符闸氮,不過它代表的不是字符,也不是位置教沾,而是數(shù)量——它指定*前邊的內(nèi)容可以連續(xù)重復(fù)使用任意次以使整個(gè)表達(dá)式得到匹配湖苞。
0\d\d-\d\d\d\d\d\d\d\d匹配這樣的字符串:以0開頭,然后是兩個(gè)數(shù)字详囤,然后是一個(gè)連字號(hào)“-”财骨,最后是8個(gè)數(shù)字(也就是中國(guó)的電話號(hào)碼。當(dāng)然藏姐,這個(gè)例子只能匹配區(qū)號(hào)為3位的情形)隆箩。
\d是個(gè)新的元字符,匹配一位數(shù)字(0羔杨,或1捌臊,或2,或……)兜材。
-不是元字符理澎,只匹配它本身
為了避免那么多煩人的重復(fù),我們也可以這樣寫這個(gè)表達(dá)式:0\d{2}-\d{8}曙寡。這里\d后面的{2}({8})的意思是前面\d必須連續(xù)重復(fù)匹配2次(8次)糠爬。
元字符
代碼 | 說明 |
---|---|
. | 匹配除換行符以外的任意字符 |
\w | 匹配字母或數(shù)字或下劃線或漢字 |
\s | 匹配任意的空白符 |
\d | 匹配數(shù)字 |
\b | 匹配單詞的開始或結(jié)束 |
^ | 匹配字符串的開始 |
$ | 匹配字符串的結(jié)束 |
表1.常用的元字符
代碼 | 說明 |
---|---|
. | 匹配除換行符以外的任意字符 |
\w | 匹配字母或數(shù)字或下劃線或漢字 |
\s | 匹配任意的空白符 |
\d | 匹配數(shù)字 |
\b | 匹配單詞的開始或結(jié)束 |
^ | 匹配字符串的開始 |
$ | 匹配字符串的結(jié)束 |
字符轉(zhuǎn)義
特殊字符字符轉(zhuǎn)義符:\
主要用于解決*.等特殊字符在正則表達(dá)式中無(wú)法代表其自身的問題。
*表達(dá)方式: \*
.表達(dá)方式:\.
重復(fù)
代碼/語(yǔ)法 | 說明 |
---|---|
* | 重復(fù)零次或更多次 |
+ | 重復(fù)一次或更多次 |
? | 重復(fù)零次或一次 |
{n} | 重復(fù)n次 |
{n,} | 重復(fù)n次或更多次 |
{n,m} | 重復(fù)n到m次 |
表2.常用的限定符
代碼/語(yǔ)法 | 說明 |
---|---|
* | 重復(fù)零次或更多次 |
+ | 重復(fù)一次或更多次 |
? | 重復(fù)零次或一次 |
{n} | 重復(fù)n次 |
{n,} | 重復(fù)n次或更多次 |
{n,m} | 重復(fù)n到m次 |
字符類
要想查找數(shù)字举庶,字母或數(shù)字执隧,空白是很簡(jiǎn)單的,因?yàn)橐呀?jīng)有了對(duì)應(yīng)這些字符集合的元字符户侥,但是如果你想匹配沒有預(yù)定義元字符的字符集合(比如元音字母a,e,i,o,u)需要自己制定規(guī)則:如[aeiou]就匹配任何一個(gè)英文元音字母镀琉,[.?!]匹配標(biāo)點(diǎn)符號(hào)(.或?或!)。
\(?0\d{2}[) -]?\d{8}
“(”和“)”也是元字符蕊唐,后面的分組節(jié)里會(huì)提到屋摔,所以在這里需要使用轉(zhuǎn)義。
這個(gè)表達(dá)式可以匹配幾種格式的電話號(hào)碼替梨,像(010)88886666钓试,或022-22334455署尤,或02912345678等。我們對(duì)它進(jìn)行一些分析吧:首先是一個(gè)轉(zhuǎn)義字符(,它能出現(xiàn)0次或1次(?),然后是一個(gè)0亚侠,后面跟著2個(gè)數(shù)字(\d{2})曹体,然后是)或-或空格中的一個(gè),它出現(xiàn)1次或不出現(xiàn)(?)硝烂,最后是8個(gè)數(shù)字(\d{8})箕别。
分枝條件
正則表達(dá)式里的分枝條件指的是有幾種規(guī)則,如果滿足其中任意一種規(guī)則都應(yīng)該當(dāng)成匹配滞谢,具體方法是用|把不同的規(guī)則分隔開串稀。其實(shí)就是將所有可能的正則表達(dá)式用|連接起來(lái)啦~
0\d{2}-\d{8}|0\d{3}-\d{7}這個(gè)表達(dá)式能匹配兩種以連字號(hào)分隔的電話號(hào)碼:一種是三位區(qū)號(hào),8位本地號(hào)(如010-12345678)狮杨,一種是4位區(qū)號(hào)母截,7位本地號(hào)(0376-2233445)。
注意:
使用分枝條件時(shí)橄教,要注意各個(gè)條件的順序清寇。
分組
用小括號(hào)來(lái)指定子表達(dá)式(也叫做分組),然后你就可以指定這個(gè)子表達(dá)式的重復(fù)次數(shù)了护蝶,你也可以對(duì)子表達(dá)式進(jìn)行其它一些操作(后面會(huì)有介紹)华烟。
(\d{1,3}.){3}\d{1,3}是一個(gè)簡(jiǎn)單的IP地址匹配表達(dá)式。要理解這個(gè)表達(dá)式持灰,請(qǐng)按下列順序分析它:\d{1,3}匹配1到3位的數(shù)字盔夜,(\d{1,3}.){3}匹配三位數(shù)字加上一個(gè)英文句號(hào)(這個(gè)整體也就是這個(gè)分組)重復(fù)3次,最后再加上一個(gè)一到三位的數(shù)字(\d{1,3})堤魁。
反義
有時(shí)需要查找不屬于某個(gè)能簡(jiǎn)單定義的字符類的字符喂链。比如想查找除了數(shù)字以外,其它任意字符都行的情況妥泉,這時(shí)需要用到反義:
代碼/語(yǔ)法 | 說明 |
---|---|
\W | 匹配任意不是字母椭微,數(shù)字,下劃線涛漂,漢字的字符 |
\S | 匹配任意不是空白符的字符 |
\D | 匹配任意非數(shù)字的字符 |
\B | 匹配不是單詞開頭或結(jié)束的位置 |
[^x] | 匹配除了x以外的任意字符 |
[^aeiou] | 匹配除了aeiou這幾個(gè)字母以外的任意字符 |
表3.常用的反義代碼
代碼/語(yǔ)法 | 說明 |
---|---|
\W | 匹配任意不是字母赏表,數(shù)字检诗,下劃線匈仗,漢字的字符 |
\S | 匹配任意不是空白符的字符 |
\D | 匹配任意非數(shù)字的字符 |
\B | 匹配不是單詞開頭或結(jié)束的位置 |
[^x] | 匹配除了x以外的任意字符 |
[^aeiou] | 匹配除了aeiou這幾個(gè)字母以外的任意字符 |
例子:\S+匹配不包含空白符的字符串。
<a[^>]+>匹配用尖括號(hào)括起來(lái)的以a開頭的字符串逢慌。
以上是一些基礎(chǔ)類正則表達(dá)式悠轩,高級(jí)進(jìn)階還請(qǐng)看鏈接腫作者給的更詳細(xì)的示例。強(qiáng)烈推薦看開頭的鏈接網(wǎng)站攻泼,真的是30分鐘入門正則表達(dá)式~
linux中可以使用grep配合正則表達(dá)式抓取符合一定特征的字符火架。
k-mer簡(jiǎn)介
The term k-mer typically refers to all the possible substrings of length k that are contained in a string.
k-mer主要有以下一些用途:
- 糾錯(cuò):出現(xiàn)少的k-mer可能是測(cè)序錯(cuò)誤
- 分類:一些特殊的k-mer可能鑒定基因組
- 偽比對(duì):新的偽比對(duì)軟件可以直接利用常見的k-mer來(lái)定位reads
k-mer計(jì)算要遠(yuǎn)遠(yuǎn)快于序列比對(duì)鉴象,因此可以加快比對(duì)效率。
序列比對(duì)
序列比對(duì)是生物信息學(xué)最為核心的概念何鸡。
在顯示序列比對(duì)結(jié)果時(shí)纺弊,-代表空缺,|代表匹配骡男,.代表錯(cuò)配淆游。示例:
ATGCAAATGACAAATAC
|||| |||.||.|
ATGC---TGATAACT--
如果沒有特殊說明,一般是用下面的序列和上面的序列進(jìn)行比對(duì)隔盛,上面的結(jié)果說明序列有5個(gè)堿基缺失和2個(gè)堿基錯(cuò)配犹菱。
ATGC---TGATAACT--
|||| |||.||.|
ATGCAAATGACAAATAC
這種序列比對(duì)結(jié)果說明序列有5個(gè)插入堿基和2個(gè)錯(cuò)配堿基。
序列比對(duì)結(jié)果與評(píng)分規(guī)則有很大關(guān)系吮炕。
常用堿基匹配評(píng)分規(guī)則 EDNAFULL scoring matrix腊脱。
curl -O ftp://ftp.ncbi.nlm.nih.gov/blast/matrices/NUC.4.4
cat NUC.4.4
序列比對(duì)評(píng)分分為堿基(基因)匹配規(guī)則和蛋白匹配評(píng)分規(guī)則兩種。
序列比對(duì)結(jié)果和匹配規(guī)則的選取有很大關(guān)系龙亲。如果要深入了解陕凹,建議閱讀更多的參考資料。我也需要再深入學(xué)習(xí)一下鳄炉。