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)
예제 #2
0
 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")
예제 #3
0
 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")