Exemple #1
0
def exercise_debye_waller():
  ucell = uctbx.unit_cell((5,7,9,80,100,130))
  assert abs(adptbx.debye_waller_factor_u_iso(ucell.d_star_sq((7,8,9))/4,0.025)
             - 0.006625427) < 1.e-6
  assert abs(adptbx.debye_waller_factor_u_iso(ucell, (7, 8, 9), 0.025)
             - 0.006625427) < 1.e-6
  u = (0.1, 0.2, 0.3, -0.04, 0.05, -0.06)
  assert abs(adptbx.debye_waller_factor_u_cif(ucell, (1, 2, 3), u)
             - 0.335822877927) < 1.e-6
  #
  u_star=(0.000002, 0.000001, 0.000003, 0.0000005, 0.0000004, 0.0000006)
  assert approx_equal(
    adptbx.debye_waller_factor_u_star_gradient_coefficients(h=(5,2,-1)),
    [25, 4, 1, 20, -10, -4])
  g = adptbx.debye_waller_factor_u_star_gradients(h=(5,2,-1), u_star=u_star)
  assert approx_equal(g*1.e-3,
    [-0.49289027387879081, -0.078862443820606531, -0.019715610955151633,
     -0.39431221910303266, 0.19715610955151633, 0.078862443820606531])
  assert approx_equal(
    adptbx.debye_waller_factor_u_star_curvature_coefficients(h=(5,2,-1)),
    [625,100,25,500,-250,-100,
       16,4,80,-40,-16,
         1,20,-10,-4,
           400,-200,-80,
             100,40,
               16])
  c = adptbx.debye_waller_factor_u_star_curvatures(h=(5,2,-1), u_star=u_star)
  assert approx_equal(c*1.e-6,
    [0.24323160081641265, 0.038917056130626029, 0.0097292640326565073,
     0.1945852806531301, -0.097292640326565052, -0.038917056130626029,
     0.006226728980900164, 0.001556682245225041, 0.031133644904500817,
     -0.015566822452250408, -0.006226728980900164, 0.00038917056130626025,
     0.0077834112261252041, -0.0038917056130626021, -0.001556682245225041,
     0.15566822452250412, -0.077834112261252059, -0.031133644904500817,
     0.038917056130626029, 0.015566822452250408, 0.006226728980900164])
Exemple #2
0
def exercise_debye_waller():
    ucell = uctbx.unit_cell((5, 7, 9, 80, 100, 130))
    assert abs(adptbx.debye_waller_factor_u_iso(ucell.d_star_sq((7, 8, 9)) / 4, 0.025) - 0.006625427) < 1.0e-6
    assert abs(adptbx.debye_waller_factor_u_iso(ucell, (7, 8, 9), 0.025) - 0.006625427) < 1.0e-6
    u = (0.1, 0.2, 0.3, -0.04, 0.05, -0.06)
    assert abs(adptbx.debye_waller_factor_u_cif(ucell, (1, 2, 3), u) - 0.335822877927) < 1.0e-6
    #
    u_star = (0.000002, 0.000001, 0.000003, 0.0000005, 0.0000004, 0.0000006)
    assert approx_equal(adptbx.debye_waller_factor_u_star_gradient_coefficients(h=(5, 2, -1)), [25, 4, 1, 20, -10, -4])
    g = adptbx.debye_waller_factor_u_star_gradients(h=(5, 2, -1), u_star=u_star)
    assert approx_equal(
        g * 1.0e-3,
        [
            -0.49289027387879081,
            -0.078862443820606531,
            -0.019715610955151633,
            -0.39431221910303266,
            0.19715610955151633,
            0.078862443820606531,
        ],
    )
    assert approx_equal(
        adptbx.debye_waller_factor_u_star_curvature_coefficients(h=(5, 2, -1)),
        [625, 100, 25, 500, -250, -100, 16, 4, 80, -40, -16, 1, 20, -10, -4, 400, -200, -80, 100, 40, 16],
    )
    c = adptbx.debye_waller_factor_u_star_curvatures(h=(5, 2, -1), u_star=u_star)
    assert approx_equal(
        c * 1.0e-6,
        [
            0.24323160081641265,
            0.038917056130626029,
            0.0097292640326565073,
            0.1945852806531301,
            -0.097292640326565052,
            -0.038917056130626029,
            0.006226728980900164,
            0.001556682245225041,
            0.031133644904500817,
            -0.015566822452250408,
            -0.006226728980900164,
            0.00038917056130626025,
            0.0077834112261252041,
            -0.0038917056130626021,
            -0.001556682245225041,
            0.15566822452250412,
            -0.077834112261252059,
            -0.031133644904500817,
            0.038917056130626029,
            0.015566822452250408,
            0.006226728980900164,
        ],
    )
Exemple #3
0
 def structure_factors(self, d_min):
     print "WARNING: RESULTS NOT VERIFIED"  # XXX
     miller_set = miller.build_set(
         crystal_symmetry=self,
         anomalous_flag=True,  # XXX always True?
         d_min=d_min)
     f_calc = flex.complex_double()
     for h in miller_set.indices():
         fc = 0j
         for scatterer in self.scatterers():
             site_symmetry = self.site_symmetry(scatterer.site)
             equiv_sites = sgtbx.sym_equiv_sites(site_symmetry)
             sum_exp_j_two_pi_hx = 0j
             for i_symop, x in enumerate(equiv_sites.coordinates()):
                 sum_hx = 0
                 for i in xrange(3):
                     sum_hx += h[i] * x[i]
                 phase = 2 * math.pi * sum_hx
                 exp_j_two_pi_hx = complex(math.cos(phase), math.sin(phase))
                 if (scatterer.anisotropic_flag):
                     r = self.space_group()(i_symop).r()
                     hr = h
                     dw = adptbx.debye_waller_factor_u_star(
                         hr, scatterer.u_star)
                     exp_j_two_pi_hx *= dw
                 sum_exp_j_two_pi_hx += exp_j_two_pi_hx
             b_j = scatterer.scattering_info.bound_coh_scatt_length()
             fc_site = scatterer.weight() * b_j * sum_exp_j_two_pi_hx
             if (not scatterer.anisotropic_flag):
                 d_star_sq = self.unit_cell().d_star_sq(h)
                 dw = adptbx.debye_waller_factor_u_iso(
                     d_star_sq / 4, scatterer.u_iso)
                 fc_site *= dw
             fc += fc_site
         f_calc.append(fc)
     return miller.array(miller_set=miller_set, data=f_calc)
Exemple #4
0
 def structure_factors(self, d_min):
   print "WARNING: RESULTS NOT VERIFIED" # XXX
   miller_set = miller.build_set(
     crystal_symmetry=self,
     anomalous_flag=True, # XXX always True?
     d_min=d_min)
   f_calc = flex.complex_double()
   for h in miller_set.indices():
     fc = 0j
     for scatterer in self.scatterers():
       site_symmetry = self.site_symmetry(scatterer.site)
       equiv_sites = sgtbx.sym_equiv_sites(site_symmetry)
       sum_exp_j_two_pi_hx = 0j
       for i_symop,x in enumerate(equiv_sites.coordinates()):
         sum_hx = 0
         for i in xrange(3):
           sum_hx += h[i] * x[i]
         phase = 2 * math.pi * sum_hx
         exp_j_two_pi_hx = complex(math.cos(phase), math.sin(phase))
         if (scatterer.anisotropic_flag):
           r = self.space_group()(i_symop).r()
           hr = h
           dw = adptbx.debye_waller_factor_u_star(hr, scatterer.u_star)
           exp_j_two_pi_hx *= dw
         sum_exp_j_two_pi_hx += exp_j_two_pi_hx
       b_j = scatterer.scattering_info.bound_coh_scatt_length()
       fc_site = scatterer.weight() * b_j * sum_exp_j_two_pi_hx
       if (not scatterer.anisotropic_flag):
         d_star_sq = self.unit_cell().d_star_sq(h)
         dw = adptbx.debye_waller_factor_u_iso(d_star_sq/4, scatterer.u_iso)
         fc_site *= dw
       fc += fc_site
     f_calc.append(fc)
   return miller.array(
     miller_set=miller_set,
     data=f_calc)
Exemple #5
0
def exercise_interface():
  episq = 8*(math.pi**2)
  assert approx_equal(adptbx.u_as_b(2.3), 2.3*episq)
  assert approx_equal(adptbx.b_as_u(adptbx.u_as_b(2.3)), 2.3)
  u = (3,4,9, 2,1,7)
  assert approx_equal(adptbx.u_as_b(u), [x*episq for x in u])
  assert approx_equal(adptbx.b_as_u(adptbx.u_as_b(u)), u)
  uc = uctbx.unit_cell((5,4,7,80,110,100))
  for fw,bw in ((adptbx.u_cif_as_u_star, adptbx.u_star_as_u_cif),
                (adptbx.u_cart_as_u_star, adptbx.u_star_as_u_cart),
                (adptbx.u_cart_as_u_cif, adptbx.u_cif_as_u_cart),
                (adptbx.u_cart_as_beta, adptbx.beta_as_u_cart),
                (adptbx.u_cif_as_beta, adptbx.beta_as_u_cif)):
    assert approx_equal(bw(uc, fw(uc, u)), u)
  assert approx_equal(adptbx.beta_as_u_star(adptbx.u_star_as_beta(u)), u)
  assert approx_equal(adptbx.u_cart_as_u_iso(adptbx.u_iso_as_u_cart(2.3)), 2.3)
  for fw,bw in ((adptbx.u_iso_as_u_star, adptbx.u_star_as_u_iso),
                (adptbx.u_iso_as_u_cif, adptbx.u_cif_as_u_iso),
                (adptbx.u_iso_as_beta, adptbx.beta_as_u_iso)):
    assert approx_equal(bw(uc, fw(uc, 2.3)), 2.3)
  fc = adptbx.factor_u_cart_u_iso(u_cart=u)
  assert approx_equal(fc.u_iso, adptbx.u_cart_as_u_iso(u))
  assert approx_equal(
    fc.u_cart_minus_u_iso,
    [uii-fc.u_iso for uii in u[:3]]+list(u[3:]))
  f = adptbx.factor_u_star_u_iso(
    unit_cell=uc, u_star=adptbx.u_cart_as_u_star(uc, u))
  assert approx_equal(f.u_iso, fc.u_iso)
  assert approx_equal(
    f.u_star_minus_u_iso,
    adptbx.u_cart_as_u_star(uc, fc.u_cart_minus_u_iso))
  f = adptbx.factor_u_cif_u_iso(
    unit_cell=uc, u_cif=adptbx.u_cart_as_u_cif(uc, u))
  assert approx_equal(f.u_iso, fc.u_iso)
  assert approx_equal(
    f.u_cif_minus_u_iso,
    adptbx.u_cart_as_u_cif(uc, fc.u_cart_minus_u_iso))
  f = adptbx.factor_beta_u_iso(
    unit_cell=uc, beta=adptbx.u_cart_as_beta(uc, u))
  assert approx_equal(f.u_iso, fc.u_iso)
  assert approx_equal(
    f.beta_minus_u_iso,
    adptbx.u_cart_as_beta(uc, fc.u_cart_minus_u_iso))
  assert approx_equal(adptbx.debye_waller_factor_b_iso(0.25,2.3),
                      math.exp(-2.3*0.25))
  assert approx_equal(adptbx.debye_waller_factor_u_iso(0.25,2.3),
                      math.exp(-2.3*episq*0.25))
  assert approx_equal(adptbx.debye_waller_factor_b_iso(uc, (1,2,3), 2.3),
                      adptbx.debye_waller_factor_u_iso(uc, (1,2,3), 2.3/episq))
  u_star = adptbx.u_cart_as_u_star(uc, u)
  dw = adptbx.debye_waller_factor_u_star((1,2,3), u_star)
  assert approx_equal(dw, adptbx.debye_waller_factor_beta((1,2,3),
                            adptbx.u_star_as_beta(u_star)))
  assert approx_equal(dw, adptbx.debye_waller_factor_u_cif(uc, (1,2,3),
                            adptbx.u_star_as_u_cif(uc, u_star)))
  assert approx_equal(dw, adptbx.debye_waller_factor_u_cart(uc, (1,2,3),
                            adptbx.u_star_as_u_cart(uc, u_star)))
  for e in adptbx.eigenvalues(u):
    check_eigenvalue(u, e)
  assert not adptbx.is_positive_definite(adptbx.eigenvalues(u))
  assert not adptbx.is_positive_definite(adptbx.eigenvalues(u), 0)
  assert adptbx.is_positive_definite(adptbx.eigenvalues(u), 1.22)
  assert not adptbx.is_positive_definite(u)
  assert not adptbx.is_positive_definite(u, 0)
  assert adptbx.is_positive_definite(u, 1.22)
  up = (0.534, 0.812, 0.613, 0.0166, 0.134, -0.0124)
  s = adptbx.eigensystem(up)
  assert approx_equal(s.values(), (0.813132, 0.713201, 0.432668))
  for i in xrange(3):
    check_eigenvector(up, s.values()[i], s.vectors(i))
  c = (1,2,3, 3,-4,5, 4,5,6)
  v = (198,18,1020,116,447,269)
  assert approx_equal(adptbx.c_u_c_transpose(c, u), v)
  assert approx_equal(adptbx.eigensystem(u).values(),
    (14.279201519086316, 2.9369143826320214, -1.2161159017183376))
  s = adptbx.eigensystem(up)
  try: s.vectors(4)
  except RuntimeError, e: assert str(e).endswith("Index out of range.")
  else: raise Exception_expected
  uf = adptbx.eigenvalue_filtering(u_cart=u, u_min=0)
  assert approx_equal(uf, (3.0810418, 4.7950710, 9.3400030,
                           1.7461615, 1.1659954, 6.4800706))
  uf = adptbx.eigenvalue_filtering(u_cart=u, u_min=0, u_max=3)
  assert approx_equal(uf, (2.7430890, 1.0378360, 2.1559895,
                           0.6193215, -0.3921632, 1.2846854))
  uf = adptbx.eigenvalue_filtering(u_cart=u, u_min=0, u_max=3)
  assert approx_equal(scitbx.linalg.eigensystem.real_symmetric(u).values(),
                      (14.2792015, 2.9369144, -1.2161159))
  assert approx_equal(scitbx.linalg.eigensystem.real_symmetric(uf).values(),
                      (3, 2.9369144, 0))
  uf = adptbx.eigenvalue_filtering(up)
  assert approx_equal(uf, up)
Exemple #6
0
def exercise_interface():
    episq = 8 * (math.pi**2)
    assert approx_equal(adptbx.u_as_b(2.3), 2.3 * episq)
    assert approx_equal(adptbx.b_as_u(adptbx.u_as_b(2.3)), 2.3)
    u = (3, 4, 9, 2, 1, 7)
    assert approx_equal(adptbx.u_as_b(u), [x * episq for x in u])
    assert approx_equal(adptbx.b_as_u(adptbx.u_as_b(u)), u)
    uc = uctbx.unit_cell((5, 4, 7, 80, 110, 100))
    for fw, bw in ((adptbx.u_cif_as_u_star, adptbx.u_star_as_u_cif),
                   (adptbx.u_cart_as_u_star, adptbx.u_star_as_u_cart),
                   (adptbx.u_cart_as_u_cif, adptbx.u_cif_as_u_cart),
                   (adptbx.u_cart_as_beta, adptbx.beta_as_u_cart),
                   (adptbx.u_cif_as_beta, adptbx.beta_as_u_cif)):
        assert approx_equal(bw(uc, fw(uc, u)), u)
    assert approx_equal(adptbx.beta_as_u_star(adptbx.u_star_as_beta(u)), u)
    assert approx_equal(adptbx.u_cart_as_u_iso(adptbx.u_iso_as_u_cart(2.3)),
                        2.3)
    for fw, bw in ((adptbx.u_iso_as_u_star, adptbx.u_star_as_u_iso),
                   (adptbx.u_iso_as_u_cif, adptbx.u_cif_as_u_iso),
                   (adptbx.u_iso_as_beta, adptbx.beta_as_u_iso)):
        assert approx_equal(bw(uc, fw(uc, 2.3)), 2.3)
    fc = adptbx.factor_u_cart_u_iso(u_cart=u)
    assert approx_equal(fc.u_iso, adptbx.u_cart_as_u_iso(u))
    assert approx_equal(fc.u_cart_minus_u_iso,
                        [uii - fc.u_iso for uii in u[:3]] + list(u[3:]))
    f = adptbx.factor_u_star_u_iso(unit_cell=uc,
                                   u_star=adptbx.u_cart_as_u_star(uc, u))
    assert approx_equal(f.u_iso, fc.u_iso)
    assert approx_equal(f.u_star_minus_u_iso,
                        adptbx.u_cart_as_u_star(uc, fc.u_cart_minus_u_iso))
    f = adptbx.factor_u_cif_u_iso(unit_cell=uc,
                                  u_cif=adptbx.u_cart_as_u_cif(uc, u))
    assert approx_equal(f.u_iso, fc.u_iso)
    assert approx_equal(f.u_cif_minus_u_iso,
                        adptbx.u_cart_as_u_cif(uc, fc.u_cart_minus_u_iso))
    f = adptbx.factor_beta_u_iso(unit_cell=uc,
                                 beta=adptbx.u_cart_as_beta(uc, u))
    assert approx_equal(f.u_iso, fc.u_iso)
    assert approx_equal(f.beta_minus_u_iso,
                        adptbx.u_cart_as_beta(uc, fc.u_cart_minus_u_iso))
    assert approx_equal(adptbx.debye_waller_factor_b_iso(0.25, 2.3),
                        math.exp(-2.3 * 0.25))
    assert approx_equal(adptbx.debye_waller_factor_u_iso(0.25, 2.3),
                        math.exp(-2.3 * episq * 0.25))
    assert approx_equal(
        adptbx.debye_waller_factor_b_iso(uc, (1, 2, 3), 2.3),
        adptbx.debye_waller_factor_u_iso(uc, (1, 2, 3), 2.3 / episq))
    u_star = adptbx.u_cart_as_u_star(uc, u)
    dw = adptbx.debye_waller_factor_u_star((1, 2, 3), u_star)
    assert approx_equal(
        dw,
        adptbx.debye_waller_factor_beta((1, 2, 3),
                                        adptbx.u_star_as_beta(u_star)))
    assert approx_equal(
        dw,
        adptbx.debye_waller_factor_u_cif(uc, (1, 2, 3),
                                         adptbx.u_star_as_u_cif(uc, u_star)))
    assert approx_equal(
        dw,
        adptbx.debye_waller_factor_u_cart(uc, (1, 2, 3),
                                          adptbx.u_star_as_u_cart(uc, u_star)))
    for e in adptbx.eigenvalues(u):
        check_eigenvalue(u, e)
    assert not adptbx.is_positive_definite(adptbx.eigenvalues(u))
    assert not adptbx.is_positive_definite(adptbx.eigenvalues(u), 0)
    assert adptbx.is_positive_definite(adptbx.eigenvalues(u), 1.22)
    assert not adptbx.is_positive_definite(u)
    assert not adptbx.is_positive_definite(u, 0)
    assert adptbx.is_positive_definite(u, 1.22)
    up = (0.534, 0.812, 0.613, 0.0166, 0.134, -0.0124)
    s = adptbx.eigensystem(up)
    assert approx_equal(s.values(), (0.813132, 0.713201, 0.432668))
    for i in xrange(3):
        check_eigenvector(up, s.values()[i], s.vectors(i))
    c = (1, 2, 3, 3, -4, 5, 4, 5, 6)
    v = (198, 18, 1020, 116, 447, 269)
    assert approx_equal(adptbx.c_u_c_transpose(c, u), v)
    assert approx_equal(
        adptbx.eigensystem(u).values(),
        (14.279201519086316, 2.9369143826320214, -1.2161159017183376))
    s = adptbx.eigensystem(up)
    try:
        s.vectors(4)
    except RuntimeError, e:
        assert str(e).endswith("Index out of range.")
Exemple #7
0
def exercise_interface():
    episq = 8 * (math.pi ** 2)
    assert approx_equal(adptbx.u_as_b(2.3), 2.3 * episq)
    assert approx_equal(adptbx.b_as_u(adptbx.u_as_b(2.3)), 2.3)
    u = (3, 4, 9, 2, 1, 7)
    assert approx_equal(adptbx.u_as_b(u), [x * episq for x in u])
    assert approx_equal(adptbx.b_as_u(adptbx.u_as_b(u)), u)
    uc = uctbx.unit_cell((5, 4, 7, 80, 110, 100))
    for fw, bw in (
        (adptbx.u_cif_as_u_star, adptbx.u_star_as_u_cif),
        (adptbx.u_cart_as_u_star, adptbx.u_star_as_u_cart),
        (adptbx.u_cart_as_u_cif, adptbx.u_cif_as_u_cart),
        (adptbx.u_cart_as_beta, adptbx.beta_as_u_cart),
        (adptbx.u_cif_as_beta, adptbx.beta_as_u_cif),
    ):
        assert approx_equal(bw(uc, fw(uc, u)), u)
    assert approx_equal(adptbx.beta_as_u_star(adptbx.u_star_as_beta(u)), u)
    assert approx_equal(adptbx.u_cart_as_u_iso(adptbx.u_iso_as_u_cart(2.3)), 2.3)
    for fw, bw in (
        (adptbx.u_iso_as_u_star, adptbx.u_star_as_u_iso),
        (adptbx.u_iso_as_u_cif, adptbx.u_cif_as_u_iso),
        (adptbx.u_iso_as_beta, adptbx.beta_as_u_iso),
    ):
        assert approx_equal(bw(uc, fw(uc, 2.3)), 2.3)
    fc = adptbx.factor_u_cart_u_iso(u_cart=u)
    assert approx_equal(fc.u_iso, adptbx.u_cart_as_u_iso(u))
    assert approx_equal(fc.u_cart_minus_u_iso, [uii - fc.u_iso for uii in u[:3]] + list(u[3:]))
    f = adptbx.factor_u_star_u_iso(unit_cell=uc, u_star=adptbx.u_cart_as_u_star(uc, u))
    assert approx_equal(f.u_iso, fc.u_iso)
    assert approx_equal(f.u_star_minus_u_iso, adptbx.u_cart_as_u_star(uc, fc.u_cart_minus_u_iso))
    f = adptbx.factor_u_cif_u_iso(unit_cell=uc, u_cif=adptbx.u_cart_as_u_cif(uc, u))
    assert approx_equal(f.u_iso, fc.u_iso)
    assert approx_equal(f.u_cif_minus_u_iso, adptbx.u_cart_as_u_cif(uc, fc.u_cart_minus_u_iso))
    f = adptbx.factor_beta_u_iso(unit_cell=uc, beta=adptbx.u_cart_as_beta(uc, u))
    assert approx_equal(f.u_iso, fc.u_iso)
    assert approx_equal(f.beta_minus_u_iso, adptbx.u_cart_as_beta(uc, fc.u_cart_minus_u_iso))
    assert approx_equal(adptbx.debye_waller_factor_b_iso(0.25, 2.3), math.exp(-2.3 * 0.25))
    assert approx_equal(adptbx.debye_waller_factor_u_iso(0.25, 2.3), math.exp(-2.3 * episq * 0.25))
    assert approx_equal(
        adptbx.debye_waller_factor_b_iso(uc, (1, 2, 3), 2.3),
        adptbx.debye_waller_factor_u_iso(uc, (1, 2, 3), 2.3 / episq),
    )
    u_star = adptbx.u_cart_as_u_star(uc, u)
    dw = adptbx.debye_waller_factor_u_star((1, 2, 3), u_star)
    assert approx_equal(dw, adptbx.debye_waller_factor_beta((1, 2, 3), adptbx.u_star_as_beta(u_star)))
    assert approx_equal(dw, adptbx.debye_waller_factor_u_cif(uc, (1, 2, 3), adptbx.u_star_as_u_cif(uc, u_star)))
    assert approx_equal(dw, adptbx.debye_waller_factor_u_cart(uc, (1, 2, 3), adptbx.u_star_as_u_cart(uc, u_star)))
    for e in adptbx.eigenvalues(u):
        check_eigenvalue(u, e)
    assert not adptbx.is_positive_definite(adptbx.eigenvalues(u))
    assert not adptbx.is_positive_definite(adptbx.eigenvalues(u), 0)
    assert adptbx.is_positive_definite(adptbx.eigenvalues(u), 1.22)
    assert not adptbx.is_positive_definite(u)
    assert not adptbx.is_positive_definite(u, 0)
    assert adptbx.is_positive_definite(u, 1.22)
    up = (0.534, 0.812, 0.613, 0.0166, 0.134, -0.0124)
    s = adptbx.eigensystem(up)
    assert approx_equal(s.values(), (0.813132, 0.713201, 0.432668))
    for i in xrange(3):
        check_eigenvector(up, s.values()[i], s.vectors(i))
    c = (1, 2, 3, 3, -4, 5, 4, 5, 6)
    v = (198, 18, 1020, 116, 447, 269)
    assert approx_equal(adptbx.c_u_c_transpose(c, u), v)
    assert approx_equal(adptbx.eigensystem(u).values(), (14.279201519086316, 2.9369143826320214, -1.2161159017183376))
    s = adptbx.eigensystem(up)
    try:
        s.vectors(4)
    except RuntimeError, e:
        assert str(e).endswith("Index out of range.")