def __init__(self, exclude=None): super(CompositionFeaturizers, self).__init__(exclude=exclude) self._fast_featurizers = [ cf.AtomicOrbitals(), cf.ElementProperty.from_preset("matminer"), cf.ElementProperty.from_preset("magpie"), cf.ElementFraction(), cf.Stoichiometry(), cf.TMetalFraction(), cf.BandCenter(), cf.ValenceOrbital() ] self._slow_featurizers = [ cf.Miedema(), cf.AtomicPackingEfficiency(), # slower than the rest cf.CohesiveEnergy() # requires mpid present ] self._need_oxi_featurizers = [ cf.CationProperty.from_preset(preset_name='deml'), cf.OxidationStates.from_preset(preset_name='deml'), cf.ElectronAffinity(), cf.ElectronegativityDiff(), cf.YangSolidSolution(), cf.IonProperty() ]
def __init__(self): self.feature_calculators = MultipleFeaturizer([ cf.ElementProperty.from_preset(preset_name="magpie"), cf.Stoichiometry(), cf.ValenceOrbital(props=['frac']), cf.IonProperty(fast=True), cf.BandCenter(), cf.ElementFraction(), ]) self.str2composition = StrToComposition()
def all(self): fs = [ cf.AtomicOrbitals(), cf.ElementProperty.from_preset("matminer"), cf.ElementProperty.from_preset("magpie"), cf.ElementProperty.from_preset("matscholar_el"), cf.ElementProperty.from_preset("deml"), cf.ElementFraction(), cf.Stoichiometry(), cf.TMetalFraction(), cf.BandCenter(), cf.ValenceOrbital(), cf.YangSolidSolution(), cf.CationProperty.from_preset(preset_name='deml'), cf.OxidationStates.from_preset(preset_name='deml'), cf.ElectronAffinity(), cf.ElectronegativityDiff(), cf.IonProperty(), cf.Miedema(), cf.AtomicPackingEfficiency(), # slower than the rest cf.CohesiveEnergy() # requires mpid present ] return self._get_featurizers(fs)
df_ft.to_csv('Fracture_Toughness_ch.csv', index=False) # ### adding features based on compositions from matminer package # In[11]: # element property ep_feat = composition.ElementProperty.from_preset(preset_name="magpie") df_ft = ep_feat.featurize_dataframe(df_ft, col_id="composition", ignore_errors=True)# input the "composition" column to the featurizer # atomic orbitals ao_feat = composition.AtomicOrbitals() df_ft = ao_feat.featurize_dataframe(df_ft, col_id="composition", ignore_errors=True) # band center bc_feat = composition.BandCenter() df_ft = bc_feat.featurize_dataframe(df_ft, col_id="composition", ignore_errors=True) # miedema m_feat = composition.Miedema() df_ft = m_feat.featurize_dataframe(df_ft, col_id="composition", ignore_errors=True) # stoichiometry s_feat = composition.Stoichiometry() df_ft = s_feat.featurize_dataframe(df_ft, col_id="composition", ignore_errors=True) # t metal fraction tmf_feat = composition.TMetalFraction() df_ft = tmf_feat.featurize_dataframe(df_ft, col_id="composition", ignore_errors=True) # # valence orbital # vo_feat = composition.ValenceOrbital() # df_ft = vo_feat.featurize_dataframe(df_ft, col_id="composition", ignore_errors=True) # # yang solid solution # yss_feat = composition.YangSolidSolution()
from matminer.featurizers.base import MultipleFeaturizer from matminer.featurizers import composition as cf from matminer.featurizers.conversions import StrToComposition from pymatgen.core.composition import Composition import numpy as np import pandas as pd import bz2 import _pickle as cPickle import argparse feature_calculators = MultipleFeaturizer([ cf.ElementProperty.from_preset(preset_name="magpie"), cf.Stoichiometry(), cf.ValenceOrbital(props=['frac']), cf.IonProperty(fast=True), cf.BandCenter(), cf.ElementFraction(), ]) def generate(fake_df, ignore_errors=False): fake_df = np.array([fake_df]) fake_df = pd.DataFrame(fake_df) fake_df.columns = ['full_formula'] # print(fake_df) fake_df = StrToComposition().featurize_dataframe( fake_df, "full_formula", ignore_errors=ignore_errors) fake_df = fake_df.dropna() fake_df = feature_calculators.featurize_dataframe( fake_df, col_id='composition', ignore_errors=ignore_errors) fake_df["NComp"] = fake_df["composition"].apply(len)