def get_offspring(self, cluster_a, cluster_b):
     '''Generate an offspring structure from two parent structures.'''
     #Prepare clusters
     for cluster in [cluster_a, cluster_b]:
         cluster.centre()
         cluster.rotate_random()
         cluster.sort_z()
     #Choose cutting plane
     cut = np.random.randint(1, cluster_a.natoms)
     #Make new cluster
     coords = np.empty(shape=(cluster_a.natoms, 3))
     atom_types = []
     for i in range(0, cut):
         coords[i] = cluster_a.get_coords(i)
         atom_types.append(cluster_a.atom_types[i])
     for i in range(cut, cluster_a.natoms):
         coords[i] = cluster_b.get_coords(i)
         atom_types.append(cluster_b.atom_types[i])
         composition = get_composition(cluster_a.atom_types)
     atom_types = fix_composition(composition, atom_types)
     offspring = Cluster(cluster_a.natoms,
                         coords,
                         cluster_a.minimiser,
                         atom_types=atom_types,
                         labels=cluster_a.labels)
     offspring.quenched = False
     offspring.sort_type()
     cluster_a.sort_type()
     cluster_b.sort_type()
     return offspring
Exemple #2
0
 def get_offspring(self,cluster_a,cluster_b):
     '''Generate an offspring structure from two parent structures.'''
     #Prepare clusters
     for cluster in [cluster_a,cluster_b]:
         cluster.centre()
         cluster.rotate_random()
         cluster.sort_z()
     #Choose cutting plane
     cut=np.random.randint(1,cluster_a.natoms)
     #Make new cluster
     coords=np.empty(shape=(cluster_a.natoms,3))
     atom_types=[]
     for i in range(0,cut):
         coords[i]=cluster_a.get_coords(i)
         atom_types.append(cluster_a.atom_types[i])
     for i in range(cut,cluster_a.natoms):
         coords[i]=cluster_b.get_coords(i)
         atom_types.append(cluster_b.atom_types[i])
         composition = get_composition(cluster_a.atom_types)
     atom_types=fix_composition(composition,atom_types)
     offspring=Cluster(cluster_a.natoms,
                       coords,
                       cluster_a.minimiser,
                       atom_types=atom_types,
                       labels=cluster_a.labels)
     offspring.quenched=False
     offspring.sort_type()
     cluster_a.sort_type()
     cluster_b.sort_type()
     return offspring
 def read_db(self,minimum):
     '''Read structure from Pele minimum'''
     cluster=Cluster(self.natoms,
                     np.reshape(minimum.coords,(-1,3)),
                     self.minimiser,
                     atom_types=get_atom_types(self.composition),
                     labels=self.labels)
     cluster.energy=minimum.energy
     cluster.quenched=True
     return cluster
 def get_random_cluster(self):
     '''Return a cluster with random coordinates'''
     coords=(np.random.rand(self.natoms,3) -0.5) * 1.4 * float(self.natoms)**(1./3.)
     cluster = Cluster(self.natoms,
                       coords,
                       self.minimiser,
                       atom_types=get_atom_types(self.composition),
                       labels=self.labels)
     cluster.quenched=False
     return cluster
Exemple #5
0
 def read_db(self, minimum):
     '''Read structure from Pele minimum'''
     cluster = Cluster(self.natoms,
                       np.reshape(minimum.coords, (-1, 3)),
                       self.minimiser,
                       atom_types=get_atom_types(self.composition),
                       labels=self.labels)
     cluster.energy = minimum.energy
     cluster.quenched = True
     return cluster
Exemple #6
0
 def get_random_cluster(self):
     '''Return a cluster with random coordinates'''
     coords = (np.random.rand(self.natoms, 3) - 0.5) * 1.4 * float(
         self.natoms)**(1. / 3.)
     cluster = Cluster(self.natoms,
                       coords,
                       self.minimiser,
                       atom_types=get_atom_types(self.composition),
                       labels=self.labels)
     cluster.quenched = False
     return cluster
 def read_xyz(self,xyz_file):
     '''Read structure from xyz file.'''
     natoms=int(xyz_file.readline())
     coords=np.empty(shape=(natoms,3))
     energy=float(xyz_file.readline().split()[1])
     for i in range(0,natoms):
         coords[i]=xyz_file.readline().split()[1:4]
     cluster=Cluster(natoms,
                     coords,
                     self.minimiser,
                     atom_types=get_atom_types(self.composition),
                     labels=self.labels)
     cluster.energy=energy
     cluster.quenched=True
     return cluster
Exemple #8
0
 def read_xyz(self, xyz_file):
     '''Read structure from xyz file.'''
     natoms = int(xyz_file.readline())
     coords = np.empty(shape=(natoms, 3))
     energy = float(xyz_file.readline().split()[1])
     for i in range(0, natoms):
         coords[i] = xyz_file.readline().split()[1:4]
     cluster = Cluster(natoms,
                       coords,
                       self.minimiser,
                       atom_types=get_atom_types(self.composition),
                       labels=self.labels)
     cluster.energy = energy
     cluster.quenched = True
     return cluster