#ifndef BIOEM_MAP_H #define BIOEM_MAP_H #include "defs.h" #include #include class bioem_param; class bioem_map { public: myfloat_t points[BIOEM_MAP_SIZE_X][BIOEM_MAP_SIZE_Y]; }; class bioem_RefMap { public: bioem_RefMap() { RefMapsFFT = NULL; } int readRefMaps(bioem_param& param); int PreCalculateMapsFFT(bioem_param& param); int read_int(int *currlong, FILE *fin, int swap); int read_float(float *currfloat, FILE *fin, int swap); int read_float_empty (FILE *fin); int read_char_float (float *currfloat, FILE *fin) ; int test_mrc (const char *vol_file, int swap); int read_MRC(const char* filename, bioem_param& param); mycomplex_t* RefMapsFFT; const char* filemap; int ntotRefMap; bioem_map Ref[BIOEM_MAX_MAPS]; myfloat_t sum_RefMap[BIOEM_MAX_MAPS]; myfloat_t sumsquare_RefMap[BIOEM_MAX_MAPS]; myfloat_t ForLogProbfromRef[BIOEM_MAX_MAPS]; bool dumpMap, loadMap, readMRC, readMultMRC; __host__ __device__ inline myfloat_t get(int map, int x, int y) const {return(Ref[map].points[x][y]);} __host__ __device__ inline const myfloat_t* getp(int map, int x, int y) const {return(&Ref[map].points[x][y]);} }; class bioem_RefMap_Mod { public: const char* filemap; int ntotRefMap; myfloat_t Ref[BIOEM_MAP_SIZE_X][BIOEM_MAP_SIZE_Y][BIOEM_MAX_MAPS]; myfloat_t sum_RefMap[BIOEM_MAX_MAPS]; myfloat_t sumsquare_RefMap[BIOEM_MAX_MAPS]; myfloat_t ForLogProbfromRef[BIOEM_MAX_MAPS]; __host__ __device__ inline myfloat_t get(int map, int x, int y) const {return(Ref[x][y][map]);} bioem_RefMap_Mod() {ntotRefMap = 0;} bioem_RefMap_Mod(const bioem_RefMap& map) { ntotRefMap = map.ntotRefMap; memcpy(sum_RefMap, map.sum_RefMap, sizeof(sum_RefMap)); memcpy(sumsquare_RefMap, map.sumsquare_RefMap, sizeof(sumsquare_RefMap)); memcpy(ForLogProbfromRef, map.ForLogProbfromRef, sizeof(ForLogProbfromRef)); #pragma omp parallel for for (int i = 0; i < ntotRefMap; i++) { for (int j = 0; j < BIOEM_MAP_SIZE_X; j++) { for (int k = 0; k < BIOEM_MAP_SIZE_Y; k++) { Ref[j][k][i] = map.get(i, j, k); } } } } }; class bioem_Probability { public: myfloat_t forAngles[MAX_ORIENT]; myfloat_t Total; myfloat_t Constoadd; myfloat_t ConstAngle[MAX_ORIENT]; myfloat_t max_prob; int max_prob_cent_x, max_prob_cent_y, max_prob_orient, max_prob_conv; }; #endif