首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >确定跨数组的最大化分数

确定跨数组的最大化分数
EN

Stack Overflow用户
提问于 2019-12-09 20:23:02
回答 1查看 48关注 0票数 0

我有一个569个氨基酸残基的序列,每个氨基酸残基都有一个分数。我想确定一个连续的10个这样的氨基酸序列,使分数最大化。有没有一种优雅的方式可以做到这一点?

代码语言:javascript
复制
amino_acids <- structure(
    list(
        Position=c(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20),
        Residue=c("M", "S", "A", "S", "K", "E", "V", "K", "S", "F", "L", "W", "T", "Q", "S", "L", "R", "R", "E", "L"),
        `Bepipred Score`=c(0.565, 0.709, 0.512, 0.516, 0.451, 0.291, -0.11, -0.409, -0.525, -0.548, -0.611, -0.795, -0.825, -0.864, -0.47, -0.387, 0.024, -0.044, -0.209, -0.309)
    ),
    row.names=c(NA, -20L),
    class=c("tbl_df", "tbl", "data.frame"))

这是前20个数据结构的示例。在这种情况下,序列1-10是“最好的”,然后是2-11,然后是3-12等等。

我已经能够通过将数据框分成10个氨基酸单元并计算平均值来做类似的事情,但它很笨拙。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-12-09 20:46:18

你可以使用简单的移动平均,通常用于时间序列分析。一种方法是:

代码语言:javascript
复制
library(magrittr) ## just for %>% operator
n <- 10
seq <- amino_acids$`Bepipred Score` %>% TTR::SMA(.,n=n) %>% na.omit()

这里我们计算了移动平均值,并省略了前n-1个值,因为它们是NA。(必须至少有n个值才能计算平均值)

代码语言:javascript
复制
seq
[1]  0.1452  0.0276 -0.1228 -0.2565 -0.3945 -0.4866 -0.5544 -0.5410 -0.5045 -0.4729 -0.4490

然后我们简单地检查哪一个是最高的,

代码语言:javascript
复制
## best indexes
(which.max(seq)):(which.max(seq) + n - 1)
[1] 1:10
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59248873

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档