carrotcake3 commited on
Commit
9ef4d00
·
verified ·
1 Parent(s): c1d1fbc

Update core/evolution/evolution.py

Browse files
Files changed (1) hide show
  1. core/evolution/evolution.py +18 -11
core/evolution/evolution.py CHANGED
@@ -163,25 +163,32 @@ class MolecularEvolution:
163
  sample_smiles = []
164
 
165
  if survivors:
166
- if self.config.maximize_cn:
167
- # sort by highest CN
168
- sorted_survivors = sorted(survivors, key=lambda m: m.cn, reverse=True)
 
 
 
 
 
 
 
 
169
  else:
170
- # sort by lowest CN error (closest to target)
171
- sorted_survivors = sorted(survivors, key=lambda m: m.cn_error)
 
172
 
173
- top5 = sorted_survivors[:5]
174
 
175
- sample_smiles = [m.smiles for m in top5]
 
176
 
177
- # remove duplicates just in case
178
- sample_smiles = list(dict.fromkeys(sample_smiles))
179
-
180
  self.history.append({
181
  "generation": gen,
182
  "smiles": sample_smiles
183
  })
184
-
185
 
186
  offspring = self._generate_offspring(survivors)
187
 
 
163
  sample_smiles = []
164
 
165
  if survivors:
166
+ is_final_gen = (gen == self.config.generations)
167
+
168
+ if is_final_gen:
169
+ # FINAL generation → show top 5 survivors
170
+ if self.config.maximize_cn:
171
+ sorted_survivors = sorted(survivors, key=lambda m: m.cn, reverse=True)
172
+ else:
173
+ sorted_survivors = sorted(survivors, key=lambda m: m.cn_error)
174
+
175
+ chosen = sorted_survivors[:5]
176
+
177
  else:
178
+ # EARLY generations show rejected molecules
179
+ survivor_smiles = set(m.smiles for m in survivors)
180
+ rejected = [m for m in population if m.smiles not in survivor_smiles]
181
 
182
+ chosen = rejected[:5] # show up to 5 rejected ones
183
 
184
+ sample_smiles = [m.smiles for m in chosen]
185
+ sample_smiles = list(dict.fromkeys(sample_smiles)) # remove duplicates
186
 
 
 
 
187
  self.history.append({
188
  "generation": gen,
189
  "smiles": sample_smiles
190
  })
191
+
192
 
193
  offspring = self._generate_offspring(survivors)
194