def get_motiff_distribution(atoms, nn_info): """ """ atoms_i = atoms struct_i = AseAtomsAdaptor.get_structure(atoms_i) metal_species_index_list = [] for j_cnt, site_j in enumerate(struct_i): if site_j.species_string == "Ir": metal_species_index_list.append(j_cnt) coord_data_i = nn_info motiff_list_i = [] for metal_index_j in metal_species_index_list: coord_data_j = coord_data_i[coord_data_i["structure_index"] == metal_index_j] nn_info_list = coord_data_j["nn_info"].iloc[0] nn_info_list = [i["site"] for i in nn_info_list] print(nn_info_list) motiff_j = site_is_of_motif_type( struct_i, metal_index_j, neighbors_list=nn_info_list, # "min_dist", "voronoi", "min_OKeeffe", "min_VIRE" approach="min_dist", delta=0.1, # delta=0.3, cutoff=10.0, thresh=thresh_dict, ) motiff_list_i.append(motiff_j) motiff_count_dict = {} list_i = motiff_list_i for items in list(set(list_i)): motiff_count_dict[items] = list_i.count(items) num_motiffs = len(motiff_list_i) motiff_frac_dict = {} for key, val in motiff_count_dict.items(): motiff_frac_i = val / num_motiffs motiff_frac_dict[key] = motiff_frac_i return(motiff_frac_dict)
def test_site_is_of_motif_type(self): for i in range(self.diamond.num_sites): self.assertEqual(site_is_of_motif_type(self.diamond, i), "tetrahedral") for i in range(self.nacl.num_sites): self.assertEqual(site_is_of_motif_type(self.nacl, i), "octahedral") for i in range(self.cscl.num_sites): self.assertEqual(site_is_of_motif_type(self.cscl, i), "bcc") self.assertEqual(site_is_of_motif_type(self.square_pyramid, 0), "square pyramidal") for i in range(1, self.square_pyramid.num_sites): self.assertEqual(site_is_of_motif_type(self.square_pyramid, i), "unrecognized") self.assertEqual(site_is_of_motif_type(self.trigonal_bipyramid, 0), "trigonal bipyramidal") for i in range(1, self.trigonal_bipyramid.num_sites): self.assertEqual(site_is_of_motif_type(self.trigonal_bipyramid, i), "unrecognized")
def test_site_is_of_motif_type(self): for i in range(self.diamond.num_sites): self.assertEqual(site_is_of_motif_type( self.diamond, i), "tetrahedral") for i in range(self.nacl.num_sites): self.assertEqual(site_is_of_motif_type( self.nacl, i), "octahedral") for i in range(self.cscl.num_sites): self.assertEqual(site_is_of_motif_type( self.cscl, i), "bcc") self.assertEqual(site_is_of_motif_type( self.square_pyramid, 0), "square pyramidal") for i in range(1, self.square_pyramid.num_sites): self.assertEqual(site_is_of_motif_type( self.square_pyramid, i), "unrecognized") self.assertEqual(site_is_of_motif_type( self.trigonal_bipyramid, 0), "trigonal bipyramidal") for i in range(1, self.trigonal_bipyramid.num_sites): self.assertEqual(site_is_of_motif_type( self.trigonal_bipyramid, i), "unrecognized")