def get_chemonly(string=''): """ Get only mean chemical descriptors for a chemical formula, say Al2O3 Args: string: chemical formula, say Al2O3, NaCl etc. Returns: mean_chem: average chemical descriptors """ comp=Composition(string) el_dict=comp.get_el_amt_dict() arr=[] for k,v in el_dict.items(): des=get_descrp_arr(k) arr.append(des) mean_chem=np.mean(arr,axis=0) return mean_chem
def get_comp_data(un_data): element_universe = [str(e) for e in Element] dict_element = {} for i, j in enumerate(element_universe): dict_element[str(j)] = i stoich_array = np.zeros((len(un_data), 3), dtype=float) at_num_array = np.zeros((len(un_data), 3), dtype=int) electroneg_array = np.zeros((len(un_data), 3), dtype=float) comp_array=[] for index, entry in enumerate(un_data): comp = Composition(entry[2]) comp_array.append(comp.formula) temp_dict = dict(comp.get_el_amt_dict()) for count, key in enumerate(temp_dict.keys()): stoich_array[index][count] = temp_dict[key] if key not in ['D', 'T']: at_num_array[index][count] = Element(key).Z electroneg_array[index][count] = Element(key).X else: at_num_array[index][count] = Element('H').Z electroneg_array[index][count] = Element('H').X return (comp_array,stoich_array,at_num_array,electroneg_array)
if __name__ == '__main__': #chemo-structural features s = Structure.from_file('POSCAR') x = get_comp_descp(s) print(len(x)) #only chemical features for a structure y = get_comp_descp(struct=s, jcell=False, jmean_chem=True, jmean_chg=False, jrdf=False, jrdf_adf=False, print_names=False) print(len(y)) #chemical features based on composition only chm = get_chemonly('Al2O3') print(len(chm)) #charge descriptors comp = Composition('Al2O3') el_dict = comp.get_el_amt_dict() chgarr = [] for k, v in el_dict.items(): chg = get_chgdescrp_arr(k) chgarr.append(chg) mean_chg = np.mean(chgarr, axis=0) print(len(mean_chg))