00001 /* dnaMarkov - stuff to build 1st, 2nd, 3rd, and coding 00002 * 3rd degree Markov models for DNA. */ 00003 00004 #ifndef DNAMARKOV_H 00005 #define DNAMARKOV_H 00006 00007 void dnaMark0(struct dnaSeq *seqList, double mark0[5], int slogMark0[5]); 00008 /* Figure out frequency of bases in input. Results go into 00009 * mark0 and optionally in scaled log form into slogMark0. 00010 * Order is N, T, C, A, G. (TCAG is our normal order) */ 00011 00012 void dnaMark1(struct dnaSeq *seqList, double mark0[5], int slogMark0[5], 00013 double mark1[5][5], int slogMark1[5][5]); 00014 /* Make up 1st order Markov model - probability that one nucleotide 00015 * will follow another. Input is sequence and 0th order Markov models. 00016 * Output is first order Markov model. slogMark1 can be NULL. */ 00017 00018 void dnaMark2(struct dnaSeq *seqList, double mark0[5], int slogMark0[5], 00019 double mark1[5][5], int slogMark1[5][5], 00020 double mark2[5][5][5], int slogMark2[5][5][5]); 00021 /* Make up 1st order Markov model - probability that one nucleotide 00022 * will follow the previous two. */ 00023 00024 void dnaMarkTriple(struct dnaSeq *seqList, 00025 double mark0[5], int slogMark0[5], 00026 double mark1[5][5], int slogMark1[5][5], 00027 double mark2[5][5][5], int slogMark2[5][5][5], 00028 int offset, int advance, int earlyEnd); 00029 /* Make up a table of how the probability of a nucleotide depends on the previous two. 00030 * Depending on offset and advance parameters this could either be a straight 2nd order 00031 * Markov model, or a model for a particular coding frame. */ 00032 00033 #endif /* DNAMARKOV_H */ 00034
1.5.2