我有一个dbSNP rs ID的数据表作为行和样本作为这种格式的列:
dbSNP Sample Sample Sample Sample Sample Sample
rs10000011 CC CC CC CC TC TC
rs1000002 TC TT CC TT TT TC
rs10000023 TG TG TT TG TG TG
rs1000003 AA AG AG AA AA AG
rs10000041 TT TG TT TT TG GG
rs10000046 GG GG AG GG GG GG
此表中有{1000}个样本和547000个基因座来自HGDP dataset,我想进行大量的主成分分析(样本基于人口颜色)。
为了做到这一点,我需要先编码我的基因型。我想知道,我该怎么做(最好用R / Python,因为文件对JMP Genomics来说太大了)?
另外,我有一些缺少数据的地方,由---
或00
表示。我将使用查找和替换脚本将这些标准化为NA
或.
,但我如何对其进行编码以便R仍然可以运行PCA?
答案 0 :(得分:1)
虽然您可以使用自己的方法来执行此操作,但我建议您使用已建立的R包进行转换和PCA。一个选项是SNPRelate
,它支持进行LD修剪和PCA(tutorial)。您需要先将数据转换为plink。 Plink还可以重新编码您的基因型。
在bash命令行中显示基因型表,如示例所示:
<snpExample.txt head -n1 |cut -f2- | tr '\t' '\n' | perl -pe 's/(.*)/\1\t\1\t0\t0\t0\t0/' > snp.tfam
<snpExample.txt tail -n+2 | perl -pe's/\t([ACTG\-])([ACTG\-])/\t\1 \2/g;s/^([^ \t]+)/0\t\1\t0\t0/' > snp.tped
现在使用plink(1.90):
plink --tfile snp --out snp --make-bed
将数据重新编码为床,用于导入R中的SNPRelate:
snpgdsBED2GDS(bed.fn, fam.fn, bim.fn, "test.gds")
Plink也可以重新编码为数字基因型:
plink --tfile snp --out snp --recodeAD
请注意,矩阵是您开始使用的转置,并且有杂合子列。