00001
#ifndef _REFINER_
00002
#define _REFINER_
00003
00004
00005
00006
00007
00008
00009
struct Refiner
00010 {
00011 PeakFinder finder;
00012
char* szCurve;
00013
00014
00015
float NO_SD_MZ_WINDOW;
00016
int SCAN_WINDOW;
00017
00018
float MZ_OVERLAP_THR;
00019
00020
00021
float dNoSDSizeFilter;
00022
00023
float dAvgSigmaRT;
00024
float dSDSigmaRT;
00025
00026
float dAvgSigmaMZ;
00027
float dSDSigmaMZ;
00028 };
00029
00030
typedef struct Refiner Refiner;
00031
00032
extern RestrictionStatistics REFINER_SIGMA_MZ[MAX_NO_OF_STRING_NUMBERS + 1];
00033
00034
extern int REFINER_EVAL_SIGMA_MZ_SET;
00035
extern int REFINER_SDEV_SIGMA_MZ_SET;
00036
extern int REFINER_EVAL_SIGMA_RT_SET;
00037
extern int REFINER_SDEV_SIGMA_RT_SET;
00038
00039
extern float EVAL_SIGMA_MZ;
00040
extern float SDEV_SIGMA_MZ;
00041
extern float EVAL_SIGMA_RT;
00042
extern float SDEV_SIGMA_RT;
00043
00044
enum { REFINER_EVAL_SIGMA_MZ_PARAMETER,
00045 REFINER_SDEV_SIGMA_MZ_PARAMETER,
00046 REFINER_EVAL_SIGMA_RT_PARAMETER,
00047 REFINER_SDEV_SIGMA_RT_PARAMETER};
00048
00049
#define MQ_REFINING_STRING "--------------- REFINING PEAKGROUP ---------------\n"
00050
00051
int Refiner_init(Refiner* refiner);
00052
void Refiner_fprintf(FILE* fp, Refiner* refiner);
00053
void Refiner_setParameter(
int parameter,
float value);
00054
Insets4f Refiner_calculatePeakGroupBoundaries(Refiner* refiner,
PeakGroup* peakgroup);
00055 FPeakFilter Refiner_calculateSizeFilter(Refiner* refiner);
00056
00057
int Refiner_refinerPeakGroup7(Refiner* refiner,
00058
PeakGroup* peakgroup,
Map2D* map,
00059
FPeak2i* pFPeaksOut,
int nFPeaksOut);
00060
00061
float Map2D_subtractFPeak2i(
Map2D* map,
FPeak2i* fpeak);
00062
float Map2D_subtractFPeak2iArray(
Map2D* map,
FPeak2i* parray,
int nsize);
00063
00064
void FPeak2iArray_validatePositivePeaks(
FPeak2i* array,
int size);
00065
int FPeak2iArray_checkSize(
FPeak2i* array,
int size,
Experiment* expmnt);
00066
FPeak2i FPeak2iArray_popFirstValid(
FPeak2i* pWorking,
int nWorking);
00067
void FPeak2iArray_calcScanStat(
FPeak2i* array,
int size,
float* scan_mean,
float* scan_sd);
00068
int FPeak2i_isInsidePeakGroupBoundaries(
FPeak2i* peak,
Insets4f* peakgroup_boundaries);
00069
00070
void PeakGroup_calcScanStat(
PeakGroup* pg,
float* scan_mean,
float* scan_sd);
00071
00072
void PeakGroup_validatePositivePeaks(
PeakGroup* peakgroup);
00073
float PeakGroup_calcAvgRTI(
PeakGroup* pg);
00074
00075
00076
00077
00078
00079
int Peak2i_belongsToPeakGroupStrict(
Peak2i* peak ,
PeakGroup* pg);
00080
int FPeak2i_belongsToPeakGroupStrict(
FPeak2i* peak,
PeakGroup* pg);
00081
int FPeak2i_belongsToPeakGroup(
FPeak2i fpk,
PeakGroup* pgr,
int first_index,
int last_index);
00082
00083
00084
int Peak2i_belongsToFPeak2iPointerArrayStrict (
Peak2i* peak,
FPeak2iPointer* array,
int npeaks);
00085
int FPeak2i_belongsToFPeak2iPointerArrayStrict(
FPeak2i* peak,
FPeak2iPointer* array,
int npeaks);
00086
00087
00088
int FPeak2i_belongsToFPeak2iArrayUsingRestrictions(
FPeak2i* fpk,
FPeak2i* array,
int size,
00089
int rti_thr,
int mzj_thr);
00090
int FPeak2iArray_doesFPeak2iOverlap(
FPeak2i* array,
int size,
FPeak2i* peak,
float mz_thr);
00091
int FPeak2i_doesMassBinOverlapWithFPeak2iArray(
FPeak2i* peak,
FPeak2i* array,
int size,
int mass_bin_thr);
00092
00093
00094
00095
void FPeak2iArray_removeFPeaksInIsocluster (
FPeak2i* pFPeaksAll,
int* nFPeaksAll, IsotopicCluster* ic);
00096
int FPeak2iArray_removeFPeaksInPeakGroupLax (
FPeak2i* pFPeaksAll,
int* nFPeaksAll,
PeakGroup* peakgroup,
int scan_thr);
00097
int FPeak2iArray_removeFPeaksInPeakGroupStrict (
FPeak2i* pFPeaksAll,
int* nFPeaksAll,
PeakGroup* peakgroup);
00098
00099
void FPeak2iArray_removePeaksWithNegativeParam(
FPeak2i* array,
int* npeaks);
00100
void FPeak2i_fprintStat(FILE* fp);
00101
00102
#endif
00103