js DNA动态序列比对代码

动态序列比对

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 = 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 "序列:

"+seq1+"
"+seq2+"

比对结果:

"+align1.join(" ")+"
"+align2.join(" ")+"

"
}
document.write(pairaln('CTGGGCTGACTGA', 'GACTAGCTAGACTGA'))

[Ctrl+A 全选 注:如需引入外部Js需刷新才能执行]

(0)

相关推荐

  • js DNA动态序列比对代码

    动态序列比对 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;

  • js实现动态改变字体大小代码

    在很多大网站上为了提高用户方便阅读文字,都提供有字体大小选择功能,以适应不同年龄段人群的阅读需求,其实这种功能实现起来也很简单,修改起来也方便,字体大号由你来定,默认字体大小可以CSS页面中定义,一般网页的标准字体是9pt,也就是12px: 实例代码一: <!DOCTYPE html> <html> <head> <title>修改字体大小.html</title> <meta http-equiv="keywords"

  • p5.js临摹动态图形的方法

    本文实例为大家分享了p5.js临摹动态图形的具体代码,供大家参考,具体内容如下 一.描述所临摹图像的规律 1.图像由多个闪光圆点和圆点之间的连线组成 2.圆点的运动轨迹是随机的 3.圆点之间靠近时会产生连线,并且相互靠近的圆点会颜色加深 二.代码实现 圆点之间产生连线,随机生成线条和运动轨迹: //随机生成s.n条线位置信息 for (var t = [], p = 0; s.n > p; p++) { var h = random() * r, //随机位置 g = random() * n,

  • 使用p5.js临摹动态图片

    本文实例为大家分享了p5.js临摹动态图片的具体代码,供大家参考,具体内容如下 1.临摹图片 2.图像运动规律 原图中一共有36个等大的四分之三圆形,按照一定的规律转动,可以等效为圆形不动,每个圆上有以其半径为边长的矩形在绕圆形的原点转动,每四个为一组,其他部分都是在重复这四个的转动规律 3.完整代码 function setup() { createCanvas(402,402); } function draw() { background(0); var dx=0; dx+=PI/180;

  • js实现动态时钟

    本文实例为大家分享了js实现动态时钟的具体代码,供大家参考,具体内容如下 <!DOCTYPE html> <html> <head> <title>时钟</title> </head> <script type="text/javascript"> function todou(n){ if(n<10){ return '0'+n; } else { return ''+n; } } window

  • 使用JS实现动态时钟

    本文实例为大家分享了JS实现动态时钟的具体代码,供大家参考,具体内容如下 利用setTime()实现动态的时钟效果 代码如下 <html> <head> <meta charset="utf-8"> <title>正在运行的时钟</title> <style type="text/css"> /*设置样式:无边框的文本框*/ input, #clock { width: 390; font-si

  • 使用js实现动态背景

    本文实例为大家分享了js实现动态背景的具体代码,供大家参考,具体内容如下 1.将下面的代码复制并存为js文件 window.onload = function () { //定义body的margin由默认值8px->0px document.body.style.margin = "0"; document.body.style.background = "#30333F"; //创建canvas画布 document.body.appendChild(do

  • three.js 制作动态二维码的示例代码

    今天郭先生说一下用canvas解析图片流,然后制作一个动态二维码的小案例,话不多说先上图,这是郭先生的微信二维码哦! 1. 解析图片流 canvas = document.createElement('canvas');//创建canvas画布 content = canvas.getContext('2d');//获取画布的上下文 canvas.width = 310;//设置尺寸 canvas.height = 310; img = new Image();//创建一张图片 img.src

  • Bootstrap jquery.twbsPagination.js动态页码分页实例代码

    Bootstrap风格的分页控件自适应的: 参考网址:分页参考文档 1.风格样式: 2.首先引入js文件jQuery.twbsPagination.js <span style="font-size:14px;"><script type="text/javascript" src="plugins/page/jquery.twbsPagination.js"></script></span> 3.

  • 动态加载js、css的简单实现代码

    一.原生js: /** * 加载js和css文件 * @param jsonData.path 前缀路径 * @param jsonData.url 需要加载的js路径或css路径 * @param jsonData.type 需要加载的类型 js或css */ function loadWriteFiles(jsonData) { jsonData.path = jsonData.path != undefined ? jsonData.path : ""; if(jsonData.

随机推荐