GWAS分析中显著位点如何注释基因:excel???
大家好,我是邓飞。
今天星球的小伙伴问了一个问题:
我现在在做GWAS分析,现在已经找到性状关联的SNP位点,下一步我如何根据position 找到基因呢?
关于基因注释,之前写过一些博客,可以用到的软件有:ANNOVAR、Bedtools,今天回答了这个问题,感觉excel也可以做基因注释了。
下面,对我的回答进行进一步的阐述。
1. GWAS分析
GWAS分析,之前写过一个Cookbook,包括方方面面的内容了,如果是小白,推荐一遍看配套的视频,一遍敲代码学习:
录制了配套的视频教程,前面的数据下载、软件安装、环境配置等相关视频免费观看,后面的付费观看。对于想要快速学习的小白,视频+代码+数据+实操+技术支持,是比较快的一条路。
(扫码查看视频教程)
2,显著SNP位点
做完GWAS分析后,确定阈值,然后小于阈值的位点都是显著性位点,显著性位点最重要的两个信息:
-
染色体
-
物理位置
有时候还包括snp的名称,但是不是必填项,只需要上面两个信息,就可以知道显著snp在基因组上的位置了。
3,配套基因组的gff文件
一般,有基因组数据的物种,有基因组的版本,还有配套的gff或者gff3格式的文件,文件的内容里面有:
-
染色体
-
基因起始位置
-
基因终止位置
-
基因功能描述
-
……
类似:
4,计算LD衰减距离
为何要计算LD衰减距离呢,是为了知道显著snp代表的区间,因为存在连锁,所以衰减距离就是确定snp所代表的有效区间,可以代表这个有效区间的变异。虽然snp不在基因上,但是如果snp的衰减距离区间内(比如上下50kb)包含基因,那也可以说明这个基因是显著影响性状的。
所以,计算了LD衰减距离,显著性snp的信息,就变成了:
-
染色体
-
有效区间起始位置
-
有效区间终止位置
5,用excel注释显著性snp
我们把gff文件,简化一下,整理成excel格式:
怎么用excel表格呢,可以手动查看,也可以编写一个函数。
话说,上面的显著性位点,一共就6个SNP,手动搞就行了。
第一个snp,区间是1染色体,5-15,这个区间有:gene1
第二个snp,区间是1染色体,10-20,这个区间有:gene2,不是完全包括,但是有交集,也算是
第三个snp,没有基因
第四个snp,gene4
第五个snp:没有基因
第六个snp:没有基因
所以这些snp,一共注释的基因有:gene1, gene2, gene4
6,我有1000个显著性位点,谢谢
如果位点很多,这就需要用到软件了:bedttols
「换到基因注释的领域,看一下相关需求:」
-
1,显著性的SNP位点,取上下游50k的位点,作为候选的区间
-
2,将候选区间有基因的,匹配到SNP的右边
「处理注意:」
-
1,显著SNP在上下游区间时,可能会有交叉,所以要先合并(merge)
-
2,匹配基因时,一个SNP区间可能会有多个基因
1. 数据描述
「SNP区间文件:」
这里,提取显著SNP的区间,提取三列信息:染色体,开始位置,结束位置:
共有6个SNP区间,其中第一个和第二个有重合,第五个和第六个有重合。
cat snp_infor.ped
chr1 5 15
chr1 10 20
chr1 30 40
chr1 80 90
chr1 110 120
「基因区间文件:」
共有5个基因区间文件,分别是:染色体,开始位置,终止位置,基因名称。
cat gene_infor.ped
chr1 1 14 gene1
chr1 17 19 gene2
chr1 45 82 gene3
chr1 88 93 gene4
2. 提取每个SNP上面的基因
「需求:」
-
每个SNP一行
-
如果有基因在其区间,放到右边,如果没有基因,返回空
-
如果一个SNP区间对应多个基因,写成多行
代码:
-
intersect,交集
-
-a,第一个位置信息表
-
-b,第二个位置信息表
-
-loj,以第一个为基准,返回结果
结果可以看到,第二个SNP区间,对应两个基因,写成了两行。第三个SNP区间没有对应基因,用-1表示占位。共返回8行信息。
3. 返回有基因信息的SNP
如果不想要占位符,只想返回有基因的SNP信息,可以命令如下:
bedtools intersect -a snp_infor.ped -b gene_infor.ped -wa -wb
结果:
$ bedtools intersect -a snp_infor.ped -b gene_infor.ped -wa -wb
chr1 5 15 chr1 1 14 gene1
chr1 10 20 chr1 1 14 gene1
chr1 10 20 chr1 17 19 gene2
chr1 80 90 chr1 45 82 gene3
可以看到,将没有匹配到基因的SNP删除了。
上面的信息中,有些SNP匹配到了多个基因,也就是基因是有重复的。
-
如果我们想看每个SNP匹配的基因情况,可以用上面的结果
-
如果我们想看一下共有多少无重复的基因匹配,就需要对SNP区间先合并
4. 合并SNP区间再匹配
合并命令:
bedtools merge -i snp_infor.ped >snp_infor_merge.ped
原始数据:
$ cat snp_infor.ped
chr1 5 15
chr1 10 20
chr1 30 40
chr1 80 90
chr1 110 120
合并的结果:
$ cat snp_infor_merge.ped
chr1 5 20
chr1 30 40
chr1 80 90
然后和基因的信息进行合并:
$ bedtools intersect -a snp_infor_merge.ped -b gene_infor.ped -wa -wb
chr1 5 20 chr1 1 14 gene1
chr1 5 20 chr1 17 19 gene2
chr1 80 90 chr1 45 82 gene3
5. 查看每个SNP区间基因的个数
结果可以用2中,统计一下个数,也可以用bedtools的-c参数:
$ bedtools intersect -a snp_infor.ped -b gene_infor.ped -c
chr1 5 15 1
chr1 10 20 2
chr1 30 40 0
chr1 80 90 2
chr1 110 120 0
结果可以看到,SNP1有一个基因,SNP2有2个基因,SNP3没有基因……
6. 基因注释的不同玩法
把上面SNP的区间,作为显著性SNP上下游的信息,把基因的信息作为gff基因文件,就可以进行基因注释了!
上面的玩法都可以做。
「注意,将gff格式整理为:染色体,开始位置,结束位置,基因信息;
snp区间整理为:染色体,开始区间,结束区间」
可以实现的功能:
-
每个SNP区间内的基因
-
每个SNP全进内基因的个数
-
合并SNP区间内的基因
-
合并SNP区间内基因的个数
相关文章:

GWAS分析中显著位点如何注释基因:excel???
大家好,我是邓飞。 今天星球的小伙伴问了一个问题: 我现在在做GWAS分析,现在已经找到性状关联的SNP位点,下一步我如何根据position 找到基因呢? 关于基因注释,之前写过一些博客,可以用到的软件…...

深入浅出 CSS 定位:全面解析与实战指南
“批判他人总是想的太简单 剖析自己总是想的太困难” 文章目录 目录 前言文章有误敬请斧正 不胜感恩!1. CSS 定位概述2. 定位类型详解2.1 static(默认定位)2.2 relative(相对定位)2.3 absolute(绝对定位&am…...

HTTPS协议详解:从原理到流程,全面解析安全传输的奥秘
💝💝💝欢迎莅临我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:「storm…...

Android 13.0 系统内存优化之修改dalvik虚拟机的内存参数
1.前言 在13.0的系统rom开发定制中,app应用也是运行在dalvik虚拟机上的,所以对于一些内存低的系统中,在某些大应用会出现耗内存 卡顿情况,这是系统分配的内存不够大,在进行耗内存的操作,就会出现频繁gc等等原因造成不流畅的现象,接下来就分析下 虚拟机分配内存的相关原理…...

C# 无边框窗体,加阴影效果、多组件拖动、改变大小等功能完美实现优化版效果体验
一、预览效果 国庆节第一天,祝祖国繁荣昌盛! 1.1 效果图 (WinForm无边框窗体,F11可全屏) 拖动窗体时半透明效果(拖动时参考窗体后面释放位置) 说明:本功能的实现基于网友的原型完善而来,更多代码可以参考他的文章 h...

深入解析 ChatGLM 模型:核心原理、优势与未来应用前景
1. 引言 1.1 ChatGLM 模型概述 ChatGLM 是一类基于自回归语言模型的生成式预训练模型,专门设计用于处理对话系统中的自然语言生成任务。ChatGLM 模型依托于 Transformer 架构,具备高度并行化的计算能力,并能够捕捉长距离的语言依赖关系。在…...

python全栈学习记录(二十二)多态性、封装、绑定方法与非绑定方法
多态性、封装、绑定方法与非绑定方法 文章目录 多态性、封装、绑定方法与非绑定方法一、多态性二、封装三、绑定方法与非绑定方法 一、多态性 多态指的是同一种事物的多种形态,如水:冰、水蒸气、液态水,又如动物:猫、狗、猪。 多…...

用Python制作自己的聊天机器人:从零开始构建智能对话助手
解锁Python编程的无限可能:《奇妙的Python》带你漫游代码世界 近年来,聊天机器人已经成为日常生活中不可或缺的工具,从自动客服到个人助手,聊天机器人在各类应用中广泛存在。如果你想了解如何制作一个自己的聊天机器人,那么这篇文章将带你一步步实现这个目标。我们将使用…...

LabVIEW裂纹深度在线监测系统
随着铁路运输技术的快速发展,火车安全问题成为重中之重,尤其是轮面裂纹的检测和管理。裂纹的出现可能导致严重的列车事故,因此,建立可靠的在线监测系统,实时掌握裂纹情况,对保障铁路运输安全至关重要。 La…...

工业物联网的伦理和社会影响
随着科技的飞速发展,工业物联网(IIoT)已经成为现代工业领域的重要组成部分。它通过将各种设备、传感器和系统连接起来,实现了生产过程的智能化、自动化和高效化。然而,在享受工业物联网带来的巨大便利和经济效益的同时…...

TCP --- 确认应答机制以及三次握手四次挥手
序言 在前一篇文章中,我们介绍了 UDP协议 (点击查看)👈,该协议给我们的感觉就两个字 — 简单,只是将我们的数据进行简单的添加报头然后发送。当然使用起来虽然简单,但是否能送到目的地,那就要看网络的状态了…...

GPT带我学-设计模式17-装饰器模式
概述 装饰器模式(Decorator Pattern)是一种结构型设计模式,允许你在不改变对象接口的前提下,动态地给对象添加新功能。这个模式通常用于扩展类的功能。 基本结构 组件接口(Component):定义一…...

【Redis】如何在 Ubuntu 上安装 Redis 5
🥰🥰🥰来都来了,不妨点个关注叭! 👉博客主页:欢迎各位大佬!👈 本期内容主要介绍如何在 Ubuntu 上安装 Redis5 一些碎碎念: 本来这期内容介绍如何在 Centos 安装 Redis …...

房屋水电费记账本:内置的数组数据击按钮不能删除,页面手动添加的可以删除
<!DOCTYPE html> <html lang"zh-CN"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>房租水电费记录</title><script type&qu…...

【ubuntu】apt是什么
目录 1.apt简介 2.常用apt指令 2.1安装 2.2更新列表 2.3更新已经安装的软件包 2.4搜索软件包 2.5显示软件包信息 2.6移除软件包 2.7清理无用的安装包 2.8清理无用的依赖项 3.apt和apt-get 3.1区别 3.2 总结 1.apt简介 apt的全称是advanced package …...

堆排序算法的原理与应用
堆排序(Heap Sort)是一种基于堆数据结构的比较排序算法。它具有时间复杂度为 O(n log n) 的优点,并且空间复杂度为 O(1),是一种不稳定的排序算法。本文将详细介绍堆排序的工作原理、步骤以及它的应用场景。 一、堆排序的基本概念…...

【2024版本】Mac/Windows IDEA安装教程
IDEA 2024版本真的很强大,此外JDK发布了最新稳定版 JDK21 ,只有新版本支持JDK 21、JDK22。原来数据库插件不支持redis等一些NoSql的数据库的连接,如果要使用需要自己单独装收费的插件。直接打开idea就很吃内存了,再打开其他一大堆…...

Oracle bbed编译安装及配置
1. 什么是bbed ? Oracle Block Brower and EDitor Tool,是一个可以对oracle data block进行查看,编辑修改的内置工具。对于bbed,oracle本身是不提供支持的。 2. 如何编译bbed环境? 10g版本: 1) 编译bbed cd $ORACL…...

MindSearch 部署到Github Codespace 和 Hugging Face Space
conda init后需要重开终端,不然一键复制会导致后续pip install会安装错环境 还是报错 ImportError: cannot import name AutoRegister from class_registry (/opt/conda/envs/mindsearch/lib/python3.10/site-packages/class_registry/__init__.py)pip install --…...

【Maven】依赖管理,Maven仓库,Maven核心功能
Maven 是一个项目管理工具,基于 POM(Project Object Model,项目对象模型)的概念,Maven 可以通过一小段描述信息来管理项目的构建,报告和文档的项目管理工具软件 大白话:Maven 是一个项目管理工…...

Android wifi信号和漫游信号设置
1.wifi信号 /packages/modules/Wifi/framework/java/android/net/wifi/WifiManager.java Deprecated public static int calculateSignalLevel(int rssi, int numLevels) { if (rssi < MIN_RSSI) { //*/update wifi signal return 1;…...

检查cuda和显卡的可用性
检查cuda和显卡的可用性 import torch device_gpu torch.device(cuda if torch.cuda.is_available() else cpu) print(device_gpu) print(torch.cuda.is_available())...

Kotlin:2.0.20 的新特性
一、概述 Kotlin 2.0.20英文版官方文档 Kotlin 2.0.20发布了!这个版本包括对Kotlin 2.0.0的性能改进和bug修复,我们在其中宣布Kotlin K2编译器为Stable。以下是本次发布的一些亮点: 数据类复制函数将具有与构造函数相同的可见性来自默认目标层次结构的源集的静态访…...

Python内存管理与泄漏排查实战
Python内存管理与泄漏排查实战 Python作为一种高级编程语言,因其易读性和丰富的标准库而备受开发者青睐。然而,随着项目的复杂度增加,内存管理问题可能会影响程序的性能,甚至导致内存泄漏。为了构建健壮且高效的应用程序…...

828华为云征文|华为云Flexus云服务器X实例搭建部署H5美妆护肤分销商城、前端uniapp
准备国庆之际,客户要搭个 H5 商城系统,这系统好不容易开发好啦,就差选个合适的服务器上线。那可真是挑花了眼,不知道哪款性价比高呀!就像在琳琅满目的选择前。最终慧眼识珠,选择了华为云 Flexus X。至于为什…...

初学51单片机之I2C总线与E2PROM二
总结下上篇博文的结论: 1:ACK信号在SCL为高电平期间会一直保持。 2:在字节数据传输过程中如果发送电平跳变,那么电平信号就会变成重复起始或者结束的信号。(上篇博文的测试方法还是不能够明确证明这个结论࿰…...

Kafka学习笔记(一)Kafka基准测试、幂等性和事务、Java编程操作Kafka
文章目录 前言4 Kafka基准测试4.1 基于1个分区1个副本的基准测试4.2 基于3个分区1个副本的基准测试4.3 基于1个分区3个副本的基准测试 5 Java编程操作Kafka5.1 引入依赖5.2 向Kafka发送消息5.3 从Kafka消费消息5.4 异步使用带有回调函数的生产消息 6 幂等性6.1 幂等性介绍6.2 K…...

结合vueuse实现图片懒加载
介绍 为什么要有懒加载? 在一个网页中如果有很多张图片,那么用户初进这个页面的时候不必一次性把所有图片都加载出来,否则容易造成卡顿和浪费。应该是,用户的视图页面滑到该图片的位置,然后再把该图片加载出来。 前置…...

Mysql数据库--聚合查询、分组查询、联合查询(不同的连接方式)
文章目录 1.查询的进阶版1.1查询搭配插入进行使用1.2聚合查询1.3group by分组查询1.4联合查询之笛卡尔积1.5左外连接,右外连接介绍join on1.6自连表 1.查询的进阶版 1.1查询搭配插入进行使用 我们首先创建两张表,一个叫做student,一个叫做student2,两个…...

计算机视觉——图像修复综述篇
目录 1. Deterministic Image Inpainting 判别器图像修复 1.1. sigle-shot framework (1) Generators (2) training objects / Loss Functions 1.2. two-stage framework 2. Stochastic Image Inpainting 随机图像修复 2.1. VAE-based methods 2.2. GAN-based methods …...