00001 #ifndef _MQEXPERIMENT_H_
00002 #define _MQEXPERIMENT_H_
00003
00004
00005
00006
00007
00008
00009 #ifdef WITH_MQXML
00010 #include "mqxml/mqXMLAPI.h"
00011 #endif
00012
00021 #define MQEXPERIMENT_MZ_RULER_ID_WITH_MOST_SCANS 255
00022
00023 extern MQByte MQEXPERIMENT_MZ_RULER_ID;
00024
00025 extern MQByte MQEXPERIMENT_RT_RULER_MODE;
00026 extern MQByte MQEXPERIMENT_MZ_RULER_MODE;
00027
00028 extern int NO_BINS_PER_MZ;
00029
00030 enum {ABS_TO_REL, REL_TO_ABS};
00031 enum {D1, D2};
00032
00033
00034 #define SCAN_MS1 0x00000001
00035 #define SCAN_MS2 0x00000002
00036 #define SCAN_MS3 0x00000004
00037 #define SCAN_MS4 0x00000008
00038
00039
00040 #define SCAN_PROFILE 0x00000100
00041 #define SCAN_CENTROID 0x00000200
00042
00043
00044 #define SCAN_FULL 0x00010000
00045 #define SCAN_ZOOM 0x00020000
00046
00047 #define SCAN_ALL 0xFFFFFFFF
00048
00049 enum {MQ_REL, MQ_ABS};
00050
00055 struct MQExperiment
00056 {
00057 unsigned rtsize_loaded: 1;
00058 unsigned rtloaded: 1;
00059
00060 unsigned msloaded: 1;
00061 unsigned mssize_loaded: 1;
00062
00063 unsigned ms2loaded: 1;
00064
00065
00066
00072 char* szName;
00073 char* szFileName;
00074 FILE* pFile;
00075
00081 char* szProcExpDir;
00082
00083
00084 char* szProcMapsDir;
00085 char* szProcResultsDir;
00086
00087
00088 Rectangle4i rect;
00089
00090
00091
00092
00093
00094 MQScanHeader* scanheaders;
00095 int SIZE_GLOBAL_RT_SAMPLING_ARRAY;
00096 float* GLOBAL_RT_SAMPLING_ARRAY;
00097
00098
00099 MQMZRuler* rulers;
00100 int nrulers;
00101 int SIZE_GLOBAL_MS_SAMPLING_ARRAY;
00102 float* GLOBAL_MS_SAMPLING_ARRAY;
00103
00104
00105
00106 char* szInstrumentInfo;
00107 char* szInstrumentName;
00108 float dInjectionVolume;
00109 char* szInjectionVolumeUnits;
00110
00111
00112
00113 int nFileFormat;
00114
00115 OpenRawFile orFile;
00116
00117 #ifdef WITH_MQXML
00118 mqXMLTopology mqXMLTop;
00119 #endif
00120 };
00121
00122 typedef struct MQExperiment MQExperiment;
00123
00140 void MQExperiment_destroy(MQExperiment* exp);
00141
00142 int MQExperiment_isScanFull (MQExperiment* expmnt, int scanno);
00143 int MQExperiment_isScanZoom (MQExperiment* expmnt, int scanno);
00144 int MQExperiment_isScanMS (MQExperiment* expmnt, int scanno);
00145 int MQExperiment_isScanMS2 (MQExperiment* expmnt, int scanno);
00146 int MQExperiment_isScanCentroid(MQExperiment* expmnt, int scanno);
00147 int MQExperiment_isScanProfile (MQExperiment* expmnt, int scanno);
00148 int MQExperiment_isScanProfileUncompressed(MQExperiment* expmnt, int scanno);
00149 int MQExperiment_isScanProfileCompressed(MQExperiment* expmnt, int scanno);
00150 int MQExperiment_hasScanMZRulerID(MQExperiment* expmnt, int scanno, MQByte mzrulerID);
00151
00152 void MQExperiment_setStrings(MQExperiment* expmnt, char* szExpName);
00153 int MQExperiment_verifyInstrumentMethod(MQExperiment* MQExperiment);
00154
00155
00156
00157 void MQExperiment_createProcFolder (MQExperiment* expmnt);
00158 void MQExperiment_createProcMapsFolder (MQExperiment* expmnt);
00159 void MQExperiment_createProcResultsFolder (MQExperiment* expmnt);
00160
00161 char* MQExperiment_createCmpFolder(MQExperiment* expmnt_1, MQExperiment* expmnt_2);
00162
00163
00164 float MQExperiment_getRTFromScan(MQExperiment* expmnt, int scanNumber);
00165 int MQExperiment_getScanFromRT(MQExperiment* expmnt, float RT);
00166 float MQExperiment_calcMeanRTSamplingTime(MQExperiment* expmnt);
00167
00168
00169
00170 void MQExperiment_setGlobalMZSamplingArray(MQExperiment* expmnt, MQByte rulerID);
00171 void MQExperiment_createGlobalMSSamplingArray(MQExperiment* exp, float binSize,
00172 float moz_start, float moz_stop);
00173
00174 int MQExperiment_getSizeGlobalMSSamplingArray(MQExperiment* exp, float binSize, float moz_start, float moz_stop);
00175
00176 void MQExperiment_saveGlobalMSSamplingArray(MQExperiment* expmnt);
00177 float* MQExperiment_getRTSamplingArray (MQExperiment* expmnt);
00178 float* MQExperiment_copyRTSamplingArray (MQExperiment* expmnt, int scan_start, int scan_stop, int* size);
00179 int* MQExperiment_copySCSamplingArray (MQExperiment* expmnt, int scan_start, int scan_stop, int* size);
00180
00181 float MQExperiment_getMOZFromMassBin (MQExperiment* expmnt, int binNumber);
00182 int MQExperiment_getMassBinFromMOZ (MQExperiment* expmnt, float MOZ);
00183 MQByte MQExperiment_getMZRulerID(MQExperiment* expmnt, int scanNumber);
00184
00185
00186
00187 Insets4f MQExperiment_getRealInsets(MQExperiment* expmnt, Insets4i* samplingInsets);
00188 void MQExperiment_getRangeOfIndependentScan(MQExperiment* MQExperiment, double* mass_start, double* mass_stop);
00189 int MQExperiment_getParentMSScan(MQExperiment* expmnt, int nScanNumber);
00190 int MQExperiment_isCentroidOnly(MQExperiment* expmnt);
00191 int MQExperiment_countScans(MQExperiment* expmnt, int type_bits);
00192 int MQExperiment_countScansWithinLimits(MQExperiment* expmnt, int scan_start, int scan_stop, int type);
00193 int MQExperiment_getMapTileIndex(MQExperiment* expmnt, int x, int y);
00194
00195
00196
00197 void MQExperiment_fprintMS2ScansAsTabDelimitedTable(FILE* fp, MQExperiment* expmnt);
00198 void MQExperiment_fprintMZRuler(FILE* fp, MQExperiment* expmnt);
00199 MQPoint2f* MQExperiment_convertPoint2fArrayFromCentroidToProfileWithLimits(MQExperiment* expmnt, MQPoint2f* dpCentroid, int csize, int bin_start, int bin_stop);
00200 float* MQExperiment_resampleIntensityVectorToMZRuler(MQExperiment* expmnt, int scanNumber, float* pUncopressedIntensity, int nSize, MQByte mzrulerID, int* count_inconsistancies);
00201
00202
00203 #endif