Mercurial > repos > siyuan > prada
diff pyPRADA_1.2/tools/bwa-0.5.7-mh/bwt_gen/bwt_gen.h @ 0:acc2ca1a3ba4
Uploaded
author | siyuan |
---|---|
date | Thu, 20 Feb 2014 00:44:58 -0500 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/pyPRADA_1.2/tools/bwa-0.5.7-mh/bwt_gen/bwt_gen.h Thu Feb 20 00:44:58 2014 -0500 @@ -0,0 +1,105 @@ +/* + + BWTConstruct.h BWT-Index Construction + + This module constructs BWT and auxiliary data structures. + + Copyright (C) 2004, Wong Chi Kwong. + + This program is free software; you can redistribute it and/or + modify it under the terms of the GNU General Public License + as published by the Free Software Foundation; either version 2 + of the License, or (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + +*/ + +#ifndef BWT_GEN_H +#define BWT_GEN_H + +#define ALPHABET_SIZE 4 +#define BIT_PER_CHAR 2 +#define CHAR_PER_WORD 16 +#define CHAR_PER_BYTE 4 + +#define BITS_IN_WORD 32 +#define BITS_IN_BYTE 8 +#define BYTES_IN_WORD 4 + +#define ALL_ONE_MASK 0xFFFFFFFF +#define DNA_OCC_CNT_TABLE_SIZE_IN_WORD 65536 + +#define BITS_PER_OCC_VALUE 16 +#define OCC_VALUE_PER_WORD 2 +#define OCC_INTERVAL 256 +#define OCC_INTERVAL_MAJOR 65536 + +#define TRUE 1 +#define FALSE 0 + +#define BWTINC_INSERT_SORT_NUM_ITEM 7 + +#define average(value1, value2) ( ((value1) & (value2)) + ((value1) ^ (value2)) / 2 ) +#define min(value1, value2) ( ((value1) < (value2)) ? (value1) : (value2) ) +#define max(value1, value2) ( ((value1) > (value2)) ? (value1) : (value2) ) +#define med3(a, b, c) ( a<b ? (b<c ? b : a<c ? c : a) : (b>c ? b : a>c ? c : a)) +#define swap(a, b, t); t = a; a = b; b = t; +#define truncateLeft(value, offset) ( (value) << (offset) >> (offset) ) +#define truncateRight(value, offset) ( (value) >> (offset) << (offset) ) +#define DNA_OCC_SUM_EXCEPTION(sum) ((sum & 0xfefefeff) == 0) + +typedef struct SaIndexRange { + unsigned int startSaIndex; + unsigned int endSaIndex; +} SaIndexRange; + +typedef struct BWT { + unsigned int textLength; // length of the text + unsigned int saInterval; // interval between two SA values stored explicitly + unsigned int inverseSaInterval; // interval between two inverse SA stored explicitly + unsigned int inverseSa0; // SA-1[0] + unsigned int *cumulativeFreq; // cumulative frequency + unsigned int *bwtCode; // BWT code + unsigned int *occValue; // Occurrence values stored explicitly + unsigned int *occValueMajor; // Occurrence values stored explicitly + unsigned int *saValue; // SA values stored explicitly + unsigned int *inverseSa; // Inverse SA stored explicitly + SaIndexRange *saIndexRange; // SA index range + int saIndexRangeNumOfChar; // Number of characters indexed in SA index range + unsigned int *saValueOnBoundary; // Pre-calculated frequently referred data + unsigned int *decodeTable; // For decoding BWT by table lookup + unsigned int decodeTableGenerated; // == TRUE if decode table is generated on load and will be freed + unsigned int bwtSizeInWord; // Temporary variable to hold the memory allocated + unsigned int occSizeInWord; // Temporary variable to hold the memory allocated + unsigned int occMajorSizeInWord; // Temporary variable to hold the memory allocated + unsigned int saValueSize; // Temporary variable to hold the memory allocated + unsigned int inverseSaSize; // Temporary variable to hold the memory allocated + unsigned int saIndexRangeSize; // Temporary variable to hold the memory allocated +} BWT; + +typedef struct BWTInc { + BWT *bwt; + unsigned int numberOfIterationDone; + unsigned int *cumulativeCountInCurrentBuild; + unsigned int availableWord; + unsigned int targetTextLength; + float targetNBit; + unsigned int buildSize; + unsigned int initialMaxBuildSize; + unsigned int incMaxBuildSize; + unsigned int firstCharInLastIteration; + unsigned int *workingMemory; + unsigned int *packedText; + unsigned char *textBuffer; + unsigned int *packedShift; +} BWTInc; + +#endif