Example #1
0
    def test_CN_bias_weight(self):
        fake_nb_set = FakeNbSet()
        dummy_se = DummyStructureEnvironments()
        bias_weight1 = CNBiasNbSetWeight.linearly_equidistant(weight_cn1=1.0, weight_cn13=13.0)
        bias_weight2 = CNBiasNbSetWeight.geometrically_equidistant(weight_cn1=1.0, weight_cn13=1.1**12)
        bias_weight3 = CNBiasNbSetWeight.explicit(cn_weights={1: 1.0, 2: 3.0, 3: 3.2, 4: 4.0,
                                                              5: 4.1, 6: 4.2, 7: 4.3, 8: 4.4,
                                                              9: 4.5, 10: 4.6, 11: 4.6, 12: 4.7,
                                                              13: 4.8})
        with self.assertRaisesRegexp(ValueError, 'Weights should be provided for CN 1 to 13'):
            CNBiasNbSetWeight.explicit(cn_weights={1: 1.0, 13: 2.0})

        fake_nb_set.cn = 1
        w1 = bias_weight1.weight(nb_set=fake_nb_set, structure_environments=dummy_se)
        self.assertAlmostEqual(w1, 1.0, delta=1e-8)
        w2 = bias_weight2.weight(nb_set=fake_nb_set, structure_environments=dummy_se)
        self.assertAlmostEqual(w2, 1.0, delta=1e-8)
        w3 = bias_weight3.weight(nb_set=fake_nb_set, structure_environments=dummy_se)
        self.assertAlmostEqual(w3, 1.0, delta=1e-8)
        fake_nb_set.cn = 7
        w1 = bias_weight1.weight(nb_set=fake_nb_set, structure_environments=dummy_se)
        self.assertAlmostEqual(w1, 7.0, delta=1e-8)
        w2 = bias_weight2.weight(nb_set=fake_nb_set, structure_environments=dummy_se)
        self.assertAlmostEqual(w2, 1.1**6, delta=1e-8)
        w3 = bias_weight3.weight(nb_set=fake_nb_set, structure_environments=dummy_se)
        self.assertAlmostEqual(w3, 4.3, delta=1e-8)
        fake_nb_set.cn = 13
        w1 = bias_weight1.weight(nb_set=fake_nb_set, structure_environments=dummy_se)
        self.assertAlmostEqual(w1, 13.0, delta=1e-8)
        w2 = bias_weight2.weight(nb_set=fake_nb_set, structure_environments=dummy_se)
        self.assertAlmostEqual(w2, 1.1**12, delta=1e-8)
        w3 = bias_weight3.weight(nb_set=fake_nb_set, structure_environments=dummy_se)
        self.assertAlmostEqual(w3, 4.8, delta=1e-8)
Example #2
0
    def test_CN_bias_weight(self):
        fake_nb_set = FakeNbSet()
        dummy_se = DummyStructureEnvironments()
        bias_weight1 = CNBiasNbSetWeight.linearly_equidistant(weight_cn1=1.0, weight_cn13=13.0)
        bias_weight2 = CNBiasNbSetWeight.geometrically_equidistant(weight_cn1=1.0, weight_cn13=1.1**12)
        bias_weight3 = CNBiasNbSetWeight.explicit(cn_weights={1: 1.0, 2: 3.0, 3: 3.2, 4: 4.0,
                                                              5: 4.1, 6: 4.2, 7: 4.3, 8: 4.4,
                                                              9: 4.5, 10: 4.6, 11: 4.6, 12: 4.7,
                                                              13: 4.8})
        with self.assertRaisesRegexp(ValueError, 'Weights should be provided for CN 1 to 13'):
            CNBiasNbSetWeight.explicit(cn_weights={1: 1.0, 13: 2.0})

        fake_nb_set.cn = 1
        w1 = bias_weight1.weight(nb_set=fake_nb_set, structure_environments=dummy_se)
        self.assertAlmostEqual(w1, 1.0, delta=1e-8)
        w2 = bias_weight2.weight(nb_set=fake_nb_set, structure_environments=dummy_se)
        self.assertAlmostEqual(w2, 1.0, delta=1e-8)
        w3 = bias_weight3.weight(nb_set=fake_nb_set, structure_environments=dummy_se)
        self.assertAlmostEqual(w3, 1.0, delta=1e-8)
        fake_nb_set.cn = 7
        w1 = bias_weight1.weight(nb_set=fake_nb_set, structure_environments=dummy_se)
        self.assertAlmostEqual(w1, 7.0, delta=1e-8)
        w2 = bias_weight2.weight(nb_set=fake_nb_set, structure_environments=dummy_se)
        self.assertAlmostEqual(w2, 1.1**6, delta=1e-8)
        w3 = bias_weight3.weight(nb_set=fake_nb_set, structure_environments=dummy_se)
        self.assertAlmostEqual(w3, 4.3, delta=1e-8)
        fake_nb_set.cn = 13
        w1 = bias_weight1.weight(nb_set=fake_nb_set, structure_environments=dummy_se)
        self.assertAlmostEqual(w1, 13.0, delta=1e-8)
        w2 = bias_weight2.weight(nb_set=fake_nb_set, structure_environments=dummy_se)
        self.assertAlmostEqual(w2, 1.1**12, delta=1e-8)
        w3 = bias_weight3.weight(nb_set=fake_nb_set, structure_environments=dummy_se)
        self.assertAlmostEqual(w3, 4.8, delta=1e-8)
Example #3
0
    def test_CN_bias_weight(self):
        fake_nb_set = FakeNbSet()
        dummy_se = DummyStructureEnvironments()
        bias_weight1 = CNBiasNbSetWeight.linearly_equidistant(weight_cn1=1.0, weight_cn13=13.0)
        bias_weight2 = CNBiasNbSetWeight.geometrically_equidistant(weight_cn1=1.0, weight_cn13=1.1 ** 12)
        bias_weight3 = CNBiasNbSetWeight.explicit(cn_weights={1: 1.0, 2: 3.0, 3: 3.2, 4: 4.0,
                                                              5: 4.1, 6: 4.2, 7: 4.3, 8: 4.4,
                                                              9: 4.5, 10: 4.6, 11: 4.6, 12: 4.7,
                                                              13: 4.8})
        with self.assertRaisesRegex(ValueError, 'Weights should be provided for CN 1 to 13'):
            CNBiasNbSetWeight.explicit(cn_weights={1: 1.0, 13: 2.0})

        fake_nb_set.cn = 1
        w1 = bias_weight1.weight(nb_set=fake_nb_set, structure_environments=dummy_se)
        self.assertAlmostEqual(w1, 1.0, delta=1e-8)
        w2 = bias_weight2.weight(nb_set=fake_nb_set, structure_environments=dummy_se)
        self.assertAlmostEqual(w2, 1.0, delta=1e-8)
        w3 = bias_weight3.weight(nb_set=fake_nb_set, structure_environments=dummy_se)
        self.assertAlmostEqual(w3, 1.0, delta=1e-8)
        fake_nb_set.cn = 7
        w1 = bias_weight1.weight(nb_set=fake_nb_set, structure_environments=dummy_se)
        self.assertAlmostEqual(w1, 7.0, delta=1e-8)
        w2 = bias_weight2.weight(nb_set=fake_nb_set, structure_environments=dummy_se)
        self.assertAlmostEqual(w2, 1.1 ** 6, delta=1e-8)
        w3 = bias_weight3.weight(nb_set=fake_nb_set, structure_environments=dummy_se)
        self.assertAlmostEqual(w3, 4.3, delta=1e-8)
        fake_nb_set.cn = 13
        w1 = bias_weight1.weight(nb_set=fake_nb_set, structure_environments=dummy_se)
        self.assertAlmostEqual(w1, 13.0, delta=1e-8)
        w2 = bias_weight2.weight(nb_set=fake_nb_set, structure_environments=dummy_se)
        self.assertAlmostEqual(w2, 1.1 ** 12, delta=1e-8)
        w3 = bias_weight3.weight(nb_set=fake_nb_set, structure_environments=dummy_se)
        self.assertAlmostEqual(w3, 4.8, delta=1e-8)

        bias_weight4 = CNBiasNbSetWeight.from_description({'type': 'linearly_equidistant',
                                                           'weight_cn1': 2.0,
                                                           'weight_cn13': 26.0})
        for cn in range(1, 14):
            self.assertAlmostEqual(bias_weight4.cn_weights[cn], 2.0 * cn)

        bias_weight5 = CNBiasNbSetWeight.from_description({'type': 'geometrically_equidistant',
                                                           'weight_cn1': 1.0,
                                                           'weight_cn13': 13.0})
        self.assertAlmostEqual(bias_weight5.cn_weights[1], 1.0)
        self.assertAlmostEqual(bias_weight5.cn_weights[3], 1.5334062370163877)
        self.assertAlmostEqual(bias_weight5.cn_weights[9], 5.5287748136788739)
        self.assertAlmostEqual(bias_weight5.cn_weights[12], 10.498197520079623)

        cn_weights = {cn: 0.0 for cn in range(1, 14)}
        cn_weights[6] = 2.0
        cn_weights[4] = 1.0
        bias_weight6 = CNBiasNbSetWeight.from_description({'type': 'explicit',
                                                           'cn_weights': cn_weights})

        self.assertAlmostEqual(bias_weight6.cn_weights[1], 0.0)
        self.assertAlmostEqual(bias_weight6.cn_weights[4], 1.0)
        self.assertAlmostEqual(bias_weight6.cn_weights[6], 2.0)
Example #4
0
    def test_CN_bias_weight(self):
        fake_nb_set = FakeNbSet()
        dummy_se = DummyStructureEnvironments()
        bias_weight1 = CNBiasNbSetWeight.linearly_equidistant(weight_cn1=1.0, weight_cn13=13.0)
        bias_weight2 = CNBiasNbSetWeight.geometrically_equidistant(weight_cn1=1.0, weight_cn13=1.1**12)
        bias_weight3 = CNBiasNbSetWeight.explicit(cn_weights={1: 1.0, 2: 3.0, 3: 3.2, 4: 4.0,
                                                              5: 4.1, 6: 4.2, 7: 4.3, 8: 4.4,
                                                              9: 4.5, 10: 4.6, 11: 4.6, 12: 4.7,
                                                              13: 4.8})
        with self.assertRaisesRegex(ValueError, 'Weights should be provided for CN 1 to 13'):
            CNBiasNbSetWeight.explicit(cn_weights={1: 1.0, 13: 2.0})

        fake_nb_set.cn = 1
        w1 = bias_weight1.weight(nb_set=fake_nb_set, structure_environments=dummy_se)
        self.assertAlmostEqual(w1, 1.0, delta=1e-8)
        w2 = bias_weight2.weight(nb_set=fake_nb_set, structure_environments=dummy_se)
        self.assertAlmostEqual(w2, 1.0, delta=1e-8)
        w3 = bias_weight3.weight(nb_set=fake_nb_set, structure_environments=dummy_se)
        self.assertAlmostEqual(w3, 1.0, delta=1e-8)
        fake_nb_set.cn = 7
        w1 = bias_weight1.weight(nb_set=fake_nb_set, structure_environments=dummy_se)
        self.assertAlmostEqual(w1, 7.0, delta=1e-8)
        w2 = bias_weight2.weight(nb_set=fake_nb_set, structure_environments=dummy_se)
        self.assertAlmostEqual(w2, 1.1**6, delta=1e-8)
        w3 = bias_weight3.weight(nb_set=fake_nb_set, structure_environments=dummy_se)
        self.assertAlmostEqual(w3, 4.3, delta=1e-8)
        fake_nb_set.cn = 13
        w1 = bias_weight1.weight(nb_set=fake_nb_set, structure_environments=dummy_se)
        self.assertAlmostEqual(w1, 13.0, delta=1e-8)
        w2 = bias_weight2.weight(nb_set=fake_nb_set, structure_environments=dummy_se)
        self.assertAlmostEqual(w2, 1.1**12, delta=1e-8)
        w3 = bias_weight3.weight(nb_set=fake_nb_set, structure_environments=dummy_se)
        self.assertAlmostEqual(w3, 4.8, delta=1e-8)

        bias_weight4 = CNBiasNbSetWeight.from_description({'type': 'linearly_equidistant',
                                                           'weight_cn1': 2.0,
                                                           'weight_cn13': 26.0})
        for cn in range(1, 14):
            self.assertAlmostEqual(bias_weight4.cn_weights[cn], 2.0*cn)

        bias_weight5 = CNBiasNbSetWeight.from_description({'type': 'geometrically_equidistant',
                                                           'weight_cn1': 1.0,
                                                           'weight_cn13': 13.0})
        self.assertAlmostEqual(bias_weight5.cn_weights[1], 1.0)
        self.assertAlmostEqual(bias_weight5.cn_weights[3], 1.5334062370163877)
        self.assertAlmostEqual(bias_weight5.cn_weights[9], 5.5287748136788739)
        self.assertAlmostEqual(bias_weight5.cn_weights[12], 10.498197520079623)

        cn_weights = {cn: 0.0 for cn in range(1, 14)}
        cn_weights[6] = 2.0
        cn_weights[4] = 1.0
        bias_weight6 = CNBiasNbSetWeight.from_description({'type': 'explicit',
                                                           'cn_weights': cn_weights})

        self.assertAlmostEqual(bias_weight6.cn_weights[1], 0.0)
        self.assertAlmostEqual(bias_weight6.cn_weights[4], 1.0)
        self.assertAlmostEqual(bias_weight6.cn_weights[6], 2.0)