00001 
#ifndef _DECONVOLVE_H_
00002 
#define _DECONVOLVE_H_
00003 
00004 
00005 
00006 
00007 
00008 
00019 
typedef struct
00020 
{
00021         
int        size;
00022         
float* moz;
00023         
float* abu;
00024         
00025         
int  * nc;
00026         
float* amt;
00027 
00028         
float* curr;
00029         
00030         
int        step;
00031 } Deconvolver;
00032 
00033 
extern int MAX_NO_CLUSTERS;
00034 
#define DECONVOLVER_LOWER_BOUND 1
00035 
#define DECONVOLVER_UPPER_BOUND 2
00036 
00037 
extern Byte             DECONVOLVER_VERBOSE;
00038 
extern Byte             DECONVOLVER_BOUNDS_LOADED;
00039 
extern int              DECONVOLVER_MODE;
00040 
00041 
extern int              NO_CHARGES;
00042 
extern int**    mzjBounds;
00043 
extern float**  mozBounds;
00044 
00045 
00046 
enum {DECONVOLVER_MOZ, DECONVOLVER_MZJ};
00047 
00048 
#define MQ_DECONVOLVING_STRING "---------------- DECONVOLVING PEAKGROUP ------------------\n"
00049 
00050 
00051 
void    Deconvolver_fprintMOZBounds(FILE* fp);
00052 
int             Deconvolver_init(
int mode);
00053 
void    Deconvolver_release();
00054 
int             Deconvolver_loadMOZBounds();
00055 
00056 
00057 
00076 
int     Deconvolver_findBestCarbonFitIteratively(
float* array, 
int size, 
00077                                                                                         
int c_begin, 
int c_end, 
00078                                                                                         
int* min_carb, 
float* score, 
int* mip); 
00079 
00080 
int Deconvolver_guessCarbonContent(
float* array, 
int size, 
int c_begin, 
int c_end, 
float* score);
00081 
00082 
00083 
00084 
int             FPeak2iArray_deconvolveCharge(  
FPeak2i* pArray, 
int nArray, 
00085                                                                                 IsotopicCluster* clusters, 
int* nClusters);
00086 
00087 
int             PeakGroup_deconvolveCharge(
PeakGroup* peak_group);
00088 
00089 
int**   FPeak2iPointerArray_createAdjacencyMatrixByMZJ(
FPeak2iPointer* pVertexArray, 
int nVertexArraySize);
00090 
float** FPeak2iPointerArray_createAdjacencyMatrixByMOZ(
FPeak2iPointer* pVertexArray, 
int nVertexArraySize);
00091 
00092 
int**   FPeak2iArray_createAdjacencyMatrixByMZJ(
FPeak2i* pVertexArray, 
int nVertexArraySize);
00093 
float** FPeak2iArray_createAdjacencyMatrixByMOZ(
FPeak2i* pVertexArray, 
int nVertexArraySize);
00094 
00095 
int**   IntArray_createAdjacencyMatrix(
int* pVertexArray, 
int nVertexArraySize);
00096 
00097 
00103 
int IsotopicCluster_findBestCarbonFit(IsotopicCluster* ic);
00104 
00105 
int IsotopicCluster_findBestCarbonFitUsingResidualArray(IsotopicCluster* ic, 
float* res);
00106 
00107 
FPeak2i FPeak2i_createUsingIsotopicCluster(IsotopicCluster* ic, 
int nCurve);
00108 
void    FPeak2iArray_fillUsingIsotopicCluster(
FPeak2i* pArray, 
int* nLastIndex, IsotopicCluster* ic, 
int nCurve);
00109 
00110 
00111 
00112 
int PeakGroup_deconvolveIsotopes (
PeakGroup*    peakgroup, 
00113                                                                   
Map2D*                pMap,
00114                                                                   
FPeak2i*              pFPeaksOut, 
int nFPeaksOut, 
00115                                                                   
char* szCurve);
00116 
00117 
int PeakGroup_deconvolveIsotopes2(
PeakGroup*    peakgroup, 
00118                                                                   
Map2D*                pMap,
00119                                                                   
FPeak2i*              pFPeaksOut, 
int nFPeaksOut, 
00120                                                                   
char* szCurve);
00121 
00122 
int PeakGroup_deconvolveIsotopes3(
PeakGroup*    peakgroup, 
00123                                                                   
Map2D*                pMap,
00124                                                                   
FPeak2i*              pFPeaksOut, 
int nFPeaksOut, 
00125                                                                   
char* szCurve);
00126 
00127 
int PeakGroup_deconvolveIsotopes3_1(  
PeakGroup*        peakgroup, 
00128                                                                           
Map2D*                pMap,
00129                                                                           
FPeak2i*              pFPeaksOut, 
int nFPeaksOut);
00130 
00131 
int PeakGroup_deconvolveIsotopesWithoutFitting(
PeakGroup*       peakgroup);
00132 
00133 
int PeakGroup_deconvolveIsotopes5(
PeakGroup*    peakgroup, 
00134                                                                   
Map2D*                pMap,
00135                                                                   
FPeak2i*              pFPeaksOut, 
int nFPeaksOut, 
00136                                                                   
char* szCurve);
00137 
00138 
00139 
#endif
00140