js DNA动态序列比对代码
发布时间:2024-04-16 10:41:26
标签:DNA,动态序列
<title>动态序列比对</title> <script> function pairaln(seq1, seq2){ // scoring scheme var MATCH = 1; // +1 for letters that match var MISMATCH = -1; // -1 for letters that mismatch var GAP = -1; // -1 for any gap // initialization var score=[[]]; var pointer=[[]]; score[0][0] = 0; pointer[0][0] = 0; var l1=seq1.length var l2=seq2.length for(var j = 1; j <= l1; j++) { score[0][j] = GAP * j; pointer[0][j] = 2; } for (var i = 1; i <= l2; i++) { score[i]=[]; pointer[i]=[]; score[i][0] = GAP * i; pointer[i][0] = 3; } // fill for(var i = 1; i <= l2; i++) { var letter2 = seq2.charAt(i-1); for(var j = 1; j <= l1; j++) { var diagonal_score, left_score, up_score; // calculate match score var letter1 = seq1.charAt(j-1); if (letter1 == letter2) { diagonal_score = score[i-1][j-1] + MATCH; } else { diagonal_score = score[i-1][j-1] + MISMATCH; } // calculate gap scores up_score = score[i-1][j] + GAP; left_score = score[i][j-1] + GAP; // choose best score if (diagonal_score >= up_score) { if (diagonal_score >= left_score) { score[i][j] = diagonal_score; pointer[i][j] = 1; } else { score[i][j] = left_score; pointer[i][j] = 2; } } else { if (up_score >= left_score) { score[i][j] = up_score; pointer[i][j] = 3; } else { score[i][j] = left_score; pointer[i][j] = 2; } } } } // trace-back var align1 = []; var align2 = []; // start at last cell of matrix var j = l1; var i = l2; while (1) { if(pointer[i][j] == 0)break // ends at first cell of matrix if (pointer[i][j] == 1) { align1[align1.length] = seq1.charAt(j-1); align2[align2.length] = seq2.charAt(i-1); i--; j--; } if (pointer[i][j] == 2) { align1[align1.length] = seq1.charAt(j-1); align2[align2.length] = "-"; j--; } if (pointer[i][j] == 3) { align1[align1.length] = "-"; align2[align2.length] = seq2.charAt(i-1); i--; } } align1 = align1.reverse(); align2 = align2.reverse(); return "序列:<p>"+seq1+"<br>"+seq2+"<p>比对结果:<table><tr><td>"+align1.join("</td><td>")+"</td></tr><tr><td>"+align2.join("</td><td>")+"</tr></table>" } document.write(pairaln('CTGGGCTGACTGA', 'GACTAGCTAGACTGA')) </script>


猜你喜欢
- 🚀 文章简介 :本篇文章的实战部分中主要使用到了 MediaPipe 与 OpenCv 两个库,实现了隔空操作的效果,主要有**隔空操作鼠标
- 说明 1. 状态机是一个非常实用的理论。在涉及到复杂的场景,建立状态机模型,能带来极大的方便。比如,网络连接、模型状态、业务逻辑。
- 可以通过浏览器在访问者的硬盘上创建文件,因为我开始试了一下真的可以,不信你把下面这段代码COPY到一个HTML文件当中再运行一下! <
- Java 8终于到来了! 经过几年的等待, java程序员终于能在java中得到函数式编程的支持了. 函数式编程的支持能流程化现
- 用语言实现 好处: 1、可以减少对数据库的访问。 2、可移植性好。 坏处: 1、操作起来考虑的东西较多,修改一处就要修改别一处。也就是说是相
- MySQL/MariaDB/Percona数据库升级脚本MySQL/MariaDB/Percona数据库升级脚本截取《OneinStack》
- 前言自动扫雷一般分为两种,一种是读取内存数据,而另一种是通过分析图片获得数据,并通过模拟鼠标操作,这里我用的是第二种方式。一、准备工作1.扫
- 1.交换变量值2.将一列表中的所有元素拼接成字符串3.查找list中最高频率的值4.检查两个单词是否是字谜(组成的字母和对应数量一致)5.反
- Python-pymysql如何向SQL语句中传参方法一:不传递参数## 方式一、不传递参数 id = "01" nam
- 函数参数的使用又有俩个方面值得注意:1.函数参数是如何定义的 2.在调用函数的过程中参数是如何被解析先看第一个问题,在python中函数参数
- 设计思路本文整理归纳以往的工作中用到的东西,现汇总成基础测试框架提供分享。框架采用python3 + selenium3 + PO + ya
- 一般调试程序的时候都比较倾向print,利用直接打印的方法作出判断,但是print只能打印出结果,对类型无法作出判断。例如:复制代码a =
- 要想创建一个iterator,必须实现一个有__iter__()和__next__()方法的类,类要能够跟踪内部状态并且在没有元素返回的时候
- 本文实例讲述了JS中getElementsByClassName与classList兼容性问题解决方案。分享给大家供大家参考,具体如下:do
- 大数据一般是在“云”上玩的,但“云”都是要钱的,而且数据上上下下的也比较麻烦。所以,在本地电脑上快速处理数据的技能还是要的。pandas在比
- 本文实例讲述了Python selenium的基本使用方法。分享给大家供大家参考,具体如下:selenium是一个web自动化测试工具,se
- max找出tensor 的行或者列最大的值:找出每行的最大值:import torchoutputs=torch.FloatTensor([
- 1. 用SimpleITK读取dicom序列:import SimpleITK as sitkimport numpy as npimg_p
- 图像在计算机中的存储图像其实就是一个像素值组成的矩阵。1、黑白或灰度图像如何存储在计算机中在这里,我们已经采取了黑白图像,也被称为一个灰度图
- 今天写了个小功能,看起来挺简单,写的过程中发现了些坑。1.div没有disabled的属性,所以得写成button2.disabled在da