如何找到最佳字符串内容,使字符计数向量与其参考字符串的 MSE 最小化

2024-04-12

我有以下参考序列:

ref_seq      <- "MGHQQLYWSHPRKFGQGSRSCRVTSNRHGLIRKYGLNMSRQSFR"

和这个种子模式字符串:

seed_pattern <- "FKDHKHIDVKDRHRTRHLAK??????????"

该模式中有 10 个通配符 (?)。

鉴于此功能:

aa_count_normalized <- function(x) {
  AADict <- c(
    "A", "R", "N", "D", "C", "E", "Q", "G", "H",
    "I", "L", "K", "M", "F", "P", "S", "T", "W", "Y", "V"
  )
  AAC <- summary(factor(strsplit(x, split = "")[[1]], levels = AADict),
                 maxsum = 21
  ) / nchar(x)
  AAC
}

aa_count <- function(x) {
  AADict <- c(
    "A", "R", "N", "D", "C", "E", "Q", "G", "H",
    "I", "L", "K", "M", "F", "P", "S", "T", "W", "Y", "V"
  )
  AAC <- summary(factor(strsplit(x, split = "")[[1]], levels = AADict),
                 maxsum = 21
  ) 
  AAC
}

我可以得到 :

# we need to normalize refseq_aa content with respect
# to the length of seed_pattern, to accommodate the length
# difference between the two.
> refseq_aa_content <- aa_count_normalized(ref_seq) * nchar(seed_pattern) 
> refseq_aa_content
        A         R         N         D         C         E 
0.0000000 4.7727273 1.3636364 0.0000000 0.6818182 0.0000000 
        Q         G         H         I         L         K 
2.7272727 3.4090909 2.0454545 0.6818182 2.0454545 1.3636364 
        M         F         P         S         T         W 
1.3636364 1.3636364 0.6818182 4.0909091 0.6818182 0.6818182 
        Y         V 
1.3636364 0.6818182  

我想做的是更换通配符seed pattern- 同时保持非通配符不变 - 残差组合取自:

 AADict <- c(
        "A", "R", "N", "D", "C", "E", "Q", "G", "H",
        "I", "L", "K", "M", "F", "P", "S", "T", "W", "Y", "V"
      ) 

这样种子序列的最终氨基酸计数的均方误差(MSE)和归一化参考序列计数被最小化。

使用此 MSE 函数:

mse <- function (ref, new_seq) {
  return(mean((ref - new_seq)^2))
}

以及最终的种子序列:

seed_final.1 <- aa_count("FKDHKHIDVKDRHRTRHLAKRQQGGGSSSY")
seed_final.2 <- aa_count("FKDHKHIDVKDRHRTRHLAKRQQQGGGSSY")
seed_final.3 <- aa_count("FKDHKHIDVKDRHRTRHLAKSSSGGGRRQQ") # onyambu's

I get

> mse(refseq_aa_content, seed_final.1 )
[1] 1.501446
> mse(refseq_aa_content, seed_final.2 )
[1] 1.63781
> mse(refseq_aa_content, seed_final.3 )
[1] 1.560537

The seed_final.1 is the 最优精确解,因为它的 MSE 最低。即10?s 将替换为:

G Q R S Y 
3 2 1 3 1 (total 10)

如何创建高效的 R 代码来返回FKDHKHIDVKDRHRTRHLAKRQQGGGSSSY作为答案。


您可以将问题建模为要最小化的整数二次问题:

sum(r^2) - 2 sum(z * r)

有约束条件:

sum(r) = k

r[i] nonegative integer

where:

  • r[i]有多少个字母AADict你需要添加到seed_pattern
  • z[i] = n(y)/n(x) * x[i] - y[i]
  • x[i]第 i 个字母的计数AADict in ref_seq
  • y[i]第 i 个字母的计数AADict in seed_pattern
  • n(x)中的字符数ref_seq
  • n(y)中的字符数seed_pattern
  • k中通配符的数量seed_pattern

我没能在 R 中找到混合整数二次求解器(免费),所以这里是启发式使用DEoptimR:

ref_seq <- "MGHQQLYWSHPRKFGQGSRSCRVTSNRHGLIRKYGLNMSRQSFR"
seed_pattern <- "FKDHKHIDVKDRHRTRHLAK??????????"

AADict <- c(
  "A", "R", "N", "D", "C", "E", "Q", "G", "H",
  "I", "L", "K", "M", "F", "P", "S", "T", "W", "Y", "V"
)

aminoSummary <- function(x){
  
  f <- factor(strsplit(x, split = "")[[1]], levels = AADict)
  
  list(
    l = nchar(x),
    k = sum(is.na(f)),
    z = table(f)
  )
}

x <- aminoSummary(ref_seq)
y <- aminoSummary(seed_pattern)

M <- length(AADict)

res <- DEoptimR::JDEoptim(
  lower = rep(0, M),
  upper = rep(y$k, M) + 1,
  fn = function(r, z, k){
    r <- floor(r)
    sum(r * r) - 2 * sum(z * r)
  },
  constr = function(r, z, k) sum(floor(r)) - k,
  meq = 1,
  z = as.vector(x$z * y$l / x$l - y$z),
  k = y$k
)

rep(AADict, floor(res$par))
[1] "R" "Q" "Q" "G" "G" "G" "S" "S" "S" "Y"
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何找到最佳字符串内容,使字符计数向量与其参考字符串的 MSE 最小化 的相关文章

  • R - Plm 和 lm - 固定效应

    我有一个平衡面板数据集 df 本质上由三个变量组成 A B and Y 对于一堆独特识别的区域来说 它会随着时间的推移而变化 我想运行一个回归 其中包括区域 下面等式中的区域 和时间 年份 固定效应 如果我没记错的话 我可以通过不同的方式来
  • 使用 purrr 迭代替换数据帧列中的字符串

    我想用purrr使用以下命令在数据框列上迭代运行多个字符串替换gsub 功能 这是示例数据框 df lt data frame Year 2019 Text c rep a aa 5 rep a bb 3 rep a cc 2 gt df
  • 不使用 length() 方法的字符串长度[关闭]

    Closed 这个问题需要细节或清晰度 help closed questions 目前不接受答案 如何在不使用字符串的情况下找到字符串的长度length String类的方法 str toCharArray length应该管用 或者怎么
  • “包含字符串”的快速索引

    在我的应用程序中 我有多达数百万个短字符串 大部分短于 32 个字符 我想实现一个带有附加列表的搜索框 该列表仅包含包含在搜索框中输入的整个字符串的元素 如何预先建立索引来快速找到此类字符串 所有排序的 STL 容器都会检查整个字符串 对于
  • 多功能测试仪替代 system.time

    我已经看到 我认为是这样 使用了类似于 system time 的函数 它可以同时评估多个函数的时间并输出一个输出 我不记得它是什么 并且用我正在使用的术语进行互联网搜索并没有得到我想要的响应 有人知道我正在谈论的功能的名称 位置吗 你想要
  • 将数据框中的每个 x 个字符拆分为字符串

    我知道这里有一些关于每隔一段时间分割一个字符串的答案nth字符 例如this one https stackoverflow com questions 23208490 split each character in r and this
  • 有效积累稀疏 scipy 矩阵的集合

    我有一个 O N NxN 的集合scipy sparse csr matrix 每个稀疏矩阵都有 N 个元素集 我想将所有这些矩阵加在一起以获得一个常规的 NxN numpy 数组 N 约为 1000 矩阵内非零元素的排列使得所得总和肯定不
  • kernlab 中 SVM 训练之外的核矩阵计算

    我正在开发一种新算法 该算法可以生成修改后的核矩阵以用于 SVM 训练 但遇到了一个奇怪的问题 出于测试目的 我比较了使用 kernelMatrix 接口和普通内核接口学习的 SVM 模型 例如 Model with kernelMatri
  • 使用实际值检查 cvxpy 中的约束是否正确

    在 cvxpy 中解决优化问题时 是否有一种好方法可以通过用实际值替换优化变量来检查约束是否有效 我有一个复杂的优化问题 100 多个约束 但我知道最佳解决方案应该是什么 但是 cvxpy 失败并显示错误消息ValueError Rank
  • LRU算法,实现这个算法需要多少位?

    我有一个关于 LRU 算法的小问题 如果您有一个包含四个块的高速缓存 那么需要多少位来实现该算法 假设您指的是 4 路组关联缓存 完美 LRU 本质上是按照使用顺序为每一行分配一个精确的索引 您也可以将其视为 年龄 因此 4 个元素中的每一
  • Dendextend:关于如何根据定义的组为树状图的标签着色

    我正在尝试使用一个名为 dendextend 的很棒的 R 包来绘制树状图并根据一组先前定义的组为其分支和标签着色 我已阅读您在 Stack Overflow 中的答案以及 dendextend vignette 的常见问题解答 但我仍然不
  • 从命令行运行 R 代码 (Windows)

    我在名为 analysis r 的文件中有一些 R 代码 我希望能够从命令行 CMD 运行该文件中的代码 而无需通过 R 终端 并且我还希望能够传递参数并在我的代码中使用这些参数 例如就像下面的伪代码 C gt execute r scri
  • 如何在C中实现带连分数的自然对数?

    这里我有一个小问题 根据这个公式创建一些东西 这就是我所拥有的 但它不起作用 弗兰基 我真的不明白它应该如何工作 我尝试用一 些错误的指令对其进行编码 N 是迭代次数和分数部分 我认为它会以某种方式导致递归 但不知道如何 谢谢你的帮助 do
  • gcc 没有小字符串优化吗?

    Most std string实现 包括 GCC 使用小字符串优化 例如 有一个answer https stackoverflow com a 21710033 2640636讨论这个 今天 我决定检查我编译的代码中的字符串在什么时候被移
  • 我应该对算法使用递归还是记忆化?

    如果我可以选择使用递归或记忆来解决问题 我应该使用哪一个 换句话说 如果它们都是可行的解决方案 因为它们提供了正确的输出并且可以在我正在使用的代码中合理地表达 那么我什么时候会使用其中一个而不是另一个 它们并不相互排斥 您可以同时使用它们
  • 将每列的值乘以 R 中另一个 data.frame 中的权重

    我有两个data frames df and weights 代码如下 df看起来像这样 id a b d EE f 1 this 0 23421153 0 02324956 0 5457353 0 73068586 0 5642554 2
  • r 中训练和测试数据的最小最大缩放/归一化

    我正在创建一个函数 它将训练集和测试集作为其参数 最小 最大缩放 标准化并返回训练集并使用这些same最小值和最小 最大范围的值 标准化并返回测试集 到目前为止 这是我想出的功能 min max scaling lt function tr
  • ddply 和aggregate 之间的区别

    有人可以通过以下示例帮助我了解聚合和 ddply 之间的区别 数据框 mydat lt data frame first rpois 10 10 second rpois 10 10 third rpois 10 10 group c re
  • C# 中最小化字符串长度

    我想减少字符串的长度 喜欢 这串 string foo Lorem ipsum dolor sit amet consectetur adipiscing elit Aenean in vehicula nulla Phasellus li
  • 如何修复:“无法解析类型 java.lang.CharSequence。它是从所需的 .class 文件间接引用的”消息? [复制]

    这个问题在这里已经有答案了 我正在尝试使用这个字符串 amountStr amountStr replace replace replace 但我收到一条错误消息 我知道我收到的错误消息是因为我刚刚发布的字符串已过时 所以我想知道该字符串的

随机推荐

  • 全新的 React Native 应用程序在 run-ios xcode 8.3 上失败

    我刚刚使用他们的 CLI 界面创建了一个新的 React Native 应用程序 但在没有进行任何更改的情况下它失败了 当我尝试使用时我第一次注意到这一点version 0 45 1 它似乎仍然发生在version 0 46 1 我当前的版
  • 如何强制 rsync 创建目标文件夹

    Example rsync tmp fol1 fol2 fol3 foln user addr tmp fol1 fol2 fol3 foln 我的主要问题是远程计算机上不存在文件夹 tmp fol1 我可以使用哪些参数来强制 rsync
  • 在 Python 中将任何用户输入转换为 int

    我需要转换用户input to int 以下是我到目前为止所写的内容 但尚未成功 它只接受int 最终目标是让用户输入浮点数 例如 4 5 输出为 4 i input Enter any value print int i int接受整数字
  • 无法使用 matplotlib 设置脊柱线样式

    我尝试设置 matplotlib 图脊柱的线条样式 但由于某种原因 它不起作用 我可以将它们设置为不可见或使它们变细 但我无法更改线条样式 我的目标是将一个图分成两部分 以在顶部显示异常值 我想将相应的底部 顶部脊柱设置为点状 以便它们清楚
  • Django 中的动态逻辑查询生成器

    我在数据库中有 2 个表 class Param models Model s name models CharField max length 200 n name models CharField max length 200 clas
  • *nix 上的 rtfd/.webarchive

    所以我的任务是将 rtfd 文件转换为 tiff 首先要事 我们获取了文件夹中的附件 在 Mac 上为 rtfd 并对它们进行了成像 我的问题在于将 RTFD 拆分为多个 rtf 文件 一位同事建议通过我们访问权限有限的 Mac 将文件转换
  • 如何检查我的登录操作中是否存在用户?

    我开始使用新的身份管理并有一个简单的需求 当我的用户使用错误的名称登录时 它会报告密码错误 如何更改此设置 以便它还使用 dbcontext 方法检查用户名是否存在 public ActionResult Login LoginViewMo
  • vi 中可以每 4 个字符添加间距吗?

    vi 中是否可以每 4 个字符添加空格 如果是的话 有什么好的谷歌术语可以搜索来学习如何做类似的事情 要每 4 个字符添加一个空格 您可以使用以下命令 至少在 VIM 中 s 1 g 如果你谷歌 VIM Substitution 你应该会得
  • Visual Studio 2022 永远不会在解决方案和索引文件上显示项目

    有人知道如何解决这个问题吗 早期版本的 Visual Studio 会发生这种情况 例如 2019 和 2017 Visual Studio 不会永远在解决方案和索引文件上显示项目 连程序文件都无法运行 已经尝试了所有方法 完全卸载 Vis
  • 从其他组件访问激活的路线数据

    我们有组件 ka cockpit panel 它没有映射到任何路线 而是手动插入到其他组件中 如下所示 section class ka cockpit panel cockpit 1 pull left section
  • 如何从maven SNAPSHOT存储库下载SNAPSHOT版本?

    所以我有一个项目 我定期发布到 Maven 没有问题 我现在想要提供该项目的快照版本 所以我做了 mvn clean 部署 一切正常 如下所示 INFO 从 sonatype nexus snapshots 检索以前的内部版本号 上传中 h
  • 谷歌应用程序引擎。如何使用内存缓存或数据存储进行同步操作?

    我的主要目标是能够拥有一些同步方法 这些方法在完成之前不应被其他线程访问 如果我有普通的虚拟机 我会将此方法标记为同步 但在 GAE 中我有多个实例 我读到的所有关于此的帖子都说我应该使用内存缓存或数据存储 但具体如何呢 通常答案是重新设计
  • 为什么 GNU binutils 和 GDB 合并为一个包?

    https sourceware org git gitweb cgi p binutils gdb git https sourceware org git gitweb cgi p binutils gdb git 尤其是请参阅tags
  • Azure 数据工作室架构图?

    我最近刚刚下载了带有 SQL Server Express 的 Azure Data Studio 因为我使用的是 Linux 是否有实体关系图表功能 就像 SQL Server Management Studio 具有数据库图表功能一样
  • 无法接受 VSTS 邀请 - 选择的国家/地区为空

    我已邀请用户从我的 ADD 到 VSTS 他收到电子邮件并登录 在 我们需要更多详细信息 表格中 您需要输入姓名 电子邮件 We ll reach you at 和国家 地区 From 但是 那From 下拉列表为空 我无法选择任何国家 地
  • node.js google oauth2 示例停止工作 invalid_grant

    我正在编写一个使用谷歌日历API的程序 所以我使用了快速启动here https developers google com google apps calendar quickstart nodejs它起作用了 但最近相同的代码停止工作并
  • 如何将标签推送到 CI 中的分支?

    我想将手动作业添加到我的拉取请求中 以在运行手动作业时标记我的源分支 该标签将触发我的 bitrise 配置的构建 然而 当我尝试推送我的标签时 我遇到了这个问题 注意 我尝试将标签推送到的分支不受保护 git checkout CI CO
  • org.springframework.web.client.HttpClientErrorException:400 null

    我写了测试FilterDataController 但我在执行测试时出现以下错误 当我手动发送 GET 请求时 我收到了正确的 JSON org springframework web client HttpClientErrorExcep
  • 如何转到 UITableView 中的下一个单元格(详细信息视图)?

    所以 我有一个 UITableView 分为 3 个部分 我希望能够 一旦打开第一部分中的第二行 即 即可向左滑动以转到下一个单元格 并向右滑动以转到上一个单元格 我写了滑动代码 SecondDetailView m void viewDi
  • 如何找到最佳字符串内容,使字符计数向量与其参考字符串的 MSE 最小化

    我有以下参考序列 ref seq lt MGHQQLYWSHPRKFGQGSRSCRVTSNRHGLIRKYGLNMSRQSFR 和这个种子模式字符串 seed pattern lt FKDHKHIDVKDRHRTRHLAK 该模式中有 1