import ajustador as aju
from ajustador.helpers import converge
import os
def fit_commands(dirname,exp_to_fit,modeltype,ntype,fitness,params,generations,popsiz, seed, test_size, map_func = None):
    last_slash = os.getcwd().rfind('/')
    tmpdir=os.getcwd()[0:last_slash]+'/output/tmp/fit'+modeltype+'-'+ntype+'-'+dirname

    fit = aju.optimize.Fit(tmpdir,
                        exp_to_fit,
                        modeltype, ntype,
                        fitness, params,
                        _make_simulation=aju.optimize.MooseSimulation.make,
                        _result_constructor=aju.optimize.MooseSimulationResult,
                        map_func = map_func)

    fit.load()
    fit.do_fit(generations, popsize=popsiz,seed=seed,sigma=2)
    if test_size>0:
        mean_dict,std_dict,CV=converge.iterate_fit(fit,test_size,popsiz,std_crit=0.01,slope_crit=1e-3,max_evals=100000)
        return fit,mean_dict,std_dict,CV
    else:
        return fit,[],[],[]