                  :types [:dichromat :tetrachromat]
                  :samples [2500000]
                  :runs [0]
+                 :save-every 100000}
+     :periphery {:surrounds [[0.25 3.0] nil]
+                 :L-to-Ms [[16 1] [4 1] [1 1] [1 4] [1 16]]
+                 :M-lambda-maxs [530.3]
+                 :L-lambda-maxs [558.9]
+                 :S-lambda-maxs [420.7]
+                 :sizes [40]
+                 :spacings [2 4]
+                 :S-cone-flags [:human]
+                 :samples [2500000]
+                 :runs ["periphery"]
                  :save-every 100000}
      :LM-only   {:surrounds [[0.25 3.0] nil]
                  :L-to-Ms [[16 1] [4 1] [1 1] [1 4] [1 16]]

                                       (= retina-type :dichromat) (dissoc (first q) :A :M))))))]
      (retina :type retina-type
              :surround surround
              :mosaic (mosaic :size retina-size :blur blur)
              :cones (cond (= retina-type :trichromat) [:L :M :S]
                           (= retina-type :tetrachromat) [:L :A :M :S]
                           (= retina-type :dichromat) [:L :S])

                       (= retina-type :dichromat) [1]
                       :else (throw (IllegalArgumentException. "invalid type")))
          S-cone-flags (get plan :S-cone-flags [:human])
          mosaic mosaics
          lmaxs (loop [q cone-lambda-maxs, res #{}]
                  (if (nil? q)
                    (if (= S-cone-flags :none)
