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'])
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)
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)
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)
def featurize(self, s): bs = self.nn_method.get_bonded_structure(s) return [get_dimensionality_larsen(bs)]
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)
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)