예제 #1
0
    def __init__(self,symbol,oxidation,coordination=4):
        Element.__init__(self,symbol)

        self.oxidation = oxidation
        self.coordination = coordination

        # Get shannon radius for the oxidation state and coordination.

        self.shannon_radius = None;

        shannon_data = data_loader.lookup_element_shannon_radius_data(symbol);

        for dataset in shannon_data:
            if dataset['charge'] == oxidation and dataset['coordination'] == coordination:
                self.shannon_radius = dataset['crystal_radius'];

        # Get SSE_2015 (revised) for the oxidation state.

        self.SSE_2015 = None

        sse_2015_data = data_loader.lookup_element_sse2015_data(symbol);
        if sse_2015_data:
            for dataset in sse_2015_data:
                if dataset['OxidationState'] == oxidation:
                    self.SSE_2015 = dataset['SolidStateEnergy2015']
        else:
            self.SSE_2015 = None
예제 #2
0
    def __init__(self,symbol,oxidation,coordination):
        Element.__init__(self,symbol)

        self.oxidation = oxidation
        self.coordination = coordination

        # Get shannon radius for the oxidation state and coordination.

        self.shannon_radius = None;

        shannon_data = data_loader.lookup_element_shannon_radius_data(symbol);

        for dataset in shannon_data:
            if dataset['charge'] == oxidation and dataset['coordination'] == coordination:
                self.shannon_radius = dataset['crystal_radius'];

        # Get SSE_2015 (revised) for the oxidation state.

        self.SSE_2015 = None

        sse_2015_data = data_loader.lookup_element_sse2015_data(symbol);

        for dataset in sse_2015_data:
            if dataset['OxidationState'] == oxidation:
                self.SSE_2015 = dataset['SolidStateEnergy2015']
예제 #3
0
파일: __init__.py 프로젝트: AntObi/SMACT
    def __init__(self,symbol,oxidation,coordination=4, radii_source="shannon"):
        Element.__init__(self,symbol)

        self.oxidation = oxidation
        self.coordination = coordination

        # Get shannon radius for the oxidation state and coordination.

        self.shannon_radius = None;

        if radii_source=="shannon":

            shannon_data = data_loader.lookup_element_shannon_radius_data(symbol);
        
        elif radii_source == "extended":
            shannon_data = data_loader.lookup_element_shannon_radius_data_extendedML(symbol)

        else:
            print("Data source not recognised. Please select 'shannon' or 'extended'. ") 

        if shannon_data:
            for dataset in shannon_data:
                if dataset['charge'] == oxidation and str(coordination) == dataset['coordination'].split('_')[0]:
                    self.shannon_radius = dataset['crystal_radius'];

        # Get ionic radius
        self.ionic_radius = None;

        if shannon_data:
            for dataset in shannon_data:
                if dataset['charge'] == oxidation and str(coordination) == dataset['coordination'].split('_')[0]:
                    self.ionic_radius = dataset['ionic_radius'];

        # Get SSE_2015 (revised) for the oxidation state.

        self.SSE_2015 = None

        sse_2015_data = data_loader.lookup_element_sse2015_data(symbol);
        if sse_2015_data:
            for dataset in sse_2015_data:
                if dataset['OxidationState'] == oxidation:
                    self.SSE_2015 = dataset['SolidStateEnergy2015']
        else:
            self.SSE_2015 = None
예제 #4
0
파일: __init__.py 프로젝트: AntObi/SMACT
    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)
예제 #5
0
파일: __init__.py 프로젝트: WMD-group/SMACT
    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)