Doxygen Source Code Documentation
model_diffexp.c
Go to the documentation of this file.00001 /***************************************************************************** 00002 Major portions of this software are copyrighted by the Medical College 00003 of Wisconsin, 1994-2000, and are released under the Gnu General Public 00004 License, Version 2. See the file README.Copyright for details. 00005 ******************************************************************************/ 00006 00007 /* 00008 This file contains routines to initialize and implement the 00009 differential exponential drug response signal model. 00010 00011 File: model_diffexp.c 00012 Author: B. Douglas Ward 00013 Date: 6 June 1997 00014 */ 00015 00016 00017 /*---------------------------------------------------------------------------*/ 00018 00019 #include <math.h> 00020 #include "NLfit_model.h" 00021 00022 void signal_model 00023 ( 00024 float * gs, /* parameters for signal model */ 00025 int ts_length, /* length of time series data */ 00026 float ** x_array, /* independent variable matrix */ 00027 float * ts_array /* estimated signal model time series */ 00028 ); 00029 00030 00031 /*---------------------------------------------------------------------------*/ 00032 /* 00033 Routine to initialize the signal model by defining the number of parameters 00034 in the signal model, the name of the signal model, and the default values 00035 for the minimum and maximum parameter constraints. 00036 */ 00037 00038 DEFINE_MODEL_PROTOTYPE 00039 00040 MODEL_interface * initialize_model () 00041 { 00042 MODEL_interface * mi = NULL; 00043 00044 00045 /*----- allocate memory space for model interface -----*/ 00046 mi = (MODEL_interface *) XtMalloc (sizeof(MODEL_interface)); 00047 00048 00049 /*----- define interface for the differential - exponential model -----*/ 00050 00051 /*----- name of this model -----*/ 00052 strcpy (mi->label, "DiffExp"); 00053 00054 /*----- this is a signal model -----*/ 00055 mi->model_type = MODEL_SIGNAL_TYPE; 00056 00057 /*----- number of parameters in the model -----*/ 00058 mi->params = 4; 00059 00060 /*----- parameter labels -----*/ 00061 strcpy (mi->plabel[0], "t0"); 00062 strcpy (mi->plabel[1], "k"); 00063 strcpy (mi->plabel[2], "alpha1"); 00064 strcpy (mi->plabel[3], "alpha2"); 00065 00066 /*----- minimum and maximum parameter constraints -----*/ 00067 mi->min_constr[0] = 45.0; mi->max_constr[0] = 75.0; 00068 mi->min_constr[1] = -500.0; mi->max_constr[1] = 500.0; 00069 mi->min_constr[2] = 0.00; mi->max_constr[2] = 0.15; 00070 mi->min_constr[3] = 0.15; mi->max_constr[3] = 0.50; 00071 00072 /*----- function which implements the model -----*/ 00073 mi->call_func = &signal_model; 00074 00075 00076 /*----- return pointer to the model interface -----*/ 00077 return (mi); 00078 } 00079 00080 00081 /*---------------------------------------------------------------------------*/ 00082 /* 00083 Routine to calculate the time series which results from using the 00084 differential exponential drug response signal model with the specified 00085 model parameters. 00086 00087 Definition of model parameters: 00088 00089 gs[0] = time delay of response (t0) 00090 gs[1] = multiplicative constant (k) 00091 gs[2] = elimination rate constant (alpha1) 00092 gs[3] = absorption rate constant (alpha2) 00093 */ 00094 00095 void signal_model 00096 ( 00097 float * gs, /* parameters for signal model */ 00098 int ts_length, /* length of time series data */ 00099 float ** x_array, /* independent variable matrix */ 00100 float * ts_array /* estimated signal model time series */ 00101 ) 00102 00103 { 00104 int it; /* time index */ 00105 float t; /* time */ 00106 float fval; /* time series value at time t */ 00107 00108 00109 for (it = 0; it < ts_length; it++) 00110 { 00111 t = x_array[it][1]; 00112 if (t < gs[0]) 00113 fval = 0.0; 00114 else 00115 fval = gs[1] * (exp(-gs[2]*(t-gs[0])) - exp(-gs[3]*(t-gs[0]))); 00116 ts_array[it] = fval; 00117 } 00118 00119 } 00120 00121 00122 00123