File: ref_aligner.cpp

package info (click to toggle)
bowtie 1.3.0%2Bdfsg1-1
  • links: PTS, VCS
  • area: main
  • in suites: bullseye
  • size: 15,792 kB
  • sloc: cpp: 37,066; perl: 5,806; ansic: 1,465; sh: 1,194; python: 463; makefile: 430
file content (65 lines) | stat: -rw-r--r-- 1,400 bytes parent folder | download | duplicates (7)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
/*
 * ref_aligner.cpp
 */

/**
 * Maps an octet representing the XOR of two two-bit-per-base-encoded
 * DNA sequences to the number of bases that mismatch between the two.
 *
 * Generated with this perl:
 *
 * print "const unsigned char u8toMms[] = {\n";
 * for(my $i = 0; $i < 256; $i++) {
 * 	if(($i & 7) == 0) {
 * 		print "\t";
 * 	}
 * 	my $c = $i;
 * 	my $mms = 0;
 * 	for(my $j = 0; $j < 4; $j++) {
 * 		if(($c & 3) != 0) {
 * 			$mms++;
 * 		}
 * 		$c >>= 2;
 * 	}
 * 	print "$mms, ";
 * 	if(($i & 7) == 7) {
 * 		print "\n";
 * 	}
 * }
 * print "};\n";
 *
 */
unsigned char u8toMms[] = {
	0, 1, 1, 1, 1, 2, 2, 2,
	1, 2, 2, 2, 1, 2, 2, 2,
	1, 2, 2, 2, 2, 3, 3, 3,
	2, 3, 3, 3, 2, 3, 3, 3,
	1, 2, 2, 2, 2, 3, 3, 3,
	2, 3, 3, 3, 2, 3, 3, 3,
	1, 2, 2, 2, 2, 3, 3, 3,
	2, 3, 3, 3, 2, 3, 3, 3,
	1, 2, 2, 2, 2, 3, 3, 3,
	2, 3, 3, 3, 2, 3, 3, 3,
	2, 3, 3, 3, 3, 4, 4, 4,
	3, 4, 4, 4, 3, 4, 4, 4,
	2, 3, 3, 3, 3, 4, 4, 4,
	3, 4, 4, 4, 3, 4, 4, 4,
	2, 3, 3, 3, 3, 4, 4, 4,
	3, 4, 4, 4, 3, 4, 4, 4,
	1, 2, 2, 2, 2, 3, 3, 3,
	2, 3, 3, 3, 2, 3, 3, 3,
	2, 3, 3, 3, 3, 4, 4, 4,
	3, 4, 4, 4, 3, 4, 4, 4,
	2, 3, 3, 3, 3, 4, 4, 4,
	3, 4, 4, 4, 3, 4, 4, 4,
	2, 3, 3, 3, 3, 4, 4, 4,
	3, 4, 4, 4, 3, 4, 4, 4,
	1, 2, 2, 2, 2, 3, 3, 3,
	2, 3, 3, 3, 2, 3, 3, 3,
	2, 3, 3, 3, 3, 4, 4, 4,
	3, 4, 4, 4, 3, 4, 4, 4,
	2, 3, 3, 3, 3, 4, 4, 4,
	3, 4, 4, 4, 3, 4, 4, 4,
	2, 3, 3, 3, 3, 4, 4, 4,
	3, 4, 4, 4, 3, 4, 4, 4,
};