当前位置: 首页 > 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;第一篇从最简单的单例模式试试水创建型模式 单例模式工厂方法模式抽象工厂模式原型模式建造者模式 结构型模式行为型模式 二、介绍 单例模式是指一个类只能创建出一个对象&#…...

使用docker在3台服务器上搭建基于redis 6.x的一主两从三台均是哨兵模式

一、环境及版本说明 如果服务器已经安装了docker,则忽略此步骤,如果没有安装,则可以按照一下方式安装: 1. 在线安装(有互联网环境): 请看我这篇文章 传送阵>> 点我查看 2. 离线安装(内网环境):请看我这篇文章 传送阵>> 点我查看 说明&#xff1a;假设每台服务器已…...

Java 语言特性(面试系列2)

一、SQL 基础 1. 复杂查询 &#xff08;1&#xff09;连接查询&#xff08;JOIN&#xff09; 内连接&#xff08;INNER JOIN&#xff09;&#xff1a;返回两表匹配的记录。 SELECT e.name, d.dept_name FROM employees e INNER JOIN departments d ON e.dept_id d.dept_id; 左…...

AtCoder 第409​场初级竞赛 A~E题解

A Conflict 【题目链接】 原题链接&#xff1a;A - Conflict 【考点】 枚举 【题目大意】 找到是否有两人都想要的物品。 【解析】 遍历两端字符串&#xff0c;只有在同时为 o 时输出 Yes 并结束程序&#xff0c;否则输出 No。 【难度】 GESP三级 【代码参考】 #i…...

数据库分批入库

今天在工作中&#xff0c;遇到一个问题&#xff0c;就是分批查询的时候&#xff0c;由于批次过大导致出现了一些问题&#xff0c;一下是问题描述和解决方案&#xff1a; 示例&#xff1a; // 假设已有数据列表 dataList 和 PreparedStatement pstmt int batchSize 1000; // …...

c#开发AI模型对话

AI模型 前面已经介绍了一般AI模型本地部署&#xff0c;直接调用现成的模型数据。这里主要讲述讲接口集成到我们自己的程序中使用方式。 微软提供了ML.NET来开发和使用AI模型&#xff0c;但是目前国内可能使用不多&#xff0c;至少实践例子很少看见。开发训练模型就不介绍了&am…...

Xen Server服务器释放磁盘空间

disk.sh #!/bin/bashcd /run/sr-mount/e54f0646-ae11-0457-b64f-eba4673b824c # 全部虚拟机物理磁盘文件存储 a$(ls -l | awk {print $NF} | cut -d. -f1) # 使用中的虚拟机物理磁盘文件 b$(xe vm-disk-list --multiple | grep uuid | awk {print $NF})printf "%s\n"…...

LangChain知识库管理后端接口:数据库操作详解—— 构建本地知识库系统的基础《二》

这段 Python 代码是一个完整的 知识库数据库操作模块&#xff0c;用于对本地知识库系统中的知识库进行增删改查&#xff08;CRUD&#xff09;操作。它基于 SQLAlchemy ORM 框架 和一个自定义的装饰器 with_session 实现数据库会话管理。 &#x1f4d8; 一、整体功能概述 该模块…...

【网络安全】开源系统getshell漏洞挖掘

审计过程&#xff1a; 在入口文件admin/index.php中&#xff1a; 用户可以通过m,c,a等参数控制加载的文件和方法&#xff0c;在app/system/entrance.php中存在重点代码&#xff1a; 当M_TYPE system并且M_MODULE include时&#xff0c;会设置常量PATH_OWN_FILE为PATH_APP.M_T…...

HubSpot推出与ChatGPT的深度集成引发兴奋与担忧

上周三&#xff0c;HubSpot宣布已构建与ChatGPT的深度集成&#xff0c;这一消息在HubSpot用户和营销技术观察者中引发了极大的兴奋&#xff0c;但同时也存在一些关于数据安全的担忧。 许多网络声音声称&#xff0c;这对SaaS应用程序和人工智能而言是一场范式转变。 但向任何技…...

解析奥地利 XARION激光超声检测系统:无膜光学麦克风 + 无耦合剂的技术协同优势及多元应用

在工业制造领域&#xff0c;无损检测&#xff08;NDT)的精度与效率直接影响产品质量与生产安全。奥地利 XARION开发的激光超声精密检测系统&#xff0c;以非接触式光学麦克风技术为核心&#xff0c;打破传统检测瓶颈&#xff0c;为半导体、航空航天、汽车制造等行业提供了高灵敏…...