Пример #1
0
def exercise_sucrose(flipping_type, anomalous_flag, d_min, verbose=False, amplitude_type="quasi-E"):
    from smtbx import development

    target_structure = development.sucrose()

    print "Sucrose"
    exercise_one_structure(
        target_structure,
        flipping_type,
        anomalous_flag,
        d_min,
        grid_resolution_factor=1 / 2,
        verbose=verbose,
        amplitude_type=amplitude_type,
    )
Пример #2
0
    def __init__(self, m):
        test_case.__init__(self, m)
        self.xray_structure = development.sucrose()
        self.t_celsius = 20
        self.shall_refine_thermal_displacements = True
        self.constraints = [
            _.scalar_scaled_u(range(len(self.xray_structure.scatterers())))
        ]
        self.expected_reparametrisation_for_hydrogen_named = {}
        xs = self.xray_structure

        # Make one O atom isotropic to exercise scalar_scaled_u_iso on a non-H atom
        sc1 = xs.scatterers()[1]
        sc1.u_iso = sc1.u_iso_or_equiv(xs.unit_cell())
        sc1.set_use_u_iso_only()
        self.expected_mapping_to_grad_fc = tuple(range(271,
                                                       271 + 155))  # There are
Пример #3
0
def exercise_connectivity_table():
  xs = development.sucrose()
  connectivity = utils.connectivity_table(xs)
  pair_counts = [
    2, 2, 1, 2, 1, 2, 1, 2, 1, 2, 2, 1, 2, 1, 2, 1, 2, 1, 2, 4, 1, 4, 1,
    4, 1, 4, 1, 1, 4, 1, 4, 1, 4, 4, 1, 1, 4, 1, 4, 1, 4, 1, 4, 1, 1]
  assert approx_equal(connectivity.pair_asu_table.pair_counts(), pair_counts)
  connectivity.add_bond(0, 1)
  assert approx_equal(
    connectivity.pair_asu_table.pair_counts(),
    [3, 3, 1, 2, 1, 2, 1, 2, 1, 2, 2, 1, 2, 1, 2, 1, 2, 1, 2, 4, 1, 4, 1,
     4, 1, 4, 1, 1, 4, 1, 4, 1, 4, 4, 1, 1, 4, 1, 4, 1, 4, 1, 4, 1, 1])
  connectivity.add_bond(5, 5, rt_mx_ji=sgtbx.rt_mx("x+1,y,z"))
  assert connectivity.pair_asu_table.pair_counts()[5] == 4
  connectivity.remove_bond(0, 1)
  connectivity.remove_bond(5,5, rt_mx_ji=sgtbx.rt_mx("x+1,y,z"))
  assert approx_equal(connectivity.pair_asu_table.pair_counts(), pair_counts)
Пример #4
0
def exercise_sucrose(flipping_type,
                     anomalous_flag,
                     d_min,
                     verbose=False,
                     amplitude_type='quasi-E'):
    from smtbx import development
    target_structure = development.sucrose()

    print "Sucrose"
    exercise_one_structure(
        target_structure,
        flipping_type,
        anomalous_flag,
        d_min,
        grid_resolution_factor=1 / 2,
        verbose=verbose,
        amplitude_type=amplitude_type,
    )
Пример #5
0
def test_connectivity_table():
    xs = development.sucrose()
    connectivity = utils.connectivity_table(xs)
    pair_counts = [
        2, 2, 1, 2, 1, 2, 1, 2, 1, 2, 2, 1, 2, 1, 2, 1, 2, 1, 2, 4, 1, 4, 1, 4,
        1, 4, 1, 1, 4, 1, 4, 1, 4, 4, 1, 1, 4, 1, 4, 1, 4, 1, 4, 1, 1
    ]
    assert approx_equal(connectivity.pair_asu_table.pair_counts(), pair_counts)
    connectivity.add_bond(0, 1)
    assert approx_equal(connectivity.pair_asu_table.pair_counts(), [
        3, 3, 1, 2, 1, 2, 1, 2, 1, 2, 2, 1, 2, 1, 2, 1, 2, 1, 2, 4, 1, 4, 1, 4,
        1, 4, 1, 1, 4, 1, 4, 1, 4, 4, 1, 1, 4, 1, 4, 1, 4, 1, 4, 1, 1
    ])
    connectivity.add_bond(5, 5, rt_mx_ji=sgtbx.rt_mx("x+1,y,z"))
    assert connectivity.pair_asu_table.pair_counts()[5] == 4
    connectivity.remove_bond(0, 1)
    connectivity.remove_bond(5, 5, rt_mx_ji=sgtbx.rt_mx("x+1,y,z"))
    assert approx_equal(connectivity.pair_asu_table.pair_counts(), pair_counts)
Пример #6
0
def exercise_rigid_bond():
  xray_structure = development.sucrose()
  pair_sym_table = get_pair_sym_table(xray_structure)
  for table in (None,pair_sym_table):
    if table is None: xs = xray_structure
    else: xs = None
    restraints = \
      adp_restraints.rigid_bond_restraints(
        xray_structure=xs,
        pair_sym_table=table)
    assert restraints.proxies.size() == 60
    i_seqs = (9,14,28,32,36,38)
    restraints = \
      adp_restraints.rigid_bond_restraints(
        xray_structure=xs,
        pair_sym_table=table,
        i_seqs=i_seqs)
    expected_i_seqs = (
      (9,32),(9,36),(14,36),(14,32),(14,38),(32,36),(32,38),(36,38))
    expected_weights = [10000]*len(expected_i_seqs)
    proxies = restraints.proxies
    assert proxies.size() == len(expected_i_seqs)
    for i in range(proxies.size()):
      assert approx_equal(proxies[i].i_seqs, expected_i_seqs[i])
      assert approx_equal(proxies[i].weight, expected_weights[i])
    # add more restraints to same shared proxy
    i_seqs = (10,40,42)
    restraints = \
      adp_restraints.rigid_bond_restraints(
        xray_structure=xs,
        pair_sym_table=table,
        proxies=proxies,
        i_seqs=i_seqs)
    expected_i_seqs = (
      (9,32),(9,36),(14,36),(14,32),(14,38),(32,36),
      (32,38),(36,38),(10,42),(10,40),(40,42))
    expected_weights = [10000]*len(expected_i_seqs)
    proxies = restraints.proxies
    assert proxies.size() == len(expected_i_seqs)
    for i in range(proxies.size()):
      assert approx_equal(proxies[i].i_seqs, expected_i_seqs[i])
      assert approx_equal(proxies[i].weight, expected_weights[i])
Пример #7
0
def test_adp_similarity():
  xray_structure = development.sucrose()
  pair_sym_table = get_pair_sym_table(xray_structure)
  for table in (None,pair_sym_table):
    if table is None: xs = xray_structure
    else: xs = None
    restraints = \
      adp_restraints.adp_similarity_restraints(
        xray_structure=xs,
        pair_sym_table=table)
    assert restraints.proxies.size() == 24
    i_seqs = (9,14,28,32,36,38)
    restraints = \
      adp_restraints.adp_similarity_restraints(
        xray_structure=xs,
        pair_sym_table=table,
        i_seqs=i_seqs)
    expected_i_seqs = ((9,32),(14,36),(32,36),(36,38))
    expected_weights = (625,156.25,625,625)
    proxies = restraints.proxies
    assert proxies.size() == len(expected_i_seqs)
    for i in range(proxies.size()):
      assert approx_equal(proxies[i].i_seqs, expected_i_seqs[i])
      assert approx_equal(proxies[i].weight, expected_weights[i])
    # add more restraints to same shared proxy
    i_seqs = (3,23,40,42)
    restraints = \
      adp_restraints.adp_similarity_restraints(
        xray_structure=xs,
        pair_sym_table=table,
        proxies=proxies,
        i_seqs=i_seqs)
    expected_i_seqs = (
      (9,32),(14,36),(32,36),(36,38),(3,23),(40,42))
    expected_weights = (625,156.25,625,625,156.25,625)
    proxies = restraints.proxies
    assert proxies.size() == len(expected_i_seqs)
    for i in range(proxies.size()):
      assert approx_equal(proxies[i].i_seqs, expected_i_seqs[i])
      assert approx_equal(proxies[i].weight, expected_weights[i])
Пример #8
0
def exercise_isotropic_adp():
  xray_structure = development.sucrose()
  xray_structure.scatterers()[10].set_use_u_iso_only()
  pair_sym_table = get_pair_sym_table(xray_structure)
  for table in (None,pair_sym_table):
    restraints = \
      adp_restraints.isotropic_adp_restraints(
        xray_structure=xray_structure,
        pair_sym_table=table)
    assert restraints.proxies.size() == 22
    i_seqs = (9,14,28,32,36,38)
    expected_weights = (100,25,100,100,100,100)
    restraints = \
      adp_restraints.isotropic_adp_restraints(
        xray_structure=xray_structure,
        pair_sym_table=table,
        i_seqs=i_seqs)
    proxies = restraints.proxies
    assert proxies.size() == len(i_seqs)
    for i in range(proxies.size()):
      assert approx_equal(proxies[i].i_seqs[0], i_seqs[i])
      assert approx_equal(proxies[i].weight, expected_weights[i])
    # add more restraints to same shared proxy
    i_seqs = (3,5,42)
    restraints = \
      adp_restraints.isotropic_adp_restraints(
        xray_structure=xray_structure,
        pair_sym_table=table,
        proxies=proxies,
        i_seqs=i_seqs)
    expected_i_seqs = (9,14,28,32,36,38,3,5,42)
    expected_weights = (100,25,100,100,100,100,25,25,100)
    proxies = restraints.proxies
    assert proxies.size() == len(expected_i_seqs)
    for i in range(proxies.size()):
      assert approx_equal(proxies[i].i_seqs[0], expected_i_seqs[i])
      assert approx_equal(proxies[i].weight, expected_weights[i])
Пример #9
0
    def __init__(self, m):
        test_case.__init__(self, m)
        self.xray_structure = development.sucrose()

        self.t_celsius = 20
        self.shall_refine_thermal_displacements = False
        self.constraints = []

        self.expected_mapping_to_grad_fc = (
            0,
            1,
            2,
            3,
            4,
            5,
            6,
            7,
            8,
            9,
            10,
            11,
            12,
            13,
            14,
            15,
            16,
            17,
            18,
            19,
            20,
            21  # that was easy
        )
        self.expected_reparametrisation_for_hydrogen_named = {}

        self.fp_refinement_tolerance = 1e-6
        self.fdp_refinement_tolerance = 1e-6
    def __init__(self, m):
        test_case.__init__(self, m)
        self.xray_structure = development.sucrose()

        self.t_celsius = 20
        self.shall_refine_thermal_displacements = False

        self.constraints = [
            _.terminal_tetrahedral_xh_site(rotating=True,
                                           pivot=1,
                                           constrained_site_indices=(2, )),
            _.terminal_tetrahedral_xh_site(rotating=True,
                                           pivot=3,
                                           constrained_site_indices=(4, )),
            _.terminal_tetrahedral_xh_site(rotating=True,
                                           pivot=5,
                                           constrained_site_indices=(6, )),
            _.terminal_tetrahedral_xh_site(rotating=True,
                                           pivot=7,
                                           constrained_site_indices=(8, )),
            _.terminal_tetrahedral_xh_site(rotating=True,
                                           pivot=10,
                                           constrained_site_indices=(11, )),
            _.terminal_tetrahedral_xh_site(rotating=True,
                                           pivot=12,
                                           constrained_site_indices=(13, )),
            _.terminal_tetrahedral_xh_site(rotating=True,
                                           pivot=14,
                                           constrained_site_indices=(15, )),
            _.terminal_tetrahedral_xh_site(rotating=True,
                                           pivot=16,
                                           constrained_site_indices=(17, )),
            _.tertiary_xh_site(pivot=19, constrained_site_indices=(20, )),
            _.secondary_xh2_sites(pivot=21,
                                  flapping=True,
                                  constrained_site_indices=(26, 22)),
            _.tertiary_xh_site(pivot=23, constrained_site_indices=(24, )),
            _.tertiary_xh_site(pivot=25, constrained_site_indices=(27, )),
            _.tertiary_xh_site(pivot=28, constrained_site_indices=(29, )),
            _.tertiary_xh_site(pivot=30, constrained_site_indices=(31, )),
            _.secondary_xh2_sites(pivot=33,
                                  flapping=True,
                                  constrained_site_indices=(35, 34)),
            _.tertiary_xh_site(pivot=36, constrained_site_indices=(37, )),
            _.tertiary_xh_site(pivot=38, constrained_site_indices=(39, )),
            _.tertiary_xh_site(pivot=40, constrained_site_indices=(41, )),
            _.secondary_xh2_sites(pivot=42,
                                  flapping=True,
                                  constrained_site_indices=(43, 44)),
        ]

        self.expected_reparametrisation_for_hydrogen_named = {
            "H2": (core.terminal_tetrahedral_xh_site, 'O2'),
            "H3": (core.terminal_tetrahedral_xh_site, 'O3'),
            "H4": (core.terminal_tetrahedral_xh_site, 'O4'),
            "H5": (core.terminal_tetrahedral_xh_site, 'O5'),
            "H7": (core.terminal_tetrahedral_xh_site, 'O7'),
            "H8": (core.terminal_tetrahedral_xh_site, 'O8'),
            "H9": (core.terminal_tetrahedral_xh_site, 'O9'),
            "H10": (core.terminal_tetrahedral_xh_site, 'O10'),
            "H1": (core.tertiary_xh_site, 'C1'),
            "H2A": (core.secondary_xh2_sites, 'C2'),
            "H2B": (core.secondary_xh2_sites, 'C2'),
            "H3B": (core.tertiary_xh_site, 'C3'),
            "H4B": (core.tertiary_xh_site, 'C4'),
            "H5B": (core.tertiary_xh_site, 'C5'),
            "H6": (core.tertiary_xh_site, 'C6'),
            "H8A": (core.secondary_xh2_sites, 'C8'),
            "H8B": (core.secondary_xh2_sites, 'C8'),
            "H9B": (core.tertiary_xh_site, 'C9'),
            "H10B": (core.tertiary_xh_site, 'C10'),
            "H11": (core.tertiary_xh_site, 'C11'),
            "H12A": (core.secondary_xh2_sites, 'C12'),
            "H12B": (core.secondary_xh2_sites, 'C12'),
        }

        self.expected_mapping_to_grad_fc = (
            59,
            60,
            61,  # O1.site
            80,
            81,
            82,
            83,
            84,
            85,  # O1.u
            0,
            1,
            2,  # O2.site
            86,
            87,
            88,
            89,
            90,
            91,  # O2.u
            304,
            305,
            306,  # H2.site
            92,  # H2.u
            7,
            8,
            9,  # O3.site
            93,
            94,
            95,
            96,
            97,
            98,  # O3.u
            307,
            308,
            309,  # H3.site
            99,  # H3.u
            14,
            15,
            16,  # O4.site
            100,
            101,
            102,
            103,
            104,
            105,  # O4.u
            310,
            311,
            312,  # H4.site
            106,  # H4.u
            21,
            22,
            23,  # O5.site
            107,
            108,
            109,
            110,
            111,
            112,  # O5.u
            313,
            314,
            315,  # H5.site
            113,  # H5.u
            76,
            77,
            78,  # O6.site
            114,
            115,
            116,
            117,
            118,
            119,  # O6.u
            28,
            29,
            30,  # O7.site
            120,
            121,
            122,
            123,
            124,
            125,  # O7.u
            316,
            317,
            318,  # H7.site
            126,  # H7.u
            35,
            36,
            37,  # O8.site
            127,
            128,
            129,
            130,
            131,
            132,  # O8.u
            319,
            320,
            321,  # H8.site
            133,  # H8.u
            42,
            43,
            44,  # O9.site
            134,
            135,
            136,
            137,
            138,
            139,  # O9.u
            322,
            323,
            324,  # H9.site
            140,  # H9.u
            49,
            50,
            51,  # O10.site
            141,
            142,
            143,
            144,
            145,
            146,  # O10.u
            325,
            326,
            327,  # H10.site
            147,  # H10.u
            66,
            67,
            68,  # O11.site
            148,
            149,
            150,
            151,
            152,
            153,  # O11.u
            56,
            57,
            58,  # C1.site
            154,
            155,
            156,
            157,
            158,
            159,  # C1.u
            328,
            329,
            330,  # H1.site
            160,  # H1.u
            3,
            4,
            5,  # C2.site
            161,
            162,
            163,
            164,
            165,
            166,  # C2.u
            334,
            335,
            336,  # H2B.site
            167,  # H2B.u
            10,
            11,
            12,  # C3.site
            168,
            169,
            170,
            171,
            172,
            173,  # C3.u
            337,
            338,
            339,  # H3B.site
            174,  # H3B.u
            17,
            18,
            19,  # C4.site
            175,
            176,
            177,
            178,
            179,
            180,  # C4.u
            331,
            332,
            333,  # H2A.site
            181,  # H2A.u
            340,
            341,
            342,  # H4B.site
            182,  # H4B.u
            24,
            25,
            26,  # C5.site
            183,
            184,
            185,
            186,
            187,
            188,  # C5.u
            343,
            344,
            345,  # H5B.site
            189,  # H5B.u
            63,
            64,
            65,  # C6.site
            190,
            191,
            192,
            193,
            194,
            195,  # C6.u
            346,
            347,
            348,  # H6.site
            196,  # H6.u
            69,
            70,
            71,  # C7.site
            197,
            198,
            199,
            200,
            201,
            202,  # C7.u
            52,
            53,
            54,  # C8.site
            203,
            204,
            205,
            206,
            207,
            208,  # C8.u
            352,
            353,
            354,  # H8A.site
            209,  # H8A.u
            349,
            350,
            351,  # H8B.site
            210,  # H8B.u
            45,
            46,
            47,  # C9.site
            211,
            212,
            213,
            214,
            215,
            216,  # C9.u
            355,
            356,
            357,  # H9B.site
            217,  # H9B.u
            38,
            39,
            40,  # C10.site
            218,
            219,
            220,
            221,
            222,
            223,  # C10.u
            358,
            359,
            360,  # H10B.site
            224,  # H10B.u
            73,
            74,
            75,  # C11.site
            225,
            226,
            227,
            228,
            229,
            230,  # C11.u
            361,
            362,
            363,  # H11.site
            231,  # H11.u
            31,
            32,
            33,  # C12.site
            232,
            233,
            234,
            235,
            236,
            237,  # C12.u
            364,
            365,
            366,  # H12B.site
            238,  # H12B.u
            367,
            368,
            369,  # H12A.site
            239,  # H12A.u
        )

        self.site_refinement_tolerance = 1e-4
  def __init__(self, m):
    test_case.__init__(self, m)
    self.xray_structure = development.sucrose()

    self.t_celsius = 20
    self.shall_refine_thermal_displacements = False

    self.constraints = [
      _.terminal_tetrahedral_xh_site(
        rotating=True,
        pivot=1,
        constrained_site_indices=(2,)),
      _.terminal_tetrahedral_xh_site(
        rotating=True,
        pivot=3,
        constrained_site_indices=(4,)),
      _.terminal_tetrahedral_xh_site(
        rotating=True,
        pivot=5,
        constrained_site_indices=(6,)),
      _.terminal_tetrahedral_xh_site(
        rotating=True,
        pivot=7,
        constrained_site_indices=(8,)),
      _.terminal_tetrahedral_xh_site(
        rotating=True,
        pivot=10,
        constrained_site_indices=(11,)),
      _.terminal_tetrahedral_xh_site(
        rotating=True,
        pivot=12,
        constrained_site_indices=(13,)),
      _.terminal_tetrahedral_xh_site(
        rotating=True,
        pivot=14,
        constrained_site_indices=(15,)),
      _.terminal_tetrahedral_xh_site(
        rotating=True,
        pivot=16,
        constrained_site_indices=(17,)),
      _.tertiary_xh_site(
        pivot=19,
        constrained_site_indices=(20,)),
      _.secondary_xh2_sites(
        pivot=21,
        flapping = True,
        constrained_site_indices=(26, 22)),
      _.tertiary_xh_site(
        pivot=23,
        constrained_site_indices=(24,)),
      _.tertiary_xh_site(
        pivot=25,
        constrained_site_indices=(27,)),
      _.tertiary_xh_site(
        pivot=28,
        constrained_site_indices=(29,)),
      _.tertiary_xh_site(
        pivot=30,
        constrained_site_indices=(31,)),
      _.secondary_xh2_sites(
        pivot=33,
        flapping = True,
        constrained_site_indices=(35, 34)),
      _.tertiary_xh_site(
        pivot=36,
        constrained_site_indices=(37,)),
      _.tertiary_xh_site(
        pivot=38,
        constrained_site_indices=(39,)),
      _.tertiary_xh_site(
        pivot=40,
        constrained_site_indices=(41,)),
      _.secondary_xh2_sites(
        pivot=42,
        flapping = True,
        constrained_site_indices=(43, 44)),
      ]

    self.expected_reparametrisation_for_hydrogen_named = {
      "H2": (core.terminal_tetrahedral_xh_site, 'O2'),
      "H3": (core.terminal_tetrahedral_xh_site, 'O3'),
      "H4": (core.terminal_tetrahedral_xh_site, 'O4'),
      "H5": (core.terminal_tetrahedral_xh_site, 'O5'),
      "H7": (core.terminal_tetrahedral_xh_site, 'O7'),
      "H8": (core.terminal_tetrahedral_xh_site, 'O8'),
      "H9": (core.terminal_tetrahedral_xh_site, 'O9'),
      "H10": (core.terminal_tetrahedral_xh_site, 'O10'),
      "H1": (core.tertiary_xh_site, 'C1'),
      "H2A": (core.secondary_xh2_sites, 'C2'),
      "H2B": (core.secondary_xh2_sites, 'C2'),
      "H3B": (core.tertiary_xh_site, 'C3'),
      "H4B": (core.tertiary_xh_site, 'C4'),
      "H5B": (core.tertiary_xh_site, 'C5'),
      "H6": (core.tertiary_xh_site, 'C6'),
      "H8A": (core.secondary_xh2_sites, 'C8'),
      "H8B": (core.secondary_xh2_sites, 'C8'),
      "H9B": (core.tertiary_xh_site, 'C9'),
      "H10B": (core.tertiary_xh_site, 'C10'),
      "H11": (core.tertiary_xh_site, 'C11'),
      "H12A": (core.secondary_xh2_sites, 'C12'),
      "H12B": (core.secondary_xh2_sites, 'C12'),
    }

    self.expected_mapping_to_grad_fc = (
      59,60,61 , # O1.site
      80,81,82,83,84,85 , # O1.u
      0,1,2 , # O2.site
      86,87,88,89,90,91 , # O2.u
      304,305,306 , # H2.site
      92 , # H2.u
      7,8,9 , # O3.site
      93,94,95,96,97,98 , # O3.u
      307,308,309 , # H3.site
      99 , # H3.u
      14,15,16 , # O4.site
      100,101,102,103,104,105 , # O4.u
      310,311,312 , # H4.site
      106 , # H4.u
      21,22,23 , # O5.site
      107,108,109,110,111,112 , # O5.u
      313,314,315 , # H5.site
      113 , # H5.u
      76,77,78 , # O6.site
      114,115,116,117,118,119 , # O6.u
      28,29,30 , # O7.site
      120,121,122,123,124,125 , # O7.u
      316,317,318 , # H7.site
      126 , # H7.u
      35,36,37 , # O8.site
      127,128,129,130,131,132 , # O8.u
      319,320,321 , # H8.site
      133 , # H8.u
      42,43,44 , # O9.site
      134,135,136,137,138,139 , # O9.u
      322,323,324 , # H9.site
      140 , # H9.u
      49,50,51 , # O10.site
      141,142,143,144,145,146 , # O10.u
      325,326,327 , # H10.site
      147 , # H10.u
      66,67,68 , # O11.site
      148,149,150,151,152,153 , # O11.u
      56,57,58 , # C1.site
      154,155,156,157,158,159 , # C1.u
      328,329,330 , # H1.site
      160 , # H1.u
      3,4,5 , # C2.site
      161,162,163,164,165,166 , # C2.u
      334,335,336 , # H2B.site
      167 , # H2B.u
      10,11,12 , # C3.site
      168,169,170,171,172,173 , # C3.u
      337,338,339 , # H3B.site
      174 , # H3B.u
      17,18,19 , # C4.site
      175,176,177,178,179,180 , # C4.u
      331,332,333 , # H2A.site
      181 , # H2A.u
      340,341,342 , # H4B.site
      182 , # H4B.u
      24,25,26 , # C5.site
      183,184,185,186,187,188 , # C5.u
      343,344,345 , # H5B.site
      189 , # H5B.u
      63,64,65 , # C6.site
      190,191,192,193,194,195 , # C6.u
      346,347,348 , # H6.site
      196 , # H6.u
      69,70,71 , # C7.site
      197,198,199,200,201,202 , # C7.u
      52,53,54 , # C8.site
      203,204,205,206,207,208 , # C8.u
      352,353,354 , # H8A.site
      209 , # H8A.u
      349,350,351 , # H8B.site
      210 , # H8B.u
      45,46,47 , # C9.site
      211,212,213,214,215,216 , # C9.u
      355,356,357 , # H9B.site
      217 , # H9B.u
      38,39,40 , # C10.site
      218,219,220,221,222,223 , # C10.u
      358,359,360 , # H10B.site
      224 , # H10B.u
      73,74,75 , # C11.site
      225,226,227,228,229,230 , # C11.u
      361,362,363 , # H11.site
      231 , # H11.u
      31,32,33 , # C12.site
      232,233,234,235,236,237 , # C12.u
      364,365,366 , # H12B.site
      238 , # H12B.u
      367,368,369 , # H12A.site
      239 , # H12A.u
    )

    self.site_refinement_tolerance = 1e-4