• plink如何更新表型数据


    大家好,我是邓飞。

    平时在分析时,也有时候需要将外部准备好的数据,更新到plink数据中。plink有两种格式类型,二进制文件(bed,bim,fam)在fam文件的第六列,文本文件(ped,map)在ped文件的第六列。数据量小时,可以用excel打开,直接手动增加,如果数据量大,就需要编程实现,比如R语言,Perl或者Python。其实,plink自己有一个参数,可以自动更新表型数据,只需要将所要更新的表型数据准备好就行了。下面介绍一下操作流程。

    1. plink文本文件更新表型数据

    下面我们用plink示例数据来进行演示,这个数据很小,也可以自己生成。

    map数据:

    $ cat toy.map
    1       rs0     0       1000
    1       rs10    0       1001
    
    
    • 1
    • 2
    • 3
    • 4

    ped数据:

    $ cat toy.ped
    1 1000000000 0 0 1 1 0 0 A A
    1 1000000001 0 0 1 2 C C A G
    
    
    • 1
    • 2
    • 3
    • 4

    上面的ped数据第六列就是表型数据,这里有两个个体,分别是1和2,这里我们将其更改为2和1。

    如果想要用plink进行更新数据,需要提前准备好表型数据,格式:FID,IID,y,三列数据,没有行头,缺失值用-9,分隔符是空格或者tab。

    注意,跟新的个体要和ped一样,顺序可以变化,但是数目要对得上。

    表型数据:

    $ cat phenotype.txt
    1 1000000000 2
    1 1000000001 1
    
    
    • 1
    • 2
    • 3
    • 4

    更新命令:

    plink --file toy --pheno phenotype.txt --recode --out re1
    
    
    • 1
    • 2

    结果生成re1的plink文件,看一下ped的第六列,可以看到,已经更新了:

    $ cat re1.ped
    1 1000000000 0 0 1 2 0 0 A A
    1 1000000001 0 0 1 1 C C G A
    
    
    • 1
    • 2
    • 3
    • 4

    2. plink二进制文件更新表型数据

    首先,用toy生成二进制的plink文件

     plink --file toy --make-bed --out b
    
    
    • 1
    • 2

    查看b.fam文件,里面第六列是表型数据。

    $ cat b.fam
    1 1000000000 0 0 1 1
    1 1000000001 0 0 1 2
    
    • 1
    • 2
    • 3

    表型数据整理,和文本格式的phenotype.txt格式一样。这里我们将其变为连续性状。
    注意:表型数据可以是1-2的case-contral,也可以是连续性状,操作方法没有区别

    $ cat phenotype.txt
    1 1000000000 2.5
    1 1000000001 1.8
    
    
    • 1
    • 2
    • 3
    • 4

    更细代码:

     plink --bfile b --pheno phenotype.txt --make-bed --out re2
    
    • 1

    查看re2.fam文件,看看表型数据已经更新成功:

    $ cat re2.fam
    1 1000000000 0 0 1 2.5
    1 1000000001 0 0 1 1.8
    
    
    • 1
    • 2
    • 3
    • 4

    3. 为何要更新表型数据

    初学者看到plink的ped第六列或者fam的第六列是表型数据,就想把自己的数据加进去。其实我们可以额外定义一个表型数据txt文件,自己整理数据就行,它的优势:

    • 表型数据txt文件小,可以用excel编辑,修改
    • 表型数据可以支持多列,比如有20个性状,可以依次排开,在进行分析时,指定所要分析的形状即可。默认是第三列是第一个性状。
    • 缺失值可以用NA或者-9表示,不能为空

    这一篇就是plink如何更新表型数据的教程。感觉不错,三连走起呀!

  • 相关阅读:
    解决 Chrome 浏览器被毒霸篡改问题
    得帆,Java一面,双非本
    关于@Autowired
    target is not existed: .page-component__scroll .el-scrollbar__wrap
    keil软件中按F12 无法跳转到函数、变量定义处
    看我在Map<String, String>集合中,存入Integer类型数据
    C# 利用.NET 升级助手将.NET Framework项目升级为.NET 6
    深入理解Python中的布尔值:真与假
    java建造者模式
    mysql安装与配置及四大引擎和数据类型、建表以及约束、增删改查、常用函数、聚合函数以及合并
  • 原文地址:https://blog.csdn.net/yijiaobani/article/details/127828269