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

massspec/structelem.h

00001 #ifndef _STRUCTELEM_H_ 00002 #define _STRUCTELEM_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 00009 typedef struct 00010 { 00011 int** matrix; 00012 Peak2i center; 00013 Dimensions2i dim; 00014 int sum; 00015 } StructElem; 00016 00017 int StructElem_create(StructElem* SE, char* name, int center_scan, int center_bin); 00018 void StructElem_init(StructElem* SE); 00019 int isStructElemValid(char* se); 00020 00021 #define INIT_STRUCTURING_ELEMENT(se)\ 00022 int ii, jj, k, l;\ 00023 Peak2i neigh;\ 00024 StructElem SE;\ 00025 if(!StructElem_create(&SE, se, -1, -1))\ 00026 {\ 00027 fprintf(stderr, "INIT_STRUCTURING_ELEMENT: Error! Illegal structuring element string %s\n", se);\ 00028 exit(1);\ 00029 } 00030 00031 00032 00033 #define DESTROY_STRUCTURING_ELEMENT() \ 00034 free_imatrix(SE.matrix, 1, SE.dim.SCAN_SIZE, 1, SE.dim.BIN_SIZE); 00035 00036 00037 #define FOR_ALL_POINTS_IN_STRUCTURING_ELEMENT(MAP, point) \ 00038 k = 1; \ 00039 for(ii = 1 - SE.center.rt_i; ii <= SE.dim.SCAN_SIZE - SE.center.rt_i; ii++) \ 00040 { \ 00041 l = 1; \ 00042 for(jj = 1 - SE.center.mz_j; jj <= SE.dim.BIN_SIZE - SE.center.mz_j; jj++) \ 00043 { \ 00044 neigh = Peak2i_new(point.rt_i+ii, point.mz_j+jj); \ 00045 if(isPointWithinRect(MAP->dim, neigh.rt_i, neigh.mz_j) && \ 00046 SE.matrix[k][l] == 1) \ 00047 { 00048 00049 #define FOR_ALL_POINTS_IN_STRE_AND_MESH(mesh, point) \ 00050 k = 1; \ 00051 for(ii = 1 - SE.center.rt_i; ii <= SE.dim.SCAN_SIZE - SE.center.rt_i; ii++) \ 00052 { \ 00053 l = 1; \ 00054 for(jj = 1 - SE.center.mz_j; jj <= SE.dim.BIN_SIZE - SE.center.mz_j; jj++) \ 00055 { \ 00056 neigh = Peak2i_new(point.rt_i+ii, point.mz_j+jj); \ 00057 if(Mesh2D_isPointInside(mesh, neigh.rt_i, neigh.mz_j) && \ 00058 SE.matrix[k][l] == 1) \ 00059 { 00060 00061 00062 #define END_FOR \ 00063 } \ 00064 l++; \ 00065 } \ 00066 k++; \ 00067 } 00068 00069 #endif 00070 00071

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