你没看错,搞定GWAS meta分析只需一行代码!

本文介绍了METAL工具在基因组广泛关联研究(GWAS)meta分析中的应用,包括软件安装、配置文件编写和两种分析算法:基于p值和基于标准误。METAL支持对多个GWAS结果进行综合分析,通过增加样本量提升检验效能,并帮助发现新的关联位点。配置文件需指定每项研究的GWAS结果列标题和分隔符,以便正确识别数据。完成配置后,通过命令行执行分析。输出结果可用于筛选显著关联的位点,从而深入理解基因与疾病的关系。
摘要由CSDN通过智能技术生成

欢迎关注”生信修炼手册”!

METAL是gwas meta分析最常用的工具之一,官网如下

https://genome.sph.umich.edu/wiki/METAL

该软件的安装非常简单,直接下载编译好的二进制文件即可,安装过程如下

wget http://csg.sph.umich.edu/abecasis/metal/download/Linux-metal.tar.gz
tar xzvf Linux-metal.tar.gz
cd generic-metal/

在安装目录,有一个名为metal的可执行文件,该程序用法很简单,只需要编写一个配置文件,然后执行即可,所以关键在于配置文件的编写。在软件的安装目录,有一个名为example的文件夹,提供了两个示例,其中的metal.txt就是配置文件。

meta-analysis是对多个gwas分析结果进行综合评价,该软件支持以下两种meta分析的算法

  1. pvalue

  2. standard error

第一种是基于p值;第二种是基于标准误,我们知道标准误指的是某个统计量的分布,在使用第二种算法时,需要提供对应的统计量,即Effect, 以逻辑回归/线性回归为例,Effect对应的就是回归系数BETA, 标准误对应的就是回归系数的SE。

每种算法要求的gwas分析结果的格式稍有不同,其中以下3列是必须有的

  1. SNP对应的id或者rs号

  2. test allele

  3. other allele

在关联分析的结果中,会有OR值来表征关联强弱,而OR值是一个比值,分子除以分母,分子对应的allele为test allele, 分母对应的allele为other allele。

基于pvalue的算法,额外要求以下3列

  1. Pvalue

  2. 表示test allele和疾病关联方向的列,有正相关和负相关两种,以OR值为例,大于1为危险因素,小于1为保护因素,当时,为了能够区分正负,OR值需要取log

  3. 可选的列,表示样本的大小,根据每个数据集的样本大小来进行加权

基于标准误的算法,额外要求以下2列

  1. effect

  2. standard error

前文已经给过解释,effect对应回归分析中的回归系数beta值,standard error对应回归系数的SE。

在配置文件中共,我们需要指定每个study的GWAS结果中上述列对应的标题,以及文件分隔符等选项,这样才能保证软件正确的识别所需的信息,一个配置文件的示例如下

配置好之后,只需执行以下命令即可进行分析

metal metal.config.txt

输出结果示意如下

通过输出结果中的pvalue,来筛选显著关联的位点,通过gwas meta-analysis, 可以达到增加样本量,提高检验效能的目的,而且有助于发现新的关联位点。

·end·

—如果喜欢,快分享给你的朋友们吧—

往期精彩

  基因型填充

  CNV分析

GWAS meta分析是一种将多个基因组关联研究结果进行综合分析的方法,以下是一个Python脚本的例子,用于进行GWAS meta分析: ```python import pandas as pd import numpy as np import statsmodels.api as sm # 读取所有研究的GWAS结果文件 study1 = pd.read_csv("study1.csv") study2 = pd.read_csv("study2.csv") study3 = pd.read_csv("study3.csv") # 将每个研究的p值进行变换,转化为z值 study1["z"] = np.sqrt(2) * sm.stats.proportion.proportions_ztest(study1["n_cases"], study1["n_total"], value=study1["OR"])[0] study2["z"] = np.sqrt(2) * sm.stats.proportion.proportions_ztest(study2["n_cases"], study2["n_total"], value=study2["OR"])[0] study3["z"] = np.sqrt(2) * sm.stats.proportion.proportions_ztest(study3["n_cases"], study3["n_total"], value=study3["OR"])[0] # 将每个研究的z值和样本量进行合并 meta_data = pd.concat([study1[["SNP", "z", "n_cases", "n_total"]], study2[["SNP", "z", "n_cases", "n_total"]], study3[["SNP", "z", "n_cases", "n_total"]]]) # 计算每个SNP的z值和加权样本量 meta_data["wz"] = meta_data["z"] * np.sqrt(meta_data["n_cases"] + meta_data["n_controls"]) meta_data["w"] = np.sqrt(meta_data["n_cases"] + meta_data["n_controls"]) # 计算meta分析的z值和p值 meta_z = meta_data["wz"].sum() / meta_data["w"].sum() meta_p = 2 * (1 - sm.stats.norm.cdf(abs(meta_z))) # 输出meta分析结果 print("Meta-analysis result:") print("z value: ", meta_z) print("p value: ", meta_p) ``` 这个脚本首先读取每个研究的GWAS结果文件,将每个研究的p值转化为z值,然后将每个研究的z值和样本量进行合并,计算每个SNP的加权z值和加权样本量,最后计算meta分析的z值和p值,输出结果。要注意的是,不同研究的样本量、OR值等参数可能存在差异,要根据具体情况进行调整。
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值