00001
#ifndef _PEAK_GROUP_H_
00002
#define _PEAK_GROUP_H_
00003
00004
00005
00006
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;
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
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
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
00118
00119
int PeakGroup_refine5( PeakGroup* peakgroup,
Map2D* map,
00120
FPeak2i* pFPeaksOut,
int nFPeaksOut,
00121 PeakFinder* pfinder,
00122
char* szCurve);
00123
00124
00125
00126
int PeakGroup_refine6( PeakGroup* peakgroup,
Map2D* map,
00127
FPeak2i* pFPeaksOut,
int nFPeaksOut,
00128 PeakFinder* pfinder,
00129
char* szCurve);
00130
00131
00132
00133
00134
int PeakGroup_refine6_1( PeakGroup* peakgroup,
Map2D* map,
00135
FPeak2i* pFPeaksOut,
int nFPeaksOut,
00136 PeakFinder* pfinder,
00137
char* szCurve);
00138
00139
00140
00141
00142
00143
int PeakGroup_refine6_2( PeakGroup* peakgroup,
Map2D* map,
00144
FPeak2i* pFPeaksOut,
int nFPeaksOut,
00145 PeakFinder* pfinder,
00146
char* szCurve);
00147
00148
00149
00150
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
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
00173 SegmentQuery* PeakGroup_getSpanningSegmentsUsingFPeakFile (PeakGroup* peakgroup, FPeakFile* fpkfile,
int* nSegments,
int* nSessions);
00174
00175
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
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
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
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