latte.py 742 B

1234567891011121314151617181920212223242526
  1. import json
  2. import numpy as np
  3. from analyze import oklab2hex
  4. with open("web/database.js") as infile:
  5. next(infile)
  6. data = [
  7. (d := json.loads(s))["total"]
  8. for line in infile
  9. if (s := line.strip().strip(",")) != "]"
  10. ]
  11. sizes = np.array([d["size"] for d in data])
  12. centroids = np.array([d["centroid"] for d in data])
  13. medians = np.array([d["median"] for d in data])
  14. print("Simple mean of...")
  15. print(" Centroids:", oklab2hex(centroids.mean(axis=0)))
  16. print(" Medians:", oklab2hex(medians.mean(axis=0)))
  17. print("Reweighted mean of...")
  18. print(" Centroids:", oklab2hex(
  19. (centroids * sizes[:, np.newaxis]).sum(axis=0) / sizes.sum()))
  20. print(" Medians:", oklab2hex(
  21. (medians * sizes[:, np.newaxis]).sum(axis=0) / sizes.sum()))