Exemplo n.º 1
0
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)
Exemplo n.º 2
0
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
    )
Exemplo n.º 3
0
    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)