Пример #1
0
def simulation_zigzag(NB=5):
  mersenne_twister = flex.mersenne_twister(seed=0)
  body = six_dof_body(
    labels=["00", "01", "02"],
    sites=matrix.col_list([
      (0.3,-0.5,0),
      (0.4,0.5,0),
      (0,0,0)]),
    bonds=[(0,2),(1,2)],
    mersenne_twister=mersenne_twister)
  body.parent = -1
  bodies = [body]
  vu = matrix.col((0,1,0)).rotate_around_origin(
    axis=matrix.col((1,0,0)), angle=75, deg=True)
  vr = matrix.col((0,1,0))
  v = vu
  pivot = matrix.col((0,0,0))
  for ib in xrange(1,NB):
    body = revolute_body(
      labels=[str(ib)],
      sites=[pivot + v*0.5],
      bonds=[(-1,0)],
      pivot=pivot,
      normal=matrix.col((1,0,0)),
      mersenne_twister=mersenne_twister)
    body.parent = ib-1
    bodies.append(body)
    pivot += v
    if (v is vu): v = vr
    else:         v = vu
  return simulation(bodies=bodies)
Пример #2
0
def simulation_gly_with_nh():
  pdb = """\
ATOM      0  N   GLY A   1      10.949  12.815  15.189  0.00  0.00           N
ATOM      1  CA  GLY A   1      10.405  13.954  15.917  0.00  0.00           C
ATOM      2  C   GLY A   1      10.779  15.262  15.227  0.00  0.00           C
ATOM      3  O   GLY A   1       9.916  16.090  14.936  0.00  0.00           O
ATOM      4  H   GLY A   1      11.792  12.691  15.311  0.00  0.00           H
"""
  labels, sites = pdb_extract(pdb=pdb)
  mersenne_twister = flex.mersenne_twister(seed=0)
  body0 = six_dof_body(
    labels=labels[:3],
    sites=sites[:3],
    bonds=[(0,1),(1,2)],
    mersenne_twister=mersenne_twister)
  body0.parent = -1
  body1 = revolute_body(
    labels=labels[3:4],
    sites=sites[3:4],
    bonds=[(-1,0)],
    pivot=sites[2],
    normal=(sites[2]-sites[1]).normalize(),
    mersenne_twister=mersenne_twister)
  body1.parent = 0
  body2 = revolute_body(
    labels=labels[4:],
    sites=sites[4:],
    bonds=[(-3,0)],
    pivot=sites[0],
    normal=(sites[0]-sites[1]).normalize(),
    mersenne_twister=mersenne_twister)
  body2.parent = 0
  return simulation(bodies=[body0, body1, body2])
Пример #3
0
def simulation_ala_no_h():
  pdb = """\
ATOM      0  N   ALA A   1      10.949  12.815  15.189  0.00  0.00           N
ATOM      1  CA  ALA A   1      10.405  13.954  15.917  0.00  0.00           C
ATOM      2  C   ALA A   1      10.779  15.262  15.227  0.00  0.00           C
ATOM      3  CB  ALA A   1      10.908  13.950  17.351  0.00  0.00           C
ATOM      4  O   ALA A   1       9.916  16.090  14.936  0.00  0.00           O
"""
  labels, sites = pdb_extract(pdb=pdb)
  mersenne_twister = flex.mersenne_twister(seed=0)
  body0 = six_dof_body(
    labels=labels[:4],
    sites=sites[:4],
    bonds=[(0,1),(1,2),(1,3)],
    mersenne_twister=mersenne_twister)
  body0.parent = -1
  body1 = revolute_body(
    labels=labels[4:],
    sites=sites[4:],
    bonds=[(-2,0)],
    pivot=sites[2],
    normal=(sites[2]-sites[1]).normalize(),
    mersenne_twister=mersenne_twister)
  body1.parent = 0
  return simulation(bodies=[body0, body1])
Пример #4
0
def simulation_gly_with_nh():
    pdb = """\
ATOM      0  N   GLY A   1      10.949  12.815  15.189  0.00  0.00           N
ATOM      1  CA  GLY A   1      10.405  13.954  15.917  0.00  0.00           C
ATOM      2  C   GLY A   1      10.779  15.262  15.227  0.00  0.00           C
ATOM      3  O   GLY A   1       9.916  16.090  14.936  0.00  0.00           O
ATOM      4  H   GLY A   1      11.792  12.691  15.311  0.00  0.00           H
"""
    labels, sites = pdb_extract(pdb=pdb)
    mersenne_twister = flex.mersenne_twister(seed=0)
    body0 = six_dof_body(labels=labels[:3],
                         sites=sites[:3],
                         bonds=[(0, 1), (1, 2)],
                         mersenne_twister=mersenne_twister)
    body0.parent = -1
    body1 = revolute_body(labels=labels[3:4],
                          sites=sites[3:4],
                          bonds=[(-1, 0)],
                          pivot=sites[2],
                          normal=(sites[2] - sites[1]).normalize(),
                          mersenne_twister=mersenne_twister)
    body1.parent = 0
    body2 = revolute_body(labels=labels[4:],
                          sites=sites[4:],
                          bonds=[(-3, 0)],
                          pivot=sites[0],
                          normal=(sites[0] - sites[1]).normalize(),
                          mersenne_twister=mersenne_twister)
    body2.parent = 0
    return simulation(bodies=[body0, body1, body2])
Пример #5
0
def simulation_zigzag(NB=5):
    mersenne_twister = flex.mersenne_twister(seed=0)
    body = six_dof_body(labels=["00", "01", "02"],
                        sites=matrix.col_list([(0.3, -0.5, 0), (0.4, 0.5, 0),
                                               (0, 0, 0)]),
                        bonds=[(0, 2), (1, 2)],
                        mersenne_twister=mersenne_twister)
    body.parent = -1
    bodies = [body]
    vu = matrix.col((0, 1, 0)).rotate_around_origin(axis=matrix.col((1, 0, 0)),
                                                    angle=75,
                                                    deg=True)
    vr = matrix.col((0, 1, 0))
    v = vu
    pivot = matrix.col((0, 0, 0))
    for ib in xrange(1, NB):
        body = revolute_body(labels=[str(ib)],
                             sites=[pivot + v * 0.5],
                             bonds=[(-1, 0)],
                             pivot=pivot,
                             normal=matrix.col((1, 0, 0)),
                             mersenne_twister=mersenne_twister)
        body.parent = ib - 1
        bodies.append(body)
        pivot += v
        if (v is vu): v = vr
        else: v = vu
    return simulation(bodies=bodies)
Пример #6
0
def exercise_revolute(out, n_trials, n_dynamics_steps, delta_t=0.001):
  mersenne_twister = flex.mersenne_twister(seed=0)
  for i_trial in xrange(n_trials):
    body = revolute_body(mersenne_twister=mersenne_twister)
    body.parent = -1
    sim = simulation(bodies=[body])
    print >> out, "revolute:"
    relative_range = exercise_sim(
      out=out, n_dynamics_steps=n_dynamics_steps, delta_t=delta_t, sim=sim)
    if (out is not sys.stdout):
      assert relative_range < 1.e-4
Пример #7
0
def exercise_revolute(out, n_trials, n_dynamics_steps, delta_t=0.001):
  mersenne_twister = flex.mersenne_twister(seed=0)
  for i_trial in range(n_trials):
    body = revolute_body(mersenne_twister=mersenne_twister)
    body.parent = -1
    sim = simulation(bodies=[body])
    print("revolute:", file=out)
    relative_range = exercise_sim(
      out=out, n_dynamics_steps=n_dynamics_steps, delta_t=delta_t, sim=sim)
    if (out is not sys.stdout):
      assert relative_range < 1.e-4
Пример #8
0
def exercise_six_dof(out, n_trials, n_dynamics_steps, delta_t=0.001):
  mersenne_twister = flex.mersenne_twister(seed=0)
  for n_sites in xrange(1,4):
    for i_trial in xrange(n_trials):
      body = six_dof_body(mersenne_twister=mersenne_twister, n_sites=n_sites)
      body.parent = -1
      sim = simulation(bodies=[body])
      print >> out, "six_dof number of sites:", n_sites
      relative_range = exercise_sim(
        out=out, n_dynamics_steps=n_dynamics_steps, delta_t=delta_t, sim=sim)
      if (out is not sys.stdout):
        assert relative_range < 1.e-4
Пример #9
0
def exercise_six_dof(out, n_trials, n_dynamics_steps, delta_t=0.001):
  mersenne_twister = flex.mersenne_twister(seed=0)
  for n_sites in range(1,4):
    for i_trial in range(n_trials):
      body = six_dof_body(mersenne_twister=mersenne_twister, n_sites=n_sites)
      body.parent = -1
      sim = simulation(bodies=[body])
      print("six_dof number of sites:", n_sites, file=out)
      relative_range = exercise_sim(
        out=out, n_dynamics_steps=n_dynamics_steps, delta_t=delta_t, sim=sim)
      if (out is not sys.stdout):
        assert relative_range < 1.e-4
Пример #10
0
def exercise_revolute2(out, n_trials, n_dynamics_steps, delta_t=0.001):
    mersenne_twister = flex.mersenne_twister(seed=0)
    for i_trial in xrange(n_trials):
        body1 = revolute_body(mersenne_twister=mersenne_twister)
        body1.parent = -1
        body2 = revolute_body(mersenne_twister=mersenne_twister, prev=body1)
        body2.parent = 0
        sim = simulation(bodies=[body1, body2])
        print >> out, "revolute2:"
        relative_range = exercise_sim(out=out,
                                      n_dynamics_steps=n_dynamics_steps,
                                      delta_t=delta_t,
                                      sim=sim)
        if (out is not sys.stdout):
            assert relative_range < 1.e-4
Пример #11
0
def simulation_ala_with_h():
  pdb = """\
ATOM      0  N   ALA A   1      10.949  12.815  15.189  0.00  0.00           N
ATOM      1  CA  ALA A   1      10.405  13.954  15.917  0.00  0.00           C
ATOM      2  C   ALA A   1      10.779  15.262  15.227  0.00  0.00           C
ATOM      3  HA  ALA A   1       9.428  13.887  15.936  0.00  0.00           H
ATOM      4  O   ALA A   1       9.916  16.090  14.936  0.00  0.00           O
ATOM      5  H   ALA A   1      11.792  12.691  15.311  0.00  0.00           H
ATOM      6  CB  ALA A   1      10.908  13.950  17.351  0.00  0.00           C
ATOM      7  HB1 ALA A   1      10.627  13.138  17.778  0.00  0.00           H
ATOM      8  HB2 ALA A   1      10.540  14.707  17.813  0.00  0.00           H
ATOM      9  HB3 ALA A   1      11.867  14.004  17.346  0.00  0.00           H
"""
  labels, sites = pdb_extract(pdb=pdb)
  mersenne_twister = flex.mersenne_twister(seed=0)
  body0 = six_dof_body(
    labels=labels[:4],
    sites=sites[:4],
    bonds=[(0,1),(1,2),(1,3)],
    mersenne_twister=mersenne_twister)
  body0.parent = -1
  body1 = revolute_body(
    labels=labels[4:5],
    sites=sites[4:5],
    bonds=[(-2,0)],
    pivot=sites[2],
    normal=(sites[2]-sites[1]).normalize(),
    mersenne_twister=mersenne_twister)
  body1.parent = 0
  body2 = revolute_body(
    labels=labels[5:6],
    sites=sites[5:6],
    bonds=[(-4,0)],
    pivot=sites[0],
    normal=(sites[0]-sites[1]).normalize(),
    mersenne_twister=mersenne_twister)
  body2.parent = 0
  body3 = revolute_body(
    labels=labels[6:],
    sites=sites[6:],
    bonds=[(-3,0),(0,1),(0,2),(0,3)],
    pivot=sites[6],
    normal=(sites[6]-sites[1]).normalize(),
    mersenne_twister=mersenne_twister)
  body3.parent = 0
  return simulation(bodies=[body0, body1, body2, body3])
Пример #12
0
def exercise_six_dof2(out, n_trials, n_dynamics_steps, delta_t=0.001):
    mersenne_twister = flex.mersenne_twister(seed=1)
    for n_sites in xrange(1, 4):
        for i_trial in xrange(n_trials):
            body1 = six_dof_body(mersenne_twister=mersenne_twister,
                                 n_sites=n_sites)
            body1.parent = -1
            body2 = six_dof_body(mersenne_twister=mersenne_twister,
                                 n_sites=n_sites)
            body2.parent = 0
            sim = simulation(bodies=[body1, body2])
            print >> out, "six_dof2 number of sites:", n_sites
            relative_range = exercise_sim(out=out,
                                          n_dynamics_steps=n_dynamics_steps,
                                          delta_t=delta_t,
                                          sim=sim)
            if (out is not sys.stdout):
                assert relative_range < 1.e-4
Пример #13
0
def simulation_ala_with_h():
    pdb = """\
ATOM      0  N   ALA A   1      10.949  12.815  15.189  0.00  0.00           N
ATOM      1  CA  ALA A   1      10.405  13.954  15.917  0.00  0.00           C
ATOM      2  C   ALA A   1      10.779  15.262  15.227  0.00  0.00           C
ATOM      3  HA  ALA A   1       9.428  13.887  15.936  0.00  0.00           H
ATOM      4  O   ALA A   1       9.916  16.090  14.936  0.00  0.00           O
ATOM      5  H   ALA A   1      11.792  12.691  15.311  0.00  0.00           H
ATOM      6  CB  ALA A   1      10.908  13.950  17.351  0.00  0.00           C
ATOM      7  HB1 ALA A   1      10.627  13.138  17.778  0.00  0.00           H
ATOM      8  HB2 ALA A   1      10.540  14.707  17.813  0.00  0.00           H
ATOM      9  HB3 ALA A   1      11.867  14.004  17.346  0.00  0.00           H
"""
    labels, sites = pdb_extract(pdb=pdb)
    mersenne_twister = flex.mersenne_twister(seed=0)
    body0 = six_dof_body(labels=labels[:4],
                         sites=sites[:4],
                         bonds=[(0, 1), (1, 2), (1, 3)],
                         mersenne_twister=mersenne_twister)
    body0.parent = -1
    body1 = revolute_body(labels=labels[4:5],
                          sites=sites[4:5],
                          bonds=[(-2, 0)],
                          pivot=sites[2],
                          normal=(sites[2] - sites[1]).normalize(),
                          mersenne_twister=mersenne_twister)
    body1.parent = 0
    body2 = revolute_body(labels=labels[5:6],
                          sites=sites[5:6],
                          bonds=[(-4, 0)],
                          pivot=sites[0],
                          normal=(sites[0] - sites[1]).normalize(),
                          mersenne_twister=mersenne_twister)
    body2.parent = 0
    body3 = revolute_body(labels=labels[6:],
                          sites=sites[6:],
                          bonds=[(-3, 0), (0, 1), (0, 2), (0, 3)],
                          pivot=sites[6],
                          normal=(sites[6] - sites[1]).normalize(),
                          mersenne_twister=mersenne_twister)
    body3.parent = 0
    return simulation(bodies=[body0, body1, body2, body3])
Пример #14
0
def simulation_ala_no_h():
    pdb = """\
ATOM      0  N   ALA A   1      10.949  12.815  15.189  0.00  0.00           N
ATOM      1  CA  ALA A   1      10.405  13.954  15.917  0.00  0.00           C
ATOM      2  C   ALA A   1      10.779  15.262  15.227  0.00  0.00           C
ATOM      3  CB  ALA A   1      10.908  13.950  17.351  0.00  0.00           C
ATOM      4  O   ALA A   1       9.916  16.090  14.936  0.00  0.00           O
"""
    labels, sites = pdb_extract(pdb=pdb)
    mersenne_twister = flex.mersenne_twister(seed=0)
    body0 = six_dof_body(labels=labels[:4],
                         sites=sites[:4],
                         bonds=[(0, 1), (1, 2), (1, 3)],
                         mersenne_twister=mersenne_twister)
    body0.parent = -1
    body1 = revolute_body(labels=labels[4:],
                          sites=sites[4:],
                          bonds=[(-2, 0)],
                          pivot=sites[2],
                          normal=(sites[2] - sites[1]).normalize(),
                          mersenne_twister=mersenne_twister)
    body1.parent = 0
    return simulation(bodies=[body0, body1])
Пример #15
0
def simulation_tyr_with_h():
  pdb = """\
ATOM      0  CG  TYR A   1      11.007   9.417   9.446  1.00  0.79           C
ATOM      1  CD1 TYR A   1       9.923  10.155   8.940  1.00  1.42           C
ATOM      2  CD2 TYR A   1      10.765   8.288  10.238  1.00  1.41           C
ATOM      3  CE1 TYR A   1       8.612   9.760   9.229  1.00  1.61           C
ATOM      4  CE2 TYR A   1       9.453   7.895  10.525  1.00  1.42           C
ATOM      5  CZ  TYR A   1       8.377   8.631  10.021  1.00  1.11           C
ATOM      6  HD1 TYR A   1      10.092  11.024   8.328  1.00  2.14           H
ATOM      7  HD2 TYR A   1      11.596   7.718  10.630  1.00  2.21           H
ATOM      8  HE1 TYR A   1       7.780  10.329   8.841  1.00  2.44           H
ATOM      9  HE2 TYR A   1       9.270   7.023  11.135  1.00  2.13           H
ATOM     10  OH  TYR A   1       7.083   8.244  10.304  1.00  1.32           O
ATOM     11  HH  TYR A   1       6.494   8.723   9.717  1.00  2.00           H
ATOM     12  CB  TYR A   1      12.440   9.818   9.148  1.00  0.74           C
ATOM     13  HB2 TYR A   1      12.827   9.193   8.358  1.00  0.78           H
ATOM     14  HB3 TYR A   1      13.036   9.677  10.037  1.00  0.78           H
ATOM     15  N   TYR A   1      11.593  12.101   9.550  1.00  0.82           N
ATOM     16  CA  TYR A   1      12.527  11.286   8.721  1.00  0.75           C
ATOM     17  C   TYR A   1      12.160  11.413   7.239  1.00  0.76           C
ATOM     18  HA  TYR A   1      13.536  11.638   8.870  1.00  0.85           H
ATOM     19  O   TYR A   1      12.298  12.462   6.643  1.00  0.83           O
ATOM     20  H   TYR A   1      10.948  12.701   9.122  1.00  0.88           H
"""
  labels, sites = pdb_extract(pdb=pdb)
  mersenne_twister = flex.mersenne_twister(seed=0)
  body0 = six_dof_body(
    labels=labels[:11],
    sites=sites[:11],
    bonds=[(0,1),(0,2),(1,3),(2,4),(3,5),(4,5),(5,10),(1,6),(2,7),(3,8),(4,9)],
    mersenne_twister=mersenne_twister)
  body0.parent = -1
  body1 = revolute_body(
    labels=labels[11:12],
    sites=sites[11:12],
    bonds=[(-1,0)],
    pivot=sites[10],
    normal=(sites[10]-sites[5]).normalize(),
    mersenne_twister=mersenne_twister)
  body1.parent = 0
  body2 = revolute_body(
    labels=labels[12:15],
    sites=sites[12:15],
    bonds=[(-11,0),(0,1),(0,2)],
    pivot=sites[12],
    normal=(sites[12]-sites[0]).normalize(),
    mersenne_twister=mersenne_twister)
  body2.parent = 0
  body3 = revolute_body(
    labels=labels[15:19],
    sites=sites[15:19],
    bonds=[(-3,1),(0,1),(1,2),(1,3)],
    pivot=sites[16],
    normal=(sites[16]-sites[12]).normalize(),
    mersenne_twister=mersenne_twister)
  body3.parent = 2
  body4 = revolute_body(
    labels=labels[19:20],
    sites=sites[19:20],
    bonds=[(-2,0)],
    pivot=sites[17],
    normal=(sites[17]-sites[16]).normalize(),
    mersenne_twister=mersenne_twister)
  body4.parent = 3
  body5 = revolute_body(
    labels=labels[20:21],
    sites=sites[20:21],
    bonds=[(-4,0)],
    pivot=sites[15],
    normal=(sites[15]-sites[16]).normalize(),
    mersenne_twister=mersenne_twister)
  body5.parent = 3
  return simulation(bodies=[body0, body1, body2, body3, body4, body5])
Пример #16
0
def simulation_tyr_with_h():
    pdb = """\
ATOM      0  CG  TYR A   1      11.007   9.417   9.446  1.00  0.79           C
ATOM      1  CD1 TYR A   1       9.923  10.155   8.940  1.00  1.42           C
ATOM      2  CD2 TYR A   1      10.765   8.288  10.238  1.00  1.41           C
ATOM      3  CE1 TYR A   1       8.612   9.760   9.229  1.00  1.61           C
ATOM      4  CE2 TYR A   1       9.453   7.895  10.525  1.00  1.42           C
ATOM      5  CZ  TYR A   1       8.377   8.631  10.021  1.00  1.11           C
ATOM      6  HD1 TYR A   1      10.092  11.024   8.328  1.00  2.14           H
ATOM      7  HD2 TYR A   1      11.596   7.718  10.630  1.00  2.21           H
ATOM      8  HE1 TYR A   1       7.780  10.329   8.841  1.00  2.44           H
ATOM      9  HE2 TYR A   1       9.270   7.023  11.135  1.00  2.13           H
ATOM     10  OH  TYR A   1       7.083   8.244  10.304  1.00  1.32           O
ATOM     11  HH  TYR A   1       6.494   8.723   9.717  1.00  2.00           H
ATOM     12  CB  TYR A   1      12.440   9.818   9.148  1.00  0.74           C
ATOM     13  HB2 TYR A   1      12.827   9.193   8.358  1.00  0.78           H
ATOM     14  HB3 TYR A   1      13.036   9.677  10.037  1.00  0.78           H
ATOM     15  N   TYR A   1      11.593  12.101   9.550  1.00  0.82           N
ATOM     16  CA  TYR A   1      12.527  11.286   8.721  1.00  0.75           C
ATOM     17  C   TYR A   1      12.160  11.413   7.239  1.00  0.76           C
ATOM     18  HA  TYR A   1      13.536  11.638   8.870  1.00  0.85           H
ATOM     19  O   TYR A   1      12.298  12.462   6.643  1.00  0.83           O
ATOM     20  H   TYR A   1      10.948  12.701   9.122  1.00  0.88           H
"""
    labels, sites = pdb_extract(pdb=pdb)
    mersenne_twister = flex.mersenne_twister(seed=0)
    body0 = six_dof_body(labels=labels[:11],
                         sites=sites[:11],
                         bonds=[(0, 1), (0, 2), (1, 3), (2, 4), (3, 5), (4, 5),
                                (5, 10), (1, 6), (2, 7), (3, 8), (4, 9)],
                         mersenne_twister=mersenne_twister)
    body0.parent = -1
    body1 = revolute_body(labels=labels[11:12],
                          sites=sites[11:12],
                          bonds=[(-1, 0)],
                          pivot=sites[10],
                          normal=(sites[10] - sites[5]).normalize(),
                          mersenne_twister=mersenne_twister)
    body1.parent = 0
    body2 = revolute_body(labels=labels[12:15],
                          sites=sites[12:15],
                          bonds=[(-11, 0), (0, 1), (0, 2)],
                          pivot=sites[12],
                          normal=(sites[12] - sites[0]).normalize(),
                          mersenne_twister=mersenne_twister)
    body2.parent = 0
    body3 = revolute_body(labels=labels[15:19],
                          sites=sites[15:19],
                          bonds=[(-3, 1), (0, 1), (1, 2), (1, 3)],
                          pivot=sites[16],
                          normal=(sites[16] - sites[12]).normalize(),
                          mersenne_twister=mersenne_twister)
    body3.parent = 2
    body4 = revolute_body(labels=labels[19:20],
                          sites=sites[19:20],
                          bonds=[(-2, 0)],
                          pivot=sites[17],
                          normal=(sites[17] - sites[16]).normalize(),
                          mersenne_twister=mersenne_twister)
    body4.parent = 3
    body5 = revolute_body(labels=labels[20:21],
                          sites=sites[20:21],
                          bonds=[(-4, 0)],
                          pivot=sites[15],
                          normal=(sites[15] - sites[16]).normalize(),
                          mersenne_twister=mersenne_twister)
    body5.parent = 3
    return simulation(bodies=[body0, body1, body2, body3, body4, body5])