hopfield-0.1.0.2: apps/ExperimentMain.hs
module Main where
import Options.Applicative
import qualified Hopfield.Experiments.Experiment
import qualified Hopfield.Experiments.SmallExperiments
import qualified Hopfield.Experiments.ClusterExperiments
import qualified Hopfield.Experiments.Experiment2SuperAttractors
data ExperimentArgs = ExperimentArgs { experimentName :: String
, experimentArgs :: [String]
} deriving (Show)
argParser :: ParserInfo ExperimentArgs
argParser = info (helper <*> options) ( fullDesc <> header "Runs Hopfield experiments" )
where
options = ExperimentArgs <$> argument str ( metavar "EXPERIMENT" <> help "the name of the experiment to run" )
<*> many (argument str ( metavar "EXPERIMENT_ARGS" <> help "experiment parameters" ))
main :: IO ()
main = do
ExperimentArgs expName args <- execParser argParser
case expName of
"experiment" -> Hopfield.Experiments.Experiment.main
"small" -> Hopfield.Experiments.SmallExperiments.main
"cluster" -> Hopfield.Experiments.ClusterExperiments.run args
"super" -> Hopfield.Experiments.Experiment2SuperAttractors.main
_ -> error "unknown experiment"