劉小澤寫于19.3.30
我們肯定都遇到許多利用坐標去處理范圍信息的需求,比如要定位基因組的某個位置,這個位置可能代表了gene model 、genetic variants(包括了SNPs、inser‐tions/deletions)、transposable elements 、binding sites;又或者想看看染色體某個區域的GC含量、統計overlap、計算coverage、提取序列等。這些都屬于Range Data的處理范圍
推薦一本英文版的書 Bioinformatics Data Skills
處理Range Data一般有兩種途徑:R中的GenomicRanges
和Linux中的bedtools
什么是RangesData?
Ranges are integer intervals that represent a subsequence of consecutive positions on a sequence like a chromosome.
它是一種坐標,記錄序列信息?;蚪M的坐標規定都是整數,所以不會出現類似這樣的坐標(50,403,503.53
)
坐標有三大要素:
-
染色體/序列名稱(因為有的基因組并沒拼接完,還在scaffold或contig階段):每個基因組都由一組染色體序列組成,我們需要指定在哪個大范圍中。但是目前染色體命名沒有一個標準,比如UCSC和NCBI的染色體是chr開頭
chr1
,而emsembl直接數字1
- 區間:比如114,414,997 to 114,693,772,由起始位點和終止位點組成
-
鏈:因為DNA是雙鏈,所以基因的特征信息(gene feature)可以存儲在正鏈(positive/forward)或者負鏈(negative/reverse)
strand
需要注意的是,坐標信息與參考基因組相關,因此在討論ranges的時候要注意基因組的版本號,比如
chr15:27,754,876-27,755,076
這個區間在不同版本的基因組中就表示不同信息,尤其是在和別人共享信息時可以說我得到的這個范圍是基于GRCh38的,或者基于GRCh37/hg19的如果之前根據舊版本的基因組得到的坐標要遷移到新版,可以使用一些工具,比如CrossMap 【支持BED、GFF/GTF、SAM/BAM、Wiggle、VCF文件格式在不同基因組版本之間的切換】、NCBI Genome Remapping Service 【是一個網頁工具】、LiftOver 【基于UCSC基因組瀏覽器】
不同的range類型
下圖中x和y存在1個bp的overlap ;z沒有任何overlap,只是自己跨越了1個bp;
通過箭頭可以知道,x和z都是正鏈,分別表示ACTT
和C
,y是在負鏈,其堿基信息就要從3'向5'看,AGCCTTCG
兩套坐標基準
-
0-based:就是說序列的第一位坐標記為
0
,最后一位坐標是序列長度-1
,遵循半開半閉區間[start,end)
,包含左邊不包含右邊。例如:[1,5)
表示坐標為1,2,3,4
,這個模式就和Python一樣>>>"CTTACTTCGAAGGCTG"[1:5] 'TTAC'
-
1-based:這個好像比較符合我們的習慣,從1開始,遵循雙閉區間
[start,end]
,兩邊都包括。例如:[2,5]
就是2,3,4,5
,這個模式就和R一樣> substr("CTTACTTCGAAGGCTG", 2, 5) [1] "TTAC"
兩種坐標系統
這兩種系統各有優劣:
盡管我們認為1-based更符合自然計數法則,但是有些情況下并不好用,比如:
計算區間長度(range width/span)時,使用0-based系統,直接用end-start
就好,這也比較好理解;但是1-based系統需要end-start+1
另外,0-based系統支持
zero-width feature
,常用來描述兩個堿基之間的位置,比如在上圖中我們現在找一個酶切位點[12,12)
,然后序列就被分成了CTTACTTCGAAGG
和CTG
;這一點1-based系統也不能實現,它最小就是1個堿基
不同文件支持的坐標系統不同:
比較麻煩的鏈信息
從https://www.biostars.org/p/3423/看了幾個重要的概念:
- forward strand, this means reading left-to-right, and for the reverse strand it means right-to-left
- A gene can live on a DNA strand in one of two orientations. The gene is said to have a coding strand (also known as its sense strand), and a template strand (also known as its antisense strand).
- mRNA sequence always corresponds to the 5-3 coding sequence of a gene.
- mRNA matches the coding sequence of the gene, not the template sequence(看圖)
轉錄時基因以負鏈為模板鏈,從負鏈的3‘向5’轉錄(合成的轉錄本是5‘=》3’,同時與正鏈/編碼鏈上對應位置的序列一致)
注意:上圖中的文件(除了Blast)都是基于參考基因組生成,而參考基因組序列是以正鏈為基準
這也就是說:我們從UCSC、NCBI或Ensembl下載的參考基因組都是正鏈堿基序列。
但是基因分布是多樣的,有的本身就在正鏈,即:基因對應的轉錄本序列恰好和正鏈上5‘到3’的堿基序列一致;又有的基因存在于負鏈,基因對應的轉錄本序列(以及它對應的氨基酸序列)則是和負鏈的5‘到3’方向的序列一致
因此如果某個基因存在于負鏈,從bed、GTF等文件中看到的坐標比如是chr1:2,473,087-2,492,258,抽取的這一區間序列比如是
TCTTTAC...CCGAA
,其實真正NCBI記錄的基因序列是TTCGG...GTAAAGA
,與bed或GTF中記錄的序列正好是反向互補
因此,如果想從參考基因組中抽出位于負鏈的基因序列,需要:1.先抽出參考基因組給的序列;2.將序列反向互補。
對于轉錄本在負鏈的情況,exon的實際位置也變了:原來在bed或GTF中forward 5'=>3'記錄的第一個位置,實際上是在轉錄本的末尾;記錄的最后一個位置
所以,我們在GTF文件中看到的正負鏈信息就十分有用了:
- 如果記錄
+
,表示在正鏈,那么沒有問題,和文件中記錄的位置和序列都一樣; - 如果記錄
-
,那么真實信息一定是和文件記錄的信息反向互補的,實際的位置也會改變
花了15分鐘思考做出來這個圖
最后的補充:
鏈的信息的確很重要,但是沒有做鏈特異性建庫時(表示我們是不知道鏈的方向信息的),如果要統計有多少reads比對到了某個特定的基因,一般reads會在兩條鏈都有比對,那么這時一般會將兩條鏈的比對結果都統計上,以免漏掉真正基因的區域
歡迎關注我們的公眾號~_~
我們是兩個農轉生信的小碩,打造生信星球,想讓它成為一個不拽術語、通俗易懂的生信知識平臺。需要幫助或提出意見請后臺留言或發送郵件到jieandze1314@gmail.com