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 IsotopicCluster* 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 #define MAX_NO_PG_FPEAKS 1000
00069
00070
00071
00072
00073
00074 void PeakGroup_destroy (PeakGroup* peakgroup);
00075 PeakGroup PeakGroup_copy (PeakGroup *peakgroup);
00076 void PeakGroup_init (PeakGroup* pg);
00077
00078 void PeakGroup_fprintf (FILE* fp, PeakGroup* peakgroup, int index, int format);
00079 void PeakGroup_fprint (FILE* fp, PeakGroup* peakgroup, int index);
00080 void PeakGroup_fprintWithCurve (FILE* fp, PeakGroup* peakgroup, int index);
00081 void PeakGroup_fprintWithPos (FILE* fp, PeakGroup* peakgroup, int index);
00082
00083 int PeakGroup_cmpByTiles(const void *p1, const void *p2);
00084 int PeakGroup_cmpByNPeaks(const void *p1, const void *p2);
00085
00086 void PeakGroup_sortFPeaksByMOZ(PeakGroup *peakgroup);
00087 void PeakGroup_createFromFPeak2iArray (PeakGroup* PG, FPeak2i* pFPeaks, int size);
00088 Rectangle4i PeakGroup_getBoundaries(PEAK_GROUP PG);
00089 MQTileID PeakGroup_getSmallestTile(PeakGroup* peakgroup);
00090 int PeakGroup_countSegmentsFromTile(PeakGroup* peakgroup, MQTileID bTile);
00091 int PeakGroup_isPeak2iInPeakGroup (PeakGroup PG, int scan, int bin);
00092
00093
00094 Peak2i* SegmentArray_getPeaksNotInPeakGroup (Segment* pSegments, int nSegments,
00095 PeakGroup peakgroup,
00096 int* nPeaks);
00097
00098 FPeak2i* SegmentArray_getFPeaksNotInPeakGroupUsingIndexArray(Segment* pSegmentArray, int* index_array, int nSegments,
00099 PeakGroup peakgroup,
00100 int* nPeaks);
00101
00102 Map2DPositionPointer* PeakGroup_getMap2DPositionPointerArray(PeakGroup* pg);
00103
00104
00105
00106 int* PeakGroup_getSpanningSegmentIndexArrayUsingLabeledMap(PeakGroup* peakgroup,
00107 Map2D* mask,
00108 int* nSegments);
00109
00110 int* PeakGroup_getSpanningSegmentIndexArrayUsingSegmentArray( PeakGroup* peakgroup,
00111 Segment* pSegmentArray, int nSegmentArray,
00112 int* nSegments);
00113
00114 int PeakGroup_getSpanningMapFPeaks(PeakGroup* peakgroup, Segment* psegments, int nsegments, FPeak2i* pfpeaks, int *nfpeaks);
00115
00116 int PeakGroup_countSpanningTiles(PeakGroup* peakgroup);
00117 int PeakGroup_getTileArray(PeakGroup* peakgroup);
00118
00119
00120
00121 #endif
00122