mqexperiment.h

00001 #ifndef _MQEXPERIMENT_H_
00002 #define _MQEXPERIMENT_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 "mqobject.lib"
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 // These bits use the last eight bits
00034 #define SCAN_MS1 0x00000001
00035 #define SCAN_MS2 0x00000002
00036 #define SCAN_MS3 0x00000004
00037 #define SCAN_MS4 0x00000008
00038 
00039 // These bits use the nest eight bits
00040 #define SCAN_PROFILE  0x00000100
00041 #define SCAN_CENTROID 0x00000200
00042 
00043 // These bits use the nest eight bits
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     // ******** Directories *********
00066 
00072     char*       szName;
00073     char*       szFileName;
00074     FILE*       pFile;
00075 
00081     char*       szProcExpDir;
00082 
00083 
00084     char*       szProcMapsDir;
00085     char*       szProcResultsDir;
00086 
00087     // ******** Size & Sampling Info *******
00088     Rectangle4i rect;
00089 
00090     // ********* Ruler Info *****************
00091 
00092     // RT Ruler
00093 
00094     MQScanHeader*   scanheaders;
00095     int             SIZE_GLOBAL_RT_SAMPLING_ARRAY;
00096     float*          GLOBAL_RT_SAMPLING_ARRAY;
00097 
00098     // MZ Ruler
00099     MQMZRuler*      rulers;
00100     int             nrulers;
00101     int             SIZE_GLOBAL_MS_SAMPLING_ARRAY;
00102     float*          GLOBAL_MS_SAMPLING_ARRAY;
00103 
00104     // ******** ChromatographyInfo **********
00105 
00106     char* szInstrumentInfo;
00107     char* szInstrumentName;
00108     float dInjectionVolume;
00109     char* szInjectionVolumeUnits;
00110 
00111     // FileFormatSpecific
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 // CREATING DIRECTORIES
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 // RT SAMPLING ARRAY
00164 float   MQExperiment_getRTFromScan(MQExperiment* expmnt, int scanNumber);
00165 int     MQExperiment_getScanFromRT(MQExperiment* expmnt, float RT);
00166 float   MQExperiment_calcMeanRTSamplingTime(MQExperiment* expmnt);
00167 
00168 // MS SAMPLING ARRAY
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 // MISCELLANEOUS
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 // ************* PRINTING FUNCTIONS ********************
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

Generated on Tue Feb 7 11:54:26 2006 for libmqobject by  doxygen 1.4.6