diff options
-rw-r--r-- | src/hdf5-file.c | 11 | ||||
-rw-r--r-- | src/pattern_sim.c | 3 | ||||
-rw-r--r-- | src/peaks.c | 14 | ||||
-rw-r--r-- | src/peaks.h | 1 |
4 files changed, 25 insertions, 4 deletions
diff --git a/src/hdf5-file.c b/src/hdf5-file.c index 4272cbe6..a5fc7d26 100644 --- a/src/hdf5-file.c +++ b/src/hdf5-file.c @@ -45,6 +45,9 @@ struct hdfile *hdfile_open(const char *filename) f = malloc(sizeof(struct hdfile)); if ( f == NULL ) return NULL; + /* Please stop spamming my terminal */ + H5Eset_auto(H5E_DEFAULT, NULL, NULL); + f->fh = H5Fopen(filename, H5F_ACC_RDONLY, H5P_DEFAULT); if ( f->fh < 0 ) { ERROR("Couldn't open file: %s\n", filename); @@ -239,6 +242,11 @@ static void debodge_saturation(struct hdfile *f, struct image *image) dh = H5Dopen(f->fh, "/processing/hitfinder/peakinfo_saturated", H5P_DEFAULT); + if ( dh < 0 ) { + ERROR("Couldn't open saturation table.\n"); + return; + } + sh = H5Dget_space(dh); if ( sh < 0 ) { H5Dclose(dh); @@ -341,6 +349,7 @@ int hdf5_read(struct hdfile *f, struct image *image) mask_dh = H5Dopen(f->fh, "/processing/hitfinder/masks", H5P_DEFAULT); if ( mask_dh <= 0 ) { ERROR("Couldn't open flags\n"); + image->flags = NULL; } else { flags = malloc(sizeof(uint16_t)*f->nx*f->ny); r = H5Dread(mask_dh, H5T_NATIVE_UINT16, H5S_ALL, H5S_ALL, @@ -351,8 +360,8 @@ int hdf5_read(struct hdfile *f, struct image *image) } else { image->flags = flags; } + H5Dclose(mask_dh); } - H5Dclose(mask_dh); /* Read wavelength from file */ image->lambda = get_wavelength(f); diff --git a/src/pattern_sim.c b/src/pattern_sim.c index 130b6681..39931bdb 100644 --- a/src/pattern_sim.c +++ b/src/pattern_sim.c @@ -320,6 +320,8 @@ int main(int argc, char *argv[]) image.lambda = ph_en_to_lambda(eV_to_J(PHOTON_ENERGY)); /* Wavelength */ cell = load_cell_from_pdb(filename); image.filename = NULL; + image.features = NULL; + image.flags = NULL; #include "geometry-lcls.tmp" @@ -382,6 +384,7 @@ int main(int argc, char *argv[]) record_image(&image, !config_nonoise); if ( config_nearbragg ) { + find_projected_peaks(&image, cell); output_intensities(&image, cell, NULL, 1); } diff --git a/src/peaks.c b/src/peaks.c index c6b79d25..68482e94 100644 --- a/src/peaks.c +++ b/src/peaks.c @@ -167,6 +167,9 @@ static int integrate_peak(struct image *image, int xp, int yp, } p = find_panel(&image->det, x+xp, y+yp); + if ( p == NULL ) { + return 1; + } /* Area of one pixel */ pix_area = pow(1.0/p->res, 2.0); @@ -396,7 +399,7 @@ void dump_peaks(struct image *image, pthread_mutex_t *mutex) } -static int find_projected_peaks(struct image *image, UnitCell *cell) +int find_projected_peaks(struct image *image, UnitCell *cell) { int x, y; double ax, ay, az; @@ -561,8 +564,13 @@ void output_intensities(struct image *image, UnitCell *cell, struct imagefeature *f; /* Wait.. is there a really close feature which was detected? */ - f = image_feature_closest(image->features, hits[i].x, hits[i].y, - &d, &idx); + if ( image->features != NULL ) { + f = image_feature_closest(image->features, + hits[i].x, hits[i].y, + &d, &idx); + } else { + f = NULL; + } if ( (f != NULL) && (d < PEAK_REALLY_CLOSE) ) { int r; diff --git a/src/peaks.h b/src/peaks.h index 10cf5b0a..3335761c 100644 --- a/src/peaks.h +++ b/src/peaks.h @@ -24,5 +24,6 @@ extern void dump_peaks(struct image *image, pthread_mutex_t *mutex); extern void output_intensities(struct image *image, UnitCell *cell, pthread_mutex_t *mutex, int unpolar); extern int peak_sanity_check(struct image *image, UnitCell *cell); +extern int find_projected_peaks(struct image *image, UnitCell *cell); #endif /* PEAKS_H */ |