美文网首页GWAS
GWAS分析-说人话(12)“BUG”?您好!

GWAS分析-说人话(12)“BUG”?您好!

作者: 医学小蛋散 | 来源:发表于2019-11-26 16:40 被阅读0次

前言

当岁月静好,一切就等着到“曼哈顿”相见的时候

“BUG”就悄悄地来了!~

如暴风雨前一样安静。


若数据安好,便是晴天~

当一切如前话获得一个又一个的关联结果后,卡壳的事情出现了!

当我使用keep保留希望留住想要的亚组的时候,居然报错了!(是的1-23号染色体,只有15号有问题)

小白幼小而又脆弱的心灵!

提取完后居然没有剩下的样本!?

反正我也有22条染色体了~ 不如......

骚年!忘记骚想法!科学精神都去哪里了!!!

于是就要开始查原因了。

人话:结果是简单的,但是查找原因的过程是痛苦的~

正如:相爱是简单的,但是相处的日子是痛苦的一样。


第一步:一开始,我并不知道Individual ID是不是真的不存在(当然不存在的可能性不大~)

但是本着科学的精神,我们还是在需要提取的txt文件(--keep中间的那个文件)中挑一个individual ID出来,

grep -nw 142120126 chr19.ped 

是存在的~ 反复查找是否存在

IID说:你爱或不爱,我就在哪里~

那么,究竟是什么阻挡着我们的康庄大道?

第二步:为什么其他染色体能够提取出来,就这个不行?

是否有天生异品之处?

我们先看看文件长什么样子!

打开15号(不能提取的),19号和22号(能提取的)文件,看长什么样子(文件较大,打开需要一点时间~ 注意加head!!!!否则普通电脑handle不了!)

awk '{print $1,$2}' chr15.ped |head 

awk '{print $1,$2}' chr19.ped|head

awk '{print $1,$2}' chr22.ped |head

结果:

看到了吗?15号染色体和其他的染色体不!一!样!

第三步:把所有不同的™️给找出来!

你想想,就看前几行就已经有不一样了,中间的呢?后面的呢?

相信我,你是不可能全部打开,然后一个一个对比的!!!!

(有听过愚公移山吗?)

我们首先读入15号染色体和20号染色体(随便选的,一个能跑的就可以了)

打开R(Rstudio也好,Terminal的R也罢)

读入chr15.fam文件

chr15fam=read.table("chr15.fam",header=F,stringsAsFactors=F)

读入chr20.fam文件

chr20fam=read.table("chr20.fam",header=F,stringsAsFactors=F)

我说过了,熟悉这些文件是什么,是很重要的!(GWAS分析-说人话(2)认识文件名

查看一下,我们关心的第二列(Individual ID,我们想保留的)是否不一样

#首先配对

tmp=match(chr15fam[,2], chr20fam[,2])

#然后查看没有配对的元素个数(我们的目的是查不同啊~)

length(which(is.na(tmp)))

结果:

[1] 2

没想到还真有!(15号染色体有两个不同于其他染色体的存在!)

究竟是哪个!!!

which(is.na(tmp))

[1]  275 1211

我们来看一个全相!

chr20fam[notfound,]

          V1              V2              V3 V4 V5 V6

275  famid275 142120304  0  0  0 -9

1211 famid1211 142120782  0  0  0 -9

我们从一开始的head,发现了某些individual ID缺失了,导致和FamilyID的配对乱了!

所以我们尽管看看是否如此:

查看15号染色体第274行(减一行)的样子

chr15fam[274,]

结果:

          V1        V2 V3 V4 V5 V6

274 famid274 142120304  0  0  0 -9

对比15号染色体第275行

chr20fam[275,]

好的,发现第二行的Individual ID是一样的,但是Family ID确实不一样!

          V1        V2 V3 V4 V5 V6

275 famid275 142120304  0  0  0 -9

这个就是为什么之前的keep完全提取不了数据的原因!!!

我们要知道,--keep中间的文件是有两行的,是配对的!

这个染色体乱套了!!

是的,一子错满盘皆落错!(这是原来数据集的问题啦~)

第四步:我们通过科学的方法查找了问题所在了,接下来就是解决问题了!~

#我们首先在R中读入原来用在--keep中的txt文件

scfam=read.table("SCfam.txt",header=F,stringsAsFactors=F)

#在terminal中提取15号染色体ped文件前两行(Family ID和Individual ID),保存为一个txt文件。

awk '{print $1,$2}' chr15.ped > ~seedson/Desktop/file/Chr15IDs.txt

awk '{print $1,$2}' chr20.ped > ~seedson/Desktop/file/Chr20IDs.txt (用于后面的确认而已)

在R中读入15号染色体的txt文件

chr15=read.table("Chr15IDs.txt",header=F,stringsAsFactors=F)

#可省略(不过习惯上都要看看数据读入成不成功,不成功的话,后面的分析都是不靠谱的!~)

scfam[1:2,]

chr15[1:3,]

 dim(chr15)

dim(chr20)

control15[1:3,]

#我们再确认一下,第二行是否有差异,差异的是哪个(上述第三步重复)

tmp=match(chr15[,2], chr20[,2])

length(which(is.na(tmp)))

which(is.na(tmp))

chr20[275,]

chr20[1211,]

Terminal界面:

相信我,查BUG就是要反复确认,因为没有人会告诉你答案

大招来了!~

设定一个变量(scinchr15),把需要提取的Individual ID和全部的15号染色体的Individual ID配对起来(第二列)

scinchr15= match(scfam[,2], chr15[,2])

#length(which(is.na(scinchr15)))

#scinchr15[1:10]

#scfaminchr15=match(scfam[,1], chr15[,1])

#length(which(is.na(scfaminchr15)))

#scfaminchr15[1:10]

对于15号染色体需要提取的数据(scforchr15):

对于15号染色体的行,根据scinchr15保留,对于15号染色体的列,全部第一,二列全部保留。

scforchr15= chr15[scinchr15, 1:2]

#scforchr15[1:3,]

#scinchr15[1:10]

#输出数据,用于--keep中间。

write.table(scforchr15, file="SCfam_forChr15.txt",quote=F,row.names=F,col.names=F)

看见右下角的Done,腰不疼啦,腿不痛啦..上六楼啊也有劲勒

配对成功

对照组也是同样的处理(其他亚组也是一样了)

chr15=read.table("Chr15IDs.txt",header=F,stringsAsFactors=F)

control15=read.table("controlfam.txt",header=F,stringsAsFactors=F)

controlscinchr15= match(control15[,2], chr15[,2])

scforchr15control= chr15[controlscinchr15, 1:2]

write.table(scforchr15control,file="control_forChr15.txt",quote=F,row.names=F,col.names=F)

后记

告诉大家一个不幸的消息:尽管我经过如此谨慎的计算后,该染色体并没有我们想要的SNP

......

原谅我的浮躁~

c'est la 科研 (ᗒᗣᗕ)՞

相关文章

网友评论

    本文标题:GWAS分析-说人话(12)“BUG”?您好!

    本文链接:https://www.haomeiwen.com/subject/gwuewctx.html