/******************************************************************* * Last edited on 2005-05-27 18:03:26 by stolfi * * * * pre.h - Programa com o cabecalho das funcoes do arquivo pre.c * * UFF - Universidade Federal Fluminense * * Desenvolvido por: Renatha Oliva Capua * * Orientadores: Helena Cristina da Gama Leitao * * Jorge Stolfi * * Data: 12/04/2005 * *******************************************************************/ #include /* arquivo que contem algumas funcoes de string e arquivo */ #define COL 5 /* tamanho da coluna na matriz de tons de cinza */ #define LIN 10 /* tamanho da linha na matriz de tons de cinza */ /* struct que guarda todos os eventos aceitos como validos para as sequencias analisadas na fase de constru�o. Eles sao carregados do arquivo com os parametros de entrada */ typedef struct TEVENTO{ char *evento; /* guarda o rotulo do evento */ int num_particao; /* quantidade de particoes que o evento possuira quando usado no teorema de Bayes */ char **particao; /* vetor com os rotulos de como os eventos devem ser particionados para a aplicacao da formula de Bayes */ double priori; /* Probabilidade "a priori" do evento. */ }tevento; /* struct usada para guardar um evento e sua probabilidade de ocorrencia para uma determinada tupla */ typedef struct TPROB{ char *evento; /* guarda o rotulo de um determinado evento */ double valor; /* guarda o valor da probabilidade para esse determinado evento */ }tprob; /* struct usada para caregar os dados do arquivo com as frequencias de ocorrencia das triplas no arquivo de treinamento, posteriormente o valor da frequencia serah transformada em probabilidade */ typedef struct TFREQ{ char *tupla; /* guarda o rotulo da tripla */ tprob *prob; /* aponta para uma fila onde estao guardados os eventos validos com suas respectivas probabilidades para esta tupla */ }tfreq; /* struct que guarda o valor dos dados de uma tupla da sequencia de entrada. Serah usado para montar uma fila que guardarah os dados de cada tupla da sequencia de entrada na ordem em que aparecem no arquivo, para a construcao da matriz em tons de cinza*/ typedef struct TNO{ char *evento; /* rotulo do evento de maior probabilidade dentre todos os considerados para a tupla */ double prob; /* valor da maior probabilidade dos eventos considerados para a tupla */ double prob_exon; /* guarda a probabilidade da tupla pertencer ao evento rotulado como exon */ struct TNO *prox; /* ponteiro para o proximo da lista */ }tno; /* variaveis usadas para obtencao de tempo */ struct tms tempoi, tempof; void ler_param(char *file_param, int *e, int *x, tevento **event, double tm_coding, double tm_intron); void ler_seq(char *nome_arq, int *tam, char **seq); double get_prob_evento_a_priori(char *evento, double tm_coding, double tm_intron); int conta_pontos(char *s); void extrai_evento_e_particao(char *ev_pontuado, int M, char **evento, int *npartes, char ***parte); void get_freqi(char *tupla, char *evento, double freq, double *cont_ia, double *cont_it, double *cont_ic, double *cont_ig); int criar_vetor(int K, tfreq **vfreq, int tam_vfreq); void desaloca_vfreq(tfreq **vfreq, int tam_vfreq); void carregar_vfreq(char *file_freq, int K, tfreq **vfreq, int *tam_vfreq); double get_freq_tupla(char *tupla, char *evento, int tam_vfreq, tfreq *vfreq); void calcular_ev_prob( int M, char *tupla, int tam_vfreq1, tfreq *vfreq1, int tam_vfreq2, tfreq *vfreq2, int tam_vfreq3, tfreq *vfreq3, int NE, tevento *event, double *ev_prob /* (Saida) probabilidades estimadas dos eventos. */ ); void condensar_prob(int NE, tevento *event, double *ev_prob, int meio, double *probs); void analisar_bas( int tam_bas, char *bas, tfreq *vfreq1, int tam_vfreq1, tfreq *vfreq2, int tam_vfreq2, tfreq *vfreq3, int tam_vfreq3, int M, int NE, tevento *event, double *probs ); void escrever_cabecalho(FILE *pt_arq, int com_gab, int hifens); void escrever_bas_probs( char *est_file, char *ert_file, int tam_bas, char *bas, int tam_gab, char *gab, double *probs ); void calcular_escore( double **escore_iefg, double **escore_ic, double **escore_efg, double *probs, char *gab, int tam_gab, int tipo ); void escrever_cabecalho_escore(FILE *pt_arq, int linha, int tipo_escore); void escrever_escore( char *nome_arq, double *escore_iefg, double *escore_ic, double *escore_efg, int tipo ); void escrever_matriz_iefg(FILE **pt, double *matriz, int tipo); void escrever_matriz_ic(FILE **pt, double *matriz, int tipo); void escrever_matriz_efg(FILE **pt, double *matriz, int tipo);