📄 ghmm_internals.h
字号:
/********************************************************************************* This file is part of the General Hidden Markov Model Library,* GHMM version 0.8_beta1, see http://ghmm.org** Filename: ghmm/ghmm/logging.c* Authors: Janne Grunau** Copyright (C) 1998-2004 Alexander Schliep * Copyright (C) 1998-2001 ZAIK/ZPR, Universitaet zu Koeln* Copyright (C) 2002-2004 Max-Planck-Institut fuer Molekulare Genetik, * Berlin* * Contact: schliep@ghmm.org ** This library is free software; you can redistribute it and/or* modify it under the terms of the GNU Library General Public* License as published by the Free Software Foundation; either* version 2 of the License, or (at your option) any later version.** This library 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* Library General Public License for more details.** You should have received a copy of the GNU Library General Public* License along with this library; if not, write to the Free* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA*** This file is version $Revision: 1930 $ * from $Date: 2007-10-30 15:51:17 +0100 (Tue, 30 Oct 2007) $* last change by $Author: grunau $.********************************************************************************/#ifndef GHMM_INTERNALS_H#define GHMM_INTERNALS_H#ifdef __cplusplusextern "C" {#endif /*__cplusplus*/#include "model.h"#include "mes.h"/*============== Memory allocation macros for mes-functions ===============*/#ifndef ARRAY_MALLOC#define ARRAY_MALLOC(ptr, entries) { if (!((ptr) = ighmm_malloc(sizeof(*(ptr)) * (entries)))) \ {GHMM_LOG_QUEUED(LERROR); goto STOP;} \ }#endif#ifndef ARRAY_CALLOC#define ARRAY_CALLOC(ptr, entries) { if (!((ptr) = ighmm_calloc(sizeof(*(ptr)) * (entries)))) \ {GHMM_LOG_QUEUED(LERROR); goto STOP;} \ }#endif#ifndef ARRAY_REALLOC#define ARRAY_REALLOC(ptr, entries) { if (ighmm_realloc((void**)&(ptr), sizeof(*(ptr))*(entries))) \ {GHMM_LOG_QUEUED(LERROR); goto STOP;} \ }#endif/*============== declarations for root_finder.c ===========================*//** brent root finding algorithm. wrapps this functioncall to the gsl 1D-root finding interface @author Achim G\"adke @param x1 lower bracket value @param x2 upper bracket value @param tol tolerance for iteration @param A 1st extra parameter @param B 2nd extra parameter @param eps 3rd extra parameter @return root */double ghmm_zbrent_AB(double (*func) (double, double, double, double), double x1, double x2, double tol, double A, double B, double eps);/*============== declarations for gauss_tail.c ============================*//** */double ighmm_gtail_pmue(double mue, double A, double B, double eps);/** */double ighmm_gtail_pmue_umin(double mue, double A, double B, double eps);/** @name Function to find the roots of the truncated normal density function.*/double ighmm_gtail_pmue_interpol(double mue, double A, double B, double eps);/*============== numeric functions ========================================*//** Calculates the logarithm of the sum of the probabilities whose logarithms are stored in the given array @return log of sum of exp(a[i]) @param a: array of logarithms of probabilities (a[i] < 0 for all i) @param length: length of a*/double ighmm_cvector_log_sum(double *a, int N);/*============== linked list ===============================================*//** integer element */struct i_el { int val; struct i_el * next;};typedef struct i_el i_el;/** list header */struct i_list { i_el * first; i_el * last; int length;};typedef struct i_list i_list;/** inits an empty list */i_list * ighmm_list_init_list();/** frees the list and all elements */int ighmm_list_free(i_list * list);/** append an element with value val at the end of the list */void ighmm_list_append(i_list * list, int val);/** insert an element with value val before the first element of the list */void ighmm_list_insert(i_list * list, int val);/** */int * ighmm_list_to_array(i_list * list);/** */i_el * ighmm_list_init_el(int val);/*============== allocate forward-backward matrices ========================*//** matrix allocation and free for training algorithms */int ighmm_reestimate_alloc_matvek(double ***alpha, double ***beta, double **scale, int T, int N);int ighmm_reestimate_free_matvek(double **alpha, double **beta, double *scale, int T);/*============== compute expected values ===================================*//** computes matrices of n and m variables (expected values for how often a certain parameter from A or B is used) computes Baum-Welch variables implicit @return 0/-1 success/error @param mo: pointer to a ghmm_dmodel @param alpha: matrix of forward variables @param backward: matrix of backward variables @param scale: scaling vector from forward-backward-algorithm @param seq: sequence in internal representation @param seq_len: length of sequence @param matrix_b: matrix for parameters from B (n_b or m_b) @param matrix_a: matrix for parameters from A (n_a or m_a) @param vec_pi: vector for parameters in PI (n_pi or m_pi)*/int ghmm_dmodel_label_gradient_expectations(ghmm_dmodel *mo, double **alpha, double **beta, double *scale, int *seq, int seq_len, double **matrix_b, double *matrix_a, double *vec_pi);/*============== logging ===================================================*/#define LDEBUG 4#define LINFO 3#define LWARN 2#define LCONVERTED 2#define LERROR 1#define LCRITIC 0#define LOC __FILE__":"CUR_PROC"(" TOSTRING(__LINE__) "): "#define TOSTRING(x) STRINGIFY(x)#define STRINGIFY(x) # x#define GHMM_LOG(level, estr) GHMM_LOG_PRINTF(level, LOC, estr)#define GHMM_LOG_QUEUED(level) GHMM_LOG_PRINTF(level, LOC, NULL)void GHMM_LOG_PRINTF(int level, const char* loc, const char* str, ...);void ighmm_queue_mes(char * text);#ifdef __cplusplus}#endif /*__cplusplus*/#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -