00001 
#ifndef _FITTER_H_
00002 
#define _FITTER_H_
00003 
00004 
00005 
00006 
00007 
00008 
00019 
typedef struct
00020 
{
00021         
Peak2i* pPeaks;
00022         
int             nPeaks;
00023         
int*    pCurves;
00024         
int             nCurves;
00025         
Map2D*  pMap;
00026 } FitterInput;
00027 
00028 
typedef struct
00029 
{
00030         
int              nIteration;
00031         
float    dChiSquare;
00032         
FPeak2i* pFPeaks;
00033         
int              nFPeaks;
00034 } FitterOutput;
00035 
00036 
typedef struct
00037 
{
00038         
unsigned isMutlipleCurves: 1;
00039         
unsigned haveCommonWidth: 1;
00040 
00041         FitterInput  input;
00042         FitterOutput output;
00043         
00044         
int        nStatus;
00045         
int        nOptions;
00046 
00047         
int        nCurrPeaks;
00048         
float* pValueParamArray;
00049         
int*   pStateParamArray;
00050         
int    nParams;
00051         
int*   pParamPerCurveArray;
00052 
00053 } MapFitter;
00054 
00055 
extern int      FITTER_INIT_SIGMA_RT_SET;
00056 
extern int      FITTER_INIT_SIGMA_MZ_SET;
00057 
00058 
extern float INIT_SIGMA_RT;     
00059 
extern float INIT_SIGMA_MZ;     
00060 
00061 
enum {FITTER_INIT_SIGMA_RT_PARAMETER, 
00062       FITTER_INIT_SIGMA_MZ_PARAMETER};
00063 
00064 
extern int NR_BD_GAUSSIOID_FIX_CHARGE;
00065 
extern int FITTER_MAX_NO_PEAKS;
00066 
extern int FITTER_MAX_ITERATIONS;
00067 
00068 
void  Fitter_setParameter(
int parameter, 
float value);
00069 
00070 
void  Fitter_init(MapFitter* mfitter);
00071 
int       Fitter_init_2(MapFitter* fitter, 
Map2D* map, 
int scan, 
int bin, 
int charge);
00072 
00073 
int Fitter_setInitCondForPeptide(MapFitter* fitter, 
Map2D* map, 
00074                                                                    
int scan,   
int bin, 
00075                                                                    
float charge, 
int carbons,
00076                                                                    
int curve_index);
00077 
00078 
void  Fitter_fixParameter(MapFitter* mfitter, 
int parameter);
00079 
void  Fitter_setStateParamArray(MapFitter* mfitter);
00080 
void  Fitter_destroy(MapFitter* mfitter);
00081 
void  Fitter_fprint(FILE* fp, MapFitter* fitter);
00082 
00083 
Map2D Fitter_createFittedMap(MapFitter MFF);
00084 
Map2D Fitter_createFittedMapFromFPeaks(
Map2D* pMap, 
FPeak2i* pFPeaks, 
int nFPeaks);
00085 
Map2D Fitter_createMapFromFPeaks(
Map2D* temp_map, 
FPeak2i* pFPeaks, 
int nFPeaks);
00086 
00087 
float* Fitter_getInitialConditionsOfUnion(
FPeak2i* pIn1 , 
int nIn1,
00088                                                                                   
FPeak2i* pIn2 , 
int nIn2,
00089                                                                                   
int* nInit);
00090 
00091 
Peak2i* Fitter_getPeak2iArrayOfUnion(
FPeak2i* pIn1 , 
int nIn1,
00092                                                                      
FPeak2i* pIn2 , 
int nIn2,
00093                                                                      
int* nPeaks);
00094 
00095 
int* Fitter_getCurveArrayOfUnion(
FPeak2i* pIn1 , 
int nIn1,
00096                                                                  
FPeak2i* pIn2 , 
int nIn2,
00097                                                                  
int* nCurves);
00098 
00099 
int Fitter_getInitialConditionsFromPeak2iArray(MapFitter* ftt, 
00100                                                                                            
Map2D*   map, 
00101                                                                                            
Peak2i* pPeaks, 
int nPeaks, 
00102                                                                                            
int curve);
00103 
00104 
int Fitter_getInitialConditionsFromFPeak2iArray(MapFitter* ftt, 
00105                                                                                             
Map2D*   map, 
00106                                                                                             
FPeak2i* pFPeaks, 
int nPeaks, 
00107                                                                                             
int curve);
00108 
00109 
float* Fitter_getInitialConditionsWithMultipleCurves(MapFitter* fitter);
00110 
00111 
00112 
00113 
00114 
00115  
00116 
00117 
00118 
00119 
00120 
00121 
00122 
00123 
int              Fitter_fitPeaks(MapFitter* fitter); 
00124 
00125 
00126 
00127 
00128 
00129 
00130 
00131 
int              Fitter_fitPeaksGivenInitialConditions(MapFitter* fitter); 
00132 
00133 
00134 
00135 
00136 
00137 
00138 
int              Fitter_fitPeaksWithMultipleCurves(MapFitter* fitter); 
00139 
00140 
00141 
00142 
00143 
00144 
00145 
int              Fitter_fitPeaksGivenInitialConditionsMultipleCurves(MapFitter* fitter);  
00146 
00147 
00148 
00149 
#endif
00150