MatrixEQTL-----eQTL分析

好久没有发简书了,去学习新技术新知识去了,实在是没有时间!!现在有点时间,记录分享一下新知识~
这段时间也是被这个eQTL搞得很头疼,现在终于弄出来,记录记录!

Matrix eQTL是一款针对大型矩阵可以超快运行进行eQTL分析的软件(http://www.bios.unc.edu/research/genomic_software/Matrix_eQTL/)。

一、首先就是数据的准备!(很重要)

先要准备4个文件(5个)

1.SNP信息文件和SNP位置文件,SNP信息文件需要012类型

好多人没有这个类型的snp文件,下面我就一步一步的教你们

#!/bin/bash
vcf=/your_path/all.rename_sorted.snp.vcf

## MAF、缺失率过滤
plink --vcf $vcf  --make-bed --geno 0.1 --maf 0.05 --out snp.v1

plink --bfile  snp.v1 --hardy
echo "计算所有位点的HWE的P值;生成plink.hwe"

plink --bfile snp.v1 -hwe 1e-4 -make-bed -out plink.hwe
echo "设定过滤标准1e-4l"

plink --bfile plink.hwe --recodeA --out snp.v2
echo "生成 .raw 文件,即为 012 矩阵,缺失的点标记为 NA"

cat snp.v2.raw | cut -d" " -f1,7- | sed 's/_[A-Z]//g' > genotype.txt
echo "2-6 列删除,并格式化 RS ID"

awk '{i=1;while(i <= NF){col[i]=col[i] $i " ";i=i+1}} END {i=1;while(i<=NF){print col[i];i=i+1}}' genotype.txt | sed 's/[ \t]*$//g' > genotype_transpose.txt
echo "用 awk 进行矩阵转置"

sed -i "s# #\t#g" genotype_transpose.txt

# SNP 位置信息可从 .map 文件获取:
plink --bfile  plink.hwe --recode --out snp.v3

echo "snpid chr pos" >snpsloc.txt
awk '{print $2,"chr"$1,$4}' snp.v3.map >>snpsloc.txt

sed -i "s# #\t#g" snpsloc.txt

现在生成的genotype_transpose.txt就是SNP信息文件,snpsloc.txt就是SNP位置文件

head(genotype_transpose.txt)
FID     DNA1    DNA2    DNA3    DNA4    DNA5    DNA6    DNA7    DNA8    DNA9    DNA10   DNA11   DNA12   DNA13   DNA14   DNA15   DNA16   DNA18   DNA19   DNA20   DNA21   DNA22   DNA23   DNA24   DNA25   DNA26   DNA27   DNA28   DNA30   DNA31   DNA32   DNA33
Chr1-30469      0       0       0       0       0       0       0       1       0       0       0       0       1       0       0       0       0       0       0       0       0       1       0       0       0       0       0       0       0       0
Chr1-30517      0       0       0       0       0       1       0       1       0       1       0       0       1       0       0       0       0       0       0       0       1       0       1       0       0       1       1       0       0       0
Chr1-30533      0       1       1       1       1       1       2       0       1       0       1       0       0       0       0       1       0       1       1       0       0       0       1       0       0       0       1       1       0       0
Chr1-69062      1       1       1       1       1       1       1       1       1       1       0       1       1       0       1       1       1       1       1       1       1       1       1       1       1       1       1       1       1       1
Chr1-89929      0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       1       0       0       0       0       0       0       0       1       0       0       0       0       0       0
Chr1-91327      0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       1       0       0       0       0       0       0       0       0
Chr1-130169     0       0       0       0       0       2       0       1       0       2       0       0       1       0       0       0       0       0       0       0       2       0       1       0       0       1       2       0       0       0
Chr1-188094     0       0       0       0       0       0       0       0       0       0       2       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0
Chr1-190417     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
Chr1-191152     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
Chr1-191944     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
Chr1-194442     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
Chr1-199462     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
Chr1-199533     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
Chr1-204570     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
Chr1-206474     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
Chr1-217339     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
Chr1-217421     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
Chr1-217626     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
Chr1-217663     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
Chr1-220802     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
Chr1-221433     0       0       0       0       0       0       0       0       0       0       2       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0
Chr1-221715     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
Chr1-226134     0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       NA      0       0       0       0       0       0
Chr1-226530     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
Chr1-227955     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
Chr1-235012     0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       1       0       0       0       0       0       0       0       0       0       0       0       0
Chr1-241685     0       0       0       0       0       0       0       0       0       0       0 


head(snpsloc.txt)
snpid   Chr    pos
Chr1-30469      Chr01   30469
Chr1-30517      Chr01   30517
Chr1-30533      Chr01   30533
Chr1-69062      Chr01   69062
Chr1-89929      Chr01   89929
Chr1-91327      Chr01   91327
Chr1-130169     Chr01   130169
Chr1-188094     Chr01   188094
Chr1-190417     Chr01   190417

2.准备自己的表达量矩阵,也可以对矩阵进行取log2,进行标准化

这个文章里面就是这个操作的:eQTL Regulating Transcript Levels Associated with Diverse Biological Processes in Tomato

3.准备自己的基因位置信息

grep "gene" geonom.gff3  |grep -v "ChrUn" | awk -F ";" '{print $1}' | sed -e "s/ID=//g" | awk '{print $9"\t"$1"\t"$4"\t"$5}' > geneloc.txt 
head(geneloc.txt)
LOC_Os01g01010  Chr01   2903    10817
LOC_Os01g01019  Chr01   11218   12435
LOC_Os01g01030  Chr01   12648   15915
LOC_Os01g01040  Chr01   16292   20323
LOC_Os01g01050  Chr01   22841   26971
LOC_Os01g01060  Chr01   27136   28651
LOC_Os01g01070  Chr01   29818   34493

一定要注意,snpsloc.txtgeneloc.txtChr一定要对应,不能一个是Chr一个是chr!!!

4.正式开始eQTL分析

library(MatrixEQTL)
## Settings
# Genotype file name
SNP_file_name = paste( "/your_path/genotype_transpose.txt", sep="\t");
snps_location_file_name = paste( "/your_path/snpsloc.txt", sep="\t");

# Gene expression file name
expression_file_name = paste( "/your_path/experssion.csv", sep=" ");
gene_location_file_name = paste( "/your_path/geneloc.txt", sep="");

## Load genotype data
snps = SlicedData$new();
snps$fileDelimiter = "\t";      # the TAB character
snps$fileOmitCharacters = "NA"; # denote missing values;
snps$fileSkipRows = 1;          # one row of column labels
snps$fileSkipColumns = 1;       # one column of row labels
snps$fileSliceSize = 2000;      # read file in slices of 2,000 rows
snps$LoadFile(SNP_file_name);

## Load gene expression data
gene = SlicedData$new();
gene$fileDelimiter = "\t";      # the TAB character
gene$fileOmitCharacters = "NA"; # denote missing values;
gene$fileSkipRows = 1;          # one row of column labels
gene$fileSkipColumns = 1;       # one column of row labels
gene$fileSliceSize = 2000;      # read file in slices of 2,000 rows
gene$LoadFile(expression_file_name);

## Run the analysis
snpspos = read.table(snps_location_file_name, header=TRUE, stringsAsFactors = FALSE, sep="\t");
genepos = read.table(gene_location_file_name, header=TRUE, stringsAsFactors = FALSE, sep="\t");

me = Matrix_eQTL_main(
  snps = snps,
  gene = gene,
  output_file_name   = "./modelANOVA.tra.txt",
  pvOutputThreshold  = 1e-5,
  useModel = modelANOVA, # modelANOVA, modelLINEAR, or modelLINEAR_CROSS
  errorCovariance = numeric(),
  verbose = TRUE,
  output_file_name.cis = "./modelANOVA.cis.txt",
  pvOutputThreshold.cis = 1e-5,
  snpspos = snpspos,
  genepos = genepos,
  cisDist =  2e5,
  pvalue.hist = "qqplot",
  min.pv.by.genesnp = FALSE,
  noFDRsaveMemory = FALSE);

pdf("modelANOVA.pdf")
plot(me)
dev.off()

cisDist界定trans和cis的阈值;pvOutputThreshold判断trans的阈值;pvOutputThreshold.cis判断cis的阈值
可以根据自己物种基因组大小,基因-基因间区大小设置cisDist

5.用曼哈顿图----展示eQTL结果

# 加载所需的包
library(qqman)
# 读取文件
eQTL_results <- read.table("std3.modelANOVA.tra.txt", header=TRUE, sep="\t")
# 分离SNP列以获取染色体号和位置
eQTL_results$CHR <- as.numeric(gsub("Chr", "", gsub("-.*", "", eQTL_results$SNP)))
eQTL_results$BP <- as.numeric(gsub(".*-", "", eQTL_results$SNP))
# 确保使用未转换的p-value列 'p.value'
plot_data <- eQTL_results[, c("SNP", "CHR", "BP", "p.value")]

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

推荐阅读更多精彩内容