在R(或Python)中将核苷酸的基因型编码为0/1/2

时间:2015-06-16 15:25:10

标签: python r bioinformatics

我有一个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?

1 个答案:

答案 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

请注意,矩阵是您开始使用的转置,并且有杂合子列。

相关问题