GWAS结果自动批量整理算法(上)

简介: GWAS结果自动批量整理算法

GWAS 结果批量整理

今天分享一个算法,主要是利用R语言对GWAS分析得到的结果进行批量整理,适用于批量筛选关键SNP位点与对应的基因或QTL,尤其是多个表型多个材料的批量分析。

GWAS(全基因组关联分析)是一种常用的遗传学研究方法,用于探索基因与表型之间的关联。它通过对大规模样本集合进行基因组广泛扫描,寻找与特定表型(如疾病、性状等)相关的遗传变异。

GWAS结果示例

通过GWAS分析后会得到一个储存显著SNP的结果文件,假设其命名为“组别.表型.模型.阈值.result.txt”,理论上会有很多个这种格式的文件,文件内容如下:

"INDEX" "SNP" "CHROM" "POS" "REF" "ALT" "Effect" "SE" "trait"
"1" "rs151515" 1 25554 "C" "A" -1.630526 0.39931444 6.688587e-06
"2" "rs32151" 1 72857 "T" "TAC" 0.734972 0.17574796 9.271553e-06

第二列是SNP的位点名称,最后一列是对应的P值,这两个信息非常关键。

整理思路与算法解释

首先,library(tidyverse)加载R包,代码流程均使用优雅的tidy框架。

library(tidyverse)

step1:原始数据整理

大致思路是先读取当前目录下的文件列表,然后依次循环执行计算过程,识别表型、模型、P值等参数,然后传递给筛选函数,并对符合条件的值进行标注,最后会将结果写出为一个csv文件,用于下一步的计算。

id_list <- list.files("./data/",pattern = "*.txt")
for (id in id_list){
file_name <- paste0("./",id)
  atom <- str_split(id,"[.]")
  # Group A  -----
  if (length(atom[[1]]) == 5){ 
    phe <- atom[[1]][1]
    way <- atom[[1]][2] %>% str_replace("Farm","") 
    plast <- atom[[1]][3]
    # 特异性标注P值并将其装换为数字型
    if (plast == "1e-5"){plast <- 6}else{plast <- as.numeric(plast)}
    print(file_name)
    # 计算P值并筛选
    df <- read_delim(file_name,delim = " ",
                     col_types = cols(CHROM = col_character()))
    colnames(df)[9] <- way
    df %>% 
      mutate(log = round(-log10(!!sym(way)),1)) %>% 
      filter(log > plast) ->data
    # 转换染色体编号
    i <- 1
    new <- data.frame(matrix(ncol = 2))
    new <- new[-1,]
    for (x in c(1:7)){
      for (y in c("A","B","D")){
        chr <- paste0(x,y)
        # print(chr)
        new_add <- c(i,chr)
        new <- rbind(new,new_add)
        i <- i + 1
      }
    }
    colnames(new) <- c("CHROM","chr")
    # 替换染色体编号
    data %>% 
      left_join(new,by = "CHROM") ->data2
    data2$loc <- phe
    # 待标注的log值筛选
    data2$logwt <- ifelse(data2$log > 10,paste0('log=',data2$log,sep=""),NA)
    data2$MB <- data2$POS/1000000
    # 写出为中间结果
    write_csv(data2,paste0("./out/1_GWAS_Result_txt2csv/",phe,".",
                           way,".csv"))
  }
}

获取文件列表:

使用list.files()函数,查找目录中所有满足文件名模式为"*.txt"的文件,并将它们的文件名存储在id_list列表中

遍历文件列表:

使用一个循环来遍历id_list中的每个文件名(变量名为id)

文件名解析:

使用str_split()函数,将文件名(id)按照"."分割成多个部分,存储在atom中

条件判断 (Group A):

检查atom中的部分数量是否为5,如果是,进入下一步

变量赋值:

从atom中获取不同部分的值,分别赋给phe、way和plast变量。 对way进行处理,将其中的"Farm"替换为空字符串

特殊值处理:

将plast的值与字符串"1e-5"进行比较,如果相等,将plast设置为6,否则将其转换为数值类型(这里如果需要人工规定阈值则修改此参数)

数据读取与处理:

使用read_delim()函数读取文件内容,并指定列类型。数据将被读入名为df的数据框。 修改df的第9列名称为way。 使用mutate()函数,计算并添加新的"log"列,值为way列的负对数的舍入值。 使用filter()函数,筛选出"log"列大于plast的行,结果存储在名为data的数据框中。

染色体编号转换:

使用两个嵌套循环,生成一个新的数据框new,其中存储了染色体编号的对应关系,生成的new数据框将被用于将染色体编号从数字格式转换为字符格式。

数据处理与替换:

使用left_join()函数,将之前筛选得到的data数据框与new数据框按照"CHROM"列进行连接,结果存储在data2中。 将data2中的"CHROM"列替换为之前提取的phe值。 根据条件,计算并添加"logwt"列和"MB"列。

结果输出:

使用write_csv()函数,将经过处理的data2数据框写入指定路径("./out/1_GWAS_Result_txt2csv/")下,以"phe.way.csv"的格式命名。

相关文章
|
存储 并行计算 算法
GWAS结果自动批量整理算法(下)
GWAS结果自动批量整理算法(下)
|
算法 Linux Python
SGAT丨快捷GWAS结果显著SNP位点归类提取与变异类型转化算法,基于R语言tidyverse
SGAT丨快捷GWAS结果显著SNP位点归类提取与变异类型转化算法,基于R语言tidyverse
|
算法 Linux 数据处理
SGAT丨GWAS得到的结果怎么处理?一种基于tidyverse的数据整理实用小算法
SGAT丨GWAS得到的结果怎么处理?一种基于tidyverse的数据整理实用小算法
|
1天前
|
机器学习/深度学习 算法
基于改进遗传优化的BP神经网络金融序列预测算法matlab仿真
本项目基于改进遗传优化的BP神经网络进行金融序列预测,使用MATLAB2022A实现。通过对比BP神经网络、遗传优化BP神经网络及改进遗传优化BP神经网络,展示了三者的误差和预测曲线差异。核心程序结合遗传算法(GA)与BP神经网络,利用GA优化BP网络的初始权重和阈值,提高预测精度。GA通过选择、交叉、变异操作迭代优化,防止局部收敛,增强模型对金融市场复杂性和不确定性的适应能力。
103 80
|
20天前
|
算法
基于WOA算法的SVDD参数寻优matlab仿真
该程序利用鲸鱼优化算法(WOA)对支持向量数据描述(SVDD)模型的参数进行优化,以提高数据分类的准确性。通过MATLAB2022A实现,展示了不同信噪比(SNR)下模型的分类误差。WOA通过模拟鲸鱼捕食行为,动态调整SVDD参数,如惩罚因子C和核函数参数γ,以寻找最优参数组合,增强模型的鲁棒性和泛化能力。
|
26天前
|
机器学习/深度学习 算法 Serverless
基于WOA-SVM的乳腺癌数据分类识别算法matlab仿真,对比BP神经网络和SVM
本项目利用鲸鱼优化算法(WOA)优化支持向量机(SVM)参数,针对乳腺癌早期诊断问题,通过MATLAB 2022a实现。核心代码包括参数初始化、目标函数计算、位置更新等步骤,并附有详细中文注释及操作视频。实验结果显示,WOA-SVM在提高分类精度和泛化能力方面表现出色,为乳腺癌的早期诊断提供了有效的技术支持。
|
6天前
|
供应链 算法 调度
排队算法的matlab仿真,带GUI界面
该程序使用MATLAB 2022A版本实现排队算法的仿真,并带有GUI界面。程序支持单队列单服务台、单队列多服务台和多队列多服务台三种排队方式。核心函数`func_mms2`通过模拟到达时间和服务时间,计算阻塞率和利用率。排队论研究系统中顾客和服务台的交互行为,广泛应用于通信网络、生产调度和服务行业等领域,旨在优化系统性能,减少等待时间,提高资源利用率。
|
14天前
|
存储 算法
基于HMM隐马尔可夫模型的金融数据预测算法matlab仿真
本项目基于HMM模型实现金融数据预测,包括模型训练与预测两部分。在MATLAB2022A上运行,通过计算状态转移和观测概率预测未来值,并绘制了预测值、真实值及预测误差的对比图。HMM模型适用于金融市场的时间序列分析,能够有效捕捉隐藏状态及其转换规律,为金融预测提供有力工具。
|
22天前
|
算法
基于GA遗传算法的PID控制器参数优化matlab建模与仿真
本项目基于遗传算法(GA)优化PID控制器参数,通过空间状态方程构建控制对象,自定义GA的选择、交叉、变异过程,以提高PID控制性能。与使用通用GA工具箱相比,此方法更灵活、针对性强。MATLAB2022A环境下测试,展示了GA优化前后PID控制效果的显著差异。核心代码实现了遗传算法的迭代优化过程,最终通过适应度函数评估并选择了最优PID参数,显著提升了系统响应速度和稳定性。
|
14天前
|
机器学习/深度学习 算法 信息无障碍
基于GoogleNet深度学习网络的手语识别算法matlab仿真
本项目展示了基于GoogleNet的深度学习手语识别算法,使用Matlab2022a实现。通过卷积神经网络(CNN)识别手语手势,如&quot;How are you&quot;、&quot;I am fine&quot;、&quot;I love you&quot;等。核心在于Inception模块,通过多尺度处理和1x1卷积减少计算量,提高效率。项目附带完整代码及操作视频。