如何找到最佳字符串内容,使字符计数向量与其参考字符串的 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 最小化 的相关文章

  • toUpperCase() 方法什么时候创建一个新对象?

    public class Child public static void main String args String x new String ABC String y x toUpperCase System out println
  • zsh:未找到命令:使用 Big Sur Mac 的终端上的 R

    我从官方 cran 网站安装了 R 我可以从 Rstudio 运行 R 但是当我尝试从终端使用 R 时 我得到以下结果 base ege Eges MBP R zsh command not found R base ege Eges MB
  • 函数“[<-”将_替换_一个元素,但不会追加_元素_

    我在使用时注意到以下几点 lt 我成功于替换元素但不位于追加向量的一个元素 例子 VarX lt integer VarX 1 lt 11 lt VarX 2 22 VarX 1 11 Expected the value of VarX
  • 如何从数据框中删除少于 5 个观察值的个体 [重复]

    这个问题在这里已经有答案了 为了澄清这个问题 我将简要描述数据 中的每一行data frame是一个观察值 列代表与该观察值相关的变量 包括 观察到什么个体 观察时间 观察地点等 我想排除 过滤观察值少于 5 个的个体 换句话说 如果 in
  • 通过 r markdown 中的循环创建代码片段

    如同如何使用R中的knitr创建一个包含代码块和文本的循环 https stackoverflow com questions 36373630 how to create a loop that includes both a code
  • R data.table fwrite 到 fread 空间分隔符并清空

    我在使用 fread 以 作为分隔符和散布的空白值时遇到问题 例如 这个 dt lt data table 1 5 1 5 1 5 make a simple table dt 3 V2 NA add a blank in the midd
  • 通过 R 中的数据子集执行计算

    我想对数据框的 PERMNO 列中的每个公司编号进行计算 其摘要可以在此处查看 gt summary companydataRETS PERMNO RET Min 10000 Min 0 971698 1st Qu 32716 1st Qu
  • R 多元一步预测和准确性

    我想使用 R 来比较两个预测模型的 RMSE 均方根误差 第一个模型使用 1966 年至 2000 年的估计值来预测 2001 年 然后使用 1966 年至 2001 年的估计值来预测 2002 年 依此类推直至 2015 年 第二个模型使
  • 更改 pander 中的默认对齐方式 (pandoc.table)

    我目前正在切换到pander对于我的大部分时间knitr markdown格式化 因为它提供了如此出色的pandoc支持 我不太满意的一件事是默认的居中对齐 营销人员可能会喜欢它 但对于技术报告来说这是一个可怕的事情 使用的最佳选择Hmis
  • VBA 字符串 255 个字符限制

    我在使用 VBA 时遇到问题 并注意到它的字符串限制为 255 个字符 我实际上正在尝试通过 POST 发送 JSON 并暂停执行 我注意到该字符串始终只有 255 个字符 有没有办法调整字符串的大小或其他什么 我在这个问题上浪费了大约 6
  • 如何在EditText中显示格式化文本?

    现在我正在编写简单的笔记应用程序 我需要在 EditText 中显示格式化的单独选定文本 I tried EditText et EditText findViewById R id edittext String string int s
  • 找到一条穿过任意节点序列的最短路径?

    In 这个先前的问题 https stackoverflow com questions 7314333 find shortest path from vertex u to v passing through a vertex wOP询
  • 将 std::string 从 C++ DLL 返回到 c# 程序 -> 指定给 RtlFreeHeap 的地址无效

    在我的 C DLL 中的函数中 我将 std string 返回到我的 C 应用程序 它几乎看起来像这样 std string g DllName MyDLL extern C THUNDER API const char stdcall
  • 具有 2 个属性的背包算法。如何在 3d 数组中实现它?

    当有超过 1 个属性时 我无法理解背包问题 当有 1 个属性时 我必须编写一个使用具有 2 个属性的背包算法的程序 老师告诉我们 它必须在 3d 数组中完成 错误的实现将导致 O 2 n 处理时间 我无法想象这样的数组会是什么样子 假设这是
  • 如何在 R 中将字符串解析为层次结构或树

    有没有办法将表示组的字符串解析为 R 中的层次结构 假设我的小组结构如下 1 1 1 1 1 1 1 1 1 1 1 1 2 1 1 3 1 1 3 1 1 1 3 2 1 1 3 3 1 2 1 2 1 1 2 1 1 1 2 1 2 1
  • 静态字符串文字表?

    在 C 中创建全局静态字符串表的正确方法是什么 我所说的 全局 是指 可从包含标头的任何文件中使用 但不是某些运行时创建的单一对象的一部分 我所说的 静态 是指 尽可能少地设置运行时间 只读内存页中的数据 每个应用程序只有 1 个数据实例
  • 排序因素与水平

    有人能解释一下 R 中 ordered 参数的用途吗 R says ordered逻辑标志来确定级别是否应被视为有序 按给定的顺序 所以如果我有一个名为名称的因素并设置ordered TRUE names lt factor c fred
  • 如何自动启动我的 ec2 实例、运行命令然后将其关闭?

    我想每周对 redshift postgres 数据库中的数据运行一次机器学习模型 我使用以下命令将 R 脚本设置为休息 apiplumbr然后我将其设置为一项任务来管理pm2 我有它 所以任务会在ec2实例启动然后继续运行 要让 R 脚本
  • 两组点之间的最佳匹配

    I ve got two lists of points let s call them L1 P1 x1 y1 Pn xn yn and L2 P 1 x 1 y 1 P n x n y n 我的任务是找到它们点之间的最佳匹配 以最小化它
  • string.Compare 行为

    怎么会这样呢 这是从VS2008中的立即窗口获取的 string Compare 1 string Compare 0 0 1 从言论来看字符串比较 http msdn microsoft com en us library 84787k2

随机推荐

  • 全新的 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