| Index: chrome/test/data/dromaeo/tests/sunspider-string-fasta.html
|
| ===================================================================
|
| --- chrome/test/data/dromaeo/tests/sunspider-string-fasta.html (revision 0)
|
| +++ chrome/test/data/dromaeo/tests/sunspider-string-fasta.html (revision 0)
|
| @@ -0,0 +1,104 @@
|
| +<html>
|
| +<head>
|
| +<script src="../htmlrunner.js"></script>
|
| +<script>
|
| +// The Great Computer Language Shootout
|
| +// http://shootout.alioth.debian.org
|
| +//
|
| +// Contributed by Ian Osgood
|
| +
|
| +var 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;
|
| + }
|
| +}
|
| +
|
| +window.onload = function(){ startTest("sunspider-string-fasta", '');
|
| +
|
| +var ret;
|
| +var n = 16;
|
| +
|
| +test( "Homo sapiens alu", function(){
|
| + ret = fastaRepeat(4*n*10000, ALU);
|
| +});
|
| +
|
| +test( "IUB ambiguity codes", function(){
|
| + ret = fastaRandom(3*n*100, IUB);
|
| +});
|
| +
|
| +test( "Homo sapiens frequency", function(){
|
| + ret = fastaRandom(5*n*100, HomoSap);
|
| +});
|
| +
|
| +endTest(); };
|
| +</script>
|
| +</head>
|
| +<body></body>
|
| +</html>
|
|
|