annotate mrsfast-2.3.0.2/HashTable.c @ 0:ec628ba33878 default tip

Uploaded source code for mrsFAST
author calkan
date Tue, 21 Feb 2012 10:39:28 -0500
parents
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
ec628ba33878 Uploaded source code for mrsFAST
calkan
parents:
diff changeset
1 /*
ec628ba33878 Uploaded source code for mrsFAST
calkan
parents:
diff changeset
2 * Copyright (c) <2008 - 2009>, University of Washington, Simon Fraser University
ec628ba33878 Uploaded source code for mrsFAST
calkan
parents:
diff changeset
3 * All rights reserved.
ec628ba33878 Uploaded source code for mrsFAST
calkan
parents:
diff changeset
4 *
ec628ba33878 Uploaded source code for mrsFAST
calkan
parents:
diff changeset
5 * Redistribution and use in source and binary forms, with or without modification,
ec628ba33878 Uploaded source code for mrsFAST
calkan
parents:
diff changeset
6 * are permitted provided that the following conditions are met:
ec628ba33878 Uploaded source code for mrsFAST
calkan
parents:
diff changeset
7 *
ec628ba33878 Uploaded source code for mrsFAST
calkan
parents:
diff changeset
8 * Redistributions of source code must retain the above copyright notice, this list
ec628ba33878 Uploaded source code for mrsFAST
calkan
parents:
diff changeset
9 * of conditions and the following disclaimer.
ec628ba33878 Uploaded source code for mrsFAST
calkan
parents:
diff changeset
10 * - Redistributions in binary form must reproduce the above copyright notice, this
ec628ba33878 Uploaded source code for mrsFAST
calkan
parents:
diff changeset
11 * list of conditions and the following disclaimer in the documentation and/or other
ec628ba33878 Uploaded source code for mrsFAST
calkan
parents:
diff changeset
12 * materials provided with the distribution.
ec628ba33878 Uploaded source code for mrsFAST
calkan
parents:
diff changeset
13 * - Neither the name of the <ORGANIZATION> nor the names of its contributors may be
ec628ba33878 Uploaded source code for mrsFAST
calkan
parents:
diff changeset
14 * used to endorse or promote products derived from this software without specific
ec628ba33878 Uploaded source code for mrsFAST
calkan
parents:
diff changeset
15 * prior written permission.
ec628ba33878 Uploaded source code for mrsFAST
calkan
parents:
diff changeset
16 *
ec628ba33878 Uploaded source code for mrsFAST
calkan
parents:
diff changeset
17 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
ec628ba33878 Uploaded source code for mrsFAST
calkan
parents:
diff changeset
18 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
ec628ba33878 Uploaded source code for mrsFAST
calkan
parents:
diff changeset
19 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
ec628ba33878 Uploaded source code for mrsFAST
calkan
parents:
diff changeset
20 * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
ec628ba33878 Uploaded source code for mrsFAST
calkan
parents:
diff changeset
21 * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
ec628ba33878 Uploaded source code for mrsFAST
calkan
parents:
diff changeset
22 * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
ec628ba33878 Uploaded source code for mrsFAST
calkan
parents:
diff changeset
23 * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
ec628ba33878 Uploaded source code for mrsFAST
calkan
parents:
diff changeset
24 * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
ec628ba33878 Uploaded source code for mrsFAST
calkan
parents:
diff changeset
25 * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
ec628ba33878 Uploaded source code for mrsFAST
calkan
parents:
diff changeset
26 * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
ec628ba33878 Uploaded source code for mrsFAST
calkan
parents:
diff changeset
27 * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
ec628ba33878 Uploaded source code for mrsFAST
calkan
parents:
diff changeset
28 */
ec628ba33878 Uploaded source code for mrsFAST
calkan
parents:
diff changeset
29
ec628ba33878 Uploaded source code for mrsFAST
calkan
parents:
diff changeset
30 /*
ec628ba33878 Uploaded source code for mrsFAST
calkan
parents:
diff changeset
31 * Author : Faraz Hach
ec628ba33878 Uploaded source code for mrsFAST
calkan
parents:
diff changeset
32 * Email : fhach AT cs DOT sfu
ec628ba33878 Uploaded source code for mrsFAST
calkan
parents:
diff changeset
33 * Last Update : 2009-12-08
ec628ba33878 Uploaded source code for mrsFAST
calkan
parents:
diff changeset
34 */
ec628ba33878 Uploaded source code for mrsFAST
calkan
parents:
diff changeset
35
ec628ba33878 Uploaded source code for mrsFAST
calkan
parents:
diff changeset
36
ec628ba33878 Uploaded source code for mrsFAST
calkan
parents:
diff changeset
37 #include <stdio.h>
ec628ba33878 Uploaded source code for mrsFAST
calkan
parents:
diff changeset
38 #include <stdlib.h>
ec628ba33878 Uploaded source code for mrsFAST
calkan
parents:
diff changeset
39 #include <string.h>
ec628ba33878 Uploaded source code for mrsFAST
calkan
parents:
diff changeset
40 #include <math.h>
ec628ba33878 Uploaded source code for mrsFAST
calkan
parents:
diff changeset
41 #include "Common.h"
ec628ba33878 Uploaded source code for mrsFAST
calkan
parents:
diff changeset
42 #include "RefGenome.h"
ec628ba33878 Uploaded source code for mrsFAST
calkan
parents:
diff changeset
43 #include "HashTable.h"
ec628ba33878 Uploaded source code for mrsFAST
calkan
parents:
diff changeset
44 /**********************************************/
ec628ba33878 Uploaded source code for mrsFAST
calkan
parents:
diff changeset
45 FILE *_ih_fp = NULL;
ec628ba33878 Uploaded source code for mrsFAST
calkan
parents:
diff changeset
46 IHashTable *_ih_hashTable = NULL;
ec628ba33878 Uploaded source code for mrsFAST
calkan
parents:
diff changeset
47 int _ih_maxHashTableSize = 0;
ec628ba33878 Uploaded source code for mrsFAST
calkan
parents:
diff changeset
48 char *_ih_refGen = NULL;
ec628ba33878 Uploaded source code for mrsFAST
calkan
parents:
diff changeset
49 char *_ih_refGenName = NULL;
ec628ba33878 Uploaded source code for mrsFAST
calkan
parents:
diff changeset
50 long long _ih_memUsage = 0;
ec628ba33878 Uploaded source code for mrsFAST
calkan
parents:
diff changeset
51 int _ih_refGenOff = 0;
ec628ba33878 Uploaded source code for mrsFAST
calkan
parents:
diff changeset
52 /**********************************************/
ec628ba33878 Uploaded source code for mrsFAST
calkan
parents:
diff changeset
53
ec628ba33878 Uploaded source code for mrsFAST
calkan
parents:
diff changeset
54 int hashVal(char *seq)
ec628ba33878 Uploaded source code for mrsFAST
calkan
parents:
diff changeset
55 {
ec628ba33878 Uploaded source code for mrsFAST
calkan
parents:
diff changeset
56 int i=0;
ec628ba33878 Uploaded source code for mrsFAST
calkan
parents:
diff changeset
57 int val=0, numericVal=0;
ec628ba33878 Uploaded source code for mrsFAST
calkan
parents:
diff changeset
58
ec628ba33878 Uploaded source code for mrsFAST
calkan
parents:
diff changeset
59 while(i<WINDOW_SIZE)
ec628ba33878 Uploaded source code for mrsFAST
calkan
parents:
diff changeset
60 {
ec628ba33878 Uploaded source code for mrsFAST
calkan
parents:
diff changeset
61 switch (seq[i])
ec628ba33878 Uploaded source code for mrsFAST
calkan
parents:
diff changeset
62 {
ec628ba33878 Uploaded source code for mrsFAST
calkan
parents:
diff changeset
63 case 'A':
ec628ba33878 Uploaded source code for mrsFAST
calkan
parents:
diff changeset
64 numericVal = 0;
ec628ba33878 Uploaded source code for mrsFAST
calkan
parents:
diff changeset
65 break;
ec628ba33878 Uploaded source code for mrsFAST
calkan
parents:
diff changeset
66 case 'C':
ec628ba33878 Uploaded source code for mrsFAST
calkan
parents:
diff changeset
67 numericVal = 1;
ec628ba33878 Uploaded source code for mrsFAST
calkan
parents:
diff changeset
68 break;
ec628ba33878 Uploaded source code for mrsFAST
calkan
parents:
diff changeset
69 case 'G' :
ec628ba33878 Uploaded source code for mrsFAST
calkan
parents:
diff changeset
70 numericVal = 2;
ec628ba33878 Uploaded source code for mrsFAST
calkan
parents:
diff changeset
71 break;
ec628ba33878 Uploaded source code for mrsFAST
calkan
parents:
diff changeset
72 case 'T':
ec628ba33878 Uploaded source code for mrsFAST
calkan
parents:
diff changeset
73 numericVal = 3;
ec628ba33878 Uploaded source code for mrsFAST
calkan
parents:
diff changeset
74 break;
ec628ba33878 Uploaded source code for mrsFAST
calkan
parents:
diff changeset
75 default:
ec628ba33878 Uploaded source code for mrsFAST
calkan
parents:
diff changeset
76 return -1;
ec628ba33878 Uploaded source code for mrsFAST
calkan
parents:
diff changeset
77 break;
ec628ba33878 Uploaded source code for mrsFAST
calkan
parents:
diff changeset
78 }
ec628ba33878 Uploaded source code for mrsFAST
calkan
parents:
diff changeset
79 val = (val << 2)|numericVal;
ec628ba33878 Uploaded source code for mrsFAST
calkan
parents:
diff changeset
80 i++;
ec628ba33878 Uploaded source code for mrsFAST
calkan
parents:
diff changeset
81 }
ec628ba33878 Uploaded source code for mrsFAST
calkan
parents:
diff changeset
82 return val;
ec628ba33878 Uploaded source code for mrsFAST
calkan
parents:
diff changeset
83 }
ec628ba33878 Uploaded source code for mrsFAST
calkan
parents:
diff changeset
84 /**********************************************/
ec628ba33878 Uploaded source code for mrsFAST
calkan
parents:
diff changeset
85 void freeIHashTableContent(IHashTable *hashTable, unsigned int maxSize)
ec628ba33878 Uploaded source code for mrsFAST
calkan
parents:
diff changeset
86 {
ec628ba33878 Uploaded source code for mrsFAST
calkan
parents:
diff changeset
87 int i=0;
ec628ba33878 Uploaded source code for mrsFAST
calkan
parents:
diff changeset
88 for (i=0; i<maxSize; i++)
ec628ba33878 Uploaded source code for mrsFAST
calkan
parents:
diff changeset
89 {
ec628ba33878 Uploaded source code for mrsFAST
calkan
parents:
diff changeset
90 if (hashTable[i].locs != NULL)
ec628ba33878 Uploaded source code for mrsFAST
calkan
parents:
diff changeset
91 {
ec628ba33878 Uploaded source code for mrsFAST
calkan
parents:
diff changeset
92 freeMem(hashTable[i].locs, (hashTable[i].locs[0]+1)*(sizeof(unsigned int)));
ec628ba33878 Uploaded source code for mrsFAST
calkan
parents:
diff changeset
93 hashTable[i].locs = NULL;
ec628ba33878 Uploaded source code for mrsFAST
calkan
parents:
diff changeset
94 }
ec628ba33878 Uploaded source code for mrsFAST
calkan
parents:
diff changeset
95 }
ec628ba33878 Uploaded source code for mrsFAST
calkan
parents:
diff changeset
96 }
ec628ba33878 Uploaded source code for mrsFAST
calkan
parents:
diff changeset
97 /**********************************************/
ec628ba33878 Uploaded source code for mrsFAST
calkan
parents:
diff changeset
98 void initSavingIHashTable(char *fileName)
ec628ba33878 Uploaded source code for mrsFAST
calkan
parents:
diff changeset
99 {
ec628ba33878 Uploaded source code for mrsFAST
calkan
parents:
diff changeset
100 int tmp;
ec628ba33878 Uploaded source code for mrsFAST
calkan
parents:
diff changeset
101 _ih_fp = fileOpen(fileName, "w");
ec628ba33878 Uploaded source code for mrsFAST
calkan
parents:
diff changeset
102 unsigned char bIndex = 0; // Bisulfite Index
ec628ba33878 Uploaded source code for mrsFAST
calkan
parents:
diff changeset
103
ec628ba33878 Uploaded source code for mrsFAST
calkan
parents:
diff changeset
104 // First Two bytes are indicating the type of the index & window size
ec628ba33878 Uploaded source code for mrsFAST
calkan
parents:
diff changeset
105 tmp = fwrite(&bIndex, sizeof(bIndex), 1, _ih_fp);
ec628ba33878 Uploaded source code for mrsFAST
calkan
parents:
diff changeset
106 tmp = fwrite(&WINDOW_SIZE, sizeof(WINDOW_SIZE), 1, _ih_fp);
ec628ba33878 Uploaded source code for mrsFAST
calkan
parents:
diff changeset
107
ec628ba33878 Uploaded source code for mrsFAST
calkan
parents:
diff changeset
108 }
ec628ba33878 Uploaded source code for mrsFAST
calkan
parents:
diff changeset
109 /**********************************************/
ec628ba33878 Uploaded source code for mrsFAST
calkan
parents:
diff changeset
110 void finalizeSavingIHashTable()
ec628ba33878 Uploaded source code for mrsFAST
calkan
parents:
diff changeset
111 {
ec628ba33878 Uploaded source code for mrsFAST
calkan
parents:
diff changeset
112 fclose(_ih_fp);
ec628ba33878 Uploaded source code for mrsFAST
calkan
parents:
diff changeset
113 }
ec628ba33878 Uploaded source code for mrsFAST
calkan
parents:
diff changeset
114 /**********************************************/
ec628ba33878 Uploaded source code for mrsFAST
calkan
parents:
diff changeset
115 void saveIHashTable(IHashTable *hashTable, unsigned int size, unsigned int maxSize, char *refGen, char *refGenName, int refGenOffset)
ec628ba33878 Uploaded source code for mrsFAST
calkan
parents:
diff changeset
116 {
ec628ba33878 Uploaded source code for mrsFAST
calkan
parents:
diff changeset
117 int tmp;
ec628ba33878 Uploaded source code for mrsFAST
calkan
parents:
diff changeset
118
ec628ba33878 Uploaded source code for mrsFAST
calkan
parents:
diff changeset
119 // Every Chunk starts with a byte indicating whether it has extra info;
ec628ba33878 Uploaded source code for mrsFAST
calkan
parents:
diff changeset
120 unsigned char extraInfo = 0;
ec628ba33878 Uploaded source code for mrsFAST
calkan
parents:
diff changeset
121 tmp = fwrite (&extraInfo, sizeof(extraInfo), 1, _ih_fp);
ec628ba33878 Uploaded source code for mrsFAST
calkan
parents:
diff changeset
122
ec628ba33878 Uploaded source code for mrsFAST
calkan
parents:
diff changeset
123 short len = strlen(refGenName);
ec628ba33878 Uploaded source code for mrsFAST
calkan
parents:
diff changeset
124 tmp = fwrite(&len, sizeof(len), 1, _ih_fp);
ec628ba33878 Uploaded source code for mrsFAST
calkan
parents:
diff changeset
125 tmp = fwrite(refGenName, sizeof(char), len, _ih_fp);
ec628ba33878 Uploaded source code for mrsFAST
calkan
parents:
diff changeset
126
ec628ba33878 Uploaded source code for mrsFAST
calkan
parents:
diff changeset
127 tmp = fwrite(&refGenOffset, sizeof(refGenOffset), 1, _ih_fp);
ec628ba33878 Uploaded source code for mrsFAST
calkan
parents:
diff changeset
128
ec628ba33878 Uploaded source code for mrsFAST
calkan
parents:
diff changeset
129 unsigned int refGenLength = strlen(refGen);
ec628ba33878 Uploaded source code for mrsFAST
calkan
parents:
diff changeset
130 tmp = fwrite(&refGenLength, sizeof(refGenLength), 1, _ih_fp);
ec628ba33878 Uploaded source code for mrsFAST
calkan
parents:
diff changeset
131 tmp = fwrite(refGen, sizeof(char), refGenLength, _ih_fp);
ec628ba33878 Uploaded source code for mrsFAST
calkan
parents:
diff changeset
132
ec628ba33878 Uploaded source code for mrsFAST
calkan
parents:
diff changeset
133 tmp = fwrite(&size, sizeof(size), 1, _ih_fp);
ec628ba33878 Uploaded source code for mrsFAST
calkan
parents:
diff changeset
134
ec628ba33878 Uploaded source code for mrsFAST
calkan
parents:
diff changeset
135 int i=0,j=0;
ec628ba33878 Uploaded source code for mrsFAST
calkan
parents:
diff changeset
136 unsigned char cnt=0;
ec628ba33878 Uploaded source code for mrsFAST
calkan
parents:
diff changeset
137 for (i=0; i<maxSize; i++)
ec628ba33878 Uploaded source code for mrsFAST
calkan
parents:
diff changeset
138 {
ec628ba33878 Uploaded source code for mrsFAST
calkan
parents:
diff changeset
139 if (hashTable[i].locs != NULL)
ec628ba33878 Uploaded source code for mrsFAST
calkan
parents:
diff changeset
140 {
ec628ba33878 Uploaded source code for mrsFAST
calkan
parents:
diff changeset
141 tmp = fwrite(&i, sizeof(i), 1, _ih_fp);
ec628ba33878 Uploaded source code for mrsFAST
calkan
parents:
diff changeset
142
ec628ba33878 Uploaded source code for mrsFAST
calkan
parents:
diff changeset
143 if (hashTable[i].locs[0] < 250)
ec628ba33878 Uploaded source code for mrsFAST
calkan
parents:
diff changeset
144 {
ec628ba33878 Uploaded source code for mrsFAST
calkan
parents:
diff changeset
145 cnt = hashTable[i].locs[0];
ec628ba33878 Uploaded source code for mrsFAST
calkan
parents:
diff changeset
146 tmp = fwrite(&cnt, sizeof(cnt), 1, _ih_fp);
ec628ba33878 Uploaded source code for mrsFAST
calkan
parents:
diff changeset
147 }
ec628ba33878 Uploaded source code for mrsFAST
calkan
parents:
diff changeset
148 else
ec628ba33878 Uploaded source code for mrsFAST
calkan
parents:
diff changeset
149 {
ec628ba33878 Uploaded source code for mrsFAST
calkan
parents:
diff changeset
150 cnt =0;
ec628ba33878 Uploaded source code for mrsFAST
calkan
parents:
diff changeset
151 tmp = fwrite (&cnt, sizeof(cnt), 1, _ih_fp);
ec628ba33878 Uploaded source code for mrsFAST
calkan
parents:
diff changeset
152 tmp = fwrite (&(hashTable[i].locs[0]), sizeof(hashTable[i].locs[0]), 1, _ih_fp);
ec628ba33878 Uploaded source code for mrsFAST
calkan
parents:
diff changeset
153 }
ec628ba33878 Uploaded source code for mrsFAST
calkan
parents:
diff changeset
154
ec628ba33878 Uploaded source code for mrsFAST
calkan
parents:
diff changeset
155 for (j=1; j<=hashTable[i].locs[0]; j++)
ec628ba33878 Uploaded source code for mrsFAST
calkan
parents:
diff changeset
156 tmp = fwrite(&(hashTable[i].locs[j]), sizeof(hashTable[i].locs[j]), 1, _ih_fp);
ec628ba33878 Uploaded source code for mrsFAST
calkan
parents:
diff changeset
157 }
ec628ba33878 Uploaded source code for mrsFAST
calkan
parents:
diff changeset
158 }
ec628ba33878 Uploaded source code for mrsFAST
calkan
parents:
diff changeset
159 }
ec628ba33878 Uploaded source code for mrsFAST
calkan
parents:
diff changeset
160 /**********************************************/
ec628ba33878 Uploaded source code for mrsFAST
calkan
parents:
diff changeset
161 unsigned int addIHashTableLocation(IHashTable *hashTable, int hv, int location)
ec628ba33878 Uploaded source code for mrsFAST
calkan
parents:
diff changeset
162 {
ec628ba33878 Uploaded source code for mrsFAST
calkan
parents:
diff changeset
163 unsigned int sizeInc = 0;
ec628ba33878 Uploaded source code for mrsFAST
calkan
parents:
diff changeset
164
ec628ba33878 Uploaded source code for mrsFAST
calkan
parents:
diff changeset
165 if (hashTable[hv].locs == NULL)
ec628ba33878 Uploaded source code for mrsFAST
calkan
parents:
diff changeset
166 {
ec628ba33878 Uploaded source code for mrsFAST
calkan
parents:
diff changeset
167 sizeInc = 1;
ec628ba33878 Uploaded source code for mrsFAST
calkan
parents:
diff changeset
168 hashTable[hv].locs = getMem (sizeof(unsigned int)*2);
ec628ba33878 Uploaded source code for mrsFAST
calkan
parents:
diff changeset
169 hashTable[hv].locs[0]=1;
ec628ba33878 Uploaded source code for mrsFAST
calkan
parents:
diff changeset
170 hashTable[hv].locs[1]=location;
ec628ba33878 Uploaded source code for mrsFAST
calkan
parents:
diff changeset
171 }
ec628ba33878 Uploaded source code for mrsFAST
calkan
parents:
diff changeset
172 else
ec628ba33878 Uploaded source code for mrsFAST
calkan
parents:
diff changeset
173 {
ec628ba33878 Uploaded source code for mrsFAST
calkan
parents:
diff changeset
174 int size = hashTable[hv].locs[0];
ec628ba33878 Uploaded source code for mrsFAST
calkan
parents:
diff changeset
175 int i;
ec628ba33878 Uploaded source code for mrsFAST
calkan
parents:
diff changeset
176 unsigned int *tmp = getMem( (size + 2) * sizeof(unsigned int) );
ec628ba33878 Uploaded source code for mrsFAST
calkan
parents:
diff changeset
177
ec628ba33878 Uploaded source code for mrsFAST
calkan
parents:
diff changeset
178 for (i = 0; i <= size; i++)
ec628ba33878 Uploaded source code for mrsFAST
calkan
parents:
diff changeset
179 {
ec628ba33878 Uploaded source code for mrsFAST
calkan
parents:
diff changeset
180 tmp[i] = hashTable[hv].locs[i];
ec628ba33878 Uploaded source code for mrsFAST
calkan
parents:
diff changeset
181 }
ec628ba33878 Uploaded source code for mrsFAST
calkan
parents:
diff changeset
182 size++;
ec628ba33878 Uploaded source code for mrsFAST
calkan
parents:
diff changeset
183 tmp[0] = size;
ec628ba33878 Uploaded source code for mrsFAST
calkan
parents:
diff changeset
184 tmp[size] = location;
ec628ba33878 Uploaded source code for mrsFAST
calkan
parents:
diff changeset
185
ec628ba33878 Uploaded source code for mrsFAST
calkan
parents:
diff changeset
186 freeMem(hashTable[hv].locs, (hashTable[hv].locs[0]*(sizeof(unsigned int))));
ec628ba33878 Uploaded source code for mrsFAST
calkan
parents:
diff changeset
187 hashTable[hv].locs = tmp;
ec628ba33878 Uploaded source code for mrsFAST
calkan
parents:
diff changeset
188 }
ec628ba33878 Uploaded source code for mrsFAST
calkan
parents:
diff changeset
189 return sizeInc;
ec628ba33878 Uploaded source code for mrsFAST
calkan
parents:
diff changeset
190 }
ec628ba33878 Uploaded source code for mrsFAST
calkan
parents:
diff changeset
191 /**********************************************/
ec628ba33878 Uploaded source code for mrsFAST
calkan
parents:
diff changeset
192 void generateIHashTable(char *fileName, char *indexName)
ec628ba33878 Uploaded source code for mrsFAST
calkan
parents:
diff changeset
193 {
ec628ba33878 Uploaded source code for mrsFAST
calkan
parents:
diff changeset
194 double startTime = getTime();
ec628ba33878 Uploaded source code for mrsFAST
calkan
parents:
diff changeset
195 unsigned int hashTableSize = 0;
ec628ba33878 Uploaded source code for mrsFAST
calkan
parents:
diff changeset
196 unsigned int hashTableMaxSize = pow(4, WINDOW_SIZE);
ec628ba33878 Uploaded source code for mrsFAST
calkan
parents:
diff changeset
197 IHashTable *hashTable = getMem(sizeof(IHashTable)*hashTableMaxSize);
ec628ba33878 Uploaded source code for mrsFAST
calkan
parents:
diff changeset
198 char *refGenName;
ec628ba33878 Uploaded source code for mrsFAST
calkan
parents:
diff changeset
199 char *refGen;
ec628ba33878 Uploaded source code for mrsFAST
calkan
parents:
diff changeset
200 int refGenOff = 0;
ec628ba33878 Uploaded source code for mrsFAST
calkan
parents:
diff changeset
201 int i, hv, l, flag;
ec628ba33878 Uploaded source code for mrsFAST
calkan
parents:
diff changeset
202
ec628ba33878 Uploaded source code for mrsFAST
calkan
parents:
diff changeset
203
ec628ba33878 Uploaded source code for mrsFAST
calkan
parents:
diff changeset
204 for ( i = 0; i < hashTableMaxSize; i++)
ec628ba33878 Uploaded source code for mrsFAST
calkan
parents:
diff changeset
205 {
ec628ba33878 Uploaded source code for mrsFAST
calkan
parents:
diff changeset
206 hashTable[i].locs = NULL;
ec628ba33878 Uploaded source code for mrsFAST
calkan
parents:
diff changeset
207 }
ec628ba33878 Uploaded source code for mrsFAST
calkan
parents:
diff changeset
208
ec628ba33878 Uploaded source code for mrsFAST
calkan
parents:
diff changeset
209 //Loading Fasta File
ec628ba33878 Uploaded source code for mrsFAST
calkan
parents:
diff changeset
210 if (!initLoadingRefGenome(fileName))
ec628ba33878 Uploaded source code for mrsFAST
calkan
parents:
diff changeset
211 return;
ec628ba33878 Uploaded source code for mrsFAST
calkan
parents:
diff changeset
212 initSavingIHashTable(indexName);
ec628ba33878 Uploaded source code for mrsFAST
calkan
parents:
diff changeset
213
ec628ba33878 Uploaded source code for mrsFAST
calkan
parents:
diff changeset
214 fprintf(stdout, "Generating Index from %s", fileName);
ec628ba33878 Uploaded source code for mrsFAST
calkan
parents:
diff changeset
215 fflush(stdout);
ec628ba33878 Uploaded source code for mrsFAST
calkan
parents:
diff changeset
216
ec628ba33878 Uploaded source code for mrsFAST
calkan
parents:
diff changeset
217 char *prev = getMem (CONTIG_NAME_SIZE);
ec628ba33878 Uploaded source code for mrsFAST
calkan
parents:
diff changeset
218 prev[0]='\0';
ec628ba33878 Uploaded source code for mrsFAST
calkan
parents:
diff changeset
219
ec628ba33878 Uploaded source code for mrsFAST
calkan
parents:
diff changeset
220 do
ec628ba33878 Uploaded source code for mrsFAST
calkan
parents:
diff changeset
221 {
ec628ba33878 Uploaded source code for mrsFAST
calkan
parents:
diff changeset
222 flag = loadRefGenome (&refGen, &refGenName, &refGenOff);
ec628ba33878 Uploaded source code for mrsFAST
calkan
parents:
diff changeset
223
ec628ba33878 Uploaded source code for mrsFAST
calkan
parents:
diff changeset
224 if ( strcmp(prev, refGenName) != 0)
ec628ba33878 Uploaded source code for mrsFAST
calkan
parents:
diff changeset
225 {
ec628ba33878 Uploaded source code for mrsFAST
calkan
parents:
diff changeset
226 fprintf(stdout, "\n - %s ", refGenName);
ec628ba33878 Uploaded source code for mrsFAST
calkan
parents:
diff changeset
227 fflush(stdout);
ec628ba33878 Uploaded source code for mrsFAST
calkan
parents:
diff changeset
228 sprintf(prev, "%s", refGenName);
ec628ba33878 Uploaded source code for mrsFAST
calkan
parents:
diff changeset
229 }
ec628ba33878 Uploaded source code for mrsFAST
calkan
parents:
diff changeset
230 else
ec628ba33878 Uploaded source code for mrsFAST
calkan
parents:
diff changeset
231 {
ec628ba33878 Uploaded source code for mrsFAST
calkan
parents:
diff changeset
232 fprintf(stdout, ".");
ec628ba33878 Uploaded source code for mrsFAST
calkan
parents:
diff changeset
233 fflush(stdout);
ec628ba33878 Uploaded source code for mrsFAST
calkan
parents:
diff changeset
234 }
ec628ba33878 Uploaded source code for mrsFAST
calkan
parents:
diff changeset
235
ec628ba33878 Uploaded source code for mrsFAST
calkan
parents:
diff changeset
236 l = strlen(refGen) - WINDOW_SIZE;
ec628ba33878 Uploaded source code for mrsFAST
calkan
parents:
diff changeset
237
ec628ba33878 Uploaded source code for mrsFAST
calkan
parents:
diff changeset
238 for (i=0; i < l; i++)
ec628ba33878 Uploaded source code for mrsFAST
calkan
parents:
diff changeset
239 {
ec628ba33878 Uploaded source code for mrsFAST
calkan
parents:
diff changeset
240 hv = hashVal(refGen + i);
ec628ba33878 Uploaded source code for mrsFAST
calkan
parents:
diff changeset
241 if (hv != -1)
ec628ba33878 Uploaded source code for mrsFAST
calkan
parents:
diff changeset
242 {
ec628ba33878 Uploaded source code for mrsFAST
calkan
parents:
diff changeset
243 hashTableSize += addIHashTableLocation (hashTable, hv, i+1);
ec628ba33878 Uploaded source code for mrsFAST
calkan
parents:
diff changeset
244 }
ec628ba33878 Uploaded source code for mrsFAST
calkan
parents:
diff changeset
245 }
ec628ba33878 Uploaded source code for mrsFAST
calkan
parents:
diff changeset
246
ec628ba33878 Uploaded source code for mrsFAST
calkan
parents:
diff changeset
247 saveIHashTable(hashTable, hashTableSize, hashTableMaxSize, refGen, refGenName, refGenOff);
ec628ba33878 Uploaded source code for mrsFAST
calkan
parents:
diff changeset
248 freeIHashTableContent(hashTable, hashTableMaxSize);
ec628ba33878 Uploaded source code for mrsFAST
calkan
parents:
diff changeset
249 hashTableSize = 0;
ec628ba33878 Uploaded source code for mrsFAST
calkan
parents:
diff changeset
250 } while (flag);
ec628ba33878 Uploaded source code for mrsFAST
calkan
parents:
diff changeset
251
ec628ba33878 Uploaded source code for mrsFAST
calkan
parents:
diff changeset
252 freeMem(prev, CONTIG_NAME_SIZE);
ec628ba33878 Uploaded source code for mrsFAST
calkan
parents:
diff changeset
253 freeMem(hashTable, sizeof(IHashTable)*hashTableMaxSize);
ec628ba33878 Uploaded source code for mrsFAST
calkan
parents:
diff changeset
254
ec628ba33878 Uploaded source code for mrsFAST
calkan
parents:
diff changeset
255 finalizeLoadingRefGenome();
ec628ba33878 Uploaded source code for mrsFAST
calkan
parents:
diff changeset
256 finalizeSavingIHashTable();
ec628ba33878 Uploaded source code for mrsFAST
calkan
parents:
diff changeset
257
ec628ba33878 Uploaded source code for mrsFAST
calkan
parents:
diff changeset
258 fprintf(stdout, "\nDONE in %0.2fs!\n", (getTime()-startTime));
ec628ba33878 Uploaded source code for mrsFAST
calkan
parents:
diff changeset
259 }
ec628ba33878 Uploaded source code for mrsFAST
calkan
parents:
diff changeset
260
ec628ba33878 Uploaded source code for mrsFAST
calkan
parents:
diff changeset
261 /**********************************************/
ec628ba33878 Uploaded source code for mrsFAST
calkan
parents:
diff changeset
262 void finalizeLoadingIHashTable()
ec628ba33878 Uploaded source code for mrsFAST
calkan
parents:
diff changeset
263 {
ec628ba33878 Uploaded source code for mrsFAST
calkan
parents:
diff changeset
264 freeIHashTableContent(_ih_hashTable, _ih_maxHashTableSize);
ec628ba33878 Uploaded source code for mrsFAST
calkan
parents:
diff changeset
265 freeMem(_ih_hashTable, sizeof(IHashTable)* _ih_maxHashTableSize);
ec628ba33878 Uploaded source code for mrsFAST
calkan
parents:
diff changeset
266 freeMem(_ih_refGen, strlen(_ih_refGen)+1) ;
ec628ba33878 Uploaded source code for mrsFAST
calkan
parents:
diff changeset
267 freeMem(_ih_refGenName, strlen(_ih_refGenName)+1);
ec628ba33878 Uploaded source code for mrsFAST
calkan
parents:
diff changeset
268 fclose(_ih_fp);
ec628ba33878 Uploaded source code for mrsFAST
calkan
parents:
diff changeset
269 }
ec628ba33878 Uploaded source code for mrsFAST
calkan
parents:
diff changeset
270
ec628ba33878 Uploaded source code for mrsFAST
calkan
parents:
diff changeset
271 /**********************************************/
ec628ba33878 Uploaded source code for mrsFAST
calkan
parents:
diff changeset
272 int loadIHashTable(double *loadTime)
ec628ba33878 Uploaded source code for mrsFAST
calkan
parents:
diff changeset
273 {
ec628ba33878 Uploaded source code for mrsFAST
calkan
parents:
diff changeset
274 double startTime = getTime();
ec628ba33878 Uploaded source code for mrsFAST
calkan
parents:
diff changeset
275 unsigned char extraInfo = 0;
ec628ba33878 Uploaded source code for mrsFAST
calkan
parents:
diff changeset
276 short len;
ec628ba33878 Uploaded source code for mrsFAST
calkan
parents:
diff changeset
277 unsigned int refGenLength;
ec628ba33878 Uploaded source code for mrsFAST
calkan
parents:
diff changeset
278 unsigned int hashTableSize;
ec628ba33878 Uploaded source code for mrsFAST
calkan
parents:
diff changeset
279 unsigned int tmpSize;
ec628ba33878 Uploaded source code for mrsFAST
calkan
parents:
diff changeset
280 int tmp;
ec628ba33878 Uploaded source code for mrsFAST
calkan
parents:
diff changeset
281 int i=0,j=0;
ec628ba33878 Uploaded source code for mrsFAST
calkan
parents:
diff changeset
282
ec628ba33878 Uploaded source code for mrsFAST
calkan
parents:
diff changeset
283 if ( fread(&extraInfo, sizeof(extraInfo), 1, _ih_fp) != sizeof(extraInfo) )
ec628ba33878 Uploaded source code for mrsFAST
calkan
parents:
diff changeset
284 return 0;
ec628ba33878 Uploaded source code for mrsFAST
calkan
parents:
diff changeset
285
ec628ba33878 Uploaded source code for mrsFAST
calkan
parents:
diff changeset
286 freeIHashTableContent(_ih_hashTable, _ih_maxHashTableSize);
ec628ba33878 Uploaded source code for mrsFAST
calkan
parents:
diff changeset
287 freeMem(_ih_refGen, strlen(_ih_refGen)+1) ;
ec628ba33878 Uploaded source code for mrsFAST
calkan
parents:
diff changeset
288 freeMem(_ih_refGenName, strlen(_ih_refGenName)+1);
ec628ba33878 Uploaded source code for mrsFAST
calkan
parents:
diff changeset
289
ec628ba33878 Uploaded source code for mrsFAST
calkan
parents:
diff changeset
290 // Reading Chr Name
ec628ba33878 Uploaded source code for mrsFAST
calkan
parents:
diff changeset
291 tmp = fread(&len, sizeof(len), 1, _ih_fp);
ec628ba33878 Uploaded source code for mrsFAST
calkan
parents:
diff changeset
292 _ih_refGenName = getMem(sizeof(char)* (len+1));
ec628ba33878 Uploaded source code for mrsFAST
calkan
parents:
diff changeset
293 tmp = fread(_ih_refGenName, sizeof(char), len, _ih_fp);
ec628ba33878 Uploaded source code for mrsFAST
calkan
parents:
diff changeset
294 _ih_refGenName [len] ='\0';
ec628ba33878 Uploaded source code for mrsFAST
calkan
parents:
diff changeset
295
ec628ba33878 Uploaded source code for mrsFAST
calkan
parents:
diff changeset
296 tmp = fread(&_ih_refGenOff, sizeof (_ih_refGenOff), 1, _ih_fp);
ec628ba33878 Uploaded source code for mrsFAST
calkan
parents:
diff changeset
297
ec628ba33878 Uploaded source code for mrsFAST
calkan
parents:
diff changeset
298 // Reading Size and Content of Ref Genome
ec628ba33878 Uploaded source code for mrsFAST
calkan
parents:
diff changeset
299 tmp = fread(&refGenLength, sizeof(refGenLength), 1, _ih_fp);
ec628ba33878 Uploaded source code for mrsFAST
calkan
parents:
diff changeset
300 _ih_refGen = getMem(sizeof(char)*(refGenLength+1));
ec628ba33878 Uploaded source code for mrsFAST
calkan
parents:
diff changeset
301 tmp = fread(_ih_refGen, sizeof(char), refGenLength, _ih_fp);
ec628ba33878 Uploaded source code for mrsFAST
calkan
parents:
diff changeset
302 _ih_refGen[refGenLength]='\0';
ec628ba33878 Uploaded source code for mrsFAST
calkan
parents:
diff changeset
303
ec628ba33878 Uploaded source code for mrsFAST
calkan
parents:
diff changeset
304 //Reading Hashtable Size and Content
ec628ba33878 Uploaded source code for mrsFAST
calkan
parents:
diff changeset
305 tmp = fread(&hashTableSize, sizeof(hashTableSize), 1, _ih_fp);
ec628ba33878 Uploaded source code for mrsFAST
calkan
parents:
diff changeset
306
ec628ba33878 Uploaded source code for mrsFAST
calkan
parents:
diff changeset
307 unsigned int hv;
ec628ba33878 Uploaded source code for mrsFAST
calkan
parents:
diff changeset
308 unsigned char cnt=0;
ec628ba33878 Uploaded source code for mrsFAST
calkan
parents:
diff changeset
309 for (i=0; i<hashTableSize; i++)
ec628ba33878 Uploaded source code for mrsFAST
calkan
parents:
diff changeset
310 {
ec628ba33878 Uploaded source code for mrsFAST
calkan
parents:
diff changeset
311 tmp = fread(&hv, sizeof(hv), 1, _ih_fp);
ec628ba33878 Uploaded source code for mrsFAST
calkan
parents:
diff changeset
312 tmp = fread(&cnt, sizeof(cnt), 1, _ih_fp);
ec628ba33878 Uploaded source code for mrsFAST
calkan
parents:
diff changeset
313
ec628ba33878 Uploaded source code for mrsFAST
calkan
parents:
diff changeset
314 if (cnt>0)
ec628ba33878 Uploaded source code for mrsFAST
calkan
parents:
diff changeset
315 {
ec628ba33878 Uploaded source code for mrsFAST
calkan
parents:
diff changeset
316 tmpSize = cnt;
ec628ba33878 Uploaded source code for mrsFAST
calkan
parents:
diff changeset
317 }
ec628ba33878 Uploaded source code for mrsFAST
calkan
parents:
diff changeset
318 else
ec628ba33878 Uploaded source code for mrsFAST
calkan
parents:
diff changeset
319 {
ec628ba33878 Uploaded source code for mrsFAST
calkan
parents:
diff changeset
320 tmp = fread(&tmpSize, sizeof(tmpSize), 1, _ih_fp);
ec628ba33878 Uploaded source code for mrsFAST
calkan
parents:
diff changeset
321 }
ec628ba33878 Uploaded source code for mrsFAST
calkan
parents:
diff changeset
322
ec628ba33878 Uploaded source code for mrsFAST
calkan
parents:
diff changeset
323 _ih_hashTable[hv].locs = getMem( sizeof(unsigned int)* (tmpSize+1) );
ec628ba33878 Uploaded source code for mrsFAST
calkan
parents:
diff changeset
324 _ih_hashTable[hv].locs[0] = tmpSize;
ec628ba33878 Uploaded source code for mrsFAST
calkan
parents:
diff changeset
325
ec628ba33878 Uploaded source code for mrsFAST
calkan
parents:
diff changeset
326 for (j=1; j<=tmpSize; j++)
ec628ba33878 Uploaded source code for mrsFAST
calkan
parents:
diff changeset
327 tmp = fread(&(_ih_hashTable[hv].locs[j]), sizeof(_ih_hashTable[hv].locs[j]), 1, _ih_fp);
ec628ba33878 Uploaded source code for mrsFAST
calkan
parents:
diff changeset
328 }
ec628ba33878 Uploaded source code for mrsFAST
calkan
parents:
diff changeset
329 *loadTime = getTime()-startTime;
ec628ba33878 Uploaded source code for mrsFAST
calkan
parents:
diff changeset
330
ec628ba33878 Uploaded source code for mrsFAST
calkan
parents:
diff changeset
331 return 1;
ec628ba33878 Uploaded source code for mrsFAST
calkan
parents:
diff changeset
332 }
ec628ba33878 Uploaded source code for mrsFAST
calkan
parents:
diff changeset
333 /**********************************************/
ec628ba33878 Uploaded source code for mrsFAST
calkan
parents:
diff changeset
334 unsigned int *getIHashTableCandidates(int hv)
ec628ba33878 Uploaded source code for mrsFAST
calkan
parents:
diff changeset
335 {
ec628ba33878 Uploaded source code for mrsFAST
calkan
parents:
diff changeset
336 if ( hv != -1 )
ec628ba33878 Uploaded source code for mrsFAST
calkan
parents:
diff changeset
337 return _ih_hashTable[hv].locs;
ec628ba33878 Uploaded source code for mrsFAST
calkan
parents:
diff changeset
338 else
ec628ba33878 Uploaded source code for mrsFAST
calkan
parents:
diff changeset
339 return NULL;
ec628ba33878 Uploaded source code for mrsFAST
calkan
parents:
diff changeset
340 }
ec628ba33878 Uploaded source code for mrsFAST
calkan
parents:
diff changeset
341 /**********************************************/
ec628ba33878 Uploaded source code for mrsFAST
calkan
parents:
diff changeset
342 /**********************************************/
ec628ba33878 Uploaded source code for mrsFAST
calkan
parents:
diff changeset
343 /**********************************************/
ec628ba33878 Uploaded source code for mrsFAST
calkan
parents:
diff changeset
344 void configHashTable()
ec628ba33878 Uploaded source code for mrsFAST
calkan
parents:
diff changeset
345 {
ec628ba33878 Uploaded source code for mrsFAST
calkan
parents:
diff changeset
346 if (WINDOW_SIZE <= 14)
ec628ba33878 Uploaded source code for mrsFAST
calkan
parents:
diff changeset
347 {
ec628ba33878 Uploaded source code for mrsFAST
calkan
parents:
diff changeset
348 generateHashTable = &generateIHashTable;
ec628ba33878 Uploaded source code for mrsFAST
calkan
parents:
diff changeset
349 loadHashTable = &loadIHashTable;
ec628ba33878 Uploaded source code for mrsFAST
calkan
parents:
diff changeset
350 finalizeLoadingHashTable = &finalizeLoadingIHashTable;
ec628ba33878 Uploaded source code for mrsFAST
calkan
parents:
diff changeset
351 getCandidates = &getIHashTableCandidates;
ec628ba33878 Uploaded source code for mrsFAST
calkan
parents:
diff changeset
352 }
ec628ba33878 Uploaded source code for mrsFAST
calkan
parents:
diff changeset
353 else
ec628ba33878 Uploaded source code for mrsFAST
calkan
parents:
diff changeset
354 {
ec628ba33878 Uploaded source code for mrsFAST
calkan
parents:
diff changeset
355
ec628ba33878 Uploaded source code for mrsFAST
calkan
parents:
diff changeset
356
ec628ba33878 Uploaded source code for mrsFAST
calkan
parents:
diff changeset
357 }
ec628ba33878 Uploaded source code for mrsFAST
calkan
parents:
diff changeset
358 }
ec628ba33878 Uploaded source code for mrsFAST
calkan
parents:
diff changeset
359 /**********************************************/
ec628ba33878 Uploaded source code for mrsFAST
calkan
parents:
diff changeset
360 int initLoadingHashTable(char *fileName)
ec628ba33878 Uploaded source code for mrsFAST
calkan
parents:
diff changeset
361 {
ec628ba33878 Uploaded source code for mrsFAST
calkan
parents:
diff changeset
362 int i;
ec628ba33878 Uploaded source code for mrsFAST
calkan
parents:
diff changeset
363 unsigned char bsIndex;
ec628ba33878 Uploaded source code for mrsFAST
calkan
parents:
diff changeset
364 int tmp;
ec628ba33878 Uploaded source code for mrsFAST
calkan
parents:
diff changeset
365
ec628ba33878 Uploaded source code for mrsFAST
calkan
parents:
diff changeset
366 _ih_fp = fileOpen(fileName, "r");
ec628ba33878 Uploaded source code for mrsFAST
calkan
parents:
diff changeset
367
ec628ba33878 Uploaded source code for mrsFAST
calkan
parents:
diff changeset
368 if (_ih_fp == NULL)
ec628ba33878 Uploaded source code for mrsFAST
calkan
parents:
diff changeset
369 return 0;
ec628ba33878 Uploaded source code for mrsFAST
calkan
parents:
diff changeset
370
ec628ba33878 Uploaded source code for mrsFAST
calkan
parents:
diff changeset
371 tmp = fread(&bsIndex, sizeof(bsIndex), 1, _ih_fp);
ec628ba33878 Uploaded source code for mrsFAST
calkan
parents:
diff changeset
372 if (bsIndex)
ec628ba33878 Uploaded source code for mrsFAST
calkan
parents:
diff changeset
373 {
ec628ba33878 Uploaded source code for mrsFAST
calkan
parents:
diff changeset
374 fprintf(stdout, "Error: Wrong Type of Index indicated");
ec628ba33878 Uploaded source code for mrsFAST
calkan
parents:
diff changeset
375 return 0;
ec628ba33878 Uploaded source code for mrsFAST
calkan
parents:
diff changeset
376 }
ec628ba33878 Uploaded source code for mrsFAST
calkan
parents:
diff changeset
377
ec628ba33878 Uploaded source code for mrsFAST
calkan
parents:
diff changeset
378 tmp = fread(&WINDOW_SIZE, sizeof(WINDOW_SIZE), 1, _ih_fp);
ec628ba33878 Uploaded source code for mrsFAST
calkan
parents:
diff changeset
379
ec628ba33878 Uploaded source code for mrsFAST
calkan
parents:
diff changeset
380 configHashTable();
ec628ba33878 Uploaded source code for mrsFAST
calkan
parents:
diff changeset
381
ec628ba33878 Uploaded source code for mrsFAST
calkan
parents:
diff changeset
382 if (_ih_maxHashTableSize != pow(4, WINDOW_SIZE))
ec628ba33878 Uploaded source code for mrsFAST
calkan
parents:
diff changeset
383 {
ec628ba33878 Uploaded source code for mrsFAST
calkan
parents:
diff changeset
384
ec628ba33878 Uploaded source code for mrsFAST
calkan
parents:
diff changeset
385 if (_ih_hashTable != NULL)
ec628ba33878 Uploaded source code for mrsFAST
calkan
parents:
diff changeset
386 {
ec628ba33878 Uploaded source code for mrsFAST
calkan
parents:
diff changeset
387 freeIHashTableContent(_ih_hashTable, _ih_maxHashTableSize);
ec628ba33878 Uploaded source code for mrsFAST
calkan
parents:
diff changeset
388 freeMem(_ih_hashTable, sizeof(IHashTable)* _ih_maxHashTableSize);
ec628ba33878 Uploaded source code for mrsFAST
calkan
parents:
diff changeset
389 freeMem(_ih_refGen, strlen(_ih_refGen)+1) ;
ec628ba33878 Uploaded source code for mrsFAST
calkan
parents:
diff changeset
390 freeMem(_ih_refGenName, strlen(_ih_refGenName)+1);
ec628ba33878 Uploaded source code for mrsFAST
calkan
parents:
diff changeset
391 }
ec628ba33878 Uploaded source code for mrsFAST
calkan
parents:
diff changeset
392
ec628ba33878 Uploaded source code for mrsFAST
calkan
parents:
diff changeset
393 _ih_maxHashTableSize = pow(4, WINDOW_SIZE);
ec628ba33878 Uploaded source code for mrsFAST
calkan
parents:
diff changeset
394
ec628ba33878 Uploaded source code for mrsFAST
calkan
parents:
diff changeset
395 _ih_hashTable = getMem (sizeof(IHashTable) * _ih_maxHashTableSize);
ec628ba33878 Uploaded source code for mrsFAST
calkan
parents:
diff changeset
396 for (i=0; i<_ih_maxHashTableSize; i++)
ec628ba33878 Uploaded source code for mrsFAST
calkan
parents:
diff changeset
397 _ih_hashTable[i].locs = NULL;
ec628ba33878 Uploaded source code for mrsFAST
calkan
parents:
diff changeset
398 _ih_refGen = getMem(1);
ec628ba33878 Uploaded source code for mrsFAST
calkan
parents:
diff changeset
399 _ih_refGen[0]='\0';
ec628ba33878 Uploaded source code for mrsFAST
calkan
parents:
diff changeset
400 _ih_refGenName = getMem(1);
ec628ba33878 Uploaded source code for mrsFAST
calkan
parents:
diff changeset
401 _ih_refGenName[0] = '\0';
ec628ba33878 Uploaded source code for mrsFAST
calkan
parents:
diff changeset
402 }
ec628ba33878 Uploaded source code for mrsFAST
calkan
parents:
diff changeset
403
ec628ba33878 Uploaded source code for mrsFAST
calkan
parents:
diff changeset
404 return 1;
ec628ba33878 Uploaded source code for mrsFAST
calkan
parents:
diff changeset
405 }
ec628ba33878 Uploaded source code for mrsFAST
calkan
parents:
diff changeset
406 /**********************************************/
ec628ba33878 Uploaded source code for mrsFAST
calkan
parents:
diff changeset
407 char *getRefGenome()
ec628ba33878 Uploaded source code for mrsFAST
calkan
parents:
diff changeset
408 {
ec628ba33878 Uploaded source code for mrsFAST
calkan
parents:
diff changeset
409 return _ih_refGen;
ec628ba33878 Uploaded source code for mrsFAST
calkan
parents:
diff changeset
410
ec628ba33878 Uploaded source code for mrsFAST
calkan
parents:
diff changeset
411 }
ec628ba33878 Uploaded source code for mrsFAST
calkan
parents:
diff changeset
412 /**********************************************/
ec628ba33878 Uploaded source code for mrsFAST
calkan
parents:
diff changeset
413 char *getRefGenomeName()
ec628ba33878 Uploaded source code for mrsFAST
calkan
parents:
diff changeset
414 {
ec628ba33878 Uploaded source code for mrsFAST
calkan
parents:
diff changeset
415 return _ih_refGenName;
ec628ba33878 Uploaded source code for mrsFAST
calkan
parents:
diff changeset
416
ec628ba33878 Uploaded source code for mrsFAST
calkan
parents:
diff changeset
417 }
ec628ba33878 Uploaded source code for mrsFAST
calkan
parents:
diff changeset
418 /**********************************************/
ec628ba33878 Uploaded source code for mrsFAST
calkan
parents:
diff changeset
419 int getRefGenomeOffset()
ec628ba33878 Uploaded source code for mrsFAST
calkan
parents:
diff changeset
420 {
ec628ba33878 Uploaded source code for mrsFAST
calkan
parents:
diff changeset
421 return _ih_refGenOff;
ec628ba33878 Uploaded source code for mrsFAST
calkan
parents:
diff changeset
422
ec628ba33878 Uploaded source code for mrsFAST
calkan
parents:
diff changeset
423 }
ec628ba33878 Uploaded source code for mrsFAST
calkan
parents:
diff changeset
424 /**********************************************/
ec628ba33878 Uploaded source code for mrsFAST
calkan
parents:
diff changeset
425 HashTable *getHashTable()
ec628ba33878 Uploaded source code for mrsFAST
calkan
parents:
diff changeset
426 {
ec628ba33878 Uploaded source code for mrsFAST
calkan
parents:
diff changeset
427 return NULL;
ec628ba33878 Uploaded source code for mrsFAST
calkan
parents:
diff changeset
428 }