Main Page | Modules | Data Structures | File List | Data Fields | Globals

massspec/peakgroup.h

Go to the documentation of this file.
00001 #ifndef _PEAK_GROUP_H_ 00002 #define _PEAK_GROUP_H_ 00003 00004 /* Copyright (c) Kyriacos Leptos and the President and Fellows of Harvard University 00005 Release Date: 2004-11-01 00006 Part of the MapQuant suite library "massspec.lib" 00007 */ 00008 00018 enum { PEAKGROUP_FORMAT_WITH_CURVE = 0x00000001, 00019 PEAKGROUP_FORMAT_WITH_POSITION = 0x00000002, 00020 PEAKGROUP_FORMAT_VALID_ONLY = 0x00000004, 00021 PEAKGROUP_FORMAT_WITH_FITTING_PARAM = 0x00000008 00022 }; 00023 00024 extern int PEAKGROUP_INDEX_WIDTH; 00025 00032 struct PeakGroup 00033 { 00034 unsigned isValid: 1; 00035 unsigned isFitted: 1; 00036 00037 int nIndex; 00038 int rti; 00039 00040 FPeak2i* pFPeaks; 00041 00042 FPeak2iPointer* pfpeaks; //Array of pointers of FPeak 00043 int npeaks; 00044 00045 Map2DPositionPointer* pPFPeakPosition; 00046 int nPositions; 00047 00048 struct ISOTOPIC_CLUSTER* IC; 00049 int nic; 00050 00051 00052 int nSegments; 00053 00054 MQTileID* pTileArray; 00055 int nTiles; 00056 00057 // Fitting arguments 00058 float dChiSqr; 00059 int nIter; 00060 int nStatus; 00061 float dAreaPeakGroupMap; 00062 float dNumberOfSeconds; 00063 }; 00064 00065 typedef struct PeakGroup PeakGroup; 00066 typedef PeakGroup PEAK_GROUP; 00067 00068 typedef struct 00069 { 00070 PeakGroup* array; 00071 int size; 00072 int tail; 00073 int head; 00074 } PeakGroupQueue; 00075 00076 00077 // *************************************************** 00078 // *************** PeakGroup Functions *************** 00079 // *************************************************** 00080 00081 void PeakGroup_destroy (PeakGroup* peakgroup); 00082 PeakGroup PeakGroup_copy (PeakGroup *peakgroup); 00083 void PeakGroup_init (PeakGroup* pg); 00084 00085 void PeakGroup_fprintf (FILE* fp, PeakGroup* peakgroup, int format, int index); 00086 void PeakGroup_fprint (FILE* fp, PeakGroup* peakgroup, int index); 00087 void PeakGroup_fprintWithCurve (FILE* fp, PeakGroup* peakgroup, int index); 00088 void PeakGroup_fprintWithPos (FILE* fp, PeakGroup* peakgroup, int index); 00089 00090 int PeakGroup_cmpByTiles(const void *p1, const void *p2); 00091 int PeakGroup_cmpByNPeaks(const void *p1, const void *p2); 00092 00093 void PeakGroup_sortFPeaksByMOZ(PeakGroup *peakgroup); 00094 void PeakGroup_createFromFPeak2iArray (PeakGroup* PG, FPeak2i* pFPeaks, int size); 00095 Rectangle4i PeakGroup_getBoundaries(PEAK_GROUP PG); 00096 int PeakGroup_refine( PeakGroup* PG, Map2D map, 00097 FPeak2i* pFPeaksOut, int nFPeaksOut, 00098 char* szStructElem, float dAbundanceThr, char* szCurve); 00099 00100 int PeakGroup_refine2( PeakGroup* peakgroup, Map2D map, 00101 FPeak2i* pFPeaksOut, int nFPeaksOut, 00102 char* szStructElem, 00103 float dAbundanceThr, 00104 char* szCurve); 00105 00106 int PeakGroup_refine3( PeakGroup* peakgroup, Map2D* map, 00107 FPeak2i* pFPeaksOut, int nFPeaksOut, 00108 char* szStructElem, 00109 float dAbundanceThr, 00110 char* szCurve); 00111 00112 int PeakGroup_refine4( PeakGroup* peakgroup, Map2D* map, 00113 FPeak2i* pFPeaksOut, int nFPeaksOut, 00114 PeakFinder* pfinder, 00115 char* szCurve); 00116 00117 // As opposed to refine 4 it uses the median to compare 00118 00119 int PeakGroup_refine5( PeakGroup* peakgroup, Map2D* map, 00120 FPeak2i* pFPeaksOut, int nFPeaksOut, 00121 PeakFinder* pfinder, 00122 char* szCurve); 00123 00124 // Refiner6: Same as refiner5 but does not subtract sigma_mz_undersized 00125 00126 int PeakGroup_refine6( PeakGroup* peakgroup, Map2D* map, 00127 FPeak2i* pFPeaksOut, int nFPeaksOut, 00128 PeakFinder* pfinder, 00129 char* szCurve); 00130 00131 // Refiner6.1: Same as refiner6 but does not do final fitting with FIXED_SIGMA_MZ 00132 // instead it uses the INIT_SIGMA_MZ value as the initial value for the fitting 00133 00134 int PeakGroup_refine6_1( PeakGroup* peakgroup, Map2D* map, 00135 FPeak2i* pFPeaksOut, int nFPeaksOut, 00136 PeakFinder* pfinder, 00137 char* szCurve); 00138 00139 // Refiner6.2: Same as refiner6_1 but in final fitting 00140 // 1. it does it with FIXED_MZ (got from Peaks2i) 00141 // 2. it uses the INIT_SIGMA_MZ value as the initial value for the fitting 00142 00143 int PeakGroup_refine6_2( PeakGroup* peakgroup, Map2D* map, 00144 FPeak2i* pFPeaksOut, int nFPeaksOut, 00145 PeakFinder* pfinder, 00146 char* szCurve); 00147 00148 // Refiner6.3: Same as refiner6_1 but in final fitting 00149 // 1. it does it with FIXED_MZ (got from FPeaks2i) 00150 // 2. it uses the INIT_SIGMA_MZ value as the initial value for the fitting 00151 00152 int PeakGroup_refine6_3( PeakGroup* peakgroup, Map2D* map, 00153 FPeak2i* pFPeaksOut, int nFPeaksOut, 00154 PeakFinder* pfinder, 00155 char* szCurve); 00156 00157 int PeakGroup_refine6_4( PeakGroup* peakgroup, Map2D* map, 00158 FPeak2i* pFPeaksOut, int nFPeaksOut, 00159 PeakFinder* pfinder, 00160 char* szCurve); 00161 00162 int PeakGroup_isPeak2iInPeakGroup (PeakGroup PG, int scan, int bin); 00163 00164 // *************************************************** 00165 // *************** More PeakGroup Functions ********** 00166 // *************************************************** 00167 00168 00169 00170 SegmentQuery Experiment_querySegmentBySamplingCoordinates(Experiment expmnt, int scan, int bin); 00171 SegmentQuery FPeakFile_querySegmentBySamplingCoordinates (FPeakFile* fpkfile, int scan, int bin); 00172 //SegmentQuery* PeakGroup_getSpanningSegmentsUsingExperiment(PeakGroup peakgroup, Experiment expmnt, int* nSegments, int* nSessions); 00173 SegmentQuery* PeakGroup_getSpanningSegmentsUsingFPeakFile (PeakGroup* peakgroup, FPeakFile* fpkfile, int* nSegments, int* nSessions); 00174 00175 // edited 2004-07-28 00176 int* PeakGroup_getSpanningSegmentsIndexArrayUsingLabeledMap (PeakGroup* peakgroup, Map2D* mask, int* nSegments); 00177 int* PeakGroup_getSpanningSegmentsIndexArrayUsingFPeakFile (PeakGroup* peakgroup, FPeakFile* FPF, int* nSegments); 00178 int PeakGroup_getSpanningMap (PeakGroup* peakgroup, SegmentExtractor* segex); 00179 00180 // *************************************************** 00181 // *************** PeakGroupArray Functions ********** 00182 // *************************************************** 00183 00184 PeakGroup* PeakGroupArray_create (int nSize); 00185 PeakGroup* PeakGroupArray_createFromFPeak2iArray (FPeak2i* FPEAKS, int no_peaks, int* nPG); 00186 int PeakGroupArray_countFPeaks(PeakGroup* pPeakGroups, int nPeakGroups); 00187 void PeakGroupArray_fprintf (FILE* fp, PeakGroup *PG, int ngroups, int format); 00188 void PeakGroupArray_fprint (FILE* fp, PeakGroup *PG, int ngroups); 00189 void PeakGroupArray_fprintWithPos(FILE* fp, PeakGroup *PG, int ngroups); 00190 void PeakGroupArray_fprintGivenStartIndex(FILE* fp, PeakGroup *PG, int ngroups, int start_index); 00191 void PeakGroupArray_fprintWithPosGivenStartIndex(FILE* fp, PeakGroup *PG, int ngroups, int start_index); 00192 00193 void PeakGroupArray_destroy (PeakGroup** pPeakgroup, int nSize); 00194 00195 void PeakGroupArray_sortByNPeaks (PeakGroup *pPeakGroup, int ngroups); 00196 void PeakGroupArray_sortByTiles(PeakGroup *PG, int ngroups); 00197 00198 void PeakGroupArray_sortEachPeakGroupByMOZ(PeakGroup *PG, int ngroups); 00199 00200 00201 // *************************************************** 00202 // *************** PeakGroupQueue Functions ********** 00203 // *************************************************** 00204 00205 void PeakGroupQueue_create (PeakGroupQueue* Q, int size); 00206 void PeakGroupQueue_destroy (PeakGroupQueue* Q); 00207 void PeakGroupQueue_init (PeakGroupQueue* Q); 00208 int PeakGroupQueue_push (PeakGroupQueue* Q, PeakGroup elem); 00209 int PeakGroupQueue_pop (PeakGroupQueue* Q, PeakGroup* elem); 00210 int PeakGroupQueue_getOccupancy (PeakGroupQueue Q); 00211 void PeakGroupQueue_fprint(FILE* fp, PeakGroupQueue* peaks); 00212 00213 PeakGroup* PeakGroupQueue_convertToPeakGroupArray (PeakGroupQueue Q); 00214 00215 void PeakGroupQueue_sortEachPeakGroupByMOZ(PeakGroupQueue* Q); 00216 00217 void PeakGroupQueue_fillFromFPeak2iPointerSet (PeakGroupQueue* Q, FPeak2iPointerSet *SET); 00218 void PeakGroupQueue_fillFromFPeak2iPointerSet_2(PeakGroupQueue* Q, FPeak2iPointerSet *SET); 00219 00220 00221 00222 Peak2i* SegmentArray_getPeaksNotInPeakGroup (Segment* pSegments, int nSegments, 00223 PeakGroup peakgroup, 00224 int* nPeaks); 00225 00226 FPeak2i* SegmentArray_getFPeaksNotInPeakGroupUsingIndexArray(Segment* pSegmentArray, int* index_array, int nSegments, 00227 PeakGroup peakgroup, 00228 int* nPeaks); 00229 00230 00231 int* PeakGroup_getSpanningSegmentsUsingSegmentArray(PeakGroup peakgroup, 00232 Segment* pSegmentArray, 00233 int nSegmentArray, 00234 int nFPeaks, 00235 int* nSegments); 00236 00237 char** PeakGroupArray_toStringArray(PeakGroup* pPeakGroup, int size, const char* format, int field); 00238 00239 Map2DPositionPointer* PeakGroup_getMap2DPositionPointerArray(PeakGroup* pg); 00240 int PeakGroup_getSpanningMapFPeaks(PeakGroup* peakgroup, FPeakFile* file, FPeak2i* pfpeaks, int *nfpeaks); 00241 00242 int PeakGroup_countSpanningTiles(PeakGroup* peakgroup); 00243 int PeakGroup_getTileArray(PeakGroup* peakgroup); 00244 //void PeakGroup_getSmallestTile (PeakGroup* peakgroup); 00245 00246 PeakGroup* PeakGroup_clusterIntoArray( PeakGroup* peakgroup, 00247 int* nPeakGroups, 00248 Clusterer* clust); 00249 00250 PeakGroup* PeakGroupArray_createByClusteringFPeakPointerArray(FPeak2iPointer* ppFPeaks, 00251 Map2DPositionPointer* ppFPeakPositions, 00252 int nFPeaks, 00253 int* nPeakGroups, 00254 Clusterer* clust); 00255 00256 00257 00258 void PeakGroupQueue_splitEachPeakGroup (PeakGroupQueue *Q, Clusterer* clust); 00259 void PeakGroupQueue_clusterEachPeakGroup_1(PeakGroupQueue* Q, Clusterer* clust); 00260 void PeakGroupQueue_clusterEachPeakGroup_2(PeakGroupQueue* Q, Clusterer* clust); 00261 00262 #endif 00263

Generated on Sun Feb 13 01:05:59 2005 for MapQuant by doxygen 1.3.7