def test_orbital_field_matrix(self): ofm_maker = OrbitalFieldMatrix() ofm = ofm_maker.featurize(self.diamond)[0] mtarget = np.zeros((32, 32)) mtarget[1][1] = 1.4789015 # 1.3675444 mtarget[1][3] = 1.4789015 # 1.3675444 mtarget[3][1] = 1.4789015 # 1.3675444 mtarget[3][3] = 1.4789015 # 1.3675444 if for a coord# of exactly 4 for i in range(32): for j in range(32): if not i in [1, 3] and not j in [1, 3]: self.assertEquals(ofm[i, j], 0.0) mtarget = np.matrix(mtarget) self.assertAlmostEqual(np.linalg.norm(ofm - mtarget), 0.0, places=4)
def test_orbital_field_matrix(self): ofm_maker = OrbitalFieldMatrix() ofm = ofm_maker.featurize(self.diamond)[0] mtarget = np.zeros((32, 32)) mtarget[1][1] = 1.4789015 # 1.3675444 mtarget[1][3] = 1.4789015 # 1.3675444 mtarget[3][1] = 1.4789015 # 1.3675444 mtarget[3][3] = 1.4789015 # 1.3675444 if for a coord# of exactly 4 for i in range(32): for j in range(32): if not i in [1, 3] and not j in [1, 3]: self.assertEqual(ofm[i, j], 0.0) mtarget = np.matrix(mtarget) self.assertAlmostEqual( np.linalg.norm(ofm - mtarget), 0.0, places=4) ofm_maker = OrbitalFieldMatrix(True) ofm = ofm_maker.featurize(self.diamond)[0] mtarget = np.zeros((39, 39)) mtarget[1][1] = 1.4789015 mtarget[1][3] = 1.4789015 mtarget[3][1] = 1.4789015 mtarget[3][3] = 1.4789015 mtarget[1][33] = 1.4789015 mtarget[3][33] = 1.4789015 mtarget[33][1] = 1.4789015 mtarget[33][3] = 1.4789015 mtarget[33][33] = 1.4789015 mtarget = np.matrix(mtarget) self.assertAlmostEqual( np.linalg.norm(ofm - mtarget), 0.0, places=4) ofm_flat = OrbitalFieldMatrix(period_tag=False, flatten=True) self.assertEqual(len(ofm_flat.feature_labels()), 1024) ofm_flat = OrbitalFieldMatrix(period_tag=True, flatten=True) self.assertEqual(len(ofm_flat.feature_labels()), 1521) ofm_vector = ofm_flat.featurize(self.diamond) for ix in [40, 42, 72, 118, 120, 150, 1288, 1320]: self.assertAlmostEqual(ofm_vector[ix], 1.4789015345821415)
def test_orbital_field_matrix(self): ofm_maker = OrbitalFieldMatrix(flatten=False) ofm = ofm_maker.featurize(self.diamond)[0] mtarget = np.zeros((32, 32)) mtarget[1][1] = 1.4789015 # 1.3675444 mtarget[1][3] = 1.4789015 # 1.3675444 mtarget[3][1] = 1.4789015 # 1.3675444 mtarget[3][3] = 1.4789015 # 1.3675444 if for a coord# of exactly 4 for i in range(32): for j in range(32): if not i in [1, 3] and not j in [1, 3]: self.assertEqual(ofm[i, j], 0.0) mtarget = np.matrix(mtarget) self.assertAlmostEqual(np.linalg.norm(ofm - mtarget), 0.0, places=4) ofm_maker = OrbitalFieldMatrix(True, flatten=False) ofm = ofm_maker.featurize(self.diamond)[0] mtarget = np.zeros((39, 39)) mtarget[1][1] = 1.4789015 mtarget[1][3] = 1.4789015 mtarget[3][1] = 1.4789015 mtarget[3][3] = 1.4789015 mtarget[1][33] = 1.4789015 mtarget[3][33] = 1.4789015 mtarget[33][1] = 1.4789015 mtarget[33][3] = 1.4789015 mtarget[33][33] = 1.4789015 mtarget = np.matrix(mtarget) self.assertAlmostEqual(np.linalg.norm(ofm - mtarget), 0.0, places=4) ofm_flat = OrbitalFieldMatrix(period_tag=False, flatten=True) self.assertEqual(len(ofm_flat.feature_labels()), 1024) ofm_flat = OrbitalFieldMatrix(period_tag=True, flatten=True) self.assertEqual(len(ofm_flat.feature_labels()), 1521) ofm_vector = ofm_flat.featurize(self.diamond) for ix in [40, 42, 72, 118, 120, 150, 1288, 1320]: self.assertAlmostEqual(ofm_vector[ix], 1.4789015345821415)
rmse += np.mean(((Y_pred - Y_test) / N_test)**2)**0.5 / NUM_SPLITS r2 += sklearn.metrics.r2_score(Y_test / N_test, Y_pred / N_test) / NUM_SPLITS print("SCM RESULTS MAE = %f, RMSE = %f, R-SQUARED = %f" % (mae, rmse, r2)) finish = time.monotonic() print("TIME TO TEST SCM %f SECONDS" % (finish - start)) print() # OFM evaluation for ROW in [False, True]: print("ROW ELEMS", ROW) # Featurize dataframe with OFM and time it start = time.monotonic() ofm = OrbitalFieldMatrix(ROW) ofm.set_n_jobs(NJOBS) df = ofm.featurize_dataframe(df, 'structure') df['orbital field matrix'] = pd.Series([s.flatten() \ for s in df['orbital field matrix']], df.index) finish = time.monotonic() print("TIME TO FEATURIZE OFM %f SECONDS" % (finish - start)) print() # Get OFM descriptor and set up KRR model krr = KernelRidge() hpsel = GridSearchCV(krr, params['orbital field matrix'], cv=inner_cv, refit=True) X = df['orbital field matrix'].as_matrix()
mae += np.mean(np.abs(Y_pred - Y_test) / N_test) / NUM_SPLITS rmse += np.mean(((Y_pred - Y_test) / N_test)**2)**0.5 / NUM_SPLITS r2 += sklearn.metrics.r2_score(Y_test / N_test, Y_pred / N_test) / NUM_SPLITS print ("SCM RESULTS MAE = %f, RMSE = %f, R-SQUARED = %f" % (mae, rmse, r2)) finish = time.monotonic() print ("TIME TO TEST SCM %f SECONDS" % (finish-start)) print() # OFM evaluation for ROW in [False, True]: print ("ROW ELEMS", ROW) # Featurize dataframe with OFM and time it start = time.monotonic() ofm = OrbitalFieldMatrix(ROW) ofm.set_n_jobs(NJOBS) df = ofm.featurize_dataframe(df, 'structure') df['orbital field matrix'] = pd.Series([s.flatten() \ for s in df['orbital field matrix']], df.index) finish = time.monotonic() print ("TIME TO FEATURIZE OFM %f SECONDS" % (finish-start)) print() # Get OFM descriptor and set up KRR model krr = KernelRidge() hpsel = GridSearchCV(krr, params['orbital field matrix'], cv=inner_cv, refit=True) X = df['orbital field matrix'].as_matrix() # Flatten each OFM to form a vector descriptor XLIST = []
rmse += np.mean(((Y_pred - Y_test) / N_test)**2)**0.5 / NUM_SPLITS r2 += sklearn.metrics.r2_score(Y_test / N_test, Y_pred / N_test) / NUM_SPLITS print("SCM RESULTS MAE = %f, RMSE = %f, R-SQUARED = %f" % (mae, rmse, r2)) finish = time.monotonic() print("TIME TO TEST SCM %f SECONDS" % (finish - start)) print() # OFM evaluation for ROW in [False, True]: print("ROW ELEMS", ROW) # Featurize dataframe with OFM and time it start = time.monotonic() ofm = OrbitalFieldMatrix(period_tag=ROW) ofm.set_n_jobs(NJOBS) df = ofm.fit_featurize_dataframe(df, 'structure') finish = time.monotonic() print("TIME TO FEATURIZE OFM %f SECONDS" % (finish - start)) print() # Get OFM descriptor and set up KRR model krr = KernelRidge() hpsel = GridSearchCV(krr, params['orbital field matrix'], cv=inner_cv, refit=True) X = df[ofm.feature_labels()].to_numpy() # Flatten each OFM to form a vector descriptor XLIST = []
import numpy as np from matminer.featurizers.structure import OrbitalFieldMatrix cen_structures = np.load( '/home/dennis/Dropbox/mp_share_dt_ag/structs/centrosymmetric_insulators.npy', allow_pickle=True) print(len(cen_structures)) #create ofm representations ofm = OrbitalFieldMatrix() cen_ofm = [] for item in cen_structures: cen_ofm.append(ofm.featurize(item)) np.save('centrosymmetric_ofm_representation.npy', cen_ofm) non_cen_structures = np.load( '/home/dennis/Dropbox/mp_share_dt_ag/structs/non_centrosymmetric_insulators.npy', allow_pickle=True) print(len(non_cen_structures)) non_cen_ofm = [] for item in non_cen_structures: non_cen_ofm.append(ofm.featurize(item)) np.save('non_centrosymmetric_ofm_representation.npy', non_cen_ofm)