重复一篇文献的GWAS(一):基因型数据整理

文献:A new regulator of seed size control in Arabidopsis identified by a genome-wide association study

数据来源:1001 Genomes Project website
http://1001genomes.org/data/GMI-MPI/releases/v3.1/

1. 下载原始vcf文件

因为不确定这篇文献用的哪一个群体vcf文件,所以两个都下载了,想查看vcf的维度,查看多少列好说,但是用命令行提取第一列想看看有多少个SNP时,遇到了很大困难,太慢了。

18G Sep 25  2015 1001genomes_snp-short-indel_only_ACGTN.vcf.gz
133G Sep 26  2015 1001genomes_snp-short-indel_with_tair10_only_ACGTN.vcf.gz

这两个vcf文件的列是一样的,都是1135个样本。行的话,第2个文件包含基因组的每一个位置(包括没有测到以及没有多态性的点),所以文件很大。据此应该可以确定,第一个才是需要用到的vcf文件。只保留snp的记录,并根据这篇文献用到的样本提取列就可以了。

认识一种新格式:hdf5
除了上面两个群体vcf文件,还能找到下面这个snp矩阵文件,采用一种hdf5的格式存储,这种格式专门用来存储大数据,在Python中有专门的工具来读取,速度挺快。里面存储的snp都是过滤掉triallelic的。

877M Dec  5  2014 imputed_snps_binary.hdf5

$ ~/miniconda3/bin/python3.6
>>> import h5py
>>> import os
>>> import numpy as np
>>> file_name = 'imputed_snps_binary.hdf5'
>>> f = h5py.File(file_name, 'r')
>>> f.keys()
<KeysViewHDF5 ['accessions', 'positions', 'snps']>
>>> a=f['accessions'][:]
>>> b=f['positions'][:]
>>> c=f['snps'][:]
>>> a
array([b'88', b'108', b'139', ..., b'19949', b'19950', b'19951'],
      dtype='|S5')
>>> len(a)
1135
>>> b
array([      55,       56,       63, ..., 26975445, 26975448, 26975450],
      dtype=int32)
>>> len(b)
10709949
>>> c
array([[0, 0, 0, ..., 0, 0, 0],
       [0, 0, 0, ..., 0, 0, 0],
       [0, 0, 0, ..., 0, 0, 0],
       ...,
       [0, 0, 0, ..., 0, 0, 0],
       [0, 0, 0, ..., 0, 0, 0],
       [0, 0, 0, ..., 0, 0, 0]], dtype=int8)
>>> c.shape
(10709949, 1135)

根据最后一行可知:10.7M的snp。

2. 根据样本提取vcf

根据文献补充材料提供的样本编号提取,用到的是vcftools,之前总结过vcftools过滤的用法

从整理的结果来看,在191个样本中19个样本是没有GWAS ID的,这部分是怎么回事呢?在1001 Genomes Project项目官网提供的1135个accessions的详细信息中,也没有找到这19个accession的记录。难道这19个是作者自己测的重测序数据吗?
只能先用172个样本的了,这是我的过滤命令

nohup vcftools --gzvcf 1001genomes_snp-short-indel_only_ACGTN.vcf.gz \
--remove-indels --min-alleles 2 --max-alleles 2 \
--recode --keep sample.list --out 172sample &

After filtering, kept 172 out of 1135 Individuals
Outputting VCF file...
After filtering, kept 10707430 out of a possible 12883854 Sites
Run Time = 6859.00 seconds

10.7M的snp,注意:在提取172样本之后,这10.7M记录里面可能还有些是在172个样本中没有出现的,要过滤掉。

是这样吗?统计一下就知道了。

nohup vcftools --vcf 172sample.recode.vcf --freq --out freq &

$ lsx freq.frq | head -n 5
CHROM   POS N_ALLELES   N_CHR   {ALLELE:FREQ}
1   55  2   158 C:1 T:0
1   56  2   166 T:1 A:0
1   63  2   138 T:0.971014  C:0.0289855
1   73  2   146 C:0.945205  A:0.0547945

#看看第四列出现了多少个0,此时5,6列变为-nan,共8943行
#(这里我试了一下nohup vcftools --vcf 172sample.recode.vcf --maf 0 --max-maf 1 --recode --out 172sample.1 看能不能过滤掉-nan的情况,结论是不能)

第五列、第六列出现了基因频率是1、0的情况,是说群体中该位点全部都是ALT,这可能是参考基因组组装错了,也可能是被选来做组装的那个样本在该位点存在SNP,这也要过滤掉。这两处的过滤可以放在MAF那一步过滤,现在先放着。

3. 填充

现在看一下文献是怎么做的。

nohup java -Xss5m -Xmn25G -Xms100G -Xmx100G -jar \
~/mysoft/beagle/beagle.12Jul19.0df.jar nthreads=2 \
gt=172sample.recode.vcf out=172sample_out ne=172 &
#可能会遇到内存溢出的报错

这一步用时很长,14.5小时,没有过滤,全部填充了,10707430个SNP。

4. 根据MAF过滤

再来根据MAF过滤。

nohup vcftools --gzvcf 172sample_out.vcf.gz --maf 0.05 \
--recode --out 172sample_maf_filter &

提出一个疑问,在查看vcf文件时,看到了0|0,1|1这两种基因型,但是没有看到0|1这种基因型。我在想是不是1001 Genomes Project这个项目只区分有/无这个变异,而不区分纯合/杂合变异,或者是这些样本足够纯合。

$ lsx 172sample_maf_filter.recode.vcf | grep "^#" -v | wc -l
1656967

1.66M的SNP。和文献中有差异,应该是那19个样本没有参与进来导致的。

剧透:下文两个文件要用到SNP的ID,因为最原始的vcf文件第三列没有ID,我只能自己加了。

$ lsx 172sample_maf_filter.recode.vcf | head -n 10 > header
$ lsx 172sample_maf_filter.recode.vcf | grep "^#" -v | awk '{$3=$1"_"$2;print $0}' | sed 's/ /\t/g' > body &
$ cat header body > 172sample_maf_filter_snpID.vcf &

5. 接下来是基于连锁不平衡/LD的过滤

Linkage disequilibrium based SNP pruning

在这一步之后,剩下的SNP彼此之间可以看作是连锁平衡的,这样就能减少曼哈顿图中“冒出”一串点的情况。

参考:
https://www.jianshu.com/p/57c2dbda8a86
http://zzz.bwh.harvard.edu/plink/summary.shtml#prune

第1步:将vcf转成ped

老版本的PLINK不能将vcf格式转为ped(plink 2009, vcf 2010),这一步就用PLINK 1.9吧

nohup plink --vcf 172sample_maf_filter_snpID.vcf --recode --out 172sample &

# 生成
# 172sample.log  172sample.map  172sample.ped  172sample.nosex
# map和ped是主要结果,这两种格式比较重要,可以了解一下
第2步:生成list
nohup ~/mysoft/plink-1.07-x86_64/plink --file 172sample --indep 50 5 2 &

# 生成
# plink.prune.in plink.prune.out
# Each is a simlpe list of SNP IDs; both these files can subsequently be specified as the argument for a --extract or --exclude command.

vcf文件里面如果没有SNP ID,得到的这两个文件里面每一行都只有一个点“.”。

第3步:根据list提取SNP
$ head -n 4 plink.prune.in
1_63
1_92
1_138
1_266
$ lsx plink.prune.in | wc -l
335565

$ nohup ~/mysoft/plink-1.07-x86_64/plink --file 172sample \
--extract plink.prune.in --recode --out 172sample_maf_filter_snpID_LD_filter &

335.6K的SNP,和原文献很接近了,
到这一步基因型数据算是整理完了。

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

推荐阅读更多精彩内容