Ik wil een soort hash table maken voor een dna sequentie. De sequentie is een (lange) string van vier verschillende letters (A, C, T, G). Ik wil de sequentie in stukken van 4 letters lang knippen en iedere mogelijke combinatie van vier letters een unieke id geven, dat zijn 4^4 mogelijkheden.
Voorbeeld:
AAAAATTCGTGA
AAAA
AAAA
AAAT
AATT
etc
Om voor iedere mogelijke combinatie van letters wilde ik eerst de verschillende letters omzetten naar 1'en en 0'en.
00 = A
01 = C
10 = G
11 = T
TCGA zou dan worden:
(in binary): 11011000
(in dec): 216
Ik ben nu zover dat ik de letter inlees en deze omzet naar 1'en en 0'en. Maar dit zijn chars en geen binaire getallen (zie code). Hoe zorg ik ervoor dat ik een A omzet naar binair 00 en een T naar binair 11??? Hieronder staat mijn code.
Bin is hierbij die gewoon een char van 1'en en 0'en en ik wil dus dat dit een binair getal is ipv een char.
Voorbeeld:
AAAAATTCGTGA
AAAA
AAAA
AAAT
AATT
etc
Om voor iedere mogelijke combinatie van letters wilde ik eerst de verschillende letters omzetten naar 1'en en 0'en.
00 = A
01 = C
10 = G
11 = T
TCGA zou dan worden:
(in binary): 11011000
(in dec): 216
Ik ben nu zover dat ik de letter inlees en deze omzet naar 1'en en 0'en. Maar dit zijn chars en geen binaire getallen (zie code). Hoe zorg ik ervoor dat ik een A omzet naar binair 00 en een T naar binair 11??? Hieronder staat mijn code.
code:
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
| char* a = "00"; char* c = "01"; char* g = "10"; char* t = "11"; ... for(i=0; i< size-matchLength; i++) { input.seekg(i,ios::beg); input.read(buffer, matchLength); cout << i << "\t" << buffer << "\t"; char* bin; bin = new char[4]; for(j=0; j < matchLength; j++) { switch (buffer[j]) { case 'a' : { cout << a << "\t"; strcat(bin, a); break; } case 'c' : { cout << c << "\t"; strcat(bin, c); break; } ..... } } cout << endl << bin << endl; delete[] bin; |
Bin is hierbij die gewoon een char van 1'en en 0'en en ik wil dus dat dit een binair getal is ipv een char.
[ Voor 10% gewijzigd door Verwijderd op 23-01-2006 16:27 ]