- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我需要 smith-waterman 在 php 中,你知道是否已经有一个实现吗?
我需要这个算法来进行邻近搜索 ( Function that returns affinity between texts? )
如果没有我会努力做到的。
谢谢
最佳答案
我对 SimMetrics java code for SmithWatermanGotoh 进行了逆向工程- 我发现 SmithWatermanGotoh 比 SmithWaterman 更有效,结果非常相似:
class SmithWatermanGotoh
{
private $gapValue;
private $substitution;
/**
* Constructs a new Smith Waterman metric.
*
* @param gapValue
* a non-positive gap penalty
* @param substitution
* a substitution function
*/
public function __construct($gapValue=-0.5,
$substitution=null)
{
if($gapValue > 0.0) throw new Exception("gapValue must be <= 0");
//if(empty($substitution)) throw new Exception("substitution is required");
if (empty($substitution)) $this->substitution = new SmithWatermanMatchMismatch(1.0, -2.0);
else $this->substitution = $substitution;
$this->gapValue = $gapValue;
}
public function compare($a, $b)
{
if (empty($a) && empty($b)) {
return 1.0;
}
if (empty($a) || empty($b)) {
return 0.0;
}
$maxDistance = min(mb_strlen($a), mb_strlen($b))
* max($this->substitution->max(), $this->gapValue);
return $this->smithWatermanGotoh($a, $b) / $maxDistance;
}
private function smithWatermanGotoh($s, $t)
{
$v0 = [];
$v1 = [];
$t_len = mb_strlen($t);
$max = $v0[0] = max(0, $this->gapValue, $this->substitution->compare($s, 0, $t, 0));
for ($j = 1; $j < $t_len; $j++) {
$v0[$j] = max(0, $v0[$j - 1] + $this->gapValue,
$this->substitution->compare($s, 0, $t, $j));
$max = max($max, $v0[$j]);
}
// Find max
for ($i = 1; $i < mb_strlen($s); $i++) {
$v1[0] = max(0, $v0[0] + $this->gapValue, $this->substitution->compare($s, $i, $t, 0));
$max = max($max, $v1[0]);
for ($j = 1; $j < $t_len; $j++) {
$v1[$j] = max(0, $v0[$j] + $this->gapValue, $v1[$j - 1] + $this->gapValue,
$v0[$j - 1] + $this->substitution->compare($s, $i, $t, $j));
$max = max($max, $v1[$j]);
}
for ($j = 0; $j < $t_len; $j++) {
$v0[$j] = $v1[$j];
}
}
return $max;
}
}
class SmithWatermanMatchMismatch
{
private $matchValue;
private $mismatchValue;
/**
* Constructs a new match-mismatch substitution function. When two
* characters are equal a score of <code>matchValue</code> is assigned. In
* case of a mismatch a score of <code>mismatchValue</code>. The
* <code>matchValue</code> must be strictly greater then
* <code>mismatchValue</code>
*
* @param matchValue
* value when characters are equal
* @param mismatchValue
* value when characters are not equal
*/
public function __construct($matchValue, $mismatchValue) {
if($matchValue <= $mismatchValue) throw new Exception("matchValue must be > matchValue");
$this->matchValue = $matchValue;
$this->mismatchValue = $mismatchValue;
}
public function compare($a, $aIndex, $b, $bIndex) {
return ($a[$aIndex] === $b[$bIndex] ? $this->matchValue
: $this->mismatchValue);
}
public function max() {
return $this->matchValue;
}
public function min() {
return $this->mismatchValue;
}
}
$str1 = "COELACANTH";
$str2 = "PELICAN";
$o = new SmithWatermanGotoh();
echo $o->compare($str1, $str2);
关于php - Smith–Waterman 用于 PHP 中的字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4898705/
我正在考虑一种在 Java 中查找成员 ID 的方法。但我首先需要知道是否可以将这些 ID 存储在组中。 问题是我想要成员 ID = FirstName, LastName; 如何将这些存储在一起?
我想将街道地址转换为类似 Title Case 的格式。它不完全是标题大小写,因为一串数字末尾的字母应该是大写的。例如 19A 史密斯街。 我知道我可以使用 将“19 smith STREET”更改为
涵盖了验证部分。 只是想将电子邮件解析成它们的组件。 假设电子邮件有效... 我能否只向后查找第一个“@”以及之后的所有内容? 然后向后查找一个空格,后面的所有内容都是电子邮件地址减去引用的名称? 最
我正在使用 C# (asp .net),并且我有一个文本框,它接受在数据库上执行查询的名称条目。 我想使用 IN 子句获取所有可能的值,但在我的 C# 页面中我得到 1 个字符串 例如 'john s
我正在使用Josh Smith THE MODEL-VIEW-VIEWMODEL (MVVM) DESIGN PATTER FOR WPF创建项目 但是有一个问题。相同的工作空间显示相同的操作。我的V
我的程序有问题。 这是链接:http://dl.dropbox.com/u/2734432/TabbedInterface.7z 打开这两个选项卡后,您将开始丢失对 View 中当前项目的其他集合的引
我将 Smith-Waterman 算法用于一本书的家庭作业,制作了一个值表。一旦我了解了如何获取值,构建表格就很容易了,但现在我很难从表格中确定最佳比对序列。 表格示例是按照公式生成的 min(
我正在使用 Smith-Waterman 算法运行一些字符串匹配测试。我目前正在使用 SimMetrics(Java 开源项目)来运行测试。 谁能解释为什么我比较“Bloggs J”。到“Bloggs
我正在尝试使用 Smith–Waterman algorithm 在 Python 中实现局部序列比对. 这是我目前所拥有的。它就构建了 similarity matrix : import sys,
在 MainWindow 中我们有: 在资源中: 在文章中说: A typed DataTemplate does not have an x:Key value assig
我正在尝试使用仿射间隙罚函数实现用于局部序列比对的 Smith-Waterman 算法。我想我了解如何启动和计算计算比对分数所需的矩阵,但对于如何回溯以找到比对一无所知。要生成所需的 3 个矩阵,我有
我正在尝试以类似@[123456](John Smith) 的模式捕获 ID 和名称,并使用它们创建类似 John Smith 的字符串。 这是我尝试过的方法,但它不起作用。 def format(t
我正在尝试设置 code::blocks smith 来进行 wxWidgets GUI 编程。最近我在我的电脑上安装了 code::blocks 和 wxWidget 库。 code::blocks
我需要 smith-waterman 在 php 中,你知道是否已经有一个实现吗? 我需要这个算法来进行邻近搜索 ( Function that returns affinity between te
我找到了这个 perl 脚本,但是我有太多的序列需要分析。我想知道是否可以优化它?我在上面启动了 NYTProf,发现“计算匹配分数”、“计算差距分数”和“选择最佳分数”部分花费了大量时间。我必须修改
我在 Smith Set 上阅读过维基百科, Schwartz Set , Kosaraju's Algorithm , Tarjan's Algorithm , 和 path-based stron
我需要有关如何在 CUDA 中优化 Smith-Waterman 算法实现的建议。 我要优化的部分是填充矩阵。由于矩阵元素之间的数据依赖性(每个下一个元素都依赖于其他元素 - 左到它,到它,再到它),
我正在开发一个小型应用程序,并考虑将 BLAST 或其他本地比对搜索集成到我的应用程序中。我的搜索只调出程序,需要作为外部程序安装和调用。 从头开始实现它还有什么办法吗?可能有任何预制库吗? 最佳答案
我正在寻找一种将字符串的首字母大写的方法,包括名称由连字符连接的地方,例如 adam smith-jones 需要是 Adam Smith-Jones。 ucwords()(或 ucfirst(),如
有人可以解释为什么这两个 smith chart plot function for exactly same circle of plotly 和 scikit-rf 如此不同吗?我怎样才能像 sc
我是一名优秀的程序员,十分优秀!