Pengelly样本追踪

#default

背景

在进行人类二代测序的Panel设计时,往往需要在Panel中加入一些SNP位点,用于区分样本,或者说检测样本间污染。

Pengelly的方案是使用24个SNP进行样本追踪。

他们设计了一个SNP的选择要求:

1,不包含互补碱基的替换,即A↔️T、G↔️C;

2,不在重复序列中,侧翼250bp的GC比例在40%~55%范围,50bp范围内不允许有其他变异;

3,在多个人种中,明确人群频率都在0.2~0.8之间;

4,不改变编码蛋白的以及序列,或在OMIM中没有记录。

我在以往的设计里,挑选的方案有所不同,因为我还会考虑将位点用作分析染色体结构变异的骨架。现在参考这个方案进行调整。

一个大的差异是,为了不影响检测Panel,我在挑选位点时会特地选择在内含子中的位点,但这个方案为了直接嵌入现有的WES试剂盒中,会选择外显子中同义突变(被常见Panel覆盖,或者选择UTR,或者WES可覆盖的Intron)的位点,因此,不需要额外增加探针。

因为最终挑选出的SNP数目仅24个,所以不能用作染色体结构变异分析(当然人家是在WES里设计的,WES本身的覆盖范围是足够做染色体结构变异分析了)。

结果

Chromosome Position (Hg19) rsID (dbSNP137) Gene
1 179520506 rs1410592 NPHS2
1 67861520 rs2229546 IL12RB2
2 169789016 rs497692 ABCB11
2 227896976 rs10203363 COL4A4
3 4403767 rs2819561 SUMF1
4 5749904 rs4688963 EVC
5 82834630 rs309557 VCAN
6 146755140 rs2942 GRM1
7 48450157 rs17548783 ABCA13
8 94935937 rs4735258 PDP1
9 100190780 rs1381532 TDRD7
10 100219314 rs10883099 HPSE2
11 16133413 rs4617548 SOX6
12 993930 rs7300444 WNK1
13 39433606 rs9532292 FREM2
14 50769717 rs2297995 L2HGDH
15 34528948 rs4577050 SLC12A6
16 70303580 rs2070203 AARS
17 71197748 rs1037256 COG1
18 21413869 rs9962023 LAMA3
19 10267077 rs2228611 DNMT1
20 6100088 rs10373 FERMT1
21 44323590 rs4148973 NDUFV3
22 21141300 rs4675 SERPIND1

验证方案

Pengelly的方案中模拟了一个10000人的数据集,数据集的这些位点的AF分布符合HapMap的人群频率。最后得到的结论是平均约每40个10000人的数据集中会出现1对重复的个体。

怎么做

脑海中过了一遍,方案就是把每个人的这24个位点的基因型都检测出来,然后进行匹配即可。具体的说,我大概会把这24个位点固定排序,然后将每个人的基因型生成一条固定的序列。

伪代码

from collections import Counter
counts = Counter(profile_list)
duplicates = [profile for profile, count in counts.items() if count > 1]
if duplicates:
    print("Duplicates found:", duplicates)
else:
    print("No duplicates found")

思考

将原本的一批次SNP同时用于样本识别和结构变异分析分开,让样本识别回归样本识别,结构变异回归结构变异。