 
 (def penn-atom-generators
   (cycle-to-longest (concat (distinct (mapv :target (:all-train @penn-fitness-cases))) ;; classes, for output
-                            (list (tag-instruction-erc [:exec :integer :float :boolean :string] 1000)
+                            (list (tag-instruction-erc [:exec :integer :boolean :string] 1000)
                                   (tagged-instruction-erc 1000)
-                                  (fn [] (lrand-int 1000))
-                                  (fn [] (lrand 1))))
+                                  (fn [] (lrand-int 1000))))
                     (for [n (map inc 
                                  (range (count (:inputs (first (:train @penn-fitness-cases))))))]
                       (symbol (str "in" n)))
-                    (concat (registered-for-stacks [:exec :integer :float :boolean])
+                    (concat (registered-for-stacks [:exec :integer :boolean])
                             '(string_pop string_dup string_dup_times string_dup_items
                                          string_swap string_rot string_flush string_eq string_stackdepth
                                          string_yank string_yankdup string_shove string_empty))))

  (let [raw-data (read-data)
        target-column (.indexOf (mapv clojure.string/upper-case (mapv name (first raw-data)))
                                "CLASS")
        inputs (fn [row] 
                 (vec (concat (take target-column row) 
                              (drop (inc target-column) row))))
        target (fn [row] (str (nth row target-column))) ;; target classes are strings
        fitness-cases-shuffled (lshuffle (mapv (fn [row]
                                                 {:inputs (inputs row)

  (let [f (slurp* (str "src/clojush/problems/classification/data/"  ;; todo?: allow command-line arg
                       ;"GAMETES_Epistasis_2-Way_20atts_0.4H_EDM-1_1.txt"
                       ;"a_5000s_2000her_0.1__maf_0.2_EDM-1_01.txt"
                       "xor_2_a_20s_1600_EDM-1_01.txt"
                       ;"xor_3_a_20s_1600_EDM-1_01.txt"
                       ;"xor_4_a_20s_1600_EDM-1_01.txt"
                       ))
        lines (csv/parse-csv f :delimiter \tab)]
    (println "Total number of data lines:" (count lines))
    (mapv #(mapv read-string %) lines)))

(def training-proportion 0.1) ;; proportion of training cases to use each generation

(def resampling false)

