00001 
#ifndef _MAP_TK_H_
00002 
#define _MAP_TK_H_
00003 
00004 
00005 
00006 
00007 
00008 
00016 
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         
00054         
unsigned isSegment              : 1;
00055         
unsigned isOnEdge               : 1;
00056 
00057         
unsigned isStatCalculated : 1;
00058 
00059 
00060 
00061         
struct  Attributes*             pAttributes;
00062         
int                                             nAttributes;
00063         
00064         
00065 
00066         
00067 
00068         
struct Map2D*   parentMap;
00069         
struct Map2D*   labeledMap;
00070         
00071         
00072         
00073         
00074         
00075         
00076         
00077         
00078 
00079         
00080 
00084         
char*           
path;
00085 
00089         
char*           
name;
00090 
00091         
00092         
char*                   experiment;
00093         
Experiment*             expmnt;
00094 
00095         
00096         
char*                   session;
00097 
00098         
00099         
Rectangle4i             borders;
00100 
00101         
00102         
char*                   ps;
00103         ProcScript              procscript;
00104 
00105         
00106 
00107         
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         
00135         
float                   max;
00136         
00142         
float**                 abu;
00143 } ;
00144 
00145 
00146 
00147 
00148 
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 
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 
00235 
00236 
00237 
void    Map2D_copyHeader(Map2D* source, Map2D* dest);
00238 
void    Map2D_copy(Map2D* dest, Map2D* source);
00239 
00240 
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 
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); 
00270 
00271 
int Map2D_isMassIndexValid(Map2D *map, 
int mass_index);
00272 
int Map2D_isRTIndexValid(Map2D *map, 
int rt_index);
00273 
00274 
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 
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 );
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