全基因组关联分析

全基因组关联分析

1.1 SNP 数据GWAS分析
1.1.1 文件准备
1.1.2 GWAS分析

emmax:gwas分析软件
tassel: gwas分析
admixture: 群体结构分析
plink: pca分析
qqman or CMplot : gwas 绘图R包
beagle: 数据填充

表型文件:Real_trait.C16_0.table
Q矩阵:Real_snp.3.Q

head -n 5 Real_trait.C16_0.table

GA0001      53.25
GA0002      70.04

mkdir ./TMP

## 这里all.vcf 是一组测试数据
$ singularity exec ../../software/Reseq_genek.sif   \
       java   -Xmx4g  -Djava.io.tmpdir=./TMP \
       -jar    /opt/beagle.jar \
       gt = ../data/all.vcf  \   #输入vcf文件
       out=all.impute \         # 输出结果前缀
       impute = true \           # 是否进行基因型填充
       window = 10 \            # 窗口大小
       nthreads = 4              # 线程数


用 emmax 进行 GWAS 分析
## step1 vcf格式转成tped格式(emmax软件要求)
$ singularity exec ../../software/Reseq_genek.sif plink \
         --vcf ../data/Real_snp.vcf \
         --maf 0.05 --geno 0.1 \ # 过滤数据
         --recode 12 transpose \ # genotype转12格式并生成tped文件
         --output-missing-genotype 0 \ # 缺失数据用0表示
         --out snp_filter \ # 数据文件前缀
         --set-missing-var-ids @:# \ # 设置SNP名称
         --allow-extra-chr \
         --keep-allele-order

## 生成文件如下
$ ls snp_filter.*
     snp_filter.log
     snp_filter.nosex
     snp_filter.tfam
     snp_filter.tped

## 表型数据准备, 主要目的是将样品排序
$ perl ../script/sort_pheno.pl snp_filter.tfam \
../data/Real_trait.C16_0.table > trait.sort.txt
## 查看数据,缺失用NA表示
$ head -n 5 trait.sort.txt
   GA0001 GA0001 53.25
   GA0002 GA0002 59.18
   GA0003 GA0003 70.04

## 计算亲缘关系矩阵
$ singularity exec ../../software/Reseq_genek.sif emmax-kin-intel64 \
           -v \ # 打开日志详细模式
          -d 10 \ # 指定精度
          -o ./pop.kinship \ # 指定输出文件名称
           snp_filter # 指定输入SNP数据前缀

## 进行gwas分析
$ singularity exec ../../software/Reseq_genek.sif emmax-intel64 \
         -v -d 10 \ # 指定精度
         -t snp_filter \ # 输入SNP数据前缀
         -p trait.sort.txt \ # 表型数据
         -k pop.kinship \ # 亲缘关系矩阵
         -o emmax.out \ # 输出文件前缀
         1> emmax.log 2>emmax.err

## 结果文件为emmax.out.ps, 最后一列为p-value
$ head -n 5 emmax.out.ps
Chr01:18180 -0.2773197509 0.5047378721 0.583283761
Chr01:18197 -0.1820301152 0.5113534847 0.722210058
Chr01:18241 -0.09952198502 0.5070841116 0.8445912325
Chr01:18260 -0.151943789 0.5086490625 0.7654447133
Chr01:18409 -0.2613732556 0.5014925903 0.6027754005

### 生成绘图输入文件
$ awk '{print $1"\t"$2"\t"$3"\t"$4"\t"}' snp_filter.tped | \
paste - emmax.out.ps | \
awk 'BEGIN{print "SNP\tCHR\tBP\tP"}{if($2==$5){print \
$2"\t"$1"\t"$4"\t"$NF}}' > emmax.out.ps.manht_input

### 绘图输入文件需要为4列, SNP名称, 染色体,位置,p-value
$ head -n 5 emmax.out.ps.manht_input
SNP CHR BP P
Chr01:18180 1 18180 0.8540511205
Chr01:18197 1 18197 0.8085936307
Chr01:18241 1 18241 0.2641876378
Chr01:18409 1 18409 0.7272875197

### 绘制Manhattan图和qqplot图
$ singularity exec ../../software/Reseq_genek.sif Rscript \
../script/manhattan_cmplot.R \
emmax.out.ps.manht_input \
emmax.out.ps.manht_figure
曼哈顿图

1.1.2.2 emmax + Q

用Q矩阵作为协变量用emmax 进行GWAS分析

## 准备SNP数据根据Q矩阵 表型数据
$ ln -s ../01.GWAS_emmax/snp_filter.tped
$ ln -s ../01.GWAS_emmax/snp_filter.tfam
$ ln -s ../01.GWAS_emmax/trait.sort.txt
$ ln -s ../data/Real_snp.3.Q
$ ln -s ../01.GWAS_emmax/pop.kinship

snp数据进行GWAS分析

## 修改Q矩阵格式
$ awk '{print $1}' snp_filter.tfam | \
     paste - Real_trait.C16_0.table
     awk '{print $1" "$1 1 "$2" "$3"}' > pop.Qmatrix

## 修改之后的格式
$ head -n 5 pop.Qmatrix
GA0001 GA0001 1 0.010490 0.480657
GA0002 GA0002 1 0.000010 0.864384
GA0003 GA0003 1 0.055588 0.944402
GA0004 GA0004 1 0.632317 0.259245
GA0005 GA0005 1 0.999980 0.000010

## GWAS分析
$ singularity exec ../../software/Reseq_genek.sif emmax-intel64 \
      -v \
     -d 10 \
-t snp_filter \
-p trait.sort.txt \
-k pop.kinship \
-c pop.Qmatrix \
-o emmax.out 1> emmax.log 2>emmax.err

1.1.2.3 tassel + glm

用tassel 软件基于 glm 模型进行 gwas 分析

## 修改表型数据格式
$ awk 'BEGIN{print "<Trait>\tC16_0"}{ print $0 }' \
../data/Real_trait.C16_0.table > trait.txt
## 查看表型数据
$ head -n 5 trait.txt
<Trait> C16_0
GA0001 53.25
GA0002 59.18
GA0003 70.04
GA0004 62.25
## 修改Q矩阵格式
$ awk '{print $1}' ../data/Real_snp.fam | \
paste - ../data/Real_snp.3.Q | \
awk 'BEGIN{print "<Covariate>\n<Trait>\tQ1\tQ2\tQ3" }{print $0}' \
> structure_Q3.txt
## 查看Q矩阵内容

## 修改表型数据格式
$ awk 'BEGIN{print "<Trait>\tC16_0"}{ print $0 }' \
../data/Real_trait.C16_0.table > trait.txt
## 查看表型数据
$ head -n 5 trait.txt
<Trait> C16_0
GA0001 53.25
GA0002 59.18
GA0003 70.04
GA0004 62.25
## 修改Q矩阵格式
$ awk '{print $1}' ../data/Real_snp.fam | \
paste - ../data/Real_snp.3.Q | \
awk 'BEGIN{print "<Covariate>\n<Trait>\tQ1\tQ2\tQ3" }{print $0}' \
> structure_Q3.txt
## 查看Q矩阵内容

$ head -n 5 structure_Q3.txt
<Covariate>
<Trait> Q1 Q2 Q3
GA0001 0.010490 0.480657 0.508852
GA0002 0.000010 0.864384 0.135606
GA0003 0.055588 0.944402 0.000010
## 如果vcf文件未排序,请进行vcf文件sort
$ singularity exec ../../software/Reseq_genek.sif run_pipeline.pl \
-Xms512m -Xmx10g \
-SortGenotypeFilePlugin \
-inputFile ../data/Real_snp.vcf \
-outputFile Real_snp.sort.vcf \
-fileType VCF
## 使用glm模型进行gwas分析
$ singularity exec ../../software/Reseq_genek.sif run_pipeline.pl \
-Xms512m -Xmx10g \ # 设置内存大小
-fork1 -vcf ../data/Real_snp.vcf \ # 读入vcf文件
-fork2 -t trait.txt \ # 读入表型数据
-fork3 -q structure_Q3.txt -excludeLastTrait \ #读入Q矩阵
-combine4 -input1 -input2 -input3 -intersect \ # 数据取交集
-FixedEffectLMPlugin -endPlugin \ # 进行glm分析
-export glm_output
## 分析结果如下
$ ls glm_output*.txt
glm_output1.txt
glm_output2.txt
## 绘制曼哈顿图和QQplot图

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

推荐阅读更多精彩内容