plink对SNP进行关联分析

文件

HapMap_3_r3_11.bed  HapMap_3_r3_11.bim  HapMap_3_r3_11.fam  HapMap_3_r3_11.log

1. 查看数据

这里,文件是bed文件,二进制不方便查看,我们将其转化为ped文件和map文件

注意,这里我使用的是ped和map格式,如果ped文件中有表型数据(第六列),如果想指定表型数据,用--pheno,包括三列:
家系,个体,表型值。

plink --bfile HapMap_3_r3_11 --recode --out test

image

这里的数据:

  • 基因型个体:110个
  • SNP个数:1073743

2. plink关联分析的类型

参考:https://www.jianshu.com/p/286050959dbd?utm_campaign=haruki

2.1 阈值性状(1,2)

plink的语境叫“case and control”,即表型值数据是两类数据:1,2,其中0和-9都表示缺失。可以选择的方法有卡方检验和逻辑斯蒂回归(X2关联分析和logistic分析)。

  • –assoc,不允许有协变量
  • –logistic,允许有协变量,如果考虑协变量,速度变慢。比assoc速度慢。

2.2 连续性状(定量性状)

这里的性状时连续性状,也就是除了1,2,0,-9外还有其它数值,–assoc会进行T检验(Student’s test),还可以用–linear进行分析。

  • –assoc,不允许有协变量,速度快
  • –linear,允许有协变量,速度慢

3. 控制假阳性

因为plink进行关联分析时常常面对的是大量的SNP数据,容易产生假阳性,因此需要矫正。

  • Bonferroni,使用0.05/n计算出矫正后的p值作为阈值,其中n为检测SNP的个数。缺点是SNP之间可能存在LD,而且这种方法过于保守,容易产生假阴性。
  • FDR,是一种最小化假阳性预测比例的方法

plink的解决方法是--adjust,生成多种类型的p值。

文件说明:

.*.adjusted (basic multiple-testing corrections)
Produced by --adjust.

A text file with a header line, and then one line per set or polymorphic variant with the following 8-11 fields:

CHR Chromosome code. Not present with set tests.
'SNP'/'SET' Variant/set identifier
UNADJ   Unadjusted p-value
GC  Devlin & Roeder (1999) genomic control corrected p-value. Requires an additive model.
QQ  P-value quantile. Only present with 'qq-plot' modifier.
BONF    Bonferroni correction
HOLM    Holm-Bonferroni (1979) adjusted p-value
SIDAK_SS    Šidák single-step adjusted p-value
SIDAK_SD    Šidák step-down adjusted p-value
FDR_BH  Benjamini & Hochberg (1995) step-up false discovery control
FDR_BY  Benjamini & Yekutieli (2001) step-up false discovery control
Variants/sets are sorted in p-value order. (As a result, if the QQ field is present, its values just increase linearly.)

  • UNADJ:原始p值
  • GC:基因组矫正P值(依赖加性模型)
  • QQ:P-value的QQ图
  • BONF:Bonferroni 矫正结果
  • HOLM:Holm-Bonferroni (1979) adjusted p-value,矫正结果
  • FDR_BY Benjamini & Yekutieli (2001) step-up false discovery control,FDR方法

4. 阈值性状关联分析

数据:
观测值一列是1和2,可以用的方法有:--assoc--logistic

image

4.1 accoc关联分析未矫正

plink --file test --assoc --out result

结果文件说明:

.assoc, .assoc.fisher (case/control association allelic test report)
Produced by --assoc acting on a case/control phenotype.

A text file with a header line, and then one line per variant typically with the following 9-10 fields:

CHR Chromosome code
SNP Variant identifier
BP  Base-pair coordinate
A1  Allele 1 (usually minor)
F_A Allele 1 frequency among cases
F_U Allele 1 frequency among controls
A2  Allele 2
CHISQ   Allelic test chi-square statistic. Not present with 'fisher'/'fisher-midp' modifier.
P   Allelic test p-value
OR  odds(allele 1 | case) / odds(allele 1 | control)
If the 'counts' modifier is present, the 5th and 6th fields are replaced with:

C_A Allele 1 count among cases
C_U Allele 1 count among controls
If --ci 0.xy has also been specified, there are three additional fields at the end:

SE  Standard error of odds ratio estimate
Lxy Bottom of xy% symmetric approx. confidence interval for odds ratio
Hxy Top of xy% approx. confidence interval for odds ratio

  • CHR 染色体
  • SNP SNPID
  • BP 物理位置
  • 。。。
  • CHISQ 卡方值
  • P P值
    结果文件:


    在这里插入图片描述

4.2 assoc关联分析矫正p值

 plink --file test --assoc --adjust --out result_adjust

结果生成三个文件:

result_adjust.assoc           result_adjust.log
result_adjust.assoc.adjusted 

查看矫正后的值:


image

4.3 logistic不考虑协变量

plink --file test --logistic --out result_logistic

结果生成:

result_logistic.assoc.logistic  result_logistic.log

image

4.4 logistic 不考虑协变量矫正p值

plink --file test --logistic --adjust --out result_logistic_adjust

结果:

result_logistic_adjust.assoc.logistic           result_logistic_adjust.log
result_logistic_adjust.assoc.logistic.adjusted

查看矫正值


image

如果考虑协变量,加上--covar即可。

5. 可视化

把文件改名字,方便后面代码里作图,这样不用修改代码了。

cp result.assoc assoc_results
cp result_logistic.assoc.logistic logistic_results.assoc.logistic

注意,logistic里面会有NA,所以我们这里讲NA的行去掉。

awk '!/'NA'/' logistic_results.assoc.logistic >logistic_results.assoc2.logistic 

5.1 曼哈顿图

R代码:
注意,如果没有安装qqman,就运行代码:install.packages("qqman"),安装即可。

#install.packages("qqman",repos="http://cran.cnr.berkeley.edu/",lib="~" ) # location of installation can be changed but has to correspond with the library location 
#library("qqman",lib.loc="~")  
library(qqman)
results_log <- read.table("logistic_results.assoc_2.logistic", head=TRUE)
jpeg("Logistic_manhattan.jpeg")
manhattan(results_log,chr="CHR",bp="BP",p="P",snp="SNP", main = "Manhattan plot: logistic")
dev.off()

results_as <- read.table("assoc_results.assoc", head=TRUE)
jpeg("assoc_manhattan.jpeg")
manhattan(results_as,chr="CHR",bp="BP",p="P",snp="SNP", main = "Manhattan plot: assoc")
dev.off() 

assoc的卡方检验结果:

image

–logistic逻辑斯蒂回归结果:

image

可以看到两者结果类似,assoc检测到了显著性位点,logistic没有检测到显著性位点。

5.2 QQ plot

R代码:

#install.packages("qqman",repos="http://cran.cnr.berkeley.edu/",lib="~" ) # location of installation can be changed but has to correspond with the library location 
#library("qqman",lib.loc="~") 
library(qqman)
results_log <- read.table("logistic_results.assoc_2.logistic", head=TRUE)
jpeg("QQ-Plot_logistic.jpeg")
qq(results_log$P, main = "Q-Q plot of GWAS p-values : log")
dev.off()

results_as <- read.table("assoc_results.assoc", head=TRUE)
jpeg("QQ-Plot_assoc.jpeg")
qq(results_as$P, main = "Q-Q plot of GWAS p-values : log")
dev.off()

–assoc结果:

image

–logistic结果:

image

6. 注意

注意,这是阈值性状的结果,分类性状,可以使用assoc和logistic,连续性状的话,如果没有协变量就用assoc,如果有协变量,就用linear即可。

7. 总结

这是使用plink计算GWAS分析的流程,包括数据的清洗,以及建模,以及出结果,以及可视化。

但是,这只是一个开始,在看一下GEMMA,R中的GAPIT的操作方法,最后能够通过编码进行GWAS的分析,才算是掌握了这个分析方法。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,732评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,496评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,264评论 0 338
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,807评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,806评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,675评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,029评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,683评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 41,704评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,666评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,773评论 1 332
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,413评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,016评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,978评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,204评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,083评论 2 350
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,503评论 2 343

推荐阅读更多精彩内容