From: <af...@us...> - 2007-08-17 01:01:45
|
Revision: 6169 http://cctbx.svn.sourceforge.net/cctbx/?rev=6169&view=rev Author: afonine Date: 2007-08-16 18:01:36 -0700 (Thu, 16 Aug 2007) Log Message: ----------- broken XN test fixed (forgotten flag added) Modified Paths: -------------- trunk/mmtbx/mmtbx/refinement/adp_refinement.py trunk/mmtbx/mmtbx/refinement/minimization.py Modified: trunk/mmtbx/mmtbx/refinement/adp_refinement.py =================================================================== --- trunk/mmtbx/mmtbx/refinement/adp_refinement.py 2007-08-16 14:48:52 UTC (rev 6168) +++ trunk/mmtbx/mmtbx/refinement/adp_refinement.py 2007-08-17 01:01:36 UTC (rev 6169) @@ -116,6 +116,7 @@ neutron_scattering_dict = None, xray_scattering_dict = None, wxnu_scale = None, + use_xn_grads_filtering = None, h_params = None): global time_adp_refinement_py timer = user_plus_sys_time() @@ -202,6 +203,7 @@ neutron_scattering_dict = neutron_scattering_dict, xray_scattering_dict = xray_scattering_dict, wxnu_scale = wxnu_scale, + use_xn_grads_filtering = use_xn_grads_filtering, h_params = h_params) self.minimized.collector.show(text = "LBFGS minimization", out = log) assert fmodel.xray_structure is model.xray_structure Modified: trunk/mmtbx/mmtbx/refinement/minimization.py =================================================================== --- trunk/mmtbx/mmtbx/refinement/minimization.py 2007-08-16 14:48:52 UTC (rev 6168) +++ trunk/mmtbx/mmtbx/refinement/minimization.py 2007-08-17 01:01:36 UTC (rev 6169) @@ -40,6 +40,7 @@ occupancy_max = None, occupancy_min = None, h_params = None, + use_xn_grads_filtering = None, u_min = adptbx.b_as_u(-100.0), u_max = adptbx.b_as_u(1000.0)): global time_site_individual @@ -248,33 +249,35 @@ if(self.refine_xyz): tt = flex.vec3_double(self.g) rr = flex.vec3_double(sf) - #for i, j, fd in zip(tt, rr, self.hd_selection): - # angle = flex.double(i).angle(flex.double(j), deg = True) - # if(angle >= 90.0): - # if(fd): tt[ii] = [0,0,0] - # else: rr[ii] = [0,0,0] - # #tt[ii] = [0,0,0] - # #rr[ii] = [0,0,0] - # #if(fd): tt[ii] = [tt[ii][0]/angle,tt[ii][1]/angle,tt[ii][2]/angle] - # #else: rr[ii] = [rr[ii][0]/angle,rr[ii][1]/angle,rr[ii][2]/angle] - # #tt[ii] = [tt[ii][0]/angle,tt[ii][1]/angle,tt[ii][2]/angle] - # #rr[ii] = [rr[ii][0]/angle,rr[ii][1]/angle,rr[ii][2]/angle] - # ii += 1 + if(self.use_xn_grads_filtering): + for i, j, fd in zip(tt, rr, self.hd_selection): + angle = flex.double(i).angle(flex.double(j), deg = True) + if(angle >= 90.0): + if(fd): tt[ii] = [0,0,0] + else: rr[ii] = [0,0,0] + #tt[ii] = [0,0,0] + #rr[ii] = [0,0,0] + #if(fd): tt[ii] = [tt[ii][0]/angle,tt[ii][1]/angle,tt[ii][2]/angle] + #else: rr[ii] = [rr[ii][0]/angle,rr[ii][1]/angle,rr[ii][2]/angle] + #tt[ii] = [tt[ii][0]/angle,tt[ii][1]/angle,tt[ii][2]/angle] + #rr[ii] = [rr[ii][0]/angle,rr[ii][1]/angle,rr[ii][2]/angle] + ii += 1 self.g = tt.as_double() + rr.as_double() * self.wn if(self.refine_adp): tt = self.g rr = sf - #for i, j, fd in zip(tt, rr, self.hd_selection): - # if(i*j < 0): - # if(fd): tt[ii] = 0. - # else: rr[ii] = 0. - # #tt[ii] = 0.0 - # #rr[ii] = 0.0 - # #if(fd): tt[ii] = tt[ii]/3. - # #else: rr[ii] = rr[ii]/3. - # #tt[ii] = tt[ii]/3. - # #rr[ii] = rr[ii]/3. - # ii += 1 + if(self.use_xn_grads_filtering): + for i, j, fd in zip(tt, rr, self.hd_selection): + if(i*j < 0): + if(fd): tt[ii] = 0. + else: rr[ii] = 0. + #tt[ii] = 0.0 + #rr[ii] = 0.0 + #if(fd): tt[ii] = tt[ii]/3. + #else: rr[ii] = rr[ii]/3. + #tt[ii] = tt[ii]/3. + #rr[ii] = rr[ii]/3. + ii += 1 self.g = tt + rr * self.wn if(self.refine_xyz and self.restraints_manager is not None and self.wr > 0.0): This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |