{-# LANGUAGE DeriveDataTypeable #-} module Args ( HIrt(..) , getArgs ) where import Types import System.Console.CmdArgs data HIrt = Convert | Estimate { responses :: FilePath , iTaskParams :: Maybe FilePath , iThetas :: Maybe FilePath , algorithm :: Algorithm , maxRounds :: Int , precision :: Double , intPrec :: Double , thetaStats :: [StatisticType] , taskStats :: [StatisticType] , oResponses :: Maybe FilePath , oRespFormat :: RespFormat , oTaskParams :: Maybe FilePath , oTheta :: Maybe FilePath , oBayesPlot :: Maybe FilePath , oAllTaskParams :: Maybe String , oAllTheta :: Maybe String } deriving (Show, Data, Typeable) convert :: HIrt convert = Convert {} estimate :: HIrt estimate = Estimate { responses = def &= argPos 0 &= typ "RESPONSES" , iTaskParams = def &= typFile &= help "initial task params" , iThetas = def &= typFile &= help "initial contestant abilities" , algorithm = JML &= help "estimation algorithm" , maxRounds = 40 &= name "n" &= help "stop if more than rounds (defaults to 40)" , precision = 1e-8 &= help "stop if change is less than (defaults to 1e-8)" , intPrec = 1e-9 &= help "calculating precision of algorithms (default 1e-9)" , thetaStats = def &= help "statistics for contestants" , taskStats = def &= help "statistics for tasks" , oResponses = def &= typFile &= help "output parsed responses" , oRespFormat = List &= help "output response format" , oTaskParams = def &= typFile &= help "output file for final task param estimate" , oTheta = def &= typFile &= help "output file for final contestant ability estimate" , oBayesPlot = def &= typFile &= help "output coordinate list for aposteriori bayes probability" , oAllTaskParams = def &= typ "TEMPLATE" &= help "template for output of all round task parameters (params -> params000)" , oAllTheta = def &= typ "TEMPLATE" &= help "template for output of all round thetas (thetas -> thetas000)" } &= auto getArgs :: IO HIrt getArgs = cmdArgs $ modes [estimate, convert]