Import('*')
import itertools

helper = ['#source/lib/helpers/example_helpers.py']
global_helper = ['#output/derived/example/estimates_mle.json']
agent_cw = ['#source/derived/example/cw_agent_alpha.json']
remove_eps_dates = ['#source/lib/helpers/remove_eps_dates.py']
prior_types = ['more_pessimistic','less_pessimistic','central','less_optimistic','more_optimistic']
draws_posterior = [f'#datastore/output/derived_large/example/{prior}_prior_posterior_results.nc' for prior in prior_types]
extensions = ['png', 'eps']

source = ['#source/analysis/example/example_prior_dist.py'] + helper + remove_eps_dates + agent_cw
target_comb = itertools.product(prior_types, extensions)
target = [f'#output/analysis/example/{name}_prior.{ext}' for name, ext in target_comb]

env.Python(target, source)

source = ['#source/analysis/example/example_posterior_effect.py', 
          '#output/derived/example/NFK_replicated.csv'] + helper + remove_eps_dates + draws_posterior + agent_cw
target_fig = [f"{prior}_posterior" for prior in prior_types]
target_comb = itertools.product(target_fig, extensions)
target = [f'#output/analysis/example/{name}.{ext}' for name, ext in target_comb]

env.Python(target, source)


source = ['#source/analysis/example/example_lb_regret.py',
          '#datastore/output/derived_large/example/central_prior_posterior_results.nc',
          '#output/autofill/example_sk.tex'] + helper
target = ['#output/analysis/example/lb_regret.csv']

env.Python(target, source)

target = ['#output/analysis/example/posterior_density.png',
          '#output/analysis/example/posterior_density.eps',
          '#output/analysis/example/bootstrap_density.png',
          '#output/analysis/example/bootstrap_density.eps']
source = ['#source/analysis/example/example_bvm.py', 
          '#output/derived/example/bootstrap_replicates.csv'] + helper + global_helper + draws_posterior

env.Python(target, source)

effect_types = ['effect', 'costpervote']
target_comb = itertools.product(effect_types, extensions)
target = [f'#output/analysis/example/example_bb_{effect}.{ext}' for effect, ext in target_comb
          ] + ['#output/autofill/example_bb.tex']
source = ['#source/analysis/example/example_bb.py', 
          '#output/derived/example/bootstrap_replicates.csv'] + helper + global_helper

env.Python(target, source)


source = ['#source/analysis/example/density_ratio_bounds.py'] + helper
target = ['#output/autofill/density_ratio_bounds.tex']
env.Python(target, source)

target_comb = itertools.product(prior_types, extensions)
target = [f'#output/analysis/example/{prior_type}_cost_per_vote.{ext}' for prior_type, ext in target_comb]
target += [f'#output/analysis/example/{prior_type}_perceived_posterior_density.csv' for prior_type in prior_types]
target += [f'#output/analysis/example/{prior_type}_posterior_cost_per_vote.{ext}' for prior_type, ext in target_comb]

source = ['#source/analysis/example/example_posterior_costpervote.py'] + helper + global_helper + agent_cw + draws_posterior
env.Python(target, source)


source = ['#source/analysis/example/example_sk.py',
          '#datastore/output/derived_large/example/central_prior_posterior_results.nc',
] + helper + global_helper
effect_types = ['effect', 'costpervote']
target_comb = itertools.product(effect_types, extensions)
target = [f'#output/analysis/example/example_sk_{effect}.{ext}' for effect, ext in target_comb] + ['#output/autofill/example_sk.tex']

env.Python(target, source)


source = ['#source/analysis/example/example_posterior_risk.py'] + draws_posterior + helper + global_helper + agent_cw
source += [f'#output/analysis/example/{prior}_perceived_posterior_density.csv' for prior in prior_types]
targets = ['#output/autofill/example_risk_regret.tex']
target_comb = itertools.product(prior_types, extensions)
targets += [f'#output/analysis/example/{prior}_prior_risk.{ext}' for prior, ext in target_comb]\

env.Python(targets, source)


