def test_mask_species_blacklist(self): mask_center_atoms_by_species(self.frame, species_blacklist=["C", "H"]) test_mask = np.array([1, 0, 1, 0, 1, 1, 1, 1, 1, 0, 0], dtype="bool") self.check_mask(test_mask) mask_center_atoms_by_species(self.frame, species_blacklist=["N"]) test_mask[[0, 2, 4, 6]] = False self.check_mask(test_mask) mask_center_atoms_by_species(self.frame, species_select=["H"]) test_mask[[9, 10]] = True self.check_mask(test_mask)
def test_mask_species_blacklist(self): mask_center_atoms_by_species(self.frame, species_blacklist=['C', 'H']) test_mask = np.array([1, 0, 1, 0, 1, 1, 1, 1, 1, 0, 0], dtype='bool') self.check_mask(test_mask) mask_center_atoms_by_species(self.frame, species_blacklist=['N']) test_mask[[0, 2, 4, 6]] = False self.check_mask(test_mask) mask_center_atoms_by_species(self.frame, species_select=['H']) test_mask[[9, 10]] = True self.check_mask(test_mask)
def test_mask_species_numeric_combined(self): mask_center_atoms_by_species(self.frame, species_select=["C", "N"], species_blacklist=[7, 1]) test_mask = np.array([0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0], dtype="bool") self.check_mask(test_mask) # And check that mixed symbol-numeric lists are disallowed with self.assertRaises(ValueError): mask_center_atoms_by_species(self.frame, species_select=["C", 1]) with self.assertRaises(ValueError): mask_center_atoms_by_species(self.frame, species_blacklist=["C", 1])
import numpy as np from rascal.representations import SphericalInvariants from rascal.neighbourlist.structure_manager import ( mask_center_atoms_by_species, mask_center_atoms_by_id) molecules = ase.io.read('data/small_molecules-1000.xyz', ':100') n_centers = sum(mol.get_number_of_atoms() for mol in molecules) n_carbon_centers = sum( np.sum(mol.get_atomic_numbers() == 6) for mol in molecules) print("{:d} molecules, {:d} centres total, {:d} carbon centres".format( len(molecules), n_centers, n_carbon_centers)) for molecule in molecules: mask_center_atoms_by_species(molecule, species_select=[ 'C', ]) # Also works by atomic number #mask_center_atoms_by_species(molecule, species_select=[6,]) hypers = { 'interaction_cutoff': 5.0, 'cutoff_smooth_width': 0.5, 'max_radial': 8, 'max_angular': 6, 'gaussian_sigma_type': "Constant", 'gaussian_sigma_constant': 0.3 } representation = SphericalInvariants(**hypers) atoms_transformed = representation.transform(molecules)
def test_mask_species_and_id(self): mask_center_atoms_by_species(self.frame, species_select=["C"]) mask_center_atoms_by_id(self.frame, id_blacklist=np.arange(3)) test_mask = np.zeros((self.natoms, ), dtype="bool") test_mask[3] = True self.check_mask(test_mask)
def test_mask_species_numeric(self): # Can also select by atomic number mask_center_atoms_by_species(self.frame, species_select=[1, 6]) test_mask = np.array([0, 1, 0, 1, 0, 0, 0, 0, 0, 1, 1], dtype="bool") self.check_mask(test_mask)
def test_mask_species_both(self): mask_center_atoms_by_species(self.frame, species_select=["C", "N"], species_blacklist=["N", "H"]) test_mask = np.array([0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0], dtype="bool") self.check_mask(test_mask)
def test_mask_species_both(self): mask_center_atoms_by_species(self.frame, species_select=['C', 'N'], species_blacklist=['N', 'H']) test_mask = np.array([0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0], dtype='bool') self.check_mask(test_mask)
mask_center_atoms_by_species, mask_center_atoms_by_id, ) molecules = ase.io.read("../reference_data/inputs/small_molecules-1000.xyz", ":100") n_centers = sum(mol.get_number_of_atoms() for mol in molecules) n_carbon_centers = sum( np.sum(mol.get_atomic_numbers() == 6) for mol in molecules) print("{:d} molecules, {:d} centres total, {:d} carbon centres".format( len(molecules), n_centers, n_carbon_centers)) for molecule in molecules: mask_center_atoms_by_species( molecule, species_select=[ "C", ], ) # Also works by atomic number # mask_center_atoms_by_species(molecule, species_select=[6,]) hypers = { "interaction_cutoff": 5.0, "cutoff_smooth_width": 0.5, "max_radial": 8, "max_angular": 6, "gaussian_sigma_type": "Constant", "gaussian_sigma_constant": 0.3, } representation = SphericalInvariants(**hypers)