Example #1
0
  def bond_deviations_z(self):
    '''
    Calculate rmsz of bond deviations

    Compute rmsz, the Root-Mean-Square of the z-scors for a set of data
    using z_i = {x_i - mu / sigma}  and rmsz = sqrt(mean(z*z))
    x_i: atcual bond length
    mu: geometry restraints mean
    sigma:  geometry restraints standard deviation
    z_i: z-score for bond i
    z: array of z_i

    The sigma and the (x_i - mu) are model constrains, geometry restraints. They function extracts
    from self, not calculated from data.

    :returns:
    b_rmsz: rmsz, root mean square of the z-scors of all bonds
    b_z_min/max: min/max abolute values of z-scors
    '''
    if(self.n_bond_proxies is not None):
      bond_deltas = self.bond_proxies.deltas(
          sites_cart=self.sites_cart, origin_id=0)
      if len(bond_deltas) >0:
        sigmas = [geometry_restraints.weight_as_sigma(x.weight) for x in self.bond_proxies.simple]
        z_scores = flex.double([(bond_delta/sigma) for bond_delta,sigma in zip(bond_deltas,sigmas)])
        b_rmsz = math.sqrt(flex.mean_default(z_scores*z_scores,0))
        b_z_max = flex.max_default(flex.abs(z_scores), 0)
        b_z_min = flex.min_default(flex.abs(z_scores), 0)
        return b_z_min, b_z_max, b_rmsz
      else:
        return 0,0,0
Example #2
0
  def angle_deviations_z(self):
    '''
    Calculate rmsz of angles deviations

    Compute rmsz, the Root-Mean-Square of the z-scors for a set of data
    using z_i = {x_i - mu / sigma}  and rmsz = sqrt(mean(z*z))

    Compute rmsz, the Root-Mean-Square of the z-scors for a set of data
    using z_i = {x_i - mu / sigma}  and rmsz = sqrt(mean(z*z))
    x_i: atcual bond angle
    mu: geometry restraints mean
    sigma:  geometry restraints standard deviation
    z_i: z-score for bond i
    z: array of z_i

    The sigma and the (x_i - mu) are model constrains, geometry restraints. They function extracts
    from self, not calculated from data.

    :returns:
    a_rmsz: rmsz, root mean square of the z-scors of all angles
    a_z_min/max: min/max values of z-scors
    '''
    if(self.n_angle_proxies is not None):
      angle_deltas = self.angle_proxies.proxy_select(origin_id=0).deltas(
          sites_cart=self.sites_cart)
      if len(angle_deltas) > 0:
        sigmas = [geometry_restraints.weight_as_sigma(x.weight) for x in self.angle_proxies]
        z_scores = flex.double([(angle_delta/sigma) for angle_delta,sigma in zip(angle_deltas,sigmas)])
        a_rmsz = math.sqrt(flex.mean_default(z_scores*z_scores,0))
        a_z_max = flex.max_default(flex.abs(z_scores), 0)
        a_z_min = flex.min_default(flex.abs(z_scores), 0)
        return a_z_min, a_z_max, a_rmsz
      else:
        return 0,0,0
Example #3
0
 def _show_sorted_item(self, f, prefix):
   print >> f, \
     "%s Mean Volume=%6.2e" %(prefix, self.mean_u_volume)
   print >> f, \
     "%s weight=%6.2e sigma=%6.2e rms_deltas=%6.2e residual=%6.2e"\
     %(prefix, self.weight, weight_as_sigma(weight=self.weight),
       self.rms_deltas(), self.residual())
Example #4
0
 def _show_sorted_item(self, f, prefix):
   adp_label = "Ueq"
   print >> f, \
     "%s          delta    sigma   weight" %(prefix),
   print >> f, "residual"
   rdr = " %6.2e" %self.residual()
   print >> f, "%s %-4s %9.2e %6.2e %6.2e%s" % (
     prefix, adp_label, self.delta(), weight_as_sigma(weight=self.weight),
     self.weight, rdr)
Example #5
0
 def _show_sorted_item(self, f, prefix):
   adp_labels = ("U11","U22","U33","U12","U13","U23")
   print >> f, \
     "%s         delta    sigma   weight rms_deltas residual" % (prefix)
   rdr = None
   for adp_label,delta in zip(adp_labels, self.deltas()):
     if (rdr is None):
       rdr = "   %6.2e %6.2e" % (self.rms_deltas(), self.residual())
     print >> f, "%s %s %9.2e %6.2e %6.2e%s" % (
       prefix, adp_label, delta, weight_as_sigma(weight=self.weight),
       self.weight, rdr)
     rdr = ""
Example #6
0
 def _show_sorted_item(self, f, prefix):
   adp_labels = ("U11","U22","U33","U12","U13","U23")
   deltas = self.deltas()
   if self.use_u_aniso == (False, False):
     adp_labels = ["Uiso"]
     deltas = deltas[:1]
   print >> f, \
     "%s          delta    sigma   weight" %(prefix),
   if len(adp_labels) == 1:
     print >> f, "residual"
   else: print >> f, "rms_deltas residual"
   rdr = None
   for adp_label,delta in zip(adp_labels, deltas):
     if (rdr is None):
       if len(adp_labels) == 1:
         rdr = " %6.2e" %self.residual()
       else:
         rdr = "   %6.2e %6.2e" % (self.rms_deltas(), self.residual())
     print >> f, "%s %-4s %9.2e %6.2e %6.2e%s" % (
       prefix, adp_label, delta, weight_as_sigma(weight=self.weight), self.weight, rdr)
     rdr = ""
Example #7
0
 def _show_sorted_item(self, f, prefix):
   print >> f, \
     "%s   delta_z    sigma   weight residual" % (prefix)
   print >> f, "%s %9.2e %6.2e %6.2e %6.2e" % (
     prefix, self.delta_z(), weight_as_sigma(weight=self.weight),
     self.weight, self.residual())
Example #8
0
 def _show_sorted_item(self, f, prefix):
     print("%s   delta_z    sigma   weight residual" % (prefix), file=f)
     print("%s %9.2e %6.2e %6.2e %6.2e" %
           (prefix, self.delta_z(), weight_as_sigma(weight=self.weight),
            self.weight, self.residual()),
           file=f)
Example #9
0
 def _show_sorted_item(self, f, prefix):
     print("%s Mean Volume=%6.2e" % (prefix, self.mean_u_volume), file=f)
     print("%s weight=%6.2e sigma=%6.2e rms_deltas=%6.2e residual=%6.2e"\
       %(prefix, self.weight, weight_as_sigma(weight=self.weight),
         self.rms_deltas(), self.residual()), file=f)