Пример #1
0
 def setUp(self):
     """
     Set up problem.
     """
     super(Test_prob_with_emulated_volumes_3to1, self).setUp()
     calcP.prob_with_emulated_volumes(self.disc)
     self.P_ref = np.loadtxt(data_path + "/3to1_prob_mc.txt.gz")
Пример #2
0
 def setUp(self):
     """
     Set up problem.
     """
     super(Test_prob_with_emulated_volumes_3to1, self).setUp()
     calcP.prob_with_emulated_volumes(self.disc)
     self.P_ref = np.loadtxt(data_path + "/3to1_prob_mc.txt.gz")
Пример #3
0
def postprocess(station_nums, ref_num):

    filename = 'P_q' + str(station_nums[0] + 1) + \
        '_q' + str(station_nums[1] + 1)
    if len(station_nums) == 3:
        filename += '_q' + str(station_nums[2] + 1)
    filename += '_ref_' + str(ref_num + 1)

    data = Q[:, station_nums]
    output_sample_set = sample.sample_set(data.shape[1])
    output_sample_set.set_values(data)
    q_ref = Q_ref[ref_num, station_nums]

    # Create Simple function approximation
    # Save points used to parition D for simple function approximation and the
    # approximation itself (this can be used to make close comparisions...)
    output_probability_set = sfun.regular_partition_uniform_distribution_rectangle_scaled(
        output_sample_set,
        q_ref,
        rect_scale=0.15,
        cells_per_dimension=np.ones((data.shape[1], )))

    num_l_emulate = 1e4
    set_emulated = bsam.random_sample_set('r', lam_domain, num_l_emulate)
    my_disc = sample.discretization(input_sample_set,
                                    output_sample_set,
                                    output_probability_set,
                                    emulated_input_sample_set=set_emulated)

    print("Finished emulating lambda samples")

    # Calculate P on lambda emulate
    print("Calculating prob_on_emulated_samples")
    calcP.prob_on_emulated_samples(my_disc)
    sample.save_discretization(my_disc, filename,
                               "prob_on_emulated_samples_solution")

    # Calclate P on the actual samples with assumption that voronoi cells have
    # equal size
    input_sample_set.estimate_volume_mc()
    print("Calculating prob")
    calcP.prob(my_disc)
    sample.save_discretization(my_disc, filename, "prob_solution")

    # Calculate P on the actual samples estimating voronoi cell volume with MC
    # integration
    calcP.prob_with_emulated_volumes(my_disc)
    print("Calculating prob_with_emulated_volumes")
    sample.save_discretization(my_disc, filename,
                               "prob_with_emulated_volumes_solution")
Пример #4
0
def postprocess(station_nums, ref_num):
    
    filename = 'P_q'+str(station_nums[0]+1)+'_q'
    if len(station_nums) == 3:
        filename += '_q'+str(station_nums[2]+1)
    filename += '_ref_'+str(ref_num+1)

    data = Q[:, station_nums]
    output_sample_set = sample.sample_set(data.shape[1])
    output_sample_set.set_values(data)
    q_ref = Q_ref[ref_num, station_nums]

    # Create Simple function approximation
    # Save points used to parition D for simple function approximation and the
    # approximation itself (this can be used to make close comparisions...)
    output_probability_set = sfun.regular_partition_uniform_distribution_rectangle_scaled(\
            output_sample_set, q_ref, rect_scale=0.15,
            cells_per_dimension=np.ones((data.shape[1],)))

    num_l_emulate = 1e4
    set_emulated = bsam.random_sample_set('r', lam_domain, num_l_emulate)
    my_disc = sample.discretization(input_sample_set, output_sample_set,
            output_probability_set, emulated_input_sample_set=set_emulated)

    print "Finished emulating lambda samples"

    # Calculate P on lambda emulate
    print "Calculating prob_on_emulated_samples"
    calcP.prob_on_emulated_samples(my_disc)
    sample.save_discretization(my_disc, filename, "prob_on_emulated_samples_solution")

    # Calclate P on the actual samples with assumption that voronoi cells have
    # equal size
    input_sample_set.estimate_volume_mc()
    print "Calculating prob"
    calcP.prob(my_disc)
    sample.save_discretization(my_disc, filename, "prob_solution")

    # Calculate P on the actual samples estimating voronoi cell volume with MC
    # integration
    calcP.prob_with_emulated_volumes(my_disc)
    print "Calculating prob_with_emulated_volumes"
    sample.save_discretization(my_disc, filename, "prob_with_emulated_volumes_solution")
Пример #5
0
 def setUp(self):
     """
     Set up problem.
     """
     super(Test_prob_with_emulated_volumes_1to1, self).setUp()
     calcP.prob_with_emulated_volumes(self.disc)
Пример #6
0
 def setUp(self):
     """
     Set up problem.
     """
     super(Test_prob_with_emulated_volumes_1to1, self).setUp()
     calcP.prob_with_emulated_volumes(self.disc)
Пример #7
0
emulated_inputs2 = bsam.random_sample_set('r',
                                         my_disc._input_sample_set._domain,
                                         num_samples = 10001,
                                          globalize=False)


# Make exact discretization
my_disc_exact = my_disc.copy()
my_disc_exact._output_sample_set._values_local = my_disc._output_sample_set._values_local + my_disc._output_sample_set._error_estimates_local
my_disc_exact._output_sample_set._error_estimates_local = np.zeros(my_disc_exact._output_sample_set._error_estimates_local.shape)
my_disc_exact._output_sample_set.local_to_global()
my_disc_exact.set_emulated_input_sample_set(emulated_inputs2)

# Solve stochastic inverse problems
my_disc.set_emulated_input_sample_set(emulated_inputs)
calculateP.prob_with_emulated_volumes(my_disc)
calculateP.prob_with_emulated_volumes(my_disc_exact)

# Set in input space to calculate errors for
s_set = samp.rectangle_sample_set(3)
s_set.setup(maxes=[[0.75, 0.75, 0.75]], mins=[[0.25, 0.25, 0.25]])
s_set.set_region(np.array([0,1]))

# Calculate true probabilty using linear surrogate on true data
sur = surrogates.piecewise_polynomial_surrogate(my_disc_exact)
sur_disc_lin = sur.generate_for_input_set(emulated_inputs, order=1)
(Pt, _) = sur.calculate_prob_for_sample_set_region(s_set, 
                                                         regions=[0])
P_true = Pt[0]
if comm.rank == 0:
    print "True probability: ",  P_true
Пример #8
0
emulated_inputs2 = bsam.random_sample_set('r',
                                          my_disc._input_sample_set._domain,
                                          num_samples=10001,
                                          globalize=False)

# Make exact discretization
my_disc_exact = my_disc.copy()
my_disc_exact._output_sample_set._values_local = my_disc._output_sample_set._values_local + my_disc._output_sample_set._error_estimates_local
my_disc_exact._output_sample_set._error_estimates_local = np.zeros(
    my_disc_exact._output_sample_set._error_estimates_local.shape)
my_disc_exact._output_sample_set.local_to_global()
my_disc_exact.set_emulated_input_sample_set(emulated_inputs2)

# Solve stochastic inverse problems
my_disc.set_emulated_input_sample_set(emulated_inputs)
calculateP.prob_with_emulated_volumes(my_disc)
calculateP.prob_with_emulated_volumes(my_disc_exact)

# Set in input space to calculate errors for
s_set = samp.rectangle_sample_set(3)
s_set.setup(maxes=[[0.75, 0.75, 0.75]], mins=[[0.25, 0.25, 0.25]])
s_set.set_region(np.array([0, 1]))

# Calculate true probabilty using linear surrogate on true data
sur = surrogates.piecewise_polynomial_surrogate(my_disc_exact)
sur_disc_lin = sur.generate_for_input_set(emulated_inputs, order=1)
(Pt, _) = sur.calculate_prob_for_sample_set_region(s_set, regions=[0])
P_true = Pt[0]
if comm.rank == 0:
    print "True probability: ", P_true