def test_invar_discrete(): from scipy.stats import randint invar = InVar('randint', ndraws=1000, dist=randint, distkwargs={ 'low': 1, 'high': 5 }, seed=invarseeds[0], samplemethod=SampleMethod.RANDOM) assert invar.stats().mean == pytest.approx(2.538)
def plot_testing(): from scipy.stats import norm invar = InVar('norm', ndraws=1000, dist=norm, distkwargs={ 'loc': 10, 'scale': 4 }, seed=invarseeds[1], samplemethod=SampleMethod.RANDOM, firstcaseismedian=False) fig, ax = invar.plot() plt.show()
def invar_custom_dist(): return InVar('custom', ndraws=1000, dist=custom_dist, distkwargs=dict(), ninvar=1, samplemethod=SampleMethod.RANDOM, seed=invarseeds[2], firstcaseismedian=False)
def invar_lognorm_random(): from scipy.stats import lognorm return InVar('lognorm', ndraws=1000, dist=lognorm, distkwargs={ 's': lognorm_sigma, 'scale': np.exp(lognorm_mu) }, seed=invarseeds[1], samplemethod=SampleMethod.RANDOM, firstcaseismedian=False)
def invar_norm_random(): from scipy.stats import norm return InVar('norm', ndraws=1000, dist=norm, distkwargs={ 'loc': 10, 'scale': 4 }, seed=invarseeds[1], samplemethod=SampleMethod.RANDOM, firstcaseismedian=False)
def test_invar_norm_sobol_warning(): from scipy.stats import norm with pytest.warns(UserWarning, match='Infinite value'): InVar('norm', ndraws=1000, dist=norm, distkwargs={ 'loc': 10, 'scale': 4 }, ninvar=1, samplemethod=SampleMethod.SOBOL, seed=invarseeds[1], firstcaseismedian=False)
def test_invar_nummap(): invar = InVar('map', ndraws=10, dist=custom_dist, distkwargs=dict(), ninvar=1, nummap={ 1: 'a', 5: 'e', 6: 'f' }, samplemethod=SampleMethod.RANDOM, seed=invarseeds[3], firstcaseismedian=False) assert invar.vals == ['f', 'e', 'f', 'f', 'a', 'e', 'e', 'a', 'e', 'e']
def case(): seed = 74494861 from scipy.stats import norm invar = { 'Test': InVar('Test', ndraws=10, ninvar=1, dist=norm, distkwargs={ 'loc': 10, 'scale': 4 }, seed=seed, firstcaseismedian=True) } case = Case(ncase=0, ismedian=False, invars=invar, constvals=dict(), seed=seed) return case
def plot_testing(): import numpy as np import matplotlib.pyplot as plt from scipy.stats import randint, norm from monaco.mc_var import InVar, OutVar from monaco.mc_plot import (plot, plot_hist, plot_cdf, plot_cov_corr, plot_integration_convergence, plot_integration_error, plot_sensitivities) from monaco.mc_enums import SampleMethod generator = np.random.RandomState(74494861) invarseeds = generator.randint(0, 2**31-1, size=10) plt.close('all') invars = dict() nummap = {1: 'a', 2: 'b', 3: 'c', 4: 'd', 5: 'e'} invars['randint'] = InVar(name='randint', ndraws=1000, dist=randint, distkwargs={'low': 1, 'high': 6}, nummap=nummap, samplemethod=SampleMethod.RANDOM, seed=invarseeds[0]) invars['norm'] = InVar(name='norm', ndraws=1000, dist=norm, distkwargs={'loc': 10, 'scale': 4}, samplemethod=SampleMethod.RANDOM, seed=invarseeds[1]) invars['norm'].addVarStat(stat='orderstatTI', statkwargs={'p': 0.75, 'c': 0.50, 'bound': '2-sided'}) invars['norm'].addVarStat(stat='orderstatP', statkwargs={'p': 0.5, 'c': 0.9999, 'bound': 'all'}) invars['norm2'] = InVar(name='norm2', ndraws=1000, dist=norm, distkwargs={'loc': 10, 'scale': 4}, samplemethod=SampleMethod.RANDOM, seed=invarseeds[2]) outvars = dict() outvars['test'] = OutVar(name='test', vals=[1, 0, 2, 2], firstcaseismedian=True) outvars['test'].sensitivity_ratios = {'a': 0.15, 'b': 0.35, 'c': 0.4} f, (ax1, ax2) = plt.subplots(2, 1) plot_hist(invars['randint'], ax=ax1, orientation='horizontal') # plot_hist plot_cdf(invars['randint'], ax=ax2) # plot_cdf plot(invars['norm'], title='norm', invar_space=InVarSpace.PCTS) # plot_hist plot_hist(outvars['test'], orientation='horizontal', rug_plot=False) # plot_hist plot_cdf(invars['norm'], orientation='horizontal') # plot_cdf plot_cdf(outvars['test']) # plot_cdf plot_sensitivities(outvars['test'], sensitivities='ratios', sort=True) # plot_sensitivities plot(invars['randint'], invars['norm'], cases=None, highlight_cases=range(10, 30), rug_plot=True, cov_plot=True, cov_p=[0.90, 0.95, 0.99]) # plot_2d_scatter plot(invars['randint'], invars['norm'], invars['norm2'], cases=[], highlight_cases=range(10, 30)) # plot_3d_scatter plot_2d_scatter(invars['randint'], invars['norm'], invars['norm2']) # plot_2d_scatter v = np.array([-2, -1, 2, 3, 4, 5]) var0 = OutVar(name='testscalar', vals=[1, 2, 3, 4, 5], firstcaseismedian=True) var1 = OutVar(name='testx', vals=[v, v, v, v, v], firstcaseismedian=True) var2 = OutVar(name='testy', vals=[1*v, 2*v, 0*v, -1*v, -2*v], firstcaseismedian=True) var3 = OutVar(name='testz', vals=[1*v, 2*v, 0*v, -1*v, -2*v], firstcaseismedian=True) var2.addVarStat(stat='sigma', statkwargs={'sig': 3}) var2.addVarStat(stat='sigma', statkwargs={'sig': -3}) var2.addVarStat(stat='orderstatTI', statkwargs={'p': 0.6, 'c': 0.50, 'bound': '2-sided'}) var2.addVarStat(stat='mean') plot(var2, highlight_cases=None) # plot_2d_line plot(var1, var2, highlight_cases=[0, 1]) # plot_2d_line plot(var0, var1) # plot_2p5d_line plot(var1, var2, var3, highlight_cases=[0, ]) # plot_3d_line plot(var0, var1, var2) # plot_2p5d_line m = np.eye(3) var4 = OutVar(name='testm', vals=[1*m, 2*m, 0*m, -1*m, -2*m]) plot(var4, highlight_cases=[]) # plot_3d_line n = np.eye(2) var5 = OutVar(name='testn', vals=[1*n, 2*n, 0*n, -1*n, -2*n]) plot(var0, var5) # plot_3d_line plot_cov_corr(np.array([[2, 0.1111, np.nan], [-0.19, -1, np.nan], [np.nan, np.nan, np.nan]]), ['Test1', 'Test2', 'Test3']) invars['randint2'] = InVar(name='randint2', ndraws=1000, dist=randint, distkwargs={'low': 0, 'high': 2}, samplemethod=SampleMethod.RANDOM, seed=invarseeds[3]) plot_integration_convergence(invars['randint2'], volume=1, dimension=1, refval=0.5, conf=0.95) plot_integration_error(invars['randint2'], volume=1, dimension=1, refval=0.5, conf=0.95) plt.show()
def plot_testing(): import numpy as np from scipy.stats import norm import matplotlib.pyplot as plt from monaco.mc_var import InVar from monaco.mc_multi_plot import multi_plot, multi_plot_grid_rect from monaco.mc_enums import SampleMethod plt.close('all') generator = np.random.RandomState(74494861) invarseeds = generator.randint(0, 2**31 - 1, size=10) invars = dict() invars['norm1'] = InVar('norm1', ndraws=1000, dist=norm, distkwargs={ 'loc': 1, 'scale': 5 }, seed=invarseeds[0], samplemethod=SampleMethod.RANDOM) invars['norm2'] = InVar('norm2', ndraws=1000, dist=norm, distkwargs={ 'loc': 10, 'scale': 4 }, seed=invarseeds[1], samplemethod=SampleMethod.RANDOM) invars['norm3'] = InVar('norm3', ndraws=1000, dist=norm, distkwargs={ 'loc': 5, 'scale': 2 }, seed=invarseeds[3], samplemethod=SampleMethod.RANDOM) fig, axs = multi_plot([invars['norm1'], invars['norm2']], highlight_cases=range(10, 30), rug_plot=True, cov_plot=True, cov_p=0.95, title='test') # multi_plot_2d_scatter_hist fig, axs = multi_plot([invars['norm1'], invars['norm2'], invars['norm3']], highlight_cases=range(10, 30), rug_plot=True, cov_plot=True, cov_p=0.95, title='test') # multi_plot_grid_tri fig, axs = multi_plot_grid_rect([invars['norm1'], invars['norm2']], invars['norm3'], highlight_cases=range(10, 30), rug_plot=True, cov_plot=True, cov_p=0.95, title='test') # multi_plot_grid_rect plt.show(block=True)