# ----------------------------------------------------------------------
# running GenI
# ----------------------------------------------------------------------

# edit this function to add new geni variants
def KNOWN_CONFIGS():
    basicConfigs = [ ('sim'  , [])
                   , ('sim-2', []) # same as sim
                   , ('sim-1', ["-b simple-1p"])
                   , ('cky', ["-b cky"])
                   , ('ear', ["-b earley"]) ]
    addconfig  = lambda f,x: map(f, x) + x
    return addconfig(lambda v: (v[0] + "-i"  , v[1]+["--opts=i"]),
           addconfig(lambda v: (v[0] + "-nc" , v[1]+["--opts=nc"]),
           addconfig(lambda v: (v[0] + "-p"  , v[1]+["--opts=pol"]),
           addconfig(lambda v: (v[0] + "s"  , v[1]+["--opts=f-sem"]),
           addconfig(lambda v: (v[0] + "r"  , v[1]+["--opts=f-root"]),
           addconfig(lambda v: (v[0] + "u"  , v[1]+["--opts=f-sub"]),
           addconfig(lambda v: (v[0] + "-"  , v[1]),
           basicConfigs)))))))

# stats to record in baseline GenI
BASELINE_METRICS = ['sem_literals', 'lex_nodes', 'lex_trees'
                   ,'lex_subst_nodes', 'lex_foot_nodes'
                   ,'plex_nodes', 'plex_trees', 'plex_foot_nodes'
                   ,"pol_seed_paths"  , "pol_used_paths" , "pol_used_bundles"
                   ,"pol_total_states" , "pol_total_trans" ]

# stats to record in actual running GenI
STANDARD_METRICS=[ 'iterations', 'chart_size'
                 , 'substitutions', 'adjunctions']

# ----------------------------------------------------------------------
# reports
# ----------------------------------------------------------------------

# some useful geni constants
ovgenKey = 'ovgens'
pfoKeys = [ 'passes', 'fails', ovgenKey ]
hardness = 'estimated_difficulty'

# table body
SUMMARY_SECTIONS = [ ('generation' , [ 'responses', 'passes', 'fails', ovgenKey, 'percent passed', 'not dead' ] )
                   , ('time'       , [ 'real', 'user', 'sys', 'cpu_time' ] )
                   , ('operations' , [ 'iterations', 'chart_size', 'substitutions', 'adjunctions' ] )
                   , ('polarity'   , [ 'pol_seed_paths', 'pol_used_paths' ] ) ]

# comparisons
DO_COMPARISON=True
DO_GROUPED_PLOTS=False

# will be tried in order
BEST_VAR_NAMES=['sim-2-ur-p', 'sim-2-u-p', 'sim-2-p' ]
COMPARISON_XS =['sem_literals', 'lex_foot_nodes']

GROUPS_X={}
GROUPS_X['sem_literals'] =[6, 9, 13, 16]
#GROUPS_X['sem_literals']=[3,4,5,6,7,8] # literals 1p/2p timeout
GROUPS_X['lex_foot_nodes']=[12,120,190,350]

COMPARISON_YS_SETS = [ ('time only', [ 'cpu_time' ])
                     , ('space only', [ 'iterations' ])
                     , ('discards only', [ 'root_cat_discards' ])
                     #, ('space and discards', [ 'iterations', 'root_cat_discards' ])
                     #, ('performance', [ 'iterations', 'cpu_time' ])
                     #, ('operations' , [ 'substitutions', 'adjunctions' ])
                     ]

# baseline comparisons to make
BASELINE_YS = [ ("Polarities", "pol_seed_paths", "pol_used_paths")
              , ("Foot node reduction", "lex_foot_nodes", "plex_foot_nodes")
              , ("Node reduction", "lex_nodes", "plex_nodes")
              , ("Tree reduction", "lex_trees", "plex_trees")
              ]

SORT_TESTS=True
SORT_TESTS_BY=COMPARISON_XS[0]

PLOT_BY_YS = []
PLOT_BY_XS = []
#PLOT_BY_YS = [ ("iterations", True)
#             , ("cpu_time"  , True) ]
#PLOT_BY_XS = [ ("test_case", False)
#             , ("sem_literals", False)
#             , ("lex_nodes", True) ]

# things to display in surface realiser output to avoid cross-referencing
CROSSREF_KEYS = COMPARISON_XS

# ----------------------------------------------------------------------
# etc
# ----------------------------------------------------------------------

# vim: sw=4 expandtab syntax=python:

