前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >🤩 LncFinder | 非编码RNA的识别与分析神器!!!~

🤩 LncFinder | 非编码RNA的识别与分析神器!!!~

作者头像
生信漫卷
发布2023-02-24 14:19:59
2920
发布2023-02-24 14:19:59
举报

1写在前面

非编码RNA(ncRNAs), 是指不编码蛋白质RNA。😗 其中包括rRNAtRNAsnRNAsnoRNA, lncRNAmiRNA等多种已知功能的RNA,还包括未知功能的RNA。🤓

长链非编码RNAlncRNA)指的是长于200核苷酸的不编码蛋白质的转录物(随着对ncRNAs的不对认知,这个概念也在不断修改😂)。

在我们完成测序后,一个很重要的步骤就是识别序列,本期我们介绍一个基于Logarithm-Distance, Multi-Scale Structural InformationEIIP-Based Physicochemical PropertylncRNA识别与分析工具,LncFinder。🧐


2用到的包

代码语言:javascript
复制
rm(list = ls())
library(LncFinder)
library(tidyverse)

3示例数据

包内提供了示例数据,我们一起看一下吧。

代码语言:javascript
复制
data("demo_DNA.seq")

Seqs <- demo_DNA.seq

str(Seqs)

4不基于二级结构特征的lncRNA预测

4.1 开始预测

代码语言:javascript
复制
result_1 <- LncFinder::lnc_finder(Seqs, #fasta或二级结构seq
                                  SS.features = F,   ## 二级结构seq
                                  format = "DNA", ## 'DNA' / 'SS'
                                  frequencies.file = "human", 
                                  svm.model = "human", 
                                  parallel.cores = 2 ## -1为调用所有cores
                                  )

4.2 查看结果

代码语言:javascript
复制
DT::datatable(result_1)

5基于二级结构特征的lncRNA预测

这里我们就需要有一个二级结构序列文件(Dot-Bracket Notation)做为input了。😘


5.1 windows下运行

代码语言:javascript
复制
## 转为string
Seqs_windows <- sapply(Seqs, seqinr::getSequence, as.string = T)

## 写为fasta文件
seqinr::write.fasta(Seqs_windows,
                    names = names(Seqs_windows),
                    file.out = "tmp.RNA.fa",
                    as.string = T
                    )

RNAfold.path <- '"E:/Program Files/ViennaRNA/RNAfold.exe"'

RNAfold.command <- paste(RNAfold.path, "--noPS -i tmp.RNA.fa -o output")

system(RNAfold.command)

5.2 UNIX/Linux下运行

代码语言:javascript
复制
data("demo_DNA.seq")

Seqs_unix  <- demo_DNA.seq

Seqs_unix <- LncFinder::run_RNAfold(Seqs_unix, 
                                    RNAfold.path = "RNAfold", 
                                    parallel.cores = 2)

5.3 网页获取

网址如下:👇 http://rna.tbi.univie.ac.at/cgi-bin/RNAWebSuite/RNAfold.cgi

5.4 开始预测

代码语言:javascript
复制
result_2 <- LncFinder::lnc_finder(Seqs_unix, 
                                  SS.features = T, 
                                  format = "SS", 
                                  frequencies.file = "human", 
                                  svm.model = "human", 
                                  parallel.cores = 4)

5.5 查看结果

这里我们就可以获得.()组成的Dot-Bracket了。🤪

代码语言:javascript
复制
DT::datatable(result_2)

6构建新模型

6.1 创建frequency文件

这里输入文件是DNA序列。

代码语言:javascript
复制
data(demo_DNA.seq)

Seqs <- demo_DNA.seq

myFile_1 <- LncFinder::make_frequencies(cds.seq = Seqs[1:5], 
                                        lncRNA.seq = Seqs[5:10], 
                                        SS.features = F, 
                                        cds.format = "DNA", 
                                        lnc.format = "DNA", 
                                        check.cds = T, 
                                        ignore.illegal = F
                                        )

当然你的input也可以是前面计算好的二级结构文件。😏

代码语言:javascript
复制
data(demo_SS.seq)

SS.Seq <- demo_SS.seq

myFile_2 <- LncFinder::make_frequencies(cds.seq = SS.Seq, 
                                        lncRNA.seq = Seqs, 
                                        SS.features = F,
                                        cds.format = "SS", 
                                        lnc.format = "DNA", 
                                        check.cds = F, 
                                        ignore.illegal = T)


我们甚至可以再复杂一点,把这两个示例结果都用上。🥳

代码语言:javascript
复制
myFile_3 <- LncFinder::make_frequencies(cds.seq = Seqs, 
                                        mRNA.seq = SS.Seq[1:5], 
                                        lncRNA.seq = SS.Seq[6:10], 
                                        SS.features = T, 
                                        cds.format = "DNA", 
                                        lnc.format = "SS", 
                                        check.cds = T, 
                                        ignore.illegal = T)

6.2 开始构建新模型

这里为了节约时间,我们把range设置的小一点,大家在实际应用中使用默认值就好了。🤒

代码语言:javascript
复制
myFile <- LncFinder::make_frequencies(cds.seq = Seqs, 
                                      mRNA.seq = SS.Seq[1:5], 
                                      lncRNA.seq = SS.Seq[6:10], 
                                      SS.features = T,
                                      cds.format = "DNA",
                                      lnc.format = "SS",
                                      check.cds = T,
                                      ignore.illegal = F)


myModel <- LncFinder::build_model(mRNA.seq = SS.Seq[1:5], 
                                  lncRNA.seq = SS.Seq[6:10], 
                                  frequencies.file = myFile, 
                                  SS.features = TRUE, 
                                  lncRNA.format = "SS",
                                  mRNA.format = "SS", 
                                  parallel.cores = -1, 
                                  folds.num = 10, 
                                  seed = 123, 
                                  gamma.range = 
                                    (2^seq(-2, 0, 1)),  ## ranges for SVM parameter
                                  cost.range = c(1, 4, 8) ## the ranges for SVM parameter
                                  )

6.3 pre-built model

这个包里包含了一些预制好的model,大家有兴趣可以在这个网址看到:👇 https://github.com/HAN-Siyu/LncFinder/tree/master/Data/Additional%20Models

然后通过load使用吧。🤩

代码语言:javascript
复制
load("gallus.data.RData")

7调整SVM模型参数

这里我们调用一下已经识别的示例数据。🥳

代码语言:javascript
复制
data("demo_dataset")

dat <- demo_dataset

DT::datatable(dat)

接着我们将return.model设为T,返回最佳模型。🤪 同样这里为了节约时间,我们把range设置的小一点。😉 拿到最佳模型就开始去identify吧。🤩

代码语言:javascript
复制
tuneSVM <- LncFinder::svm_tune(dataset = dat,
                               positive.class = "NonCoding",
                               folds.num = 5,
                               seed = 123,
                               gamma.range = (2^c(-3, -1)),
                               cost.range = c(1, 4, 8),
                               return.model = T,
                               parallel.cores = -1)

8LncFinder的表现

按照原文中的比较,在人类小鼠小麦数据集上,表现都比较出色, 优于其他方法(左右滑动查看吧):👇

9如何引用

📍 Han S, Liang Y, Ma Q, et al. LncFinder: an integrated platform for long non-coding RNA identification utilizing sequence intrinsic composition, structural information and physicochemical property. Brief Bioinform. 2019;20(6):2009-2027. doi:10.1093/bib/bby065


最后祝大家早日不卷!~


本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2022-12-21,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 生信漫卷 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1写在前面
  • 2用到的包
  • 3示例数据
  • 4不基于二级结构特征的lncRNA预测
    • 4.1 开始预测
      • 4.2 查看结果
      • 5基于二级结构特征的lncRNA预测
        • 5.1 windows下运行
          • 5.2 UNIX/Linux下运行
            • 5.3 网页获取
              • 5.4 开始预测
                • 5.5 查看结果
                • 6构建新模型
                  • 6.1 创建frequency文件
                    • 6.2 开始构建新模型
                      • 6.3 pre-built model
                      • 7调整SVM模型参数
                      • 8LncFinder的表现
                      • 9如何引用
                      领券
                      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档