def __init__(self, symbol): """Initialise Element class Args: symbol (str): Chemical element symbol (e.g. 'Fe') """ dataset = data_loader.lookup_element_data(symbol, copy=False) if dataset == None: raise NameError("Elemental data for {0} not found.".format(symbol)) # Set coordination-environment data from the Shannon-radius data. # As above, it is safe to use copy = False with this Get* function. shannon_data = data_loader.lookup_element_shannon_radius_data(symbol, copy=False) if shannon_data != None: coord_envs = [row['coordination'] for row in shannon_data] else: coord_envs = None HHI_scores = data_loader.lookup_element_hhis(symbol) if HHI_scores == None: HHI_scores = (None, None) sse_data = data_loader.lookup_element_sse_data(symbol) if sse_data: sse = sse_data['SolidStateEnergy'] else: sse = None sse_Pauling_data = data_loader.lookup_element_sse_pauling_data(symbol) if sse_Pauling_data: sse_Pauling = sse_Pauling_data['SolidStateEnergyPauling'] else: sse_Pauling = None for attribute, value in ( ('coord_envs', coord_envs), ('covalent_radius', dataset['r_cov']), ('crustal_abundance', dataset['Abundance']), ('e_affinity', dataset['e_affinity']), ('eig', dataset['p_eig']), ('eig_s', dataset['s_eig']), ('HHI_p', HHI_scores[0]), ('HHI_r', HHI_scores[1]), ('ionpot', dataset['ion_pot']), ('mass', dataset['Mass']), ('name', dataset['Name']), ('number', dataset['Z']), ('oxidation_states', data_loader.lookup_element_oxidation_states(symbol)), ('oxidation_states_icsd', data_loader.lookup_element_oxidation_states_icsd(symbol)), ('oxidation_states_sp', data_loader.lookup_element_oxidation_states_sp(symbol)), ('dipol', dataset['dipol']), ('pauling_eneg', dataset['el_neg']), ('SSE', sse), ('SSEPauling', sse_Pauling), ('symbol', symbol), #('vdw_radius', dataset['RVdW']), ): setattr(self, attribute, value)