 
     ;;TODO abandon tsne for a simple dxd grid of 2d scatter plots
 
-    ;(clojure.pprint/pprint displayable)
+    (clojure.pprint/pprint displayable)
     ;(clojure.pprint/pprint sorted-stats)
     )
   )
                   :pos         50
                   :label-dist  15
                   :label-style {:text-anchor "end"}})
        :data   [(merge (heatmap-spec id) opts)]}
       (viz/svg-plot2d-cartesian)
       (svg/svg {:width 600 :height 300})
       (svg/serialize)
       (spit (str prefix "-" (name id) ".svg"))))

(defn display-state [props grid-cells]
  (let [cluster-positions (remove nil? (map (fn [[pos-idx char-vec]]
                                              (let [cluster (::core/cluster char-vec)]
                                                (if-not (or (= nil cluster)
                                                            (= "NO_CLASS" cluster))
                                                  pos-idx)))
                                            grid-cells))]
    (if (= 2 (::core/dimensions props))
      {"none" cluster-positions}
      (let [_            (println "cluster positions: " cluster-positions)
            input-matrix (matrix/array :vectorz cluster-positions)
            _            (println "input mat;" input-matrix)
            algo-name    :parallel-bht
            _            (println "tsne: " algo-name)
            output-map   {algo-name (tsne/tsne input-matrix 2 :tsne-algorithm algo-name :perplexity 0.01)}]
        output-map)))

  ;(cartesian-viz "hm" :rainbow2)
  ;(cartesian-viz "hm" :orange-blue)
  )



                       (max domain-start (min domain-end (+ domain-start

                                                            ;(rand (- domain-end domain-start))
                                                            (+ (get the-centroid idx) (/ (first (random/sample-normal 1)) 10.0))
                                                            ))))
                     (::core/phase-space properties))))
    (case method
