眼病查不清基因 这三个数据库帮你快速定位致病突变
做遗传性眼病基因诊断的朋友,一定都经历过这种崩溃——拿到一份全外显子组(WES)或者全基因组(WGS)测序报告,几千上万个变异摆在你眼前,到底哪个才是”罪魁祸首”?今天咱们就来聊聊,如何利用三个核心数据库,帮你从茫茫变异的海洋里,把那个致病突变精准地捞出来。
第一步:先搞清楚这三个数据库是谁
在深入操作之前,先给大家介绍一下今天要用的三个”老伙计”:
OMIM——孟德尔遗传的”百科全书”
全称是 Online Mendelian Inheritance in Man,你可以把它理解为遗传病领域的”权威字典”。里面收录了已知的孟德尔遗传病、致病基因和基因型-表型关联信息。如果一个眼病基因在OMIM里找不到踪迹,那它的致病性就得打个问号。
ClinVar——临床变异的”公共数据库”
这个数据库由美国国立生物技术信息中心(NCBI)维护,收集了各个实验室提交的关于人类遗传变异及其临床意义的数据。简单说,就是全球各地医生和研究人员把”这个变异到底有没有病”的信息都往这里填,你可以直接查某个变异有没有前人报过。
HGMD——人类基因突变的”大档案库”
Human Gene Mutation Database,是目前全球最大的已知致病突变数据库,里面收录了数十万条经过文献验证的致病性突变记录。虽然访问需要付费授权,但很多医院和研究机构都已经买了许可,查起来非常方便。
第二步:用真实案例带你走一遍流程
假设你面对这样一个病例:一个8岁的男孩,视力进行性下降,眼底检查提示视网膜色素变性(RP)表现。外显子组测序后,你筛选出了一批候选变异,其中有一个很有意思——
基因:EYS 变异:c.12562C>T (p.Arg4188*) 杂合性:HEMIZYGOUS
现在的问题来了:这个变异到底是不是致病的?怎么用数据库来验证?
在OMIM里查基因
访问 OMIM 官网,搜索”EYS”,你会发现它跟两种眼病相关:
- ARRP6(常染色体隐性视网膜色素变性6型)——OMIM编号 613837
- Dominant retinitis pigmentosa 的一种亚型
这里的关键信息是:EYS相关的RP绝大多数是常染色体隐性遗传(AR)。回到你的病例,如果这个男孩是半合子(HEMI),那说明他可能只继承了一个突变等位基因,这种情况下需要进一步确认他是否还有另一个隐性突变,或者这个变异本身是否是显性负效应。
在ClinVar里查具体变异
去 ClinVar 搜索”EYS c.12562C>T”或”NM_001271473.3:c.12562C>T”,你会看到:
- 这个变异被多个实验室提交过
- 临床意义标注为 “Pathogenic”(致病) 或 “Likely Pathogenic”(可能致病)
- 有些提交记录来自不同人群,表型描述都是视网膜色素变性
如果ClinVar里已经有”Pathogenic”的评级,那这个证据等级已经很高了。但要注意,不同提交者的评级可能不一致,这时候你需要看”Conflict Level”——如果多个独立实验室都认定为致病,可信度就大大增强。
在HGMD里查突变谱
HGMD Professional里搜索EYS基因,你会看到这个基因总共收录了多少条已知致病突变、各是什么类型(无义、错义、剪接位点、缺失/插入等)、分布在哪个结构域。
比如EYS基因编码的蛋白有一个纤连蛋白III型结构域(FN3),而这个c.12562C>T是一个无义突变,导致蛋白提前终止,很可能造成蛋白截短。结合HGMD里其他EYS无义突变的致病性记录,这个变异的致病机制就站得住脚了。
第三步:实战技巧——如何用代码自动化查询
如果你经常做基因诊断,手动一个个查数据库效率太低。下面用Python给你写一个自动化查询的脚本框架,你可以基于自己的需求修改:
import requests
import json
# =====================
# 1. 查询ClinVar
# =====================
def query_clinvar(variant_id, api_key=None):
"""
查询ClinVar中某个变异的临床意义
variant_id格式示例: NM_001271473.3(EYS):c.12562C>T
"""
url = "https://api.ncbi.nlm.nih.gov/clinvar/v2/variants"
params = {
"variant_id": variant_id,
"format": "json"
}
headers = {}
if api_key:
headers["Authorization"] = f"Bearer {api_key}"
response = requests.get(url, params=params, headers=headers)
data = response.json()
clinical_significance = []
for sub in data.get("variants", []):
cs = sub.get("clinicalSignificance", {}).get("value", "Unknown")
submitters = [s.get("name") for s in sub.get("submissions", [])]
clinical_significance.append({
"significance": cs,
"submitters": submitters
})
return clinical_significance
# 使用示例
result = query_clinvar("NM_001271473.3(EYS):c.12562C>T")
for item in result:
print(f"临床意义: {item['significance']}, 提交者: {item['submitters']}")
# =====================
# 2. 查询OMIM基因信息
# =====================
def query_omim(gene_symbol):
"""
查询OMIM中某个基因的遗传模式和相关疾病
"""
url = f"https://omim.org/api/hgnc/gene?symbol={gene_symbol}"
# 注意:实际使用需要替换为正确的OMIM API端点
response = requests.get(url)
data = response.json()
return {
"gene_symbol": data.get("symbol"),
"diseases": data.get("disease_descriptions", []),
"inheritance": data.get("inheritance", [])
}
# 使用示例
omim_info = query_omim("EYS")
print(f"基因: {omim_info['gene_symbol']}")
print(f"遗传模式: {omim_info['inheritance']}")
print(f"相关疾病: {omim_info['diseases']}")
# =====================
# 3. 综合判定逻辑
# =====================
def evaluate_variant(gene, variant, clinvar_result, omim_result):
"""
综合多个数据库信息,给出变异致病性判定
"""
evidence = {
"gene_known": False,
"variant_in_clinvar": False,
"variant_pathogenic": False,
"match_inheritance": False
}
# 检查基因是否在OMIM中有记录
if omim_result and omim_result.get("gene_symbol"):
evidence["gene_known"] = True
# 检查ClinVar中是否有提交
if clinvar_result:
evidence["variant_in_clinvar"] = True
# 检查是否有致病性评级
for item in clinvar_result:
if item["significance"] in ["Pathogenic", "Likely Pathogenic"]:
evidence["variant_pathogenic"] = True
# 检查遗传模式是否匹配
# 这里需要根据实际病例的遗传方式判断
# 例如病例是常隐,OMIM中该基因是否有常隐相关疾病
evidence["match_inheritance"] = True # 简化示例
# 综合判定
if evidence["gene_known"] and evidence["variant_pathogenic"]:
return "Strong Evidence for Pathogenicity"
elif evidence["variant_pathogenic"]:
return "Moderate Evidence for Pathogenicity"
else:
return "Insufficient Evidence - Further Investigation Needed"
# 综合评估
final_result = evaluate_variant(
gene="EYS",
variant="c.12562C>T",
clinvar_result=query_clinvar("NM_001271473.3(EYS):c.12562C>T"),
omim_result=query_omim("EYS")
)
print(f"综合判定: {final_result}")
这个脚本的思路很简单:把三个数据库的信息拉回来,然后按照 ACMG/AMP 指南的框架做一个初步判定。当然,真实的诊断流程比这复杂得多,但这套自动化流程可以帮你省去大量手动查询的时间。
第四步:几个很多人会踩的坑
坑一:ClinVar的评级不是最终结论
ClinVar里同一个变异可能有不同的评级——有的实验室说是致病,有的说是意义未明(VUS)。这很正常,因为不同实验室的判定标准、参考序列、甚至分析流程都可能不同。遇到这种情况,不要只看评级,要看提交者的资质和文献支持。如果有多个高水平实验室都认同致病性,那可信度就高得多。
坑二:OMIM的遗传模式标注可能过时
OMIM的信息更新速度相对较慢,有些基因的遗传模式可能在新研究出来后没有及时更新。比如以前认为某个眼病基因是显性遗传,后来发现其实也有隐性家系。所以OMIM只是参考,一定要结合最新的文献和临床表型综合判断。
坑三:HGMD的突变不一定都致病
HGMD里收录的很多突变来自文献报道,但文献中有些证据等级并不高,可能只是一个家系中的一次观察。HGMD本身会对突变做分类(Pathogenic、Polymorphism等),但有些标注为Pathogenic的突变,实际证据可能并不充分。建议在临床诊断中,把HGMD作为线索来源,而不是最终判定依据。
第五步:除了这三个,还有哪些”替补队员”?
除了OMIM、ClinVar、HGMD这三个主力,还有一些对眼病诊断特别有用的数据库:
RetNet(https://.sph.uth.edu/retnet/) 专门收录视网膜疾病相关基因,按疾病类型(RP、锥杆营养不良、Leber先天性黑蒙等)分类,对你快速判断”这个病可能涉及哪些基因”非常有用。
EyeD(https://eyed.omim.org/) 专门针对眼病领域的OMIM子集,按眼部结构(角膜、晶状体、视网膜、视神经等)分类基因,比全量OMIM更聚焦。
Orphanet 如果你遇到的是罕见眼病,Orphanet能提供疾病命名、基因、流行病学的综合信息,特别适合做鉴别诊断参考。
gnomAD 这个虽然不是致病性数据库,但它是排除变异的神器。如果一个变异在gnomAD的普通人群里频率很高(比如>1%),那它基本不可能是重度致病变异。在做过滤时,这一步绝对不能省。
最后说两句
做遗传性眼病的基因诊断,说难也难,说简单也简单。难的是面对海量的变异数据不知道怎么下手;简单的是,只要你把这三个数据库用好、用熟,很多”查不清”的问题其实有迹可循。
记住一个核心原则:数据库是工具,不是答案。OMIM告诉你基因和疾病的关联,ClinVar告诉你这个变异有没有人报过、报了什么,HGMD告诉你这个基因还有哪些已知突变。但最终的判定,需要结合家系分析、表型匹配、功能验证,缺一不可。
如果你刚开始接触这个领域,建议从一个具体的病例开始,跟着我上面说的流程走一遍,慢慢就会形成自己的”诊断直觉”。多查、多问、多对比,你会发现自己对基因变异的判断会越来越准。
有问题随时交流,基因诊断这条路,咱们一起走。
