Mercurial > repos > bitlab > bitlab
comparison gecko/src/dictionaryFunctions.c @ 1:35af401890c0 draft
Uploaded
author | bitlab |
---|---|
date | Thu, 13 Dec 2018 07:59:25 -0500 |
parents | |
children |
comparison
equal
deleted
inserted
replaced
0:ee6b15b409e5 | 1:35af401890c0 |
---|---|
1 #include <stdio.h> | |
2 #include <stdlib.h> | |
3 #include <string.h> | |
4 #include <ctype.h> | |
5 #include <inttypes.h> | |
6 #include "structs.h" | |
7 #include "commonFunctions.h" | |
8 | |
9 int seq2word(char* buf, int wsize, word* w) { | |
10 int i; | |
11 int b = 6; | |
12 memset(w, 0, sizeof(word)); | |
13 | |
14 for (i = 0; i < wsize; i++) { | |
15 if (buf[i] >= 4) | |
16 return -1; | |
17 w->b[i / 4] |= buf[i] << b; | |
18 b -= 2; | |
19 if (b < 0) | |
20 b = 6; | |
21 } | |
22 return 0; | |
23 } | |
24 | |
25 void skipIDLine(FILE *fIn) { | |
26 char c; | |
27 // first line (skip ID fasta Line) | |
28 c = fgetc(fIn); | |
29 while (c != '\n') | |
30 c = fgetc(fIn); | |
31 } | |
32 | |
33 int letterToIndex(char c) { | |
34 // coding (a=0,c=1,g=2,t=3,'>'=4 others=9 ) | |
35 switch (c) { | |
36 case 'A': | |
37 return 0; | |
38 case 'C': | |
39 return 1; | |
40 case 'G': | |
41 return 2; | |
42 case 'T': | |
43 return 3; | |
44 case '>': | |
45 return 4; | |
46 default: | |
47 return 9; | |
48 } | |
49 } | |
50 | |
51 int wordcmp(unsigned char *w1, unsigned char *w2, int n) { | |
52 | |
53 int i = 0, limit; | |
54 | |
55 if(n%4 != 0){ | |
56 w1[n/4] = w1[n/4] >> (2*(3-((n-1)%4))); | |
57 w1[n/4] = w1[n/4] << (2*(3-((n-1)%4))); | |
58 w2[n/4] = w2[n/4] >> (2*(3-((n-1)%4))); | |
59 w2[n/4] = w2[n/4] << (2*(3-((n-1)%4))); | |
60 limit=(n/4)+1; | |
61 } else { | |
62 limit = n/4; | |
63 } | |
64 | |
65 for (i=0;i<limit;i++) { | |
66 if (w1[i]<w2[i]) return -1; | |
67 if (w1[i]>w2[i]) return +1; | |
68 } | |
69 return 0; | |
70 } | |
71 | |
72 void showWord(word* w, char *ws) { | |
73 char Alf[] = { 'A', 'C', 'G', 'T' }; | |
74 int i; | |
75 int wsize = 8; | |
76 unsigned char c; | |
77 for (i = 0; i < wsize; i++) { | |
78 c = w->b[i]; | |
79 c = c >> 6; | |
80 ws[4*i] = Alf[(int) c]; | |
81 c = w->b[i]; | |
82 c = c << 2; | |
83 c = c >> 6; | |
84 ws[4*i+1] = Alf[(int) c]; | |
85 c = w->b[i]; | |
86 c = c << 4; | |
87 c = c >> 6; | |
88 ws[4*i+2] = Alf[(int) c]; | |
89 c = w->b[i]; | |
90 c = c << 6; | |
91 c = c >> 6; | |
92 ws[4*i+3] = Alf[(int) c]; | |
93 } | |
94 } |