当前位置: 首页 > news >正文

R包:APAlyzer从RNA-seq数据计算APA表达丰度

在这里插入图片描述

文章目录

    • 介绍
    • 教程
    • 实战案例
      • 数据
      • 脚本
      • 运行

介绍

今天安利APAlyzer工具,它是通过RNA-seq数据获取3′UTR APA, intronic APA等表达谱的R包。

APAlyzer将bam文件比对到PolyA-DB数据库识别APA。

Most eukaryotic genes produce alternative polyadenylation (APA) isoforms. APA is dynamically regulated under different growth and differentiation conditions. Here, we present a bioinformatics package, named APAlyzer, for examining 3′UTR APA, intronic APA and gene expression changes using RNA-seq data and annotated polyadenylation sites in the PolyA_DB database. Using APAlyzer and data from the GTEx database, we present APA profiles across human tissues.

在这里插入图片描述

教程

library(APAlyzer)
library(TBX20BamSubset)
library(Rsamtools)# RNA-seq BAM files
flsall = getBamFileList()# Genomic reference
library(repmis)
URL="https://github.com/RJWANGbioinfo/PAS_reference_RData/blob/master/"
file="mm9_REF.RData"
source_data(paste0(URL,file,"?raw=True"))# Building 3’UTR and intronic PAS reference region at once
refUTRraw=refUTRraw[which(refUTRraw$Chrom=='chr19'),]
dfIPAraw=dfIPA[which(dfIPA$Chrom=='chr19'),]
dfLEraw=dfLE[which(dfLE$Chrom=='chr19'),]   
PASREF=REF4PAS(refUTRraw,dfIPAraw,dfLEraw)
UTRdbraw=PASREF$UTRdbraw
dfIPA=PASREF$dfIPA
dfLE=PASREF$dfLE # Building 3’UTR PAS and IPA reference using GTF files
download.file(url='ftp://ftp.ensembl.org/pub/release-99/gtf/mus_musculus/Mus_musculus.GRCm38.99.gtf.gz',destfile='Mus_musculus.GRCm38.99.gtf.gz')           
GTFfile="Mus_musculus.GRCm38.99.gtf.gz" 
PASREFraw=PAS2GEF(GTFfile)  
refUTRraw=PASREFraw$refUTRraw
dfIPAraw=PASREFraw$dfIPA
dfLEraw=PASREFraw$dfLE
PASREF=REF4PAS(refUTRraw,dfIPAraw,dfLEraw)# Building aUTR and cUTR references
refUTRraw=refUTRraw[which(refUTRraw$Chrom=='chr19'),]
UTRdbraw=REF3UTR(refUTRraw)# Calculation of relative expression
DFUTRraw=PASEXP_3UTR(UTRdbraw, flsall, Strandtype="forward")# Building intronic polyA references
URL="https://github.com/RJWANGbioinfo/PAS_reference_RData/blob/master/"
file="mm9_REF.RData"
source_data(paste0(URL,file,"?raw=True"))# Calculation of relative expression
dfIPA=dfIPA[which(dfIPA$Chrom=='chr19'),]
dfLE=dfLE[which(dfLE$Chrom=='chr19'),]
IPA_OUTraw=PASEXP_IPA(dfIPA, dfLE, flsall, Strandtype="forward", nts=1)# Significance analysis of APA events
sampleTable1 = data.frame(samplename = c(names(flsall)),condition = c(rep("NT",3),rep("KD",3)))# Significantly regulated APA in 3’UTRs
test_3UTRsing=APAdiff(sampleTable2,DFUTRraw, conKET='NT',trtKEY='KD',PAS='3UTR',CUTreads=0,p_adjust_methods="fdr")
# Visualization of analysis results
APAVolcano(test_3UTRsing, PAS='3UTR', Pcol = "pvalue", top=5, main='3UTR APA')

实战案例

数据

下列样本存成bam_file.tsv

SampleID	BamPath
SRR316184	/Library/Frameworks/R.framework/Versions/4.1/Resources/library/TBX20BamSubset/extdata/SRR316184.bam
SRR316185	/Library/Frameworks/R.framework/Versions/4.1/Resources/library/TBX20BamSubset/extdata/SRR316185.bam
SRR316186	/Library/Frameworks/R.framework/Versions/4.1/Resources/library/TBX20BamSubset/extdata/SRR316186.bam
SRR316187	/Library/Frameworks/R.framework/Versions/4.1/Resources/library/TBX20BamSubset/extdata/SRR316187.bam
SRR316188	/Library/Frameworks/R.framework/Versions/4.1/Resources/library/TBX20BamSubset/extdata/SRR316188.bam
SRR316189	/Library/Frameworks/R.framework/Versions/4.1/Resources/library/TBX20BamSubset/extdata/SRR316189.bam

脚本

下列代码存成APAlyzer_Expression.R

suppressPackageStartupMessages({ library(dplyr)library(tibble)library(optparse)library(data.table)library(APAlyzer)library(TBX20BamSubset)library(Rsamtools)
})option_list <- list(make_option(c("-b", "--bam"), type = "character",help = "bam csv file (1st column: sampleID; 2nd: bam path)", metavar = "character"),make_option(c("-r", "--reference"), type = "character", # RData/gtfhelp = "genomic reference type", metavar = "character"),    make_option(c("-g", "--genome"), type = "character",help = "genomic reference file", metavar = "character"), make_option(c("-c", "--chromosome"), type = "character",default = "all", # chr19help = "chromosome to be selected", metavar = "character"),  make_option(c("-e", "--expression"), type = "character", default = "all", # 3UTR/IPAhelp = "APA expression: 3UTR and intronic APA", metavar = "character"),  make_option(c("-o", "--out"), type = "character",help = "output file path", metavar = "character")
)opt_parser <- OptionParser(option_list = option_list)
opt <- parse_args(opt_parser)# input parameters
bam_path <- opt$bam
ref_type <- opt$reference
ref_path <- opt$genome
chrom <- opt$chromosome
expr_type <- opt$expression
dir <- opt$out# bam_path <- "bam_file.tsv"
# ref_type <- "RData"
# ref_path <- "mm9_REF.RData"
# chrom <- "chr19"
# expr_type <- "3UTR"
# dir <- "result"# step1: bam file
bam_vector <- read.table("bam_file.tsv", header = TRUE)
bam_file <- bam_vector$BamPath
names(bam_file) <- bam_vector$SampleID# step2: genomic reference
if (ref_type == "RData") {# data from built referencerequire(repmis)URL <- "https://github.com/RJWANGbioinfo/PAS_reference_RData/blob/master/"source_data(paste0(URL, ref_path, "?raw=True"))if (ref_path == "mm9_REF.RData") {refUTRraw_temp <- refUTRrawdfIPAraw_temp <- dfIPAdfLEraw_temp <- dfLE} else if (ref_path == "hg19_REF.RData") {refUTRraw_temp <- refUTRraw_hg19dfIPAraw_temp <- dfIPA_hg19dfLEraw_temp <- dfLE_hg19}} else if (ref_type == "gtf") {# building reference from gtf filePASREFraw <- PAS2GEF(ref_path)  refUTRraw_temp <- PASREFraw$refUTRrawdfIPAraw_temp <- PASREFraw$dfIPAdfLEraw_temp <- PASREFraw$dfLE
}# step3: whether to choose chromosome
if (chrom == "all") {UTRdbraw <- refUTRraw_tempdfIPAraw <- dfIPAraw_tempdfLEraw <- dfLEraw_temp   
} else {# multiple chromosome or notif (length(grep(":", chrom)) > 0) {chroms <- unlist(strsplit(chrom, ":"))} else {chroms <- chrom}UTRdbraw <- refUTRraw_temp[which(refUTRraw_temp$Chrom %in% chroms), ]dfIPAraw <- dfIPAraw_temp[which(dfIPAraw_temp$Chrom %in% chroms), ]dfLEraw <- dfLEraw_temp[which(dfLEraw_temp$Chrom %in% chroms), ]
}
## aUTR cUTR
PASREF_temp <- REF4PAS(UTRdbraw, dfIPAraw, dfLEraw)
UTRdb <- PASREF_temp$UTRdbraw
dfIPA <- PASREF_temp$dfIPA
dfLE <- PASREF_temp$dfLE  # step4: APA expression (3UTR and IPA)
if (expr_type == "all") {# 3UTRUTR_APA_OUT <- PASEXP_3UTR(UTRdb, bam_file, Strandtype = "forward")# IPAIPA_OUT <- PASEXP_IPA(dfIPA, dfLE, bam_file, Strandtype = "invert", nts = 4)final_OUT <- list(UTR = UTR_APA_OUT,IPA = IPA_OUT)
} else if (expr_type == "3UTR") { # 3UTRfinal_OUT <- PASEXP_3UTR(UTRdb, bam_file, Strandtype = "forward")  
} else if (expr_type == "IPA") { final_OUT <- PASEXP_IPA(dfIPA, dfLE, bam_file, Strandtype = "invert", nts = 4)
}# step5: output
if (!dir.exists(dir)) {dir.create(dir, recursive = TRUE)
}if (!is.data.frame(final_OUT)) {file_name <- paste0(dir, "/APA_Expr_", expr_type, ".RDS")saveRDS(final_OUT, file_name, compress = TRUE)
} else {file_name <- paste0(dir, "/APA_Expr_", expr_type, ".tsv")write.table(final_OUT, file_name, quote = F, row.names = F, sep = "\t")
}print("Program Ended without Problems")

运行

在命令行模式下运行该命令

Rscript APAlyzer_Expression.R \-b bam_file.tsv \-r RData \-g mm9_REF.RData \-c chr19 \-e 3UTR \-o result

相关文章:

R包:APAlyzer从RNA-seq数据计算APA表达丰度

文章目录 介绍教程实战案例数据脚本运行 介绍 今天安利APAlyzer工具&#xff0c;它是通过RNA-seq数据获取3′UTR APA, intronic APA等表达谱的R包。 APAlyzer将bam文件比对到PolyA-DB数据库识别APA。 Most eukaryotic genes produce alternative polyadenylation (APA) isofo…...

YOLOv11改进策略【损失函数篇】| 利用MPDIoU,加强边界框回归的准确性

一、背景 目标检测和实例分割中的关键问题&#xff1a; 现有的大多数边界框回归损失函数在不同的预测结果下可能具有相同的值&#xff0c;这降低了边界框回归的收敛速度和准确性。 现有损失函数的不足&#xff1a; 现有的基于 ℓ n \ell_n ℓn​范数的损失函数简单但对各种尺度…...

dayu_widgets-简介

前言: 越来越多的人开始使用python来做GUI程序&#xff0c;市面上却很少有好的UI控件。即使有也是走的商业收费协议&#xff0c;不敢使用&#xff0c;一个不小心就收到法律传票。 一、原始开源项目: 偶然在GitHub上发现了这个博主的开源项目。https://github.com/phenom-films…...

改变数组页面重新渲染的操作/那些操作不会重新渲染页面以及解决方法

在前端开发中&#xff0c;当数组数据发生变化时&#xff0c;是否会导致页面重新渲染&#xff0c;以及如何进行相关操作&#xff0c;这取决于使用的具体框架或库&#xff08;如React、Vue等&#xff09;及其内部机制。以下是对这一问题的详细解答&#xff1a; 一、会导致页面重…...

米哈游Android面试题汇总及参考答案

Java 的内存回收机制是如何工作的? 在 Java 中,内存回收主要由垃圾回收器(Garbage Collector)来完成。 Java 的内存主要分为堆(Heap)和栈(Stack)等区域。其中,对象主要分配在堆上。当创建一个对象时,会在堆上为其分配内存空间。 垃圾回收器主要负责回收不再被使用的对…...

搜维尔科技:【应用】Xsens动作捕捉技术为奇幻电影注入活力

在英格兰古朴的小镇和连绵起伏的群山之间&#xff0c;坐落着一个虚构的小镇Anghenfil&#xff0c;在这里有一个早已被人遗忘的传说。在这部由英国电影制片人Ryan Garry自编自导的奇幻电影《Every Legend Ends》中&#xff0c;这个传说即将变成可怕的现实。 怪物苏醒&#…...

useradd命令:添加Linux新用户

一、命令简介 ​useradd​ 命令用于在 Linux 系统中创建新用户账号。 ‍ 二、命令参数 useradd [选项] 用户名一些常用的选项包括&#xff1a; -c, --comment "Comment" : 为用户账号添加注释信息。-m, --create-home: 创建用户的家目录。-s, --shell /path/to/…...

Python+ffmpeg实现字幕视频合并

背景 我想给自己的视频添加字幕&#xff0c;但是市面上比较好的软件都不太对我口味&#xff0c;要么贵&#xff0c;要么就是学习版不给力。兜兜转转&#xff0c;我决定用多款开源软件分步实现&#xff0c;当然&#xff0c;也可以去白piao某些软件的字幕功能。 驱动力 ffmpeg…...

垂直分库分表、水平分库分表

垂直分库&#xff1a;分出来的数据库的结构完全不一样&#xff0c;垂直分库&#xff0c;更像单体项目到问服务项目过度&#xff0c;根据业务拆分多个模块&#xff0c;每个模块把数据单独抽离出来作为数据库&#xff0c;垂直分库就是根据不同的表业务放在不同放数据库里&#xf…...

rocksdb merge的简单记录

背景 rocksdb的merge主要是为了解决读&写需要两步的操作。例如定义一个累加器&#xff0c;总得先把之前的值读出来才能加。 下面给两个例子&#xff0c;大家可以直接用。 AboutAddMerge #include <iostream> #include <rocksdb/db.h> #include <rocksdb…...

安卓开发板_MTK联发科评估套件_安卓开发板Demo板

开发板简介&#xff1a; 安卓开发板采用了副板架在底板的配套方式&#xff0c;支持更换不同平台核心板的副板就能直接完成对某个平台核心板在客户项目需求中的技术评估&#xff0c;既能在研发前期节约人力和物力成本&#xff0c;也能更直观体现出不同平台的核心板在同一个硬件下…...

maven指定模块快速打包idea插件Quick Maven Package

问题背景描述 在实际开发项目中&#xff0c;我们的maven项目结构可能不是单一maven项目结构&#xff0c;项目一般会用parent方式将各个项目进行规范&#xff1b; 随着组件的数量增加&#xff0c;就会引入一个问题&#xff1a;我们只想打包某一个修改后的组件A时就变得很不方便…...

i春秋云境靶场之CVE-2022-26965

1.环境搭建 提示我们后台存在rce,也就是命令执行漏洞 2.访问环境 cm - cmshttp://eci-2zeh0yf0ohu88wr26unq.cloudeci1.ichunqiu.com/ 我们可看到admin,我们点击&#xff0c;发现是一个登录页面&#xff0c;我们输入弱口令admin,登录成功 3.文件上传 我们在选项——选择主题…...

流域生态系统服务评价、水文水生态分析、碳收支、气候变化影响、制图等领域中的应用

流域生态系统服务评价、水文水生态分析、碳收支、气候变化影响、制图等领域中的应用 专题一、生态系统服务评价技术框架 1.1 生态系统服务概述 1.2 流域生态系统服务的分类与作用 1.3 生态系统服务评估方法 专题二、AI大模型与生态系统服务评价 2.1 目前常用大模型介绍 2…...

超像素提取加svm训练,鼠标点击选择标签(左键为正样本,右键为负样本)

自己写的demo记个笔记用 替换掉图片路径和保存路径svm训练的模型路径就可以跑 效果我觉的不行&#xff0c;目前也不知到如何优化、希望有大佬可以给点建议 流程 处理超像素 选择超像素 提取HOG、颜色直方图、LBP直方图特征 训练 预测 #include <iostream> #include <…...

Vue 中引入 ECharts 的详细步骤与示例

在Vue项目中引入ECharts&#xff0c;可以让我们轻松地在前端页面中展示各种图表。ECharts 是一个基于 JavaScript 的开源可视化图表库&#xff0c;它提供了丰富的图表类型和强大的配置选项&#xff0c;使得在Vue项目中集成和使用变得非常方便。 一、准备工作 创建Vue项目&…...

在 EC2 AWS 中开启防火墙后将自己锁定在 SSH 之外

在搭建ftp时&#xff0c;开启了系统防火墙的几个端口&#xff0c;并且设置了防火墙开机自启。当设置好之后&#xff0c;关闭了putty&#xff0c;再次连接SSH时&#xff0c;发现连接错误。仔细一想&#xff0c;防火墙没有开启22端口&#xff0c;这不嘎了么&#xff0c;自己把自己…...

OpenGL 进阶系列02 - OpenGL绘制三角形的必要步骤

目录 一:概述 二:必要的绘制步骤 三:相关OpenGL API 含义: 1. glViewport 介绍 2. OpenGL的 VAO 介绍 3. OpenGL的VBO介绍 4. OpenGL的着色器 API 介绍 5. OpenGL 绘制API介绍 四:例子 一:概述 要使用 OpenGL 绘制一个三角形,通常需要几步,需要使用哪些必要的Open…...

MySql基础34题写题记录(11-20)

11、取得最后入职的5名员工 select ename from emp order by hiredate desc limit 5; 12、取得每个薪水等级有多少员工 先取每个员工的薪水等级 Select e.ename,s.grade grade From emp e Join salgrade s On e.sal between s.losal and s.hisal 接着直接分组求 Select …...

设计模式——单例模式(1)

一、写在前面 设计模式有23种&#xff0c;每一篇是一种模式&#xff0c;从简单到难&#xff0c;第一篇从最简单的单例模式试试水创建型模式 单例模式工厂方法模式抽象工厂模式原型模式建造者模式 结构型模式行为型模式 二、介绍 单例模式是指一个类只能创建出一个对象&#…...

手游刚开服就被攻击怎么办?如何防御DDoS?

开服初期是手游最脆弱的阶段&#xff0c;极易成为DDoS攻击的目标。一旦遭遇攻击&#xff0c;可能导致服务器瘫痪、玩家流失&#xff0c;甚至造成巨大经济损失。本文为开发者提供一套简洁有效的应急与防御方案&#xff0c;帮助快速应对并构建长期防护体系。 一、遭遇攻击的紧急应…...

装饰模式(Decorator Pattern)重构java邮件发奖系统实战

前言 现在我们有个如下的需求&#xff0c;设计一个邮件发奖的小系统&#xff0c; 需求 1.数据验证 → 2. 敏感信息加密 → 3. 日志记录 → 4. 实际发送邮件 装饰器模式&#xff08;Decorator Pattern&#xff09;允许向一个现有的对象添加新的功能&#xff0c;同时又不改变其…...

论文解读:交大港大上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化学习框架(二)

HoST框架核心实现方法详解 - 论文深度解读(第二部分) 《Learning Humanoid Standing-up Control across Diverse Postures》 系列文章: 论文深度解读 + 算法与代码分析(二) 作者机构: 上海AI Lab, 上海交通大学, 香港大学, 浙江大学, 香港中文大学 论文主题: 人形机器人…...

React hook之useRef

React useRef 详解 useRef 是 React 提供的一个 Hook&#xff0c;用于在函数组件中创建可变的引用对象。它在 React 开发中有多种重要用途&#xff0c;下面我将全面详细地介绍它的特性和用法。 基本概念 1. 创建 ref const refContainer useRef(initialValue);initialValu…...

日语学习-日语知识点小记-构建基础-JLPT-N4阶段(33):にする

日语学习-日语知识点小记-构建基础-JLPT-N4阶段(33):にする 1、前言(1)情况说明(2)工程师的信仰2、知识点(1) にする1,接续:名词+にする2,接续:疑问词+にする3,(A)は(B)にする。(2)復習:(1)复习句子(2)ために & ように(3)そう(4)にする3、…...

UE5 学习系列(三)创建和移动物体

这篇博客是该系列的第三篇&#xff0c;是在之前两篇博客的基础上展开&#xff0c;主要介绍如何在操作界面中创建和拖动物体&#xff0c;这篇博客跟随的视频链接如下&#xff1a; B 站视频&#xff1a;s03-创建和移动物体 如果你不打算开之前的博客并且对UE5 比较熟的话按照以…...

定时器任务——若依源码分析

分析util包下面的工具类schedule utils&#xff1a; ScheduleUtils 是若依中用于与 Quartz 框架交互的工具类&#xff0c;封装了定时任务的 创建、更新、暂停、删除等核心逻辑。 createScheduleJob createScheduleJob 用于将任务注册到 Quartz&#xff0c;先构建任务的 JobD…...

python如何将word的doc另存为docx

将 DOCX 文件另存为 DOCX 格式&#xff08;Python 实现&#xff09; 在 Python 中&#xff0c;你可以使用 python-docx 库来操作 Word 文档。不过需要注意的是&#xff0c;.doc 是旧的 Word 格式&#xff0c;而 .docx 是新的基于 XML 的格式。python-docx 只能处理 .docx 格式…...

鱼香ros docker配置镜像报错:https://registry-1.docker.io/v2/

使用鱼香ros一件安装docker时的https://registry-1.docker.io/v2/问题 一键安装指令 wget http://fishros.com/install -O fishros && . fishros出现问题&#xff1a;docker pull 失败 网络不同&#xff0c;需要使用镜像源 按照如下步骤操作 sudo vi /etc/docker/dae…...

前端开发面试题总结-JavaScript篇(一)

文章目录 JavaScript高频问答一、作用域与闭包1.什么是闭包&#xff08;Closure&#xff09;&#xff1f;闭包有什么应用场景和潜在问题&#xff1f;2.解释 JavaScript 的作用域链&#xff08;Scope Chain&#xff09; 二、原型与继承3.原型链是什么&#xff1f;如何实现继承&a…...