来源
Ensembl 的人类基因注释,用 evanverse::download_gene_ref("human") 导出,脚本只做两件事:核对十二个列都在,然后按固定顺序写出 CSV。所以这份数据的口径完全等于 Ensembl release 115 的口径。
用之前要知道的
四件事会实际影响用法:
ensembl_id 不是唯一键。 91703 行里只有 86369 个不同的 ID——5334 行是扇出来的,原因只有一个:同一个 Ensembl 基因映射到多个 Entrez ID(除 entrez_id 外其余列完全相同)。拿它做 join 会静默地把左表放大,而且不报错。只要 Entrez 那一列,就先 distinct(ensembl_id, .keep_all = TRUE);要保留全部映射,就明确知道自己在做一对多。
上面变量表里 ensembl_id 那行的"不同值"就是这个数——它和总行数对不上,一眼能看出来。
symbol 缺 40268 个。 四成多的条目没有基因符号——大量 lncRNA、假基因、TEC 条目在 Ensembl 里只有 ID 没有 symbol。拿 symbol 做 ID 转换会静默丢掉这四成,这是这份数据最大的坑。做映射前先看有效行数。
entrez_id 缺 54923 个。 六成。Ensembl 到 Entrez 的映射本来就不是满射,别指望 join 得上。
chromosome 有 528 个不同值。 不是 25 个——除了 1–22、X、Y、MT,还有几百条 scaffold(KI270728.1 那种)。按染色体作图前必须先筛掉 scaffold,否则 x 轴会长出几百个刻度。这一列也因此是字符型不是整数,排序时 "10" 会排在 "2" 前面。
species / ensembl_version / download_date 三列是常量,join 时无用,但留着能让人知道这份快照的来路。
适用图形
它主要是查表用的,能画的图不多但有几个很典型:
| 图形结构 | 用途 |
|---|---|
| 排序条形图 | gene_type 的构成——38 类,protein_coding 只占一小部分 |
| 染色体密度图 | 按 chromosome 分组、用 start 定位的基因密度 |
| 直方图 | 基因长度(end − start)的分布,跨度极大,要取对数 |
gene_type 有 38 类,超出任何一套定性配色的容量——画之前先合并成几大类(编码 / 假基因 / 非编码 RNA / 其他),否则颜色不够用,图也读不了。