Skip to content

Instantly share code, notes, and snippets.

@jpedrosa
Created October 15, 2011 23:10
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save jpedrosa/1290293 to your computer and use it in GitHub Desktop.
Save jpedrosa/1290293 to your computer and use it in GitHub Desktop.
Fasta Benchmark for Dart
// The Great Computer Language Shootout
// http://shootout.alioth.debian.org
//
// Contributed by Ian Osgood
// Adapted by Joao Pedrosa for Dart
var last = 42, A = 3877, C = 29573, M = 139968;
rand(max) {
last = (last * A + C) % M;
return max * last / M;
}
var ALU =
"GGCCGGGCGCGGTGGCTCACGCCTGTAATCCCAGCACTTTGG" +
"GAGGCCGAGGCGGGCGGATCACCTGAGGTCAGGAGTTCGAGA" +
"CCAGCCTGGCCAACATGGTGAAACCCCGTCTCTACTAAAAAT" +
"ACAAAAATTAGCCGGGCGTGGTGGCGCGCGCCTGTAATCCCA" +
"GCTACTCGGGAGGCTGAGGCAGGAGAATCGCTTGAACCCGGG" +
"AGGCGGAGGTTGCAGTGAGCCGAGATCGCGCCACTGCACTCC" +
"AGCCTGGGCGACAGAGCGAGACTCCGTCTCAAAAA";
var IUB, HomoSap;
makeCumulative(table) {
var last = null;
table.forEach((c, vvv){
if (last != null) {
table[c] += table[last];
}
last = c;
});
}
fastaRepeat(n, seq) {
var seqi = 0, lenOut = 60;
while (n>0) {
if (n<lenOut) lenOut = n;
if (seqi + lenOut < seq.length) {
print( seq.substring(seqi, seqi+lenOut) );
seqi += lenOut;
} else {
var s = seq.substring(seqi);
seqi = lenOut - s.length;
print( s + seq.substring(0, seqi) );
}
n -= lenOut;
}
}
fastaRandom(n, table) {
var line = new List<String>(60);
makeCumulative(table);
while (n>0) {
if (n<line.length) line = new List<String>(n);
for (var i=0; i<line.length; i++) {
var r = rand(1);
for (var c in table.getKeys()){
if (r < table[c]) {
line[i] = c;
break;
}
}
}
print(Strings.join(line, ''));
n -= line.length;
}
}
main(){
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
};
HomoSap = {
'a': 0.3029549426680,
'c': 0.1979883004921,
'g': 0.1975473066391,
't': 0.3015094502008
};
var n = 1000;
print(">ONE Homo sapiens alu");
fastaRepeat(2*n, ALU);
print(">TWO IUB ambiguity codes");
fastaRandom(3*n, IUB);
print(">THREE Homo sapiens frequency");
fastaRandom(5*n, HomoSap);
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment