def resolution_filter_from_array(intensities, min_i_mean_over_sigma_mean, min_cc_half): """Run the resolution filter using miller array data format.""" rparams = resolution_analysis.phil_defaults.extract().resolution resolutionizer = resolution_analysis.Resolutionizer(intensities, rparams) return _resolution_filter(resolutionizer, min_i_mean_over_sigma_mean, min_cc_half)
def resolution_limit(i_obs, min_completeness, n_bins): params = resolution_analysis.phil_defaults.extract().resolution params.nbins = n_bins r = resolution_analysis.Resolutionizer(i_obs, params) return r.resolution( resolution_analysis.metrics.COMPLETENESS, limit=min_completeness )
def resolution_filter(self): """Filter arrays on resolution.""" if not self.params.d_min and self.params.min_completeness: # Update self.params.d_min using resolution estimate params = resolution_analysis.phil_defaults.extract().resolution params.nbins = self.params.resolution_bins r = resolution_analysis.Resolutionizer(self.intensities, params) self.params.d_min = r.resolution( resolution_analysis.metrics.COMPLETENESS, limit=self.params.min_completeness, ).d_min logger.info("Estimated d_min: %.2f", self.params.d_min) if self.params.d_min or self.params.d_max: sel = flex.bool(self.intensities.size(), True) d_spacings = self.intensities.d_spacings().data() if self.params.d_min: sel &= d_spacings >= self.params.d_min if self.params.d_max: sel &= d_spacings <= self.params.d_max self.intensities = self.intensities.select(sel) self.dose = self.dose.select(sel)