void ppSanger(char *databaseDir, char *pairFileName)
/* ppSanger - Analyse paired plasmid reads from Sanger and make pairs file.. */
{
char readFile[512], insertFile[512], rangeFile[512];
struct hash *rangeHash = newHash(7);
struct hash *pairHash = newHash(19);
struct sangPair *pairList, *pair;
struct sangRange *rangeList, *range;
struct sangRead *readList, *read;

sprintf(readFile, "%s/TBL_INSERT_FILE", databaseDir);
sprintf(insertFile, "%s/TBL_INSERT_LENGTH", databaseDir);
sprintf(rangeFile, "%s/TBL_LENGTH_RANGE", databaseDir);

rangeList = readRanges(rangeFile, rangeHash);
pairList = readPairs(insertFile, pairHash, rangeHash);
readList = readReads(readFile, pairHash);
writePairs(pairList, pairFileName);
}
KmerHash::KmerHash(int K, string genomePath, string exonBoundaryPath, string readPath) {
    this -> K = K;
    this -> readLength = -1;
    mask = 0;
    for(int i = 0; i < K; i++) {
        mask = (mask << 2) + 3;
    }
    NW = 0;
    NG = 0;
    NE.clear();
    kmerCount.clear();
    kmerTable.clear();
    geneBoundary.clear();

    readReads(readPath);
    readGenome(exonBoundaryPath);
    buildKmerTable(genomePath);
    mergeKmerTable();
}