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
「ped数据:」
$ cat toy.ped
1 1000000000 0 0 1 1 0 0 A A
1 1000000001 0 0 1 2 C C A G
上面的ped数据第六列就是表型数据,这里有两个个体,分别是1和2,这里我们将其更改为2和1。
如果想要用plink进行更新数据,需要提前准备好表型数据,格式:FID,IID,y,三列数据,没有行头,缺失值用-9,分隔符是空格或者tab。
「注意,跟新的个体要和ped一样,顺序可以变化,但是数目要对得上。」
「表型数据:」
$ cat phenotype.txt
1 1000000000 2
1 1000000001 1
更新命令:
plink --file toy --pheno phenotype.txt --recode --out re1
结果生成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
2. plink二进制文件更新表型数据
首先,用toy生成二进制的plink文件
plink --file toy --make-bed --out b
查看b.fam文件,里面第六列是表型数据。
$ cat b.fam
1 1000000000 0 0 1 1
1 1000000001 0 0 1 2
表型数据整理,和文本格式的phenotype.txt格式一样。这里我们将其变为连续性状。
「注意:表型数据可以是1-2的case-contral,也可以是连续性状,操作方法没有区别」
$ cat phenotype.txt
1 1000000000 2.5
1 1000000001 1.8
更细代码:
plink --bfile b --pheno phenotype.txt --make-bed --out re2
查看re2.fam文件,看看表型数据已经更新成功:
$ cat re2.fam
1 1000000000 0 0 1 2.5
1 1000000001 0 0 1 1.8
3. 为何要更新表型数据
初学者看到plink的ped第六列或者fam的第六列是表型数据,就想把自己的数据加进去。其实我们可以额外定义一个表型数据txt文件,自己整理数据就行,它的优势:
- 表型数据txt文件小,可以用excel编辑,修改
- 表型数据可以支持多列,比如有20个性状,可以依次排开,在进行分析时,指定所要分析的形状即可。默认是第三列是第一个性状。
- 缺失值可以用NA或者-9表示,不能为空
这一篇就是plink如何更新表型数据的教程。感觉不错,三连走起呀!
相关文章
- java并发编程工具类JUC第七篇:BlockingDeque双端阻塞队列
- java并发编程工具类JUC第六篇:SynchronousQueue同步队列
- java并发编程工具类JUC第五篇:PriorityBlockingQueue优先级队列
- java并发编程工具类JUC第四篇:LinkedBlockingQueue链表队列
- java并发编程工具类JUC第三篇:DelayQueue延时队列
- java并发编程工具类JUC第二篇:ArrayBlockingQueue
- java并发编程工具类JUC第一篇:BlockingQueue阻塞队列
- 详解线程池的作用及Java中如何使用线程池
- Java9系列第九篇-对HTTP2协议的支持与非阻塞HTTP-API
- Java9系列第8篇-Module模块化编程
- Java9系列第7篇:Java.util.Optional优化与增强
- Java9系列第6篇-Stream流API的增强
- java9第5篇-Collection集合类的增强与优化
- Java9第四篇-Reactive Stream API响应式编程
- Java9系列第三篇-同一个Jar支持多JDK版本运行
- java9系列第二篇-资源自动关闭的语法增强
- 我要告诉你:java接口中可以定义private私有方法
- 在java中使用SFTP协议安全的传输文件
- 8成以上的java线程状态图都画错了,看看这个-图解java并发第二篇
- List集合对象去重及按属性去重的8种方法-java基础总结系列第六篇