隨著小麥基因組注釋版本的不斷更新,中國春(Chinese Spring)參考序列的基因編號也從舊版逐步遷移到新版。對于經(jīng)常處理轉(zhuǎn)錄組、比較基因組或重測序數(shù)據(jù)的生信研究者來說,ID不一致常常導致數(shù)據(jù)整合的“卡殼”時刻。最近,IWGSC(國際小麥基因組測序聯(lián)盟)發(fā)布了RefSeq Annotations v2.1,對應的基因ID格式從原來的TraesCS*02G*(v1.1)變?yōu)榱?code>TraesCS*03G*(v2.1)。如何快速、準確地將手中的舊版ID映射到新版?本文將基于官方對應關(guān)系,為你提供一套清晰的處理流程和一個可直接復用的腳本,幫你輕松跨過版本鴻溝。
為什么需要更新基因ID?
基因組注釋版本更新往往意味著基因模型更加準確、基因邊界更清晰、甚至合并或拆分了一些基因座。v2.1版本在v1.1的基礎(chǔ)上進行了大規(guī)模修正,因此ID命名規(guī)則也隨之改變(數(shù)字部分從02變?yōu)?3)。如果你正在使用Ensembl Plants、NCBI或IWGSC數(shù)據(jù)庫下載的v1.1時代的數(shù)據(jù),而新發(fā)表的論文或公共數(shù)據(jù)已采用v2.1,ID映射就是無法繞開的第一步。
數(shù)據(jù)來源與官方映射文件
所有官方對應關(guān)系都打包在IWGSC提供的壓縮文件中,直接下載即可:
https://urgi.versailles.inrae.fr/download/iwgsc/IWGSC_RefSeq_Annotations/v2.1/iwgsc_refseq_all_correspondances.zip
解壓后得到一個名為iwgsc_refseq_all_correspondances.csv的表格。該表格包含四列,依次是:v1.0(最早的注釋版本)、v1.1(我們常用的舊版)、v2.1(新版)、css2014(另一套命名體系)。對我們來說,最關(guān)鍵的是第二列(v1.1基因ID)和第三列(v2.1基因ID)。
ID映射處理流程詳解
直接拿舊ID去表格里搜索可不行,因為表格中的ID都是基因級別(不帶轉(zhuǎn)錄本后綴),而且部分舊ID存在細微的格式錯誤。下面是經(jīng)過驗證的處理步驟:
第一步:去掉轉(zhuǎn)錄本版本號
你的ID通常是TraesCS2A02G206200.1這樣的形式,末尾的“.1”表示轉(zhuǎn)錄本版本。官方映射表只包含基因ID(無后綴),因此必須先去掉“.1”。如果某基因有多個轉(zhuǎn)錄本,映射后也只會得到一個基因級的新ID。
第二步:修正常見格式錯誤
在實際處理中,我們發(fā)現(xiàn)兩類典型錯誤:
- 前綴缺失或錯位:如“raesCS2A02G206200.1”明顯少寫了“T”,需要補全為“TraesCS2A02G206200.1”。
- 數(shù)字位數(shù)不足:例如“TraesCS6A02G04170.1”實際上應該是“TraesCS6A02G041700.1”(數(shù)字部分固定為6位,缺位補零)。這些錯誤如果不修正,將無法匹配到任何結(jié)果。
第三步:在映射表中匹配
清洗后的舊ID與映射表第二列進行精確匹配,提取第三列作為新版ID。如果匹配失敗,再嘗試在ID末尾加上“LC”進行二次匹配(部分低置信度基因在表中帶有“LC”后綴)。
第四步:去重
如果一個基因?qū)鄺l轉(zhuǎn)錄本,它們都會映射到同一個基因ID,因此輸出時需按基因去重,保留唯一對應關(guān)系。
部分映射示例
下面列舉了幾個具有代表性的映射結(jié)果,可以直觀感受版本變化:
-
TraesCS2A02G206200.1→TraesCS2A03G0433700 -
TraesCS2D02G209900.1→TraesCS2D03G0438600 -
TraesCS4D02G322700.1→TraesCS4D03G0752900 -
TraesCS6A02G04170.1(修正為TraesCS6A02G041700.1后) →TraesCS6A03G0093800 -
TraesCSU02G105300.1→TraesCSU03G0065000LC(此基因在v2.1中屬于低置信度模型)
可以看到,大部分ID都能順利找到對應關(guān)系,只有少數(shù)低置信度基因會帶上“LC”標記。如果你在后續(xù)分析中使用這類基因,建議留意其注釋質(zhì)量。
一鍵復現(xiàn):自動化映射腳本
為了讓你能批量處理自己的ID列表,我們編寫了一個Shell腳本map_cs_id_to_v21.sh。它內(nèi)置了上述所有處理邏輯,并附帶了示例ID供測試。
腳本用法
- 直接運行(使用內(nèi)置示例):
./map_cs_id_to_v21.sh - 處理自定義ID文件(每行一個ID,支持空行和
#注釋):./map_cs_id_to_v21.sh your_ids.txt
核心邏輯解讀
腳本的核心部分并不復雜,但包含了幾個關(guān)鍵細節(jié):
# 1. 規(guī)范化ID:補全前綴、去掉后綴、補零
awk '
{
id=$0
sub(/^raesCS/, "TraesCS", id) # 修復前綴
sub(/\.1$/, "", id) # 去掉轉(zhuǎn)錄本后綴
if (id=="TraesCS6A02G04170") id="TraesCS6A02G041700" # 補零
print $0 "\t" id
}' "$INPUT" > normalized.tsv
# 2. 在映射表中匹配,并處理LC回退
while IFS=$'\t' read -r input_id old_id; do
new_id=$(awk -v k="$old_id" '$2==k {print $3; exit}' "$CSV")
if [ -z "$new_id" ]; then
new_id=$(awk -v k="$old_id" '$2==k"LC" {print $3; exit}' "$CSV")
fi
echo -e "$input_id\t$old_id\t${new_id:-NOT_FOUND}"
done < normalized.tsv
- 規(guī)范化步驟同時處理了前綴缺失和數(shù)字位數(shù)問題,確保匹配的準確性。
- 匹配時先精確查找,若失敗則自動嘗試帶“LC”的版本,盡可能覆蓋所有可能。
- 輸出結(jié)果包含原始ID、規(guī)范化后的舊ID以及對應的新ID,方便你核對。
注意事項與擴展應用
- 映射是基因級別的:如果你需要保留轉(zhuǎn)錄本信息,映射后可能需要根據(jù)新ID重新從GTF/GFF文件中提取轉(zhuǎn)錄本列表。
- 低置信度基因(LC):部分ID映射結(jié)果帶有“LC”,表明這些基因在v2.1中屬于低置信度模型,使用時需謹慎,或考慮用同源基因替代。
- 腳本修改建議:如果你需要映射的ID量非常大(數(shù)萬條),建議將映射表加載到數(shù)據(jù)庫或用Python的pandas進行合并,腳本適合中小規(guī)模列表的快速驗證。
希望這份指南和腳本能幫你順利完成基因ID的版本升級。如果你在映射過程中遇到其他奇葩的ID格式,也歡迎分享到評論區(qū),大家一起完善這個實用工具。