SGAT丨GWAS得到的结果怎么处理?一种基于tidyverse的数据整理实用小算法

简介: SGAT丨GWAS得到的结果怎么处理?一种基于tidyverse的数据整理实用小算法

GWAS结果文件分析与处理方法

引言

在使用GAPIT进行GWAS分析后,会自动在工作目录下生成若干结果文件,其中相对比较重要的是result.csv文件,该文件中展示了得到的显著位点详细信息,比如染色体、物理位置、p值等,接下来介绍一种算法,对其进行整理计算为绘图所需格式。


主要步骤与思路

  • 读取数据文件GWAS.Results.csv
  • 替换染色体格式
  • 计算上下游区域
  • 计算region信息
  • 生成结果文件

项目运行环境

  • centos7 linux
  • R4.2.3

具体操作步骤

加载环境和数据

rm(list = ls())
library(tidyverse)
ARGS <- commandArgs(T)
print(paste0("Results Working Gene ID:",ARGS[1]))
job <- ARGS[1]
dir_MLM <- paste0("MLM_",job)
phe <- ARGS[2]
file_name <- paste0("/GAPIT.MLM.",phe,".GWAS.Results.csv")
df <- read.csv(paste0("./08_out_GWAS/",dir_MLM,file_name),header = T)

主要实用tidyverse包进行数据处理,ARGS是脚本的参数设置,如果单个任务可以直接读入文件,不用脚本传参,只需要设置好文件名进行读取。

染色体格式转换

###  替换染色体展示方式,1A_to_1 ===========================================================
chr_ref <- read.table("01_scripts/chr_num2str.txt",header = T)
# 读取染色体转换参考信息,可以进行自定义修改
chr_id_translate <- function(data,type){
  # 输入俩参,一为原始数据,二为类型
  if (type == "1_to_chr1A"){
    # 数字转字符型
    old_id <- as.character(data)
    for (k in 1:nrow(chr_ref)){
      if (as.character(chr_ref$chr_num[k]) == old_id){
        return(chr_ref$chr_str[k])
      }
    }
  }else{
    if (type == "chr1A_to_1"){
      # 字符转数字型
      old_id <- as.character(data)
      for (k in 1:nrow(chr_ref)){
        if (as.character(chr_ref$chr_str[k]) == old_id){
          return(chr_ref$chr_num[k])
        }
      }
    }else{
      if (type == "1_to_1A"){
        old_id <- as.character(data)
        for (k in 1:nrow(chr_ref)){
          if (as.character(chr_ref$chr_num[k]) == old_id){
            new <- paste0(chr_ref$atom7[k],chr_ref$atom3[k],sep="")
            return(new)
          }
        }
      }else{
        if (type == "1A_to_1"){
          old_id <- as.character(data)
          for (k in 1:nrow(chr_ref)){
            temp <- paste0(chr_ref$atom7[k],chr_ref$atom3[k],sep="")
            if (as.character(temp) == old_id){
              return(chr_ref$chr_num[k])
            }
          }
        }else{
        print("Please input again! type inaviably")
        }
      }
    }
  }
}

刚刚定义了一个函数chr_id_translate能够对染色体文件进行自定义转换,接下来将其依次应用到数据的染色体列。

for (i in 1:nrow(df)){
  df$Chromosome[i] <- chr_id_translate(df$Chromosome[i],"1A_to_1")
}

物理位置区间计算

根据Postion信息计算最大值和最小值,分别向上下游扩展500bp就能得到想要的区间,将其保存为region,用于后续绘图使用

s_1 <- min(df$Position)
s_2 <- max(df$Position)
s_1 <- s_1 - 500
s_2 <- s_2 + 500
region <- paste0(df$Chromosome[1],":",s_1,":",s_2)

结果保存

绘图需要三列信息,分别是染色体、物理位置、p值,因此将这部分数据单独存放到df_new,然后保存为新文件。

###  生成新文件,染色体-位置-P值 =============================================================
df_new <- df[,2:4]
file_new <- paste0("./09_out_MLM/",job,"_MLM.",phe,".GWAS.Results.csv",sep="")
write_csv(df_new,file_new,col_names=F)

至此,这个方法的原理已分享完毕,如果您在使用过程中有问题或者建议均可提交issues到Github,欢迎转发支持~

END

© 素材来源于网络,侵权请联系后台删除

笔记合集,点击直达

相关文章
|
2月前
|
机器学习/深度学习 算法 前端开发
别再用均值填充了!MICE算法教你正确处理缺失数据
MICE是一种基于迭代链式方程的缺失值插补方法,通过构建后验分布并生成多个完整数据集,有效量化不确定性。相比简单填补,MICE利用变量间复杂关系,提升插补准确性,适用于多变量关联、缺失率高的场景。本文结合PMM与线性回归,详解其机制并对比效果,验证其在统计推断中的优势。
1042 11
别再用均值填充了!MICE算法教你正确处理缺失数据
|
3月前
|
传感器 机器学习/深度学习 算法
【使用 DSP 滤波器加速速度和位移】使用信号处理算法过滤加速度数据并将其转换为速度和位移研究(Matlab代码实现)
【使用 DSP 滤波器加速速度和位移】使用信号处理算法过滤加速度数据并将其转换为速度和位移研究(Matlab代码实现)
268 1
|
4月前
|
机器学习/深度学习 Dragonfly 人工智能
基于蜻蜓算法优化支持向量机(DA-SVM)的数据多特征分类预测研究(Matlab代码实现)
基于蜻蜓算法优化支持向量机(DA-SVM)的数据多特征分类预测研究(Matlab代码实现)
121 0
|
3月前
|
机器学习/深度学习 算法 调度
14种智能算法优化BP神经网络(14种方法)实现数据预测分类研究(Matlab代码实现)
14种智能算法优化BP神经网络(14种方法)实现数据预测分类研究(Matlab代码实现)
374 0
|
5月前
|
传感器 机器学习/深度学习 分布式计算
卡尔曼滤波的多传感器数据融合算法
卡尔曼滤波的多传感器数据融合算法
775 0
|
7月前
|
存储 监控 算法
基于 C++ 哈希表算法实现局域网监控电脑屏幕的数据加速机制研究
企业网络安全与办公管理需求日益复杂的学术语境下,局域网监控电脑屏幕作为保障信息安全、规范员工操作的重要手段,已然成为网络安全领域的关键研究对象。其作用类似网络空间中的 “电子眼”,实时捕获每台电脑屏幕上的操作动态。然而,面对海量监控数据,实现高效数据存储与快速检索,已成为提升监控系统性能的核心挑战。本文聚焦于 C++ 语言中的哈希表算法,深入探究其如何成为局域网监控电脑屏幕数据处理的 “加速引擎”,并通过详尽的代码示例,展现其强大功能与应用价值。
174 2
|
2月前
|
机器学习/深度学习 人工智能 算法
【基于TTNRBO优化DBN回归预测】基于瞬态三角牛顿-拉夫逊优化算法(TTNRBO)优化深度信念网络(DBN)数据回归预测研究(Matlab代码实现)
【基于TTNRBO优化DBN回归预测】基于瞬态三角牛顿-拉夫逊优化算法(TTNRBO)优化深度信念网络(DBN)数据回归预测研究(Matlab代码实现)
152 0
|
8月前
|
数据采集 机器学习/深度学习 算法
别急着上算法,咱先把数据整明白:大数据分析的5个基本步骤,你都搞对了吗?
别急着上算法,咱先把数据整明白:大数据分析的5个基本步骤,你都搞对了吗?
510 4
|
3月前
|
存储 监控 算法
企业电脑监控系统中基于 Go 语言的跳表结构设备数据索引算法研究
本文介绍基于Go语言的跳表算法在企业电脑监控系统中的应用,通过多层索引结构将数据查询、插入、删除操作优化至O(log n),显著提升海量设备数据管理效率,解决传统链表查询延迟问题,实现高效设备状态定位与异常筛选。
137 3
|
3月前
|
算法 数据挖掘 定位技术
基于密度的聚类算法能够在含有噪声的数据集中识别出任意形状和大小的簇(Matlab代码实现)
基于密度的聚类算法能够在含有噪声的数据集中识别出任意形状和大小的簇(Matlab代码实现)
102 1

热门文章

最新文章