I have a question about recent change in bulk solvent scaling by @pafonine
In the k_mask_grid_search() we find new k_mask and corresponding k_isotropic in resolution shells via grid search.
Next we try to improve r-factor by linear interpolation of k_mask via populate_bin_to_individual_k_mask_linear_interpolation().
Finally we accept k_mask and k_isotropic if they improve r-factor.
The problem is that populate_bin_to_individual_k_mask_linear_interpolation() always use old k_isotropic to compute r-factor. Is there a rationale behind it? Shouldn't it use new k_isotropic instead?
|
def k_mask_grid_search(self, r_start): |
|
if(self.verbose): |
|
print(" k_mask_grid_search:", file=self.log) |
|
print(" r_start: %6.4f (r_low: %6.4f)"%(r_start,self._r_low())) |
|
#k_mask_trial_range = flex.double([i/1000. for i in range(0,650,50)]) |
|
k_mask_trial_range = flex.double([i/1000. for i in range(0,1010,10)]) |
|
k_mask = flex.double(self.f_obs.size(), 0) |
|
k_mask_bin = flex.double() |
|
k_isotropic = flex.double(self.f_obs.size(), 0) |
|
k_total = self.get_k_total() |
|
for i_cas, cas in enumerate(self.cores_and_selections): |
|
selection, core, selection_use, sel_work = cas |
|
f_obs = self.f_obs.select(selection) |
|
k_total_ = k_total.select(selection) |
|
k_mask_bin_, k_isotropic_bin_ = \ |
|
bulk_solvent.k_mask_and_k_overall_grid_search( |
|
f_obs.data()/k_total_, |
|
core.f_calc.data(), |
|
core.f_mask().data(), |
|
k_mask_trial_range, |
|
selection_use) |
|
k_mask_bin.append(k_mask_bin_) |
|
k_mask.set_selected(selection, k_mask_bin_) |
|
k_isotropic.set_selected(selection, k_isotropic_bin_) |
|
|
|
k_mask_bin_smooth = self.smooth(k_mask_bin) |
|
k_mask = self.populate_bin_to_individual_k_mask_linear_interpolation( |
|
k_mask_bin = k_mask_bin_smooth) |
|
|
|
r_try = self.try_scale(k_mask = k_mask, k_isotropic = k_isotropic) |
I have a question about recent change in bulk solvent scaling by @pafonine
In the
k_mask_grid_search()we find newk_maskand correspondingk_isotropicin resolution shells via grid search.Next we try to improve r-factor by linear interpolation of
k_maskviapopulate_bin_to_individual_k_mask_linear_interpolation().Finally we accept
k_maskandk_isotropicif they improve r-factor.The problem is that
populate_bin_to_individual_k_mask_linear_interpolation()always use oldk_isotropicto compute r-factor. Is there a rationale behind it? Shouldn't it use newk_isotropicinstead?cctbx_project/mmtbx/bulk_solvent/scaler.py
Lines 363 to 392 in a15fcd9