                   (fn [k]
                     [k
                       (sort-by :id
-                        (time2 (str "group-clusters-k=" k)
                         (kmeans base-clusters-proj k
                           :last-clusters
                             ; A little pedantic here in case no clustering yet for this k

                (max-key group-clusterings-silhouettes (keys group-clusterings))))

      :bid-to-pid (plmb/fnk [base-clusters]
                     (time2 "bid-to-pid"
                      (greedy
                       (map :members (sort-by :id base-clusters)))))

      ;; returns {tid {
      ;;           :agree [0 4 2 0 6 0 0 1]
      ;;           :disagree [3 0 0 1 0 23 0 ]}
      ;; where the indices in the arrays are bids
      :votes-base (plmb/fnk [bid-to-pid rating-mat]
                     (time2 "votes-base"
                       (->> rating-mat
                          colnames
                          (map (fn [tid]
                             {:tid tid
                              :A (agg-bucket-votes-for-tid bid-to-pid rating-mat agree? tid)
                              :D (agg-bucket-votes-for-tid bid-to-pid rating-mat disagree? tid)}))
                          (reduce (fn [o entry] (assoc o (:tid entry) (dissoc entry :tid)))))))

     ; End of large-update
     }))


  (merge
     base-conv-update-graph
     {:mat (plmb/fnk [rating-mat]
             ; swap nils for zeros - most things need the 0s, but repness needs the nils"
             (greedy
               (map (fn [row] (map #(if (nil? %) 0 %) row))
                 (get-matrix rating-mat))))

      :pca (plmb/fnk [conv mat opts']
             (wrapped-pca mat (:n-comps opts')
                          :start-vectors (get-in conv [:pca :comps])
                          :iters (:pca-iters opts')))

      :proj (plmb/fnk [mat pca]
              (pca-project mat pca))

      :base-clusters
            (plmb/fnk [conv rating-mat proj in-conv opts']
              (greedy
                (let [proj-mat
                        (named-matrix (rownames rating-mat) ["x" "y"] proj)
                      in-conv-mat (rowname-subset proj-mat in-conv)]
