Exemplo n.º 1
0
 def test_by_label(self):
     s0, s1 = Mock(spec=SymmetryOperation), Mock(spec=SymmetryOperation)
     s0.label = 'A'
     s1.label = 'B'
     sg = SpaceGroup(symmetry_operations=[s0, s1])
     self.assertEqual(sg.by_label('A'), s0)
     self.assertEqual(sg.by_label('B'), s1)
Exemplo n.º 2
0
 def test_save_symmetry_operation_vectors_to(self):
     s0, s1 = Mock(spec=SymmetryOperation), Mock(spec=SymmetryOperation)
     s0.as_vector.return_value = [1, 2]
     s1.as_vector.return_value = [2, 1]
     sg = SpaceGroup(symmetry_operations=[s0, s1])
     with patch('numpy.savetxt') as mock_savetxt:
         sg.save_symmetry_operation_vectors_to('filename')
         self.assertEqual(mock_savetxt.call_args[0][0], 'filename')
         np.testing.assert_array_equal(mock_savetxt.call_args[0][1],
                                       np.array([[1, 2], [2, 1]]))
Exemplo n.º 3
0
 def test_read_from_file(self):
     s0, s1 = Mock(spec=SymmetryOperation), Mock(spec=SymmetryOperation)
     with patch('numpy.loadtxt') as mock_np_loadtxt:
         mock_np_loadtxt.return_value = np.array([[1, 2], [2, 1]])
         with patch('bsym.symmetry_operation.SymmetryOperation.from_vector'
                    ) as mock_from_vector:
             mock_from_vector.side_effect = [s0, s1]
             sg = SpaceGroup.read_from_file('mock_filename')
             self.assertEqual(sg.symmetry_operations[0], s0)
             self.assertEqual(sg.symmetry_operations[1], s1)
             self.assertEqual(mock_from_vector.call_args_list[0],
                              call([1, 2]))
             self.assertEqual(mock_from_vector.call_args_list[1],
                              call([2, 1]))
Exemplo n.º 4
0
 def test_read_from_file_with_labels(self):
     s0, s1 = Mock(spec=SymmetryOperation), Mock(spec=SymmetryOperation)
     with patch('numpy.genfromtxt') as mock_np_genfromtxt:
         mock_np_genfromtxt.return_value = np.array([['E', '1', '2'],
                                                     ['C2', '2', '1']])
         with patch('bsym.symmetry_operation.SymmetryOperation.from_vector'
                    ) as mock_from_vector:
             mock_from_vector.side_effect = [s0, s1]
             sg = SpaceGroup.read_from_file_with_labels('mock_filename')
             self.assertEqual(sg.symmetry_operations[0], s0)
             self.assertEqual(sg.symmetry_operations[1], s1)
             self.assertEqual(mock_from_vector.call_args_list[0],
                              call([1, 2]))
             self.assertEqual(mock_from_vector.call_args_list[1],
                              call([2, 1]))
             self.assertEqual(s0.set_label.call_args, call('E'))
             self.assertEqual(s1.set_label.call_args, call('C2'))
Exemplo n.º 5
0
def space_group_from_structure(structure, subset=None, atol=1e-5):
    """
    Generates a ``SpaceGroup`` object from a `pymatgen` ``Structure``. 

    Args:
        structure (pymatgen ``Structure``): structure to be used to define the :any:`SpaceGroup`.
        subset    (Optional [list]):        list of atom indices to be used for generating the symmetry operations.
        atol      (Optional [float]):       tolerance factor for the ``pymatgen`` `coordinate mapping`_ under each symmetry operation.

    Returns:
        a new :any:`SpaceGroup` instance

    .. _coordinate mapping:
        http://pymatgen.org/pymatgen.util.coord_utils.html#pymatgen.util.coord_utils.coord_list_mapping_pbc

    """
    mappings = unique_symmetry_operations_as_vectors_from_structure(
        structure, subset=subset, atol=atol)
    symmetry_operations = [SymmetryOperation.from_vector(m) for m in mappings]
    return SpaceGroup(symmetry_operations=symmetry_operations)
Exemplo n.º 6
0
 def test_spacegroup_is_initialised(self):
     s0, s1 = Mock(spec=SymmetryOperation), Mock(spec=SymmetryOperation)
     sg = SpaceGroup(symmetry_operations=[s0, s1])
     self.assertEqual(sg.symmetry_operations[0], s0)
     self.assertEqual(sg.symmetry_operations[1], s1)
Exemplo n.º 7
0
 def test_labels(self):
     s0, s1 = Mock(spec=SymmetryOperation), Mock(spec=SymmetryOperation)
     s0.label = 'A'
     s1.label = 'B'
     sg = SpaceGroup(symmetry_operations=[s0, s1])
     self.assertEqual(sg.labels, ['A', 'B'])
Exemplo n.º 8
0
 def test_append(self):
     s0, s1 = Mock(spec=SymmetryOperation), Mock(spec=SymmetryOperation)
     sg = SpaceGroup(symmetry_operations=[s0, s1])
     s2 = Mock(spec=SymmetryOperation)
     sg.append(s2)
     self.assertEqual(sg.symmetry_operations, [s0, s1, s2])