Main Page | Modules | Data Structures | File List | Data Fields | Globals

massspec/map_tk.h

Go to the documentation of this file.
00001 #ifndef _MAP_TK_H_ 00002 #define _MAP_TK_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 "massspec.lib" 00007 */ 00008 00016 /* ************** DEFINE THE MAP (OR PATCH) DATA STRUCTURE ************* */ 00017 00018 #define MAP_VALUE_NOT_SEGMENT FLT_MIN 00019 00020 extern float MAP2D_MAX_SIZE_IN_POINTS; 00021 00022 enum {REMOVE_EDGES, INCLUDE_EDGES}; 00023 00024 enum {RT_DIMENSION, MZ_DIMENSION}; 00025 00026 enum { MAP2D_POINT_INDEX, 00027 MAP2D_POINT_SAMPLING, 00028 MAP2D_POINT_REAL }; 00029 00034 typedef struct Map2D Map2D; 00035 00036 struct Map2D 00037 { 00038 unsigned isLoaded : 1; 00039 unsigned isBinary : 1; 00040 unsigned isMultiple : 1; 00041 unsigned isTile : 1; 00042 unsigned isSeam : 1; 00043 00044 unsigned isProcessed : 1; 00045 unsigned isGrayscale : 1; 00046 unsigned isDeconvolved : 1; 00047 00048 unsigned isMarked : 1; 00049 unsigned isFitted : 1; 00050 00051 unsigned nScanMode : 1; 00052 00053 /* Segmentation info */ 00054 unsigned isSegment : 1; 00055 unsigned isOnEdge : 1; 00056 00057 unsigned isStatCalculated : 1; 00058 00059 00060 00061 struct Attributes* pAttributes; 00062 int nAttributes; 00063 //int* pSegmentsOnEdge; 00064 //int nSegmentsOnEdge; 00065 00066 00067 00068 struct Map2D* parentMap; 00069 struct Map2D* labeledMap; 00070 00071 // ******** Universal Processing Identifiers ******** 00072 // Filename and path location 00073 // Experiment pointer 00074 // Experiment's name 00075 // Rectangle within experiment 00076 // Processing script 00077 // Processing script's name 00078 00079 // Location 00080 00084 char* path; 00085 00089 char* name; 00090 00091 // Experiment 00092 char* experiment; 00093 Experiment* expmnt; 00094 00095 // Session 00096 char* session; 00097 00098 // Borders 00099 Rectangle4i borders; 00100 00101 // Processing Script 00102 char* ps; 00103 ProcScript procscript; 00104 00105 // ********* END OF UNIVERSAL PROCESSING IDENTIFIERS **** 00106 00107 // MSMS Info 00108 void* pMS2Data; 00109 int nMS2Data; 00110 00111 Rectangle4i* pTiles; 00112 int nTiles; 00113 MQTileID bTile; 00114 00115 DescriptiveStatistics stat; 00116 00117 Dimensions2i dim; 00118 00124 float* rtsa; 00125 int* scsa; 00126 00132 float* mssa; 00133 00134 // Stat 00135 float max; 00136 00142 float** abu; 00143 } ; 00144 00145 00146 00147 00148 // *************** MAP MEMORY ALLOCATION ******************* 00149 00156 Map2D* Map2D_new(); 00157 00158 00166 void Map2D_mallocAbundanceMatrix(Map2D* map); 00167 00168 00173 void Map2D_mallocScanArray(Map2D* map); 00174 00175 00185 void Map2D_mallocDim(Map2D* map, Dimensions2i dim); 00186 00187 00198 void Map2D_malloc(Map2D* map, int no_of_scans, int no_of_bins); 00199 00200 00201 // ******************** INIT AND SETTING HEADER ************ 00202 00210 void Map2D_initHeader(Map2D* map); 00211 void Map2D_initAbundance(Map2D* map, float value); 00212 00213 void initMap(Map2D* MP); 00214 void initMapWithValue(Map2D* MP, float value); 00215 00225 void Map2D_setHeader(Map2D* map, Experiment* expmnt, Rectangle4i rect); 00226 void Map2D_setSamplingArrays(Map2D* map, Rectangle4i* rect); 00227 void Map2D_setBorders(Map2D* map, int x_start, int x_stop, int y_start, int y_stop); 00228 void Map2D_setProcScript(Map2D* map, ProcScript PS); 00229 int Map2D_fprintHeader(FILE* fp, Map2D* map); 00230 void Map2D_fprintAbundanceMatrix(FILE* fp, Map2D* map, int format); 00231 void Map2D_fprintAbundanceSubMatrix(FILE* fp, Map2D* map, Rectangle4i* rect); 00232 void Map2D_printHeader(Map2D *map, char* mapname); 00233 00234 // *************** COPY OPERATIONS ****************** 00235 00236 00237 void Map2D_copyHeader(Map2D* source, Map2D* dest); 00238 void Map2D_copy(Map2D* dest, Map2D* source); 00239 00240 // *************** MAP OPERATIONS ******************* 00241 00242 void Map2D_create(Map2D* map, Experiment* expmnt, Rectangle4i rect); 00243 void Map2D_createUsingTemplate(Map2D* template_map, Map2D* output_map, float init_value); 00244 Map2D Map2D_createBinaryMap(Map2D* map, float threshold); 00245 00246 void Map2D_destroy(Map2D *map); 00247 00248 void Map2D_invert_new(Map2D* out, Map2D* in); 00249 float Map2D_calcArea(Map2D* map); 00250 00251 float Map2D_getResidualVolume(Map2D *original, Map2D *fitted); 00252 void Map2D_subtractMaps(Map2D *one, Map2D *two, Map2D *diff); 00253 void Map2D_mergeMaps(Map2D *one, Map2D *two, Map2D *result); 00254 00255 void Map2D_applyLinearInterpolation(Map2D* map); 00256 int Map2D_applyErosion(Map2D *OMAP, Map2D *IMAP, char* szStructElemName); 00257 int Map2D_applyDilation(Map2D *OMAP, Map2D *IMAP, char* szStructElemName); 00258 int Map2D_applyClosing(Map2D *map, char* szStructElemName); 00259 int Map2D_applyClosingUsingOriginal(Map2D *out, Map2D *in, char* szStructElemName); 00260 int Map2D_applyOpening(Map2D *map, char* szStructElemName); 00261 00262 00263 // ************ BOUNDARY CHECKING FUNCTIONS 00264 00265 int Map2D_isMOZValid(Map2D *map, float MOZ); 00266 int Map2D_isRTValid(Map2D *map, float RT); 00267 00268 int Map2D_isMassBinValid(Map2D *map, int mass_bin); 00269 int Map2D_isScanValid(Map2D *map, int rt_bin); // rt_bin = scan 00270 00271 int Map2D_isMassIndexValid(Map2D *map, int mass_index); 00272 int Map2D_isRTIndexValid(Map2D *map, int rt_index); 00273 00274 // ************* MAP ROW && COLUMN OPERATIONS 00275 00276 enum { MASS_TYPE_MOZ, MASS_TYPE_BIN, MASS_TYPE_MZJ }; 00277 enum { RT_TYPE_MIN, RT_TYPE_SCAN, RT_TYPE_RTI }; 00278 00279 float* Map2D_getAbundanceArrayFromMassChrm(Map2D *map, int size, float index_value, int index_type); 00280 float* Map2D_getAbundanceArrayFromMassSpec(Map2D *map, int size, float index_value, int index_type); 00281 00282 float* Map2D_getAbundancePointerFromScan (Map2D* map, int scan); 00283 float* Map2D_getAbundancePointerFromIndex(Map2D* map, int scanIndex); 00284 00285 float* getAbundanceArrayOfMassSpecAtRTI(Map2D *map, int rt_index, 00286 int start, 00287 int stop); 00288 00289 void putMassChrmToMap2D_BIN(Map2D* MP, int bin, float* array, int size); 00290 void putMassChrmToMap2D_MZI(Map2D* MP, int mz_index, float* array, int size); 00291 00292 void putMassSpecToMap2D_RTI(Map2D *MP, int rt_index, float* array, int size); 00293 00294 Map2D Map2D_extractSubMap(Map2D* map, Rectangle4i* rect); 00295 00296 // ************* SAMPLING ARRAY OPERATIONS 00297 00298 float* getRTSamplingArrayFromMap2D(Map2D* MP); 00299 float* getMSSamplingArrayFromMap2D(Map2D* MP); 00300 00301 /* ******************************************************************** */ 00302 00303 void Map2D_transformPeak2i (Map2D* map, Peak2i* peak, int type); 00304 void Map2D_transformPeak2iArray(Map2D* map, Peak2i* peaks, int npeaks, int type); 00305 void Map2D_transformRectangle4i(Map2D* map, Rectangle4i* target, int type); 00306 00307 float Map2D_getValue (Map2D *map , Peak2i peak); 00308 00309 void Peak2i_fprintlnWithMapValue (FILE* fp, Peak2i peak, Map2D* map); 00310 void Peak2i_fprintlnWithMapValues (FILE* fp, Peak2i peak, Map2D* map); 00311 void Peak2iArray_fprintWithMapValues(FILE* fp, Peak2i* peaks, int start, int stop, Map2D* map); 00312 void Peak2iArray_fprintWithMapValue (FILE* fp, Peak2i* peaks, int start, int stop, struct Map2D* map); 00313 00314 int Map2D_getIndexFromScan (Map2D *map, int scan); 00315 int Map2D_getIndexFromMassBin(Map2D *map, int bin); 00316 00317 int Map2D_getIndexFromRT(Map2D* map, float RT); 00318 int Map2D_getIndexFromMOZ(Map2D* map, float MOZ); 00319 00320 int Map2D_getScanFromIndex (Map2D* map, int index); 00321 int Map2D_getMassBinFromIndex(Map2D* map, int binIndex); 00322 00323 float Map2D_getFloatScanFromIndex(Map2D* map, int scanIndex); 00324 float Map2D_getFloatMassBinFromIndex(Map2D* map, int binIndex); 00325 00326 float Map2D_getRTFromScan(Map2D* map, int scanNumber); 00327 float Map2D_getMOZFromMassBin(Map2D* map, int binNumber); 00328 00329 float Map2D_getRTFromIndex(Map2D* map, int scanIndex); 00330 float Map2D_getMOZFromIndex(Map2D* map, int binIndex); 00331 00332 int Map2D_findHighestIntensityScan(Map2D* map); 00333 void Map2D_findMinMax(Map2D *map, float* max, float* min); 00334 void Map2D_findMinMaxMultiple(Experiment* expmnt, char* szSession, char* type, float* max, float* min); 00335 int* Map2D_getHistogramMultiple(Experiment* expmnt, char* szSession, char* type, float max, int* nbins); 00336 int* Map2D_getHistogram(Map2D* map, float max, int* nBinSize, int* nbins); 00337 int Map2D_getNumberOfSegmentsMultiple(Experiment* expmnt, char* szSessionName); 00338 00349 struct Segment* Map2D_getSegmentArray(Map2D* map, int nMode, int* nSegment); 00350 00351 void Map2D_saveRawInfo(char* szPath, char* szMap2D, Map2D* map); 00352 00353 int Map2D_isPeakInMap(Map2D* map, int scan, int bin); 00354 float* Map2D_collapseToTIC(Map2D* map, int* nSize); 00355 int Map2D_alignMaps(Map2D* map1, Map2D* map2 /* map to be superimposed */); 00356 00357 void Map2D_trimEdges(Map2D* map, float value); 00358 void Map2D_eliminateNegativeValues(Map2D* map); 00359 00360 void Map2D_tile(Map2D* map, float mz_width); 00361 void Map2D_tileUsingSize(Map2D* map, float tile_size); 00362 00363 int Map2D_getNumberOfTiles(Experiment* expmnt, char* szSession); 00364 00365 int Map2D_aIsText(char* filename); 00366 int Map2D_pIsText(char* path, char* mapname, char* type); 00367 int Map2D_snIsText(Experiment* expmnt, char* szSession, char* szName); 00368 00369 Peak3iif* Map2D_getPeak3iifArray(Map2D* MAP, int* npeaks, int type); 00370 00371 char* Map2D_getFullHeaderName(Experiment* expmnt, char* szSession, char* type); 00372 00373 int Map2D_deconvolveUsingWienerFilter(Map2D* pMap, float dSD, int nDimension, 00374 int signal_scan, int noisy_scan); 00375 00376 int Map2D_deconvolve(Map2D* pMap, float dSD, int nDimension); 00377 int Map2D_getStatFromMassChrm(Map2D *map, int index_type, void* index_value, DescriptiveStatistics* stat); 00378 int Map2D_getStatFromMassSpec(Map2D *map, int index_type, void* index_value, DescriptiveStatistics* stat); 00379 00380 int Map2D_loadMS2Data(Map2D* map, Experiment* ms2_expmnt); 00381 00392 DescriptiveStatistics Stat_getDescriptiveStatForMap2D(Map2D* map ); 00393 00400 DescriptiveStatistics Stat_getDescriptiveStatForSubMap2D(Map2D* map, Rectangle4i* rect); 00401 00402 float Stat_getMedianForMap2D(Map2D* map, int mode); 00403 float Stat_getMeanForMap2D (Map2D* map, int mode); 00404 00405 float Stat_getAvgAbsDevFromValueForMap2D (Map2D* map, float median, int mode); 00406 float Stat_getMedianAbsDevFromValueForMap2D(Map2D* map, float median, int mode); 00407 00408 float Stat_getSDForMap2D(Map2D* map, float mean, int mode); 00409 00410 int Map2D_isMassSpecSignalConstant(Map2D *map, int index_type, void* index_value); 00411 00412 BaselineMark Map2D_getBaselineForPeak(Map2D* map, Peak2i* peak, int dimension); 00413 BaselineMark* Map2D_getBaselineForPeak2iArray(Map2D* map, Peak2i* peakarray, int nsize, int dimension); 00414 void Map2D_getPeakEndsInRT(Map2D* map, int scan, int bin, int* left, int* right); 00415 DescriptiveStatistics Stat_getDescriptiveStatForMap2D(Map2D* map); 00416 DescriptiveStatistics Stat_getDescriptiveStatForMap2DNonZero(Map2D* map); 00417 00418 00419 00420 00421 #endif 00422

Generated on Sun Feb 13 01:05:58 2005 for MapQuant by doxygen 1.3.7