def logarithmic_theta_from_mean(mean):
    '''Return a theta that leads to a given logarithmic mean.'''
    # set lower and upper bounds to limit the search process
    lower = 0.01
    upper = 0.99999
    if mean < logser.mean(lower):
        return lower
    elif mean > logser.mean(upper):
        return upper
    else:
        return bisect(lambda nu: logser.mean(nu) - mean, lower, upper)
def logarithmic_theta_from_mean(mean):
    '''Return a theta that leads to a given logarithmic mean.'''
    # set lower and upper bounds to limit the search process
    lower = 0.01
    upper = 0.99999
    if mean<logser.mean(lower):
        return lower
    elif mean>logser.mean(upper):
        return upper
    else: 
        return bisect(lambda nu: logser.mean(nu)-mean,lower,upper)
    decade_mean = np.mat(
        np.kron(np.eye((T2 - T1 + 1) / 10 * dt),
                np.ones((10 / dt, 10 / dt)) / 10 * dt))

    # walk through each alternative
    for value in ALTERNATIVES[PARAMETER]:
        # use default parameter values from settings.py
        parameters = DEFAULT.copy()
        # except for PARAMETER, for which we are doing the loop
        parameters[PARAMETER] = value
        # two percent expected growth rate
        parameters['Lambda'] = parameters['gamma'] + 0.02
        # USA variance should match data
        theta_USA = logarithmic_theta_from_concentration(USA_VAR /
                                                         parameters['gamma'])
        nbar_USA = logser.mean(theta_USA)
        print 'USA has theta=%f and n=%f' % (theta_USA, nbar_USA)

        parameters['epsilonpibar'] = USA_GDP / nbar_USA
        parameters['Ncap'] = Ncap

        # test assumptions
        assert 1 / (parameters['epsilon'] -
                    1) + parameters['theta_N'] <= 1 + parameters['theta_m0']

        # create a scenario to be simulated with the parameters
        scenario = Scenario(GDP_list,
                            population_list,
                            dt=dt,
                            how_long=142,
                            T1=T1,
    # annual simulation
    dt = 1
    # helper matrix to calcuate decade means
    decade_mean = np.mat(np.kron(np.eye((T2-T1+1)/10*dt),np.ones((10/dt,10/dt))/10*dt))

    # walk through each alternative
    for value in ALTERNATIVES[PARAMETER]:
        # use default parameter values from settings.py
        parameters = DEFAULT.copy()
        # except for PARAMETER, for which we are doing the loop
        parameters[PARAMETER] = value
        # two percent expected growth rate
        parameters['Lambda'] = parameters['gamma']+0.02
        # USA variance should match data
        theta_USA = logarithmic_theta_from_concentration(USA_VAR/parameters['gamma'])
        nbar_USA = logser.mean(theta_USA)
        print 'USA has theta=%f and n=%f' % (theta_USA, nbar_USA)

        parameters['epsilonpibar'] = USA_GDP/nbar_USA
        parameters['Ncap'] = Ncap

        # test assumptions
        assert 1/(parameters['epsilon']-1) + parameters['theta_N'] <= 1+parameters['theta_m0']
        
        # create a scenario to be simulated with the parameters
        scenario = Scenario(
                GDP_list,population_list,dt=dt,how_long=142,
                T1=T1,T2=T2,**parameters)

        # size of scenario object. crucial if sending to picloud over network
        print len(pickle.dumps(scenario))