模式植物GO背景基因集制作

news2024/11/18 12:48:23

一边学习,一边总结,一边分享!

写在前面

关于GO背景基因集文件的制作,我们在很早以前也发过。近两天,自己在分析时候,也是被搞了头疼。想重新制作一份GO背景基因集,进行富集分析。但是结果,也不如意。以及在制作的过程中,也是跟随着以前的教程制作,发现以前整理的教程比较乱,那么借此机会,也进行整理,重新进行记录。

本期教程

点击访问原文:模式植物GO背景基因集制作

前言

我们在做转录组数据分析时,大多数都会进行功能富集分析,预测目的基因所具有的的功能。富集工具常用到的R语言中clusterProfiler包,里面包含了上千个功能富集的背景数据文件,功能非常强大,目前已经更新到V4.0版本。

在agriGO数据库中下载

前期准备文件

  1. 所需注释的物种基因核酸序列或蛋白序列
  2. swissprot数据
  3. idmapping.tb.gz文件
  4. go-basic.obo文件

数据下载

你可以分别进去对应的网址下载最新的数据库即可。

  1. Swissprot数据库:https://ftp.ncbi.nlm.nih.gov/blast/db/FASTA/
  2. dimapping数据:https://ftp.proteininformationresource.org/databases/idmapping/
wget -o GO_database/swissprot.gz  https://ftp.ncbi.nlm.nih.gov/blast/db/FASTA/swissprot.gz
wget -o GO_database/go-basic.obo http://purl.obolibrary.org/obo/go/go-basic.obo
wget -o GO_database/idmapping.tb.gz https://ftp.proteininformationresource.org/databases/idmapping/idmapping.tb.gz

建库及文件提取

1. 使用diamond makedb建库

diamond makedb --in GO_database/swissprot.gz --threads 60 --db GO_database/swissprot

2. GO号与swissprot蛋白ID文件的提取

下载idmapping数据库

https://ftp.proteininformationresource.org/databases/idmapping/idmapping.tb.gz

解压idmapping.tb.gz文件

gunzip idmapping.tb.gz


该文件的第一列为数据库ID,第八列为GO_ID,是我们这一次要与未知的结果进行转换的关键部分。

提取idmapping.tb.gz文件ID~GO.list file

awk -v FS="\t" -v OFS="\t" '{print $1,$8}' idmapping.tb | grep "GO" > idmapping.GO.list

使用Python脚本提取

输出结果

3. GO term文件提取

下载go-basi.obo,GO_Term

http://purl.obolibrary.org/obo/go/go-basic.obo

原始go-basi.obo文件格式

脚本提取


输出结果


基因文件序列的准备

下载所需的背景基因序列,核酸序列或蛋白序列度都可以

我们这里以番茄基因组4.0版本为例子。

#!/bin/bash
## download the tomato reference geneome to 4.1 
wget https://solgenomics.net/ftp//tomato_genome/annotation/ITAG4.0_release/ITAG4.0_gene_models.gff

wget https://solgenomics.net/ftp//tomato_genome/assembly/build_4.00/S_lycopersicum_chromosomes.4.00.fa

gffread ITAG4.0_gene_models.gff -T -o ITAG4.0_gene_models.gtf
##
gffread ITAG4.0_gene_models.gff -T -o ITAG4.0_gene_models.gtf
##
gffread -w tomato_4.0.fa -g S_lycopersicum_chromosomes.4.00.fa ITAG4.0_gene_models.gtf

注意:若你不想这用操作,下载蛋白序列即可

1. 比对

diamond blastx -d GO_database/swissprot.dmnd -q ../Tomato_4.0/tomato_4.00.fa -k 1 -e 0.00001 -o tomato.gene.m8

2. 筛选出最佳结果

这步,若你认为有必要进行,那就进行筛选。筛选的参数可以自己调整。

使用*.pl教程

die "perl $0 *.m8 *.m8.out\n" if(@ARGV!=2);
open IN, "$ARGV[0]" or die "can not open file: $ARGV[0]\n";
open OA, ">$ARGV[1]" or die "can not open file: $ARGV[1]\n";

my ($line,@inf,%score_data,%m8_data,%order);
my $n=1;
while($line=<IN>){
        chomp $line;
        @inf=split /\t/,$line;
        if($inf[11]>$score_data{$inf[0]}){
                $score_data{$inf[0]}=$inf[11];
                $m8_data{$inf[0]}=$line;
        }
        else{
                next;
        }       
        $order{$line}=$n++;
}
foreach my $i (sort {$order{$a}<=>$order{$b}} keys %order){
        @inf=split /\t/,$i;
        if(exists $m8_data{$inf[0]}){
                print OA "$m8_data{$inf[0]}\n";
        }
}
close IN;
close OA;

运行

perl m8_best_pick.pl tomato.gene.m8 tomato.gene.m8.best.out

3. 提取最佳结果ID文件

使用Python脚本:

或,你可以使用wak命令提取就可以。

运行

python ../get_blastx_wiss_id.py 02.tomato.gene.best.m8 > 03.tomato.transcript.swissprot.list

结果文件:

4. 合并文件,获得目标基因-GO ID


运行:

python get_go_annotation.py GO_batabase/idmapping.GO.list 03.tomato.transcript.swissprot.list

结果文件:

5. 拆分文件


注意:
我们的基因ID中,没有以mRNA:Solyc00g500003.1.1命名,如Solyc00g500003.1.1.我们需要将split_with_go.py进行适当修改即可。

运行:

python ../split_with_go.py 04.tomato_go.annotation  05.tomato.4.0.Go.list

结果文件:


到这里基本结束了,你获得Gene ID与对应GO ID

富集分析

你可以使用相关的云平台做GO功能富集分析,例如使用基迪奥生信平台GO功能富集工具

在线网址:OmicShare Tools - 基迪奥生信云工具:

上传背景基因

云平台支持的背景文件的数据格式

<,>

自己进行GO term的提取

下载go-basi.obo,GO_Term

http://purl.obolibrary.org/obo/go/go-basic.obo

原始go-basi.obo文件格式

Python脚本:

运行:

python get_go_term.py go-basic.obo

使用R进行合并

library(clusterProfiler)
## 加载背景基因文件“gene-GO"
go_anno <- read.delim('tomato_go.annotation.new', header = FALSE, stringsAsFactors = FALSE)
names(go_anno) <- c("gene_id", "GO_ID")
head(go_anno)

### 导入GO注释文件
go_class <- read.delim("go_term.list", header = F, stringsAsFactors = F)
names(go_class) <- c("GO_ID", "Description","Ontology")
head(go_class)

## 合并背景基因
go_ann <- merge(go_anno, go_class, by = 'GO_ID', all.x = F)
head(go_ann)


开始富集分析:

# 导入差异基因
gene_list <- read.table("tomato.gene.5000.txt", stringsAsFactors = F)
head(gene_list)
names(gene_list) <- c("gene_id")
gene_select <- gene_list$gene_id

## 富集分析
go_rich <- enricher(gene = gene_select,
                    TERM2GENE = go_ann[c('GO_ID','gene_id')],
                    TERM2NAME = go_ann[c('GO_ID','Description')],
                    pvalueCutoff = 0.05,
                    pAdjustMethod = 'BH',
                    qvalueCutoff = 0.2,
                    maxGSSize = 200) 
head(go_rich)

**柱状图**
barplot(go_rich,
        drop=T,
        showCategory = 10) 

**气泡图**
dotplot(go_rich)


网络图

enrichplot::cnetplot(go_rich,circular = F, colorEdge = T)


写在最后,为了方便,我将前面的步骤进行分别写在一个脚本中。只要前期的数据准备好,输入所需的物种序列的序列即可。

算是比较方便。

准备文件GO_database

  1. swissprot.gz
  2. go-basic.obo
  3. idmapping.tb

运行脚本:

sh 01.run.swissprot.sh

结果文件:

  1. go_term.list
  2. idmapping.GO.list

GO注释文件脚本:

sh 02_run.GO_enrichment_file.sh test.fa
  • test.fa为注释文件序列

**注意:**若你不更改blast的脚本,这里默认只支持核酸序列。

结果文件:

在结果文件中05_gene.GO.list即最终结果文件。

后面的分析与前面的一致。


若你不想制作,我们这里提供完整的GO_database文件夹中的文件。你只需要在此基础上,运行你所需的物种序列即可。

原文访问:[模式植物GO背景基因集制作(https://mp.weixin.qq.com/s/08hAZs24mi_KBOa4QZRLdQ)

往期文章:

1. 复现SCI文章系列专栏

2. 《生信知识库订阅须知》,同步更新,易于搜索与管理。


3. 最全WGCNA教程(替换数据即可出全部结果与图形)

  • WGCNA分析 | 全流程分析代码 | 代码一

  • WGCNA分析 | 全流程分析代码 | 代码二

  • WGCNA分析 | 全流程代码分享 | 代码三

5. 转录组分析教程

转录组上游分析教程[零基础]


小杜的生信筆記,主要发表或收录生物信息学的教程,以及基于R的分析和可视化(包括数据分析,图形绘制等);分享感兴趣的文献和学习资料!!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1099628.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

vueday01——ref响应式

特性&#xff1a;持续监控某个响应式变量的属性名变化&#xff0c;可以使用shallowRef来取消这一特性&#xff0c;只监控对象整体的变化 ref测试代码&#xff1a; <template><div :id"idValue" ref"myDiv">打印obj{{ obj }}</div><…

大数据Flink(九十七):EXPLAIN、USE和SHOW 子句

文章目录 EXPLAIN、USE和SHOW 子句 一、EXPLAIN 子句 二、USE 子句

QQd挂源码已更新最新加速项目程序全开源

1、99 公益日活动加速任务已全部完成适配&#xff0c;空间公益说说和评论并分享小世界内容任务在已有的功能上进行挂机&#xff0c; 其中【发小世界】功能暂时更名为【公益小世界】。 2、上线新功能【公益答题】用于完成参加 Qbox 公益答题任务&#xff0c;等级套装有任意一项…

期中考Web复现

第一题 1z_php <?php //Yeedo told you to study hard! echo !(!(!(!(include "flag.php")||(!error_reporting(0))||!isset($_GET[OoO])||!isset($_GET[0o0])||($_GET[OoO]2023)||!(intval($_GET[OoO][0])2023)||$_GET[0o0]$_GET[OoO]||!(md5($_GET[0o0])md5($_…

Java Static

Static 变量被 static 修饰 static 修饰的变量在类中只有一份&#xff0c;可以称为类变量&#xff0c;其他变量称为实例变量在方法区加载类的时候&#xff0c;会检查类中是否存在静态变量&#xff0c;如果存在则会在堆内存区域开辟一块空间用于存储静态变量。方法区中的静态变…

A114-经典赛题-Web应用程序文件包含安全攻防

实验步骤: Web应用程序文件包含安全攻防 任务环境说明&#xff1a; 服务器场景&#xff1a;WebServ2003&#xff08;用户名&#xff1a;administrator&#xff1b;密码&#xff1a;空&#xff09; 服务器场景操作系统&#xff1a;Microsoft Windows2003 Server 服务器场景…

IPv6知识概述 - ND协议

IPv6知识概述 - ND协议 参考文章&#xff1a;https://blog.csdn.net/Gina_wj/article/details/106708770 IPv6基础篇&#xff08;四&#xff09;&#xff1a;邻居发现协议NDP ND协议功能概述 ND&#xff08;Neighbor Discovery&#xff0c;邻居发现&#xff09;协议是IPv6的…

01【Git的基本使用与底层原理】

下一篇&#xff1a;02【Git的分支与数据恢复】 目录&#xff1a;【Git系列教程-目录大纲】 文章目录 一、Git概述1.1 Git简介1.2 集中式与分布式1.2.1 集中式版本控制1.2.2 分布式版本控制 1.3 Git的使用流程1.3.1 本地仓库1.3.2 协同开发 1.4 Git的配置1.4.1 Git的配置等级1…

从头开始机器学习:线性回归

从头开始机器学习&#xff1a;线性回归 跟随 16 分钟阅读 28月 <> 1 一、说明 本篇实现线性回归的先决知识是&#xff1a;基本线性代数&#xff0c;微积分&#xff08;偏导数&#xff09;、梯度和、Python &#xff08;NumPy&#xff09;&#xff1b;从线性方程入手。 代…

【LeetCode刷题(数据结构与算法)】:用栈实现队列

请你仅使用两个栈实现先入先出队列。队列应当支持一般队列支持的所有操作&#xff08;push、pop、peek、empty&#xff09;&#xff1a; 实现 MyQueue 类&#xff1a; void push(int x) 将元素 x 推到队列的末尾 int pop() 从队列的开头移除并返回元素 int peek() 返回队列开头…

运维 | 如何在 Linux 系统中删除软链接 | Linux

运维 | 如何在 Linux 系统中删除软链接 | Linux 介绍 在 Linux 中&#xff0c;符号链接&#xff08;symbolic link&#xff0c;或者symlink&#xff09;也称为软链接&#xff0c;是一种特殊类型的文件&#xff0c;用作指向另一个文件的快捷方式。 使用方法 我们可以使用 ln…

双目标定之张正友标定法数学原理详解matlab版

目录 前言 1.相机标定 1.1 双目视觉基本原理 1. 2 相机的四个坐标系 1.3 相机畸变与校正 2.1 相机标定 张正友友棋盘格标定法在matlab的实现 这一篇主要详细介绍标定原理和相机各个坐标系之间的关系为后续的定位测距和重建做基础 前言 最近重新整理了一下自己做过的双目…

【单片机基础】使用51单片机制作函数信号发生器(DAC0832使用仿真)

文章目录 &#xff08;1&#xff09;DA转换&#xff08;2&#xff09;DAC0832简介&#xff08;3&#xff09;电路设计&#xff08;4&#xff09;参考例程&#xff08;5&#xff09;参考文献 &#xff08;1&#xff09;DA转换 单片机作为一个数字电路系统&#xff0c;当需要采集…

ICML2021 | RSD: 一种基于几何距离的可迁移回归表征学习方法

目录 引言动机分析主角&#xff08;Principal Angle&#xff09;表征子空间距离正交基错配惩罚可迁移表征学习实验数据集介绍 实验结果总结与展望 论文链接 相关代码已经开源 引言 深度学习的成功依赖大规模的标记数据&#xff0c;然而人工标注数据的代价巨大。域自适应&…

10种新型网络安全威胁和攻击手法

2023年&#xff0c;网络威胁领域呈现出一些新的发展趋势&#xff0c;攻击类型趋于多样化&#xff0c;例如&#xff1a;从MOVEit攻击可以看出勒索攻击者开始抛弃基于加密的勒索软件&#xff0c;转向窃取数据进行勒索&#xff1b;同时&#xff0c;攻击者们还减少了对传统恶意软件…

android U广播详解(二)

android U广播详解&#xff08;一&#xff09; 基础代码介绍 广播相关 // 用作单个进程批量分发receivers&#xff0c;已被丢弃 frameworks/base/services/core/java/com/android/server/am/BroadcastReceiverBatch.java // 主要逻辑所在类&#xff0c;包括入队、分发、结束…

Spacedrive:开源跨平台文件管理 | 开源日报 No.57

denoland/deno Stars: 91.2k License: MIT Deno 是一个简单、现代和安全的 JavaScript 和 TypeScript 运行时&#xff0c;使用 V8 引擎并用 Rust 构建。其主要功能包括&#xff1a; 默认情况下具有高度安全性&#xff0c;除非显式启用&#xff0c;否则无法访问文件、网络或环…

docker入门加实战—网络

docker入门加实战—网络 我们运行了一些容器&#xff0c;但是这些容器是否能够进行连通呢&#xff1f;那我们就来试一下。 我们查看一下MySQL容器的详细信息&#xff1a; 主要关注&#xff0c;Networks.bridge.IPAddress属性信息&#xff1a; docker inspect mysql # 或者过…

RT-Thread学习笔记(二):RT-Thread内核

RT-Thread内核 什么是RTOS&#xff1f;RTOS内核包含哪些内容&#xff1f;RT-Thread内核架构RT-Thread系统架构 RT-Thread内核文件RT-Thread系统启动流程RT-Thread 内核配置文件 什么是RTOS&#xff1f;RTOS内核包含哪些内容&#xff1f; RTOS(Real Time Operating System)指的…

PyTorch 深度学习之循环神经网络(基础篇)Basic RNN(十一)

0.Revision: DNN dense 重义层 全连接 RNN处理带有序列的数据 1. What is RNNs? linear layer 1.1 What is RNN? tanh (-1, 1) 1.2 RNN Cell in PyTorch 1.3 How to use RNNCell *先把维度搞清楚 多了一个序列的维度 2. How to use RNN 2.1 How to use RNN - numLayers…