一起來了解一下基因區間RangeData

劉小澤寫于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都是正鏈,分別表示ACTTC ,y是在負鏈,其堿基信息就要從3'向5'看,AGCCTTCG

不同range類型

兩套坐標基準

  • 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) ,然后序列就被分成了CTTACTTCGAAGGCTG ;這一點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

Welcome to our bioinfoplanet!

?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容