def test_two_shells(self): conf_pars = ConfigParameters(_rpath + 'parse_shells_4.cfg') conf_pars.parse_shells() res = conf_pars.shells expected = [{ 'user_index': 1, 'lshell': 2, 'ion_list': np.array([4, 5, 6, 7]) }, { 'user_index': 2, 'lshell': 1, 'ion_list': np.array([0, 1, 2, 3]), 'tmatrix': np.array([[0., 1., 0.], [1., 0., 0.], [0., 0., 1.]]) }] # ...lousy way to test equality of two dictionaries containing numpy arrays self.assertEqual(len(res), len(expected)) arr = res[0].pop('ion_list') arr_exp = expected[0].pop('ion_list') self.assertEqual(arr, arr_exp) arr = res[1].pop('ion_list') arr_exp = expected[1].pop('ion_list') self.assertEqual(arr, arr_exp) arr = res[1].pop('tmatrix') arr_exp = expected[1].pop('tmatrix') self.assertEqual(arr, arr_exp) self.assertListEqual(res, expected)
def test_example(self): conf_pars = ConfigParameters(_rpath + 'example.cfg') conf_pars.parse_general() res = conf_pars.general expected = { 'basename': 'test_base', 'efermi': 0.1, 'dosmesh': { 'n_points': 101, 'emin': -8.0, 'emax': 4.0 } } self.assertDictEqual(res, expected)
def test_example(self): conf_pars = ConfigParameters(_rpath + 'example.cfg') conf_pars.parse_groups() res = conf_pars.groups expected = [{ 'index': 1, 'shells': [1, 2], 'ewindow': (-7.6, 3.0), 'normalize': True, 'normion': True }, { 'index': 2, 'shells': [3], 'ewindow': (-1.6, 2.0), 'normalize': True, 'normion': True }] self.assertListEqual(res, expected)
def setUp(self): conf_file = _rpath + 'simple.cfg' self.pars = ConfigParameters(conf_file) self.pars.parse_input() vasp_data = VaspData(_rpath + 'simple/') self.el_struct = ElectronicStructure(vasp_data) efermi = self.el_struct.efermi self.eigvals = self.el_struct.eigvals - efermi struct = self.el_struct.structure kmesh = self.el_struct.kmesh self.proj_sh = ProjectorShell(self.pars.shells[0], vasp_data.plocar.plo, vasp_data.plocar.proj_params, kmesh, struct, 0) self.proj_gr = ProjectorGroup(self.pars.groups[0], [self.proj_sh], self.eigvals)
def setUp(self): """ """ conf_file = _rpath + 'example.cfg' self.pars = ConfigParameters(conf_file) self.pars.parse_input() vasp_data = VaspData(_rpath + 'one_site/') self.el_struct = ElectronicStructure(vasp_data) # efermi = vasp_data.doscar.efermi # eigvals = vasp_data.eigenval.eigs - efermi efermi = self.el_struct.efermi eigvals = self.el_struct.eigvals - efermi emin, emax = self.pars.groups[0]['ewindow'] struct = self.el_struct.structure kmesh = self.el_struct.kmesh self.proj_sh = ProjectorShell(self.pars.shells[0], vasp_data.plocar.plo, vasp_data.plocar.proj_params, kmesh, struct, 0) self.proj_gr = ProjectorGroup(self.pars.groups[0], [self.proj_sh], eigvals)
def test_example_no_groups(self): conf_pars = ConfigParameters(_rpath + 'example_nogroup.cfg') conf_pars.parse_input() # with open('parse_input.output.test', 'wt') as f: # f.write("Shells:\n") # f.write(conf_pars.shells.__repr__() + '\n\n') # f.write("Groups:\n") # f.write(conf_pars.groups.__repr__() + '\n') res = "Shells:\n" res += conf_pars.shells.__repr__() + '\n\n' res += "Groups:\n" res += conf_pars.groups.__repr__() expected = r"""Shells: [{'ion_list': array([4, 5, 6, 7]), 'user_index': 1, 'lshell': 2}] Groups: [{'normalize': True, 'index': '1', 'ewindow': (-7.6, 3.0), 'shells': [0], 'normion': True}]""" self.assertEqual(res, expected)
def test_example(self): conf_pars = ConfigParameters(_rpath + 'example.cfg') conf_pars.parse_input() # with open('parse_input.output.test', 'wt') as f: # f.write("Shells:\n") # f.write(conf_pars.shells.__repr__() + '\n\n') # f.write("Groups:\n") # f.write(conf_pars.groups.__repr__() + '\n') res = "Shells:\n" res += conf_pars.shells.__repr__() + '\n\n' res += "Groups:\n" res += conf_pars.groups.__repr__() expected = r"""Shells: [{'ion_list': array([4, 5, 6, 7]), 'user_index': 1, 'lshell': 2}, {'tmatrix': array([[ 0., 1., 0.], [ 1., 0., 0.], [ 0., 0., 1.]]), 'ion_list': array([0, 1, 2, 3]), 'user_index': 2, 'lshell': 1}, {'ion_list': array([0, 1, 2, 3]), 'user_index': 3, 'lshell': 3}] Groups: [{'normalize': True, 'index': 1, 'ewindow': (-7.6, 3.0), 'normion': True, 'shells': [0, 1]}, {'normalize': True, 'index': 2, 'ewindow': (-1.6, 2.0), 'normion': True, 'shells': [2]}]""" self.assertEqual(res, expected)
def test_normion_true(self): conf_file = _rpath + 'block_matrix.cfg' self.pars = ConfigParameters(conf_file) self.pars.parse_input() shells = [] for sh_par in self.pars.shells: shells.append(ProjectorShell(sh_par, self.mock_plo, self.mock_proj_params, self.mock_kmesh, self.mock_struct, 0)) proj_gr = ProjectorGroup(self.pars.groups[0], shells, self.mock_eigvals) proj_gr.normion = True block_maps, ndim = proj_gr.get_block_matrix_map() ndim_exp = 5 block_maps_exp = [[{'bmat_range': (0, 5), 'shell_ion': (0, 0)}], [{'bmat_range': (0, 5), 'shell_ion': (0, 1)}], [{'bmat_range': (0, 3), 'shell_ion': (1, 0)}], [{'bmat_range': (0, 3), 'shell_ion': (1, 1)}]] self.assertEqual(ndim, ndim_exp) self.assertEqual(block_maps, block_maps_exp)
def test_gr_required(self): conf_pars = ConfigParameters(_rpath + 'parse_groups_1.cfg') err_mess = "Required parameter" with self.assertRaisesRegexp(Exception, err_mess): conf_pars.parse_groups()
def test_bad_indices(self): conf_pars = ConfigParameters(_rpath + 'parse_shells_2.cfg') err_mess = "Failed to extract shell indices" with self.assertRaisesRegexp(ValueError, err_mess): conf_pars.parse_shells()
def test_no_shell(self): conf_pars = ConfigParameters(_rpath + 'parse_shells_1.cfg') err_mess = "No projected shells" with self.assertRaisesRegexp(AssertionError, err_mess): conf_pars.parse_shells()
def test_shell_outside_groups(self): conf_pars = ConfigParameters(_rpath + 'input_test_4.cfg') err_mess = "Some shells are not inside" with self.assertRaisesRegexp(AssertionError, err_mess): conf_pars.parse_input()
def test_no_shell(self): conf_pars = ConfigParameters(_rpath + 'input_test_3.cfg') err_mess = "Shell 3 referenced in" with self.assertRaisesRegexp(Exception, err_mess): conf_pars.parse_input()
def test_gr_required(self): conf_pars = ConfigParameters(_rpath + 'input_test_2.cfg') err_mess = "One \[Shell\] section is" with self.assertRaisesRegexp(KeyError, err_mess): conf_pars.parse_input()
def test_no_group(self): conf_pars = ConfigParameters(_rpath + 'input_test_1.cfg') err_mess = "At least one group" with self.assertRaisesRegexp(AssertionError, err_mess): conf_pars.parse_input()
def setUp(self): """ """ # Dummy ConfigParameters object self.cpars = ConfigParameters(_rpath + 'test1.cfg')