def test_adsorption(self): images = database_to_list('data/bajdichWO32018_ads.db') images = images_connectivity(images) slabs = database_to_list('data/bajdichWO32018_slabs.db') slabs_dict = {} for slab in slabs: slabs_dict[slab.info['id']] = slab for i, atoms in enumerate(images): species = atoms.info['key_value_pairs']['species'] atoms.subsets['ads_atoms'] = \ slab_positions2ads_index(atoms, slabs[i], species) if 'slab_atoms' not in atoms.subsets: atoms.subsets['slab_atoms'] = slab_index(atoms) if ('chemisorbed_atoms' not in atoms.subsets or 'site_atoms' not in atoms.subsets or 'ligand_atoms' not in atoms.subsets): chemi, site, ligand = info2primary_index(atoms) atoms.subsets['chemisorbed_atoms'] = chemi atoms.subsets['site_atoms'] = site atoms.subsets['ligand_atoms'] = ligand attach_cations(atoms, anion_number=8) charges = formal_charges(atoms) atoms.set_initial_charges(charges) gen = FeatureGenerator(nprocs=1) train_fpv = default_fingerprinters(gen, 'chalcogenides') matrix = gen.return_vec(images, train_fpv) labels = gen.return_names(train_fpv) if __name__ == '__main__': for i, l in enumerate(labels): print(i, l) print(atoms.get_initial_charges()) self.assertTrue(len(labels) == np.shape(matrix)[1])
def test_recontruction(self): images = database_to_list('data/ads_example.db') slabs = [] for atoms in images: slab = atoms.copy() slab.pop(-1) slabs.append(slab) images = autogen_info(images) slabs = images_connectivity(slabs) image_pairs = zip(images, slabs) r_index = check_reconstructions(image_pairs) for i in range(len(images)): species = images[i].info['key_value_pairs']['species'] connectivity2ads_index(images[i], species) self.assertTrue(len(r_index) == 0)
def test_db_ads(self): """Test the feature generation.""" images = database_to_list('data/ads_example.db') images = autogen_info(images) print(str(len(images)) + ' training examples.') gen = FeatureGenerator(nprocs=1) train_fpv = default_fingerprinters(gen, 'adsorbates') train_fpv += [gen.db_size, gen.ctime, gen.dbid, gen.delta_energy] matrix = gen.return_vec(images, train_fpv) labels = gen.return_names(train_fpv) print(np.shape(matrix), type(matrix)) if __name__ == '__main__': for i, l in enumerate(labels): print(i, l) self.assertTrue(len(labels) == np.shape(matrix)[1])
def test_db_ads(self): """Test the feature generation.""" images = database_to_list('data/ads_example.db') [atoms.set_tags(np.zeros(len(atoms))) for atoms in images] images = autogen_info(images) print(str(len(images)) + ' training examples.') gen = FeatureGenerator(nprocs=1) train_fpv = default_fingerprinters(gen, 'adsorbates') # Test db specific functions. train_fpv += [gen.db_size, gen.ctime, gen.dbid, gen.delta_energy] # Old CatApp AxBy fingerprints. train_fpv += [gen.catapp_AB] matrix = gen.return_vec(images, train_fpv) labels = gen.return_names(train_fpv) print(np.shape(matrix), type(matrix)) if __name__ == '__main__': for i, l in enumerate(labels): print(i, l) self.assertTrue(len(labels) == np.shape(matrix)[1])