ehejin commited on
Commit
53fa83f
·
1 Parent(s): 4366edc

handle single variant study

Browse files
Files changed (1) hide show
  1. src/data.py +9 -13
src/data.py CHANGED
@@ -178,34 +178,30 @@ def _assign_from_category(category: str, n: int, cfg: dict) -> list:
178
  return assigned
179
 
180
  def _assign_variants(cfg: dict, n: int) -> list:
181
- """
182
- Return a list of n variant dicts (one per item), alternating the
183
- personalized/base split across users.
184
- """
185
  variants = cfg.get("model_variants")
186
  if not variants:
187
- # Fallback: single variant from old-style config
188
  return [{"model_name": cfg["model_name"], "prompt_variant": cfg["prompt_variant"]}] * n
189
 
 
 
 
 
 
190
  lock = FileLock(str(_data_dir(cfg) / "variant_counter.lock"))
191
  with lock:
192
  ctr = _read_counter(_data_dir(cfg) / "variant_counter.txt")
193
  _write_counter(_data_dir(cfg) / "variant_counter.txt", ctr + 1)
194
 
195
- # Swap counts on every other user
196
  v0, v1 = variants[0], variants[1]
197
  if ctr % 2 == 1:
198
  v0, v1 = v1, v0
199
 
200
- from itertools import zip_longest
201
- interleaved = []
202
- for a, b in zip_longest([v0] * v0["count"], [v1] * v1["count"]):
203
- if a: interleaved.append(a)
204
- if b: interleaved.append(b)
205
- assigned = interleaved
206
  print(f"[VARIANTS] user {ctr}: {[v['name'] for v in assigned]}")
207
  return assigned
208
-
209
  def _compute_counts(cfg: dict) -> dict:
210
  """
211
  Determine how many items to assign from each category for one user.
 
178
  return assigned
179
 
180
  def _assign_variants(cfg: dict, n: int) -> list:
 
 
 
 
181
  variants = cfg.get("model_variants")
182
  if not variants:
183
+ # Old-style config with top-level model_name/prompt_variant
184
  return [{"model_name": cfg["model_name"], "prompt_variant": cfg["prompt_variant"]}] * n
185
 
186
+ if len(variants) == 1:
187
+ # Single variant — assign it to all items, no alternation needed
188
+ return [variants[0]] * n
189
+
190
+ # Two-variant alternation
191
  lock = FileLock(str(_data_dir(cfg) / "variant_counter.lock"))
192
  with lock:
193
  ctr = _read_counter(_data_dir(cfg) / "variant_counter.txt")
194
  _write_counter(_data_dir(cfg) / "variant_counter.txt", ctr + 1)
195
 
 
196
  v0, v1 = variants[0], variants[1]
197
  if ctr % 2 == 1:
198
  v0, v1 = v1, v0
199
 
200
+ assigned = [v0] * v0["count"] + [v1] * v1["count"]
201
+ random.shuffle(assigned)
 
 
 
 
202
  print(f"[VARIANTS] user {ctr}: {[v['name'] for v in assigned]}")
203
  return assigned
204
+
205
  def _compute_counts(cfg: dict) -> dict:
206
  """
207
  Determine how many items to assign from each category for one user.