📄 debug_funcs.c
字号:
#include <stdlib.h>#include <stdio.h>#include "structs.h"void dump_align_matrix(int nr_rows, int nr_cols, struct align_mtx_element_s *mtx){ int i,j; struct align_mtx_element_s *mtx_tmp; mtx_tmp = mtx; printf("alignment matrix dump:\n"); printf("nr rows: %d\n", nr_rows); printf("nr columns: %d\n", nr_cols); printf("scores:\n"); for(i = 0; i < nr_rows; i++) { for(j = 0; j < nr_cols; j++) { printf("%d ", mtx_tmp->score); mtx_tmp++; } printf("\n"); } printf("\n\n"); mtx_tmp = mtx; printf("lasts:\n"); for(i = 0; i < nr_rows; i++) { for(j = 0; j < nr_cols; j++) { printf("%c ", mtx->last); mtx++; } printf("\n"); } printf("\n");}void dump_trans_matrix(int nr_rows, int nr_cols, double *mtx){ int i,j; printf("transition matrix dump:\n"); printf("nr rows: %d\n", nr_rows); printf("nr columns: %d\n", nr_cols); for(i = 0; i < nr_rows; i++) { for(j = 0; j < nr_cols; j++) { printf("%f ", *mtx); mtx++; } printf("\n"); } printf("\n");}void dump_int_trans_matrix(int nr_rows, int nr_cols, int *mtx){ int i,j; printf("transition matrix dump:\n"); printf("nr rows: %d\n", nr_rows); printf("nr columns: %d\n", nr_cols); for(i = 0; i < nr_rows; i++) { for(j = 0; j < nr_cols; j++) { printf("%d ", *mtx); mtx++; } printf("\n"); } printf("\n");}void dump_emiss_matrix(int nr_rows, int nr_cols, double *mtx){ int i,j; printf("emission matrix dump:\n"); for(i = 0; i < nr_rows; i++) { for(j = 0; j < nr_cols; j++) { printf("%f ", *mtx); mtx++; } printf("\n"); } printf("\n");}void dump_post_prob_matrix(int nr_rows, int nr_cols, double *mtx){ int i,j; printf("posterior probability matrix dump:\n"); for(i = 0; i < nr_rows; i++) { for(j = 0; j < nr_cols; j++) { printf("%f ", *mtx); mtx++; } printf("\n"); } printf("\n");}void dump_forward_matrix(int nr_rows, int nr_cols, struct forward_s *mtx){ int i,j; printf("forward matrix dump:\n"); for(i = 0; i < nr_rows; i++) { for(j = 0; j < nr_cols; j++) { printf("%f ", mtx->prob); mtx++; } printf("\n"); } printf("\n");}void dump_viterbi_matrix(int nr_rows, int nr_cols, struct viterbi_s *mtx){ int i,j; struct viterbi_s *mtx_2; mtx_2 = mtx; printf("viterbi matrix dump probs:\n"); for(i = 0; i < nr_rows; i++) { for(j = 0; j < nr_cols; j++) { //printf("%d ", mtx->prev); printf("%f ", mtx->prob); mtx++; } printf("\n"); } printf("\n"); printf("viterbi matrix dump prevs:\n"); for(i = 0; i < nr_rows; i++) { printf("row: %d\n", i); for(j = 0; j < nr_cols; j++) { printf("col: %d = %d \n", j, mtx_2->prev); //printf("%f ", mtx->prob); mtx_2++; } printf("nr_cols = %d\n", j); printf("\n"); } printf("\n");}void dump_one_best_matrix(int nr_rows, int nr_cols, struct one_best_s *mtx){ int i,j; printf("one best matrix dump:\n"); printf("%4d ", 0); for(j = 0; j < nr_cols; j++) { printf("%8d ", j); } printf("\n"); for(i = 0; i < nr_rows; i++) { printf("%4d ", i); for(j = 0; j < nr_cols; j++) { printf("%f ", mtx->prob); mtx++; } printf("\n"); } printf("\n");}void dump_backward_matrix(int nr_rows, int nr_cols, struct backward_s *mtx){ int i,j; printf("backward matrix dump:\n"); for(i = 0; i < nr_rows; i++) { for(j = 0; j < nr_cols; j++) { printf("%f ", mtx->prob); mtx++; } printf("\n"); } printf("\n");}void dump_scaling_array(int len, double *mtx){ int i; printf("scaling array dump\n"); for(i = 0; i < len; i++) { printf("%d: %f ", i, *mtx); mtx++; } printf("\n");}void dump_from_trans_array(int nr_v, struct path_element **array){ int i; struct path_element *cur; printf("\nfrom_trans_array_dump:\n"); printf("nr_v = %d\n", nr_v); for(i = 0; i < nr_v; i++) { if((*(array + i))->vertex == END) { printf("no transitions to vertex %d\n", i); } else { printf("paths to vertex %d:\n", i); cur = *(array + i); while(cur->vertex != END) { printf("%d ", cur->vertex); while(cur->next != NULL) { cur = cur->next; printf("%d ", cur->vertex); } printf("%d ", i); printf("\n"); cur++; } } } printf("\n");}void dump_subst_mtx(double *mtx, int a_size){ int i,j; int nr_rows = a_size + 1; int nr_cols = a_size; printf("substitution matrix dump:\n"); printf("nr rows: %d\n", nr_rows); printf("nr columns: %d\n", nr_cols); for(i = 0; i < nr_rows; i++) { for(j = 0; j < nr_cols; j++) { printf("%f ", *mtx); mtx++; } printf("\n"); } printf("\n");}void dump_to_trans_array(int nr_v, struct path_element **array){ int i; struct path_element *cur; printf("\nto_trans_array_dump:\n"); printf("nr_v = %d\n", nr_v); for(i = 0; i < nr_v; i++) { if((*(array + i))->vertex == END) { printf("no transitions from vertex %d\n", i); } else { printf("paths from vertex %d:\n", i); cur = *(array + i); while(cur->vertex != END) { printf("%d ", i); printf("%d ", cur->vertex); while(cur->next != NULL) { cur = cur->next; printf("%d ", cur->vertex); } printf("\n"); cur++; } } } printf("\n");}void dump_T_matrix(int nr_rows, int nr_cols, double *mtx){ int i,j; printf("T matrix dump:\n"); printf("nr rows: %d\n", nr_rows); printf("nr columns: %d\n", nr_cols); for(i = 0; i < nr_rows; i++) { for(j = 0; j < nr_cols; j++) { printf("%f ", *mtx); mtx++; } printf("\n"); } printf("\n");}void dump_E_matrix(int nr_rows, int nr_cols, double *mtx){ int i,j; printf("E matrix dump:\n"); printf("nr rows: %d\n", nr_rows); printf("nr columns: %d\n", nr_cols); for(i = 0; i < nr_rows; i++) { for(j = 0; j < nr_cols; j++) { printf("%f ", *mtx); mtx++; } printf("\n"); } printf("\n");}/* dumps most probable state path for given string (misses end state) */void dump_viterbi_path(struct viterbi_s *cur, struct hmm_s *hmmp, struct viterbi_s *viterbi_mtxp, int row, int row_size){ struct path_element *p_el; if(cur->prev == 0) { p_el = cur->prevp; printf("0 "); while(p_el->next != NULL) { printf("%d ", p_el->vertex); p_el++; } } else { dump_viterbi_path(viterbi_mtxp + get_mtx_index(row-1, cur->prev, row_size), hmmp, viterbi_mtxp, row-1, row_size); p_el = cur->prevp; printf("%d ", cur->prev); while(p_el->next != NULL) { p_el++; printf("%d ", p_el->vertex); } }}void dump_viterbi_label_path(struct viterbi_s *cur, struct hmm_s *hmmp, struct viterbi_s *viterbi_mtxp, int row, int row_size){ struct path_element *p_el; if(cur->prev == 0) { p_el = cur->prevp; printf("0 "); while(p_el->next != NULL) { printf("%c ", *(hmmp->vertex_labels + p_el->vertex)); p_el++; } } else { dump_viterbi_label_path(viterbi_mtxp + get_mtx_index(row-1, cur->prev, row_size), hmmp, viterbi_mtxp, row-1, row_size); p_el = cur->prevp; printf("%c ", *(hmmp->vertex_labels + (int)(cur->prev))); //printf("%d ", (int)(cur->prev)); while(p_el->next != NULL) { p_el++; printf("%c ", *(hmmp->vertex_labels + p_el->vertex)); } }}void dump_modules(struct hmm_s *hmmp){ int i,j; printf("\nModule dump:\n"); for(i = 0 ; i < hmmp->nr_m; i++) { printf("module: %s", (*(hmmp->modules + i))->name); printf("nr_v: %d\n", (*(hmmp->modules + i))->nr_v); printf("vertices: "); for(j = 0; j < (*(hmmp->modules + i))->nr_v;j++) { printf("%d ",*(((*(hmmp->modules + i))->vertices) + j)); } printf("\n"); } }void dump_multi_modules(struct hmm_multi_s *hmmp){ int i,j; printf("\nModule dump:\n"); for(i = 0 ; i < hmmp->nr_m; i++) { printf("module: %s", (*(hmmp->modules + i))->name); printf("nr_v: %d\n", (*(hmmp->modules + i))->nr_v); printf("vertices: "); for(j = 0; j < (*(hmmp->modules + i))->nr_v;j++) { printf("%d ",*(((*(hmmp->modules + i))->vertices) + j)); } printf("\n"); } }void dump_distrib_groups(int *distrib_groups, int nr_d){ int i,j; printf("\ndistribution groups dump:\n"); for(i = 0 ; i < nr_d; i++) { printf("Group %d: ", i+1); while(1) { if(*distrib_groups == END) { distrib_groups++; printf("\n"); break; } else { printf("%d ", *distrib_groups); distrib_groups++; } } printf("\n"); } printf("\n");}void dump_trans_tie_groups(struct transition_s *trans_tie_groups, int nr_ttg){ int i,j; printf("\ntrans tie groups dump:\n"); for(i = 0 ; i < nr_ttg; i++) { printf("Tie %d: ", i+1); while(1) { if(trans_tie_groups->from_v == END) { trans_tie_groups++; printf("\n"); break; } else { printf("%d->%d ", trans_tie_groups->from_v, trans_tie_groups->to_v); trans_tie_groups++; } } printf("\n"); } printf("\n");}void dump_prior_struct(struct emission_dirichlet_s *emission_priorsp){ int i,j; double *mtx = emission_priorsp->prior_values; printf("prifile: %s\n", emission_priorsp->name); printf("nr components: %d\n", emission_priorsp->nr_components); printf("q_values: "); for(i = 0; i < emission_priorsp->nr_components; i++) { printf("%f ", *((emission_priorsp->q_values) + i)); } printf("\n"); printf("alpha_sums: "); for(i = 0; i < emission_priorsp->nr_components; i++) { printf("%f ", *((emission_priorsp->alpha_sums) + i)); } printf("\n"); printf("alpha_values:\n"); for(i = 0; i < emission_priorsp->nr_components; i++) { for(j = 0; j < emission_priorsp->alphabet_size; j++) { printf("%f ", *mtx); mtx++; } printf("\n"); } printf("\n"); printf("logbeta_values: "); for(i = 0; i < emission_priorsp->nr_components; i++) { printf("%f ", *((emission_priorsp->logbeta_values) + i)); } printf("\n");}void dump_silent_vertices(struct hmm_s *hmmp){ int i; printf("silent vertices dump: "); for(i = 0;;i++) { if(*(hmmp->silent_vertices + i) == END) { break; } else { printf("%d ", *(hmmp->silent_vertices + i)); } } printf("\n");}void dump_silent_vertices_multi(struct hmm_multi_s *hmmp){ int i; printf("silent vertices dump: "); for(i = 0;;i++) { if(*(hmmp->silent_vertices + i) == END) { break; } else { printf("%d ", *(hmmp->silent_vertices + i)); } } printf("\n");}void dump_locked_vertices(struct hmm_s *hmmp){ int i; printf("locked vertices dump: "); for(i = 0;;i++) { if(*(hmmp->locked_vertices + i) == END) { break; } else { printf("%d ", *(hmmp->locked_vertices + i)); } } printf("\n");}void dump_seq(struct letter_s *seq){ int i; while(seq->letter[0] != '\0') { i = 0; while(seq->letter[i] != '\0') { printf("%c", seq->letter[i]); i++; } printf(";"); seq++; } printf("\n");}void dump_seqs(struct sequences_s *seq_infop)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -