⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ghmm_internals.h

📁 General Hidden Markov Model Library 一个通用的隐马尔科夫模型的C代码库
💻 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 + -