typedef struct _bitblock bitblock;
-/* Byte array for fast convertion of binary blocks back to DNA. */
-char *bin2dna[256] = {
- "AAAA", "AAAC", "AAAG", "AAAT", "AACA", "AACC", "AACG", "AACT",
- "AAGA", "AAGC", "AAGG", "AAGT", "AATA", "AATC", "AATG", "AATT",
- "ACAA", "ACAC", "ACAG", "ACAT", "ACCA", "ACCC", "ACCG", "ACCT",
- "ACGA", "ACGC", "ACGG", "ACGT", "ACTA", "ACTC", "ACTG", "ACTT",
- "AGAA", "AGAC", "AGAG", "AGAT", "AGCA", "AGCC", "AGCG", "AGCT",
- "AGGA", "AGGC", "AGGG", "AGGT", "AGTA", "AGTC", "AGTG", "AGTT",
- "ATAA", "ATAC", "ATAG", "ATAT", "ATCA", "ATCC", "ATCG", "ATCT",
- "ATGA", "ATGC", "ATGG", "ATGT", "ATTA", "ATTC", "ATTG", "ATTT",
- "CAAA", "CAAC", "CAAG", "CAAT", "CACA", "CACC", "CACG", "CACT",
- "CAGA", "CAGC", "CAGG", "CAGT", "CATA", "CATC", "CATG", "CATT",
- "CCAA", "CCAC", "CCAG", "CCAT", "CCCA", "CCCC", "CCCG", "CCCT",
- "CCGA", "CCGC", "CCGG", "CCGT", "CCTA", "CCTC", "CCTG", "CCTT",
- "CGAA", "CGAC", "CGAG", "CGAT", "CGCA", "CGCC", "CGCG", "CGCT",
- "CGGA", "CGGC", "CGGG", "CGGT", "CGTA", "CGTC", "CGTG", "CGTT",
- "CTAA", "CTAC", "CTAG", "CTAT", "CTCA", "CTCC", "CTCG", "CTCT",
- "CTGA", "CTGC", "CTGG", "CTGT", "CTTA", "CTTC", "CTTG", "CTTT",
- "GAAA", "GAAC", "GAAG", "GAAT", "GACA", "GACC", "GACG", "GACT",
- "GAGA", "GAGC", "GAGG", "GAGT", "GATA", "GATC", "GATG", "GATT",
- "GCAA", "GCAC", "GCAG", "GCAT", "GCCA", "GCCC", "GCCG", "GCCT",
- "GCGA", "GCGC", "GCGG", "GCGT", "GCTA", "GCTC", "GCTG", "GCTT",
- "GGAA", "GGAC", "GGAG", "GGAT", "GGCA", "GGCC", "GGCG", "GGCT",
- "GGGA", "GGGC", "GGGG", "GGGT", "GGTA", "GGTC", "GGTG", "GGTT",
- "GTAA", "GTAC", "GTAG", "GTAT", "GTCA", "GTCC", "GTCG", "GTCT",
- "GTGA", "GTGC", "GTGG", "GTGT", "GTTA", "GTTC", "GTTG", "GTTT",
- "TAAA", "TAAC", "TAAG", "TAAT", "TACA", "TACC", "TACG", "TACT",
- "TAGA", "TAGC", "TAGG", "TAGT", "TATA", "TATC", "TATG", "TATT",
- "TCAA", "TCAC", "TCAG", "TCAT", "TCCA", "TCCC", "TCCG", "TCCT",
- "TCGA", "TCGC", "TCGG", "TCGT", "TCTA", "TCTC", "TCTG", "TCTT",
- "TGAA", "TGAC", "TGAG", "TGAT", "TGCA", "TGCC", "TGCG", "TGCT",
- "TGGA", "TGGC", "TGGG", "TGGT", "TGTA", "TGTC", "TGTG", "TGTT",
- "TTAA", "TTAC", "TTAG", "TTAT", "TTCA", "TTCC", "TTCG", "TTCT",
- "TTGA", "TTGC", "TTGG", "TTGT", "TTTA", "TTTC", "TTTG", "TTTT"
-};
-
/* Function declarations. */
void run_scan( int argc, char *argv[] );
void print_usage();
bitblock *bitblock_new();
uint blocks2motif( uchar bin1, uchar bin2, ushort dist );
void count_array_print( uint *count_array, size_t nmemb, size_t cutoff );
-void motif_print( uint motif, uint count );
void bitblock_list_print( list_sl *list );
void bitblock_print( bitblock *out );
{
block2 = ( bitblock * ) next_node->val;
-// printf( "block1: %s block2: %s dist: %d\n", bin2dna[ block1->bin ], bin2dna[ block2->bin ], dist ); /* DEBUG */
-
if ( ! block2->hasN )
{
motif_bin = blocks2motif( block1->bin, block2->bin, dist );
- // motif_print( motif_bin, 0 ); /* DEBUG */
// bitblock_list_print( list ); /* DEBUG */
count_array[ motif_bin ]++;
motif |= dist;
-// motif_print( motif, 0 ); /* DEBUG */
-
return motif;
}
count = count_array[ i ];
if ( count >= cutoff ) {
- motif_print( motif, count );
+ printf( "%u\t%u\n", motif, count );
}
}
}
-void motif_print( uint motif, uint count )
-{
- /* Martin A. Hansen, September 2008 */
-
- /* Converts a binary encoded bipartite motif */
- /* into DNA and output the motif, distance and */
- /* count seperated by tabs: */
- /* BLOCK1 \t BLOCK2 \t DIST \t COUNT */
-
- uchar bin1 = 0;
- uchar bin2 = 0;
- ushort dist = 0;
-
- // printf( "%d\t", motif ); /* DEBUG */
-
- dist = ( ushort ) motif & BLOCK_MASK;
-
- motif >>= sizeof( uchar ) * BITS_IN_BYTE;
-
- bin2 = ( uchar ) motif;
-
- motif >>= sizeof( uchar ) * BITS_IN_BYTE;
-
- bin1 = ( uchar ) motif;
-
- printf( "%s\t%s\t%d\t%d\n", bin2dna[ bin1 ], bin2dna[ bin2 ], dist, count );
-}
-
-
-void bitblock_list_print( list_sl *list )
-{
- /* Martin A. Hansen, September 2008 */
-
- /* Debug function to print all blocks in a list. */
-
- node_sl *node = NULL;
-
- printf( "\nbitblock_list_print:\n" );
-
- for ( node = list->first; node != NULL; node = node->next ) {
- bitblock_print( ( bitblock * ) node->val );
- }
-}
-
-
-void bitblock_print( bitblock *out )
-{
- /* Martin A. Hansen, September 2008 */
-
- /* Debug function to print a given block. */
-
- printf( "bin: %d dna: %s hasN: %d\n", out->bin, bin2dna[ ( int ) out->bin ], out->hasN );
-}
-
-
/* >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> UNIT TESTS <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< */