string-fasta.js
来自「linux下开源浏览器WebKit的源码,市面上的很多商用浏览器都是移植自Web」· JavaScript 代码 · 共 86 行
JS
86 行
// The Great Computer Language Shootout// http://shootout.alioth.debian.org//// Contributed by Ian Osgoodvar last = 42, A = 3877, C = 29573, M = 139968;function rand(max) { last = (last * A + C) % M; return max * last / M;}var ALU = "GGCCGGGCGCGGTGGCTCACGCCTGTAATCCCAGCACTTTGG" + "GAGGCCGAGGCGGGCGGATCACCTGAGGTCAGGAGTTCGAGA" + "CCAGCCTGGCCAACATGGTGAAACCCCGTCTCTACTAAAAAT" + "ACAAAAATTAGCCGGGCGTGGTGGCGCGCGCCTGTAATCCCA" + "GCTACTCGGGAGGCTGAGGCAGGAGAATCGCTTGAACCCGGG" + "AGGCGGAGGTTGCAGTGAGCCGAGATCGCGCCACTGCACTCC" + "AGCCTGGGCGACAGAGCGAGACTCCGTCTCAAAAA";var IUB = { a:0.27, c:0.12, g:0.12, t:0.27, B:0.02, D:0.02, H:0.02, K:0.02, M:0.02, N:0.02, R:0.02, S:0.02, V:0.02, W:0.02, Y:0.02}var HomoSap = { a: 0.3029549426680, c: 0.1979883004921, g: 0.1975473066391, t: 0.3015094502008}function makeCumulative(table) { var last = null; for (var c in table) { if (last) table[c] += table[last]; last = c; }}function fastaRepeat(n, seq) { var seqi = 0, lenOut = 60; while (n>0) { if (n<lenOut) lenOut = n; if (seqi + lenOut < seq.length) { ret = seq.substring(seqi, seqi+lenOut); seqi += lenOut; } else { var s = seq.substring(seqi); seqi = lenOut - s.length; ret = s + seq.substring(0, seqi); } n -= lenOut; }}function fastaRandom(n, table) { var line = new Array(60); makeCumulative(table); while (n>0) { if (n<line.length) line = new Array(n); for (var i=0; i<line.length; i++) { var r = rand(1); for (var c in table) { if (r < table[c]) { line[i] = c; break; } } } ret = line.join(''); n -= line.length; }}var ret;var count = 7;ret = fastaRepeat(2*count*100000, ALU);ret = fastaRandom(3*count*1000, IUB);ret = fastaRandom(5*count*1000, HomoSap);
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?