예제 #1
0
def get_dimension(formula_dict):
    for key in formula_dict:
        for p in range(len(formula_dict[key])):
            print(key)
            bonded_structure = CrystalNN().get_bonded_structure(
                formula_dict[key][p]['structure'])
            formula_dict[key][p]['dimensionality'] = get_dimensionality_larsen(
                bonded_structure)
            #formula_dict[key][p]['dimensionality'] = get_dimensionality_larsen(
            #    formula_dict[key][p]['structure'])
            print(formula_dict[key][p]['dimensionality'])
예제 #2
0
    def __init__(
        self,
        structure,
        structure_graph=None,
        larsen_dim=None,
        cheon_dim=None,
        gorai_dim=None,
    ):
        """
        This class uses 3 algorithms implemented in pymatgen to automate recognition of low-dimensional materials.

        Args:
            structure (object): pmg Structure object.

            structure_graph (object): pmg StructureGraph object.

            larsen_dim (int): As defined in P. M. Larsen et al., Phys. Rev. Materials 3, 034003 (2019).

            cheon_dim (int): As defined in Cheon, G. et al., Nano Lett. 2017.

            gorai_dim (int): As defined in Gorai, P. et al., J. Mater. Chem. A 2, 4136 (2016).

        """

        self.structure = structure
        self.structure_graph = structure_graph
        self.larsen_dim = larsen_dim
        self.cheon_dim = cheon_dim
        self.gorai_dim = gorai_dim

        # Default to MinimumDistanceNN for generating structure graph.
        sgraph = MinimumDistanceNN().get_bonded_structure(structure)

        self.structure_graph = sgraph

        # Get Larsen dimensionality
        self.larsen_dim = get_dimensionality_larsen(self.structure_graph)
예제 #3
0
 def test_tricky_structure(self):
     """
     Test for a tricky structure that other dimensionality finders say is
     2D but is actually an interpenetrated 3D structure.
     """
     self.assertEqual(get_dimensionality_larsen(self.tricky_structure), 3)
예제 #4
0
 def test_get_dimensionality(self):
     self.assertEqual(get_dimensionality_larsen(self.lifepo), 3)
     self.assertEqual(get_dimensionality_larsen(self.graphite), 2)
     self.assertEqual(get_dimensionality_larsen(self.cscl), 3)
예제 #5
0
 def featurize(self, s):
     bs = self.nn_method.get_bonded_structure(s)
     return [get_dimensionality_larsen(bs)]
예제 #6
0
 def test_tricky_structure(self):
     """
     Test for a tricky structure that other dimensionality finders say is
     2D but is actually an interpenetrated 3D structure.
     """
     self.assertEqual(get_dimensionality_larsen(self.tricky_structure), 3)
예제 #7
0
 def test_get_dimensionality(self):
     self.assertEqual(get_dimensionality_larsen(self.lifepo), 3)
     self.assertEqual(get_dimensionality_larsen(self.graphite), 2)
     self.assertEqual(get_dimensionality_larsen(self.cscl), 3)