From 418f615d62ba46b14811753fa35e791d423e350e Mon Sep 17 00:00:00 2001 From: AdityaSavara <39929571+AdityaSavara@users.noreply.github.com> Date: Wed, 3 Aug 2022 19:34:00 -0400 Subject: [PATCH 01/23] Adding inverse problem scratch file that has things partly done, for comparison. --- PEUQSE/InverseProblem_scratch.py | 3838 ++++++++++++++++++++++++++++++ 1 file changed, 3838 insertions(+) create mode 100644 PEUQSE/InverseProblem_scratch.py diff --git a/PEUQSE/InverseProblem_scratch.py b/PEUQSE/InverseProblem_scratch.py new file mode 100644 index 00000000..c4a37874 --- /dev/null +++ b/PEUQSE/InverseProblem_scratch.py @@ -0,0 +1,3838 @@ +import numpy as np +#from mpl_toolkits.mplot3d import Axes3D +#import scipy +from scipy.stats import multivariate_normal +#from scipy.integrate import odeint +import sys +import time +import copy +from collections.abc import Iterable +#import mumce_py.Project as mumce_pyProject #FIXME: Eric to fix plotting/graphing issue described in issue 9 -- https://github.com/AdityaSavara/ODE-KIN-BAYES-SG-EW/issues/9 +#import mumce_py.solution mumce_pySolution +try: + import CiteSoft + from CiteSoft import function_call_cite +except: + import os #The below lines are to allow CiteSoftLocal to be called regardless of user's working directory. + lenOfFileName = len(os.path.basename(__file__)) #This is the name of **this** file. + absPathWithoutFileName = os.path.abspath(__file__)[0:-1*lenOfFileName] + sys.path.append(absPathWithoutFileName) + import CiteSoftLocal as CiteSoft +try: + import UnitTesterSG.nestedObjectsFunctions as nestedObjectsFunctions +except: + import PEUQSE.nestedObjectsFunctionsLocal as nestedObjectsFunctions + +class parameter_estimation: + #Inside this class, a UserInput namespace is provided. This has dictionaries of UserInput choices. + #However, the code initally parses those choices and then puts processed versions in the SAME name space, but no longer in the dictionaries. + #So functions in this class should (when possible) call the namespace variables that are not in dictionaries, unless the original userinput is desired. + #'inverse problem'. Initialize chain with initial guess (prior if not provided) as starting point, chain burn-in length and total length, and Q (for proposal samples). Initialize experimental data. Theta is initialized as the starting point of the chain. + + + software_name = "PEUQSE Bayesian Parameter Estimation" + software_version = "1.0.0" + software_unique_id = "https://doi.org/10.1002/cctc.202000953" + software_kwargs = {"version": software_version, "author": ["Aditya Savara", "Eric A. Walker"], "doi": "https://doi.org/10.1002/cctc.202000953", "cite": "Savara, A. and Walker, E.A. (2020), PEUQSE Intro 1: Bayesian Parameter Estimation Considering Uncertainty or Error from both Experiments and Theory. ChemCatChem. Accepted. doi:10.1002/cctc.202000953"} + @CiteSoft.after_call_compile_consolidated_log() + @CiteSoft.function_call_cite(unique_id=software_unique_id, software_name=software_name, **software_kwargs) + def __init__(self, UserInput = None): + #TODO: settings that are supposed to be Booleans should get Boolean cast in here. Otherwise if they are strings they will cause problems in "or" statements (where strings can return true even if the string is 'False'). + self.UserInput = UserInput #Note that this is a pointer, so the later lines are within this object. + #Now will automatically populate some variables from UserInput + #make subdirectories as needed. + import os + for directoryName in UserInput.directories: + if not os.path.exists(directoryName): + os.makedirs(directoryName) + + #Populate variables for bounds and reduced parameter space. + self.parameterBoundsOn = bool(len(UserInput.model['InputParameterPriorValues_upperBounds']) + len(UserInput.model['InputParameterPriorValues_lowerBounds'])) + UserInput.InputParameterPriorValues_lowerBounds = UserInput.model['InputParameterPriorValues_lowerBounds'] + UserInput.InputParameterPriorValues_upperBounds = UserInput.model['InputParameterPriorValues_upperBounds'] + self.reducedParameterSpaceOn = bool(len(UserInput.model['reducedParameterSpace'])) + + #Check for deprecated UserInput choices. + if hasattr(UserInput.parameter_estimation_settings, 'multistart_gridsearchToSamples'): + print("The UserInput feature parameter_estimation_settings['multistart_gridsearchToSamples'] has been renamed. Use parameter_estimation_settings['multistart_permutationsToSamples'].") + if hasattr(UserInput.parameter_estimation_settings, 'multistart_permutationsToSamples') == False: + UserInput.parameter_estimation_settings['multistart_permutationsToSamples']= UserInput.parameter_estimation_settings['multistart_gridsearchToSamples'] + if hasattr(UserInput.parameter_estimation_settings, 'multistart_gridsearch_threshold_filter_coefficient'): + print("The UserInput feature parameter_estimation_settings['multistart_gridsearch_threshold_filter_coefficient'] has been renamed. Use parameter_estimation_settings['multistart_permutationsToSamples_threshold_filter_coefficient'].") + if hasattr(UserInput.parameter_estimation_settings, 'multistart_permutationsToSamples_threshold_filter_coefficient') == False: + UserInput.parameter_estimation_settings['multistart_permutationsToSamples_threshold_filter_coefficient']= UserInput.parameter_estimation_settings['multistart_gridsearch_threshold_filter_coefficient'] + #Check if EnsembleJumpSampling specification for multistart and change type to EnsembleModifiedMHSampling + if UserInput.parameter_estimation_settings['multistart_searchType'] == 'doEnsembleJumpSampling': + self.UserInput.parameter_estimation_settings['multistart_searchType'] = 'doEnsembleModifiedMHSampling' + + #Check if there are parameterNames provided. If not, we will make some. + if len(UserInput.model['parameterNamesAndMathTypeExpressionsDict']) == 0: + numParameters = len(UserInput.model['InputParameterPriorValues']) + for parameterIndex in range(0,numParameters): + UserInput.model['parameterNamesAndMathTypeExpressionsDict'][str(parameterIndex)]= 'ParInd_'+str(parameterIndex) + elif type(UserInput.model['parameterNamesAndMathTypeExpressionsDict']) == type([1]): # if it's a list, make a dictionary. + listToMakeDictionary = UserInput.model['parameterNamesAndMathTypeExpressionsDict'] + newDictionary = {} + for paramName in listToMakeDictionary: + newDictionary[str(paramName)] = str(paramName) + UserInput.model['parameterNamesAndMathTypeExpressionsDict'] = newDictionary + UserInput.parameterNamesList = list(UserInput.model['parameterNamesAndMathTypeExpressionsDict'].keys()) + UserInput.stringOfParameterNames = str(UserInput.parameterNamesList).replace("'","")[1:-1] + UserInput.parameterNamesAndMathTypeExpressionsDict = UserInput.model['parameterNamesAndMathTypeExpressionsDict'] + if self.UserInput.parameter_estimation_settings['verbose']: + print("Parameter Estimation Object Initialized") + + if type(UserInput.parameter_estimation_settings['checkPointFrequency']) != type(None): #This is for backwards compatibility. + UserInput.parameter_estimation_settings['mcmc_checkPointFrequency'] = UserInput.parameter_estimation_settings['checkPointFrequency'] + UserInput.parameter_estimation_settings['multistart_checkPointFrequency'] = UserInput.parameter_estimation_settings['checkPointFrequency'] + UserInput.request_mpi = False #Set as false as default. + if ( \ + UserInput.parameter_estimation_settings['mcmc_parallel_sampling'] or \ + UserInput.parameter_estimation_settings['multistart_parallel_sampling'] or \ + UserInput.doe_settings['parallel_conditions_exploration'] or \ + UserInput.doe_settings['parallel_parameter_modulation'] \ + ) \ + == True: + UserInput.request_mpi = True + if (UserInput.doe_settings['parallel_conditions_exploration'] or UserInput.doe_settings['parallel_parameter_modulation']) and (UserInput.parameter_estimation_settings['mcmc_parallel_sampling'] or UserInput.parameter_estimation_settings['multistart_parallel_sampling']): + print("Warning: Parallelization of Design of experiments is not compatible with parallelization of either mcmc_parallel_sampling or multistart_parallel_sampling. Those other features are being turned off.") + UserInput.parameter_estimation_settings['multistart_parallel_sampling'] = False + UserInput.parameter_estimation_settings['mcmc_parallel_sampling'] = False + + if UserInput.request_mpi == True: #Rank zero needs to clear out the mpi_cached_files directory (unless we are continuing sampling), so check if we are using rank 0. + import os; #import sys + import PEUQSE.parallel_processing + if PEUQSE.parallel_processing.currentProcessorNumber == 0: + if not os.path.exists('./mpi_cached_files'): + os.makedirs('./mpi_cached_files') + if not os.path.exists(UserInput.directories['graphs']+"mpi_cached_files"): + os.makedirs(UserInput.directories['graphs']+"mpi_cached_files") + if not os.path.exists(UserInput.directories['logs_and_csvs']+"mpi_cached_files"): + os.makedirs(UserInput.directories['logs_and_csvs']+"mpi_cached_files") + if not os.path.exists(UserInput.directories['pickles']+"mpi_cached_files"): + os.makedirs(UserInput.directories['pickles']+"mpi_cached_files") + if ('mcmc_continueSampling' not in UserInput.parameter_estimation_settings) or (UserInput.parameter_estimation_settings['mcmc_continueSampling'] == False) or (UserInput.parameter_estimation_settings['mcmc_continueSampling'] == 'auto'): + os.chdir("./mpi_cached_files") + deleteAllFilesInDirectory() + os.chdir("./..") + if UserInput.directories['graphs'] != "./": + os.chdir(UserInput.directories['graphs']+"mpi_cached_files") + deleteAllFilesInDirectory() + os.chdir("./../..") + if UserInput.directories['logs_and_csvs'] != "./": + os.chdir(UserInput.directories['graphs']+"mpi_cached_files") + deleteAllFilesInDirectory() + os.chdir("./../..") + if UserInput.directories['pickles'] != "./": + os.chdir(UserInput.directories['graphs']+"mpi_cached_files") + deleteAllFilesInDirectory() + os.chdir("./../..") + + #Now check the number of processor ranks to see if the person really is using parallel processing. + if PEUQSE.parallel_processing.numProcessors > 1: #This is the normal case. + sys.exit() #TODO: right now, processor zero just exits after making and emptying the directory. In the future, things will be more complex for the processor zero. + elif PEUQSE.parallel_processing.numProcessors == 1: #This is the case where the person has only one process rank, so probably does not want code execution to stop just yet. (This is an intentional case for gridsearch for example, where running without mpi will print the number of grid Permutations). + print("Notice: you have requested parallel processing by MPI but have only 1 processor rank enabled or are not using mpi for this run. Parallel processing is being disabled for this run. If you are running to find the number of process ranks to use, another message will be printed out with the number of processor ranks to provide to mpi.") + UserInput.request_mpi = False + if UserInput.parameter_estimation_settings['mcmc_parallel_sampling']: + print("Your settings suggest that you are trying to use mcmc_parallel_sampling. Please use the mpi command from the prompt. To do N parallel samplings requires N+1 process ranks. For example, if you wanted to have 4 parallel samplings, you would need 5 process ranks and would use: mpiexec -n 5 python runfile_for_your_analysis.py") + sys.exit() + + + #Setting this object so that we can make changes to it below without changing UserInput dictionaries. + self.UserInput.mu_prior = np.array(UserInput.model['InputParameterPriorValues'], dtype='float') + #Below code is mainly for allowing uniform distributions in priors. + UserInput.InputParametersPriorValuesUncertainties = np.array(UserInput.model['InputParametersPriorValuesUncertainties'],dtype='float') #Doing this so that the -1.0 check below should work. + if -1.0 in UserInput.InputParametersPriorValuesUncertainties: #This means that at least one of the uncertainties has been set to "-1" which means a uniform distribution. + UserInput.InputParametersPriorValuesUniformDistributionsIndices = [] #intializing. + if len(np.shape(UserInput.InputParametersPriorValuesUncertainties)) != 1: + print("A value of '-1' in the uncertainties signifies a uniform distribution for PEUQSE. As of July 1st 2020, the uniform distribution feature is only compatible with a 1D of array for uncertainties and not compatible with providing a full covariance matrix. If you need such a feature, contact the developers because it could be implemented. Eventually, a more sophisiticated back end may be used which would allow such a feature.") + # If there is a uniform distribution, that means two actions need to be taken: + #First, we will populate InputParametersPriorValuesUncertainties with the standard deviation of a uniform distribution. This is so that the MCMC steps can be taken of the right size. + #Second, that we will need to make a custom calculation when calculating the prior probability that effectively excludes this variable. So we'll create an array of indices to help us with that. + #We will do both in a loop. + UserInput.InputParametersPriorValuesUniformDistributionsKey = UserInput.InputParametersPriorValuesUncertainties *1.0 #Just initalizing + for parameterIndex, uncertaintyValue in enumerate(UserInput.InputParametersPriorValuesUncertainties): + if uncertaintyValue == -1.0: + UserInput.InputParametersPriorValuesUniformDistributionsKey[parameterIndex] = 1.0 #This is setting the parameter as "True" for having a uniform distribution. + UserInput.InputParametersPriorValuesUniformDistributionsIndices.append(parameterIndex) + #In the case of a uniform distribution, the standard deviation and variance are given by sigma = (b−a)/ √12 : + #See for example https://www.quora.com/What-is-the-standard-deviation-of-a-uniform-distribution-How-is-this-formula-determined + if self.parameterBoundsOn == False: + print("ERROR: An uncertaintyValue of -1.0 has been provided which indicates a Uniform distribution. Uniform distributions require both upper and lower bounds, but these have not been provided. CheKiPUEQ is exiting the program."); sys.exit() + std_prior_single_parameter = (UserInput.InputParameterPriorValues_upperBounds[parameterIndex] - UserInput.InputParameterPriorValues_lowerBounds[parameterIndex])/(12**0.5) + UserInput.InputParametersPriorValuesUncertainties[parameterIndex] = std_prior_single_parameter #Note that going forward the array InputParametersPriorValuesUncertainties cannot be checked to see if the parameter is from a uniform distribution. Instead, InputParametersPriorValuesUniformDistributionsKey must be checked. + #We will also fill the model['InputParameterPriorValues'] to have the mean of the two bounds. This can matter for some of the scaling that occurs later. + self.UserInput.mu_prior[parameterIndex] = (UserInput.InputParameterPriorValues_upperBounds[parameterIndex] + UserInput.InputParameterPriorValues_lowerBounds[parameterIndex])/2 + + #Now to make covmat. Leaving the original dictionary object intact, but making a new object to make covmat_prior. + if len(np.shape(UserInput.InputParametersPriorValuesUncertainties)) == 1 and (len(UserInput.InputParametersPriorValuesUncertainties) > 0): #If it's a 1D array/list that is filled, we'll diagonalize it. + UserInput.std_prior = np.array(UserInput.InputParametersPriorValuesUncertainties, dtype='float') #using 32 since not everyone has 64. + UserInput.var_prior = np.power(UserInput.InputParametersPriorValuesUncertainties,2) + UserInput.covmat_prior = np.diagflat(self.UserInput.var_prior) + elif len(np.shape(UserInput.InputParametersPriorValuesUncertainties)) > 1: #If it's non-1D, we assume it's already a covariance matrix. + UserInput.covmat_prior = np.array(UserInput.InputParametersPriorValuesUncertainties, dtype='float') + UserInput.var_prior = np.diagonal(UserInput.covmat_prior) + UserInput.std_prior = np.power(UserInput.covmat_prior,0.5) + else: #If a blank list is received, that means the user + print("The covariance matrix of the priors is undefined because InputParametersPriorValuesUncertainties is blank.") + # cov_prior = np.array([[200.0, 0., 0., 0., 0., 0.], + # [0., 200.0, 0., 0., 0., 0.], + # [0., 0., 13.0, 0., 0., 0.], + # [0., 0., 0., 13.0, 0., 0.], + # [0., 0., 0., 0., 0.1, 0.], + # [0., 0., 0., 0., 0., 0.1]]) + #Making things at least 2d. Also changing it to a purely internal variable because that way we don't edit the user input dictionary going forward. + + #Below, we are generating samples of the prior for info gain purposes. This requires considering random seeds. + if 'mcmc_random_seed' in self.UserInput.parameter_estimation_settings: + if type(self.UserInput.parameter_estimation_settings['mcmc_random_seed']) == type(1): #if it's an integer, then it's not a "None" type or string, and we will use it. + np.random.seed(self.UserInput.parameter_estimation_settings['mcmc_random_seed']) + self.samples_of_prior = np.random.multivariate_normal(self.UserInput.mu_prior,UserInput.covmat_prior,UserInput.parameter_estimation_settings['mcmc_length']) + + #Now do some processing on the responses formatting and uncertainties. + #Make them 2dNested if needed.. + + UserInput.responses_observed = np.array(nestedObjectsFunctions.makeAtLeast_2dNested(UserInput.responses['responses_observed'])) + if UserInput.responses['num_responses']=='auto': + self.UserInput.num_response_dimensions = np.shape(UserInput.responses_observed)[0] + else: + self.UserInput.num_response_dimensions = UserInput.responses['num_responses'] + if len(UserInput.responses['responses_abscissa']) == 0: #This means it has not been provided and we will make one. + UserInput.responses_abscissa = [] #the one from input should already be a list, but we start a fresh one. + for responseIndex in range(0,self.UserInput.num_response_dimensions): + numPoints = len(UserInput.responses_observed[responseIndex]) + UserInput.responses_abscissa.append(np.linspace(0, numPoints,numPoints)) + else: + UserInput.responses_abscissa = UserInput.responses['responses_abscissa'] + UserInput.responses_abscissa = np.array(nestedObjectsFunctions.makeAtLeast_2dNested(UserInput.responses_abscissa)) + #Make sure all objects inside are arrays (if they are lists we convert them). This is needed to apply the heurestic. + UserInput.responses_abscissa = nestedObjectsFunctions.convertInternalToNumpyArray_2dNested(UserInput.responses_abscissa) + UserInput.responses_observed = nestedObjectsFunctions.convertInternalToNumpyArray_2dNested(UserInput.responses_observed) + + #Now to process responses_observed_uncertainties, there are several options so we need to process it according to the cases. + #The normal case: + if isinstance(self.UserInput.responses['responses_observed_uncertainties'], Iterable): #If it's an array or like one, we take it as is. The other options are a none object or a function. + UserInput.responses_observed_uncertainties = UserInput.responses['responses_observed_uncertainties'] + #Processing of responses_observed_uncertainties for case that a blank list is received and not zeros. + if len(UserInput.responses['responses_observed_uncertainties']) == 0: + #if the response uncertainties is blank, we will use the heurestic of sigma = 5% of the observed value, and then add an orthogonal uncertainty of 2% of the maximum for that response. + #Note that we are actually checking in index[0], that is because as an atleast_2d array even a blank list / array in it will give a length of 1. + UserInput.responses_observed_uncertainties = np.abs( UserInput.responses_observed) * 0.05 + for responseIndex in range(0,UserInput.num_response_dimensions): #need to cycle through to apply the "minimum" uncertainty of 0.02 times the max value. + maxResponseAbsValue = np.max(np.abs(UserInput.responses_observed[responseIndex])) + UserInput.responses_observed_uncertainties[responseIndex] = ( UserInput.responses_observed_uncertainties[responseIndex]**2 + (maxResponseAbsValue*0.02)**2 ) ** 0.5 + #The below deprecated syntax is a bit hard to read, but it is similar to this: a[a==2] = 10 #replace all 2's with 10's #UserInput.responses_observed_uncertainties[responseIndex][UserInput.responses_observed_uncertainties[responseIndex] < maxResponseAbsValue * 0.02] = maxResponseAbsValue * 0.02 + elif nestedObjectsFunctions.sumNested(UserInput.responses['responses_observed_uncertainties']) == 0: #If a 0 (or list summing to 0) is provided, we will make the uncertainties zero. + UserInput.responses_observed_uncertainties = UserInput.responses_observed * 0.0 #This will work because we've converted the internals to array already. + #Below two lines not needed. Should be removed if everythig is working fine after Nov 2020. + #for responseIndex in range(0,len(UserInput.responses_observed[0])): + # UserInput.responses_observed_uncertainties[0][responseIndex]= UserInput.responses_observed[0][responseIndex]*0.0 + UserInput.responses_observed_uncertainties = np.array(nestedObjectsFunctions.makeAtLeast_2dNested(UserInput.responses_observed_uncertainties)) + UserInput.responses_observed_uncertainties = nestedObjectsFunctions.convertInternalToNumpyArray_2dNested(UserInput.responses_observed_uncertainties) + #If the feature of self.UserInput.responses['responses_observed_weighting'] has been used, then we need to apply that weighting to the uncertainties. + if len(self.UserInput.responses['responses_observed_weighting']) > 0: + UserInput.responses_observed_weighting = np.array(nestedObjectsFunctions.makeAtLeast_2dNested(UserInput.responses['responses_observed_weighting'])) + UserInput.responses_observed_weighting = nestedObjectsFunctions.convertInternalToNumpyArray_2dNested(UserInput.responses_observed_weighting) + UserInput.responses_observed_weighting = UserInput.responses_observed_weighting.astype(np.float) + UserInput.responses_observed_weight_coefficients = copy.deepcopy(UserInput.responses_observed_weighting).astype(np.float) #initialize the weight_coefficients + #We'll apply it 1 response at a time. + for responseIndex, responseWeightingArray in enumerate(UserInput.responses_observed_weighting): + if 0 in responseWeightingArray: #we can't have zeros in weights. So if we have any zeros, we will set the weighting of those to 1E6 times less than other values. + #Originally, used minNonZero/1E6. Now, use eps which is the smallest non-zero value allowed. + #minNonZero = np.min(UserInput.responses_observed_weighting[UserInput.responses_observed_weighting>0]) + responseWeightingArray[responseWeightingArray==0] = np.finfo(float).eps #minNonZero/1E6 #set the 0 values to be 1E6 times smaller than minNonZero. + UserInput.responses_observed_weighting[responseIndex] = responseWeightingArray + #now calculate and apply the weight coefficients. + for responseIndex in range(len(UserInput.responses_observed_weighting)): + UserInput.responses_observed_weight_coefficients[responseIndex] = (UserInput.responses_observed_weighting[responseIndex])**(-0.5) #this is analagous to the sigma of a variance weighted heuristic. + UserInput.responses_observed_uncertainties = UserInput.responses_observed_uncertainties*UserInput.responses_observed_weight_coefficients + else: #The other possibilities are a None object or a function. For either of thtose cases, we simply set UserInput.responses_observed_uncertainties equal to what the user provided. + UserInput.responses_observed_uncertainties = copy.deepcopy(self.UserInput.responses['responses_observed_uncertainties']) + + #Now to process responses_simulation_uncertainties, there are several options so we need to process it according to the cases. + #The normal case: + if isinstance(self.UserInput.model['responses_simulation_uncertainties'], Iterable): #If it's an array or like one, we take it as is. The other options are a none object or a function. + UserInput.responses_simulation_uncertainties = np.array(nestedObjectsFunctions.makeAtLeast_2dNested(self.UserInput.model['responses_simulation_uncertainties'])) + UserInput.responses_simulation_uncertainties = nestedObjectsFunctions.convertInternalToNumpyArray_2dNested(UserInput.responses_simulation_uncertainties) + #TODO: allow a length of zero 'responses_simulation_uncertainties' to mean that the heurestic function should be called after each simulation. That is not what it is doing right now (Dec 2020). Right now it is just using a static value from the heurestic applied to the observed_responses. + #Processing of responses_simulation_uncertainties for case that a blank list is received and not zeros. + if len(UserInput.responses_simulation_uncertainties[0]) == 0: + #if the response uncertainties is blank, we will use the heurestic of sigma = 5% of the observed value, with a floor of 2% of the maximum for that response. + #Note that we are actually checking in index[0], that is because as an atleast_2d array even a blank list / array in it will give a length of 1. + UserInput.responses_simulation_uncertainties = np.abs(UserInput.responses_observed) * 0.05 + for responseIndex in range(0,UserInput.num_response_dimensions): #need to cycle through to apply the "minimum" uncertainty of 0.02 times the max value. + maxResponseAbsValue = np.max(np.abs(UserInput.responses_observed[responseIndex])) #Because of the "at_least2D" we actually need to use index 0. + #The below syntax is a bit hard to read, but it is similar to this: a[a==2] = 10 #replace all 2's with 10's + UserInput.responses_simulation_uncertainties[responseIndex][UserInput.responses_simulation_uncertainties[responseIndex] < maxResponseAbsValue * 0.02] = maxResponseAbsValue * 0.02 + elif nestedObjectsFunctions.sumNested(UserInput.responses_simulation_uncertainties) == 0: #If a 0 (or list summing to 0) is provided, we will make the uncertainties zero. + UserInput.responses_simulation_uncertainties = UserInput.responses_observed * 0.0 #This will work because we've converted the internals to array already. + else: #The other possibilities are a None object or a function. For either of thtose cases, we simply set UserInput.responses_simulation_uncertainties equal to what the user provided. + UserInput.responses_simulation_uncertainties = copy.deepcopy(self.UserInput.model['responses_simulation_uncertainties']) + + #Now to process simulatedResponses_upperBounds and simulatedResponses_lowerBounds. Can be a blank list or a nested list. + if len(UserInput.model['simulatedResponses_upperBounds']) > 0: + UserInput.model['simulatedResponses_upperBounds'] = np.array(nestedObjectsFunctions.makeAtLeast_2dNested(self.UserInput.model['simulatedResponses_upperBounds'])) + UserInput.model['simulatedResponses_upperBounds'] = nestedObjectsFunctions.convertInternalToNumpyArray_2dNested(UserInput.model['simulatedResponses_upperBounds']) + if len(UserInput.model['simulatedResponses_lowerBounds']) > 0: + UserInput.model['simulatedResponses_lowerBounds'] = np.array(nestedObjectsFunctions.makeAtLeast_2dNested(self.UserInput.model['simulatedResponses_lowerBounds'])) + UserInput.model['simulatedResponses_lowerBounds'] = nestedObjectsFunctions.convertInternalToNumpyArray_2dNested(UserInput.model['simulatedResponses_lowerBounds']) + + self.UserInput.num_data_points = len(nestedObjectsFunctions.flatten_2dNested(UserInput.responses_observed)) #This works if there is a single response series. + #We need to figure out if the abscissa has length equal to the responses or not. + if len(UserInput.responses_abscissa) == len(UserInput.responses_observed): + self.separate_abscissa_per_response = True #This means we **will** iterate across the abscissa when iterating across each response. + else: + self.separate_abscissa_per_response = False #This means we **won't** iterate across the abscissa when iterating across each response. + + self.staggeredResponses = nestedObjectsFunctions.checkIfStaggered_2dNested(UserInput.responses_observed) + #TODO: This currently only is programmed for if the uncertainties are uncorrelated standard deviaions (so is not compatible with a directly fed cov_mat). Also, we need to figure out what do when they are not gaussian/symmetric. + UserInput.responses_observed_transformed, UserInput.responses_observed_transformed_uncertainties = self.transform_responses(UserInput.responses_observed, UserInput.responses_observed_uncertainties) #This creates transforms for any data that we might need it. The same transforms will also be applied during parameter estimation. + + #The below unusual code is because during doeParameterModulationPermutationsScanner, populate synthetic data calls init again. + #So we will only call populateIndependentVariablesFunction if we're not in the middle of design of experiments. + if not hasattr(self, 'middle_of_doe_flag'): #We check of the middle_of_doe_flag exists. #If the flag is not there and the populate function exists, we call it. + if type(UserInput.model['populateIndependentVariablesFunction']) != type(None): + UserInput.model['populateIndependentVariablesFunction'](UserInput.responses['independent_variables_values']) + if hasattr(self, 'middle_of_doe_flag'): #We check of the middle_of_doe_flag exists. If it's there, no problem. + if self.middle_of_doe_flag == False: #If the flag is there, we only proceed to call the function if the flag is set to false. + if type(UserInput.model['populateIndependentVariablesFunction']) != type(None): + UserInput.model['populateIndependentVariablesFunction'](UserInput.responses['independent_variables_values']) + + #Now scale things as needed: + if UserInput.parameter_estimation_settings['scaling_uncertainties_type'] == "off": + self.UserInput.mu_prior_scaled = UserInput.mu_prior*1.0 + self.UserInput.var_prior_scaled = UserInput.var_prior*1.0 + self.UserInput.covmat_prior_scaled = UserInput.covmat_prior*1.0 + else: + if UserInput.parameter_estimation_settings['scaling_uncertainties_type'] == "std": + self.UserInput.scaling_uncertainties = UserInput.std_prior #Could also be by mu_prior. The reason a separate variable is made is because this will be used in the getPrior function as well, and having a separate variable makes it easier to trace. This scaling helps prevent numerical errors in returning the pdf. + elif UserInput.parameter_estimation_settings['scaling_uncertainties_type'] == "mu": + self.UserInput.scaling_uncertainties = UserInput.mu_prior + else: #Else we assume that UserInput.parameter_estimation_settings['scaling_uncertainties_type'] has been set to a fixed float or vector. For now, we'll just support float. + scaling_factor = float(UserInput.parameter_estimation_settings['scaling_uncertainties_type']) + self.UserInput.scaling_uncertainties = (UserInput.mu_prior/UserInput.mu_prior)*scaling_factor #This basically makes a vector of ones times the scaling factor. + #TODO: consider a separate scaling for each variable, taking the greater of either mu_prior or std_prior. + #TODO: Consider changing how self.UserInput.scaling_uncertainties is done to accommodate greater than 1D vector. Right now we use np.shape(self.UserInput.scaling_uncertainties)[0]==1, but we could use np.shape(self.UserInput.scaling_uncertainties)==np.shape(UserInput.mu_prior) + if np.shape(nestedObjectsFunctions.makeAtLeast_2dNested(self.UserInput.scaling_uncertainties))[0]==1: #In this case, the uncertainties is not a covariance matrix. + pass + elif np.shape(nestedObjectsFunctions.makeAtLeast_2dNested(self.UserInput.scaling_uncertainties))[0]==np.shape(nestedObjectsFunctions.makeAtLeast_2dNested(self.UserInput.scaling_uncertainties))[1]: #In his case, the uncertainties are a covariance matrix so we take the diagonal (which are variances) and the square root of them. + self.UserInput.scaling_uncertainties = (np.diagonal(self.UserInput.scaling_uncertainties))**0.5 #Take the diagonal which is variances, and + else: + print("There is an unsupported shape somewhere in the prior. The prior is currently expected to be 1 dimensional.") + print(np.shape(self.UserInput.scaling_uncertainties)) + sys.exit() + self.UserInput.mu_prior_scaled = np.array(UserInput.mu_prior/UserInput.scaling_uncertainties) + self.UserInput.var_prior_scaled = np.array(UserInput.var_prior/(UserInput.scaling_uncertainties*UserInput.scaling_uncertainties)) + self.UserInput.covmat_prior_scaled = self.UserInput.covmat_prior*1.0 #First initialize, then fill. + for parameterIndex, parameterValue in enumerate(UserInput.scaling_uncertainties): + UserInput.covmat_prior_scaled[parameterIndex,:] = UserInput.covmat_prior[parameterIndex,:]/parameterValue + #The next line needs to be on UserInput.covmat_prior_scaled and not UserInput.covmat_prior, since we're stacking the divisions. + UserInput.covmat_prior_scaled[:,parameterIndex] = UserInput.covmat_prior_scaled[:,parameterIndex]/parameterValue + + #To find the *observed* responses covariance matrix, meaning based on the uncertainties reported by the users, we take the uncertainties from the points. This is needed for the likelihood. However, it will be transformed again at that time. + #First, we have to make sure self.UserInput.responses_observed_transformed_uncertainties is an iterable. It could be a none-type or a function. + if isinstance(self.UserInput.responses_observed_transformed_uncertainties, Iterable): + self.observed_responses_covmat_transformed = returnShapedResponseCovMat(self.UserInput.num_response_dimensions, self.UserInput.responses_observed_transformed_uncertainties) + else: #If responses_observed_transformed_uncertainties is a None type, then we don't need observed_responses_covmat_transformed. If it is a function, then we have to create the object on the fly so can't create it now. + pass + + #self.covmat_prior = UserInput.covmat_prior + self.Q_mu = self.UserInput.mu_prior*0 # Q samples the next step at any point in the chain. The next step may be accepted or rejected. Q_mu is centered (0) around the current theta. + self.Q_covmat = self.UserInput.covmat_prior # Take small steps. + #TODO: Make initial guess handle a string, then assume that it is a pickle file + # check if InputParameterInitialGuess is a string + # if so, read the pickle file in the same way as the sampling functions (look for file, then read) + # After reading it, slice the matrix to only the first walker is saved. + if isinstance(self.UserInput.model['InputParameterInitialGuess'], str): + # try to read from current directory and pickle directory + start_point_pkl_file_name = self.UserInput.model['InputParameterInitialGuess'] + if '.pkl' in start_point_pkl_file_name: # remove '.pkl' from string if it is there + start_point_pkl_file_name = start_point_pkl_file_name.replace('.pkl', '') + from os.path import exists + # check if file exists in current working directory + if exists(start_point_pkl_file_name + '.pkl'): + initialGuessUnfiltered = unpickleAnObject(start_point_pkl_file_name) + # check if file exists in pickle directory + elif exists(self.UserInput.directories['pickles'] + start_point_pkl_file_name + '.pkl'): + initialGuessUnfiltered = unpickleAnObject(self.UserInput.directories['pickles'] + start_point_pkl_file_name) + else: + print('The pickled object for initial guess points must exist in base directory or pickles directory. The pickled file should have extension of ".pkl"') + sys.exit() + # check if the shape of the loaded initial guess is a single point or a list of walkers + if len(initialGuessUnfiltered.shape) == 1: + self.UserInput.InputParameterInitialGuess = initialGuessUnfiltered + elif len(initialGuessUnfiltered.shape) == 2: + # this is assumed to have the shape (num_walkers, num_parameters) + self.UserInput.InputParameterInitialGuess = initialGuessUnfiltered[0] # take only the first walker as the initial points + else: + print('The shape of the initial guess pickled array should be (num_walkers, num_parameters). The current pickled array does not have this shape and has:', initialGuessUnfiltered.shape) + sys.exit() + else: + #Getting initial guess of parameters and populating the internal variable for it. + if ('InputParameterInitialGuess' not in self.UserInput.model) or (len(self.UserInput.model['InputParameterInitialGuess'])== 0): #if an initial guess is not provided, we use the prior. + self.UserInput.model['InputParameterInitialGuess'] = np.array(self.UserInput.mu_prior, dtype='float') + #From now, we switch to self.UserInput.InputParameterInitialGuess because this is needed in case we're going to do reducedParameterSpace or grid sampling. + self.UserInput.InputParameterInitialGuess = np.array(self.UserInput.model['InputParameterInitialGuess'], dtype='float') + #Now populate the simulation Functions. #NOTE: These will be changed if a reduced parameter space is used. + self.UserInput.simulationFunction = self.UserInput.model['simulateByInputParametersOnlyFunction'] + self.UserInput.simulationOutputProcessingFunction = self.UserInput.model['simulationOutputProcessingFunction'] + + #Check the shapes of the arrays for UserInput.responses_observed and UserInput.responses_observed_uncertainties by doing a simulation. Warn the user if the shapes don't match. + initialGuessSimulatedResponses = self.getSimulatedResponses(self.UserInput.InputParameterInitialGuess) + if np.shape(initialGuessSimulatedResponses) != np.shape(UserInput.responses_observed): + print("PEUQSE Warning: the shape of the responses_observed is", np.shape(UserInput.responses_observed), ", but the shape using your provided simulation function is", np.shape(initialGuessSimulatedResponses), " . PEUQSE is probably going to crash when trying to calculate the likelihood.") + + #Now reduce the parameter space if requested by the user. #Considered having this if statement as a function called outside of init. However, using it in init is the best practice since it forces correct ordering of reduceParameterSpace and reduceResponseSpace + if len(self.UserInput.model['reducedParameterSpace']) > 0: + print("Notification: the UserInput.model['reducedParameterSpace'] is not blank. That means the only parameters allowed to change will be the ones in the indices inside 'reducedParameterSpace'. All others will be held constant. The values inside 'InputParameterInitialGuess will be used', and 'InputParameterPriorValues' if an initial guess was not provided.") + self.reduceParameterSpace() + + #Now reduce the parameter space if requested by the user. #Considered having this if statement as a function called outside of init. However, using it in init is the best practice since it forces correct ordering of reduceParameterSpace and reduceResponseSpace + #This code must be **after** the reduceParameterSpace because this makes a wrapper for the simulationOutputProcessingFunction + if len(self.UserInput.responses['reducedResponseSpace']) > 0: + print("Important: the UserInput.model['reducedResponseSpace'] is not blank. That means the only responses examined will be the ones in the indices inside 'reducedReponseSpace'. The values of all others will be discarded during each simulation.") + self.reduceResponseSpace() + + #Check if we should plan to split the responses into separate likelihood terms. + self.prepareResponsesForSplitLikelihood = False #initialized as false, will change to True if needed. + #First check if it is a single response, then if so a singlepoint with the initial values and see if it turns out okay. + if len(self.UserInput.responses_observed_transformed)==1: #this means single response + initialLogP = self.getLogP(self.UserInput.InputParameterInitialGuess) + if (np.isnan(initialLogP) or initialLogP < -1E90): + if np.shape(UserInput.responses_observed) == np.shape(UserInput.responses_observed_uncertainties): + #this if statement only occurs if uncertainties are standard deviations and not covmat, + #which means we can prepare the responses for split likelihood and should plan to. + self.prepareResponsesForSplitLikelihood = True + + self.permutation_and_doOptimizeNegLogP = False #just initializing this flag with its default. + self.permutation_and_doOptimizeSSR = False #just initializing this flag with its default. + self.permutation_and_doOptimizeLogP = False + + #fills the samples etc. By default, for multistart, it will also perform filtering and then create the post_burn_in_samples. + def reload_samples(self, sampling_type='', filepath = ''): + if (sampling_type != 'multistart') and (sampling_type != 'mcmc'): + print("ERROR: reload_samples requires specifying either 'multistart' or 'mcmc' as the first argument"); sys.exit() + if filepath == '': + filepath = self.UserInput.directories['logs_and_csvs'] #take the default. + #in both cases, multstart or mcmc, it's really an array of logP_and_parameter_values, just slightly different meanings. + if sampling_type == 'multistart': #load from the unfiltered values. + self.permutations_MAP_logP_and_parameters_values = np.genfromtxt(filepath + "\\multistart_MAP_logP_and_parameters_values.csv", delimiter=",") + multistart_permutationsToSamples_threshold_filter_coefficient = self.UserInput.parameter_estimation_settings['multistart_permutationsToSamples_threshold_filter_coefficient'] + permutations_to_samples_with_logP = convertPermutationsToSamples(self.permutations_MAP_logP_and_parameters_values, relativeFilteringThreshold = 10**(-1*multistart_permutationsToSamples_threshold_filter_coefficient)) + self.post_burn_in_samples = permutations_to_samples_with_logP[:,1:] #drop the first column which is logP. + logP_and_parameter_values = np.array(permutations_to_samples_with_logP) + self.post_burn_in_log_posteriors_un_normed_vec = permutations_to_samples_with_logP[:,0] + self.post_burn_in_log_posteriors_un_normed_vec = np.array(nestedObjectsFunctions.makeAtLeast_2dNested(self.post_burn_in_log_posteriors_un_normed_vec)).transpose() + #need to populate post_burn_in_log_priors_vec this with an object, otherwise calculatePostBurnInStatistics will try to calculate all the priors. + self.post_burn_in_log_priors_vec = None + #Below is needed to avoid causing an error in the calculatePostBurnInStatistics since we don't have a real priors vec. + self.UserInput.parameter_estimation_settings['mcmc_threshold_filter_samples'] = False + self.calculatePostBurnInStatistics(calculate_post_burn_in_log_priors_vec = False) + if sampling_type == 'mcmc': + mcmc_logP_and_parameters_values = np.genfromtxt(filepath + "\\mcmc_logP_and_parameter_samples.csv", delimiter=",") + logP_and_parameter_values = np.array(mcmc_logP_and_parameters_values) + try: + self.calculatePostBurnInStatistics(calculate_post_burn_in_log_priors_vec = True) + except: + self.calculatePostBurnInStatistics(calculate_post_burn_in_log_priors_vec = False) + # below are not needed because they occur in self.calculatePostBurnInStatistics + # self.map_logP = max(np.array(logP_and_parameter_values[:,0])) + # index_of_map_logP = np.where(logP_and_parameter_values[:,0] == self.map_logP) + # self.map_parameter_set = logP_and_parameter_values[index_of_map_logP,1:] + + + + def reduceResponseSpace(self): + #This function has no explicit arguments, but takes everything in self.UserInput as an implied argument. + #In particular, self.UserInput.responses['reducedResponseSpace'] + #it has two implied returns: 1) self.UserInput.simulationOutputProcessingFunction, 2) self.responses_covmat becomes reduced in size. + + UserInput = self.UserInput + #First, we need to make a function that is going to reduce the dimensionality of the outputs outputs when there are simulations. + #Make a deep copy of the existing function, so that we can use it if needed. + self.UserInput.beforeReducedResponseSpaceSimulationOutputProcessingFunction = copy.deepcopy(self.UserInput.simulationOutputProcessingFunction) + self.UserInput.beforeReducedResponseSpace_num_response_dimensions = self.UserInput.num_response_dimensions + def extractReducedResponsesOutputsWrapper(simulatedOutput): + #The simulatedOuput is an exlicit argument, the self.UserInput.model['reducedResponseSpace'] is an implicit argument. + #First, check if there is an OutputProcessing function to use on the simulatedOutput. + if type(self.UserInput.beforeReducedResponseSpaceSimulationOutputProcessingFunction) != type(None): + fullResponseOutput = self.UserInput.beforeReducedResponseSpaceSimulationOutputProcessingFunction(simulatedOutput) #We use the processing function to convert the simulated output to the actual responses, then we trim them as above. + elif type(self.UserInput.beforeReducedResponseSpaceSimulationOutputProcessingFunction) == type(None): #if not, we take the output directly. + fullResponseOutput = simulatedOutput + + #We could calculate the number of responses from fullResponseOutput, but we use self.UserInput.beforeReducedResponseSpace_num_response_dimensions as an implicit argument. + reducedResponseOutput = []#Just intializing, then will append to it. + for responseDimIndex in range(self.UserInput.beforeReducedResponseSpace_num_response_dimensions): + #We'll only keep a responsDim if the responseDimIndex is named in self.UserInput.model['reducedResponseSpace'] + if responseDimIndex in self.UserInput.responses['reducedResponseSpace']: + reducedResponseOutput.append(fullResponseOutput[responseDimIndex]) + return reducedResponseOutput + + #Now get our first "implied return" by using the above function as the processing function. + self.UserInput.simulationOutputProcessingFunction = extractReducedResponsesOutputsWrapper + + #Now we get our second "implied return" by reducing the response_abscissa, transformed response values, and their uncertainties. + #TODO: consider making a different variable so that the dictionary does not need to get overwritten. + self.UserInput.responses_abscissa = returnReducedIterable(self.UserInput.responses_abscissa, self.UserInput.responses['reducedResponseSpace']) + self.UserInput.responses_observed_transformed = returnReducedIterable(self.UserInput.responses_observed_transformed, self.UserInput.responses['reducedResponseSpace']) + self.UserInput.responses_observed_transformed_uncertainties = returnReducedIterable(self.UserInput.responses_observed_transformed, self.UserInput.responses['reducedResponseSpace']) + self.UserInput.num_response_dimensions = np.shape(UserInput.responses_abscissa)[0] + + #Now we get our third "implied return" by reducing the response_covmat. + self.observed_responses_covmat_transformed = returnReducedIterable(self.observed_responses_covmat_transformed, self.UserInput.responses['reducedResponseSpace']) + return + + + #This function reduces the parameter space. The only parameters allowed to change will be the ones in the indices inside 'reducedParameterSpace'. All others will be held constant. The values inside 'InputParameterInitialGuess will be used', and 'InputParameterPriorValues' if an initial guess was not provided.") + #These lines of code started in __init__ was moved outside of initializing the class so that someday people can call it later on after making the class object, if desired. + #That way people can change to a different reduced parameter space without making a new object by updating what is in UserInput.model['reducedParameterSpace'] + #However, that 'later changing' is currently not supported. The indices *at present* only work out correctly when this is called at end of initialization. + def reduceParameterSpace(self): + UserInput = self.UserInput + + self.UserInput.simulationFunction = self.simulateWithSubsetOfParameters #Now simulateWithSubsetOfParameters will be called as the simulation function. + self.UserInput.simulationOutputProcessingFunction = None #We will use self.UserInput.model['simulationOutputProcessingFunction'], but we'll do it inside subsetOfParameterSpaceWrapper. So during parameter estimation there will be no separate call to a simulation output processing function. + #Now start reducing various inputs... + reducedIndices = UserInput.model['reducedParameterSpace'] + UserInput.InputParameterInitialGuess = returnReducedIterable(UserInput.InputParameterInitialGuess, reducedIndices) + UserInput.parameterNamesList = returnReducedIterable(UserInput.parameterNamesList, reducedIndices) + #We need to reparse to populate UserInput.stringOfParameterNames, can't use return Reduced Iterable. + UserInput.stringOfParameterNames = str(UserInput.parameterNamesList).replace("'","")[1:-1] + #To make UserInput.parameterNamesAndMathTypeExpressionsDict we use a for loop to remove keys that should not be there anymore. + #need to trim the dictionary based on what is in the UserInput.parameterNamesList variable + parameterNamesAndMathTypeExpressionsDict = copy.deepcopy(self.UserInput.model['parameterNamesAndMathTypeExpressionsDict']) + for keyIndex in range(len(parameterNamesAndMathTypeExpressionsDict)): + key = list(self.UserInput.model['parameterNamesAndMathTypeExpressionsDict'])[keyIndex] #Need to call it out separately from original dictionary due to loop making the new dictionary smaller. + if key not in self.UserInput.parameterNamesList: + del parameterNamesAndMathTypeExpressionsDict[key] #Remove any parameters that were not in reduced parameter space. + UserInput.parameterNamesAndMathTypeExpressionsDict = parameterNamesAndMathTypeExpressionsDict + UserInput.InputParametersPriorValuesUncertainties = returnReducedIterable(UserInput.InputParametersPriorValuesUncertainties, reducedIndices) + if self.parameterBoundsOn: #only need to reduce the iterables for the parameter bounds if they exist. + UserInput.InputParameterPriorValues_lowerBounds = returnReducedIterable( UserInput.InputParameterPriorValues_lowerBounds , reducedIndices ) + UserInput.InputParameterPriorValues_upperBounds = returnReducedIterable( UserInput.InputParameterPriorValues_upperBounds , reducedIndices ) + #We have a list that keeps track of InputParameters which have Uniform Prior distributions. The logic for how to update that is a bit different. + if hasattr(self.UserInput, 'InputParametersPriorValuesUniformDistributionsIndices') == True: + NewInputParametersPriorValuesUniformDistributionsIndices = [] + for indexNumber, indexValue in enumerate(reducedIndices): #we need to know which position it has in the reducedIndices, and we'll append **that** position if the item is a uniform distribution. + if indexValue in UserInput.InputParametersPriorValuesUniformDistributionsIndices: + NewInputParametersPriorValuesUniformDistributionsIndices.append(indexNumber) + #else pass. + UserInput.InputParametersPriorValuesUniformDistributionsIndices = NewInputParametersPriorValuesUniformDistributionsIndices + UserInput.std_prior = returnReducedIterable( UserInput.std_prior , reducedIndices ) + UserInput.var_prior = returnReducedIterable( UserInput.var_prior , reducedIndices ) + UserInput.covmat_prior = returnReducedIterable( UserInput.covmat_prior , reducedIndices ) + self.UserInput.scaling_uncertainties = returnReducedIterable( self.UserInput.scaling_uncertainties , reducedIndices ) + self.UserInput.mu_prior = returnReducedIterable( self.UserInput.mu_prior , reducedIndices ) + self.UserInput.mu_prior_scaled = returnReducedIterable( self.UserInput.mu_prior_scaled , reducedIndices ) + self.UserInput.var_prior_scaled = returnReducedIterable( self.UserInput.var_prior_scaled , reducedIndices ) + self.UserInput.covmat_prior_scaled = returnReducedIterable( self.UserInput.covmat_prior_scaled , reducedIndices ) + self.Q_mu = returnReducedIterable( self.Q_mu , reducedIndices ) + self.Q_covmat = returnReducedIterable( self.Q_covmat , reducedIndices ) + #There are no returns. Everything above is an implied return. + return + + def get_responses_simulation_uncertainties(self, discreteParameterVector): #FIXME: Make sure this works with responses['reducedResponseSpace'] and model['reducedParameterSpace']. I don't think it does. + if isinstance(self.UserInput.responses_simulation_uncertainties, Iterable): #If it's an array or like one, we take it as is. The other options are a non object or a function. + responses_simulation_uncertainties = np.array(self.UserInput.responses_simulation_uncertainties)*1.0 + elif type(self.UserInput.responses_simulation_uncertainties) == type(None): + responses_simulation_uncertainties = self.UserInput.responses_simulation_uncertainties + else: #Else we assume it's a function taking the discreteParameterVector. + responses_simulation_uncertainties = self.UserInput.responses_simulation_uncertainties(discreteParameterVector) #This is passing an argument to a function. + responses_simulation_uncertainties = np.array(nestedObjectsFunctions.makeAtLeast_2dNested(responses_simulation_uncertainties)) + responses_simulation_uncertainties = nestedObjectsFunctions.convertInternalToNumpyArray_2dNested(responses_simulation_uncertainties) + return responses_simulation_uncertainties + + def simulateWithSubsetOfParameters(self,reducedParametersVector): #This is a wrapper. + #This function has implied arguments of ... + #self.UserInput.model['InputParameterInitialGuess'] for the parameters to start with + #self.UserInput.model['reducedParameterSpace'] a list of indices for which parameters are the only ones to change. + #simulationFunction = self.UserInput.model['simulateByInputParametersOnlyFunction'] + #simulationOutputProcessingFunction = self.UserInput.model['simulationOutputProcessingFunction'] + #When this wrapper is used, EVERYWHERE ELSE will call it to do the simulation, by calling self.UserInput.simulationFunction and self.UserInput.simulationOutputProcessingFunction + simulationFunction = self.UserInput.model['simulateByInputParametersOnlyFunction'] #This is making a local simulation function. The global will be set ot simulateWithSubsetOfParameters. + simulationOutputProcessingFunction = self.UserInput.model['simulationOutputProcessingFunction'] #This is making a local simulation function. The global will be set to None. + + #now populate the discreteParameterVector first with the initial guess, then with the new reducedParameters vector. + discreteParameterVector = copy.deepcopy(self.UserInput.model['InputParameterInitialGuess']) #This is the original one from the user, before any reduction. + for reducedParameterIndex, parameterValue in enumerate(reducedParametersVector): + #we find which index to put things into from #self.UserInput.model['reducedParameterSpace'], which is a list of indices. + regularParameterIndex = self.UserInput.model['reducedParameterSpace'][reducedParameterIndex] + discreteParameterVector[regularParameterIndex] = parameterValue + if type(simulationFunction) != type(None):#This is the normal case. + simulationOutput = simulationFunction(discreteParameterVector) + if type(simulationOutput) == type(None): + return None #This is for the case that the simulation fails. User can have simulationOutput return a None type in case of failure. Perhaps should be made better in future. + if len(simulationOutput) == 1: #if a 'nan' is returned, then we'll treat the simulation like a failed simulation. + if simulationOutput == np.float('nan'): + return None + + + if type(simulationOutputProcessingFunction) == type(None): + simulatedResponses = simulationOutput #Is this the log of the rate? If so, Why? + if type(simulationOutputProcessingFunction) != type(None): + simulatedResponses = simulationOutputProcessingFunction(simulationOutput) + + simulatedResponses = nestedObjectsFunctions.makeAtLeast_2dNested(simulatedResponses) + #This is not needed: + #observedResponses = nestedObjectsFunctions.makeAtLeast_2dNested(self.UserInput.responses_observed) + return simulatedResponses + + def transform_responses(self, nestedAllResponsesArray, nestedAllResponsesUncertainties = []): + nestedAllResponsesArray_transformed = copy.deepcopy(nestedAllResponsesArray) #First make a copy to populate with transformed values. + nestedAllResponsesUncertainties_transformed = copy.deepcopy(nestedAllResponsesUncertainties) #First make a copy to populate with transformed values. If blank, we won't populate it. + UserInput = self.UserInput + #TODO: Make little function for interpolation in case it's necessary (see below). +# def littleInterpolator(): +# abscissaRange = UserInput.responses_abscissa[responseIndex][-1] - UserInput.responses_abscissa[responseIndex][0] #Last value minus first value. +# UserInput.responses_observed = nestedObjectsFunctions.makeAtLeast_2dNested(UserInput.responses_observed) +# UserInput.responses_observed_uncertainties = nestedObjectsFunctions.makeAtLeast_2dNested(UserInput.responses_observed_uncertainties) + if 'data_overcategory' not in UserInput.responses: #To make backwards compatibility. + UserInput.responses['data_overcategory'] = '' + if UserInput.responses['data_overcategory'] == 'transient_kinetics': #This assumes that the abscissa is always time. + for responseIndex, response in enumerate(UserInput.responses_observed): + #We will need the abscissa also, so need to check if there are independent abscissa or not: + if len(UserInput.responses_abscissa) == 1: #This means there is only one abscissa. + abscissaIndex = 0 + else: + abscissaIndex = responseIndex + #Now to do the transforms. + if UserInput.responses['response_types'][responseIndex] == 'I': #For intermediate + if UserInput.responses['response_data_types'][responseIndex] == 'c': + t_values, nestedAllResponsesArray_transformed[responseIndex], dydt_values = littleEulerGivenArray(0, UserInput.responses_abscissa[abscissaIndex], nestedAllResponsesArray[responseIndex]) + if len(nestedAllResponsesUncertainties) > 0: + nestedAllResponsesUncertainties_transformed[responseIndex] = littleEulerUncertaintyPropagation(nestedAllResponsesUncertainties[responseIndex], UserInput.responses_abscissa[abscissaIndex], np.mean(nestedAllResponsesUncertainties[responseIndex])/10) + if UserInput.responses['response_data_types'][responseIndex] == 'r': + #Perform the littleEuler twice. + t_values, nestedAllResponsesArray_transformed[responseIndex], dydt_values = littleEulerGivenArray(0, UserInput.responses_abscissa[abscissaIndex], nestedAllResponsesArray[responseIndex]) + if len(nestedAllResponsesUncertainties) > 0: + nestedAllResponsesUncertainties_transformed[responseIndex] = littleEulerUncertaintyPropagation(nestedAllResponsesUncertainties[responseIndex], UserInput.responses_abscissa[abscissaIndex], np.mean(nestedAllResponsesUncertainties[responseIndex])/10) + t_values, nestedAllResponsesArray_transformed[responseIndex], dydt_values = littleEulerGivenArray(0, UserInput.responses_abscissa[abscissaIndex], nestedAllResponsesArray_transformed[responseIndex]) + if len(nestedAllResponsesUncertainties) > 0: + nestedAllResponsesUncertainties_transformed[responseIndex] = littleEulerUncertaintyPropagation(nestedAllResponsesUncertainties_transformed[responseIndex], UserInput.responses_abscissa[abscissaIndex], np.mean(nestedAllResponsesUncertainties[responseIndex])/10) + if UserInput.responses['response_types'][responseIndex] == 'R': #For reactant + if UserInput.responses['response_data_types'][responseIndex] == 'c': + pass + if UserInput.responses['response_data_types'][responseIndex] == 'r': + #TODO: use responses['points_if_transformed'] variable to interpolate the right number of points. This is for data that's not already evenly spaced. + t_values, nestedAllResponsesArray_transformed[responseIndex], dydt_values = littleEulerGivenArray(0, UserInput.responses_abscissa[abscissaIndex], nestedAllResponsesArray[responseIndex]) + if len(nestedAllResponsesUncertainties) > 0: + nestedAllResponsesUncertainties_transformed[responseIndex] = littleEulerUncertaintyPropagation(nestedAllResponsesUncertainties[responseIndex], UserInput.responses_abscissa[abscissaIndex], np.mean(nestedAllResponsesUncertainties[responseIndex])/10) + if UserInput.responses['response_types'][responseIndex] == 'P': #For product + + if UserInput.responses['response_data_types'][responseIndex] == 'c': + pass + if UserInput.responses['response_data_types'][responseIndex] == 'r': + #TODO: use responses['points_if_transformed'] variable to interpolate the right number of points. This is for data that's not already evenly spaced. + t_values, nestedAllResponsesArray_transformed[responseIndex], dydt_values = littleEulerGivenArray(0, UserInput.responses_abscissa[abscissaIndex], nestedAllResponsesArray[responseIndex]) + if len(nestedAllResponsesUncertainties) > 0: + nestedAllResponsesUncertainties_transformed[responseIndex] = littleEulerUncertaintyPropagation(nestedAllResponsesUncertainties[responseIndex], UserInput.responses_abscissa[abscissaIndex], np.mean(nestedAllResponsesUncertainties[responseIndex])/10) + if UserInput.responses['response_types'][responseIndex] == 'O': #O is for other. + if UserInput.responses['response_data_types'][responseIndex] == 'o': #other + pass + if UserInput.responses['response_data_types'][responseIndex] == 'c': #concentration + LittleEuler + if UserInput.responses['response_data_types'][responseIndex] == 'r': + LittleEulerTwice + if UserInput.responses['data_overcategory'] == 'steady_state_kinetics': #TODO: so far, this does not do anything. It assumes that the abscissa is never time. + for responseIndex, response in enumerate(UserInput.responses_observed): + if UserInput.responses['response_types'][responseIndex] == 'T': #For abscissa of temperature dependence. Will probably do a log transform. + if UserInput.responses['response_data_types'][responseIndex] == 'c': + pass + if UserInput.responses['response_data_types'][responseIndex] == 'r': + pass + if UserInput.responses['response_types'][responseIndex] == 'I' or UserInput.responses['response_types'][responseIndex] == 'P' or UserInput.responses['response_types'][responseIndex] == 'R': #For abscissa of concentration dependence. + if UserInput.responses['response_data_types'][responseIndex] == 'c': + pass + if UserInput.responses['response_data_types'][responseIndex] == 'r': + pass + return nestedAllResponsesArray_transformed, nestedAllResponsesUncertainties_transformed + + #Throughout this file, this function is called to generate initialStartPoint distributions or walkerInitialDistributions. + # These are **not** identical variables and should not be messed up during editing. walkerInitialDistributions are a special case of initialStartPoints + # The distinction is hierarchical. Somebody could do a multiStart search with a uniformInitialDistributionType and have a walkerInitialDistribution started around each case within that. + # Effectively, the initialDistributionPoints are across parameter space, while the walkerInitialDistribution **could** be designed to find local modes using a smaller spread. + + def generateInitialPoints(self, numStartPoints=0, initialPointsDistributionType='uniform', relativeInitialDistributionSpread=1.0, numParameters = 0, centerPoint=None, gridsearchSamplingInterval = [], gridsearchSamplingRadii = []): + #The initial points will be generated from a distribution based on the number of walkers and the distributions of the parameters. + #The variable UserInput.std_prior has been populated with 1 sigma values, even for cases with uniform distributions. + #The random generation at the front of the below expression is from the zeus example https://zeus-mcmc.readthedocs.io/en/latest/ + #The multiplication is based on the randn function using a sigma of one (which we then scale up) and then advising to add mu after: https://docs.scipy.org/doc/numpy-1.15.1/reference/generated/numpy.random.randn.html + #The actual numParameters cannot be 0. We just use 0 to mean not provided, in which case we pull it from the initial guess. + #The arguments gridsearchSamplingInterval and gridsearchSamplingRadii are only for the distribution type 'grid', and correspond to the variables gridsearchSamplingInterval = [], gridsearchSamplingRadii = [] inside getGridPermutations. + if str(centerPoint).lower() == str(None).lower(): + centerPoint = np.array(self.UserInput.InputParameterInitialGuess)*1.0 #This may be a reduced parameter space. + if initialPointsDistributionType.lower() not in ['grid', 'uniform', 'identical', 'gaussian', 'astroidal', 'sobol', 'shell']: + print("Warning: initialPointsDistributionType must be from: 'grid', 'uniform', 'identical', 'gaussian', 'astroidal', 'sobol', 'shell'. A different choice was received and is not understood. initialPointsDistributionType is being set as 'sobol'.") + initialPointsDistributionType = 'sobol' + #For a multi-start with a grid, our algorithm is completely different than other cases. + if initialPointsDistributionType.lower() =='grid': + gridPermutations, numPermutations = self.getGridPermutations(centerPoint, gridsearchSamplingInterval=gridsearchSamplingInterval, gridsearchSamplingRadii=gridsearchSamplingRadii) + initialPoints = gridPermutations + #Below lines are for non-grid cases. + if numParameters == 0: + numParameters = len(centerPoint) + if numStartPoints == 0: #This is a deprecated line. The function was originally designed for making mcmc walkers and then was generalized. + numStartPoints = self.mcmc_nwalkers + if initialPointsDistributionType.lower() =='uniform': + initialPointsFirstTerm = np.random.uniform(-2,2, [numStartPoints,numParameters]) #<-- this is from me, trying to remove bias. This way we get sampling from a uniform distribution from -2 standard deviations to +2 standard deviations. That way the sampling is over 95% of the prior and is (according to the prior) likely to include the HPD region. + elif initialPointsDistributionType.lower() == 'identical': + initialPointsFirstTerm = np.zeros((numStartPoints, numParameters)) #Make the first term all zeros. + elif initialPointsDistributionType.lower() =='gaussian': + initialPointsFirstTerm = np.random.randn(numStartPoints, numParameters) #<--- this was from the zeus example. TODO: change this to rng.standard_normal + elif (initialPointsDistributionType.lower() == 'astroidal') or (initialPointsDistributionType.lower() == 'shell'): + # The idea is to create a hypercube around the origin then apply a power law factor. + # This factor is set as the numParameters to create an interesting distribution for Euclidean distance that starts as a uniform distribution then decays by a power law if the exponent is the number of dimensions. + from scipy.stats import qmc + from warnings import catch_warnings, simplefilter #used to suppress warnings when sobol samples are not base2. + # A sobol object has to be created to then extract points from the object. + # The scramble (Owen Scramble) is always True. This option helps convergence and creates a more unbiased sampling. + sobol_object = qmc.Sobol(d=numParameters, scramble=True) + with catch_warnings(): + simplefilter("ignore") + sobol_samples = sobol_object.random(numStartPoints) + # now we must translate the sequence (from range(0,1) to range(-2,2)). This is analagous to the way we get sampling from a uniform distribution from -2 standard deviations to +2 standard deviations. + initialPointsFirstTerm = -1 + 2*sobol_samples + # This section assures that positive and negative values are generated. + # create mapping scheme of negative values, then make matrix completely positive, apply negatives back later + neg_map = np.ones((numStartPoints,numParameters), dtype=int) + neg_map[initialPointsFirstTerm < 0] = -1 + initialPointsFirstTerm = np.abs(initialPointsFirstTerm) + if initialPointsDistributionType.lower() == 'astroidal': + initialPointsFirstTerm = initialPointsFirstTerm**numParameters + elif initialPointsDistributionType.lower() == 'shell': + initialPointsFirstTerm = initialPointsFirstTerm**(1/numParameters) + initialPointsFirstTerm = neg_map*initialPointsFirstTerm + # Apply a proportional factor of 2 to get bounds of 2 sigma. This is analagous to the way we get sampling from a uniform distribution from -2 standard deviations to +2 standard deviations. + initialPointsFirstTerm *= 2 + elif initialPointsDistributionType.lower() == 'sobol': + from scipy.stats import qmc + from warnings import catch_warnings, simplefilter #used to suppress warnings when sobol samples are not base2. + # A sobol object has to be created to then extract points from the object. + # The scramble (Owen Scramble) is always True. This option helps convergence and creates a more unbiased sampling. + sobol_object = qmc.Sobol(d=numParameters, scramble=True) + with catch_warnings(): + simplefilter("ignore") + sobol_samples = sobol_object.random(numStartPoints) + # now we must translate the sequence (from range(0,1) to range(-2,2)). This is analagous to the way we get sampling from a uniform distribution from -2 standard deviations to +2 standard deviations. + initialPointsFirstTerm = -2 + 4*sobol_samples + if initialPointsDistributionType !='grid': + #Now we add to centerPoint, usually self.UserInput.InputParameterInitialGuess. We don't use the UserInput initial guess directly because gridsearch and other things can change it -- so we need to use this one. + initialPoints = relativeInitialDistributionSpread*initialPointsFirstTerm*self.UserInput.std_prior + centerPoint + return initialPoints + + #This helper function has been made so that gridSearch and design of experiments can call it. + #Although at first glance it may seem like it should be in the CombinationsGeneratorModule, that is a misconception. This is just a wrapper setting defaults for calling that module, such as using the prior for the grid interval when none is provided. + #note that a blank list is okay for gridsearchSamplingInterval if doing a parameter grid, but not for other types of grids. + def getGridPermutations(self, gridCenterVector, gridsearchSamplingInterval, gridsearchSamplingRadii, SpreadType="Addition",toFile=False): + import PEUQSE.CombinationGeneratorModule as CombinationGeneratorModule + numParameters = len(gridCenterVector) + if len(gridsearchSamplingRadii) == 0: + gridsearchSamplingRadii = np.ones(numParameters, dtype='int') #By default, will make ones. + numPermutations = 3**numParameters + else: + gridsearchSamplingRadii = np.array(gridsearchSamplingRadii, dtype='int') + numPermutations = 1 #just initializing. + for radius in gridsearchSamplingRadii: + numPermutations=numPermutations*(2*radius+1) + if len(gridsearchSamplingInterval) == 0: + gridsearchSamplingInterval = self.UserInput.std_prior #By default, we use the standard deviations associated with the priors. + else: gridsearchSamplingInterval = np.array(gridsearchSamplingInterval, dtype='float') + gridPermutations = CombinationGeneratorModule.combinationGenerator(gridCenterVector, gridsearchSamplingInterval, gridsearchSamplingRadii, SpreadType=SpreadType,toFile=toFile) + return gridPermutations, numPermutations + + def doListOfPermutationsSearch(self, listOfPermutations, numPermutations = None, searchType='getLogP', exportLog = True, walkerInitialDistribution='UserChoice', passThroughArgs = {}, calculatePostBurnInStatistics=True, keep_cumulative_post_burn_in_data = False, centerPoint=None, permutationsToSamples=False): #This is the 'engine' used by doGridSearch and doMultiStartSearch + #The listOfPermutations can also be another type of iterable. + #Possible searchTypes are: 'getLogP', 'doEnsembleSliceSampling', 'doEnsembleJumpSampling', 'doMetropolisHastings', 'doOptimizeNegLogP', 'doOptimizeLogP' 'doOptimizeSSR' + #permutationsToSamples should normally only be True if somebody is using gridsearch or uniform multistart with getLogP. + self.listOfPermutations = listOfPermutations #This is being made into a class variable so that it can be used during parallelization + if str(numPermutations).lower() == str(None).lower(): + numPermutations = len(self.listOfPermutations) + if str(centerPoint).lower() == str(None).lower(): + centerPoint = self.UserInput.InputParameterInitialGuess*1.0 + if searchType == 'doGetLogP' or searchType == 'doSinglePoint': #Fixing a common input mistake. + searchType = 'getLogP' + if searchType == 'doEnsembleJumpSampling': #Fix the frontend name to the backend name. + searchType = 'doEnsembleModifiedMHSampling' + self.permutation_searchType = searchType #This is mainly for consolidate_parallel_sampling_data + verbose = self.UserInput.parameter_estimation_settings['verbose'] + if verbose: + print("Starting multistart/permutations search.") + file_name_prefix, file_name_suffix, directory_name_suffix = self.getParallelProcessingPrefixAndSuffix() #As of Nov 21st 2020, these should always be '' since multiStart_continueSampling is not intended to be used with parallel sampling. + if (self.UserInput.parameter_estimation_settings['mcmc_continueSampling'] == 'auto') or (self.UserInput.parameter_estimation_settings['mcmc_continueSampling'] == False): + mcmc_continueSampling = False #need to set this variable to false if it's an auto. The only time mcmc_continue sampling should be on for multistart is if someone is doing it intentionally, which would normally only be during an MPI case. + if (self.UserInput.parameter_estimation_settings['mcmc_continueSampling'] == True): + mcmc_continueSampling = True #The only time mcmc_continue sampling should be on for multistart is if someone is doing it intentionally, which would normally only be during an MPI case. + #Check if we need to do multistart_continueSampling, and prepare for it if we need to. + if ('multistart_continueSampling' not in self.UserInput.parameter_estimation_settings) or (self.UserInput.parameter_estimation_settings['multistart_continueSampling'] == 'auto'): + if hasattr(self, 'multistart_MAP_logP_and_parameters_values'): + multistart_continueSampling = True + else: + multistart_continueSampling = False + else: multistart_continueSampling = self.UserInput.parameter_estimation_settings['multistart_continueSampling'] + if multistart_continueSampling == True: + if hasattr(self, 'multistart_MAP_logP_and_parameters_values'): #if we are continuing from old results in the same instance + self.last_permutations_MAP_logP_and_parameters_values = copy.deepcopy(self.permutations_MAP_logP_and_parameters_values) + else: #Else we need to read from the file. + self.last_permutations_MAP_logP_and_parameters_values_filename = file_name_prefix + "multistart_MAP_logP_and_parameters_values" + file_name_suffix + self.last_permutations_MAP_logP_and_parameters_values = unpickleAnObject(self.UserInput.directories['pickles']+self.last_permutations_MAP_logP_and_parameters_values_filename) + #extract he last_listOfPermutations from the array object. + self.last_listOfPermutations = np.array(nestedObjectsFunctions.makeAtLeast_2dNested(self.last_permutations_MAP_logP_and_parameters_values[:,1:])) #later columns are the permutations. + if np.shape(self.last_listOfPermutations)[0] == 1: #In this case, need to transpose. + self.last_listOfPermutations = self.last_listOfPermutations.transpose() + #unlike in mcmc_continueSampling, we don't need the last_InputParameterInitialGuess information. + #Initialize some things before permutations loop. + allPermutationsResults = [] + self.permutations_MAP_logP_and_parameters_values = [] #Just initializing as fresh. + if (type(self.UserInput.parameter_estimation_settings['multistart_checkPointFrequency']) != type(None)) or (verbose == True): + timeAtPermutationSearchStart = time.time() + timeAtLastPermutation = timeAtPermutationSearchStart #just initializing + self.highest_logP = float('-inf') #just initializing + highest_logP_parameter_set = np.ones(len(self.UserInput.InputParameterInitialGuess))*float('nan') #just initializing + #bestResultSoFar has this form: [self.map_parameter_set, self.mu_AP_parameter_set, self.stdap_parameter_set, self.evidence, self.info_gain, self.post_burn_in_samples, self.post_burn_in_log_posteriors_un_normed_vec] + bestResultSoFar = [highest_logP_parameter_set, None, None, None, None, None, None] #just initializing. + highest_MAP_initial_point_index = None #just initializing + highest_MAP_initial_point_parameters = None #just initializing + if self.UserInput.parameter_estimation_settings['exportAllSimulatedOutputs'] == True: + self.permutations_unfiltered_map_simulated_outputs = [] + if (searchType == 'doEnsembleSliceSampling') or (searchType == 'doEnsembleModifiedMHSampling'): + if str(self.UserInput.parameter_estimation_settings['mcmc_nwalkers']).lower() == 'auto': + permutationSearch_mcmc_nwalkers = 2*len(centerPoint) #Lowest possible is 2 times num parameters for ESS. + else: + permutationSearch_mcmc_nwalkers = int(self.UserInput.parameter_estimation_settings['mcmc_nwalkers']) + #Start grid search loop. + if (searchType == 'doEnsembleSliceSampling') or (searchType == 'doMetropolisHastings') or (searchType == 'doEnsembleModifiedMHSampling'): #Choose the walker distribution type. + if walkerInitialDistribution == 'UserChoice': #UserChoice comes from UserInput. It can still be auto. + walkerInitialDistribution = self.UserInput.parameter_estimation_settings['mcmc_walkerInitialDistribution'] + #The identical distribution is used by default because otherwise the walkers may be spread out too far and it could defeat the purpose of a gridsearch. + if walkerInitialDistribution.lower() == 'auto': + walkerInitialDistribution = 'sobol' + for permutationIndex,permutation in enumerate(self.listOfPermutations): + #####Begin PEUQSE Parallel Processing During Loop Block#### + if (self.UserInput.parameter_estimation_settings['multistart_parallel_sampling'])== True: + #We will only execute the sampling the permutationIndex matches the processor rank. + #Additionally, if the rank is 0 and the simulation got here, it will be assumed the person is running this just to find the number of Permutations, so that will be spit out and the simulation ended. + import PEUQSE.parallel_processing + if PEUQSE.parallel_processing.currentProcessorNumber == 0: + print("For the user input settings provided, the number of Permutations+1 will be", numPermutations+1, ". Please use mpiexec or mpirun with this number for N. If you are not expecting to see this message, change your UserInput choices. You have chosen parallel processing for gridsearch and have run PEUQSE without mpi, which is a procedure to retrieve the number of processor ranks to use for parallelized gridsearch. A typical syntax now would be: mpiexec -n ", numPermutations+1, " python runfile_for_your_analysis.py" ) + sys.exit() + elif PEUQSE.parallel_processing.currentProcessorNumber != permutationIndex+1: + continue #This means the permutation index does not match the processor rank so nothing should be executed. + #elif PEUQSE.parallel_processing.currentProcessorNumber == permutationIndex+1: + # pass #This is the "normal" case and is implied, so is commented out. + #####End PEUQSE Parallel Processing During Loop Block#### + self.UserInput.InputParameterInitialGuess = permutation #We need to fill the variable InputParameterInitialGuess with the permutation being checked. + if (searchType == 'getLogP'): + self.map_logP = self.getLogP(permutation) #The getLogP function does not fill map_logP by itself. + self.map_parameter_set = permutation + thisResult = [self.map_parameter_set, None, None, None, None, None, None] + #thisResultStr = [self.map_logP, str(self.map_parameter_set).replace(",","|").replace("[","").replace('(','').replace(')',''), 'None', 'None', 'None', 'None', 'None', 'None'] + if searchType == 'doMetropolisHastings': + self.map_logP = np.float('-inf') #initializing as -inf to have a 'pure' mcmc sampling. + thisResult = self.doMetropolisHastings(calculatePostBurnInStatistics=calculatePostBurnInStatistics, continueSampling=mcmc_continueSampling) + #self.map_logP gets done by itself in doMetropolisHastings + #Note that "thisResult" has the form: [self.map_parameter_set, self.mu_AP_parameter_set, self.stdap_parameter_set, self.evidence, self.info_gain, self.post_burn_in_samples, self.post_burn_in_log_posteriors_un_normed_vec] + if keep_cumulative_post_burn_in_data == True: + if permutationIndex == 0: + self.cumulative_post_burn_in_samples = self.post_burn_in_samples + self.cumulative_post_burn_in_log_priors_vec = self.post_burn_in_log_priors_vec + self.cumulative_post_burn_in_log_posteriors_un_normed_vec = self.post_burn_in_log_posteriors_un_normed_vec + else: #This is basically elseif permutationIndex > 0: + self.cumulative_post_burn_in_samples = np.vstack((self.cumulative_post_burn_in_samples, self.post_burn_in_samples)) + self.cumulative_post_burn_in_log_priors_vec = np.vstack((self.cumulative_post_burn_in_log_priors_vec, self.post_burn_in_log_priors_vec)) + self.cumulative_post_burn_in_log_posteriors_un_normed_vec = np.vstack((self.cumulative_post_burn_in_log_posteriors_un_normed_vec, self.post_burn_in_log_posteriors_un_normed_vec)) + if searchType == 'doEnsembleSliceSampling': + self.map_logP = np.float('-inf') #initializing as -inf to have a 'pure' mcmc sampling. + thisResult = self.doEnsembleSliceSampling(mcmc_nwalkers_direct_input=permutationSearch_mcmc_nwalkers, calculatePostBurnInStatistics=calculatePostBurnInStatistics, walkerInitialDistribution=walkerInitialDistribution, continueSampling=mcmc_continueSampling) + #Note that "thisResult" has the form: [self.map_parameter_set, self.mu_AP_parameter_set, self.stdap_parameter_set, self.evidence, self.info_gain, self.post_burn_in_samples, self.post_burn_in_log_posteriors_un_normed_vec] + #self.map_logP gets done by itself in doEnsembleSliceSampling + if keep_cumulative_post_burn_in_data == True: + if permutationIndex == 0: + self.cumulative_post_burn_in_samples = self.post_burn_in_samples + self.cumulative_post_burn_in_log_priors_vec = self.post_burn_in_log_priors_vec + self.cumulative_post_burn_in_log_posteriors_un_normed_vec = self.post_burn_in_log_posteriors_un_normed_vec + else: #This is basically elseif permutationIndex > 0: + self.cumulative_post_burn_in_samples = np.vstack((self.cumulative_post_burn_in_samples, self.post_burn_in_samples)) + self.cumulative_post_burn_in_log_priors_vec = np.vstack((self.cumulative_post_burn_in_log_priors_vec, self.post_burn_in_log_priors_vec)) + self.cumulative_post_burn_in_log_posteriors_un_normed_vec = np.vstack((self.cumulative_post_burn_in_log_posteriors_un_normed_vec, self.post_burn_in_log_posteriors_un_normed_vec)) + if searchType == 'doEnsembleModifiedMHSampling': + self.map_logP = np.float('-inf') #initializing as -inf to have a 'pure' mcmc sampling. + thisResult = self.doEnsembleModifiedMHSampling(mcmc_nwalkers_direct_input=permutationSearch_mcmc_nwalkers, calculatePostBurnInStatistics=calculatePostBurnInStatistics, walkerInitialDistribution=walkerInitialDistribution, continueSampling=mcmc_continueSampling) + #Note that "thisResult" has the form: [self.map_parameter_set, self.mu_AP_parameter_set, self.stdap_parameter_set, self.evidence, self.info_gain, self.post_burn_in_samples, self.post_burn_in_log_posteriors_un_normed_vec] + #self.map_logP gets done by itself in doEnsembleJumpSampling + if keep_cumulative_post_burn_in_data == True: + if permutationIndex == 0: + self.cumulative_post_burn_in_samples = self.post_burn_in_samples + self.cumulative_post_burn_in_log_priors_vec = self.post_burn_in_log_priors_vec + self.cumulative_post_burn_in_log_posteriors_un_normed_vec = self.post_burn_in_log_posteriors_un_normed_vec + else: #This is basically elseif permutationIndex > 0: + self.cumulative_post_burn_in_samples = np.vstack((self.cumulative_post_burn_in_samples, self.post_burn_in_samples)) + self.cumulative_post_burn_in_log_priors_vec = np.vstack((self.cumulative_post_burn_in_log_priors_vec, self.post_burn_in_log_priors_vec)) + self.cumulative_post_burn_in_log_posteriors_un_normed_vec = np.vstack((self.cumulative_post_burn_in_log_posteriors_un_normed_vec, self.post_burn_in_log_posteriors_un_normed_vec)) + if searchType == 'doOptimizeLogP': + optimizationOutput = self.doOptimizeLogP(**passThroughArgs) + self.map_logP = optimizationOutput[1] + self.map_parameter_set = optimizationOutput[0] + thisResult = [self.map_parameter_set, None, None, None, None, None, None] + if searchType == 'doOptimizeNegLogP': + optimizationOutput = self.doOptimizeNegLogP(**passThroughArgs) + self.map_logP = -1.0*optimizationOutput[1] #need to times by negative 1 to convert negLogP into P. + self.map_parameter_set = optimizationOutput[0] + thisResult = [self.map_parameter_set, None, None, None, None, None, None] + if searchType == 'doOptimizeSSR': + optimizationOutput = self.doOptimizeSSR(**passThroughArgs) + self.map_logP = -1.0*optimizationOutput[1] #The SSR is a minimizing objective function, so we multiply by -1 to make it analagous to a log_P. + self.map_parameter_set = optimizationOutput[0] + thisResult = [self.map_parameter_set, None, None, None, None, None, None] + if (type(self.UserInput.parameter_estimation_settings['multistart_checkPointFrequency']) != type(None)) or (verbose == True): + timeAtThisPermutation = time.time() + timeOfThisPermutation = timeAtThisPermutation - timeAtLastPermutation + averageTimePerPermutation = (timeAtThisPermutation - timeAtPermutationSearchStart)/(permutationIndex+1) + numRemainingPermutations = numPermutations - permutationIndex+1 + timeAtLastPermutation = timeAtThisPermutation #Updating. + if self.map_logP > self.highest_logP: #This is the grid point in space with the highest value found so far and will be kept. + bestResultSoFar = thisResult #for mcmc: [self.map_parameter_set, self.mu_AP_parameter_set, self.stdap_parameter_set, self.evidence, self.info_gain, self.post_burn_in_samples, self.post_burn_in_log_posteriors_un_normed_vec] + self.highest_logP = np.copy(self.map_logP) + highest_logP_parameter_set = np.copy(self.map_parameter_set) + highest_MAP_initial_point_index = permutationIndex + highest_MAP_initial_point_parameters = permutation + allPermutationsResults.append(thisResult) + if self.UserInput.parameter_estimation_settings['exportAllSimulatedOutputs'] == True: + if (searchType == 'doEnsembleSliceSampling') or (searchType=='doMetropolisHastings') or (searchType == 'doEnsembleModifiedMHSampling'): #we need to run the map again, outside of mcmc, to populate + self.map_logP = self.getLogP(self.map_parameter_set) #this has an implied return of self.lastSimulatedResponses. + #else no extra work needs to be done since the last simulation was the map. + self.permutations_unfiltered_map_simulated_outputs.append(np.array(self.lastSimulatedResponses).flatten()) + self.permutations_MAP_logP_and_parameters_values.append(np.hstack((self.map_logP, self.map_parameter_set))) + if verbose == True: + print("Permutation", permutation, "number", permutationIndex+1, "out of", numPermutations, "timeOfThisPermutation", timeOfThisPermutation) + print("Permutation", permutationIndex+1, "averageTimePerPermutation", "%.2f" % round(averageTimePerPermutation,2), "estimated time remaining", "%.2f" % round( numRemainingPermutations*averageTimePerPermutation,2), "s" ) + print("Permutation", permutationIndex+1, "current logP", self.map_logP, "highest logP", self.highest_logP, "highest logP Parameter Set", highest_logP_parameter_set) + elif type(self.UserInput.parameter_estimation_settings['multistart_checkPointFrequency']) != type(None): #If verbose off but checkpoint frequency is on. + if (permutationIndex ==0 or ((permutationIndex+1)/self.UserInput.parameter_estimation_settings['multistart_checkPointFrequency']).is_integer()): + print("Permutation", permutation, "number", permutationIndex+1, "out of", numPermutations, "timeOfThisPermutation", timeOfThisPermutation) + print("Permutation", permutationIndex+1, "averageTimePerPermutation", "%.2f" % round(averageTimePerPermutation,2), "estimated time remaining", "%.2f" % round( numRemainingPermutations*averageTimePerPermutation,2), "s" ) + print("Permutation", permutationIndex+1, "current logP", self.map_logP, "highest logP", self.highest_logP) + ####START BLOCK RELATED TO PARALLEL SAMPLING#### + if (self.UserInput.parameter_estimation_settings['multistart_parallel_sampling']) == True: #This is the parallel sampling mpi case. #Consider later adding self.UserInput.parameter_estimation_settings['permutation_parallel_sampling']) + #We are going to export all of the relevant statistics for each permutation. + self.exportPostPermutationStatistics(searchType = searchType) #this is needed for **each** permutation if parallel sampling is being done. + self.checkIfAllParallelSimulationsDone("permutation"+"_map_logP_") #This checks if we are on the final process and also sets the global variable for it accordingly. + if PEUQSE.parallel_processing.finalProcess == False: + return self.map_logP #This is sortof like a sys.exit(), we are just ending the PermutationSearch function here if we are not on the finalProcess. + if PEUQSE.parallel_processing.finalProcess == True: + self.UserInput.parameter_estimation_settings['multistart_parallel_sampling'] = False ##We are turning off the parallel sampling variable because the parallel sampling is over now. The export log will become export extra things if we keep this on for the next step. + self.consolidate_parallel_sampling_data(parallelizationType="permutation", mpi_cached_files_prefix='permutation') #this parallelizationType means "keep only the best, don't average" + + ####END BLOCK RELATED TO PARALLEL SAMPLING#### + ####Doing some statistics across the full permutation set. TODO: Consider merging this into exportPostPermutationStatistics and calling that same function again, which is what I think the mcmc parallel sampling does. But the filenames are different, so some care would be needed if that is going to be done.#### + #TODO: export the allPermutationsResults to file at end of search in a nicer format. + #set the initial guess back to the center of the grid. + self.UserInput.InputParameterInitialGuess = centerPoint + #populate the map etc. with those of the best result. + self.map_logP = self.highest_logP + self.map_parameter_set = highest_logP_parameter_set + if (searchType == 'doEnsembleSliceSampling') or (searchType == 'doMetropolisHastings') or (searchType == 'doEnsembleModifiedMHSampling'): + #For MCMC, we can now calculate the post_burn_in statistics for the best sampling from the full samplings done. We don't want to lump all together because that would not be unbiased. + #Note that "thisResult" and thus "bestResultSoFar" has the form: [self.map_parameter_set, self.mu_AP_parameter_set, self.stdap_parameter_set, self.evidence, self.info_gain, self.post_burn_in_samples, self.post_burn_in_log_posteriors_un_normed_vec] + self.map_parameter_set, self.mu_AP_parameter_set, self.stdap_parameter_set, self.evidence, self.info_gain, self.post_burn_in_samples, self.post_burn_in_log_posteriors_un_normed_vec = bestResultSoFar + if calculatePostBurnInStatistics == True: + #self.post_burn_in_samples = bestResultSoFar[5] #Setting the global variable will allow calculating the info gain and priors also. + #self.post_burn_in_log_posteriors_un_normed_vec = bestResultSoFar[6] + self.calculatePostBurnInStatistics(calculate_post_burn_in_log_priors_vec = True) + self.exportPostBurnInStatistics() + #One could call calculatePostBurnInStatistics() if one wanted the cumulative from all results. But we don't actually want that. + #Below should not be used. These commented out lines are biased towards the center of the grid. + #self.post_burn_in_samples = cumulative_post_burn_in_samples + #self.post_burn_in_log_priors_vec = cumulative_post_burn_in_log_priors_vec + #self.post_burn_in_log_posteriors_un_normed_vec = cumulative_post_burn_in_log_posteriors_un_normed_vec + #implied return bestResultSoFar # [self.map_parameter_set, self.mu_AP_parameter_set, self.stdap_parameter_set, self.evidence, self.info_gain, self.post_burn_in_samples, self.post_burn_in_log_posteriors_un_normed_vec] + if (searchType == 'getLogP') or (searchType == 'doOptimizeNegLogP') or (searchType == 'doOptimizeSSR') or (searchType == 'doOptimizeLogP'): + if (searchType == 'doOptimizeNegLogP'): + self.permutation_and_doOptimizeNegLogP = True #turning on this flag for case of permutation_and_doOptimize. This is needed so that a warning can be put in the mcmc_log. + if (searchType == 'doOptimizeSSR'): + self.permutation_and_doOptimizeSSR = True + if (searchType == 'doOptimizeLogP'): + self.permutation_and_doOptimizeLogP = True + #if it's getLogP gridsearch, we are going to convert it to samples if requested. + if permutationsToSamples == True: + self.permutations_MAP_logP_and_parameters_values = np.vstack( self.permutations_MAP_logP_and_parameters_values) #Note that vstack actually requires a tuple with multiple elements as an argument. So this list or array like structure is being converted to a tuple of many elements and then being stacked. + #now stack with earlier results for multistart_continueSampling if needed. + if multistart_continueSampling == True: + self.permutations_MAP_logP_and_parameters_values = np.vstack((self.last_permutations_MAP_logP_and_parameters_values,self.permutations_MAP_logP_and_parameters_values)) + self.listOfPermutations = np.vstack((self.last_listOfPermutations, self.listOfPermutations)) + highest_MAP_initial_point_index = "Not provided with continueSampling." #TODO: take self.map_parameter_set from after calculatePostBurnIn Statistics highest_MAP_initial_point_index and search for the right row in listOfPermutations. + #First set the multistart_permutationsToSamples_threshold_filter_coefficient. We will take 10**-(thisnumber) later. + if str(self.UserInput.parameter_estimation_settings['multistart_permutationsToSamples_threshold_filter_coefficient']).lower() == 'auto': + multistart_permutationsToSamples_threshold_filter_coefficient = 2.0 + else: + multistart_permutationsToSamples_threshold_filter_coefficient = self.UserInput.parameter_estimation_settings['multistart_permutationsToSamples_threshold_filter_coefficient'] + try: + logP_values_and_samples = convertPermutationsToSamples(self.permutations_MAP_logP_and_parameters_values, maxLogP=float(self.map_logP), relativeFilteringThreshold = 10**(-1*multistart_permutationsToSamples_threshold_filter_coefficient)) + self.post_burn_in_log_posteriors_un_normed_vec = logP_values_and_samples[:,0] + self.post_burn_in_log_posteriors_un_normed_vec = np.array(nestedObjectsFunctions.makeAtLeast_2dNested(self.post_burn_in_log_posteriors_un_normed_vec)).transpose() + self.post_burn_in_samples = logP_values_and_samples[:,1:] + #need to populate post_burn_in_log_priors_vec this with an object, otherwise calculatePostBurnInStatistics will try to calculate all the priors. + self.post_burn_in_log_priors_vec = None + #Below is needed to avoid causing an error in the calculatePostBurnInStatistics since we don't have a real priors vec. + self.UserInput.parameter_estimation_settings['mcmc_threshold_filter_samples'] = False + self.calculatePostBurnInStatistics() + # create discrete_chains_post_burn_in_samples + self.discrete_chains_post_burn_in_samples = np.expand_dims(self.post_burn_in_samples, axis=1) + if self.UserInput.parameter_estimation_settings['convergence_diagnostics']: #Run convergence diagnostics if UserInput defines it as True + self.getConvergenceDiagnostics(self.discrete_chains_post_burn_in_samples) + except: + print("Could not convertPermutationsToSamples. This usually means there were no finite probability points sampled.") + permutationsToSamples = False #changing to false to prevent errors during exporting. + + #implied return bestResultSoFar# [self.map_parameter_set, self.map_logP] + #This has to be below the later parts so that permutationsToSamples can occur first. + if exportLog == True: + pass #Later will do something with allPermutationsResults variable. It has one element for each result (that is, each permutation). + with open(self.UserInput.directories['logs_and_csvs'] + "multistart_log_file.txt", 'w') as out_file: + out_file.write("centerPoint: " + str(centerPoint) + "\n") + if self.permutation_and_doOptimizeSSR == False:# In the normal case, we are not doing SSR. + out_file.write("highest_MAP_logP: " + str(self.map_logP) + "\n") + out_file.write("highest_MAP_logP_parameter_set: " + str(bestResultSoFar[0])+ "\n") + out_file.write("highest_MAP_initial_point_index: " + str(highest_MAP_initial_point_index)+ "\n") + out_file.write("highest_MAP_initial_point_parameters: " + str( highest_MAP_initial_point_parameters)+ "\n") + if (searchType == 'doEnsembleSliceSampling') or (searchType == 'doMetropolisHastings') or (searchType == 'doEnsembleModifiedMHSampling') or (permutationsToSamples == True): + if (searchType == 'doEnsembleSliceSampling') or (searchType == 'doMetropolisHastings') or (searchType == 'doEnsembleModifiedMHSampling'): + caveat = ' (for the above initial point) ' + elif permutationsToSamples == True: + caveat = '' + out_file.write("self.mu_AP_parameter_set : " + caveat + str( bestResultSoFar[1])+ "\n") + out_file.write("self.stdap_parameter_set : " + caveat + str( bestResultSoFar[2])+ "\n") + if (self.permutation_and_doOptimizeNegLogP == True) or (self.permutation_and_doOptimizeLogP == True): + out_file.write("\n WARNING: It appears this run used a doOptimize with multi-start. In this case, the MAP_logP and map_parameter_set are the optimum from the run. However, the mu_AP_parameter_set and stdap_parameter_set are not meaningful, since this was not an even weighted exploration of the posterior. \n") + if self.permutation_and_doOptimizeSSR == True: #special case where we are doing SSR. + out_file.write("Below, negSSR means the SSR times -1. This is the optimum from the run. \n") + out_file.write("highest_negSSR: " + str(self.map_logP) + "\n") + out_file.write("highest_negSSR_parameter_set: " + str(self.map_parameter_set)+ "\n") + out_file.write("highest_negSSR_initial_point_index: " + str(highest_MAP_initial_point_index)+ "\n") + out_file.write("highest_negSSR_initial_point_parameters: " + str( highest_MAP_initial_point_parameters)+ "\n") + caveat = ' (actually just an analogue) ' + out_file.write("self.mu_AP_parameter_set : " + caveat + str( self.mu_AP_parameter_set)+ "\n") + out_file.write("self.stdap_parameter_set : " + caveat + str( self.stdap_parameter_set)+ "\n") + if self.permutation_and_doOptimizeSSR == True: + out_file.write("\n WARNING: It appears this run used a doOptimize with multi-start. In this case, the highest_negSSR and highest_negSSR_parameter_set are at the optimum from the run. However, the mu_AP_parameter_set and stdap_parameter_set are not meaningful, since this was not an even weighted exploration of the posterior. However, the values have been reported that are analogous if the negSSR is treated as a logP, and the posterior graphs have been made accordingly. \n") + + + #do some exporting etc. This is at the end to avoid exporting every single time if parallelization is used. + np.savetxt(self.UserInput.directories['logs_and_csvs']+'multistart_initial_points_parameters_values'+'.csv', self.listOfPermutations, delimiter=",") + np.savetxt(self.UserInput.directories['logs_and_csvs']+'multistart_MAP_logP_and_parameters_values.csv',self.permutations_MAP_logP_and_parameters_values, delimiter=",") + pickleAnObject(self.permutations_MAP_logP_and_parameters_values, self.UserInput.directories['pickles']+file_name_prefix+'multistart_MAP_logP_and_parameters_values'+file_name_suffix) + if self.UserInput.parameter_estimation_settings['exportAllSimulatedOutputs'] == True: + np.savetxt(self.UserInput.directories['logs_and_csvs']+'multistart_unfiltered_map_simulated_outputs'+'.csv', self.permutations_unfiltered_map_simulated_outputs, delimiter=",") + print("Final map parameter results from PermutationSearch:", self.map_parameter_set, " \nFinal map logP:", self.map_logP, "more details available in multistart_log_file.txt") + return bestResultSoFar# [self.map_parameter_set, self.map_logP, etc.] + + #@CiteSoft.after_call_compile_consolidated_log() #This is from the CiteSoft module. + def doMultiStart(self, searchType='UserChoice', numStartPoints = 'UserChoice', relativeInitialDistributionSpread='UserChoice', exportLog = 'UserChoice', initialPointsDistributionType='UserChoice', passThroughArgs = 'UserChoice', calculatePostBurnInStatistics='UserChoice', keep_cumulative_post_burn_in_data = 'UserChoice', walkerInitialDistribution='UserChoice', centerPoint = None, gridsearchSamplingInterval = 'UserChoice', gridsearchSamplingRadii = 'UserChoice'): + #See doListOfPermutationsSearch for possible values of searchType variable + #This function is basically a wrapper that creates a list of initial points and then runs a 'check each permutation' search on that list. + #We set many of the arguments to have blank or zero values so that if they are not provided, the values will be taken from the UserInput choices. + if str(searchType) == 'UserChoice': + searchType = self.UserInput.parameter_estimation_settings['multistart_searchType'] + if str(initialPointsDistributionType) == 'UserChoice': + initialPointsDistributionType = self.UserInput.parameter_estimation_settings['multistart_initialPointsDistributionType'] + if str(numStartPoints) =='UserChoice': + numStartPoints = self.UserInput.parameter_estimation_settings['multistart_numStartPoints'] + if str(relativeInitialDistributionSpread) == 'UserChoice': + relativeInitialDistributionSpread = self.UserInput.parameter_estimation_settings['multistart_relativeInitialDistributionSpread'] + if str(gridsearchSamplingInterval) == 'UserChoice': + gridsearchSamplingInterval = self.UserInput.parameter_estimation_settings['multistart_gridsearchSamplingInterval'] + if str(gridsearchSamplingRadii) == 'UserChoice': + gridsearchSamplingRadii = self.UserInput.parameter_estimation_settings['multistart_gridsearchSamplingRadii'] + if str(exportLog) == 'UserChoice': + exportLog = self.UserInput.parameter_estimation_settings['multistart_exportLog'] + if str(passThroughArgs) == 'UserChoice': + passThroughArgs = self.UserInput.parameter_estimation_settings['multistart_passThroughArgs'] + if str(keep_cumulative_post_burn_in_data) == 'UserChoice': + keep_cumulative_post_burn_in_data = self.UserInput.parameter_estimation_settings['multistart_keep_cumulative_post_burn_in_data'] + if str(calculatePostBurnInStatistics) == 'UserChoice': + calculatePostBurnInStatistics = self.UserInput.parameter_estimation_settings['multistart_calculatePostBurnInStatistics'] + if numStartPoints == 0: #if it's still zero, we need to make it the default which is 3 times the number of active parameters. + numStartPoints = len(self.UserInput.InputParameterInitialGuess)*3 + if relativeInitialDistributionSpread == 0: #if it's still zero, we need to make it the default which is 0.866 + relativeInitialDistributionSpread = 0.866 #This choice is to be helpful for uniform distribution cases, as described in the user input. + if searchType == 'doGetLogP' or searchType == 'doSinglePoint': #Fixing a common input mistake. + searchType = 'getLogP' + #make the initial points list by mostly passing through arguments. + multiStartInitialPointsList = self.generateInitialPoints(numStartPoints=numStartPoints, relativeInitialDistributionSpread=relativeInitialDistributionSpread, initialPointsDistributionType=initialPointsDistributionType, centerPoint = centerPoint, gridsearchSamplingInterval = gridsearchSamplingInterval, gridsearchSamplingRadii = gridsearchSamplingRadii) + + #we normally only turn on permutationsToSamples if grid or uniform and if getLogP or doOptimizeNegLogP. + permutationsToSamples = False#initialize with default + if self.UserInput.parameter_estimation_settings['multistart_permutationsToSamples'] == True: + if (initialPointsDistributionType == 'grid') or (initialPointsDistributionType == 'uniform') or (initialPointsDistributionType == 'sobol') or (initialPointsDistributionType == 'astroidal') or (initialPointsDistributionType == 'shell'): + if (searchType == 'getLogP') or (searchType=='doOptimizeNegLogP') or (searchType=='doOptimizeLogP') or (searchType=='doOptimizeSSR'): + permutationsToSamples = True + + #Look for the best result (highest map_logP) from among these permutations. Maybe later should add optional argument to allow searching for highest mu_AP to find HPD. + bestResultSoFar = self.doListOfPermutationsSearch(listOfPermutations=multiStartInitialPointsList, searchType=searchType, exportLog=exportLog, walkerInitialDistribution=walkerInitialDistribution, passThroughArgs=passThroughArgs, calculatePostBurnInStatistics=calculatePostBurnInStatistics, keep_cumulative_post_burn_in_data=keep_cumulative_post_burn_in_data, centerPoint = centerPoint, permutationsToSamples=permutationsToSamples) + return bestResultSoFar + + #@CiteSoft.after_call_compile_consolidated_log() #This is from the CiteSoft module. + def doGridSearch(self, searchType='getLogP', exportLog = True, gridSamplingAbsoluteIntervalSize = [], gridSamplingNumOfIntervals = [], passThroughArgs = {}, calculatePostBurnInStatistics=True, keep_cumulative_post_burn_in_data = False, walkerInitialDistribution='UserChoice'): + print("Warning: You have called doGridSearch. This function is deprecated and is only retained for old examples. Please use doMultiStart with multistart_initialPointsDistributionType = 'grid' ") + # gridSamplingNumOfIntervals is the number of variations to check in units of variance for each parameter. Can be 0 if you don't want to vary a particular parameter in the grid search. + #calculatePostBurnInStatistics will store all the individual runs in memory and will then provide the samples of the best one. + #TODO: the upper part of the gridsearch may not be compatibile with reduced parameter space. Needs to be checked. + gridCenter = self.UserInput.InputParameterInitialGuess*1.0 #This may be a reduced parameter space. + gridPermutations, numPermutations = self.getGridPermutations(gridCenter, gridSamplingAbsoluteIntervalSize, gridSamplingNumOfIntervals) + bestResultSoFar = self.doListOfPermutationsSearch(gridPermutations, numPermutations = numPermutations, searchType=searchType, exportLog = exportLog, walkerInitialDistribution=walkerInitialDistribution, passThroughArgs=passThroughArgs, calculatePostBurnInStatistics=calculatePostBurnInStatistics, keep_cumulative_post_burn_in_data = keep_cumulative_post_burn_in_data, centerPoint = gridCenter) + return bestResultSoFar + + def checkIfAllParallelSimulationsDone(self, fileNameBase, fileNamePrefix='', fileNameSuffix=''): + import PEUQSE.parallel_processing + #PEUQSE.parallel_processing.currentProcessorNumber + numSimulations = PEUQSE.parallel_processing.numSimulations + import os + os.chdir(self.UserInput.directories['pickles']+"mpi_cached_files") + #now make a list of what we expect. + simulationsKey = np.ones(numSimulations) + working_dir=os.getcwd() + filesInDirectory=os.listdir(working_dir) + for simulationIndex in range(0,numSimulations): #For each simulation, we check if it's there and set the simulation key to 0 if it is done. + simulationNumberString = str(simulationIndex+1) + for name in filesInDirectory: + if fileNamePrefix+fileNameBase+simulationNumberString+fileNameSuffix+".pkl" in name: + simulationsKey[simulationIndex] = 0 + filesInDirectory.remove(name) #Removing so it won't be checked for again, to speed up next search. + if self.UserInput.directories['pickles'] == "./": + os.chdir("..") #change directory back regardless. + else: + os.chdir("../..") #change directory back regardless. + if np.sum(simulationsKey) == 0: + PEUQSE.parallel_processing.finalProcess = True + return True + else: #if simulationsKey is not zero, then we return False b/c not yet finsihed. + PEUQSE.parallel_processing.finalProcess = False + return False + + def consolidate_parallel_doe_data(self, parallelizationType='conditions'): + import PEUQSE.parallel_processing + #PEUQSE.parallel_processing.currentProcessorNumber + numSimulations = PEUQSE.parallel_processing.numSimulations + parModulationNumber = int(self.parModulationPermutationIndex + 1) + #We will check **only** for this parModulationNumber. That way, it this processor is the last to finish this parModulation, it will do the infoGainMatrix stacking. + if self.checkIfAllParallelSimulationsDone("conditionsPermutationAndInfoGain_mod"+str(parModulationNumber)+"_cond") == True: + if parallelizationType.lower() == 'conditions': + import os + os.chdir(self.UserInput.directories['pickles'] + "mpi_cached_files") + self.info_gain_matrix = [] #Initializing this as a blank list, it will be made into an array after the loop. + for simulationIndex in range(0,numSimulations): #For each simulation, we need to grab the results. + simulationNumberString = str(simulationIndex+1) + #Getting the data out. + current_conditionsPermutationAndInfoGain_filename = "conditionsPermutationAndInfoGain_mod"+str(parModulationNumber)+"_cond"+simulationNumberString + current_conditionsPermutationAndInfoGain_data = unpickleAnObject(current_conditionsPermutationAndInfoGain_filename) + #accumulating. + self.info_gain_matrix.append(current_conditionsPermutationAndInfoGain_data) + #Now we'll make this info_gain_matrix into an array and pickle it. It will be an implied return. + self.info_gain_matrix = np.array(self.info_gain_matrix) + current_parModulationInfoGainMatrix_filename = "parModulationInfoGainMatrix_mod"+str(parModulationNumber) + pickleAnObject(self.info_gain_matrix,current_parModulationInfoGainMatrix_filename) + #Change back to the regular directory since we are done. + if self.UserInput.directories['pickles'] == "./": + os.chdir("..") + else: + os.chdir("../..") + return True #so we know we're done. + else: + return False #this means we weren't done. + + def consolidate_parallel_doe_info_gain_matrices(self): + import PEUQSE.parallel_processing + numSimulations = PEUQSE.parallel_processing.numSimulations + import os + os.chdir(self.UserInput.directories['pickles'] + "mpi_cached_files") + info_gains_matrices_list = [] #Initializing this as a blank list, it will be made into an array after the loop. + for parModulationIndex in range(0,self.numParModulationPermutations): #For each simulation, we need to grab the results. + parModulationNumberString = str(parModulationIndex+1) + #Getting the data out. + current_parModulationInfoGainMatrix_filename = "parModulationInfoGainMatrix_mod"+parModulationNumberString + current_parModulationInfoGainMatrix_data = unpickleAnObject(current_parModulationInfoGainMatrix_filename) + #accumulating. + info_gains_matrices_list.append(current_parModulationInfoGainMatrix_data) + #nothing more needs to be done except making it into an array: self.info_gains_matrices_array is an implied return. + self.info_gains_matrices_array=np.array(info_gains_matrices_list) + if self.UserInput.directories['pickles'] == "./": + os.chdir("..") + else: + os.chdir("../..") + + + def consolidate_parallel_sampling_data(self, parallelizationType='equal', mpi_cached_files_prefix=''): + #parallelizationType='equal' means everything will get averaged together. parallelizationType='permutation' will be treated differently, keeps only the best. + #mpi_cached_files_prefix can be 'mcmc' or 'permutation' or '' and looks for a prefix before 'map_logP_6.pkl' where '6' would be the processor rank. + import PEUQSE.parallel_processing + #PEUQSE.parallel_processing.currentProcessorNumber + numSimulations = PEUQSE.parallel_processing.numSimulations + if self.checkIfAllParallelSimulationsDone(mpi_cached_files_prefix+"_map_logP_") == True: #FIXME: Need to make parallelization work even for non-mcmc + if parallelizationType.lower() == 'permutation': + searchType = self.permutation_searchType + import os #All of the below happens in the pickles directory + os.chdir(self.UserInput.directories['pickles']+"mpi_cached_files") + self.listOfPermutations = [] #just initializing. + self.permutations_MAP_logP_and_parameters_values = [] #just initializing. + for simulationIndex in range(0,numSimulations): #For each simulation, we need to grab the results. + simulationNumberString = str(simulationIndex+1) + #Get the data out. + + current_post_map_logP_filename = "permutation_map_logP_"+simulationNumberString + current_post_map_logP_data = unpickleAnObject(current_post_map_logP_filename) + self.map_logP = current_post_map_logP_data + + current_post_initial_parameters_filename = "permutation_initial_point_parameters_"+simulationNumberString + current_post_initial_parameters_data = unpickleAnObject(current_post_initial_parameters_filename) + self.UserInput.InputParameterInitialGuess = current_post_initial_parameters_data + + current_post_map_parameter_set_filename = "permutation_map_parameter_set_"+simulationNumberString + current_post_map_parameter_set_data = unpickleAnObject(current_post_map_parameter_set_filename) + self.map_parameter_set = current_post_map_parameter_set_data + + if (searchType == 'doEnsembleSliceSampling') or (searchType == 'doMetropolisHastings') or (searchType == 'doEnsembleModifiedMHSampling'): + current_post_burn_in_statistics_filename = "permutation_post_burn_in_statistics_"+simulationNumberString + current_post_burn_in_statistics_data = unpickleAnObject(current_post_burn_in_statistics_filename) + [self.map_parameter_set, self.mu_AP_parameter_set, self.stdap_parameter_set, self.evidence, self.info_gain, self.post_burn_in_samples, self.post_burn_in_log_posteriors_un_normed_vec] = current_post_burn_in_statistics_data + + #Still accumulating. + self.permutations_MAP_logP_and_parameters_values.append(np.hstack((self.map_logP, self.map_parameter_set))) + self.listOfPermutations.append(current_post_initial_parameters_data) + if simulationIndex == 0: #This is the first data set. + self.highest_logP = self.map_logP + self.highest_logP_parameter_set = self.map_parameter_set + if (searchType == 'doEnsembleSliceSampling') or (searchType == 'doMetropolisHastings') or (searchType == 'doEnsembleModifiedMHSampling'): + self.highest_logP_post_burn_in_samples = self.post_burn_in_samples + self.highest_logP_post_burn_in_log_priors_vec = self.post_burn_in_log_priors_vec + self.highest_logP_post_burn_in_log_posteriors_un_normed_vec = self.post_burn_in_log_posteriors_un_normed_vec + else: #This is basically elseif permutationIndex > 0: + if self.highest_logP < self.map_logP: + self.highest_logP = self.map_logP + self.highest_logP_parameter_set = self.map_parameter_set + if (searchType == 'doEnsembleSliceSampling') or (searchType == 'doMetropolisHastings') or (searchType == 'doEnsembleModifiedMHSampling'): + self.highest_logP_post_burn_in_samples = self.post_burn_in_samples + self.highest_logP_post_burn_in_log_priors_vec = self.post_burn_in_log_priors_vec + self.highest_logP_post_burn_in_log_posteriors_un_normed_vec = self.post_burn_in_log_posteriors_un_normed_vec + #After the loop is done, we want to keep the accumulated values and then do the regular final calculations. + if (searchType == 'doEnsembleSliceSampling') or (searchType == 'doMetropolisHastings') or (searchType == 'doEnsembleModifiedMHSampling'): #FIXME: These logic needs to be checked to make sure it is correct. + self.map_logP = max(self.post_burn_in_log_posteriors_un_normed_vec) + self.map_index = list(self.post_burn_in_log_posteriors_un_normed_vec).index(self.map_logP) #This does not have to be a unique answer, just one of them places which gives map_logP. + self.map_parameter_set = self.post_burn_in_samples[self.map_index] #This is the point with the highest probability in the + self.map_logP = self.highest_logP + self.map_parameter_set = self.highest_logP_parameter_set + if (searchType == 'doEnsembleSliceSampling') or (searchType == 'doMetropolisHastings') or (searchType == 'doEnsembleModifiedMHSampling'): + self.post_burn_in_samples = self.highest_logP_post_burn_in_samples + self.post_burn_in_log_priors_vec = self.highest_logP_post_burn_in_log_priors_vec + self.post_burn_in_log_posteriors_un_normed_vec = self.highest_logP_post_burn_in_log_posteriors_un_normed_vec + #Now go back to the earlier directory since the consolidation is done. + if self.UserInput.directories['pickles'] == "./": + os.chdir("..") + else: + os.chdir("../..") + if (searchType == 'doEnsembleSliceSampling') or (searchType == 'doMetropolisHastings') or (searchType == 'doEnsembleModifiedMHSampling'): + self.UserInput.request_mpi = False # we need to turn this off, because otherwise it will interfere with our attempts to calculate the post_burn_in statistics. + self.calculatePostBurnInStatistics(calculate_post_burn_in_log_priors_vec = True) #The argument is provided because otherwise there can be some bad priors if ESS was used. + self.exportPostBurnInStatistics() + self.UserInput.request_mpi = True #Set this back to true so that consolidating plots etc. doesn't get messed up. + elif parallelizationType.lower() == 'equal': + import os #All of the below happens in the pickles directory + os.chdir(self.UserInput.directories['pickles']+"./mpi_cached_files") + #These pointers are initialized before the below loop. Mostly in case mpi never actually happened since then after the loop these would be empty. + self.cumulative_post_burn_in_samples = self.post_burn_in_samples + self.cumulative_post_burn_in_log_priors_vec = self.post_burn_in_log_priors_vec + self.cumulative_post_burn_in_log_posteriors_un_normed_vec = self.post_burn_in_log_posteriors_un_normed_vec + for simulationIndex in range(0,numSimulations): #For each simulation, we need to grab the results. + simulationNumberString = str(simulationIndex+1) + #Get the dat aout. + current_post_burn_in_statistics_filename = "mcmc_post_burn_in_statistics_"+simulationNumberString + current_post_burn_in_statistics_data = unpickleAnObject(current_post_burn_in_statistics_filename) + #Populate the class variables. + [self.map_parameter_set, self.mu_AP_parameter_set, self.stdap_parameter_set, self.evidence, self.info_gain, self.post_burn_in_samples, self.post_burn_in_log_posteriors_un_normed_vec] = current_post_burn_in_statistics_data + #Still accumulating. + if simulationIndex == 0: #This is the first data set. + self.cumulative_post_burn_in_samples = self.post_burn_in_samples + self.cumulative_post_burn_in_log_priors_vec = self.post_burn_in_log_priors_vec + self.cumulative_post_burn_in_log_posteriors_un_normed_vec = self.post_burn_in_log_posteriors_un_normed_vec + else: #This is basically elseif permutationIndex > 0: + self.cumulative_post_burn_in_samples = np.vstack((self.cumulative_post_burn_in_samples, self.post_burn_in_samples)) + self.cumulative_post_burn_in_log_priors_vec = np.vstack((self.cumulative_post_burn_in_log_priors_vec, self.post_burn_in_log_priors_vec)) + self.cumulative_post_burn_in_log_posteriors_un_normed_vec = np.vstack((self.cumulative_post_burn_in_log_posteriors_un_normed_vec, self.post_burn_in_log_posteriors_un_normed_vec)) + #After the loop is done, we want to keep the accumulated values and then do the regular final calculations. + self.post_burn_in_samples = self.cumulative_post_burn_in_samples + self.post_burn_in_log_priors_vec = self.cumulative_post_burn_in_log_priors_vec + self.post_burn_in_log_posteriors_un_normed_vec = self.cumulative_post_burn_in_log_posteriors_un_normed_vec + self.UserInput.request_mpi = False # we need to turn this off, because otherwise it will interfere with our attempts to calculate the post_burn_in statistics. + self.UserInput.parameter_estimation_settings['mcmc_parallel_sampling'] = False # we need to turn this off, because otherwise it will interfere with our attempts to calculate the post_burn_in statistics. + if hasattr(self, "during_burn_in_samples"): #need to remove this so it doesn't get exported for the parallel case, since otherwise will export most recent one which is misleading. + delattr(self, "during_burn_in_samples") + if self.UserInput.directories['pickles'] == "./": + os.chdir("..") + else: + os.chdir("../..") + self.calculatePostBurnInStatistics(calculate_post_burn_in_log_priors_vec = True) #The argument is provided because otherwise there can be some bad priors if ESS was used. + self.exportPostBurnInStatistics() + self.UserInput.request_mpi = True #Set this back to true so that consolidating plots etc. doesn't get messed up. + + + + + + #The below function is a helper function that is used during doeInfoGainMatrix. However, it can certainly be used for other purposes. + def populateResponsesWithSyntheticData(self, parModulationPermutation): + #For each parameter Modulation Combination we are going to obtain a matrix of info_gains that is based on a grid of the independent_variables. + #First we need to make some synthetic data using parModulationPermutation for the discreteParameterVector + discreteParameterVector = parModulationPermutation + simulationFunction = self.UserInput.simulationFunction #Do NOT use self.UserInput.model['simulateByInputParametersOnlyFunction'] because that won't work with reduced parameter space requests. + simulationOutputProcessingFunction = self.UserInput.simulationOutputProcessingFunction #Do NOT use self.UserInput.model['simulationOutputProcessingFunction'] because that won't work with reduced parameter space requests. + simulationOutput =simulationFunction(discreteParameterVector) + if type(simulationOutput)==type(None): + return float('-inf'), None #This is intended for the case that the simulation fails. User can return "None" for the simulation output. Perhaps should be made better in future. + if np.array(simulationOutput).any()==float('nan'): + return float('-inf'), None #This is intended for the case that the simulation fails without returning "None". + if type(simulationOutputProcessingFunction) == type(None): + simulatedResponses = simulationOutput #Is this the log of the rate? If so, Why? + if type(simulationOutputProcessingFunction) != type(None): + simulatedResponses = simulationOutputProcessingFunction(simulationOutput) + simulatedResponses = nestedObjectsFunctions.makeAtLeast_2dNested(simulatedResponses) + #need to check if there are any 'responses_simulation_uncertainties'. #TODO: This isn't really implemented yet. + if type(self.UserInput.responses_simulation_uncertainties) == type(None): #if it's a None type, we keep it as a None type + responses_simulation_uncertainties = None + else: #Else we get it based on the the discreteParameterVector + responses_simulation_uncertainties = self.get_responses_simulation_uncertainties(discreteParameterVector) + + synthetic_data = simulatedResponses + synthetic_data_uncertainties = responses_simulation_uncertainties + #We need to populate the "observed" responses in UserInput with the synthetic data. + self.UserInput.responses['responses_observed'] = simulatedResponses + self.UserInput.responses['responses_observed_uncertainties'] = responses_simulation_uncertainties + #Now need to do something unusual: Need to call the __init__ function again so that the arrays get reshaped as needed etc. + self.__init__(self.UserInput) + + #This function requires first populating the doe_settings dictionary in UserInput in order to know which conditions to explore. + software_name = "PEUQSE Bayesian Design of Experiments" + software_version = "1.0.2" + software_unique_id = "https://doi.org/10.1002/cctc.202000976" + software_kwargs = {"version": software_version, "author": ["Eric A. Walker", "Kishore Ravisankar", "Aditya Savara"], "doi": "https://doi.org/10.1002/cctc.202000976", "cite": "Eric Alan Walker, Kishore Ravisankar, Aditya Savara. PEUQSE Intro 2: Harnessing Uncertainties from Data Sets, Bayesian Design of Experiments in Chemical Kinetics. ChemCatChem. Accepted. doi:10.1002/cctc.202000976"} + #@CiteSoft.after_call_compile_consolidated_log() #This is from the CiteSoft module. + @CiteSoft.function_call_cite(unique_id=software_unique_id, software_name=software_name, **software_kwargs) + def doeGetInfoGainMatrix(self, parameterPermutation, searchType='doMetropolisHastings'):#Note: There is an implied argument of info_gains_matrices_array_format being 'xyz' or 'meshgrid' + #At present, we *must* provide a parameterPermutation because right now the only way to get an InfoGainMatrix is with synthetic data assuming a particular parameterPermutation as the "real" or "actual" parameterPermutation. + doe_settings = self.UserInput.doe_settings + self.middle_of_doe_flag = True #This is a work around that is needed because right now the synthetic data creation has an __init__ call which is going to try to modify the independent variables back to their original values if we don't do this. + self.UserInput.parameter_estimation_settings['mcmc_continueSampling'] = False #As of Oct 2020, mcmc_continueSampling is not compatible with design of experiments (doe) feature. + self.info_gain_matrix = [] #Right now, if using KL_divergence, each item in here is a single array. It is a sum across all parameters. + if self.UserInput.doe_settings['info_gains_matrices_multiple_parameters'] == 'each': + info_gain_matrices_each_parameter = [] #make a matrix ready to copy info_gain_matrix. + #need to make a list of lists (or similar) to fill it with the individual matrices necessary. + numParameters = len(self.UserInput.InputParametersPriorValuesUncertainties) + for parameterIndex in range(0,numParameters):#looping across number of parameters... + info_gain_matrices_each_parameter.append([]) #These are empty lists create to indices and initialize each parameter's info_gain_matrix. They will be appended to later. + self.info_gain_matrices_each_parameter = info_gain_matrices_each_parameter #Need to initialize this since it's nested so can't be initialized in a loop later. + if self.UserInput.doe_settings['info_gains_matrices_array_format'] == 'xyz': + self.info_gains_matrices_array_format = 'xyz' + #For the IndependentVariables the grid info must be defined ahead of time. On the fly conditions grid means it's generated again fresh for each parameter combination. (We are doing it this way out of convenience during the first programming of this feature). + if doe_settings['on_the_fly_conditions_grids'] == True: + conditionsGridPermutations, numPermutations = self.getGridPermutations(doe_settings['independent_variable_grid_center'], doe_settings['independent_variable_grid_interval_size'], doe_settings['independent_variable_grid_num_intervals']) + #Here is the loop across conditions. + for conditionsPermutationIndex,conditionsPermutation in enumerate(conditionsGridPermutations): + #####Begin PEUQSE Parallel Processing During Loop Block#### + if (self.UserInput.doe_settings['parallel_conditions_exploration'])== True: + #We will only execute the sampling the permutationIndex matches the processor rank. + #Additionally, if the rank is 0 and the simulation got here, it will be assumed the person is running this just to find the number of Permutations, so that will be spit out and the simulation ended. + import PEUQSE.parallel_processing + if PEUQSE.parallel_processing.currentProcessorNumber == 0: + print("For the user input settings provided, the number of Permutations+1 will be", numPermutations+1, ". Please use mpiexec or mpirun with this number for N. If you are not expecting to see this message, change your UserInput choices. You have chosen parallel processing for gridsearch and have run PEUQSE without mpi, which is a procedure to retrieve the number of processor ranks to use for parallelized gridsearch. A typical syntax now would be: mpiexec -n ", numPermutations+1, " python runfile_for_your_analysis.py" ) + sys.exit() + elif PEUQSE.parallel_processing.currentProcessorNumber != conditionsPermutationIndex+1: + continue #This means the permutation index does not match the processor rank so nothing should be executed. + #elif PEUQSE.parallel_processing.currentProcessorNumber == permutationIndex+1: + # pass #This is the "normal" case and is implied, so is commented out. + #####End PEUQSE Parallel Processing During Loop Block#### + #It is absolutely critical that we *do not* use syntax like self.UserInput.responses['independent_variables_values'] = xxxx + #Because that would move where the pointer is going to. We need to instead populate the individual values in the simulation module's namespace. + #This population Must occur here. It has to be after the indpendent variables have changed, before synthetic data is made, and before the MCMC is performed. + self.UserInput.model['populateIndependentVariablesFunction'](conditionsPermutation) + self.populateResponsesWithSyntheticData(parameterPermutation) + if searchType=='doMetropolisHastings': + [map_parameter_set, muap_parameter_set, stdap_parameter_set, evidence, info_gain, samples, logP] = self.doMetropolisHastings() + if searchType=='doEnsembleSliceSampling': + [map_parameter_set, muap_parameter_set, stdap_parameter_set, evidence, info_gain, samples, logP] = self.doEnsembleSliceSampling() + if searchType == 'doEnsembleModifiedMHSampling': + [map_parameter_set, muap_parameter_set, stdap_parameter_set, evidence, info_gain, samples, logP] = self.doEnsembleModifiedMHSampling() + conditionsPermutation = np.array(conditionsPermutation) #we're going to make this an array before adding to the info_gain matrix. + conditionsPermutationAndInfoGain = np.hstack((conditionsPermutation, info_gain)) + self.info_gain_matrix.append(conditionsPermutationAndInfoGain) + if (self.UserInput.doe_settings['parallel_conditions_exploration'])== True: + self.exportSingleConditionInfoGainMatrix(self.parameterPermutationNumber, conditionsPermutationAndInfoGain, conditionsPermutationIndex) + if self.UserInput.doe_settings['info_gains_matrices_multiple_parameters'] == 'each': #copy the above lines for the sum. + for parameterIndex in range(0,numParameters):#looping across number of parameters... + conditionsPermutationAndInfoGain = np.hstack((conditionsPermutation, np.array(self.info_gain_each_parameter[parameterIndex]))) #Need to pull the info gain matrix from the nested objected named info_gain_each_parameter + #Below mimics the line above which reads self.info_gain_matrix.append(conditionsPermutationAndInfoGain) + info_gain_matrices_each_parameter[parameterIndex].append(conditionsPermutationAndInfoGain) + self.info_gain_matrix = np.array(self.info_gain_matrix) #this is an implied return in addition to the real return. + if self.UserInput.doe_settings['parallel_conditions_exploration'] == True: #We will overwrite self.info_gain_matrix with a consolidated one if needed. + self.consolidate_parallel_doe_data(parallelizationType='conditions') + if self.UserInput.doe_settings['info_gains_matrices_multiple_parameters'] == 'each': #copy the above line for the sum. + for parameterIndex in range(0,numParameters):#looping across number of parameters... + self.info_gain_matrices_each_parameter[parameterIndex]= np.array(info_gain_matrices_each_parameter[parameterIndex]) + self.middle_of_doe_flag = False #Set this back to false once info gain matrix is ready. + return np.array(self.info_gain_matrix) + if self.UserInput.doe_settings['info_gains_matrices_array_format'] == 'meshgrid': + self.info_gains_matrices_array_format = 'meshgrid' + if len(doe_settings['independent_variable_grid_center']) !=2: + print("CURRENTLY THE INFOGAIN MESHGRID OPTION IS ONLY SUPPORTED FOR TWO INDEPENDENT VARIABLES. Use doe_settings['independent_variable_grid_center'] = 'xyz' and run again.") + sys.exit() + #STEP 1 is just to append each info_gain matrix to info_gain_matrix, and step 2 is + #For loop to generate info_gains_matrix. + #For the IndependentVariables the grid info must be defined ahead of time. On the fly conditions grid means it's generated again fresh for each parameter combination. (We are doing it this way out of convenience during the first programming of this feature). + if doe_settings['on_the_fly_conditions_grids'] == True: + independentVariable1CentralValue = doe_settings['independent_variable_grid_center'][0] + independentVariable2CentralValue = doe_settings['independent_variable_grid_center'][1] + independentVariable1UpperValue = independentVariable1CentralValue + doe_settings['independent_variable_grid_interval_size'][0]*doe_settings['independent_variable_grid_num_intervals'][0] + independentVariable1LowerValue = independentVariable1CentralValue - doe_settings['independent_variable_grid_interval_size'][0]*doe_settings['independent_variable_grid_num_intervals'][0] + independentVariable2UpperValue = independentVariable2CentralValue + doe_settings['independent_variable_grid_interval_size'][1]*doe_settings['independent_variable_grid_num_intervals'][1] + independentVariable2LowerValue = independentVariable2CentralValue - doe_settings['independent_variable_grid_interval_size'][1]*doe_settings['independent_variable_grid_num_intervals'][1] + independentVariable1ValuesArray = np.linspace(independentVariable1LowerValue,independentVariable1UpperValue,doe_settings['independent_variable_grid_num_intervals'][0]*2+1) + independentVariable2ValuesArray = np.linspace(independentVariable2LowerValue,independentVariable2UpperValue,doe_settings['independent_variable_grid_num_intervals'][1]*2+1) + self.meshGrid_independentVariable1ValuesArray = independentVariable1ValuesArray #This is sortof an implied return. + self.meshGrid_independentVariable2ValuesArray = independentVariable2ValuesArray #This is sortof an implied return. + #Here is the loop across conditions. + doSimulation = True #This is a temporary (short-lived) variable being made for parallel processing purposes. + conditionsPermutationIndex = 0 + #We will not be using the function "self.getGridPermutations" for the loops because the meshgrid needs a different loop format. + for indValue2 in independentVariable2ValuesArray: #We know from experience that the outer loop should be over the YY variable. + for indValue1 in independentVariable1ValuesArray: #We know from experience that the inner loop should be over the XX variable. + #It is absolutely critical that we *do not* use syntax like self.UserInput.responses['independent_variables_values'] = xxxx + #Because that would move where the pointer is going to. We need to instead populate the individual values in the simulation module's namespace. + #This population Must occur here. It has to be after the indpendent variables have changed, before synthetic data is made, and before the MCMC is performed. + #####Begin PEUQSE Parallel Processing During Loop Block -- This block is custom for meshgrid since the loop is different.#### + if (self.UserInput.doe_settings['parallel_conditions_exploration'])== True: + numPermutations = len(independentVariable2ValuesArray)*len(independentVariable1ValuesArray) + permutationIndex = conditionsPermutationIndex + #We will only execute the sampling the permutationIndex matches the processor rank. + #Additionally, if the rank is 0 and the simulation got here, it will be assumed the person is running this just to find the number of Permutations, so that will be spit out and the simulation ended. + import PEUQSE.parallel_processing + if PEUQSE.parallel_processing.currentProcessorNumber == 0: + print("For the user input settings provided, the number of Permutations+1 will be", numPermutations+1, ". Please use mpiexec or mpirun with this number for N. If you are not expecting to see this message, change your UserInput choices. You have chosen parallel processing for gridsearch and have run PEUQSE without mpi, which is a procedure to retrieve the number of processor ranks to use for parallelized gridsearch. A typical syntax now would be: mpiexec -n ", numPermutations+1, " python runfile_for_your_analysis.py" ) + sys.exit() + elif PEUQSE.parallel_processing.currentProcessorNumber != conditionsPermutationIndex+1: + doSimulation = False #This means the permutation index does not match the processor rank so nothing should be executed. + elif PEUQSE.parallel_processing.currentProcessorNumber == permutationIndex+1: + doSimulation = True #This is the "normal" case. + #####End PEUQSE Parallel Processing During Loop Block#### + if doSimulation == True: + self.UserInput.model['populateIndependentVariablesFunction']([indValue1,indValue2]) + self.populateResponsesWithSyntheticData(parameterPermutation) + if searchType=='doMetropolisHastings': + [map_parameter_set, muap_parameter_set, stdap_parameter_set, evidence, info_gain, samples, logP] = self.doMetropolisHastings() + if searchType=='doEnsembleSliceSampling': + [map_parameter_set, muap_parameter_set, stdap_parameter_set, evidence, info_gain, samples, logP] = self.doEnsembleSliceSampling() + if searchType=='doEnsembleModifiedMHSampling': + [map_parameter_set, muap_parameter_set, stdap_parameter_set, evidence, info_gain, samples, logP] = self.doEnsembleModifiedMHSampling() + conditionsPermutation = np.array([indValue1,indValue2]) + conditionsPermutationAndInfoGain = np.hstack((conditionsPermutation, info_gain)) + self.info_gain_matrix.append(conditionsPermutationAndInfoGain) #NOTE that the structure *includes* the Permutations. + if (self.UserInput.doe_settings['parallel_conditions_exploration'])== True: + self.exportSingleConditionInfoGainMatrix(self.parModulationPermutationIndex+1, conditionsPermutationAndInfoGain, conditionsPermutationIndex) + if self.UserInput.doe_settings['info_gains_matrices_multiple_parameters'] == 'each': #copy the above lines for the sum. + for parameterIndex in range(0,numParameters):#looping across number of parameters... + conditionsPermutationAndInfoGain = np.hstack((conditionsPermutation, np.array(self.info_gain_each_parameter[parameterIndex]))) #Need to pull the info gain matrix from the nested objected named info_gain_each_parameter + #Below mimics the line above which reads self.info_gain_matrix.append(conditionsPermutationAndInfoGain) + info_gain_matrices_each_parameter[parameterIndex].append(conditionsPermutationAndInfoGain) + conditionsPermutationIndex = conditionsPermutationIndex + 1 #This variable was added for and is used in parallelization. + self.info_gain_matrix = np.array(self.info_gain_matrix) #this is an implied return in addition to the real return. + if self.UserInput.doe_settings['parallel_conditions_exploration'] == True: #We will overwrite self.info_gain_matrix with a consolidated one if needed. + self.consolidate_parallel_doe_data(parallelizationType='conditions') + if self.UserInput.doe_settings['info_gains_matrices_multiple_parameters'] == 'each': #copy the above line for the sum. + for parameterIndex in range(0,numParameters):#looping across number of parameters... + self.info_gain_matrices_each_parameter[parameterIndex]= np.array(info_gain_matrices_each_parameter[parameterIndex]) + self.middle_of_doe_flag = False #Set this back to false once info gain matrix is ready. + return np.array(self.info_gain_matrix) + + #This function requires population of the UserInput doe_settings dictionary. It automatically scans many parameter modulation Permutations. + def doeParameterModulationPermutationsScanner(self, searchType='doMetropolisHastings'): + import PEUQSE.CombinationGeneratorModule as CombinationGeneratorModule + doe_settings = self.UserInput.doe_settings + #For the parameters, we are able to use a default one standard deviation grid if gridSamplingAbsoluteIntervalSize is a blank list. + #doe_settings['parameter_modulation_grid_center'] #We do NOT create such a variable in user input. The initial guess variable is used, which is the center of the prior if no guess has been provided. + parModulationGridCenterVector = self.UserInput.InputParameterInitialGuess + numParameters = len(parModulationGridCenterVector) + parModulationGridIntervalSizeAbsolute = doe_settings['parameter_modulation_grid_interval_size']*self.UserInput.std_prior + parModulationGridPermutations, numPermutations = self.getGridPermutations(parModulationGridCenterVector,parModulationGridIntervalSizeAbsolute, doe_settings['parameter_modulation_grid_num_intervals']) + self.numParModulationPermutations = numPermutations + parModulationGridPermutations= np.array(parModulationGridPermutations) + + if len(self.UserInput.parameterNamesList) == len(self.UserInput.InputParametersPriorValuesUncertainties): #then we assume variable names have been provided. + headerString = self.UserInput.stringOfParameterNames #This variable is a string, no brackets. + else: #else no variable names have been provided. + headerString = '' + np.savetxt(self.UserInput.directories['logs_and_csvs']+"Info_gain__parModulationGridPermutations.csv", parModulationGridPermutations, delimiter=",", encoding =None, header=headerString) + #We will get a separate info gain matrix for each parModulationPermutation, we'll store that in this variable. + info_gains_matrices_list = [] + if self.UserInput.doe_settings['info_gains_matrices_multiple_parameters'] == 'each': #just making analogous structure which exists for sum. + info_gains_matrices_lists_one_for_each_parameter = [] #make a matrix ready to copy info_gains_matrices_list. + #need to make a list of lists (or similar) to fill it with the individual matrices necessary. + numParameters = len(self.UserInput.InputParametersPriorValuesUncertainties) + for parameterIndex in range(0,numParameters):#looping across number of parameters... + info_gains_matrices_lists_one_for_each_parameter.append([]) #These are empty lists create to indices and initialize each parameter's info_gain_matrix. They will be appended to later. + for parModulationPermutationIndex,parModulationPermutation in enumerate(parModulationGridPermutations): + #####Begin PEUQSE Parallel Processing During Loop Block#### + if (self.UserInput.doe_settings['parallel_parameter_modulation'])== True: + #We will only execute the sampling the permutationIndex matches the processor rank. + #Additionally, if the rank is 0 and the simulation got here, it will be assumed the person is running this just to find the number of Permutations, so that will be spit out and the simulation ended. + import PEUQSE.parallel_processing + if PEUQSE.parallel_processing.currentProcessorNumber == 0: + print("For the user input settings provided, the number of Permutations+1 will be", numPermutations+1, ". Please use mpiexec or mpirun with this number for N. If you are not expecting to see this message, change your UserInput choices. You have chosen parallel processing for gridsearch and have run PEUQSE without mpi, which is a procedure to retrieve the number of processor ranks to use for parallelized gridsearch. A typical syntax now would be: mpiexec -n ", numPermutations+1, " python runfile_for_your_analysis.py" ) + sys.exit() + elif PEUQSE.parallel_processing.currentProcessorNumber != parModulationPermutationIndex+1: + continue #This means the permutation index does not match the processor rank so nothing should be executed. + #elif PEUQSE.parallel_processing.currentProcessorNumber == permutationIndex+1: + # pass #This is the "normal" case and is implied, so is commented out. + #####End PEUQSE Parallel Processing During Loop Block#### + #We will get separate info gain matrix for each parameter modulation combination. + self.parModulationPermutationIndex = parModulationPermutationIndex #This variable is being created for parallel processing of conditions. + info_gain_matrix = self.doeGetInfoGainMatrix(parModulationPermutation, searchType=searchType) + #Append the info gain matrix obtainend (unless doing a parallel_conditions_exploration). + if self.UserInput.doe_settings['parallel_conditions_exploration'] == False: + info_gains_matrices_list.append(np.array(info_gain_matrix)) + if self.UserInput.doe_settings['info_gains_matrices_multiple_parameters'] == 'each': #copy the above lines which were for the sum. + for parameterIndex in range(0,numParameters):#looping across number of parameters... + info_gains_matrices_lists_one_for_each_parameter[parameterIndex].append(np.array(self.info_gain_matrices_each_parameter[parameterIndex])) + self.info_gains_matrices_array=np.array(info_gains_matrices_list) #This is an implied return, but we will also return it. + if self.UserInput.doe_settings['info_gains_matrices_multiple_parameters'] == 'each': #copy the above line for the sum. + self.info_gains_matrices_arrays_one_for_each_parameter = list(self.UserInput.InputParametersPriorValuesUncertainties) #initializing it with right length, then will fill it. + for parameterIndex in range(0,numParameters):#looping across number of parameters... + self.info_gains_matrices_arrays_one_for_each_parameter[parameterIndex]= np.array(info_gains_matrices_lists_one_for_each_parameter[parameterIndex]) #make each an array like above. + self.info_gains_matrices_arrays_one_for_each_parameter = np.array(self.info_gains_matrices_arrays_one_for_each_parameter) + #TODO: write the self.info_gains_matrices_array individual elements to file. + #for modulationIndex in range(len(self.info_gains_matrices_array)): + #self.info_gains_matrices_array[modulationIndex] #Write this to file. This is 'xyz' format regardless of whether self.info_gains_matrices_array_format == 'xyz' or =='meshgrid' is used. + ####Start block for parallel_conditions_exploration ##### + if self.UserInput.doe_settings['parallel_conditions_exploration'] == True: + #if we're doing a parallel_conditions_exploration, we need to check if we are on the last + #condition exploration of the last parameter modulation. [#things could be done differently, but this works.] + if self.parModulationPermutationIndex+1 != self.numParModulationPermutations: + return #this means we do nothing because it's not the final parModulation. + elif self.parModulationPermutationIndex+1 == self.numParModulationPermutations: + import PEUQSE.parallel_processing #Even if it's the final parModulation, need to check if it's final combination. + if PEUQSE.parallel_processing.finalProcess == False: #not final combination. + return + elif PEUQSE.parallel_processing.finalProcess == True: + #If final parModulation and final combination, we populate self.info_gain_matrices_array + self.consolidate_parallel_doe_info_gain_matrices() #And now we continue on with the plotting. + ####End block for parallel_conditions_exploration ##### + return self.info_gains_matrices_array + + @CiteSoft.after_call_compile_consolidated_log(compile_checkpoints=True) #This is from the CiteSoft module. + def createInfoGainPlots(self, parameterIndices=[], plot_suffix = ''): + #parameterIndices should be a list of parameters if the user only wants as subset of parameters. The default, a blank list, will do all if the setting for doing each is on. + #first make the modulation plots for the Sum. + self.createInfoGainModulationPlots(parameterIndex=None, plot_suffix = plot_suffix) + #now, by default, loop through and make plots fore each parameterIndex if the setting for that is on. + if self.UserInput.doe_settings['info_gains_matrices_multiple_parameters'] == 'each': + if len(parameterIndices) > 0: #if the user has provided a list of parameters, we will only make the plots for those parameters. + for parameterIndex in parameterIndices: + plotSuffixString = "_par_" + str(parameterIndex) + plot_suffix + self.createInfoGainModulationPlots(parameterIndex=parameterIndex, plot_suffix = plotSuffixString) + if len(parameterIndices) == 0: #This is the default case, and we'll make plots for each parameter. + numParameters = len(self.UserInput.InputParametersPriorValuesUncertainties) + for parameterIndex in range(0,numParameters): + plotSuffixString = "_par_" + str(parameterIndex) + plot_suffix + self.createInfoGainModulationPlots(parameterIndex=parameterIndex, plot_suffix = plotSuffixString) + + def createInfoGainModulationPlots(self, parameterIndex=None, plot_suffix = ''): + #self.info_gains_matrices_array is an implied argument that usually gets populated in doeParameterModulationPermutationsScanner (when that is used). + #Right now, when using KL_divergence and design of experiments there is an option of UserInput.doe_settings['info_gains_matrices_multiple_parameters'] = 'each' or 'sum' + #the default is sum. But when it is 'each', then it is possible to plot separate info_gains for each parameter. + #Note: the below code *does not* add a suffix to inidicate when a parameter Index has been fed. + #TODO: The variable "parameterInfoGainIndex" is made with the presumption that later we'll have to add another index when we have info_gains for each parameter. In that case it will become like this: + #xValues = self.info_gains_matrices_array[modulationIndex][:,0] will become xValues = self.info_gains_matrices_array[modulationIndex][parameterInfoGainIndex][:,0] + #self.meshGrid_independentVariable1ValuesArray will remain unchanged. + + import PEUQSE.plotting_functions as plotting_functions + setMatPlotLibAgg(self.UserInput.plotting_ouput_settings['setMatPlotLibAgg']) + #assess whether the function is called for the overall info_gain matrices or for a particular parameter. + if parameterIndex==None: #this means we're using the regular info gain, not the parameter specific case. + #Normally, the info gain plots should be stored in self.info_gains_matrices_array. + #However, in case it does not exist or there are none in there, then we assume the person is trying to make just one. So we take the most recent info gain matrix. + try: + if len(self.info_gains_matrices_array) >= 0: #normally, it should exist and be populated. + pass + if len(self.info_gains_matrices_array) == 0:#in case it exists but is not populated, we'll populated. + self.info_gains_matrices_array = np.array([self.info_gain_matrix]) + except: #if it does not yet exist, we create it and populate it. + self.info_gains_matrices_array = np.array([self.info_gain_matrix]) + local_info_gains_matrices_array = self.info_gains_matrices_array #We have to switch to a local variable since that way below we can use the local variable whether we're doing the 'global' info_gains_matrices array or a parameter specific one. + if parameterIndex!=None: + if hasattr(self, 'info_gains_matrices_arrays_one_for_each_parameter'): #this structure will only exist if doeParameterModulationPermutationsScanner has been called. + local_info_gains_matrices_array = np.array(self.info_gains_matrices_arrays_one_for_each_parameter)[:][parameterIndex] #each "row" is a modulation, and within that are structures for each parameter. This is further described in the document InfoGainMatrixObjectsStructure.docx + else: #if a modulation has not been run, and simply doeGetInfoGainMatrix was done, then the larger structure might not exist and we have to just pull out by the parameter index and then make it nested as for a regular info_gain sum. + local_info_gains_matrices_array = np.array([self.info_gain_matrices_each_parameter[parameterIndex]]) + #At present, plots are only made if the number of independent variables is 2. + if len(self.UserInput.doe_settings['independent_variable_grid_center']) == 2: + if self.info_gains_matrices_array_format == 'xyz': + for modulationIndex in range(len(local_info_gains_matrices_array)): + xValues = local_info_gains_matrices_array[modulationIndex][:,0] + yValues = local_info_gains_matrices_array[modulationIndex][:,1] + zValues = local_info_gains_matrices_array[modulationIndex][:,2] + if self.UserInput.doe_settings['parallel_parameter_modulation'] == False: #This is the normal case. + plotting_functions.makeTrisurfacePlot(xValues, yValues, zValues, figure_name = "Info_gain_TrisurfacePlot_modulation_"+str(modulationIndex+1)+plot_suffix, directory = self.UserInput.directories['graphs']) + if self.UserInput.doe_settings['parallel_parameter_modulation'] == True: #This is the parallel case. In this case, the actual modulationIndex to attach to the filename is given by the processor rank. + import PEUQSE.parallel_processing + plotting_functions.makeTrisurfacePlot(xValues, yValues, zValues, figure_name = "Info_gain_TrisurfacePlot_modulation_"+str(PEUQSE.parallel_processing.currentProcessorNumber)+plot_suffix, directory = self.UserInput.directories['graphs']) + if self.info_gains_matrices_array_format == 'meshgrid': + for modulationIndex in range(len(local_info_gains_matrices_array)): + #Now need to get things prepared for the meshgrid. + #NOTE: we do not pull XX and YY from local_info_gains_matrices_array because that is 1D and these are 2D arrays made a different way. + #xValues = local_info_gains_matrices_array[modulationIndex][:,0] #Still correct, but not being used. + #yValues = local_info_gains_matrices_array[modulationIndex][:,1] #Still correct, but not being used. + XX, YY = np.meshgrid(self.meshGrid_independentVariable1ValuesArray, self.meshGrid_independentVariable2ValuesArray) + zValues = local_info_gains_matrices_array[modulationIndex][:,2] + ZZ = zValues.reshape(XX.shape) #We know from experience to reshape this way. + if self.UserInput.doe_settings['parallel_parameter_modulation'] == False: #This is the normal case. + plotting_functions.makeMeshGridSurfacePlot(XX, YY, ZZ, figure_name = "Info_gain_Meshgrid_modulation_"+str(modulationIndex+1)+plot_suffix, directory = self.UserInput.directories['graphs']) + if self.UserInput.doe_settings['parallel_parameter_modulation'] == True: #This is the parallel case. In this case, the actual modulationIndex to attach to the filename is given by the processor rank. + import PEUQSE.parallel_processing + plotting_functions.makeMeshGridSurfacePlot(XX, YY, ZZ, figure_name = "Info_gain_Meshgrid_modulation_"+str(PEUQSE.parallel_processing.currentProcessorNumber)+plot_suffix, directory = self.UserInput.directories['graphs']) + else: + print("At present, createInfoGainPlots and createInfoGainModulationPlots only create plots when the length of independent_variable_grid_center is 2. We don't currently support creation of other dimensional plots. The infogain data is being exported into the file _____.csv") + def getLogP(self, proposal_sample): #The proposal sample is specific parameter vector. + log_prior_proposal = self.getLogPrior(proposal_sample) + if log_prior_proposal == float('-inf'): #due to the bounds check or other reasons, log_prior_proposal could be '-inf'. + return float('-inf') + #else continue as normal. + log_likelihood_proposal, simulationOutput_proposal = self.getLogLikelihood(proposal_sample) + logP = log_likelihood_proposal+log_prior_proposal #Of the Metropolis-Hastings accept/reject ratio + return logP + + def getNegLogP(self, proposal_sample): #The proposal sample is specific parameter vector. We are using negative of log P because scipy optimize doesn't do maximizing. It's recommended minimize the negative in this situation. + neg_log_postererior = -1*self.getLogP(proposal_sample) + return neg_log_postererior + + #this is just a wrapper around doOptimizeNegLogP + def doOptimizeLogP(self, simulationFunctionAdditionalArgs = (), method = None, optimizationAdditionalArgs = {}, printOptimum = True, verbose=True, maxiter=0): + if printOptimum == True: + print("doOptimizeLogP is a wrapper that calls doOptimizeNegLogP. The final results from doOptimizeNegLogP will be printed.") + [self.map_parameter_set, negLogP] = self.doOptimizeNegLogP(simulationFunctionAdditionalArgs = simulationFunctionAdditionalArgs, method = method, optimizationAdditionalArgs = optimizationAdditionalArgs, printOptimum = printOptimum, verbose=verbose, maxiter=maxiter) + self.map_logP = -1.0*negLogP + return [self.map_parameter_set, self.map_logP] + + find_MAP = doOptimizeLogP # pointer to doOptimizeLogP to make our user options similar to existing popular BPE softwares (ie. pymc) + + def doOptimizeNegLogP(self, simulationFunctionAdditionalArgs = (), method = None, optimizationAdditionalArgs = {}, printOptimum = True, verbose=True, maxiter=0): + #THe intention of the optional arguments is to pass them into the scipy.optimize.minimize function. + # the 'method' argument is for Nelder-Mead, BFGS, SLSQP etc. https://docs.scipy.org/doc/scipy/reference/generated/scipy.optimize.minimize.html#scipy.optimize.minimize + #Note that "maxiter=0" just means to use the default. + initialGuess = self.UserInput.InputParameterInitialGuess + import scipy.optimize + if verbose == False: + if maxiter == 0: + optimizeResult = scipy.optimize.minimize(self.getNegLogP, initialGuess, method = method) + if maxiter != 0: + optimizeResult = scipy.optimize.minimize(self.getNegLogP, initialGuess, method = method, options={"maxiter": maxiter}) + if verbose == True: + verbose_simulator = verbose_optimization_wrapper(self.getNegLogP) + if maxiter == 0: + optimizeResult = scipy.optimize.minimize(verbose_simulator.simulateAndStoreObjectiveFunction, initialGuess, method=method, callback=verbose_simulator.callback, options={"disp": True}) + if maxiter != 0: + optimizeResult = scipy.optimize.minimize(verbose_simulator.simulateAndStoreObjectiveFunction, initialGuess, method=method, callback=verbose_simulator.callback, options={"maxiter": maxiter}) + #print(f"Number of calls to Simulator instance {verbose_simulator.num_calls}") <-- this is the same as the "Function evaluations" field that gets printed. + + self.map_parameter_set = optimizeResult.x #This is the map location. + negLogP = optimizeResult.fun + self.map_logP = -1.0*negLogP #This is the map logP + if printOptimum == True: + print("Final results from doOptimizeNegLogP:", self.map_parameter_set, "final negLogP:", negLogP, "final logP:", self.map_logP) + return [self.map_parameter_set, negLogP] + + + def getSSR(self, discreteParameterVector): #The proposal sample is specific parameter vector. + #First do a parameter bounds check. We'll return an inf if it fails. + passedBoundsCheck = self.doInputParameterBoundsChecks(discreteParameterVector) + if passedBoundsCheck == False: + return float('inf') + + #If within bounds, proceed to get the simulated responses. + simulatedResponses = self.getSimulatedResponses(discreteParameterVector) + if type(simulatedResponses) == type(None): + return float('inf') #This is intended for the case that the simulation fails, indicated by receiving an 'nan' or None type from user's simulation function. + + #now calculate the SSR if nothing has failed. + Residuals = np.array(simulatedResponses) - np.array(self.UserInput.responses_observed) + SSR = np.sum(Residuals**2) + return SSR + + def doOptimizeSSR(self, simulationFunctionAdditionalArgs = (), method = None, optimizationAdditionalArgs = {}, printOptimum = True, verbose=True, maxiter=0): + #THe intention of the optional arguments is to pass them into the scipy.optimize.minimize function. + # the 'method' argument is for Nelder-Mead, BFGS, SLSQP etc. https://docs.scipy.org/doc/scipy/reference/generated/scipy.optimize.minimize.html#scipy.optimize.minimize + #Note that "maxiter=0" just means to use the default. + if self.parameterBoundsOn:#Will force L-BFGS-B because it has bounds. + if method != 'L-BFGS-B': + print("Notification: Parameter bounds are on and doOptimizeSSR is being called. Forcing the optimization method to be L-BFGS-B because this it the only SSR method presently allowed for bounds with PEUQSE.") + method = 'L-BFGS-B' + zippedBounds = list(zip(self.UserInput.InputParameterPriorValues_lowerBounds, self.UserInput.InputParameterPriorValues_upperBounds)) + optimizationAdditionalArgs['bounds'] = zippedBounds + + initialGuess = self.UserInput.InputParameterInitialGuess + import scipy.optimize + if verbose == False: + if maxiter == 0: + optimizeResult = scipy.optimize.minimize(self.getSSR, initialGuess, method = method, **optimizationAdditionalArgs) + if maxiter != 0: + optimizeResult = scipy.optimize.minimize(self.getSSR, initialGuess, method = method, options={"maxiter": maxiter}, **optimizationAdditionalArgs) + if verbose == True: + verbose_simulator = verbose_optimization_wrapper(self.getSSR) + if maxiter == 0: + optimizeResult = scipy.optimize.minimize(verbose_simulator.simulateAndStoreObjectiveFunction, initialGuess, method=method, callback=verbose_simulator.callback, options={"disp": True}, **optimizationAdditionalArgs) + if maxiter != 0: + optimizeResult = scipy.optimize.minimize(verbose_simulator.simulateAndStoreObjectiveFunction, initialGuess, method=method, callback=verbose_simulator.callback, options={"maxiter": maxiter}, **optimizationAdditionalArgs) + #print(f"Number of calls to Simulator instance {verbose_simulator.num_calls}") <-- this is the same as the "Function evaluations" field that gets printed. + + self.opt_parameter_set = optimizeResult.x #This is the best fit parameter set. + self.opt_SSR = optimizeResult.fun #This is the best fit SSR. + if printOptimum == True: + print("Final results from doOptimizeSSR:", self.opt_parameter_set, "final SSR:", self.opt_SSR, "final negSSR:", -1*self.opt_SSR) + #FIXME: Right now, the createAllPlots command will not work unless we populate the map parameter set, so that is what we are doing. But a better longterm solution needs to be made. In which the graph says "opt" rather than "MAP" and uses the appropriate variables. + #TODO: Also need to add things like WSSR based on magnitude and variance weightings. + self.map_parameter_set = self.opt_parameter_set + return [self.opt_parameter_set, self.opt_SSR] + + + #This function is meant to be called from the runfile when testing a new function etc. It allows a simulation plot to be created. + #This is *not* recommended for use in other functions, where it is recommended that getLogP be called directly. + def doSinglePoint(self, discreteParameterVector=None, objectiveFunction='logP'): + #objectiveFunction can be 'logP' or 'SSR' + if type(discreteParameterVector)==type(None): #If somebody did not feed a specific vector, we take the initial guess. + discreteParameterVector = self.UserInput.InputParameterInitialGuess + if self.reducedParameterSpaceOn: #if reduced parameter space is on, we need to use a reduced discreteParameterVector + reducedIndices = self.UserInput.model['reducedParameterSpace'] + discreteParameterVector = returnReducedIterable(discreteParameterVector, reducedIndices) + if objectiveFunction=='logP': + self.map_parameter_set = discreteParameterVector + self.map_logP = self.getLogP(discreteParameterVector) + objectiveFunctionValue = self.map_logP + if objectiveFunction=='SSR': + self.opt_parameter_set = discreteParameterVector + self.opt_SSR = self.getSSR(discreteParameterVector) + objectiveFunctionValue = self.opt_SSR + return [discreteParameterVector, objectiveFunctionValue] + + def calculateInfoGain(self): + if self.UserInput.parameter_estimation_settings['mcmc_info_gain_returned'] == 'KL_divergence': + try: #If the info_gain_KL fails, we will return info_gain_log_ratio. + #Below is the KL_divergence info_gain calculation. + from warnings import catch_warnings, simplefilter #Used to surpress warnings from 0 probability density in current_info_gain_KL calculation + length, width = self.post_burn_in_samples.shape + self.info_gain_KL = 0 + self.info_gain_KL_each_parameter = [] + for param in range(width): + import matplotlib.pyplot as plt #FIXME: #TODO: this plotting needs to be moved into the plotting area and as optinoal. + (density0,bins0,pathces0)=plt.hist([self.samples_of_prior[:,param].flatten(),self.post_burn_in_samples[:,param].flatten()],bins=100,density=True) + # the following code handles surpressing the RuntimeWarning displayed when dealing with a 0 probability density in calculating current_info_gain_KL. It does not affect the calculation at all. + with catch_warnings(): + simplefilter("ignore") + current_info_gain_KL = density0[1]*np.log(density0[1]/density0[0]) + current_info_gain_KL = current_info_gain_KL[np.isfinite(current_info_gain_KL)] + current_info_gain_KL = np.sum(current_info_gain_KL) + self.info_gain_KL_each_parameter.append(current_info_gain_KL) #could make this optional, but normally shouldn't take much memory. + self.info_gain_KL = self.info_gain_KL + current_info_gain_KL + self.info_gain_each_parameter = self.info_gain_KL_each_parameter #could make this optional, but normally shouldn't take much memory. + self.info_gain = self.info_gain_KL + except: + print("unable to calculate KL_divergence info_gain. Calculating log_ratio info_gain.") + self.UserInput.parameter_estimation_settings['mcmc_info_gain_returned'] = 'log_ratio' + if self.UserInput.parameter_estimation_settings['mcmc_info_gain_returned'] == 'log_ratio': + if self.UserInput.parameter_estimation_settings['mcmc_info_gain_cutoff'] == 0: + #we have log A, and we want log(A/B). #log (e^log(A) / B ) = log(A/B). + #But we could also do... log(A) - log(B) = log(A/B). So changing to that. + post_burn_in_log_posteriors_vec = self.post_burn_in_log_posteriors_un_normed_vec - np.log(self.evidence) + log_ratios = (post_burn_in_log_posteriors_vec-self.post_burn_in_log_priors_vec) #log10(a/b) = log10(a)-log10(b) + log_ratios[np.isinf(log_ratios)] = 0 + log_ratios = np.nan_to_num(log_ratios) + self.info_gain_log_ratio_each_parameter = None #TODO: create a list or array of arrays such that the index is the parameter number. + self.info_gain_log_ratio = np.mean(log_ratios) #NOTE: The log_ratio info_gain is *always* calculated, at this line or below. + elif self.UserInput.parameter_estimation_settings['mcmc_info_gain_cutoff'] != 0: + #Need to consider using a truncated evidence array as well, but for now will not worry about that. + #First intialize the stacked array. + #Surprisingly, the arrays going in haves shapes like 900,1 rather than 1,900 so now transposing them before stacking. + stackedLogProbabilities = np.vstack((self.post_burn_in_log_priors_vec.transpose(), self.post_burn_in_log_posteriors_un_normed_vec.transpose())) + #Now, we are going to make a list of abscissaIndices to remove, recognizing that numpy arrays are "transposed" relative to excel. + abscissaIndicesToRemove = [] + #FIXME: Below there are some "if verbose", but those should not be printed, they should be collected and exported to a file at the end. + for abscissaIndex in range(np.shape(stackedLogProbabilities)[1]): + if self.UserInput.parameter_estimation_settings['verbose']: + print("parameter set:", self.post_burn_in_samples[abscissaIndex]) + ordinateValues = stackedLogProbabilities[:,abscissaIndex] + #We mark anything where there is a 'nan': + if np.isnan( ordinateValues ).any(): #A working numpy syntax is to have the any outside of the parenthesis, for this command, even though it's a bit strange. + abscissaIndicesToRemove.append(abscissaIndex) + if self.UserInput.parameter_estimation_settings['verbose']: + print(abscissaIndex, "removed nan (log_prior, log_posterior)", ordinateValues, np.log( self.UserInput.parameter_estimation_settings['mcmc_info_gain_cutoff'])) + elif (ordinateValues < np.log( self.UserInput.parameter_estimation_settings['mcmc_info_gain_cutoff'] ) ).any(): #again, working numpy syntax is to put "any" on the outside. We take the log since we're looking at log of probability. This is a natural log. + abscissaIndicesToRemove.append(abscissaIndex) + if self.UserInput.parameter_estimation_settings['verbose']: + print(abscissaIndex, "removed small (prior, posterior)", np.exp(ordinateValues), self.UserInput.parameter_estimation_settings['mcmc_info_gain_cutoff']) + else: + if self.UserInput.parameter_estimation_settings['verbose']: + print(abscissaIndex, "kept (prior, posterior)", np.exp(ordinateValues), self.UserInput.parameter_estimation_settings['mcmc_info_gain_cutoff']) + pass + #Now that this is finshed, we're going to do the truncation using numpy delete. + stackedLogProbabilities_truncated = stackedLogProbabilities*1.0 #just initializing. + stackedLogProbabilities_truncated = np.delete(stackedLogProbabilities, abscissaIndicesToRemove, axis=1) + post_burn_in_log_priors_vec_truncated = stackedLogProbabilities_truncated[0] + post_burn_in_log_posteriors_un_normed_vec_truncated = stackedLogProbabilities_truncated[1] #We have to truncate with not normalized, so we add the normalization in here. + post_burn_in_log_posteriors_vec_truncated = np.log ( np.exp( post_burn_in_log_posteriors_un_normed_vec_truncated) /self.evidence) + #Now copy the same lines that Eric had used above, only change to using log_ratios_truncated + log_ratios_truncated = (post_burn_in_log_posteriors_vec_truncated-post_burn_in_log_priors_vec_truncated) + log_ratios_truncated[np.isinf(log_ratios_truncated)] = 0 + log_ratios_truncated = np.nan_to_num(log_ratios_truncated) + self.info_gain_log_ratio_each_parameter = None #TODO: create a list or array of arrays such that the index is the parameter number. + self.info_gain_log_ratio = np.mean(log_ratios_truncated) #NOTE: The log_ratio info_gain is *always* calculated, at this line or earlier. + #TODO: Export the below things. + #post_burn_in_log_posteriors_vec_non_truncated = self.post_burn_in_log_posteriors_un_normed_vec - np.log(self.evidence) + #print(post_burn_in_log_posteriors_vec_truncated) #TODO: Export this + #print(post_burn_in_log_priors_vec_truncated) #TODO: Export this + self.info_gain = self.info_gain_log_ratio + return self.info_gain + + + def exportSingleConditionInfoGainMatrix(self, parameterPermutationNumber, conditionsPermutationAndInfoGain, conditionsPermutationIndex): + #Note that parameterPermutationNumber is parameterPermutationIndex+1 + file_name_prefix, file_name_suffix, directory_name_suffix = self.getParallelProcessingPrefixAndSuffix() #Rather self explanatory. + file_name_suffix=file_name_suffix[1:] #removing the '_' that comes by default, we will add the '_' back in later below. + if int(conditionsPermutationIndex+1) != int(file_name_suffix): + print("line 1199: There is a problem in the parallel processing of conditions info gain matrix calculation!", conditionsPermutationIndex+1, file_name_suffix) + #I am commenting out the below line because the savetxt was causing amysterious "no such file or directory" error. + np.savetxt(self.UserInput.directories['logs_and_csvs']+directory_name_suffix+file_name_prefix+'conditionsPermutationAndInfoGain_'+'mod'+str(int(parameterPermutationNumber))+'_cond'+str(conditionsPermutationIndex+1)+'.csv',conditionsPermutationAndInfoGain, delimiter=",") + pickleAnObject(conditionsPermutationAndInfoGain, self.UserInput.directories['pickles']+directory_name_suffix+file_name_prefix+'conditionsPermutationAndInfoGain_'+'mod'+str(int(parameterPermutationNumber))+'_cond'+str(conditionsPermutationIndex+1)) + + #This function will calculate MAP and mu_AP, evidence, and related quantities. + def calculatePostBurnInStatistics(self, calculate_post_burn_in_log_priors_vec = False): + #First need to create priors if not already there, because ESS does not store priors during the run (MH does). + if not hasattr(self, 'post_burn_in_log_priors_vec'): + calculate_post_burn_in_log_priors_vec = True + if calculate_post_burn_in_log_priors_vec == True: + #TODO: change below to use numpy vectorize. It will probably be faster then. + #Below line following a line from https://github.com/threeML/threeML/blob/master/threeML/bayesian/zeus_sampler.py + self.post_burn_in_log_priors_vec = np.array([self.getLogPrior(parameterPermutation) for parameterPermutation in self.post_burn_in_samples]) + self.post_burn_in_log_priors_vec = np.atleast_2d(self.post_burn_in_log_priors_vec).transpose() + #Next need to apply filtering before getting statistics. + filterSamples = bool(self.UserInput.parameter_estimation_settings['mcmc_threshold_filter_samples']) + filterCoeffient = self.UserInput.parameter_estimation_settings['mcmc_threshold_filter_coefficient'] + if type(filterCoeffient) == type("string"): + if filterCoeffient.lower() == "auto": + filterCoeffient = 2.0 + if filterSamples == True: + #before filtering, we will keep an unfiltered version in case of ['exportAllSimulatedOutputs'] == True: + if self.UserInput.parameter_estimation_settings['exportAllSimulatedOutputs'] == True: + try: #This try and except is primarily because as of Dec 6th 2020, the feature has been implemented for MH but not ESS. With ESS, post_burn_in_log_priors_vec_unfiltered is not gauranteed. + self.post_burn_in_samples_unfiltered = copy.deepcopy(self.post_burn_in_samples) + self.post_burn_in_log_posteriors_un_normed_vec_unfiltered = copy.deepcopy(self.post_burn_in_log_posteriors_un_normed_vec) + self.post_burn_in_log_priors_vec_unfiltered = copy.deepcopy(self.post_burn_in_log_priors_vec) + except: + pass + originalLength = np.shape(self.post_burn_in_log_posteriors_un_normed_vec)[0] + try: + mergedArray = np.hstack( (self.post_burn_in_log_posteriors_un_normed_vec, self.post_burn_in_log_priors_vec, self.post_burn_in_samples) ) + except: + print("Line 866: There has been an error, here are post_burn_in_log_posteriors_un_normed_vec, post_burn_in_samples, post_burn_in_log_priors_vec", np.shape(self.post_burn_in_log_posteriors_un_normed_vec), np.shape(self.post_burn_in_samples), np.shape(self.post_burn_in_log_priors_vec)) + # print(self.post_burn_in_log_posteriors_un_normed_vec, self.post_burn_in_samples, self.post_burn_in_log_priors_vec) + sys.exit() + #Now need to find cases where the probability is too low and filter them out. + #Filtering Step 1: Find average and Stdev of log(-logP) + logNegLogP = np.log(-1*self.post_burn_in_log_posteriors_un_normed_vec) + meanLogNegLogP = np.mean(logNegLogP) + stdLogNegLogP = np.std(logNegLogP) + maxLogP = np.max(self.post_burn_in_log_posteriors_un_normed_vec) #this is the MAP logP. + #getting the mu_AP probability for filtering requires a couple of steps. We name it carefully because the mu_AP willl change after filtering. + mu_AP_parameter_set_unfiltered_data = np.mean(self.post_burn_in_samples, axis=0) #now we are going to get the mu_AP of the unfiltered data. + mu_AP_log_P_unfiltered_data = self.getLogP(mu_AP_parameter_set_unfiltered_data) #this is the mu_AP logP + if self.UserInput.parameter_estimation_settings['mcmc_threshold_filter_benchmark'] == 'mu_AP': + #This benchmark is relative to the LogP values themselves + filteringThreshold = mu_AP_log_P_unfiltered_data - filterCoeffient # filter values below threshold starting at the mu_AP or mu_AP proxy. + removeValuesDirection = 'below' + #Now, call the function I have made for filtering by deleting the rows above/below a certain value + truncatedMergedArray = arrayThresholdFilter(mergedArray, filterKey=self.post_burn_in_log_posteriors_un_normed_vec, thresholdValue=filteringThreshold, removeValues = removeValuesDirection, transpose=False) + elif self.UserInput.parameter_estimation_settings['mcmc_threshold_filter_benchmark'] == 'MAP': + #This benchmark is relative to the LogP values themselves + filteringThreshold = maxLogP - filterCoeffient # filter values below threshold starting at the MAP + removeValuesDirection = 'below' + #Now, call the function I have made for filtering by deleting the rows above/below a certain value + truncatedMergedArray = arrayThresholdFilter(mergedArray, filterKey=self.post_burn_in_log_posteriors_un_normed_vec, thresholdValue=filteringThreshold, removeValues = removeValuesDirection, transpose=False) + elif self.UserInput.parameter_estimation_settings['mcmc_threshold_filter_benchmark'] == 'auto': + #This benchmark is unusual be cause it it is related to logNegLogP + filteringThreshold = meanLogNegLogP+filterCoeffient*stdLogNegLogP #Threshold. + removeValuesDirection = 'above' + #Now, call the function I have made for filtering by deleting the rows above/below a certain value + truncatedMergedArray = arrayThresholdFilter(mergedArray, filterKey=logNegLogP, thresholdValue=filteringThreshold, removeValues = removeValuesDirection, transpose=False) + self.post_burn_in_log_posteriors_un_normed_vec = np.atleast_2d(truncatedMergedArray[:,0]).transpose() + self.post_burn_in_log_priors_vec = np.atleast_2d(truncatedMergedArray[:,1]).transpose() + self.post_burn_in_samples = truncatedMergedArray[:,2:] + #Map calculation etc. is intentionally placed below the filtering so that the map_index is assigned correctly per the final values. + self.mu_AP_parameter_set = np.mean(self.post_burn_in_samples, axis=0) #This is the mean of the posterior, and is the point with the highest expected value of the posterior (for most distributions). For the simplest cases, map and mu_AP will be the same. + self.stdap_parameter_set = np.std(self.post_burn_in_samples, axis=0) #This is the mean of the posterior, and is the point with the highest expected value of the posterior (for most distributions). For the simplest cases, map and mu_AP will be the same. + map_logP = max(self.post_burn_in_log_posteriors_un_normed_vec) + self.map_logP = map_logP + self.map_index = list(self.post_burn_in_log_posteriors_un_normed_vec).index(map_logP) #This does not have to be a unique answer, just one of them places which gives map_logP. + self.map_parameter_set = self.post_burn_in_samples[self.map_index] #This is the point with the highest probability in the posterior. + #TODO: Probably should return the variance of each sample in the post_burn_in + #posterior probabilites are transformed to a standard normal (std=1) for obtaining the evidence: + self.evidence = np.mean(np.exp(self.post_burn_in_log_posteriors_un_normed_vec))/np.linalg.norm(self.post_burn_in_samples) + self.info_gain = self.calculateInfoGain() + if self.UserInput.parameter_estimation_settings['verbose'] == True: + print("map_parameter_set ", self.map_parameter_set) + print("mu_AP_parameter_set ", self.mu_AP_parameter_set) + print("stdap_parameter_set ",self.stdap_parameter_set) + return [self.map_parameter_set, self.mu_AP_parameter_set, self.stdap_parameter_set, self.evidence, self.info_gain, self.post_burn_in_samples, self.post_burn_in_log_posteriors_un_normed_vec] + + #This function gets the prefix and suffix for saving files when doing ParallelProcessing with MPI. + #Importantly, the **directory** of the parallel processing is included as part of the prefix. + def getParallelProcessingPrefixAndSuffix(self): + file_name_prefix = '' + file_name_suffix = '' + directory_name_suffix = '' + if (self.UserInput.parameter_estimation_settings['mcmc_parallel_sampling'] or self.UserInput.parameter_estimation_settings['multistart_parallel_sampling'] or self.UserInput.doe_settings['parallel_conditions_exploration']) == True: + import PEUQSE.parallel_processing + import os + if PEUQSE.parallel_processing.currentProcessorNumber == 0: + pass + if PEUQSE.parallel_processing.currentProcessorNumber > 0: + file_name_suffix = "_"+str(PEUQSE.parallel_processing.currentProcessorNumber) + file_name_prefix = "" + directory_name_suffix = "mpi_cached_files/" #TODO: FIX THIS, IT MAY NOT WORK ON EVERY OS. SHOULD USE 'os' MODULE TO FIND DIRECTION OF THE SLASH OR TO DO SOMETHING SIMILAR. CURRENTLY IT IS WORKING ON MY WINDOWS DESPITE BEING "/" + return file_name_prefix, file_name_suffix, directory_name_suffix + + def exportPostBurnInStatistics(self): + #TODO: Consider to Make header for mcmc_samples_array. Also make exporting the mcmc_samples_array optional. + file_name_prefix, file_name_suffix, directory_name_suffix = self.getParallelProcessingPrefixAndSuffix() #Rather self explanatory. + mcmc_samples_array = np.hstack((self.post_burn_in_log_posteriors_un_normed_vec,self.post_burn_in_samples)) + np.savetxt(self.UserInput.directories['logs_and_csvs']+directory_name_suffix+file_name_prefix+'mcmc_logP_and_parameter_samples'+file_name_suffix+'.csv',mcmc_samples_array, delimiter=",") + pickleAnObject(mcmc_samples_array, self.UserInput.directories['pickles']+directory_name_suffix+file_name_prefix+'mcmc_logP_and_parameter_samples'+file_name_suffix) + if self.UserInput.parameter_estimation_settings['exportAllSimulatedOutputs'] == True: #By default, we should not keep this, it's a little too large with large sampling. + try: #The main reason to use a try and except is because this feature has not been implemented for ESS. With ESS, the mcmc_unfiltered_post_burn_in_simulated_outputs would not be retained and the program would crash. + np.savetxt(self.UserInput.directories['logs_and_csvs']+directory_name_suffix+file_name_prefix+'mcmc_unfiltered_post_burn_in_simulated_outputs'+file_name_suffix+'.csv',self.post_burn_in_samples_simulatedOutputs, delimiter=",") + np.savetxt(self.UserInput.directories['logs_and_csvs']+directory_name_suffix+file_name_prefix+'mcmc_unfiltered_post_burn_in_parameter_samples'+file_name_suffix+'.csv',self.post_burn_in_samples_unfiltered, delimiter=",") + np.savetxt(self.UserInput.directories['logs_and_csvs']+directory_name_suffix+file_name_prefix+'mcmc_unfiltered_post_burn_in_log_priors_vec'+file_name_suffix+'.csv',self.post_burn_in_log_posteriors_un_normed_vec_unfiltered, delimiter=",") + np.savetxt(self.UserInput.directories['logs_and_csvs']+directory_name_suffix+file_name_prefix+'mcmc_unfiltered_post_burn_in_log_posteriors_un_normed_vec'+file_name_suffix+'.csv',self.post_burn_in_log_priors_vec_unfiltered, delimiter=",") + except: + pass + with open(self.UserInput.directories['logs_and_csvs']+directory_name_suffix+file_name_prefix+'mcmc_log_file'+file_name_suffix+".txt", 'w') as out_file: + out_file.write("self.initial_point_parameters:" + str( self.UserInput.InputParameterInitialGuess) + "\n") + out_file.write("MAP_logP:" + str(self.map_logP) + "\n") + out_file.write("self.map_parameter_set:" + str( self.map_parameter_set) + "\n") + out_file.write("self.map_index:" + str(self.map_index) + "\n") + out_file.write("self.mu_AP_parameter_set:" + str( self.mu_AP_parameter_set) + "\n") + out_file.write("self.stdap_parameter_set:" + str( self.stdap_parameter_set) + "\n") + out_file.write("self.info_gain:" + str(self.info_gain) + "\n") + out_file.write("evidence:" + str(self.evidence) + "\n") + out_file.write("posterior_cov_matrix:" + "\n" + str(np.cov(self.post_burn_in_samples.T)) + "\n") + if (self.permutation_and_doOptimizeNegLogP == True) or (self.permutation_and_doOptimizeLogP == True): + out_file.write("\n WARNING: It appears this run used a doOptimize with multi-start. In this case, the MAP_logP and map_parameter_set are the optima. However, the mu_AP_parameter_set and stdap_parameter_set are not meaningful, since this was not an even weighted exploration of the posterior.") + relativeDifferenceArray = abs((self.map_parameter_set - self.mu_AP_parameter_set)/self.UserInput.std_prior) + if np.array(relativeDifferenceArray > 0.10).any() == True: + out_file.write("Convergence Status: Warning - The difference between the MAP parameter set and mu_AP parameter set is greater than 10% of the prior standard deviations in at least one parameter. This means that either your posterior distribution is asymmetric or that it is not yet converged. This may mean that you need to increase your mcmc_length, increase or decrease your mcmc_relative_step_length, or change what is used for the model response. There is no general method for knowing the right value for mcmc_relative_step_length since it depends on the sharpness and smoothness of the response. See for example https://www.sciencedirect.com/science/article/pii/S0039602816300632") + else: + out_file.write("Convergence Status: The difference between the MAP parameter set and mu_AP parameter set is less than 10% of the prior standard deviations for each parameter. There is no general method for knowing when the correct solution has been obtained, but this small difference is one sign of a converged solution.") + postBurnInStatistics = [self.map_parameter_set, self.mu_AP_parameter_set, self.stdap_parameter_set, self.evidence, self.info_gain, self.post_burn_in_samples, self.post_burn_in_log_posteriors_un_normed_vec] + if hasattr(self, 'during_burn_in_samples'): + pickleAnObject(np.hstack((self.during_burn_in_log_posteriors_un_normed_vec, self.during_burn_in_samples)),self.UserInput.directories['pickles']+directory_name_suffix+file_name_prefix+'mcmc_burn_in_logP_and_parameter_samples'+file_name_suffix) + np.savetxt(self.UserInput.directories['logs_and_csvs']+directory_name_suffix+file_name_prefix+'mcmc_burn_in_logP_and_parameter_samples'+file_name_suffix+'.csv',np.hstack((self.during_burn_in_log_posteriors_un_normed_vec, self.during_burn_in_samples)), delimiter=",") + pickleAnObject(postBurnInStatistics,self.UserInput.directories['pickles']+directory_name_suffix+file_name_prefix+'mcmc_post_burn_in_statistics'+file_name_suffix) + pickleAnObject(self.map_logP,self.UserInput.directories['pickles']+directory_name_suffix+file_name_prefix+'mcmc_map_logP'+file_name_suffix) + if self.UserInput.parameter_estimation_settings['mcmc_continueSampling'] == True: + pickleAnObject(self.UserInput.InputParameterInitialGuess,self.UserInput.directories['pickles']+directory_name_suffix+file_name_prefix+'mcmc_continued_initial_point_parameters'+file_name_suffix) + else: + pickleAnObject(self.UserInput.InputParameterInitialGuess,self.UserInput.directories['pickles']+directory_name_suffix+file_name_prefix+'mcmc_initial_point_parameters'+file_name_suffix) + if hasattr(self, 'mcmc_last_point_sampled'): + pickleAnObject(self.mcmc_last_point_sampled, self.UserInput.directories['pickles']+directory_name_suffix+file_name_prefix+'mcmc_last_point_sampled'+file_name_suffix) + + #This function is modelled after exportPostBurnInStatistics. That is why it has the form that it does. + def exportPostPermutationStatistics(self, searchType=''): #if it is an mcmc run, then we need to save the sampling as well. + #TODO: Consider to Make header for mcmc_samples_array. Also make exporting the mcmc_samples_array optional. + file_name_prefix, file_name_suffix, directory_name_suffix = self.getParallelProcessingPrefixAndSuffix() #Rather self explanatory. + if (searchType == 'doEnsembleSliceSampling') or (searchType == 'doMetropolisHastings') or (searchType == 'doEnsembleModifiedMHSampling'): #Note: this might be needed for parallel processing, not sure. + mcmc_samples_array = np.hstack((self.post_burn_in_log_posteriors_un_normed_vec,self.post_burn_in_samples)) + np.savetxt(self.UserInput.directories['logs_and_csvs']+directory_name_suffix+file_name_prefix+'permutation_logP_and_parameter_samples'+file_name_suffix+'.csv',mcmc_samples_array, delimiter=",") + pickleAnObject(mcmc_samples_array, self.UserInput.directories['pickles']+directory_name_suffix+file_name_prefix+'permutation_logP_and_parameter_samples'+file_name_suffix) + if self.UserInput.parameter_estimation_settings['exportAllSimulatedOutputs'] == True: #By default, we should not keep this, it's a little too large with large sampling. + try: #The main reason to use a try and except is because this feature has not been implemented for ESS. With ESS, the mcmc_unfiltered_post_burn_in_simulated_outputs would not be retained and the program would crash. + np.savetxt(self.UserInput.directories['logs_and_csvs']+directory_name_suffix+file_name_prefix+'permutation_unfiltered_post_burn_in_simulated_outputs'+file_name_suffix+'.csv',self.post_burn_in_samples_simulatedOutputs, delimiter=",") + np.savetxt(self.UserInput.directories['logs_and_csvs']+directory_name_suffix+file_name_prefix+'permutation_unfiltered_post_burn_in_parameter_samples'+file_name_suffix+'.csv',self.post_burn_in_samples_unfiltered, delimiter=",") + np.savetxt(self.UserInput.directories['logs_and_csvs']+directory_name_suffix+file_name_prefix+'permutation_unfiltered_post_burn_in_log_priors_vec'+file_name_suffix+'.csv',self.post_burn_in_log_posteriors_un_normed_vec_unfiltered, delimiter=",") + np.savetxt(self.UserInput.directories['logs_and_csvs']+directory_name_suffix+file_name_prefix+'permutation_unfiltered_post_burn_in_log_posteriors_un_normed_vec'+file_name_suffix+'.csv',self.post_burn_in_log_priors_vec_unfiltered, delimiter=",") + except: + pass + with open(self.UserInput.directories['logs_and_csvs']+directory_name_suffix+file_name_prefix+'permutation_log_file'+file_name_suffix+".txt", 'w') as out_file: + out_file.write("self.initial_point_parameters:" + str( self.UserInput.InputParameterInitialGuess) + "\n") + out_file.write("MAP_logP:" + str(self.map_logP) + "\n") + out_file.write("self.map_parameter_set:" + str( self.map_parameter_set) + "\n") + if (searchType == 'doEnsembleSliceSampling') or (searchType == 'doMetropolisHastings') or (searchType == 'doEnsembleModifiedMHSampling'): #Below are only for mcmc_sampling + out_file.write("self.map_index:" + str(self.map_index) + "\n") + out_file.write("self.mu_AP_parameter_set:" + str( self.mu_AP_parameter_set) + "\n") + out_file.write("self.stdap_parameter_set:" + str( self.stdap_parameter_set) + "\n") + out_file.write("self.info_gain:" + str(self.info_gain) + "\n") + out_file.write("evidence:" + str(self.evidence) + "\n") + out_file.write("posterior_cov_matrix:" + "\n" + str(np.cov(self.post_burn_in_samples.T)) + "\n") + relativeDifferenceArray = abs((self.map_parameter_set - self.mu_AP_parameter_set)/self.UserInput.std_prior) + if np.array(relativeDifferenceArray > 0.10).any() == True: + out_file.write("Convergence Status: Warning - The difference between the MAP parameter set and mu_AP parameter set is greater than 10% of the prior standard deviations in at least one parameter. This means that either your posterior distribution is asymmetric or that it is not yet converged. This may mean that you need to increase your mcmc_length, increase or decrease your mcmc_relative_step_length, or change what is used for the model response. There is no general method for knowing the right value for mcmc_relative_step_length since it depends on the sharpness and smoothness of the response. See for example https://www.sciencedirect.com/science/article/pii/S0039602816300632") + else: + out_file.write("Convergence Status: The difference between the MAP parameter set and mu_AP parameter set is less than 10% of the prior standard deviations for each parameter. There is no general method for knowing when the correct solution has been obtained, but this small difference is one sign of a converged solution.") + if (searchType == 'doEnsembleSliceSampling') or (searchType == 'doMetropolisHastings') or (searchType == 'doEnsembleModifiedMHSampling'): + postBurnInStatistics = [self.map_parameter_set, self.mu_AP_parameter_set, self.stdap_parameter_set, self.evidence, self.info_gain, self.post_burn_in_samples, self.post_burn_in_log_posteriors_un_normed_vec] + pickleAnObject(postBurnInStatistics, self.UserInput.directories['pickles']+directory_name_suffix+file_name_prefix+'permutation_post_burn_in_statistics'+file_name_suffix) + pickleAnObject(self.map_logP, self.UserInput.directories['pickles']+directory_name_suffix+file_name_prefix+'permutation_map_logP'+file_name_suffix) + pickleAnObject(self.map_parameter_set, self.UserInput.directories['pickles']+directory_name_suffix+file_name_prefix+'permutation_map_parameter_set'+file_name_suffix) + pickleAnObject(self.UserInput.InputParameterInitialGuess, self.UserInput.directories['pickles']+directory_name_suffix+file_name_prefix+'permutation_initial_point_parameters'+file_name_suffix) + + def getConvergenceDiagnostics(self, discrete_chains_post_burn_in_samples=[]): + """ + Guides Integrated Autocorrelation Time and Geweke convergence analysis and makes plots. + + :param samplingFunctionstr (optional): String to define the sampler. (:type: str) + :param discrete_chains_post_burn_in_samples (optional): Array that contains post burn in samples. Shape is (numSamples, numChains, numParams) (:type np.array) + """ + + if (len(discrete_chains_post_burn_in_samples)==0) and (hasattr(self, 'discrete_chains_post_burn_in_samples')): + discrete_chains_post_burn_in_samples = self.discrete_chains_post_burn_in_samples + # check if inputted array is a numpy array. + if type(discrete_chains_post_burn_in_samples).__module__ != np.__name__: + print('The input array needs to a numpy array. If a list was inputted, wrap the variable in np.array(var)') + sys.exit() + # check if array shape is right. + if len(discrete_chains_post_burn_in_samples.shape) != 3: + print('The input array needs to take the shape (numSamples, numChains, numParameters). The current inputs does not have the appropriate dimensions.') + sys.exit() + + + # convergence diagnostic function is called to run calculations and create plots + # outputs are saved as a tuple + #TODO: make its own plot settings in different commit. + try: + convergence_ouputs = calculateAndPlotConvergenceDiagnostics(discrete_chains_post_burn_in_samples, self.UserInput.model['parameterNamesAndMathTypeExpressionsDict'], self.UserInput.scatter_matrix_plots_settings, self.UserInput.directories['graphs']) + except Exception as theError: + print("Warning: Unable to calculate and plot convergence diagnostics. The error was:", theError) + return None #this is to end the function, so it does not crash below. + + + # initialize and populate convergence dictionary in class object + self.convergence = {} + self.convergence['AutoCorrTime'] = {} + self.convergence['Geweke'] = {} + # unpack tuple to save convergence information to self + self.convergence['AutoCorrTime']['window_indices'] = convergence_ouputs[0] + self.convergence['AutoCorrTime']['final_parameter_values'] = convergence_ouputs[1] + self.convergence['AutoCorrTime']['parameter_act_for_each_window'] = convergence_ouputs[2] + self.convergence['Geweke']['window_indices'] = convergence_ouputs[3] + self.convergence['Geweke']['final_combined_parameter_values'] = convergence_ouputs[4] + self.convergence['Geweke']['final_combined_parameter_percent_outlier'] = convergence_ouputs[5] + + + #Our EnsembleModifiedMHSampling is done by the emcee back end. (pip install emcee) + software_name = "emcee" + software_version = "3.1.2" + software_unique_id = "https://github.com/dfm/emcee" + software_kwargs = {"version": software_version, "author": ['Foreman-Mackey, D.', 'Hogg, D.~W.', 'Lang, D.', 'Goodman, J.'], "cite": ["@article{emcee, author = {{Foreman-Mackey}, D. and {Hogg}, D.~W. and {Lang}, D. and {Goodman}, J.}, title = {emcee: The MCMC Hammer}, journal = {PASP}, year = 2013, volume = 125, pages = {306-312}, eprint = {1202.3665}, doi = {10.1086/670067}}"] } + @CiteSoft.function_call_cite(unique_id=software_unique_id, software_name=software_name, **software_kwargs) + def doEnsembleModifiedMHSampling(self, mcmc_nwalkers_direct_input = None, walkerInitialDistribution='UserChoice', walkerInitialDistributionSpread='UserChoice', calculatePostBurnInStatistics=True, mcmc_exportLog ='UserChoice', continueSampling='auto'): + """ + TODO: make params and return definitions along with a short description. + """ + # import the emcee backend module + import emcee + # handle the initial distribution spread with the UserInputs + if walkerInitialDistribution == 'UserChoice': + walkerInitialDistribution = self.UserInput.parameter_estimation_settings['mcmc_walkerInitialDistribution'] + if walkerInitialDistribution.lower() == 'auto': + walkerInitialDistribution = 'sobol' + if str(walkerInitialDistributionSpread) == 'UserChoice': + walkerInitialDistributionSpread = self.UserInput.parameter_estimation_settings['mcmc_walkerInitialDistributionSpread'] + if str(walkerInitialDistributionSpread).lower() == 'auto': + walkerInitialDistributionSpread = 0.866 #This choice is intended to be useful for uniform distribution priors, as described in the UserInput file. + # First check whether the UserInput already has been used to run another MCMC run, and if so make sure it is the same algorithm type + if hasattr(self.UserInput, 'last_MCMC_run_type'): + if self.UserInput.last_MCMC_run_type == 'EJS': + pass + else: + print("ERROR: Two different algorithms of MCMC runs were attempted to be run within the same python instance without reloading the UserInput. To run two MCMC runs of different algorithms in the same python instance is not supported, but can be accomplished by using imp.reload(UserInput) followed by imp.reload(PEUQSE) between changing MCMC algorithms, and which requires re-populating the UserInput with your choices. "); sys.exit() + + #Check if we need to continue sampling, and prepare for it if we need to. + if continueSampling == 'auto': + if ('mcmc_continueSampling' not in self.UserInput.parameter_estimation_settings) or self.UserInput.parameter_estimation_settings['mcmc_continueSampling'] == 'auto': #check that UserInput does not overrule the auto. + if hasattr(self, 'mcmc_last_point_sampled'): #if we have an existing mcmc_last_point_sampled in the object, we will assume more sampling is desired. + continueSampling = True + else: + continueSampling = False + else: continueSampling = self.UserInput.parameter_estimation_settings['mcmc_continueSampling'] + if continueSampling == True: + if hasattr(self, 'mcmc_last_point_sampled'): #If we are continuing from an old mcmc in this object. + self.last_post_burn_in_log_posteriors_un_normed_vec = copy.deepcopy(self.post_burn_in_log_posteriors_un_normed_vec) + self.last_post_burn_in_samples = copy.deepcopy(self.post_burn_in_samples) + else: #Else we need to read from the file. + #First check if we are doing some kind of parallel sampling, because in that case we need to read from the file for our correct process rank. We put that info into the prefix and suffix. + file_name_prefix, file_name_suffix, directory_name_suffix = self.getParallelProcessingPrefixAndSuffix() + self.last_logP_and_parameter_samples_filename = file_name_prefix + "mcmc_logP_and_parameter_samples" + file_name_suffix + self.last_logP_and_parameter_samples_data = unpickleAnObject(self.UserInput.directories['pickles']+self.last_logP_and_parameter_samples_filename) + self.last_post_burn_in_log_posteriors_un_normed_vec = np.array(nestedObjectsFunctions.makeAtLeast_2dNested(self.last_logP_and_parameter_samples_data[:,0])) #First column is the logP + if np.shape(self.last_post_burn_in_log_posteriors_un_normed_vec)[0] == 1: #In this case, need to transpose. + self.last_post_burn_in_log_posteriors_un_normed_vec = self.last_post_burn_in_log_posteriors_un_normed_vec.transpose() + self.last_post_burn_in_samples = np.array(nestedObjectsFunctions.makeAtLeast_2dNested(self.last_logP_and_parameter_samples_data[:,1:])) #later columns are the samples. + if np.shape(self.last_post_burn_in_samples)[0] == 1: #In this case, need to transpose. + self.last_post_burn_in_samples = self.last_post_burn_in_samples.transpose() + self.mcmc_last_point_sampled_filename = file_name_prefix + "mcmc_last_point_sampled" + file_name_suffix + self.mcmc_last_point_sampled_data = unpickleAnObject(self.UserInput.directories['pickles']+self.mcmc_last_point_sampled_filename) + self.mcmc_last_point_sampled = self.mcmc_last_point_sampled_data + self.last_InputParameterInitialGuess_filename = file_name_prefix + "mcmc_initial_point_parameters" + file_name_suffix + self.last_InputParameterInitialGuess_data = unpickleAnObject(self.UserInput.directories['pickles']+self.last_InputParameterInitialGuess_filename) + self.UserInput.InputParameterInitialGuess = self.last_InputParameterInitialGuess_data #populating this because otherwise non-grid Multi-Start will get the wrong values exported. & Same for final plots. + ####these variables need to be made part of UserInput#### + numParameters = len(self.UserInput.mu_prior) #This is the number of parameters. + if 'mcmc_random_seed' in self.UserInput.parameter_estimation_settings: + if isinstance(self.UserInput.parameter_estimation_settings['mcmc_random_seed'], int): #if it's an integer, then it's not a "None" type or string, and we will use it. + np.random.seed(self.UserInput.parameter_estimation_settings['mcmc_random_seed']) + if isinstance(mcmc_nwalkers_direct_input, type(None)): #This is the normal case. + if 'mcmc_nwalkers' not in self.UserInput.parameter_estimation_settings: self.mcmc_nwalkers = 'auto' + else: self.mcmc_nwalkers = self.UserInput.parameter_estimation_settings['mcmc_nwalkers'] + if isinstance(self.mcmc_nwalkers, str): + if self.mcmc_nwalkers.lower() == "auto": + self.mcmc_nwalkers = numParameters*16 # according to zeus paper (https://doi.org/10.1093/mnras/stab2867), 16*D is the optimal number of walkers for emcee + else: #else it is an integer, or a string meant to be an integer. + self.mcmc_nwalkers = int(self.mcmc_nwalkers) + else: #this is mainly for PermutationSearch which will (by default) use the minimum number of walkers per point. + self.mcmc_nwalkers = int(mcmc_nwalkers_direct_input) + if (self.mcmc_nwalkers%2) != 0: #Check that it's even. If not, add one walker. + print("The EnsembleJumpSampling requires an even number of Walkers. Adding one Walker.") + self.mcmc_nwalkers = self.mcmc_nwalkers + 1 + requested_mcmc_steps = self.UserInput.parameter_estimation_settings['mcmc_length'] + nEnsembleSteps = int(requested_mcmc_steps/self.mcmc_nwalkers) #We calculate the calculate number of the Ensemble Steps from the total sampling steps requested divided by self.mcmc_nwalkers. + if nEnsembleSteps == 0: + nEnsembleSteps = 1 + if str(self.UserInput.parameter_estimation_settings['mcmc_burn_in']).lower() == 'auto': self.mcmc_burn_in_length = int(requested_mcmc_steps*0.1) # burn in is relative to entire ensemble + else: self.mcmc_burn_in_length = self.UserInput.parameter_estimation_settings['mcmc_burn_in'] + if 'mcmc_maxiter' not in self.UserInput.parameter_estimation_settings: mcmc_maxiter = 1E6 #The default from zeus is 1E4, but I have found that is not always sufficient. + else: mcmc_maxiter = self.UserInput.parameter_estimation_settings['mcmc_maxiter'] + ####end of user input variables#### + #now to do the mcmc + # if the initial guess is a string, read its pickle file for starting points for walkers + # if this read array is a single point, proceed as normal + # if this read array is multiple points, make sure that it has the same shape as number of walkers + # else, print error and exit + loaded_initial_guess_flag = False # flag to switch allow normal generation of initial points to guided if the loaded points are a single point + if isinstance(self.UserInput.model['InputParameterInitialGuess'], str): # if yes, then assume a pickle file is imported + # try to read from current directory and pickle directory + start_point_pkl_file_name = self.UserInput.model['InputParameterInitialGuess'] + if '.pkl' in start_point_pkl_file_name: # remove '.pkl' from string if it is there + start_point_pkl_file_name = start_point_pkl_file_name.replace('.pkl', '') + from os.path import exists + # check if file exists in current working directory + if exists(start_point_pkl_file_name + '.pkl'): + walkerStartPoints = unpickleAnObject(start_point_pkl_file_name) + loaded_initial_guess_flag = True # makes sure the pickled array is used for starting points + # check if file exists in pickle directory + elif exists(self.UserInput.directories['pickles'] + start_point_pkl_file_name + '.pkl'): + walkerStartPoints = unpickleAnObject(self.UserInput.directories['pickles'] + start_point_pkl_file_name) + loaded_initial_guess_flag = True # makes sure the pickled array is used for starting points + else: + print('The pickled object for initial guess points must exist in base directory or pickles directory.') + sys.exit() + # check if start points have the same amount of walkers + initial_guess_mcmc_nwalkers = walkerStartPoints.shape[0] # last points have shape (nwalkers, nparams) + if len(walkerStartPoints.shape) == 1: + loaded_initial_guess_flag = False # set this to false so initial points can be generated + elif initial_guess_mcmc_nwalkers != self.mcmc_nwalkers: + print(f'Initial guess walker number must be the same shape as mcmc_nwalkers: {self.mcmc_nwalkers} mcmc walkers but initial guess had {initial_guess_mcmc_nwalkers} walkers') + sys.exit() + if continueSampling == False: + # check if initial guess is loaded + if not loaded_initial_guess_flag: + walkerStartPoints = self.generateInitialPoints(initialPointsDistributionType=walkerInitialDistribution, numStartPoints = self.mcmc_nwalkers,relativeInitialDistributionSpread=walkerInitialDistributionSpread) #making the first set of starting points. + elif continueSampling == True: + # make burn in samples 0 since burn in has already occurred + self.mcmc_burn_in_length = 0 + # start points have the same amount of walkers + previous_mcmc_nwalkers = self.mcmc_last_point_sampled.shape[0] # last points have shape (nwalkers, nparams) + if previous_mcmc_nwalkers != self.mcmc_nwalkers: + print(f'Setting walkers to be the same as the previous run for continue sampling: from {self.mcmc_nwalkers} to {previous_mcmc_nwalkers} walkers') + self.mcmc_nwalkers = previous_mcmc_nwalkers + # starts from the last set of chains + walkerStartPoints = self.mcmc_last_point_sampled + emcee_sampler = emcee.EnsembleSampler(self.mcmc_nwalkers, numParameters, log_prob_fn=self.getLogP) + for trialN in range(0,1000):#Todo: This number of this range is hardcoded but should probably be a user selection. + try: + emcee_sampler.run_mcmc(walkerStartPoints, nEnsembleSteps,progress=True) + break + except Exception as exceptionObject: + #TODO: come up with exception summaries like this. + if "finite" in str(exceptionObject): #This means there is an error message from zeus saying " Invalid walker initial positions! Initialise walkers from positions of finite log probability." + print("One of the starting points has a non-finite probability. Picking new starting points. If you see this message like an infinite loop, consider trying the doEnsembleSliceSampling optional argument of walkerInitialDistributionSpread. It has a default value of 1.0. Reducing this value to 0.25, for example, may work if your initial guess is near the maximum of the posterior distribution.") + #Need to make the sampler again, in this case, to throw away anything that has happened so far + walkerStartPoints = self.generateInitialPoints(initialPointsDistributionType=walkerInitialDistribution, numStartPoints = self.mcmc_nwalkers, relativeInitialDistributionSpread=walkerInitialDistributionSpread) + emcee_sampler = emcee.EnsembleSampler(self.mcmc_nwalkers, numParameters, log_prob_fn=self.getLogP) + elif "maxiter" in str(exceptionObject): #This means there is an error message from zeus that the max iterations have been reached. + print("WARNING: One or more of the Ensemble Slice Sampling walkers encountered an error. The value of mcmc_maxiter is currently", mcmc_maxiter, "you should increase it, perhaps by a factor of 1E2.") + else: + print(str(exceptionObject)) + sys.exit() + #Now to keep the results: + #TODO: when implementing convergence diagnostics, extract more chain information from get_chain without flattening (i think) + adjusted_mcmc_burn_in_length = int(self.mcmc_burn_in_length / self.mcmc_nwalkers) + self.post_burn_in_samples = emcee_sampler.get_chain(flat=True, discard = adjusted_mcmc_burn_in_length ) + discrete_chains_post_burn_in_samples = emcee_sampler.get_chain(flat=False, discard = adjusted_mcmc_burn_in_length) + if self.UserInput.parameter_estimation_settings['mcmc_store_samplingObject'] == True: + self.discrete_chains_post_burn_in_samples = discrete_chains_post_burn_in_samples + self.post_burn_in_log_posteriors_un_normed_vec = np.atleast_2d(emcee_sampler.get_log_prob(flat=True, discard=adjusted_mcmc_burn_in_length)).transpose() #Needed to make it 2D and transpose. + self.mcmc_last_point_sampled = discrete_chains_post_burn_in_samples[-1] #gets the last sample of each chain. + # Populate the last_MCMC_run_type in UserInput so that there is a record of which MCMC run type was last used with this UserInput instance. + self.UserInput.last_MCMC_run_type = 'EJS' + if continueSampling == True: + self.post_burn_in_samples = np.vstack((self.last_post_burn_in_samples, self.post_burn_in_samples )) + self.post_burn_in_log_posteriors_un_normed_vec = np.vstack( (self.last_post_burn_in_log_posteriors_un_normed_vec, self.post_burn_in_log_posteriors_un_normed_vec)) + #####BELOW HERE SHOUD BE SAME FOR doMetropolisHastings and doEnsembleSliceSampling and doEnsembleModifiedMHSampling##### + if (self.UserInput.parameter_estimation_settings['mcmc_parallel_sampling'] or self.UserInput.parameter_estimation_settings['multistart_parallel_sampling']) == True: #If we're using certain parallel processing, we need to make calculatePostBurnInStatistics into True. + calculatePostBurnInStatistics = True + if self.UserInput.parameter_estimation_settings['mcmc_parallel_sampling']: #mcmc_exportLog == True is needed for mcmc_parallel_sampling, but not for multistart_parallel_sampling + mcmc_exportLog=True + if self.UserInput.parameter_estimation_settings['mcmc_store_samplingObject']: + self.samplerType = 'EnsembleModifiedMHSampling' + self.samplingObject = emcee_sampler + if calculatePostBurnInStatistics == True: + self.calculatePostBurnInStatistics(calculate_post_burn_in_log_priors_vec = True) #This function call will also filter the lowest probability samples out, when using default settings. + if self.UserInput.parameter_estimation_settings['convergence_diagnostics']: #Run convergence diagnostics if UserInput defines it as True + self.getConvergenceDiagnostics(discrete_chains_post_burn_in_samples) + if str(mcmc_exportLog) == 'UserChoice': + mcmc_exportLog = bool(self.UserInput.parameter_estimation_settings['mcmc_exportLog']) + if mcmc_exportLog == True: + self.exportPostBurnInStatistics() + if self.UserInput.parameter_estimation_settings['mcmc_parallel_sampling'] == True: #We don't call the below function at this time unless we are doing mcmc_parallel_sampling. For multistart_parallel_sampling the consolidation is done elsewhere and differently. + self.consolidate_parallel_sampling_data(parallelizationType="equal", mpi_cached_files_prefix='mcmc') + return [self.map_parameter_set, self.mu_AP_parameter_set, self.stdap_parameter_set, self.evidence, self.info_gain, self.post_burn_in_samples, self.post_burn_in_log_posteriors_un_normed_vec] + else: #In this case, we are probably doing a PermutationSearch or something like that and only want self.map_logP. + self.map_logP = max(self.post_burn_in_log_posteriors_un_normed_vec) + self.map_index = list(self.post_burn_in_log_posteriors_un_normed_vec).index(self.map_logP) #This does not have to be a unique answer, just one of them places which gives map_logP. + self.map_parameter_set = self.post_burn_in_samples[self.map_index] #This is the point with the highest probability in the posterior. + return self.map_logP + + # pointer to Ensemble Modified MH sampling + # doEnsembleJumpSampling is provided for user convenience as a simpler choice of sampling + doEnsembleJumpSampling = doEnsembleModifiedMHSampling + + + #Our EnsembleSliceSampling is done by the Zeus back end. (pip install zeus-mcmc) + software_name = "zeus" + software_version = "2.0.0" + software_unique_id = "https://github.com/minaskar/zeus" + software_kwargs = {"version": software_version, "author": ["Minas Karamanis", "Florian Beutler"], "cite": ["Minas Karamanis and Florian Beutler. zeus: A Python Implementation of the Ensemble Slice Sampling method. 2020. ","https://arxiv.org/abs/2002.06212", "@article{ess, title={Ensemble Slice Sampling}, author={Minas Karamanis and Florian Beutler}, year={2020}, eprint={2002.06212}, archivePrefix={arXiv}, primaryClass={stat.ML} }"] } + #@CiteSoft.after_call_compile_consolidated_log() #This is from the CiteSoft module. + @CiteSoft.function_call_cite(unique_id=software_unique_id, software_name=software_name, **software_kwargs) + def doEnsembleSliceSampling(self, mcmc_nwalkers_direct_input = None, walkerInitialDistribution='UserChoice', walkerInitialDistributionSpread='UserChoice', movesType='UserChoice', calculatePostBurnInStatistics=True, mcmc_exportLog ='UserChoice', continueSampling='auto'): + #The distribution of walkers intial points can be uniform or gaussian or identical. As of Oct 2020, default is uniform spread around the intial guess. + #The mcmc_nwalkers_direct_input is really meant for PermutationSearch to override the other settings, though of course people could also use it directly. + #The walkerInitialDistributionSpread is in relative units (relative to standard deviations). In the case of a uniform inital distribution the default level of spread is actually across two standard deviations, so the walkerInitialDistributionSpread is relative to that (that is, a value of 2 would give 2*2 = 4 for the full spread in each direction from the initial guess). + import zeus + if walkerInitialDistribution == 'UserChoice': + walkerInitialDistribution = self.UserInput.parameter_estimation_settings['mcmc_walkerInitialDistribution'] + if walkerInitialDistribution.lower() == 'auto': + walkerInitialDistribution = 'sobol' + if str(walkerInitialDistributionSpread) == 'UserChoice': + walkerInitialDistributionSpread = self.UserInput.parameter_estimation_settings['mcmc_walkerInitialDistributionSpread'] + if str(walkerInitialDistributionSpread).lower() == 'auto': + walkerInitialDistributionSpread = 0.866 #This choice is intended to be useful for uniform distribution priors, as described in the UserInput file. + # First check whether the UserInput already has been used to run another MCMC run, and if so make sure it is the same algorithm type + if hasattr(self.UserInput, 'last_MCMC_run_type'): + if self.UserInput.last_MCMC_run_type == 'ESS': + pass + else: + print("ERROR: Two different algorithms of MCMC runs were attempted to be run within the same python instance without reloading the UserInput. To run two MCMC runs of different algorithms in the same python instance is not supported, but can be accomplished by using imp.reload(UserInput) followed by imp.reload(PEUQSE) between changing MCMC algorithms, and which requires re-populating the UserInput with your choices. "); sys.exit() + + #Check if we need to continue sampling, and prepare for it if we need to. + if continueSampling == 'auto': + if ('mcmc_continueSampling' not in self.UserInput.parameter_estimation_settings) or self.UserInput.parameter_estimation_settings['mcmc_continueSampling'] == 'auto': #check that UserInput does not overrule the auto. + if hasattr(self, 'mcmc_last_point_sampled'): #if we have an existing mcmc_last_point_sampled in the object, we will assume more sampling is desired. + continueSampling = True + else: + continueSampling = False + else: continueSampling = self.UserInput.parameter_estimation_settings['mcmc_continueSampling'] + if continueSampling == True: + if hasattr(self, 'mcmc_last_point_sampled'): #If we are continuing from an old mcmc in this object. + self.last_post_burn_in_log_posteriors_un_normed_vec = copy.deepcopy(self.post_burn_in_log_posteriors_un_normed_vec) + self.last_post_burn_in_samples = copy.deepcopy(self.post_burn_in_samples) + else: #Else we need to read from the file. + #First check if we are doing some kind of parallel sampling, because in that case we need to read from the file for our correct process rank. We put that info into the prefix and suffix. + file_name_prefix, file_name_suffix, directory_name_suffix = self.getParallelProcessingPrefixAndSuffix() + self.last_logP_and_parameter_samples_filename = file_name_prefix + "mcmc_logP_and_parameter_samples" + file_name_suffix + self.last_logP_and_parameter_samples_data = unpickleAnObject(self.UserInput.directories['pickles']+self.last_logP_and_parameter_samples_filename) + self.last_post_burn_in_log_posteriors_un_normed_vec = np.array(nestedObjectsFunctions.makeAtLeast_2dNested(self.last_logP_and_parameter_samples_data[:,0])) #First column is the logP + if np.shape(self.last_post_burn_in_log_posteriors_un_normed_vec)[0] == 1: #In this case, need to transpose. + self.last_post_burn_in_log_posteriors_un_normed_vec = self.last_post_burn_in_log_posteriors_un_normed_vec.transpose() + self.last_post_burn_in_samples = np.array(nestedObjectsFunctions.makeAtLeast_2dNested(self.last_logP_and_parameter_samples_data[:,1:])) #later columns are the samples. + if np.shape(self.last_post_burn_in_samples)[0] == 1: #In this case, need to transpose. + self.last_post_burn_in_samples = self.last_post_burn_in_samples.transpose() + self.mcmc_last_point_sampled_filename = file_name_prefix + "mcmc_last_point_sampled" + file_name_suffix + self.mcmc_last_point_sampled_data = unpickleAnObject(self.UserInput.directories['pickles']+self.mcmc_last_point_sampled_filename) + self.mcmc_last_point_sampled = self.mcmc_last_point_sampled_data + self.last_InputParameterInitialGuess_filename = file_name_prefix + "mcmc_initial_point_parameters" + file_name_suffix + self.last_InputParameterInitialGuess_data = unpickleAnObject(self.UserInput.directories['pickles']+self.last_InputParameterInitialGuess_filename) + self.UserInput.InputParameterInitialGuess = self.last_InputParameterInitialGuess_data #populating this because otherwise non-grid Multi-Start will get the wrong values exported. & Same for final plots. + ####these variables need to be made part of UserInput#### + numParameters = len(self.UserInput.mu_prior) #This is the number of parameters. + if 'mcmc_random_seed' in self.UserInput.parameter_estimation_settings: + if type(self.UserInput.parameter_estimation_settings['mcmc_random_seed']) == type(1): #if it's an integer, then it's not a "None" type or string, and we will use it. + np.random.seed(self.UserInput.parameter_estimation_settings['mcmc_random_seed']) + if type(mcmc_nwalkers_direct_input) == type(None): #This is the normal case. + if 'mcmc_nwalkers' not in self.UserInput.parameter_estimation_settings: self.mcmc_nwalkers = 'auto' + else: self.mcmc_nwalkers = self.UserInput.parameter_estimation_settings['mcmc_nwalkers'] + if type(self.mcmc_nwalkers) == type("string"): + if self.mcmc_nwalkers.lower() == "auto": + self.mcmc_nwalkers = numParameters*4 # according to zeus paper (https://doi.org/10.1093/mnras/stab2867), 4*D is the optimal number of walkers for general problems. Multimodal problems benefit from additional walkers. + else: #else it is an integer, or a string meant to be an integer. + self.mcmc_nwalkers = int(self.mcmc_nwalkers) + else: #this is mainly for PermutationSearch which will (by default) use the minimum number of walkers per point. + self.mcmc_nwalkers = int(mcmc_nwalkers_direct_input) + if (self.mcmc_nwalkers%2) != 0: #Check that it's even. If not, add one walker. + print("The EnsembleSliceSampling requires an even number of Walkers. Adding one Walker.") + self.mcmc_nwalkers = self.mcmc_nwalkers + 1 + requested_mcmc_steps = self.UserInput.parameter_estimation_settings['mcmc_length'] + nEnsembleSteps = int(requested_mcmc_steps/self.mcmc_nwalkers) #We calculate the calculate number of the Ensemble Steps from the total sampling steps requested divided by self.mcmc_nwalkers. + if nEnsembleSteps == 0: + nEnsembleSteps = 1 + if str(self.UserInput.parameter_estimation_settings['mcmc_burn_in']).lower() == 'auto': self.mcmc_burn_in_length = int(requested_mcmc_steps*0.1) # burn in is relative to entire ensemble + else: self.mcmc_burn_in_length = self.UserInput.parameter_estimation_settings['mcmc_burn_in'] + if 'mcmc_maxiter' not in self.UserInput.parameter_estimation_settings: mcmc_maxiter = 1E6 #The default from zeus is 1E4, but I have found that is not always sufficient. + else: mcmc_maxiter = self.UserInput.parameter_estimation_settings['mcmc_maxiter'] + # make the move objects from the UserInput or argument specification + if movesType == 'UserChoice': movesType = self.UserInput.parameter_estimation_settings['mcmc_movesType'] + if movesType.lower() == 'auto': movesTypeObject = zeus.moves.DifferentialMove() + elif movesType.lower() == 'differential': movesTypeObject = zeus.moves.DifferentialMove() + elif movesType.lower() == 'global': movesTypeObject = zeus.moves.GlobalMove(n_components=4) #the n_components (believe it means number of modes to expect), has been hard coded to 4 from the default of 5. This was required to have Example00c2 to run without crashing. + elif movesType.lower() == 'gaussian': movesTypeObject = zeus.moves.GaussianMove() + elif movesType.lower() == 'kde': movesTypeObject = zeus.moves.KDEMove() + else: print("The move type must be one of the following: ['auto', 'differential', 'global', 'gaussian', 'kde']") + ####end of user input variables#### + #now to do the mcmc + # if the initial guess is a string, read its pickle file for starting points for walkers + # if this read array is a single point, proceed as normal + # if this read array is multiple points, make sure that it has the same shape as number of walkers + # else, print error and exit + loaded_initial_guess_flag = False # flag to switch allow normal generation of initial points to guided if the loaded points are a single point + if isinstance(self.UserInput.model['InputParameterInitialGuess'], str): # if yes, then assume a pickle file is imported + # try to read from current directory and pickle directory + start_point_pkl_file_name = self.UserInput.model['InputParameterInitialGuess'] + if '.pkl' in start_point_pkl_file_name: # remove '.pkl' from string if it is there + start_point_pkl_file_name = start_point_pkl_file_name.replace('.pkl', '') + from os.path import exists + # check if file exists in current working directory + if exists(start_point_pkl_file_name + '.pkl'): + walkerStartPoints = unpickleAnObject(start_point_pkl_file_name) + loaded_initial_guess_flag = True # makes sure the pickled array is used for starting points + # check if file exists in pickle directory + elif exists(self.UserInput.directories['pickles'] + start_point_pkl_file_name + '.pkl'): + walkerStartPoints = unpickleAnObject(self.UserInput.directories['pickles'] + start_point_pkl_file_name) + loaded_initial_guess_flag = True # makes sure the pickled array is used for starting points + else: + print('The pickled object for initial guess points must exist in base directory or pickles directory.') + sys.exit() + # check if start points have the same amount of walkers + initial_guess_mcmc_nwalkers = walkerStartPoints.shape[0] # last points have shape (nwalkers, nparams) + if len(walkerStartPoints.shape) == 1: + loaded_initial_guess_flag = False # set this to false so initial points can be generated + elif initial_guess_mcmc_nwalkers != self.mcmc_nwalkers: + print(f'Initial guess walker number must be the same shape as mcmc_nwalkers: {self.mcmc_nwalkers} mcmc walkers but initial guess had {initial_guess_mcmc_nwalkers} walkers') + sys.exit() + if continueSampling == False: + # check if initial guess is loaded + if not loaded_initial_guess_flag: + walkerStartPoints = self.generateInitialPoints(initialPointsDistributionType=walkerInitialDistribution, numStartPoints = self.mcmc_nwalkers,relativeInitialDistributionSpread=walkerInitialDistributionSpread) #making the first set of starting points. + elif continueSampling == True: + # make burn in samples 0 since burn in has already occurred + self.mcmc_burn_in_length = 0 + # start points have the same amount of walkers + previous_mcmc_nwalkers = self.mcmc_last_point_sampled.shape[0] # last points have shape (nwalkers, nparams) + if previous_mcmc_nwalkers != self.mcmc_nwalkers: + print(f'Setting walkers to be the same as the previous run for continue sampling: from {self.mcmc_nwalkers} to {previous_mcmc_nwalkers} walkers') + self.mcmc_nwalkers = previous_mcmc_nwalkers + # start walkers at last walker points + walkerStartPoints = self.mcmc_last_point_sampled + # use global move if continue sampling occurs and movesType is on auto + if movesType.lower() == 'auto': movesTypeObject = zeus.moves.GlobalMove(n_components=4); print('Using Global Move in continue sampling') + # walkerStartPoints = self.map_parameter_set #used to be self.mcmc_last_point_sampled. However, ESS works best when sampling near the peak (if there is a monomodoal HPD). + zeus_sampler = zeus.EnsembleSampler(self.mcmc_nwalkers, numParameters, logprob_fn=self.getLogP, maxiter=mcmc_maxiter, moves=movesTypeObject) #maxiter=1E4 is the typical number, but we may want to increase it based on some UserInput variable. + for trialN in range(0,1000):#Todo: This number of this range is hardcoded but should probably be a user selection. + try: + zeus_sampler.run_mcmc(walkerStartPoints, nEnsembleSteps) + break + except Exception as exceptionObject: + if "finite" in str(exceptionObject): #This means there is an error message from zeus saying " Invalid walker initial positions! Initialise walkers from positions of finite log probability." + print("One of the starting points has a non-finite probability. Picking new starting points. If you see this message like an infinite loop, consider trying the doEnsembleSliceSampling optional argument of walkerInitialDistributionSpread. It has a default value of 1.0. Reducing this value to 0.25, for example, may work if your initial guess is near the maximum of the posterior distribution.") + #Need to make the sampler again, in this case, to throw away anything that has happened so far + walkerStartPoints = self.generateInitialPoints(initialPointsDistributionType=walkerInitialDistribution, numStartPoints = self.mcmc_nwalkers, relativeInitialDistributionSpread=walkerInitialDistributionSpread) + zeus_sampler = zeus.EnsembleSampler(self.mcmc_nwalkers, numParameters, logprob_fn=self.getLogP, maxiter=mcmc_maxiter, moves=movesTypeObject) #maxiter=1E4 is the typical number, but we may want to increase it based on some UserInput variable. + elif "maxiter" in str(exceptionObject): #This means there is an error message from zeus that the max iterations have been reached. + print("WARNING: One or more of the Ensemble Slice Sampling walkers encountered an error. The value of mcmc_maxiter is currently", mcmc_maxiter, "you should increase it, perhaps by a factor of 1E2.") + else: + print(str(exceptionObject)) + sys.exit() + #Now to keep the results: + adjusted_mcmc_burn_in_length = int(self.mcmc_burn_in_length / self.mcmc_nwalkers) + self.post_burn_in_samples = zeus_sampler.samples.flatten(discard = adjusted_mcmc_burn_in_length ) + discrete_chains_post_burn_in_samples = zeus_sampler.get_chain(discard = adjusted_mcmc_burn_in_length) + if self.UserInput.parameter_estimation_settings['mcmc_store_samplingObject'] == True: + self.discrete_chains_post_burn_in_samples = discrete_chains_post_burn_in_samples + self.post_burn_in_log_posteriors_un_normed_vec = np.atleast_2d(zeus_sampler.samples.flatten_logprob(discard=adjusted_mcmc_burn_in_length)).transpose() #Needed to make it 2D and transpose. + self.mcmc_last_point_sampled = discrete_chains_post_burn_in_samples[-1] #Note that for **zeus** the last point sampled is actually an array of points equal to the number of walkers. + # Populate the last_MCMC_run_type in UserInput so that there is a record of which MCMC run type was last used with this UserInput instance. + self.UserInput.last_MCMC_run_type = 'ESS' + if continueSampling == True: + self.post_burn_in_samples = np.vstack((self.last_post_burn_in_samples, self.post_burn_in_samples )) + self.post_burn_in_log_posteriors_un_normed_vec = np.vstack( (self.last_post_burn_in_log_posteriors_un_normed_vec, self.post_burn_in_log_posteriors_un_normed_vec)) + #####BELOW HERE SHOUD BE SAME FOR doMetropolisHastings and doEnsembleSliceSampling and doEnsembleModifiedMHSampling##### + if (self.UserInput.parameter_estimation_settings['mcmc_parallel_sampling'] or self.UserInput.parameter_estimation_settings['multistart_parallel_sampling']) == True: #If we're using certain parallel processing, we need to make calculatePostBurnInStatistics into True. + calculatePostBurnInStatistics = True; + if self.UserInput.parameter_estimation_settings['mcmc_parallel_sampling']: #mcmc_exportLog == True is needed for mcmc_parallel_sampling, but not for multistart_parallel_sampling + mcmc_exportLog=True + if self.UserInput.parameter_estimation_settings['mcmc_store_samplingObject']: + self.samplerType = 'EnsembleSliceSampling' + self.samplingObject = zeus_sampler + if calculatePostBurnInStatistics == True: + self.calculatePostBurnInStatistics(calculate_post_burn_in_log_priors_vec = True) #This function call will also filter the lowest probability samples out, when using default settings. + if self.UserInput.parameter_estimation_settings['convergence_diagnostics']: #Run convergence diagnostics if UserInput defines it as True + self.getConvergenceDiagnostics(discrete_chains_post_burn_in_samples) + if str(mcmc_exportLog) == 'UserChoice': + mcmc_exportLog = bool(self.UserInput.parameter_estimation_settings['mcmc_exportLog']) + if mcmc_exportLog == True: + self.exportPostBurnInStatistics() + if self.UserInput.parameter_estimation_settings['mcmc_parallel_sampling'] == True: #We don't call the below function at this time unless we are doing mcmc_parallel_sampling. For multistart_parallel_sampling the consolidation is done elsewhere and differently. + self.consolidate_parallel_sampling_data(parallelizationType="equal", mpi_cached_files_prefix='mcmc') + return [self.map_parameter_set, self.mu_AP_parameter_set, self.stdap_parameter_set, self.evidence, self.info_gain, self.post_burn_in_samples, self.post_burn_in_log_posteriors_un_normed_vec] + else: #In this case, we are probably doing a PermutationSearch or something like that and only want self.map_logP. + self.map_logP = max(self.post_burn_in_log_posteriors_un_normed_vec) + self.map_index = list(self.post_burn_in_log_posteriors_un_normed_vec).index(self.map_logP) #This does not have to be a unique answer, just one of them places which gives map_logP. + self.map_parameter_set = self.post_burn_in_samples[self.map_index] #This is the point with the highest probability in the posterior. + return self.map_logP + + def doEnsembleSliceSamplingGM(self): + """A wrapper for Enseble Slice Sampler that uses Global Move""" + self.doEnsembleSliceSampling(movesType='global') + + #main function to get samples #TODO: Maybe Should return map_log_P and mu_AP_log_P? + #@CiteSoft.after_call_compile_consolidated_log() #This is from the CiteSoft module. + def doMetropolisHastings(self, calculatePostBurnInStatistics = True, mcmc_exportLog='UserChoice', continueSampling = 'auto'): + # First check whether the UserInput already has been used to run another MCMC run, and if so make sure it is the same algorithm type + if hasattr(self.UserInput, 'last_MCMC_run_type'): + if self.UserInput.last_MCMC_run_type == 'MH': + pass + else: + print("ERROR: Two different algorithms of MCMC runs were attempted to be run within the same python instance without reloading the UserInput. To run two MCMC runs of different algorithms in the same python instance is not supported, but can be accomplished by using imp.reload(UserInput) followed by imp.reload(PEUQSE) between changing MCMC algorithms, and which requires re-populating the UserInput with your choices. "); sys.exit() + + #Check if we need to continue sampling, and prepare for it if we need to. + if continueSampling == 'auto': + if ('mcmc_continueSampling' not in self.UserInput.parameter_estimation_settings) or self.UserInput.parameter_estimation_settings['mcmc_continueSampling'] == 'auto': #check that UserInput does not overrule the auto. + if hasattr(self, 'mcmc_last_point_sampled'): #if we have an existing mcmc_last_point_sampled in the object, we will assume more sampling is desired. + continueSampling = True + else: + continueSampling = False + else: continueSampling = self.UserInput.parameter_estimation_settings['mcmc_continueSampling'] + if continueSampling == True: + if hasattr(self, 'mcmc_last_point_sampled'): #if If we are continuing from an old + self.last_post_burn_in_log_posteriors_un_normed_vec = copy.deepcopy(self.post_burn_in_log_posteriors_un_normed_vec) + self.last_post_burn_in_samples = copy.deepcopy(self.post_burn_in_samples) + else: #Else we need to read from the file. + #First check if we are doing some kind of parallel sampling, because in that case we need to read from the file for our correct process rank. We put that info into the prefix and suffix. + file_name_prefix, file_name_suffix, directory_name_suffix = self.getParallelProcessingPrefixAndSuffix() + self.last_logP_and_parameter_samples_filename = file_name_prefix + "mcmc_logP_and_parameter_samples" + file_name_suffix + self.last_logP_and_parameter_samples_data = unpickleAnObject(self.UserInput.directories['pickles']+self.last_logP_and_parameter_samples_filename) + self.last_post_burn_in_log_posteriors_un_normed_vec = np.array(nestedObjectsFunctions.makeAtLeast_2dNested(self.last_logP_and_parameter_samples_data[:,0])) #First column is the logP + if np.shape(self.last_post_burn_in_log_posteriors_un_normed_vec)[0] == 1: #In this case, need to transpose. + self.last_post_burn_in_log_posteriors_un_normed_vec = self.last_post_burn_in_log_posteriors_un_normed_vec.transpose() + self.last_post_burn_in_samples = np.array(nestedObjectsFunctions.makeAtLeast_2dNested(self.last_logP_and_parameter_samples_data[:,1:])) #later columns are the samples. + if np.shape(self.last_post_burn_in_samples)[0] == 1: #In this case, need to transpose. + self.last_post_burn_in_samples = self.last_post_burn_in_samples.transpose() + self.mcmc_last_point_sampled = self.last_post_burn_in_samples[-1] + self.last_InputParameterInitialGuess_filename = file_name_prefix + "mcmc_initial_point_parameters" + file_name_suffix + self.last_InputParameterInitialGuess_data = unpickleAnObject(self.UserInput.directories['pickles']+self.last_InputParameterInitialGuess_filename) + self.UserInput.InputParameterInitialGuess = self.last_InputParameterInitialGuess_data #populating this because otherwise non-grid Multi-Start will get the wrong values exported. & Same for final plots. + #Setting burn_in_length in below few lines (including case for continued sampling). + if str(self.UserInput.parameter_estimation_settings['mcmc_burn_in']).lower() == 'auto': self.mcmc_burn_in_length = int(self.UserInput.parameter_estimation_settings['mcmc_length']*0.1) + else: self.mcmc_burn_in_length = self.UserInput.parameter_estimation_settings['mcmc_burn_in'] + if continueSampling == True: + self.mcmc_burn_in_length = 0 + if 'mcmc_random_seed' in self.UserInput.parameter_estimation_settings: + if type(self.UserInput.parameter_estimation_settings['mcmc_random_seed']) == type(1): #if it's an integer, then it's not a "None" type or string, and we will use it. + np.random.seed(self.UserInput.parameter_estimation_settings['mcmc_random_seed']) + samples_simulatedOutputs = np.zeros((self.UserInput.parameter_estimation_settings['mcmc_length'],self.UserInput.num_data_points)) + samples = np.zeros((self.UserInput.parameter_estimation_settings['mcmc_length'],len(self.UserInput.mu_prior))) + mcmc_step_modulation_history = np.zeros((self.UserInput.parameter_estimation_settings['mcmc_length'])) #TODO: Make this optional for efficiency. #This allows the steps to be larger or smaller. Make this same length as samples. In future, should probably be same in other dimension also, but that would require 2D sampling with each step. + if continueSampling == False: + samples[0,:]=self.UserInput.InputParameterInitialGuess # Initialize the chain. Theta is initialized as the starting point of the chain. It is placed at the prior mean if an initial guess is not provided.. Do not use self.UserInput.model['InputParameterInitialGuess'] because that doesn't work with reduced parameter space feature. + elif continueSampling == True: + samples[0,:]= self.mcmc_last_point_sampled + samples_drawn = samples*1.0 #this includes points that were rejected. #TODO: make this optional for efficiency. + log_likelihoods_vec = np.zeros((self.UserInput.parameter_estimation_settings['mcmc_length'],1)) + log_posteriors_un_normed_vec = np.zeros((self.UserInput.parameter_estimation_settings['mcmc_length'],1)) + log_postereriors_drawn = np.zeros((self.UserInput.parameter_estimation_settings['mcmc_length'])) #TODO: make this optional for efficiency. We don't want this to be 2D, so we don't copy log_posteriors_un_normed_vec. + log_priors_vec = np.zeros((self.UserInput.parameter_estimation_settings['mcmc_length'],1)) + #Code to initialize checkpoints. + if type(self.UserInput.parameter_estimation_settings['mcmc_checkPointFrequency']) != type(None): + print("Starting MCMC sampling.") + timeOfFirstCheckpoint = time.time() + timeCheckpoint = time.time() - timeOfFirstCheckpoint #First checkpoint at time 0. + numCheckPoints = self.UserInput.parameter_estimation_settings['mcmc_length']/self.UserInput.parameter_estimation_settings['mcmc_checkPointFrequency'] + #Before sampling should fill in the first entry for the posterior vector we have created. #FIXME: It would probably be better to start with i of 0 in below sampling loop. I believe that right now the "burn in" and "samples" arrays are actually off by an index of 1. But trying to change that alters their length relative to other arrays and causes problems. Since we always do many samples and this only affects the initial point being averaged in twice, it is not a major problem. It's also avoided if people use a burn in of at least 1. + log_posteriors_un_normed_vec[0]= self.getLogP(samples[0]) + for i in range(1, self.UserInput.parameter_estimation_settings['mcmc_length']): #FIXME: Don't we need to start with i of 0? + sampleNumber = i #This is so that later we can change it to i+1 if the loop starts from i of 0 in the future. + if self.UserInput.parameter_estimation_settings['verbose']: print("MCMC sample number", sampleNumber) + if self.UserInput.parameter_estimation_settings['mcmc_mode'] == 'unbiased': + proposal_sample = samples[i-1,:] + np.random.multivariate_normal(self.Q_mu,self.Q_covmat*self.UserInput.parameter_estimation_settings['mcmc_relative_step_length']) + if self.UserInput.parameter_estimation_settings['mcmc_mode'] == 'MAP_finding': + if i == 1: mcmc_step_dynamic_coefficient = 1 + mcmc_step_modulation_coefficient = np.random.uniform() + 0.5 #TODO: make this a 2D array. One for each parameter. + mcmc_step_modulation_history[i] = mcmc_step_modulation_coefficient + proposal_sample = samples[i-1,:] + np.random.multivariate_normal(self.Q_mu,self.Q_covmat*mcmc_step_dynamic_coefficient*mcmc_step_modulation_coefficient*self.UserInput.parameter_estimation_settings['mcmc_relative_step_length']) + log_prior_proposal = self.getLogPrior(proposal_sample) + [log_likelihood_proposal, simulationOutput_proposal] = self.getLogLikelihood(proposal_sample) + log_prior_current_location = self.getLogPrior(samples[i-1,:]) #"current" location is the most recent accepted location, because we haven't decided yet if we're going to move. + [log_likelihood_current_location, simulationOutput_current_location] = self.getLogLikelihood(samples[i-1,:]) #FIXME: the previous likelihood should be stored so that it doesn't need to be calculated again. + log_accept_probability = (log_likelihood_proposal + log_prior_proposal) - (log_likelihood_current_location + log_prior_current_location) + if self.UserInput.parameter_estimation_settings['verbose']: print('Current log_likelihood',log_likelihood_current_location, 'Proposed log_likelihood', log_likelihood_proposal, '\nLog of Accept_probability (gauranteed if above 0)', log_accept_probability) + if self.UserInput.parameter_estimation_settings['verbose']: print('Current posterior',log_likelihood_current_location+log_prior_current_location, 'Proposed Posterior', log_likelihood_proposal+log_prior_proposal) + if self.UserInput.parameter_estimation_settings['mcmc_modulate_accept_probability'] != 0: #This flattens the posterior by accepting low values more often. It can be useful when greater sampling is more important than accuracy. + N_flatten = float(self.UserInput.parameter_estimation_settings['mcmc_modulate_accept_probability']) + #Our logP are of the type e^logP = P. #This is base 'e' because the logpdf functions are base e. Ashi checked the sourcecode. + #The flattening code works in part because P is always < 1, so logP is always negative. 1/N_flatten at front brings negative number closer to zero which is P closer to 1. If logP is already positive, it will stay positive which also causes no problem. + #TODO: add code that unflattens the final histograms, that way even with more sampling we still get an accurate final posterior distribution. We can also then add a flag if the person wants to keep the posterior flattened. + log_accept_probability = (1/N_flatten)*log_accept_probability + randomNumber = np.random.uniform() + log_randomNumber = np.log(randomNumber) #This is base 'e' because the logpdf functions are base e. Ashi checked the sourcecode. + if log_accept_probability > log_randomNumber: #TODO: keep a log of the accept and reject. If the reject ratio is >90% or some other such number, warn the user. + if self.UserInput.parameter_estimation_settings['verbose']: + print('accept', proposal_sample) + sys.stdout.flush() + #print(simulationOutput_proposal) + samples[i,:] = proposal_sample + samples_drawn[i,:] = proposal_sample + log_postereriors_drawn[i] = (log_likelihood_proposal+log_prior_proposal) #FIXME: should be using getlogP + #samples_simulatedOutputs[i,:] = nestedObjectsFunctions.flatten_2dNested(simulationOutput_proposal) + log_posteriors_un_normed_vec[i] = log_likelihood_proposal+log_prior_proposal + log_likelihoods_vec[i] = log_likelihood_proposal + log_priors_vec[i] = log_prior_proposal + else: + if self.UserInput.parameter_estimation_settings['verbose']: + print('reject', proposal_sample) + sys.stdout.flush() + #print(simulationOutput_current_location) + samples[i,:] = samples[i-1,:] #the sample is not kept if it is rejected, though we still store it in the samples_drawn. + samples_drawn[i,:] = proposal_sample + log_postereriors_drawn[i] = (log_likelihood_proposal+log_prior_proposal) + #samples_simulatedOutputs[i,:] = nestedObjectsFunctions.flatten_2dNested(simulationOutput_current_location) + log_posteriors_un_normed_vec[i] = log_likelihood_current_location+log_prior_current_location + log_likelihoods_vec[i] = log_likelihood_current_location + log_priors_vec[i] = log_prior_current_location + if type(self.UserInput.parameter_estimation_settings['mcmc_checkPointFrequency']) != type(None): + if sampleNumber%self.UserInput.parameter_estimation_settings['mcmc_checkPointFrequency'] == 0: #The % is a modulus function. + timeSinceLastCheckPoint = (time.time() - timeOfFirstCheckpoint) - timeCheckpoint + timeCheckpoint = time.time() - timeOfFirstCheckpoint + checkPointNumber = sampleNumber/self.UserInput.parameter_estimation_settings['mcmc_checkPointFrequency'] + averagetimePerSampling = timeCheckpoint/(sampleNumber) + print("MCMC sample number ", sampleNumber, "checkpoint", checkPointNumber, "out of", numCheckPoints) + print("averagetimePerSampling", averagetimePerSampling, "seconds") + print("timeSinceLastCheckPoint", timeSinceLastCheckPoint, "seconds") + print("Estimated time remaining", averagetimePerSampling*(self.UserInput.parameter_estimation_settings['mcmc_length']-sampleNumber), "seconds") + if self.UserInput.parameter_estimation_settings['mcmc_mode'] != 'unbiased': + print("Most recent mcmc_step_dynamic_coefficient:", mcmc_step_dynamic_coefficient) + if self.UserInput.parameter_estimation_settings['mcmc_mode'] != 'unbiased': + if sampleNumber%100== 0: #The % is a modulus function to change the modulation coefficient every n steps. + if self.UserInput.parameter_estimation_settings['mcmc_mode'] == 'MAP_finding': + recent_log_postereriors_drawn=log_postereriors_drawn[i-100:i] + recent_mcmc_step_modulation_history=mcmc_step_modulation_history[i-100:i] + #Make a 2D array and remove anything that is not finite. + #let's find out where the posterior is not finite: + recent_log_postereriors_drawn_is_finite = np.isfinite(recent_log_postereriors_drawn) #gives 1 if is finite, 0 if not. + #Now let's find the cases that were not... + not_finite_indices = np.where(recent_log_postereriors_drawn_is_finite == 0) + #Now delete the indices we don't want. + recent_log_postereriors_drawn = np.delete(recent_log_postereriors_drawn, not_finite_indices) + recent_mcmc_step_modulation_history = np.delete(recent_mcmc_step_modulation_history, not_finite_indices) +# recent_stacked = np.vstack((recent_log_postereriors_drawn,recent_mcmc_step_modulation_history)).transpose() +# print(recent_stacked) +# np.savetxt(self.UserInput.directories['logs_and_csvs']+"recent_stacked.csv",recent_stacked, delimiter=',') + #Numpy polyfit uses "x, y, degree" for nomenclature. We want posterior as function of modulation history. + linearFit = np.polynomial.polynomial.polyfit(recent_mcmc_step_modulation_history, recent_log_postereriors_drawn, 1) #In future, use multidimensional and numpy.gradient or something like that? + #The slope is in the 2nd index of linearFit, despite what the documentation says. + #A positive slope means that bigger steps have better outcomes, on average. + if linearFit[1] > 0: + if mcmc_step_dynamic_coefficient < 10: + mcmc_step_dynamic_coefficient = mcmc_step_dynamic_coefficient*1.05 + if linearFit[1] < 0: + if mcmc_step_dynamic_coefficient > 0.1: + mcmc_step_dynamic_coefficient = mcmc_step_dynamic_coefficient*0.95 + ######################################## + if continueSampling == False: #Normally we enter this if statement and collect the burn_in samples. If continueSampling, either they already exist in the PE_object and will be exported again later, or they don't exist in the PE_object because are continuing from a previous python instance. If continuing from a previous python instance, during_burn_in_samples won't be created and also won't be exported again. (This logic is so we don't overwrite the old during_burn_in_samples). + self.during_burn_in_samples = samples[0:self.mcmc_burn_in_length] + self.during_burn_in_log_posteriors_un_normed_vec = log_posteriors_un_normed_vec[0:self.mcmc_burn_in_length] + self.post_burn_in_samples = samples[self.mcmc_burn_in_length:] + discrete_chains_post_burn_in_samples = np.expand_dims(self.post_burn_in_samples, axis=1) # MH only has one chain + if self.UserInput.parameter_estimation_settings['mcmc_store_samplingObject'] == True: + self.discrete_chains_post_burn_in_samples = discrete_chains_post_burn_in_samples + #self.post_burn_in_samples_simulatedOutputs = copy.deepcopy(samples_simulatedOutputs) + #self.post_burn_in_samples_simulatedOutputs[self.mcmc_burn_in_length:0] #Note: this feature is presently not compatible with continueSampling. + self.post_burn_in_log_posteriors_un_normed_vec = log_posteriors_un_normed_vec[self.mcmc_burn_in_length:] + self.mcmc_last_point_sampled = self.post_burn_in_samples[-1] + self.post_burn_in_log_likelihoods_vec = log_likelihoods_vec[self.mcmc_burn_in_length:] + self.post_burn_in_log_priors_vec = log_priors_vec[self.mcmc_burn_in_length:] + # Populate the last_MCMC_run_type in UserInput so that there is a record of which MCMC run type was last used with this UserInput instance. + self.UserInput.last_MCMC_run_type = 'MH' + #####BELOW HERE SHOUD BE SAME FOR doMetropolisHastings and doEnsembleSliceSampling and doEnsembleModifiedMHSampling##### + if continueSampling == True: + self.post_burn_in_samples = np.vstack((self.last_post_burn_in_samples, self.post_burn_in_samples )) + self.post_burn_in_log_posteriors_un_normed_vec = np.vstack( (np.array(self.last_post_burn_in_log_posteriors_un_normed_vec), np.array(self.post_burn_in_log_posteriors_un_normed_vec))) + if (self.UserInput.parameter_estimation_settings['mcmc_parallel_sampling'] or self.UserInput.parameter_estimation_settings['multistart_parallel_sampling']) == True: #If we're using certain parallel processing, we need to make calculatePostBurnInStatistics into True. + calculatePostBurnInStatistics = True; + if self.UserInput.parameter_estimation_settings['mcmc_parallel_sampling']: #mcmc_exportLog == True is needed for mcmc_parallel_sampling, but not for multistart_parallel_sampling + mcmc_exportLog=True + if calculatePostBurnInStatistics == True: + #FIXME: I think Below, calculate_post_burn_in_log_priors_vec=True should be false unless we are using continue sampling. For now, will leave it since I am not sure why it is currently set to True/False. + self.calculatePostBurnInStatistics(calculate_post_burn_in_log_priors_vec = True) #This function call will also filter the lowest probability samples out, when using default settings. + if self.UserInput.parameter_estimation_settings['convergence_diagnostics']: #Run convergence diagnostics if UserInput defines it as True + self.getConvergenceDiagnostics(discrete_chains_post_burn_in_samples) + if str(mcmc_exportLog) == 'UserChoice': + mcmc_exportLog = bool(self.UserInput.parameter_estimation_settings['mcmc_exportLog']) + if mcmc_exportLog == True: + self.exportPostBurnInStatistics() + if self.UserInput.parameter_estimation_settings['mcmc_parallel_sampling'] == True: #We don't call the below function at this time unless we are doing mcmc_parallel_sampling. For multistart_parallel_sampling the consolidation is done elsewhere and differently. + self.consolidate_parallel_sampling_data(parallelizationType="equal", mpi_cached_files_prefix='mcmc') + return [self.map_parameter_set, self.mu_AP_parameter_set, self.stdap_parameter_set, self.evidence, self.info_gain, self.post_burn_in_samples, self.post_burn_in_log_posteriors_un_normed_vec] + else: #In this case, we are probably doing a PermutationSearch or something like that and only want self.map_logP. + self.map_logP = max(self.post_burn_in_log_posteriors_un_normed_vec) + self.map_index = list(self.post_burn_in_log_posteriors_un_normed_vec).index(self.map_logP) #This does not have to be a unique answer, just one of them places which gives map_logP. + self.map_parameter_set = self.post_burn_in_samples[self.map_index] #This is the point with the highest probability in the posterior. + return self.map_logP + + def getLogPrior(self,discreteParameterVector): + if type(self.UserInput.model['custom_logPrior']) != type(None): + logPrior = self.UserInput.model['custom_logPrior'](discreteParameterVector) + return logPrior + boundsChecksPassed = self.doInputParameterBoundsChecks(discreteParameterVector) + if boundsChecksPassed == False: #If false, return a 'zero probability' type result. Else, continue getting log of prior.. + return float('-inf') #This approximates zero probability. + if self.UserInput.parameter_estimation_settings['scaling_uncertainties_type'] == "off": + discreteParameterVector_scaled = np.array(discreteParameterVector)*1.0 + elif self.UserInput.parameter_estimation_settings['scaling_uncertainties_type'] != "off": + if np.shape(self.UserInput.scaling_uncertainties)==np.shape(discreteParameterVector): + discreteParameterVector_scaled = np.array(discreteParameterVector)/self.UserInput.scaling_uncertainties + else: #TODO: If we're in the else statemnt, then the scaling uncertainties is a covariance matrix, for which we plan to do row and column scaling, which has not yet been implemented. #We could pobably just use the diagonal in the short term. + print("WARNING: There is an error in your self.UserInput.scaling_uncertainties. This probably means that your uncertainties array does not have a size matching the number of parameters expected by your simulation function. If this is not the situation, contact the developers with a bug report. Send your input file and simulation function file.") + discreteParameterVector_scaled = np.array(discreteParameterVector)*1.0 + + if hasattr(self.UserInput, 'InputParametersPriorValuesUniformDistributionsIndices') == False: #this is the normal case, no uniform distributionns. + logPrior = multivariate_normal.logpdf(x=discreteParameterVector_scaled,mean=self.UserInput.mu_prior_scaled,cov=self.UserInput.covmat_prior_scaled) + elif hasattr(self.UserInput, 'InputParametersPriorValuesUniformDistributionsIndices') == True: #This means that at least one variable has a uniform prior distribution. So we need to remove that parameter before doing the multivariate_normal.logpdf. + #Note that this if-statement is intentionally after the scaling uncertainties because that feature can be compatible with the uniform distribution. + discreteParameterVector_scaled_truncated = np.delete(discreteParameterVector_scaled, self.UserInput.InputParametersPriorValuesUniformDistributionsIndices) #delete does not change original array. + mu_prior_scaled_truncated = np.delete(self.UserInput.mu_prior_scaled, self.UserInput.InputParametersPriorValuesUniformDistributionsIndices) #delete does not change original array. + var_prior_scaled_truncated = np.delete(self.UserInput.var_prior_scaled, self.UserInput.InputParametersPriorValuesUniformDistributionsIndices) #delete does not change original array. + #Presently, we don't have full covmat support with uniform distributions. In principle, it would be better to use covmat_prior_scaled and delete the rows and columns since then we might have covmat support. + #For now, we just make the truncated covmat from the var_prior. We currently don't have full covmat support for the case of uniform distributions. + covmat_prior_scaled_truncated = np.diagflat(var_prior_scaled_truncated) + if len(covmat_prior_scaled_truncated) == 0: #if all variables are uniform, then need to return log(1) which is 0. + logPrior = 0 + else: + logPrior = multivariate_normal.logpdf(x=discreteParameterVector_scaled_truncated,mean=mu_prior_scaled_truncated,cov=covmat_prior_scaled_truncated) + #Note: Below code should be okay regardless of whether there are uniform distributions since it only adjusts logPrior by a scalar. + if self.UserInput.parameter_estimation_settings['undo_scaling_uncertainties_type'] == True: + try: + scaling_factor = float(self.UserInput.parameter_estimation_settings['scaling_uncertainties_type']) + logPrior = logPrior - np.log(scaling_factor) + except: + if self.UserInput.parameter_estimation_settings['scaling_uncertainties_type'] != "off": + print("Warning: undo_scaling_uncertainties_type is set to True, but can only be used with a fixed value for scaling_uncertainties_type. Skipping the undo.") + return logPrior + + def doInputParameterBoundsChecks(self, discreteParameterVector): #Bounds are considered part of the prior, so are set in InputParameterPriorValues_upperBounds & InputParameterPriorValues_lowerBounds + if len(self.UserInput.InputParameterPriorValues_upperBounds) > 0: + upperCheck = boundsCheck(discreteParameterVector, self.UserInput.InputParameterPriorValues_upperBounds, 'upper') + if upperCheck == False: + return False + if len(self.UserInput.InputParameterPriorValues_lowerBounds) > 0: + lowerCheck = boundsCheck(discreteParameterVector, self.UserInput.InputParameterPriorValues_lowerBounds, 'lower') + if lowerCheck == False: + return False + return True #If the test has gotten here without failing any of the tests, we return true. + + #The responses bounds check is different from the parmeter bounds check because responses are nested. + def doSimulatedResponsesBoundsChecks(self, simulatedResponses): #Bounds intended for the likelihood. + if len(self.UserInput.InputParameterPriorValues_upperBounds) > 0: + for responseIndex in self.UserInput.model['simulatedResponses_upperBounds']: + upperCheck = boundsCheck(simulatedResponses[responseIndex], self.UserInput.model['simulatedResponses_upperBounds'][responseIndex], 'upper') + if upperCheck == False: + return False + if len(self.UserInput.InputParameterPriorValues_lowerBounds) > 0: + for responseIndex in self.UserInput.model['simulatedResponses_lowerBounds']: + lowerCheck = boundsCheck(simulatedResponses[responseIndex], self.UserInput.model['simulatedResponses_lowerBounds'][responseIndex], 'lower') + if lowerCheck == False: + return False + return True #If the test has gotten here without failing any of the tests, we return true. + + #This helper function must be used because it allows for the output processing function etc. It has been separated from getLogLikelihood so that it can be used by doOptimizeSSR etc. + def getSimulatedResponses(self, discreteParameterVector): + simulationFunction = self.UserInput.simulationFunction #Do NOT use self.UserInput.model['simulateByInputParametersOnlyFunction'] because that won't work with reduced parameter space requests. + simulationOutputProcessingFunction = self.UserInput.simulationOutputProcessingFunction #Do NOT use self.UserInput.model['simulationOutputProcessingFunction'] because that won't work with reduced parameter space requests. + simulationOutput =simulationFunction(discreteParameterVector) + if type(simulationOutput)==type(None): + return None #This is intended for the case that the simulation fails. User can return "None" for the simulation output. + try:#This warning will not always work if there are multiple responses. #TODO: make this a loop across the number of responses. For now, just making it a "try" and "except" statement. + if np.array(simulationOutput).any()==float('nan'): + print("WARNING: Your simulation output returned a 'nan' for parameter values " +str(discreteParameterVector) + ". 'nan' values cannot be processed by the PEUQSE software and this set of Parameter Values is being assigned a probability of 0.") + return None #This is intended for the case that the simulation fails in some way without returning "None". + except: + pass + if type(simulationOutputProcessingFunction) == type(None): + simulatedResponses = simulationOutput + elif type(simulationOutputProcessingFunction) != type(None): + simulatedResponses = simulationOutputProcessingFunction(simulationOutput) + simulatedResponses = nestedObjectsFunctions.makeAtLeast_2dNested(simulatedResponses) + if self.doSimulatedResponsesBoundsChecks(simulatedResponses) == False: + simulatedResponses = None + #if self.UserInput.parameter_estimation_settings['exportAllSimulatedOutputs' == True: + #decided to always keep the lastSimulatedResponses in memory. Should be okay because only the most recent should be kept. + #At least, that is my understanding after searching for "garbage" here and then reading: http://www.digi.com/wiki/developer/index.php/Python_Garbage_Collection + self.lastSimulatedResponses = copy.deepcopy(simulatedResponses) + return simulatedResponses + + def getLogLikelihood(self,discreteParameterVector): #The variable discreteParameterVector represents a vector of values for the parameters being sampled. So it represents a single point in the multidimensional parameter space. + discreteParameterVectorTuple = tuple(np.ndarray.copy(np.array(discreteParameterVector))) #we use a tuple in case any of the functions try to change the parameters. + + #Check if user has provided a custom log likelihood function. + if type(self.UserInput.model['custom_logLikelihood']) != type(None): + logLikelihood, simulatedResponses = self.UserInput.model['custom_logLikelihood'](discreteParameterVectorTuple) + simulatedResponses = np.array(simulatedResponses).flatten() + return logLikelihood, simulatedResponses + #else pass is implied. + + #Now get the simulated responses. + simulatedResponses = self.getSimulatedResponses(discreteParameterVectorTuple) + #Failure checks: + if type(simulatedResponses) == type(None): + return float('-inf'), None #This is intended for the case that the simulation fails, indicated by receiving an 'nan' or None type from user's simulation function. + #Check if there are any 'nan' in the simulations array, and treat that as a failure also. + nans_in_array = np.isnan(simulatedResponses) + if True in nans_in_array: + return float('-inf'), None + #need to check if there are any 'responses_simulation_uncertainties'. + if type(self.UserInput.responses_simulation_uncertainties) == type(None): #if it's a None type, we keep it as a None type + responses_simulation_uncertainties = None + else: #Else we get it based on the the discreteParameterVectorTuple + responses_simulation_uncertainties = self.get_responses_simulation_uncertainties(discreteParameterVectorTuple) + + #Now need to do transforms. Transforms are only for calculating log likelihood. If responses_simulation_uncertainties is "None", then we need to have one less argument passed in and a blank list is returned along with the transformed simulated responses. + if type(responses_simulation_uncertainties) == type(None): + simulatedResponses_transformed, blank_list = self.transform_responses(simulatedResponses) #This creates transforms for any data that we might need it. The same transforms were also applied to the observed responses. + responses_simulation_uncertainties_transformed = None + simulated_responses_covmat_transformed = None + else: + simulatedResponses_transformed, responses_simulation_uncertainties_transformed = self.transform_responses(simulatedResponses, responses_simulation_uncertainties) #This creates transforms for any data that we might need it. The same transforms were also applied to the observed responses. + simulated_responses_covmat_transformed = returnShapedResponseCovMat(self.UserInput.num_response_dimensions, responses_simulation_uncertainties_transformed) #assume we got standard deviations back. + observedResponses_transformed = self.UserInput.responses_observed_transformed + #If our likelihood is “probability of Response given Theta”… we have a continuous probability distribution for both the response and theta. That means the pdf must use binning on both variables. Eric notes that the pdf returns a probability density, not a probability mass. So the pdf function here divides by the width of whatever small bin is being used and then returns the density accordingly. Because of this, our what we are calling likelihood is not actually probability (it’s not the actual likelihood) but is proportional to the likelihood. + #Thus we call it a probability_metric and not a probability. #TODO: consider changing names of likelihood and get likelihood to "likelihoodMetric" and "getLikelihoodMetric" + #Now we need to make the comprehensive_responses_covmat. + #First we will check whether observed_responses_covmat_transformed is square or not. The multivariate_normal.pdf function requires a diagonal values vector to be 1D. + observed_responses_covmat_transformed = self.observed_responses_covmat_transformed + + #For some cases, we should prepare to split the likelihood. + if self.prepareResponsesForSplitLikelihood == True: + simulatedResponses_transformed = nestedObjectsFunctions.convertToNested(simulatedResponses_transformed[0]) + if type(simulated_responses_covmat_transformed) != type(None): + simulated_responses_covmat_transformed = nestedObjectsFunctions.convertToNested(simulated_responses_covmat_transformed[0]) + observedResponses_transformed = nestedObjectsFunctions.convertToNested(observedResponses_transformed[0]) + observed_responses_covmat_transformed = nestedObjectsFunctions.convertToNested(observed_responses_covmat_transformed[0]) + #In general, the covmat could be a function of the responses magnitude and independent variables. So eventually, we will use non-linear regression or something to estimate it. However, for now we simply take the observed_responses_covmat_transformed which will work for most cases. + #TODO: use Ashi's nonlinear regression code (which he used in this paper https://www.sciencedirect.com/science/article/abs/pii/S0920586118310344). Put in the response magnitudes and the independent variables. + #in future it will be something like: if self.UserInput.covmat_regression== True: comprehensive_responses_covmat = nonLinearCovmatPrediction(self.UserInput['independent_variable_values'], observed_responses_covmat_transformed) + #And that covmat_regression will be on by default. We will need to have an additional argument for people to specify whether magnitude weighting and independent variable values should both be considered, or just one. + #First, get the shape of the covmat. + observed_responses_covmat_transformed_shape = np.shape(observed_responses_covmat_transformed) + if type(simulated_responses_covmat_transformed) == type(None): + comprehensive_responses_covmat = observed_responses_covmat_transformed + else: #Else we add the uncertainties, assuming they are orthogonal. Note that these are already covmats so are already variances that can be added directly. + comprehensive_responses_covmat = observed_responses_covmat_transformed + simulated_responses_covmat_transformed #TODO: I think think this needs to be moved own into the responseIndex loop to correctly handle staggered uncertainties. [like one response having full covmatrix and others not] + comprehensive_responses_covmat_shape = copy.deepcopy(observed_responses_covmat_transformed_shape) #no need to take the shape of the actual comprehensive_responses_covmat since they must be same. This is probably slightly less computation. + if (len(comprehensive_responses_covmat_shape) == 1) and (comprehensive_responses_covmat_shape[0]==1): #Matrix is square because has only one value. + log_probability_metric = multivariate_normal.logpdf(mean=simulatedResponses_transformed,x=observedResponses_transformed,cov=comprehensive_responses_covmat) + return log_probability_metric, simulatedResponses_transformed #Return this rather than going through loop further. + elif len(comprehensive_responses_covmat_shape) > 1 and (comprehensive_responses_covmat_shape[0] == comprehensive_responses_covmat_shape[1]): #Else it is 2D, check if it's square. + try: + log_probability_metric = multivariate_normal.logpdf(mean=simulatedResponses_transformed,x=observedResponses_transformed,cov=comprehensive_responses_covmat) + return log_probability_metric, simulatedResponses_transformed #Return this rather than going through loop further. + except: + pass #If it failed, we assume it is not square. For example, it could be 2 responses of length 2 each, which is not actually square. + #TODO: Put in near-diagonal solution described in github: https://github.com/AdityaSavara/PEUQSE/issues/3 + #If neither of the above return statements have occurred, we should go through the uncertainties per response. + log_probability_metric = 0 #Initializing since we will be adding to it. + for responseIndex in range(self.UserInput.num_response_dimensions): + #We will check if the response has too many values. If has too many values, then the covmat will be too large and will evaluate each value separately (with only variance, no covariance) in order to achive a linear scaling. + if len(simulatedResponses_transformed[responseIndex]) > self.UserInput.responses['responses_observed_max_covmat_size']: + calculate_log_probability_metric_per_value = True + response_log_probability_metric = 0 #initializing so that can check if it is a 'nan' or not a bit further down below. + else: + calculate_log_probability_metric_per_value = False + #no need oto intialize response_log_probability_metric. + #Now try to calculate response_log_probability_metric + if calculate_log_probability_metric_per_value == False: #The normal case. + try: #try to evaluate, but switch to individual values if there is any problem. + response_log_probability_metric = multivariate_normal.logpdf(mean=simulatedResponses_transformed[responseIndex],x=observedResponses_transformed[responseIndex],cov=comprehensive_responses_covmat[responseIndex]) #comprehensive_responses_covmat has to be 2D or has to be 1D array/list of variances of length equal to x. + except: + response_log_probability_metric = float('nan') #this keeps track of failure cases. + calculate_log_probability_metric_per_value = False + if calculate_log_probability_metric_per_value == True: + if response_log_probability_metric == float('nan'): # if a case failed... + response_log_probability_metric = -1E100 #Just initializing, then will add each probability separately. One for each **value** of this response dimension. The -1E100 is to penalize any cases responses that failed. + else: + response_log_probability_metric = 0 #No penalty if the 'per value' calculation is being done for non-failure reasons, like the number of values being too long to use a covmat directly. + for responseValueIndex in range(len(simulatedResponses_transformed[responseIndex])): + try: + current_log_probability_metric = multivariate_normal.logpdf(mean=simulatedResponses_transformed[responseIndex][responseValueIndex],x=observedResponses_transformed[responseIndex][responseValueIndex],cov=comprehensive_responses_covmat[responseIndex][responseValueIndex]) + except: #The above is to catch cases when the multivariate_normal fails. + current_log_probability_metric = float('-inf') + #response_log_probability_metric = current_log_probability_metric + response_log_probability_metric + if float(current_log_probability_metric) == float('-inf'): + print("Warning: There are posterior points that have zero probability. If there are too many points like this, the MAP and mu_AP returned will not be meaningful. Parameters:", discreteParameterVectorTuple) + current_log_probability_metric = -1E100 #Just choosing an arbitrarily very severe penalty. I know that I have seen 1E-48 to -303 from the multivariate pdf, and values inbetween like -171, -217, -272. I found that -1000 seems to be worse, but I don't have a systematic testing. I think -1000 was causing numerical errors. + response_log_probability_metric = current_log_probability_metric + response_log_probability_metric + log_probability_metric = log_probability_metric + response_log_probability_metric + return log_probability_metric, simulatedResponses_transformed + + def truncatePostBurnInSamples(self, post_burn_in_samples=[], parameterBoundsLower=None, parameterBoundsUpper=None): + """ + Truncate the post_burn_in_samples variable along with other variables that are relative to it. + Apply a lower and upper bound to a parameter to truncate. + Bounds are Inclusive. Set a None on a bound to not have it change. + Example of changing just lower bound for one parameter: parameterBounds = [(paramLowerBound, None)] + + :param post_burn_in_samples: Samples after mcmc run. (:type: np.array) + :param parameterBoundsLower: List of parameter lower bounds. Use None to indicate a bound not being applied. (:type: list) + :param parameterBoundsUpper: List of parameter upper bounds. Use None to indicate a bound not being applied. (:type: list) + """ + if post_burn_in_samples == []: + post_burn_in_samples = self.post_burn_in_samples + # truncate the post burn in samples according to the parameterBounds + truncated_post_burn_in_samples, truncated_mask = truncateSamples(post_burn_in_samples, parameterBoundsLower=parameterBoundsLower, parameterBoundsUpper=parameterBoundsUpper, returnMask=True) + # reassign class variables to the truncated versions + self.post_burn_in_samples = truncated_post_burn_in_samples + self.post_burn_in_log_posteriors_un_normed_vec = self.post_burn_in_log_posteriors_un_normed_vec[truncated_mask, :] + self.post_burn_in_log_priors_vec = self.post_burn_in_log_priors_vec[truncated_mask, :] + # return post_burn_in_samples + return truncated_post_burn_in_samples + + def makeHistogramsForEachParameter(self): + import PEUQSE.plotting_functions as plotting_functions + setMatPlotLibAgg(self.UserInput.plotting_ouput_settings['setMatPlotLibAgg']) + parameterSamples = self.post_burn_in_samples + parameterNamesAndMathTypeExpressionsDict = self.UserInput.parameterNamesAndMathTypeExpressionsDict + if hasattr(self.UserInput, 'histogram_plot_settings') == False: #put some defaults for backwards compatibility. + self.UserInput.histogram_plot_settings={} + plotting_functions.makeHistogramsForEachParameter(parameterSamples,parameterNamesAndMathTypeExpressionsDict, directory = self.UserInput.directories['graphs'], parameterInitialValue=self.UserInput.model['InputParameterPriorValues'], parameterMAPValue=self.map_parameter_set, parameterMuAPValue=self.mu_AP_parameter_set, histogram_plot_settings=self.UserInput.histogram_plot_settings) + + def makeSamplingScatterMatrixPlot(self, parameterSamples = [], parameterNamesAndMathTypeExpressionsDict={}, parameterNamesList =[], parameterMAPValue=[], parameterMuAPValue=[], parameterInitialValue = [], plot_settings={'combined_plots':'auto'}): + import pandas as pd #This is one of the only functions that use pandas. + import matplotlib.pyplot as plt + import PEUQSE.plotting_functions as plotting_functions + if 'dpi' not in plot_settings: plot_settings['dpi'] = 220 + if 'figure_name' not in plot_settings: plot_settings['figure_name'] = 'scatter_matrix_posterior' + if parameterSamples ==[] : parameterSamples = self.post_burn_in_samples + if parameterNamesAndMathTypeExpressionsDict == {}: parameterNamesAndMathTypeExpressionsDict = self.UserInput.parameterNamesAndMathTypeExpressionsDict + if parameterNamesList == []: parameterNamesList = self.UserInput.parameterNamesList #This is created when the parameter_estimation object is initialized. + if parameterMAPValue == []: parameterMAPValue = self.map_parameter_set + if parameterMuAPValue == []: parameterMuAPValue = self.mu_AP_parameter_set + if parameterInitialValue == []: parameterInitialValue = self.UserInput.model['InputParameterPriorValues'] + combined_plots = plot_settings['combined_plots'] + if 'individual_plots' in plot_settings: + individual_plots = plot_settings['individual_plots'] + else: #TODO: A. Savara added this code to prevent crashes for cases where individual_plots was not defined. However, it should be defined automatically before this point. + individual_plots = True + posterior_df = pd.DataFrame(parameterSamples,columns=[parameterNamesAndMathTypeExpressionsDict[x] for x in parameterNamesList]) + if combined_plots == 'auto': #by default, we will not make the scatter matrix when there are more than 5 parameters. + if (len(parameterNamesList) > 5) or (len(parameterNamesAndMathTypeExpressionsDict) > 5): + #For the case of 'auto' when the parameters is too large in number, we will turn off the combined plots. + combined_plots = False + #For the case of 'auto' we will then turn on the individual plots. + if self.UserInput.scatter_matrix_plots_settings['individual_plots'] == 'auto': + individual_plots = True + if individual_plots == True: #This means we will return individual plots. + #The below code was added by Troy Gustke and merged in to PEUQSE at end of June 2021. + # create graph variable for plotting options + graphs_directory = self.UserInput.directories['graphs'] + # combine all the solutions and meta data for each parameter posterior to the simulation. + # Zip parameters contain parameter columns in dataframe, parameter names, MAP, muAP, and initial value + finalParametersAndMetaData1 = zip(posterior_df.columns, parameterNamesAndMathTypeExpressionsDict.keys(), parameterMAPValue, parameterMuAPValue, parameterInitialValue) + finalParametersAndMetaData2 = zip(posterior_df.columns, parameterNamesAndMathTypeExpressionsDict.keys(), parameterMAPValue, parameterMuAPValue, parameterInitialValue) + # compare each parameter with only unique solutions + # i and j represent the index of an abstract matrix created from comparing the parameter vectors. + # The loop moves through the matrix and compares parameters by plotting but will only plot the bottom triangle of the matrix. + for param_a_index, (param_a_column, param_a_name, param_a_MAP, param_a_mu_AP, param_a_initial) in enumerate(finalParametersAndMetaData1): + for param_b_index, (param_b_column, param_b_name, param_b_MAP, param_b_mu_AP, param_b_initial) in enumerate(finalParametersAndMetaData2): + if param_a_index != param_b_index: + if self.UserInput.scatter_matrix_plots_settings['all_pair_permutations']: + plotting_functions.createScatterPlot(posterior_df[param_a_column], posterior_df[param_b_column], (param_a_column, param_a_name, param_a_MAP, param_a_mu_AP, param_a_initial), + (param_b_column, param_b_name, param_b_MAP, param_b_mu_AP, param_b_initial), graphs_directory, plot_settings) + else: + if param_a_index Responses Observed, mu_guess Simulated Responses, map_Simulated Responses, (mu_AP_simulatedResponses) > Values + if allResponses_x_values == []: + if flatten == True: + allResponses_x_values = np.array(self.UserInput.responses_abscissa).flatten() + allResponses_x_values = nestedObjectsFunctions.makeAtLeast_2dNested(allResponses_x_values) + if allResponsesListsOfYArrays ==[]: #In this case, we assume allResponsesListsOfYUncertaintiesArrays == [] also. + allResponsesListsOfYArrays = [] #Need to make a new list in the case that there was one already, to avoid overwriting the default argument object. + allResponsesListsOfYUncertaintiesArrays = [] #Set accompanying uncertainties list to a blank list in case it is not already one. Otherwise appending would mess up indexing. + simulationFunction = self.UserInput.simulationFunction #Do NOT use self.UserInput.model['simulateByInputParametersOnlyFunction'] because that won't work with reduced parameter space requests. + simulationOutputProcessingFunction = self.UserInput.simulationOutputProcessingFunction #Do NOT use self.UserInput.model['simulationOutputProcessingFunction'] because that won't work with reduced parameter space requests. + + #We already have self.UserInput.responses_observed, and will use that below. So now we get the simulated responses for the guess, MAP, mu_ap etc. + + #Get mu_guess simulated output and responses. + self.mu_guess_SimulatedOutput = simulationFunction( self.UserInput.InputParameterInitialGuess) #Do NOT use self.UserInput.model['InputParameterInitialGuess'] because that won't work with reduced parameter space requests. + if type(simulationOutputProcessingFunction) == type(None): + if flatten == True: + self.mu_guess_SimulatedOutput = np.array(self.mu_guess_SimulatedOutput).flatten() + self.mu_guess_SimulatedResponses = nestedObjectsFunctions.makeAtLeast_2dNested(self.mu_guess_SimulatedOutput) + self.mu_guess_SimulatedResponses = nestedObjectsFunctions.convertInternalToNumpyArray_2dNested(self.mu_guess_SimulatedResponses) + + + if type(simulationOutputProcessingFunction) != type(None): + if flatten == True: + self.mu_guess_SimulatedOutput = np.array(self.mu_guess_SimulatedOutput).flatten() + self.mu_guess_SimulatedResponses = nestedObjectsFunctions.makeAtLeast_2dNested( simulationOutputProcessingFunction(self.mu_guess_SimulatedOutput) ) + self.mu_guess_SimulatedResponses = nestedObjectsFunctions.convertInternalToNumpyArray_2dNested(self.mu_guess_SimulatedResponses) + #Check if we have simulation uncertainties, and populate if so. + if type(self.UserInput.responses_simulation_uncertainties) != type(None): + if flatten == True: + self.mu_guess_responses_simulation_uncertainties = np.array(self.get_responses_simulation_uncertainties(self.UserInput.InputParameterInitialGuess)).flatten() + self.mu_guess_responses_simulation_uncertainties = nestedObjectsFunctions.makeAtLeast_2dNested(self.mu_guess_responses_simulation_uncertainties) + self.mu_guess_responses_simulation_uncertainties = nestedObjectsFunctions.convertInternalToNumpyArray_2dNested(self.mu_guess_responses_simulation_uncertainties) + + #Get map simiulated output and simulated responses. + self.map_SimulatedOutput = simulationFunction(self.map_parameter_set) + if type(simulationOutputProcessingFunction) == type(None): + if flatten == True: + self.map_SimulatedOutput = np.array(self.map_SimulatedOutput).flatten() + self.map_SimulatedResponses = nestedObjectsFunctions.makeAtLeast_2dNested(self.map_SimulatedOutput) + self.map_SimulatedResponses = nestedObjectsFunctions.convertInternalToNumpyArray_2dNested(self.map_SimulatedResponses) + if type(simulationOutputProcessingFunction) != type(None): + if flatten == True: + self.map_SimulatedResponses= np.array(simulationOutputProcessingFunction(self.map_SimulatedOutput)).flatten() + self.map_SimulatedResponses = nestedObjectsFunctions.makeAtLeast_2dNested( self.map_SimulatedResponses ) + self.map_SimulatedResponses = nestedObjectsFunctions.convertInternalToNumpyArray_2dNested(self.map_SimulatedResponses) + #Check if we have simulation uncertainties, and populate if so. + if type(self.UserInput.responses_simulation_uncertainties) != type(None): + if flatten == True: + self.map_responses_simulation_uncertainties = np.array(self.get_responses_simulation_uncertainties(self.map_parameter_set)).flatten() + self.map_responses_simulation_uncertainties = nestedObjectsFunctions.makeAtLeast_2dNested(self.map_responses_simulation_uncertainties) + self.map_responses_simulation_uncertainties = nestedObjectsFunctions.convertInternalToNumpyArray_2dNested(self.map_responses_simulation_uncertainties) + if hasattr(self, 'mu_AP_parameter_set'): #Check if a mu_AP has been assigned. It is normally only assigned if mcmc was used. + #Get mu_AP simiulated output and simulated responses. + self.mu_AP_SimulatedOutput = simulationFunction(self.mu_AP_parameter_set) + if type(simulationOutputProcessingFunction) == type(None): + if flatten == True: + self.mu_AP_SimulatedOutput = np.array(self.mu_AP_SimulatedOutput).flatten() + self.mu_AP_SimulatedResponses = nestedObjectsFunctions.makeAtLeast_2dNested(self.mu_AP_SimulatedOutput) + self.mu_AP_SimulatedResponses = nestedObjectsFunctions.convertInternalToNumpyArray_2dNested(self.mu_AP_SimulatedResponses) + if type(simulationOutputProcessingFunction) != type(None): + if flatten == True: + self.mu_AP_SimulatedOutput = np.array(simulationOutputProcessingFunction(self.mu_AP_SimulatedOutput) ).flatten() + self.mu_AP_SimulatedResponses = nestedObjectsFunctions.makeAtLeast_2dNested( self.mu_AP_SimulatedOutput ) + self.mu_AP_SimulatedResponses = nestedObjectsFunctions.convertInternalToNumpyArray_2dNested(self.mu_AP_SimulatedResponses) + #Check if we have simulation uncertainties, and populate if so. + if type(self.UserInput.responses_simulation_uncertainties) != type(None): + if flatten == True: + self.mu_AP_responses_simulation_uncertainties = np.array(self.get_responses_simulation_uncertainties(self.mu_AP_parameter_set)).flatten() + self.mu_AP_responses_simulation_uncertainties = nestedObjectsFunctions.makeAtLeast_2dNested( self.mu_AP_responses_simulation_uncertainties) + self.mu_AP_responses_simulation_uncertainties = nestedObjectsFunctions.convertInternalToNumpyArray_2dNested(self.mu_AP_responses_simulation_uncertainties) + + + if flatten == True: + self.UserInput.num_response_dimensions = 1 + self.UserInput.responses_observed = [np.array(self.UserInput.responses_observed).flatten()] + self.UserInput.responses_observed_uncertainties = [np.array(self.UserInput.responses_observed_uncertainties).flatten()] + #Now to populate the allResponsesListsOfYArrays and the allResponsesListsOfYUncertaintiesArrays + for responseDimIndex in range(self.UserInput.num_response_dimensions): + if not hasattr(self, 'mu_AP_parameter_set'): #Check if a mu_AP has been assigned. It is normally only assigned if mcmc was used. + if self.UserInput.num_response_dimensions == 1: + listOfYArrays = [self.UserInput.responses_observed[responseDimIndex], self.mu_guess_SimulatedResponses[responseDimIndex], self.map_SimulatedResponses[responseDimIndex]] + allResponsesListsOfYArrays.append(listOfYArrays) + #Now to do uncertainties, there are two cases. First case is with only observed uncertainties and no simulation ones. + if type(self.UserInput.responses_simulation_uncertainties) == type(None): #This means there are no simulation uncertainties. So for each response dimension, there will be a list with only the observed uncertainties in that list. + allResponsesListsOfYUncertaintiesArrays.append( [self.UserInput.responses_observed_uncertainties[responseDimIndex]] ) #Just creating nesting, we need to give a list for each response dimension. + else: #This case means that there are some responses_simulation_uncertainties to include, so allResponsesListsOfYUncertaintiesArrays will have more dimensions *within* its nested values. + allResponsesListsOfYUncertaintiesArrays.append([self.UserInput.responses_observed_uncertainties[responseDimIndex],self.mu_guess_responses_simulation_uncertainties[responseDimIndex],self.map_responses_simulation_uncertainties[responseDimIndex]]) #We need to give a list for each response dimension. + elif self.UserInput.num_response_dimensions > 1: + listOfYArrays = [self.UserInput.responses_observed[responseDimIndex], self.mu_guess_SimulatedResponses[responseDimIndex], self.map_SimulatedResponses[responseDimIndex]] + allResponsesListsOfYArrays.append(listOfYArrays) + #Now to do uncertainties, there are two cases. First case is with only observed uncertainties and no simulation ones. + if type(self.UserInput.responses_simulation_uncertainties) == type(None): #This means there are no simulation uncertainties. So for each response dimension, there will be a list with only the observed uncertainties in that list. + allResponsesListsOfYUncertaintiesArrays.append( [self.UserInput.responses_observed_uncertainties[responseDimIndex]] ) #Just creating nesting, we need to give a list for each response dimension. + else: #This case means that there are some responses_simulation_uncertainties to include, so allResponsesListsOfYUncertaintiesArrays will have more dimensions *within* its nested values. + allResponsesListsOfYUncertaintiesArrays.append([self.UserInput.responses_observed_uncertainties[responseDimIndex],self.mu_guess_responses_simulation_uncertainties[responseDimIndex],self.map_responses_simulation_uncertainties[responseDimIndex]]) #We need to give a list for each response dimension. + if hasattr(self, 'mu_AP_parameter_set'): + if self.UserInput.num_response_dimensions == 1: + listOfYArrays = [self.UserInput.responses_observed[responseDimIndex], self.mu_guess_SimulatedResponses[responseDimIndex], self.map_SimulatedResponses[responseDimIndex], self.mu_AP_SimulatedResponses[responseDimIndex]] + allResponsesListsOfYArrays.append(listOfYArrays) + if type(self.UserInput.responses_simulation_uncertainties) == type(None): #This means there are no simulation uncertainties. So for each response dimension, there will be a list with only the observed uncertainties in that list. + allResponsesListsOfYUncertaintiesArrays.append( [self.UserInput.responses_observed_uncertainties[responseDimIndex]] ) #Just creating nesting, we need to give a list for each response dimension. + else: #This case means that there are some responses_simulation_uncertainties to include, so allResponsesListsOfYUncertaintiesArrays will have more dimensions *within* its nested values. + allResponsesListsOfYUncertaintiesArrays.append([self.UserInput.responses_observed_uncertainties[responseDimIndex],self.mu_guess_responses_simulation_uncertainties[responseDimIndex],self.map_responses_simulation_uncertainties[responseDimIndex],self.mu_AP_responses_simulation_uncertainties[responseDimIndex]]) #We need to give a list for each response dimension. + elif self.UserInput.num_response_dimensions > 1: + listOfYArrays = [self.UserInput.responses_observed[responseDimIndex], self.mu_guess_SimulatedResponses[responseDimIndex], self.map_SimulatedResponses[responseDimIndex], self.mu_AP_SimulatedResponses[responseDimIndex]] + allResponsesListsOfYArrays.append(listOfYArrays) + if type(self.UserInput.responses_simulation_uncertainties) == type(None): #This means there are no simulation uncertainties. So for each response dimension, there will be a list with only the observed uncertainties in that list. + allResponsesListsOfYUncertaintiesArrays.append( [self.UserInput.responses_observed_uncertainties[responseDimIndex]] ) #Just creating nesting, we need to give a list for each response dimension. + else: #This case means that there are some responses_simulation_uncertainties to include, so allResponsesListsOfYUncertaintiesArrays will have more dimensions *within* its nested values. + allResponsesListsOfYUncertaintiesArrays.append([self.UserInput.responses_observed_uncertainties[responseDimIndex],self.mu_guess_responses_simulation_uncertainties[responseDimIndex],self.map_responses_simulation_uncertainties[responseDimIndex],self.mu_AP_responses_simulation_uncertainties[responseDimIndex]]) #We need to give a list for each response dimension. + + if plot_settings == {}: + plot_settings = self.UserInput.simulated_response_plot_settings + if 'legendLabels' not in plot_settings: #The normal case: + if hasattr(self, 'mu_AP_parameter_set'): + plot_settings['legendLabels'] = ['observed', 'mu_guess', 'MAP','mu_AP'] + else: #Else there is no mu_AP. + plot_settings['legendLabels'] = ['observed', 'mu_guess', 'MAP'] + if hasattr(self, "opt_SSR"): #This means we are actually doing an optimization, and self.opt_SSR exists. + plot_settings['legendLabels'] = ['observed', 'mu_guess', 'CPE'] + #Other allowed settings are like this, but will be fed in as simulated_response_plot_settings keys rather than plot_settings keys. + #plot_settings['x_label'] = 'T (K)' + #plot_settings['y_label'] = r'$rate (s^{-1})$' + #plot_settings['y_range'] = [0.00, 0.025] #optional. + #plot_settings['figure_name'] = 'tprposterior' + if 'figure_name' not in plot_settings: + plot_settings['figurename'] = 'Posterior' + import PEUQSE.plotting_functions as plotting_functions + setMatPlotLibAgg(self.UserInput.plotting_ouput_settings['setMatPlotLibAgg']) + allResponsesFigureObjectsList = [] + for responseDimIndex in range(self.UserInput.num_response_dimensions): #TODO: Move the exporting out of the plot creation and/or rename the function and possibly have options about whether exporting graph, data, or both. + #Some code for setting up individual plot settings in case there are multiple response dimensions. + individual_plot_settings = copy.deepcopy(plot_settings) #we need to edit the plot settings slightly for each plot. + if self.UserInput.num_response_dimensions == 1: + responseSuffix = '' #If there is only 1 dimension, we don't need to add a suffix to the files created. That would only confuse people. + if self.UserInput.num_response_dimensions > 1: + responseSuffix = "_"+str(responseDimIndex) + individual_plot_settings['figure_name'] = individual_plot_settings['figure_name']+responseSuffix + if 'x_label' in plot_settings: + if type(plot_settings['x_label']) == type(['list']) and len(plot_settings['x_label']) > 1: #the label can be a single string, or a list of multiple response's labels. If it's a list of greater than 1 length, then we need to use the response index. + individual_plot_settings['x_label'] = plot_settings['x_label'][responseDimIndex] + if 'y_label' in plot_settings: + if type(plot_settings['y_label']) == type(['list']) and len(plot_settings['y_label']) > 1: #the label can be a single string, or a list of multiple response's labels. If it's a list of greater than 1 length, then we need to use the response index. + individual_plot_settings['y_label'] = plot_settings['y_label'][responseDimIndex] + #TODO, low priority: we can check if x_range and y_range are nested, and thereby allow individual response dimension values for those. + numberAbscissas = np.shape(allResponses_x_values)[0] + #We have a separate abscissa for each response. + print("line 3068", allResponses_x_values) + print("line 3069",allResponsesListsOfYArrays) + #print("line 3070",listOfYUncertaintiesArrays) + figureObject = plotting_functions.createSimulatedResponsesPlot(allResponses_x_values[responseDimIndex], allResponsesListsOfYArrays[responseDimIndex], individual_plot_settings, listOfYUncertaintiesArrays=allResponsesListsOfYUncertaintiesArrays[responseDimIndex], directory = self.UserInput.directories['graphs']) + # np.savetxt(self.UserInput.directories['logs_and_csvs']+individual_plot_settings['figure_name']+".csv", np.vstack((allResponses_x_values[responseDimIndex], allResponsesListsOfYArrays[responseDimIndex])).transpose(), delimiter=",", header='x_values, observed, sim_initial_guess, sim_MAP, sim_mu_AP', comments='') + allResponsesFigureObjectsList.append(figureObject) + return allResponsesFigureObjectsList #This is a list of matplotlib.pyplot as plt objects. + + def createMumpcePlots(self): + import PEUQSE.plotting_functions as plotting_functions + setMatPlotLibAgg(self.UserInput.plotting_ouput_settings['setMatPlotLibAgg']) + from PEUQSE.plotting_functions import plotting_functions_class + figureObject_beta = plotting_functions_class(self.UserInput) # The "beta" is only to prevent namespace conflicts with 'figureObject'. + parameterSamples = self.post_burn_in_samples + + #TODO: the posterior mu_vector and cov_matrix should be calculated elsewhere. + posterior_mu_vector = np.mean(parameterSamples, axis=0) + posterior_cov_matrix = np.cov(self.post_burn_in_samples.T) + self.posterior_cov_matrix = posterior_cov_matrix + #TODO: In future, worry about whether there are constants or not, since then we will have to trim down the prior. + #Make the model_parameter_info object that mumpce Project class needs. + self.UserInput.model_parameter_info = []#This variable name is for mumpce definition of variable names. Not what we would choose otherwise. + for parameterIndex, parameterName in enumerate(self.UserInput.parameterNamesAndMathTypeExpressionsDict): + individual_model_parameter_dictionary = {'parameter_number': parameterIndex, 'parameter_name': self.UserInput.parameterNamesAndMathTypeExpressionsDict[parameterName]} #we are actually putting the MathTypeExpression as the parameter name when feeding to mum_pce. + self.UserInput.model_parameter_info.append(individual_model_parameter_dictionary) + self.UserInput.model_parameter_info = np.array(self.UserInput.model_parameter_info) + if len(self.UserInput.contour_plot_settings['active_parameters']) == 0: + numParams = len(self.UserInput.model_parameter_info) + active_parameters = np.linspace(0, numParams-1, numParams) #just a list of whole numbers. + active_parameters = np.array(active_parameters, dtype='int') + else: + active_parameters = self.UserInput.contour_plot_settings['active_parameters'] + #TODO: reduce active_parameters by anything that has been set as a constant. + pairs_of_parameter_indices = self.UserInput.contour_plot_settings['parameter_pairs'] + if pairs_of_parameter_indices == []: + import itertools + all_pairs_iter = itertools.combinations(active_parameters, 2) + all_pairs_list = list(all_pairs_iter) + pairs_of_parameter_indices = all_pairs_list #right now these are tuples, and we need lists inside. + for pairIndex in range(len(pairs_of_parameter_indices)): + pairs_of_parameter_indices[pairIndex] = list(pairs_of_parameter_indices[pairIndex]) + elif type(pairs_of_parameter_indices[0]) == type('string'): + pairs_of_parameter_indices = self.UserInput.pairs_of_parameter_indices + for pairIndex in range(len(pairs_of_parameter_indices)): + firstParameter = int(self.UserInput.parameterNamesAndMathTypeExpressionsDict[pairIndex[0]]) + secondParameter = int(self.UserInput.parameterNamesAndMathTypeExpressionsDict[pairIndex[0]]) + pairs_of_parameter_indices[pairIndex] = [firstParameter, secondParameter] + #Below we populate any custom fields as necessary. These go into a separate argument when making mumpce plots + #Because these are basically arguments for a 'patch' on mumpce made by A. Savara and E. Walker. + contour_settings_custom = {} + # max_x/y_ticks and num_x/y_ticks are included in the following dict to keep backwards compatability + contour_settings_custom_fields = {'figure_name','fontsize','max_num_y_ticks','max_num_x_ticks','num_y_ticks','num_x_ticks','colormap_posterior_customized','colormap_prior_customized','contours_normalized','colorbars','axis_limits','dpi', 'num_pts_per_axis','cmap_levels', 'space_between_subplots', 'zoom_std_devs', 'x_ticks', 'y_ticks', 'center_on'} #This is a set, not a dictionary. + for custom_field in contour_settings_custom_fields: + if custom_field in self.UserInput.contour_plot_settings: + contour_settings_custom[custom_field] = self.UserInput.contour_plot_settings[custom_field] + #The colormap fields need to be removed if they are set to the default, because the default coloring is set in the mumpce class when they are not provided. + if 'colormap_posterior_customized' in contour_settings_custom: + if contour_settings_custom['colormap_posterior_customized'].lower() == 'default' or contour_settings_custom['colormap_posterior_customized'].lower() == 'auto': + del contour_settings_custom['colormap_posterior_customized'] + if 'colormap_prior_customized' in contour_settings_custom: + if contour_settings_custom['colormap_prior_customized'].lower() == 'default' or contour_settings_custom['colormap_prior_customized'].lower() == 'auto': + del contour_settings_custom['colormap_prior_customized'] + baseFigureName = contour_settings_custom['figure_name'] + #First make individual plots if requested. + if self.UserInput.contour_plot_settings['individual_plots'] == 'auto': + individual_plots = True + else: + individual_plots = self.UserInput.contour_plot_settings['individual_plots'] + if individual_plots == True: + for pair in pairs_of_parameter_indices: + contour_settings_custom['figure_name'] = self.UserInput.directories['graphs'] + baseFigureName + "__" + str(pair).replace('[','').replace(']','').replace(',','_').replace(' ','') + figureObject_beta.mumpce_plots(model_parameter_info = self.UserInput.model_parameter_info, active_parameters = active_parameters, pairs_of_parameter_indices = [pair], posterior_mu_vector = posterior_mu_vector, posterior_cov_matrix = posterior_cov_matrix, prior_mu_vector = np.array(self.UserInput.mu_prior), prior_cov_matrix = self.UserInput.covmat_prior, contour_settings_custom = contour_settings_custom) + #now make combined plots if requested. + if self.UserInput.contour_plot_settings['combined_plots'] == 'auto': + if len(pairs_of_parameter_indices) > 5: + combined_plots = False + else: + combined_plots = True + if combined_plots == True: + contour_settings_custom['figure_name'] = self.UserInput.directories['graphs']+baseFigureName + "__combined" + figureObject_beta.mumpce_plots(model_parameter_info = self.UserInput.model_parameter_info, active_parameters = active_parameters, pairs_of_parameter_indices = pairs_of_parameter_indices, posterior_mu_vector = posterior_mu_vector, posterior_cov_matrix = posterior_cov_matrix, prior_mu_vector = np.array(self.UserInput.mu_prior), prior_cov_matrix = self.UserInput.covmat_prior, contour_settings_custom = contour_settings_custom) + return figureObject_beta + + @CiteSoft.after_call_compile_consolidated_log(compile_checkpoints=True) #This is from the CiteSoft module. + def createAllPlots(self): + if self.UserInput.request_mpi == True: #need to check if UserInput.request_mpi is on, since if so we will only make plots after the final process. + import os; import sys + import PEUQSE.parallel_processing + if PEUQSE.parallel_processing.finalProcess == True: + pass#This will proceed as normal. + elif PEUQSE.parallel_processing.finalProcess == False: + return False #this will stop the plots creation. + + try: + self.makeHistogramsForEachParameter() + except: + print("Unable to make histograms plots. This usually means your model is not returning simulated results for most of the sampled parameter possibilities.") + + + try: + self.makeSamplingScatterMatrixPlot(plot_settings=self.UserInput.scatter_matrix_plots_settings) + except: + print("Unable to make scatter matrix plot. This usually means your run is not an MCMC run, or that the sampling did not work well. If you are using Metropolis-Hastings, try EnsembleSliceSampling or try a uniform distribution multistart.") + + + try: + self.makeScatterHeatMapPlots(plot_settings=self.UserInput.scatter_heatmap_plots_settings) + except: + print("Unable to make scatter heatmap plots. This usually means your run is not an MCMC run, or that the sampling did not work well. If you are using Metropolis-Hastings, try one of the other samplers: EnsembleSliceSampling, EnsembleJumpSampling, astroidal distribution multistart, or uniform distribution multistart.") + + try: + self.createMumpcePlots() + except: + print("Unable to make contour plots. This usually means your run is not an MCMC run. However, it could mean that your prior and posterior are too far from each other for plotting. You can change contour_plot_settings['colobars'] to false and can also change the contour_plot_settings['axis_limits'] if you know which region you wish to have plotted.") + + try: + self.createSimulatedResponsesPlots(allResponses_x_values=[], allResponsesListsOfYArrays =[], plot_settings={},allResponsesListsOfYUncertaintiesArrays=[]) #forcing the arguments to be blanks, because otherwise it might use some cached values. + except: + print("Unable to make simulated response plots. This is unusual and typically means your observed values and simulated values are not the same array shape. If so, that needs to be fixed.") + pass + + + self.createSimulatedResponsesPlots(allResponses_x_values=[], allResponsesListsOfYArrays =[], plot_settings={},allResponsesListsOfYUncertaintiesArrays=[], flatten=True) #forcing the arguments to be blanks, because otherwise it might use some cached values. + + + def save_to_dill(self, base_file_name, file_name_prefix ='', file_name_suffix='', file_name_extension='.dill'): + save_PE_object(self, base_file_name, file_name_prefix=file_name_prefix, file_name_suffix=file_name_suffix, file_name_extension=file_name_extension) + def load_from_dill(self, base_file_name, file_name_prefix ='', file_name_suffix='', file_name_extension='.dill'): + theObject = load_PE_object(base_file_name, file_name_prefix=file_name_prefix, file_name_suffix=file_name_suffix, file_name_extension=file_name_extension) + print("PE_object.load_from_dill executed. This function returns a new PE_object. To overwrite an existing PE_object, use PE_object = PE_object.load_from_dill(...)") + return theObject + +class verbose_optimization_wrapper: #Learned how to use callback from Henri's post https://stackoverflow.com/questions/16739065/how-to-display-progress-of-scipy-optimize-function + def __init__(self, simulationFunction): + self.simulationFunction = simulationFunction + self.FirstCall = True # Just intializing. + self.iterationNumber = 0 # Just intializing. + + def simulateAndStoreObjectiveFunction(self, discreteParameterVector): + #This class function is what we feed to the optimizer. It mainly keeps track of what has been tried so far. + simulationOutput = self.simulationFunction(discreteParameterVector) # the actual evaluation of the function + self.lastTrialDiscreteParameterVector = discreteParameterVector + self.lastTrialObjectiveFunction = simulationOutput + return simulationOutput + + def callback(self, discreteParameterVector, *extraArgs): + #This class function has to be passed in as the callback function argument to the optimizer. + #basically, it gets 'called' between iterations of the optimizer. + #Some optimizers give back extra args, so there is a *extraArgs argument above. + if self.FirstCall == True: + parameterNamesString = "" + for parameterIndex in range(len(discreteParameterVector)): + parameterName = f"Par-{parameterIndex+1}" + parameterNamesString += f"{parameterName:10s}\t" + headerString = "Iter " + parameterNamesString + "ObjectiveF" + print(headerString) + self.FirstCall = False + + iterationNumberString = "{0:4d} ".format(self.iterationNumber) + discreteParameterVector = self.lastTrialDiscreteParameterVector #We take the stored one rather than the one provided to make sure that we're getting the same one as the stored objective function. + parameterValuesString = "" + for parameterValue in discreteParameterVector: + parameterValuesString += f"{parameterValue:10.5e}\t" + currentObjectiveFunctionValue = f"{self.lastTrialObjectiveFunction:10.5e}" + iterationOutputString = iterationNumberString + parameterValuesString + currentObjectiveFunctionValue + print(iterationOutputString) + self.iterationNumber += 1 #In principle, could be done inside the simulateAndStoreObjectiveFunction, but this way it is after the itration number has been printed. + + +def convertPermutationsToSamples(permutations_MAP_logP_and_parameters_values, maxLogP=None, relativeFilteringThreshold=1E-2, priorsVector=None): + #The relative filtering threshold removes anything which has a probability lower than that relative to maxLogP. + #relativeFilteringThreshold should be a value between 0 and 1. + #the permutations_MAP_logP_and_parameters_values should have the form logP, Parameter1, Parameter2, etc. + #first get maxLogP if it's not provided. + permutationsArray = permutations_MAP_logP_and_parameters_values + if type(maxLogP) != type(None): + maxLogP = maxLogP + elif type(maxLogP) == type(None): + maxLogP= -1*float('inf') #initializing. + for element in permutationsArray: + if element[0] > maxLogP: + maxLogP = element[0] + #now calculate the absoluteFilteringThreshold: + absoluteFilteringThreshold = maxLogP + np.log(relativeFilteringThreshold) + #Now make the samples repetitions based no the logP values. + expandedArraysList = [] + for element in permutationsArray: + if element[0] > absoluteFilteringThreshold: + #If P2 is the smaller probability, here given by the absoluteFilteringThreshold, then... + #it turns out we want P1/P2 = e^(logP1-logP2), where the logs here are all base e, which is our situation. + #if it was base 10, we would want P1/P2 = 10^(log10(P1) -log10(P2) + numberOfRepetitionsNeeded = np.exp(element[0]-absoluteFilteringThreshold) + onesArray = np.ones((int(numberOfRepetitionsNeeded),len(element))) + repeatedArray = onesArray * element + expandedArraysList.append(repeatedArray) + elif element[0] < absoluteFilteringThreshold: + pass + return np.vstack(expandedArraysList) #This stacks the expandedArraysList into a single array. + + +'''Below are a bunch of functions for Euler's Method.''' +#This takes an array of dydt values. #Note this is a local dydtArray, it is NOT a local deltaYArray. +software_name = "Integrated Production (Objective Function)" +software_version = "1.0.0" +software_unique_id = "https://doi.org/10.1016/j.susc.2016.07.001" +software_kwargs = {"version": software_version, "author": ["Aditya Savara"], "doi": "https://doi.org/10.1016/j.susc.2016.07.001", "cite": "Savara, Aditya. 'Simulation and fitting of complex reaction network TPR: The key is the objective function.' Surface Science 653 (2016): 169-180."} +@CiteSoft.function_call_cite(unique_id=software_unique_id, software_name=software_name, **software_kwargs) +def littleEulerGivenArray(y_initial, t_values, dydtArray): + #numPoints = len(t_values) + simulated_t_values = t_values #we'll simulate at the t_values given. + simulated_y_values = np.zeros(len(simulated_t_values)) #just initializing. + simulated_y_values[0] = y_initial + dydt_values = dydtArray #We already have them, just need to calculate the delta_y values. + for y_index in range(len(simulated_y_values)-1): + localSlope = dydtArray[y_index] + deltat_resolution = t_values[y_index+1]-t_values[y_index] + simulated_y_values[y_index+1] = simulated_y_values[y_index] + localSlope * deltat_resolution +# print(simulated_t_values[y_index+1], simulated_y_values[y_index+1], localSlope, localSlope * deltat_resolution) +# print(simulated_y_values[y_index], simulated_t_values[y_index]*10-(simulated_t_values[y_index]**2)/2 +2) + return simulated_t_values, simulated_y_values, dydt_values + +#The initial_y_uncertainty is a scalar, the dydt_uncertainties is an array. t_values is an arrray, so the npoints don't need to be evenly spaced. +def littleEulerUncertaintyPropagation(dydt_uncertainties, t_values, initial_y_uncertainty=0, forceNonzeroInitialUncertainty=True): + y_uncertainties = dydt_uncertainties*0.0 + y_uncertainties[0] = initial_y_uncertainty #We have no way to make an uncertainty for point 0. + for index in range(len(dydt_uncertainties)-1): #The uncertainty for each next point is propagated through the uncertainty of the current value and the delta_t*(dy/dt uncertainty), since we are adding two values. + deltat_resolution = t_values[index+1]-t_values[index] + y_uncertainties[index+1] = ((y_uncertainties[index])**2+(dydt_uncertainties[index]*deltat_resolution)**2)**0.5 + if forceNonzeroInitialUncertainty==True: + if initial_y_uncertainty == 0: #Errors are caused if initial_y_uncertainty is left as zero, so we take the next uncertainty as an assumption for a reasonable base estimate of the initial point uncertainty. + y_uncertainties[0] = y_uncertainties[1] + return y_uncertainties + +#for calculating y at time t from dy/dt. +def littleEulerGivenFunction(y_initial, deltat_resolution, dydtFunction, t_initial, t_final): + numPoints = int((t_final-t_initial)/deltat_resolution)+1 + simulated_t_values = np.linspace(t_initial, t_final, numPoints) + simulated_y_values = np.zeros(len(simulated_t_values)) #just initializing. + dydt_values = np.zeros(len(simulated_t_values)) #just initializing. + simulated_y_values[0] = y_initial + for y_index in range(len(simulated_y_values)-1): + localSlope = dydtFunction(simulated_t_values[y_index] ) + dydt_values[y_index]=localSlope + simulated_y_values[y_index+1] = simulated_y_values[y_index] + localSlope * deltat_resolution +# print(simulated_t_values[y_index+1], simulated_y_values[y_index+1], localSlope, localSlope * deltat_resolution) +# print(simulated_y_values[y_index], simulated_t_values[y_index]*10-(simulated_t_values[y_index]**2)/2 +2) + return simulated_t_values, simulated_y_values, dydt_values + +def dydtNumericalExtraction(t_values, y_values, last_point_derivative = 0): + lastIndex = len(y_values)-1 + delta_y_numerical = np.diff(np.insert(y_values,lastIndex,y_values[lastIndex])) #The diff command gives one less than what is fed in, so we insert the last value again. This gives a final value derivative of 0. + delta_y_numerical[lastIndex] = last_point_derivative #now we set that last point to the optional argument. + #It is ASSUMED that the t_values are evenly spaced. + delta_t = t_values[1]-t_values[0] + dydtNumerical = delta_y_numerical/delta_t + return dydtNumerical +'''End of functions related to Euler's Method''' + +#TODO: move this into some kind of support module for parsing. Like XYYYDataFunctions or something like that. +def returnReducedIterable(iterableObjectToReduce, reducedIndices): + #If a numpy array or list is provided, the same will be returned. Else, a list will be returned. + #For arrays, only 1D and square 2D are supported. Anything else will only do the first axis. + reducedIterable = copy.deepcopy(iterableObjectToReduce) #Doing this initially so that unsupported cases will still return something. + + #In most cases, we use a little function that makes a list to do the reduction. + def returnReducedList(iterableObjectToReduce, reducedIndices): + reducedList = [] #just initializing. + for elementIndex,element in enumerate(iterableObjectToReduce): + if elementIndex in reducedIndices: + reducedList.append(element) + return reducedList + + #Now to do the actual reduction. + if type(iterableObjectToReduce)== type(np.array([0])): + if len(np.shape(iterableObjectToReduce)) == 1: #If it's 1D, we can just use a list and convert back to numpy array. + reducedIterableAsList = returnReducedList(iterableObjectToReduce, reducedIndices) + reducedIterable = np.array(reducedIterableAsList) + if len(np.shape(iterableObjectToReduce)) == 2: #If it's a 2D square matrix, then we will still support it. + if np.shape(iterableObjectToReduce)[0] == np.shape(iterableObjectToReduce)[1]: #Make sure it is square before trying to do more: + #FIRST GO ACROSS THE ROWS. + reducedIterableAsList = returnReducedList(iterableObjectToReduce, reducedIndices) + partiallyReducedIterable = np.array(reducedIterableAsList) + #NOW TRANSPOSE, DO IT AGAIN, AND THEN TRANSPOSE BACK. + partiallyReducedIterable = partiallyReducedIterable.transpose() + reducedIterableAsList = returnReducedList(partiallyReducedIterable, reducedIndices) + reducedIterable = np.array(reducedIterableAsList).transpose() #convert to array and transpose + else: #If it's 2D but not square, we just reduce along the row axis (main axis) + reducedIterableAsList = returnReducedList(iterableObjectToReduce, reducedIndices) + reducedIterable = np.array(reducedIterableAsList) + else: # the following is included in the else, type(iterableObjectToReduce)== type(['list']): + reducedIterable = returnReducedList(iterableObjectToReduce, reducedIndices) + if np.shape(reducedIterable) == np.shape(iterableObjectToReduce): + print("returnReducedIterable received an object type or size that is not supported.") + return reducedIterable + + + +def returnShapedResponseCovMat(numResponseDimensions, uncertainties): + #The uncertainties, whether transformed or not, must be one of the folllowing: a) for a single dimension response can be a 1D array of standard deviations, b) for as ingle dimension response can be a covmat already (so already variances), c) for a multidimensional response we *only* support standard deviations at this time. + if numResponseDimensions == 1: + shapedUncertainties = np.array(uncertainties, dtype="float") #Initializing variable. + if np.shape(shapedUncertainties)[0] == (1): #This means it's just a list of standard deviations and needs to be squared to become variances. + shapedUncertainties = np.square(shapedUncertainties) # Need to square standard deviations to make them into variances. + else: + shapedUncertainties = shapedUncertainties + elif numResponseDimensions > 1: #if the dimensionality of responses is greater than 1, we need to go through each one separately to check. + for responseIndex in range(numResponseDimensions): + shapedUncertainties = np.array(uncertainties, dtype="object") #Filling variable. + if np.shape(shapedUncertainties[responseIndex])[0] == (1): #This means it's just a list of standard deviations and needs to be squared to become variances. + shapedUncertainties[responseIndex] = np.square(shapedUncertainties[responseIndex]) # Need to square standard deviations to make them into variances. + else: + shapedUncertainties[responseIndex] = shapedUncertainties[responseIndex] + return shapedUncertainties + +def boundsCheck(values, valuesBounds, boundsType): + #Expects three arguments. + #the first two are 1D array like arguments (values and a set of *either* upper bounds or lower bounds) + #The third argumment is the type of bounds, either 'upper' or 'lower' + #In practice, this means the function usually needs to be called twice. + #A "None" type is expected for something that is not bounded in that direction. + + #We first need to make arrays and remove anything that is None in the bounds. + values = np.array(values).flatten() + valuesBounds = np.array(valuesBounds).flatten() + #to remove, we use brackets that pull out the indices where the comparison is not None. This is special numpy array syntax. + parametersTruncated = values[valuesBounds != None].flatten() #flattening because becomes mysteriously nested. On 6/28/22, removed the type call since python behavior changed. The line used to be: parametersTruncated = values[type(valuesBounds) != type(None)].flatten() + parametersBoundsTruncated = valuesBounds[valuesBounds != None].flatten() #flattening because becomes mysteriously nested. On 6/28/22, removed the type call since python behavior changed. The line used to be: parametersBoundsTruncated = valuesBounds[type(valuesBounds) != type(None)].flatten() + if boundsType.lower() == 'upper': #we make the input into lower case before proceeding. + upperCheck = parametersTruncated <= parametersBoundsTruncated #Check if all are smaller. + if False in upperCheck: #If any of them failed, we return False. + return False + else: + pass #else we do the lower bounds check next. + if boundsType.lower() == 'lower': + lowerCheck = parametersTruncated >= parametersBoundsTruncated #Check if all are smaller. + if False in lowerCheck: #If any of them failed, we return False. + return False + else: + pass + return True #If we have gotten down to here without returning False, both checks have passed and we return true. + +def arrayThresholdFilter(inputArray, filterKey=[], thresholdValue=0, removeValues = 'below', transpose=False): + #The thesholdFilter function takes an array and removes rows according to a filter key and thresholdValue. + #The filterKey should be a 1D array and will be taken as the first column of the array if not provided. + #The function finds where the filterKey is above or below the thresholdValue and then removes those rows from the original array. + #removeValues can be "above" or "below". + if len(inputArray) == 0: #This should not happen for normal usage, but it has been observed in practice. + return inputArray + if transpose == True: #This is meant for 2D arrays. + inputArray = np.array(inputArray).transpose() + if len(np.shape(inputArray)) == 1: + inputArray2D = np.atleast_2d(inputArray).transpose() + if len(filterKey) == 0: + filterKey == inputArray[0] + #Now some masking type things to delete the rows above a certain value. + filteringFailures = np.zeros(np.shape(filterKey)) + if removeValues.lower() == 'above': + filteringFailures[filterKey>thresholdValue] = 1 #False and True, where True is beyond the filter + if removeValues.lower() == 'below': + filteringFailures[filterKey float('-inf')] #this is numpy syntax for returning a filtered array with a particular condition, and here the condition is that for all rows the first value is > float('-inf'). + + if not isinstance(parameters_values, type(None)): + referencePoint = parameters_values + else: + # find Index where existingSamples[:,0] = logP_value, takes the first value encountered that has the lowest value. This handles equal differences. + indexToUse = np.abs(existingSamples[:,0] - logP_value).argmin() # finds the value that is closest to the input logP value + parameters_values = existingSamples[indexToUse] + referencePoint = parameters_values[1:] + + #now we will add a 0 in front to represent a logP_value. This will come in useful during subtractions. + referencePointWithZeroInFront = np.hstack(([0],referencePoint)) + + #Now calculate the sortBy array. + sortByCalculationsArray = copy.deepcopy(existingSamples) + if sortBy == 'absolute_delta': #take the deltas relative to the reference point, then take their absolute values. + sortByCalculationsArray = (existingSamples - referencePointWithZeroInFront) + sortByCalculationsArray[:,1:] = np.abs(sortByCalculationsArray[:,1:]) + if sortBy == 'relative_delta': #take the deltas relative to the reference point, then take their absolute values, then divide by absolute magnitudes. + sortByCalculationsArray = (existingSamples - referencePointWithZeroInFront) + sortByCalculationsArray[:,1:] = np.abs(sortByCalculationsArray[:,1:])/ np.abs(referencePointWithZeroInFront[1:]) #divide by all of the parameter magnitudes. + # Distance is calculated according to Sqrt(Sum((xi – xi0)^2)). This section only squares the residual. + if sortBy == 'absolute_distance': # take distance relative to reference point + sortByCalculationsArray = (existingSamples - referencePointWithZeroInFront)**2 + sortByCalculationsArray[:,1:] = np.abs(sortByCalculationsArray[:,1:]) + if sortBy == 'relative_distance': #take distance relative to reference point + sortByCalculationsArray = (existingSamples - referencePointWithZeroInFront)**2 + sortByCalculationsArray[:,1:] = np.abs(sortByCalculationsArray[:,1:])/ np.abs(referencePointWithZeroInFront[1:]**2) #this converts into relative distance since (xi - xi0)**2/xi0**2 = ((xi - xi0)/xi)**2 + + # we must sum over the rows only, so axis=1 is necessary. + # The axis is added to allow for hstack to work. Must be a 2d array. + # Sum((xi – xi0)^2) is guided by: + objectiveFunctionArray = np.sum(sortByCalculationsArray[:,1:], axis=1)[:, np.newaxis] # add an axis to make 2d array + + # check if criteria is by distance, if so then wrap the evaluation in a sqrt. + # Sqrt(Sum((xi – xi0)^2)) is guided by: + if 'distance' in sortBy: + objectiveFunctionArray = np.sqrt(objectiveFunctionArray) + + #now we can stack this in front of the existingSamples for sorting. + arrayToSort = np.hstack((objectiveFunctionArray, existingSamples)) + + #now sort it. + sortedArray = arrayToSort[arrayToSort[:,0].argsort()] #by default this will be smallest to largest, which is what we want. + + # have only unique points if unique_points is True + if unique_points: + sortedArray = np.unique(sortedArray, axis=0) + + extractedSamples_with_objective_function_and_logP = sortedArray[0:numPointsToGet].T #extract the relevant rows and transform to appropriate shape of (numPointsToGet, numParameters) + + # seperate values into separate variables. + extracted_objective_values = extractedSamples_with_objective_function_and_logP[0] + extracted_logP_values = extractedSamples_with_objective_function_and_logP[1] + extracted_parameter_samples = extractedSamples_with_objective_function_and_logP[2:].T + + #pickle pointes to easily be used as initial guess + pickleAnObject(extracted_parameter_samples, pickleFileName) + # return parameter samples, logP values, and objective values separately + return extracted_parameter_samples, extracted_logP_values, extracted_objective_values + +def truncateSamples(samples, parameterBoundsLower=None, parameterBoundsUpper=None, returnMask=False): + """ + Truncate samples by bounding the parameter space. Put None in bounds that are not truncated. + Parameter bounds are inclusive. + + :param samples: Samples after mcmc run. (:type: np.array) + :param parameterBoundsLower: List of parameter lower bounds. Use None to indicate a bound not being applied. (:type: list) + :param parameterBoundsUpper: List of parameter upper bounds. Use None to indicate a bound not being applied. (:type: list) + :param returnMask: Boolean value to return the mask along with the samples. (:type: bool) + """ + parameterBounds = zip(parameterBoundsLower, parameterBoundsUpper) + # check length of parameter bounds + if samples.shape[1] != len(parameterBounds): + print('The samples must have shape (numSamples, numParameters) and parameterBounds must be a list of tuples containing the lower and upper bounds for a parameter. The parameters bounds must be in the same order as the parameters ordered in the samples variable.') + sys.exit() + # apply a mask to truncate samples relative to parameter bounds + for param_index, paramBounds in enumerate(parameterBounds): + lowerBound, upperBound = paramBounds + # check if Nones were input, this indicates to not truncate the parameter + if (isinstance(lowerBound, type(None))) and (isinstance(upperBound, type(None))): + continue # skips to the next iteration + elif isinstance(lowerBound, type(None)): # create mask for lower bound + truncatedMask = (samples[:, param_index] <= upperBound) + elif isinstance(upperBound, type(None)): # create mask for upper bound + truncatedMask = (samples[:, param_index] >= lowerBound) + else: # create mask for lower and upper bound + truncatedMask = ((samples[:, param_index] >= lowerBound) & (samples[:, param_index] <= upperBound)) + samples = samples[truncatedMask, :] # truncate number of samples from the mask + if returnMask: + return samples, truncatedMask + else: + return samples + +def splitSamples(samples, parameter_indices, all_parameters_splitting_values): + """ + Split samples at a given value(s). + The samples will be returned in order. + Only supports splitting across one parameter for now. + + :param samples: Parameter samples with shape (numSamples, numParams) (:type: np.array) + :param parameter_indicies: Indices of parameters that are considered when splitting. Only supports one parameter. Ex: [3] (:type: list of ints) + :param all_parameters_splitting_values: List of values to split at. Only supports splitting for one parameter. Ex: [[1,2,3]] (:type: list of lists) + """ + # check if parameter indices is not in a list + if isinstance(parameter_indices, int): + parameter_indices = [parameter_indices] + # make sure the splitting_values variable is a list of lists, or something similar + all_parameters_splitting_values = nestedObjectsFunctions.makeAtLeast_2dNested(all_parameters_splitting_values) + # check if parameter indices is not one, right now only one parameter can be handled + if len(parameter_indices) != 1: + print('This function (splitSamples) only supports splitting across one parameter for now.') + sys.exit() + #TODO: change code to make handle multiple parameters, currently it will not + parameter_index = parameter_indices[0] + splitting_values = all_parameters_splitting_values[0] + # sort samples + sorted_indices = np.argsort(samples[:, parameter_index], axis=0)[:, np.newaxis] # add newaxis to make samples and sorted_indices the same dimensions + sorted_samples = np.take_along_axis(samples, sorted_indices, axis=0) + # find splitting spots + split_at = sorted_samples[:, parameter_index].searchsorted(splitting_values) + split_samples = np.split(sorted_samples, split_at) # split_at must be a list-like object + # return list of arrays + return split_samples + +def calculateAndPlotConvergenceDiagnostics(discrete_chains_post_burn_in_samples, parameterNamesAndMathTypeExpressionsDict, plot_settings={}, graphs_directory='./', createPlots=True): + """ + Calls other convergence functions to do calculations and make plots. + + :param discrete_chains_post_burn_in_samples: Samples with specific arrays for chains. (:type: np.array) + :param parameterNamesAndMathTypeExpressionsDict: Dictionary with parameter name and symbol (:type dict) + :param plot_settings: Plotting settings from UserInput (:type: dict) + :param graphs_directory: Path to save graphs. (:type: str) + :param createPlots: Flag to create plots after convergence analysis. (:type: bool) + """ + from warnings import catch_warnings, simplefilter + # makes sure the plot settings is populated before plotting + if len(plot_settings)==0: + createPlots=False + try: + # use the zeus AutoCorrTime function for all calculations. + from zeus.autocorr import AutoCorrTime + # create window sizes that increase on a log scale. + window_indices_act = np.exp(np.linspace(0, np.log(discrete_chains_post_burn_in_samples.shape[0]), 21)).astype(int)[1:] + # initialize array with shape (N_intervals, numParams) + taus_zeus = np.empty((len(window_indices_act), discrete_chains_post_burn_in_samples.shape[2])) + # populate taus using zeus AutoCorrTime function where lag length is determined by Sokal 1989. + # For more information on Integrated Autocorrelation time see https://emcee.readthedocs.io/en/stable/tutorials/autocorr/ + with catch_warnings(): # suppress warnings from ACT function + simplefilter('ignore') + for i, n in enumerate(window_indices_act): # loop through the window indices to get larger and larger windows + # since size is (numSamples, numChains, numParameters), we pass in limited samples up to the window size index + # while passing in every chain and parameter + taus_zeus[i] = AutoCorrTime(discrete_chains_post_burn_in_samples[:n,:,:]) + + # create plots using PEUQSE plotting functions file. + from PEUQSE.plotting_functions import createAutoCorrTimePlot + # create plots for each parameter. The parameter names and symbols are unpacked from the dictionary. + # loop through each parameter act values to plot and assign to self convergence + parameter_act_for_each_window = {} + combined_parameter_act_for_each_window = np.ones((len(window_indices_act),)) + heuristic_exponent_value = 1 # for individual parameters, the heuristic line is 50tau + for param_taus, (parameter_name, parameter_math_name) in zip(taus_zeus.T, parameterNamesAndMathTypeExpressionsDict.items()): + # only plot if createPlots is True + if createPlots: + createAutoCorrTimePlot(window_indices_act, param_taus, parameter_name, parameter_math_name, heuristic_exponent_value, graphs_directory) + parameter_act_for_each_window[parameter_name] = param_taus + # combine parameters by adding log(ACT) or just by multiplying + combined_parameter_act_for_each_window *= param_taus + # create combined parameters plot for ACT + heuristic_exponent_value = discrete_chains_post_burn_in_samples.shape[2] # reassign to the number of combined parameters, which is all parameters + createAutoCorrTimePlot(window_indices_act, combined_parameter_act_for_each_window, 'Combined_Parameters', 'All Parameters', heuristic_exponent_value, graphs_directory) + + except Exception as theError: + window_indices_act = None + taus_zeus = None + parameter_act_for_each_window = None + print('The AutoCorrelation Time plots have failed to be created. The error was:', theError) + try: # prevents crashing when running convergence diagnostics on short chains or weird models + # We previously used ARVIZ version 0.11.0 with the below syntax and switched in July 2022. + # from arviz import geweke + # local_z_score = geweke(discrete_chains_post_burn_in_samples[:window, chain_num, param_num]) + from PEUQSE.plotting_functions import createGewekePlot + # create a linearly space array for creating window sizes for Geweke percent diagnostic + window_indices_geweke = np.linspace(0, discrete_chains_post_burn_in_samples.shape[0], 21).astype(int)[1:] + # loop through each param, each chain, and each window size + # Geweke function is called for each window size. The full window (last one) is saved for plotting. + total_z_scores = [] # initialize list for combining parameters. + for param_num, (parameter_name, parameter_math_name) in enumerate(parameterNamesAndMathTypeExpressionsDict.items()): + z_scores_array_per_chain = [] # initialize list for number of windows + for chain_num in range(discrete_chains_post_burn_in_samples.shape[1]): + z_scores_array_per_window = [] # initialize the list + for window in window_indices_geweke: + # calculate z scores for each window. Use default settings of first 10% and last 50% of points to compare. + with catch_warnings(): + simplefilter('ignore') + local_z_score = geweke_diagnostic(discrete_chains_post_burn_in_samples[:window, chain_num, param_num]) + # checks if it is the last window. If yes, save the indices. Save for plotting and all last windows are the same. + if window == window_indices_geweke[-1]: + z_scores_final_indices = local_z_score.T[0] + z_scores_array_per_window.append(local_z_score.T[1]) + z_scores_array_per_chain.append(z_scores_array_per_window) + z_scores_array_per_chain = np.array(z_scores_array_per_chain) + # save all chains for combining all parameters. + total_z_scores.append(z_scores_array_per_chain) + z_scores_array = np.mean(np.abs(z_scores_array_per_chain), axis=0) + # use numpy function to count how many z values fall outside 1 std. Divide by total values to get percent (decimal) + z_scores_percentage_outlier = np.count_nonzero(z_scores_array>1, axis=1) / z_scores_array.shape[1] + # save last window for plotting. + z_scores_final = z_scores_array[:,-1] + z_scores_geweke_final_plot_inputs = [z_scores_final_indices, z_scores_final] # allows for easier plotting with unpacking. + # now plot using PEUQSE.plotting function if createPlots is True + if createPlots: + createGewekePlot(z_scores_geweke_final_plot_inputs, window_indices_geweke, z_scores_percentage_outlier, parameter_name, parameter_math_name, graphs_directory) + # get combined parameter Geweke plot + total_z_scores = np.array(total_z_scores) + # abs and average across the parameters. + z_scores_sum_params = np.mean(np.abs(total_z_scores), axis=0) + # average across each chain after params are averaged. + z_scores_sum_params_and_chains = np.mean(z_scores_sum_params, axis=0) + # save final window for plotting and self convergence. + z_scores_sum_params_final = z_scores_sum_params_and_chains[:, -1] + # use numpy function to count how many z values fall outside 1 std. Divide by total values to get percent (decimal) + z_scores_sum_params_percentage_outlier = np.count_nonzero(z_scores_sum_params_and_chains>1, axis=1) / z_scores_sum_params_and_chains.shape[1] + z_scores_sum_params_geweke_final_plot_inputs = [z_scores_final_indices, z_scores_sum_params_final] # allows for easier plotting with unpacking. + # now plot using PEUQSE.plotting function if createPlots is True + if createPlots: + createGewekePlot(z_scores_sum_params_geweke_final_plot_inputs, window_indices_geweke, z_scores_sum_params_percentage_outlier, 'Combined_Parameters', 'All Parameters', graphs_directory) + + except Exception as theError: + print('Could not calculated Geweke convergence analysis. The chain length may be too small, so more samples are recommended.') + print('The Geweke diagnostic graphs failed to be created. The error was:', theError) + window_indices_geweke = None + z_scores_sum_params_final = None + z_scores_sum_params_percentage_outlier = None + # return both window_indicies, final ACT values each param, final ACT values each param and window, final z scores summed parameters, and final summed parameters percent outliers + return (window_indices_act, taus_zeus[-1,:], parameter_act_for_each_window, window_indices_geweke, z_scores_sum_params_final, z_scores_sum_params_percentage_outlier) + +def geweke_diagnostic(post_burn_in_samples, initial_window=0.1, comparison_window=0.5, intervals=20): + """ Geweke diagnostic for convergence of MCMC sampling. + Z scores are compared from the initial window to a final window of the sampling. + + :param post_burn_in_samples: Samples in MCMC sampling after burn in period. (:type: np.array) + :param initial_window: Percent of initial samples to be compared. (:type: float) + :param comparison_window: Percent of final samples to be compared to initial values. (:type: float) + :param intervals: Number of intervals for windows to be compared. (:type: int) + + Geweke function based on logic from arviz module file diagnostics.py version=0.11.0 + """ + for interval in (initial_window, comparison_window): + if interval <= 0 or interval >= 1: + raise ValueError("Invalid intervals for Geweke convergence analysis:", (initial_window, comparison_window), "Must be between 0 and 1") + if initial_window + comparison_window >= 1: + raise ValueError("Invalid intervals for Geweke convergence analysis:", (initial_window, comparison_window), "first and last intervals should not overlap.") + + # Initialize list of z-scores + z_scores_total = [] + + # Last index value of the input samples + last_index = len(post_burn_in_samples) - 1 + + # Start intervals going up to the start of the comparison window of the chain + last_start_index = (1 - comparison_window) * last_index + + # Calculate starting indices + start_indices = np.linspace(0, last_start_index, num=intervals, endpoint=True, dtype=int) + + # Loop over start indices + for start in start_indices: + # Calculate slices + first_slice = post_burn_in_samples[start : start + int(initial_window * (last_index - start))] + last_slice = post_burn_in_samples[int(last_index - comparison_window * (last_index - start)) :] + + z_score = first_slice.mean() - last_slice.mean() + z_score /= np.sqrt(first_slice.var() + last_slice.var()) + + z_scores_total.append([start, z_score]) + + return np.array(z_scores_total) + + + +if __name__ == "__main__": + pass + From 2ca77e2a47922ed02fbeeb0ac4bfb1ad93bbb177 Mon Sep 17 00:00:00 2001 From: AdityaSavara <39929571+AdityaSavara@users.noreply.github.com> Date: Wed, 3 Aug 2022 19:37:39 -0400 Subject: [PATCH 02/23] Adding the new "flatten = False" argument and creating the new function call for it. --- PEUQSE/InverseProblem.py | 10 +++++++++- PEUQSE/InverseProblem_scratch.py | 9 +++++++-- 2 files changed, 16 insertions(+), 3 deletions(-) diff --git a/PEUQSE/InverseProblem.py b/PEUQSE/InverseProblem.py index a81cba21..a5214f5c 100644 --- a/PEUQSE/InverseProblem.py +++ b/PEUQSE/InverseProblem.py @@ -2918,7 +2918,7 @@ def makeScatterHeatMapPlots(self, parameterSamples = [], parameterNamesAndMathTy plotting_functions.createScatterHeatMapPlot(posterior_df[param_a_column], posterior_df[param_b_column], (param_a_column, param_a_name, param_a_MAP, param_a_mu_AP, param_a_initial), (param_b_column, param_b_name, param_b_MAP, param_b_mu_AP, param_b_initial), graphs_directory, plot_settings) - def createSimulatedResponsesPlots(self, allResponses_x_values=[], allResponsesListsOfYArrays =[], plot_settings={},allResponsesListsOfYUncertaintiesArrays=[] ): + def createSimulatedResponsesPlots(self, allResponses_x_values=[], allResponsesListsOfYArrays =[], plot_settings={},allResponsesListsOfYUncertaintiesArrays=[], flatten = False): #allResponsesListsOfYArrays is to have 3 layers of lists: Response > Responses Observed, mu_guess Simulated Responses, map_Simulated Responses, (mu_AP_simulatedResponses) > Values if allResponses_x_values == []: allResponses_x_values = nestedObjectsFunctions.makeAtLeast_2dNested(self.UserInput.responses_abscissa) @@ -3158,6 +3158,14 @@ def createAllPlots(self): except: print("Unable to make simulated response plots. This is unusual and typically means your observed values and simulated values are not the same array shape. If so, that needs to be fixed.") pass + + + #Now we will call createSimulatedResponsesPlots again with flatten = True so that the series get plotted. + try: + self.createSimulatedResponsesPlots(allResponses_x_values=[], allResponsesListsOfYArrays =[], plot_settings={},allResponsesListsOfYUncertaintiesArrays=[], flatten = True) #forcing the arguments to be blanks, because otherwise it might use some cached values. + except: + print("Unable to make simulated response plots. This is unusual and typically means your observed values and simulated values are not the same array shape. If so, that needs to be fixed.") + pass def save_to_dill(self, base_file_name, file_name_prefix ='', file_name_suffix='', file_name_extension='.dill'): save_PE_object(self, base_file_name, file_name_prefix=file_name_prefix, file_name_suffix=file_name_suffix, file_name_extension=file_name_extension) diff --git a/PEUQSE/InverseProblem_scratch.py b/PEUQSE/InverseProblem_scratch.py index c4a37874..aab23c3c 100644 --- a/PEUQSE/InverseProblem_scratch.py +++ b/PEUQSE/InverseProblem_scratch.py @@ -2920,6 +2920,7 @@ def makeScatterHeatMapPlots(self, parameterSamples = [], parameterNamesAndMathTy def createSimulatedResponsesPlots(self, allResponses_x_values=[], allResponsesListsOfYArrays =[], plot_settings={},allResponsesListsOfYUncertaintiesArrays=[], flatten = False): #allResponsesListsOfYArrays is to have 3 layers of lists: Response > Responses Observed, mu_guess Simulated Responses, map_Simulated Responses, (mu_AP_simulatedResponses) > Values + #flatten = True will convert the individual responses into a 'single response series' if allResponses_x_values == []: if flatten == True: allResponses_x_values = np.array(self.UserInput.responses_abscissa).flatten() @@ -3189,8 +3190,12 @@ def createAllPlots(self): pass - self.createSimulatedResponsesPlots(allResponses_x_values=[], allResponsesListsOfYArrays =[], plot_settings={},allResponsesListsOfYUncertaintiesArrays=[], flatten=True) #forcing the arguments to be blanks, because otherwise it might use some cached values. - + #Now we will call createSimulatedResponsesPlots again with flatten = True so that the series get plotted. + try: + self.createSimulatedResponsesPlots(allResponses_x_values=[], allResponsesListsOfYArrays =[], plot_settings={},allResponsesListsOfYUncertaintiesArrays=[], flatten = True) #forcing the arguments to be blanks, because otherwise it might use some cached values. + except: + print("Unable to make simulated response plots. This is unusual and typically means your observed values and simulated values are not the same array shape. If so, that needs to be fixed.") + pass def save_to_dill(self, base_file_name, file_name_prefix ='', file_name_suffix='', file_name_extension='.dill'): save_PE_object(self, base_file_name, file_name_prefix=file_name_prefix, file_name_suffix=file_name_suffix, file_name_extension=file_name_extension) From 7e4834863abdb3792265fa74dfd0e8469f72179f Mon Sep 17 00:00:00 2001 From: AdityaSavara <39929571+AdityaSavara@users.noreply.github.com> Date: Wed, 3 Aug 2022 19:58:00 -0400 Subject: [PATCH 03/23] removing self from function gradually: num_response_dimensions --- PEUQSE/InverseProblem.py | 16 +++++++++------- PEUQSE/InverseProblem_scratch.py | 17 +++++++++-------- 2 files changed, 18 insertions(+), 15 deletions(-) diff --git a/PEUQSE/InverseProblem.py b/PEUQSE/InverseProblem.py index a5214f5c..df2f687e 100644 --- a/PEUQSE/InverseProblem.py +++ b/PEUQSE/InverseProblem.py @@ -2920,6 +2920,7 @@ def makeScatterHeatMapPlots(self, parameterSamples = [], parameterNamesAndMathTy def createSimulatedResponsesPlots(self, allResponses_x_values=[], allResponsesListsOfYArrays =[], plot_settings={},allResponsesListsOfYUncertaintiesArrays=[], flatten = False): #allResponsesListsOfYArrays is to have 3 layers of lists: Response > Responses Observed, mu_guess Simulated Responses, map_Simulated Responses, (mu_AP_simulatedResponses) > Values + #flatten = True will convert the individual responses into a 'single response series' if allResponses_x_values == []: allResponses_x_values = nestedObjectsFunctions.makeAtLeast_2dNested(self.UserInput.responses_abscissa) if allResponsesListsOfYArrays ==[]: #In this case, we assume allResponsesListsOfYUncertaintiesArrays == [] also. @@ -2971,9 +2972,10 @@ def createSimulatedResponsesPlots(self, allResponses_x_values=[], allResponsesLi self.mu_AP_responses_simulation_uncertainties = nestedObjectsFunctions.convertInternalToNumpyArray_2dNested(self.mu_AP_responses_simulation_uncertainties) #Now to populate the allResponsesListsOfYArrays and the allResponsesListsOfYUncertaintiesArrays - for responseDimIndex in range(self.UserInput.num_response_dimensions): + num_response_dimensions = self.UserInput.num_response_dimensions + for responseDimIndex in range(num_response_dimensions): if not hasattr(self, 'mu_AP_parameter_set'): #Check if a mu_AP has been assigned. It is normally only assigned if mcmc was used. - if self.UserInput.num_response_dimensions == 1: + if num_response_dimensions == 1: listOfYArrays = [self.UserInput.responses_observed[responseDimIndex], self.mu_guess_SimulatedResponses[responseDimIndex], self.map_SimulatedResponses[responseDimIndex]] allResponsesListsOfYArrays.append(listOfYArrays) #Now to do uncertainties, there are two cases. First case is with only observed uncertainties and no simulation ones. @@ -2981,7 +2983,7 @@ def createSimulatedResponsesPlots(self, allResponses_x_values=[], allResponsesLi allResponsesListsOfYUncertaintiesArrays.append( [self.UserInput.responses_observed_uncertainties[responseDimIndex]] ) #Just creating nesting, we need to give a list for each response dimension. else: #This case means that there are some responses_simulation_uncertainties to include, so allResponsesListsOfYUncertaintiesArrays will have more dimensions *within* its nested values. allResponsesListsOfYUncertaintiesArrays.append([self.UserInput.responses_observed_uncertainties[responseDimIndex],self.mu_guess_responses_simulation_uncertainties[responseDimIndex],self.map_responses_simulation_uncertainties[responseDimIndex]]) #We need to give a list for each response dimension. - elif self.UserInput.num_response_dimensions > 1: + elif num_response_dimensions > 1: listOfYArrays = [self.UserInput.responses_observed[responseDimIndex], self.mu_guess_SimulatedResponses[responseDimIndex], self.map_SimulatedResponses[responseDimIndex]] allResponsesListsOfYArrays.append(listOfYArrays) #Now to do uncertainties, there are two cases. First case is with only observed uncertainties and no simulation ones. @@ -2990,14 +2992,14 @@ def createSimulatedResponsesPlots(self, allResponses_x_values=[], allResponsesLi else: #This case means that there are some responses_simulation_uncertainties to include, so allResponsesListsOfYUncertaintiesArrays will have more dimensions *within* its nested values. allResponsesListsOfYUncertaintiesArrays.append([self.UserInput.responses_observed_uncertainties[responseDimIndex],self.mu_guess_responses_simulation_uncertainties[responseDimIndex],self.map_responses_simulation_uncertainties[responseDimIndex]]) #We need to give a list for each response dimension. if hasattr(self, 'mu_AP_parameter_set'): - if self.UserInput.num_response_dimensions == 1: + if num_response_dimensions == 1: listOfYArrays = [self.UserInput.responses_observed[responseDimIndex], self.mu_guess_SimulatedResponses[responseDimIndex], self.map_SimulatedResponses[responseDimIndex], self.mu_AP_SimulatedResponses[responseDimIndex]] allResponsesListsOfYArrays.append(listOfYArrays) if type(self.UserInput.responses_simulation_uncertainties) == type(None): #This means there are no simulation uncertainties. So for each response dimension, there will be a list with only the observed uncertainties in that list. allResponsesListsOfYUncertaintiesArrays.append( [self.UserInput.responses_observed_uncertainties[responseDimIndex]] ) #Just creating nesting, we need to give a list for each response dimension. else: #This case means that there are some responses_simulation_uncertainties to include, so allResponsesListsOfYUncertaintiesArrays will have more dimensions *within* its nested values. allResponsesListsOfYUncertaintiesArrays.append([self.UserInput.responses_observed_uncertainties[responseDimIndex],self.mu_guess_responses_simulation_uncertainties[responseDimIndex],self.map_responses_simulation_uncertainties[responseDimIndex],self.mu_AP_responses_simulation_uncertainties[responseDimIndex]]) #We need to give a list for each response dimension. - elif self.UserInput.num_response_dimensions > 1: + elif num_response_dimensions > 1: listOfYArrays = [self.UserInput.responses_observed[responseDimIndex], self.mu_guess_SimulatedResponses[responseDimIndex], self.map_SimulatedResponses[responseDimIndex], self.mu_AP_SimulatedResponses[responseDimIndex]] allResponsesListsOfYArrays.append(listOfYArrays) if type(self.UserInput.responses_simulation_uncertainties) == type(None): #This means there are no simulation uncertainties. So for each response dimension, there will be a list with only the observed uncertainties in that list. @@ -3027,9 +3029,9 @@ def createSimulatedResponsesPlots(self, allResponses_x_values=[], allResponsesLi for responseDimIndex in range(self.UserInput.num_response_dimensions): #TODO: Move the exporting out of the plot creation and/or rename the function and possibly have options about whether exporting graph, data, or both. #Some code for setting up individual plot settings in case there are multiple response dimensions. individual_plot_settings = copy.deepcopy(plot_settings) #we need to edit the plot settings slightly for each plot. - if self.UserInput.num_response_dimensions == 1: + if num_response_dimensions == 1: responseSuffix = '' #If there is only 1 dimension, we don't need to add a suffix to the files created. That would only confuse people. - if self.UserInput.num_response_dimensions > 1: + if num_response_dimensions > 1: responseSuffix = "_"+str(responseDimIndex) individual_plot_settings['figure_name'] = individual_plot_settings['figure_name']+responseSuffix if 'x_label' in plot_settings: diff --git a/PEUQSE/InverseProblem_scratch.py b/PEUQSE/InverseProblem_scratch.py index aab23c3c..a10e1439 100644 --- a/PEUQSE/InverseProblem_scratch.py +++ b/PEUQSE/InverseProblem_scratch.py @@ -2998,9 +2998,10 @@ def createSimulatedResponsesPlots(self, allResponses_x_values=[], allResponsesLi self.UserInput.responses_observed = [np.array(self.UserInput.responses_observed).flatten()] self.UserInput.responses_observed_uncertainties = [np.array(self.UserInput.responses_observed_uncertainties).flatten()] #Now to populate the allResponsesListsOfYArrays and the allResponsesListsOfYUncertaintiesArrays - for responseDimIndex in range(self.UserInput.num_response_dimensions): + num_response_dimensions = self.UserInput.num_response_dimensions + for responseDimIndex in range(num_response_dimensions): if not hasattr(self, 'mu_AP_parameter_set'): #Check if a mu_AP has been assigned. It is normally only assigned if mcmc was used. - if self.UserInput.num_response_dimensions == 1: + if num_response_dimensions == 1: listOfYArrays = [self.UserInput.responses_observed[responseDimIndex], self.mu_guess_SimulatedResponses[responseDimIndex], self.map_SimulatedResponses[responseDimIndex]] allResponsesListsOfYArrays.append(listOfYArrays) #Now to do uncertainties, there are two cases. First case is with only observed uncertainties and no simulation ones. @@ -3008,7 +3009,7 @@ def createSimulatedResponsesPlots(self, allResponses_x_values=[], allResponsesLi allResponsesListsOfYUncertaintiesArrays.append( [self.UserInput.responses_observed_uncertainties[responseDimIndex]] ) #Just creating nesting, we need to give a list for each response dimension. else: #This case means that there are some responses_simulation_uncertainties to include, so allResponsesListsOfYUncertaintiesArrays will have more dimensions *within* its nested values. allResponsesListsOfYUncertaintiesArrays.append([self.UserInput.responses_observed_uncertainties[responseDimIndex],self.mu_guess_responses_simulation_uncertainties[responseDimIndex],self.map_responses_simulation_uncertainties[responseDimIndex]]) #We need to give a list for each response dimension. - elif self.UserInput.num_response_dimensions > 1: + elif num_response_dimensions > 1: listOfYArrays = [self.UserInput.responses_observed[responseDimIndex], self.mu_guess_SimulatedResponses[responseDimIndex], self.map_SimulatedResponses[responseDimIndex]] allResponsesListsOfYArrays.append(listOfYArrays) #Now to do uncertainties, there are two cases. First case is with only observed uncertainties and no simulation ones. @@ -3017,14 +3018,14 @@ def createSimulatedResponsesPlots(self, allResponses_x_values=[], allResponsesLi else: #This case means that there are some responses_simulation_uncertainties to include, so allResponsesListsOfYUncertaintiesArrays will have more dimensions *within* its nested values. allResponsesListsOfYUncertaintiesArrays.append([self.UserInput.responses_observed_uncertainties[responseDimIndex],self.mu_guess_responses_simulation_uncertainties[responseDimIndex],self.map_responses_simulation_uncertainties[responseDimIndex]]) #We need to give a list for each response dimension. if hasattr(self, 'mu_AP_parameter_set'): - if self.UserInput.num_response_dimensions == 1: + if num_response_dimensions == 1: listOfYArrays = [self.UserInput.responses_observed[responseDimIndex], self.mu_guess_SimulatedResponses[responseDimIndex], self.map_SimulatedResponses[responseDimIndex], self.mu_AP_SimulatedResponses[responseDimIndex]] allResponsesListsOfYArrays.append(listOfYArrays) if type(self.UserInput.responses_simulation_uncertainties) == type(None): #This means there are no simulation uncertainties. So for each response dimension, there will be a list with only the observed uncertainties in that list. allResponsesListsOfYUncertaintiesArrays.append( [self.UserInput.responses_observed_uncertainties[responseDimIndex]] ) #Just creating nesting, we need to give a list for each response dimension. else: #This case means that there are some responses_simulation_uncertainties to include, so allResponsesListsOfYUncertaintiesArrays will have more dimensions *within* its nested values. allResponsesListsOfYUncertaintiesArrays.append([self.UserInput.responses_observed_uncertainties[responseDimIndex],self.mu_guess_responses_simulation_uncertainties[responseDimIndex],self.map_responses_simulation_uncertainties[responseDimIndex],self.mu_AP_responses_simulation_uncertainties[responseDimIndex]]) #We need to give a list for each response dimension. - elif self.UserInput.num_response_dimensions > 1: + elif num_response_dimensions > 1: listOfYArrays = [self.UserInput.responses_observed[responseDimIndex], self.mu_guess_SimulatedResponses[responseDimIndex], self.map_SimulatedResponses[responseDimIndex], self.mu_AP_SimulatedResponses[responseDimIndex]] allResponsesListsOfYArrays.append(listOfYArrays) if type(self.UserInput.responses_simulation_uncertainties) == type(None): #This means there are no simulation uncertainties. So for each response dimension, there will be a list with only the observed uncertainties in that list. @@ -3051,12 +3052,12 @@ def createSimulatedResponsesPlots(self, allResponses_x_values=[], allResponsesLi import PEUQSE.plotting_functions as plotting_functions setMatPlotLibAgg(self.UserInput.plotting_ouput_settings['setMatPlotLibAgg']) allResponsesFigureObjectsList = [] - for responseDimIndex in range(self.UserInput.num_response_dimensions): #TODO: Move the exporting out of the plot creation and/or rename the function and possibly have options about whether exporting graph, data, or both. + for responseDimIndex in range(num_response_dimensions): #TODO: Move the exporting out of the plot creation and/or rename the function and possibly have options about whether exporting graph, data, or both. #Some code for setting up individual plot settings in case there are multiple response dimensions. individual_plot_settings = copy.deepcopy(plot_settings) #we need to edit the plot settings slightly for each plot. - if self.UserInput.num_response_dimensions == 1: + if num_response_dimensions == 1: responseSuffix = '' #If there is only 1 dimension, we don't need to add a suffix to the files created. That would only confuse people. - if self.UserInput.num_response_dimensions > 1: + if num_response_dimensions > 1: responseSuffix = "_"+str(responseDimIndex) individual_plot_settings['figure_name'] = individual_plot_settings['figure_name']+responseSuffix if 'x_label' in plot_settings: From b098b249170d9e60d88035bcef0b7be473a63096 Mon Sep 17 00:00:00 2001 From: AdityaSavara <39929571+AdityaSavara@users.noreply.github.com> Date: Thu, 4 Aug 2022 12:52:07 -0400 Subject: [PATCH 04/23] num_response_dimensions --- PEUQSE/InverseProblem.py | 4 +++- PEUQSE/InverseProblem_scratch.py | 5 +++-- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/PEUQSE/InverseProblem.py b/PEUQSE/InverseProblem.py index df2f687e..5455bf4c 100644 --- a/PEUQSE/InverseProblem.py +++ b/PEUQSE/InverseProblem.py @@ -2921,6 +2921,9 @@ def makeScatterHeatMapPlots(self, parameterSamples = [], parameterNamesAndMathTy def createSimulatedResponsesPlots(self, allResponses_x_values=[], allResponsesListsOfYArrays =[], plot_settings={},allResponsesListsOfYUncertaintiesArrays=[], flatten = False): #allResponsesListsOfYArrays is to have 3 layers of lists: Response > Responses Observed, mu_guess Simulated Responses, map_Simulated Responses, (mu_AP_simulatedResponses) > Values #flatten = True will convert the individual responses into a 'single response series' + num_response_dimensions = self.UserInput.num_response_dimensions + if flatten = True: #if we are flattening, we will have 1 response dimension at the end. + num_response_dimensions = 1 if allResponses_x_values == []: allResponses_x_values = nestedObjectsFunctions.makeAtLeast_2dNested(self.UserInput.responses_abscissa) if allResponsesListsOfYArrays ==[]: #In this case, we assume allResponsesListsOfYUncertaintiesArrays == [] also. @@ -2972,7 +2975,6 @@ def createSimulatedResponsesPlots(self, allResponses_x_values=[], allResponsesLi self.mu_AP_responses_simulation_uncertainties = nestedObjectsFunctions.convertInternalToNumpyArray_2dNested(self.mu_AP_responses_simulation_uncertainties) #Now to populate the allResponsesListsOfYArrays and the allResponsesListsOfYUncertaintiesArrays - num_response_dimensions = self.UserInput.num_response_dimensions for responseDimIndex in range(num_response_dimensions): if not hasattr(self, 'mu_AP_parameter_set'): #Check if a mu_AP has been assigned. It is normally only assigned if mcmc was used. if num_response_dimensions == 1: diff --git a/PEUQSE/InverseProblem_scratch.py b/PEUQSE/InverseProblem_scratch.py index a10e1439..cadd5e51 100644 --- a/PEUQSE/InverseProblem_scratch.py +++ b/PEUQSE/InverseProblem_scratch.py @@ -2921,6 +2921,9 @@ def makeScatterHeatMapPlots(self, parameterSamples = [], parameterNamesAndMathTy def createSimulatedResponsesPlots(self, allResponses_x_values=[], allResponsesListsOfYArrays =[], plot_settings={},allResponsesListsOfYUncertaintiesArrays=[], flatten = False): #allResponsesListsOfYArrays is to have 3 layers of lists: Response > Responses Observed, mu_guess Simulated Responses, map_Simulated Responses, (mu_AP_simulatedResponses) > Values #flatten = True will convert the individual responses into a 'single response series' + num_response_dimensions = self.UserInput.num_response_dimensions + if flatten = True: #if we are flattening, we will have 1 response dimension at the end. + num_response_dimensions = 1 if allResponses_x_values == []: if flatten == True: allResponses_x_values = np.array(self.UserInput.responses_abscissa).flatten() @@ -2994,11 +2997,9 @@ def createSimulatedResponsesPlots(self, allResponses_x_values=[], allResponsesLi if flatten == True: - self.UserInput.num_response_dimensions = 1 self.UserInput.responses_observed = [np.array(self.UserInput.responses_observed).flatten()] self.UserInput.responses_observed_uncertainties = [np.array(self.UserInput.responses_observed_uncertainties).flatten()] #Now to populate the allResponsesListsOfYArrays and the allResponsesListsOfYUncertaintiesArrays - num_response_dimensions = self.UserInput.num_response_dimensions for responseDimIndex in range(num_response_dimensions): if not hasattr(self, 'mu_AP_parameter_set'): #Check if a mu_AP has been assigned. It is normally only assigned if mcmc was used. if num_response_dimensions == 1: From f86c3acc900665137ecbce9dfaaeba0623feec9b Mon Sep 17 00:00:00 2001 From: AdityaSavara <39929571+AdityaSavara@users.noreply.github.com> Date: Thu, 4 Aug 2022 13:03:11 -0400 Subject: [PATCH 05/23] Adding flatten option to first if statement --- PEUQSE/InverseProblem.py | 7 +++++-- PEUQSE/InverseProblem_scratch.py | 5 +++-- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/PEUQSE/InverseProblem.py b/PEUQSE/InverseProblem.py index 5455bf4c..24e41f69 100644 --- a/PEUQSE/InverseProblem.py +++ b/PEUQSE/InverseProblem.py @@ -2925,7 +2925,11 @@ def createSimulatedResponsesPlots(self, allResponses_x_values=[], allResponsesLi if flatten = True: #if we are flattening, we will have 1 response dimension at the end. num_response_dimensions = 1 if allResponses_x_values == []: - allResponses_x_values = nestedObjectsFunctions.makeAtLeast_2dNested(self.UserInput.responses_abscissa) + if flatten == True: + allResponses_x_values = np.array(self.UserInput.responses_abscissa).flatten() + allResponses_x_values = nestedObjectsFunctions.makeAtLeast_2dNested(allResponses_x_values) + else: + allResponses_x_values = nestedObjectsFunctions.makeAtLeast_2dNested(self.UserInput.responses_abscissa) if allResponsesListsOfYArrays ==[]: #In this case, we assume allResponsesListsOfYUncertaintiesArrays == [] also. allResponsesListsOfYArrays = [] #Need to make a new list in the case that there was one already, to avoid overwriting the default argument object. allResponsesListsOfYUncertaintiesArrays = [] #Set accompanying uncertainties list to a blank list in case it is not already one. Otherwise appending would mess up indexing. @@ -2946,7 +2950,6 @@ def createSimulatedResponsesPlots(self, allResponses_x_values=[], allResponsesLi if type(self.UserInput.responses_simulation_uncertainties) != type(None): self.mu_guess_responses_simulation_uncertainties = nestedObjectsFunctions.makeAtLeast_2dNested(self.get_responses_simulation_uncertainties(self.UserInput.InputParameterInitialGuess)) self.mu_guess_responses_simulation_uncertainties = nestedObjectsFunctions.convertInternalToNumpyArray_2dNested(self.mu_guess_responses_simulation_uncertainties) - #Get map simiulated output and simulated responses. self.map_SimulatedOutput = simulationFunction(self.map_parameter_set) if type(simulationOutputProcessingFunction) == type(None): diff --git a/PEUQSE/InverseProblem_scratch.py b/PEUQSE/InverseProblem_scratch.py index cadd5e51..bfd518dd 100644 --- a/PEUQSE/InverseProblem_scratch.py +++ b/PEUQSE/InverseProblem_scratch.py @@ -2927,7 +2927,9 @@ def createSimulatedResponsesPlots(self, allResponses_x_values=[], allResponsesLi if allResponses_x_values == []: if flatten == True: allResponses_x_values = np.array(self.UserInput.responses_abscissa).flatten() - allResponses_x_values = nestedObjectsFunctions.makeAtLeast_2dNested(allResponses_x_values) + allResponses_x_values = nestedObjectsFunctions.makeAtLeast_2dNested(allResponses_x_values) + else: + allResponses_x_values = nestedObjectsFunctions.makeAtLeast_2dNested(self.UserInput.responses_abscissa) if allResponsesListsOfYArrays ==[]: #In this case, we assume allResponsesListsOfYUncertaintiesArrays == [] also. allResponsesListsOfYArrays = [] #Need to make a new list in the case that there was one already, to avoid overwriting the default argument object. allResponsesListsOfYUncertaintiesArrays = [] #Set accompanying uncertainties list to a blank list in case it is not already one. Otherwise appending would mess up indexing. @@ -2956,7 +2958,6 @@ def createSimulatedResponsesPlots(self, allResponses_x_values=[], allResponsesLi self.mu_guess_responses_simulation_uncertainties = np.array(self.get_responses_simulation_uncertainties(self.UserInput.InputParameterInitialGuess)).flatten() self.mu_guess_responses_simulation_uncertainties = nestedObjectsFunctions.makeAtLeast_2dNested(self.mu_guess_responses_simulation_uncertainties) self.mu_guess_responses_simulation_uncertainties = nestedObjectsFunctions.convertInternalToNumpyArray_2dNested(self.mu_guess_responses_simulation_uncertainties) - #Get map simiulated output and simulated responses. self.map_SimulatedOutput = simulationFunction(self.map_parameter_set) if type(simulationOutputProcessingFunction) == type(None): From bd97e243314e33b88b3b4d766707f441b1245366 Mon Sep 17 00:00:00 2001 From: AdityaSavara <39929571+AdityaSavara@users.noreply.github.com> Date: Thu, 4 Aug 2022 13:44:04 -0400 Subject: [PATCH 06/23] mu_guess_SimulatedResponses and mu_guess_responses_simulation_uncertainties --- PEUQSE/InverseProblem.py | 23 +++++++++++++++++------ PEUQSE/InverseProblem_scratch.py | 23 ++++++++++++++--------- 2 files changed, 31 insertions(+), 15 deletions(-) diff --git a/PEUQSE/InverseProblem.py b/PEUQSE/InverseProblem.py index 24e41f69..fd6924bb 100644 --- a/PEUQSE/InverseProblem.py +++ b/PEUQSE/InverseProblem.py @@ -2940,16 +2940,27 @@ def createSimulatedResponsesPlots(self, allResponses_x_values=[], allResponsesLi #Get mu_guess simulated output and responses. self.mu_guess_SimulatedOutput = simulationFunction( self.UserInput.InputParameterInitialGuess) #Do NOT use self.UserInput.model['InputParameterInitialGuess'] because that won't work with reduced parameter space requests. + #Make in internal variable in case we need to flatten. + mu_guess_SimulatedOutput = copy.deepcopy(self.mu_guess_SimulatedOutput) if type(simulationOutputProcessingFunction) == type(None): - self.mu_guess_SimulatedResponses = nestedObjectsFunctions.makeAtLeast_2dNested(self.mu_guess_SimulatedOutput) - self.mu_guess_SimulatedResponses = nestedObjectsFunctions.convertInternalToNumpyArray_2dNested(self.mu_guess_SimulatedResponses) + if flatten == True: + mu_guess_SimulatedOutput = np.array(mu_guess_SimulatedOutput).flatten() + mu_guess_SimulatedResponses = nestedObjectsFunctions.makeAtLeast_2dNested(mu_guess_SimulatedOutput) + mu_guess_SimulatedResponses = nestedObjectsFunctions.convertInternalToNumpyArray_2dNested(mu_guess_SimulatedResponses) if type(simulationOutputProcessingFunction) != type(None): - self.mu_guess_SimulatedResponses = nestedObjectsFunctions.makeAtLeast_2dNested( simulationOutputProcessingFunction(self.mu_guess_SimulatedOutput) ) - self.mu_guess_SimulatedResponses = nestedObjectsFunctions.convertInternalToNumpyArray_2dNested(self.mu_guess_SimulatedResponses) + mu_guess_SimulatedResponses = simulationOutputProcessingFunction(mu_guess_SimulatedOutput + if flatten == True: + mu_guess_SimulatedOutput = np.array(mu_guess_SimulatedResponses).flatten() + mu_guess_SimulatedResponses = nestedObjectsFunctions.makeAtLeast_2dNested(mu_guess_SimulatedResponses) ) + mu_guess_SimulatedResponses = nestedObjectsFunctions.convertInternalToNumpyArray_2dNested(mu_guess_SimulatedResponses) #Check if we have simulation uncertainties, and populate if so. if type(self.UserInput.responses_simulation_uncertainties) != type(None): - self.mu_guess_responses_simulation_uncertainties = nestedObjectsFunctions.makeAtLeast_2dNested(self.get_responses_simulation_uncertainties(self.UserInput.InputParameterInitialGuess)) - self.mu_guess_responses_simulation_uncertainties = nestedObjectsFunctions.convertInternalToNumpyArray_2dNested(self.mu_guess_responses_simulation_uncertainties) + #make an internal variable in case we need to flatten. + mu_guess_responses_simulation_uncertainties = self.get_responses_simulation_uncertainties(self.UserInput.InputParameterInitialGuess) + if flatten == True: + mu_guess_responses_simulation_uncertainties = np.array(mu_guess_responses_simulation_uncertainties).flatten() + mu_guess_responses_simulation_uncertainties = nestedObjectsFunctions.makeAtLeast_2dNested(mu_guess_responses_simulation_uncertainties) + mu_guess_responses_simulation_uncertainties = nestedObjectsFunctions.convertInternalToNumpyArray_2dNested(mu_guess_responses_simulation_uncertainties) #Get map simiulated output and simulated responses. self.map_SimulatedOutput = simulationFunction(self.map_parameter_set) if type(simulationOutputProcessingFunction) == type(None): diff --git a/PEUQSE/InverseProblem_scratch.py b/PEUQSE/InverseProblem_scratch.py index bfd518dd..d923d13b 100644 --- a/PEUQSE/InverseProblem_scratch.py +++ b/PEUQSE/InverseProblem_scratch.py @@ -2940,24 +2940,29 @@ def createSimulatedResponsesPlots(self, allResponses_x_values=[], allResponsesLi #Get mu_guess simulated output and responses. self.mu_guess_SimulatedOutput = simulationFunction( self.UserInput.InputParameterInitialGuess) #Do NOT use self.UserInput.model['InputParameterInitialGuess'] because that won't work with reduced parameter space requests. + #Make in internal variable in case we need to flatten. + mu_guess_SimulatedOutput = copy.deepcopy(self.mu_guess_SimulatedOutput) if type(simulationOutputProcessingFunction) == type(None): if flatten == True: - self.mu_guess_SimulatedOutput = np.array(self.mu_guess_SimulatedOutput).flatten() - self.mu_guess_SimulatedResponses = nestedObjectsFunctions.makeAtLeast_2dNested(self.mu_guess_SimulatedOutput) - self.mu_guess_SimulatedResponses = nestedObjectsFunctions.convertInternalToNumpyArray_2dNested(self.mu_guess_SimulatedResponses) + mu_guess_SimulatedOutput = np.array(mu_guess_SimulatedOutput).flatten() + mu_guess_SimulatedResponses = nestedObjectsFunctions.makeAtLeast_2dNested(mu_guess_SimulatedOutput) + mu_guess_SimulatedResponses = nestedObjectsFunctions.convertInternalToNumpyArray_2dNested(mu_guess_SimulatedResponses) if type(simulationOutputProcessingFunction) != type(None): + mu_guess_SimulatedResponses = simulationOutputProcessingFunction(mu_guess_SimulatedOutput if flatten == True: - self.mu_guess_SimulatedOutput = np.array(self.mu_guess_SimulatedOutput).flatten() - self.mu_guess_SimulatedResponses = nestedObjectsFunctions.makeAtLeast_2dNested( simulationOutputProcessingFunction(self.mu_guess_SimulatedOutput) ) - self.mu_guess_SimulatedResponses = nestedObjectsFunctions.convertInternalToNumpyArray_2dNested(self.mu_guess_SimulatedResponses) + mu_guess_SimulatedOutput = np.array(mu_guess_SimulatedResponses).flatten() + mu_guess_SimulatedResponses = nestedObjectsFunctions.makeAtLeast_2dNested(mu_guess_SimulatedResponses) ) + mu_guess_SimulatedResponses = nestedObjectsFunctions.convertInternalToNumpyArray_2dNested(mu_guess_SimulatedResponses) #Check if we have simulation uncertainties, and populate if so. if type(self.UserInput.responses_simulation_uncertainties) != type(None): + #make an internal variable in case we need to flatten. + mu_guess_responses_simulation_uncertainties = self.get_responses_simulation_uncertainties(self.UserInput.InputParameterInitialGuess) if flatten == True: - self.mu_guess_responses_simulation_uncertainties = np.array(self.get_responses_simulation_uncertainties(self.UserInput.InputParameterInitialGuess)).flatten() - self.mu_guess_responses_simulation_uncertainties = nestedObjectsFunctions.makeAtLeast_2dNested(self.mu_guess_responses_simulation_uncertainties) - self.mu_guess_responses_simulation_uncertainties = nestedObjectsFunctions.convertInternalToNumpyArray_2dNested(self.mu_guess_responses_simulation_uncertainties) + mu_guess_responses_simulation_uncertainties = np.array(mu_guess_responses_simulation_uncertainties).flatten() + mu_guess_responses_simulation_uncertainties = nestedObjectsFunctions.makeAtLeast_2dNested(mu_guess_responses_simulation_uncertainties) + mu_guess_responses_simulation_uncertainties = nestedObjectsFunctions.convertInternalToNumpyArray_2dNested(mu_guess_responses_simulation_uncertainties) #Get map simiulated output and simulated responses. self.map_SimulatedOutput = simulationFunction(self.map_parameter_set) if type(simulationOutputProcessingFunction) == type(None): From 150550f1c9602b293925d41108655a37328ca630 Mon Sep 17 00:00:00 2001 From: AdityaSavara <39929571+AdityaSavara@users.noreply.github.com> Date: Thu, 4 Aug 2022 14:09:03 -0400 Subject: [PATCH 07/23] mu_guess_SimulatedResponses, map_SimulatedResponses, map_responses_simulation_uncertainties more removing of self and improving the logic of how these internal variables are populated. --- PEUQSE/InverseProblem.py | 36 ++++++++++++++++++++----------- PEUQSE/InverseProblem_scratch.py | 37 ++++++++++++++++++-------------- 2 files changed, 45 insertions(+), 28 deletions(-) diff --git a/PEUQSE/InverseProblem.py b/PEUQSE/InverseProblem.py index fd6924bb..0ad58eac 100644 --- a/PEUQSE/InverseProblem.py +++ b/PEUQSE/InverseProblem.py @@ -2943,14 +2943,15 @@ def createSimulatedResponsesPlots(self, allResponses_x_values=[], allResponsesLi #Make in internal variable in case we need to flatten. mu_guess_SimulatedOutput = copy.deepcopy(self.mu_guess_SimulatedOutput) if type(simulationOutputProcessingFunction) == type(None): + mu_guess_SimulatedResponses = mu_guess_SimulatedOutput if flatten == True: - mu_guess_SimulatedOutput = np.array(mu_guess_SimulatedOutput).flatten() - mu_guess_SimulatedResponses = nestedObjectsFunctions.makeAtLeast_2dNested(mu_guess_SimulatedOutput) + mu_guess_SimulatedResponses = np.array(mu_guess_SimulatedResponses).flatten() + mu_guess_SimulatedResponses = nestedObjectsFunctions.makeAtLeast_2dNested(mu_guess_SimulatedResponses) mu_guess_SimulatedResponses = nestedObjectsFunctions.convertInternalToNumpyArray_2dNested(mu_guess_SimulatedResponses) if type(simulationOutputProcessingFunction) != type(None): - mu_guess_SimulatedResponses = simulationOutputProcessingFunction(mu_guess_SimulatedOutput + mu_guess_SimulatedResponses = simulationOutputProcessingFunction(mu_guess_SimulatedOutput) if flatten == True: - mu_guess_SimulatedOutput = np.array(mu_guess_SimulatedResponses).flatten() + mu_guess_SimulatedResponses = np.array(mu_guess_SimulatedResponses).flatten() mu_guess_SimulatedResponses = nestedObjectsFunctions.makeAtLeast_2dNested(mu_guess_SimulatedResponses) ) mu_guess_SimulatedResponses = nestedObjectsFunctions.convertInternalToNumpyArray_2dNested(mu_guess_SimulatedResponses) #Check if we have simulation uncertainties, and populate if so. @@ -2962,18 +2963,29 @@ def createSimulatedResponsesPlots(self, allResponses_x_values=[], allResponsesLi mu_guess_responses_simulation_uncertainties = nestedObjectsFunctions.makeAtLeast_2dNested(mu_guess_responses_simulation_uncertainties) mu_guess_responses_simulation_uncertainties = nestedObjectsFunctions.convertInternalToNumpyArray_2dNested(mu_guess_responses_simulation_uncertainties) #Get map simiulated output and simulated responses. - self.map_SimulatedOutput = simulationFunction(self.map_parameter_set) + self.map_SimulatedOutput = simulationFunction(self.map_parameter_set) + #Make an internal variable in case we need to flatten. + map_SimulatedOutput = copy.deepcopy(self.map_SimulatedOutput) if type(simulationOutputProcessingFunction) == type(None): - self.map_SimulatedResponses = nestedObjectsFunctions.makeAtLeast_2dNested(self.map_SimulatedOutput) - self.map_SimulatedResponses = nestedObjectsFunctions.convertInternalToNumpyArray_2dNested(self.map_SimulatedResponses) + map_SimulatedResponses = map_SimulatedOutput + if flatten == True: + map_SimulatedResponses = np.array(map_SimulatedResponses).flatten() + map_SimulatedResponses = nestedObjectsFunctions.makeAtLeast_2dNested(map_SimulatedResponses) + map_SimulatedResponses = nestedObjectsFunctions.convertInternalToNumpyArray_2dNested(map_SimulatedResponses) if type(simulationOutputProcessingFunction) != type(None): - self.map_SimulatedResponses = nestedObjectsFunctions.makeAtLeast_2dNested( simulationOutputProcessingFunction(self.map_SimulatedOutput) ) - self.map_SimulatedResponses = nestedObjectsFunctions.convertInternalToNumpyArray_2dNested(self.map_SimulatedResponses) + map_SimulatedResponses = simulationOutputProcessingFunction(map_SimulatedOutput + if flatten == True: + map_SimulatedResponses = np.array(map_SimulatedResponses).flatten() + map_SimulatedResponses = nestedObjectsFunctions.makeAtLeast_2dNested(map_SimulatedResponses) + map_SimulatedResponses = nestedObjectsFunctions.convertInternalToNumpyArray_2dNested(map_SimulatedResponses) #Check if we have simulation uncertainties, and populate if so. if type(self.UserInput.responses_simulation_uncertainties) != type(None): - self.map_responses_simulation_uncertainties = nestedObjectsFunctions.makeAtLeast_2dNested(self.get_responses_simulation_uncertainties(self.map_parameter_set)) - self.map_responses_simulation_uncertainties = nestedObjectsFunctions.convertInternalToNumpyArray_2dNested(self.map_responses_simulation_uncertainties) - + #make an internal variable in case we need to flatten. + map_responses_simulation_uncertainties = self.get_responses_simulation_uncertainties(self.map_parameter_set) + if flatten == True: + map_responses_simulation_uncertainties = np.array(map_responses_simulation_uncertainties).flatten() + map_responses_simulation_uncertainties = nestedObjectsFunctions.makeAtLeast_2dNested(map_responses_simulation_uncertainties) + map_responses_simulation_uncertainties = nestedObjectsFunctions.convertInternalToNumpyArray_2dNested(map_responses_simulation_uncertainties) if hasattr(self, 'mu_AP_parameter_set'): #Check if a mu_AP has been assigned. It is normally only assigned if mcmc was used. #Get mu_AP simiulated output and simulated responses. self.mu_AP_SimulatedOutput = simulationFunction(self.mu_AP_parameter_set) diff --git a/PEUQSE/InverseProblem_scratch.py b/PEUQSE/InverseProblem_scratch.py index d923d13b..b8b86fc2 100644 --- a/PEUQSE/InverseProblem_scratch.py +++ b/PEUQSE/InverseProblem_scratch.py @@ -2943,16 +2943,15 @@ def createSimulatedResponsesPlots(self, allResponses_x_values=[], allResponsesLi #Make in internal variable in case we need to flatten. mu_guess_SimulatedOutput = copy.deepcopy(self.mu_guess_SimulatedOutput) if type(simulationOutputProcessingFunction) == type(None): + mu_guess_SimulatedResponses = mu_guess_SimulatedOutput if flatten == True: - mu_guess_SimulatedOutput = np.array(mu_guess_SimulatedOutput).flatten() - mu_guess_SimulatedResponses = nestedObjectsFunctions.makeAtLeast_2dNested(mu_guess_SimulatedOutput) + mu_guess_SimulatedResponses = np.array(mu_guess_SimulatedResponses).flatten() + mu_guess_SimulatedResponses = nestedObjectsFunctions.makeAtLeast_2dNested(mu_guess_SimulatedResponses) mu_guess_SimulatedResponses = nestedObjectsFunctions.convertInternalToNumpyArray_2dNested(mu_guess_SimulatedResponses) - - if type(simulationOutputProcessingFunction) != type(None): - mu_guess_SimulatedResponses = simulationOutputProcessingFunction(mu_guess_SimulatedOutput + mu_guess_SimulatedResponses = simulationOutputProcessingFunction(mu_guess_SimulatedOutput) if flatten == True: - mu_guess_SimulatedOutput = np.array(mu_guess_SimulatedResponses).flatten() + mu_guess_SimulatedResponses = np.array(mu_guess_SimulatedResponses).flatten() mu_guess_SimulatedResponses = nestedObjectsFunctions.makeAtLeast_2dNested(mu_guess_SimulatedResponses) ) mu_guess_SimulatedResponses = nestedObjectsFunctions.convertInternalToNumpyArray_2dNested(mu_guess_SimulatedResponses) #Check if we have simulation uncertainties, and populate if so. @@ -2964,23 +2963,29 @@ def createSimulatedResponsesPlots(self, allResponses_x_values=[], allResponsesLi mu_guess_responses_simulation_uncertainties = nestedObjectsFunctions.makeAtLeast_2dNested(mu_guess_responses_simulation_uncertainties) mu_guess_responses_simulation_uncertainties = nestedObjectsFunctions.convertInternalToNumpyArray_2dNested(mu_guess_responses_simulation_uncertainties) #Get map simiulated output and simulated responses. - self.map_SimulatedOutput = simulationFunction(self.map_parameter_set) + self.map_SimulatedOutput = simulationFunction(self.map_parameter_set) + #Make an internal variable in case we need to flatten. + map_SimulatedOutput = copy.deepcopy(self.map_SimulatedOutput) if type(simulationOutputProcessingFunction) == type(None): + map_SimulatedResponses = map_SimulatedOutput if flatten == True: - self.map_SimulatedOutput = np.array(self.map_SimulatedOutput).flatten() - self.map_SimulatedResponses = nestedObjectsFunctions.makeAtLeast_2dNested(self.map_SimulatedOutput) - self.map_SimulatedResponses = nestedObjectsFunctions.convertInternalToNumpyArray_2dNested(self.map_SimulatedResponses) + map_SimulatedResponses = np.array(map_SimulatedResponses).flatten() + map_SimulatedResponses = nestedObjectsFunctions.makeAtLeast_2dNested(map_SimulatedResponses) + map_SimulatedResponses = nestedObjectsFunctions.convertInternalToNumpyArray_2dNested(map_SimulatedResponses) if type(simulationOutputProcessingFunction) != type(None): + map_SimulatedResponses = simulationOutputProcessingFunction(map_SimulatedOutput if flatten == True: - self.map_SimulatedResponses= np.array(simulationOutputProcessingFunction(self.map_SimulatedOutput)).flatten() - self.map_SimulatedResponses = nestedObjectsFunctions.makeAtLeast_2dNested( self.map_SimulatedResponses ) - self.map_SimulatedResponses = nestedObjectsFunctions.convertInternalToNumpyArray_2dNested(self.map_SimulatedResponses) + map_SimulatedResponses = np.array(map_SimulatedResponses).flatten() + map_SimulatedResponses = nestedObjectsFunctions.makeAtLeast_2dNested(map_SimulatedResponses) + map_SimulatedResponses = nestedObjectsFunctions.convertInternalToNumpyArray_2dNested(map_SimulatedResponses) #Check if we have simulation uncertainties, and populate if so. if type(self.UserInput.responses_simulation_uncertainties) != type(None): + #make an internal variable in case we need to flatten. + map_responses_simulation_uncertainties = self.get_responses_simulation_uncertainties(self.map_parameter_set) if flatten == True: - self.map_responses_simulation_uncertainties = np.array(self.get_responses_simulation_uncertainties(self.map_parameter_set)).flatten() - self.map_responses_simulation_uncertainties = nestedObjectsFunctions.makeAtLeast_2dNested(self.map_responses_simulation_uncertainties) - self.map_responses_simulation_uncertainties = nestedObjectsFunctions.convertInternalToNumpyArray_2dNested(self.map_responses_simulation_uncertainties) + map_responses_simulation_uncertainties = np.array(map_responses_simulation_uncertainties).flatten() + map_responses_simulation_uncertainties = nestedObjectsFunctions.makeAtLeast_2dNested(map_responses_simulation_uncertainties) + map_responses_simulation_uncertainties = nestedObjectsFunctions.convertInternalToNumpyArray_2dNested(map_responses_simulation_uncertainties) if hasattr(self, 'mu_AP_parameter_set'): #Check if a mu_AP has been assigned. It is normally only assigned if mcmc was used. #Get mu_AP simiulated output and simulated responses. self.mu_AP_SimulatedOutput = simulationFunction(self.mu_AP_parameter_set) From 1b9176c293badf3f9a5d9d1d4fa647ce07a19046 Mon Sep 17 00:00:00 2001 From: AdityaSavara <39929571+AdityaSavara@users.noreply.github.com> Date: Thu, 4 Aug 2022 14:17:14 -0400 Subject: [PATCH 08/23] mu_AP_SimulatedResponses and mu_AP_responses_simulation_uncertainties --- PEUQSE/InverseProblem.py | 25 ++++++++++++++++++------- PEUQSE/InverseProblem_scratch.py | 27 ++++++++++++++++----------- 2 files changed, 34 insertions(+), 18 deletions(-) diff --git a/PEUQSE/InverseProblem.py b/PEUQSE/InverseProblem.py index 0ad58eac..34f3e22a 100644 --- a/PEUQSE/InverseProblem.py +++ b/PEUQSE/InverseProblem.py @@ -2989,17 +2989,28 @@ def createSimulatedResponsesPlots(self, allResponses_x_values=[], allResponsesLi if hasattr(self, 'mu_AP_parameter_set'): #Check if a mu_AP has been assigned. It is normally only assigned if mcmc was used. #Get mu_AP simiulated output and simulated responses. self.mu_AP_SimulatedOutput = simulationFunction(self.mu_AP_parameter_set) + #Make an internal variable in case we need to flatten. + mu_AP_SimulatedOutput = copy.deepcopy(self.mu_AP_SimulatedOutput) if type(simulationOutputProcessingFunction) == type(None): - self.mu_AP_SimulatedResponses = nestedObjectsFunctions.makeAtLeast_2dNested(self.mu_AP_SimulatedOutput) - self.mu_AP_SimulatedResponses = nestedObjectsFunctions.convertInternalToNumpyArray_2dNested(self.mu_AP_SimulatedResponses) + mu_AP_SimulatedResponses = mu_AP_SimulatedOutput + if flatten == True: + mu_AP_SimulatedResponses = np.array(mu_AP_SimulatedResponses).flatten() + mu_AP_SimulatedResponses = nestedObjectsFunctions.makeAtLeast_2dNested(mu_AP_SimulatedResponses) + mu_AP_SimulatedResponses = nestedObjectsFunctions.convertInternalToNumpyArray_2dNested(mu_AP_SimulatedResponses) if type(simulationOutputProcessingFunction) != type(None): - self.mu_AP_SimulatedResponses = nestedObjectsFunctions.makeAtLeast_2dNested( simulationOutputProcessingFunction(self.mu_AP_SimulatedOutput) ) - self.mu_AP_SimulatedResponses = nestedObjectsFunctions.convertInternalToNumpyArray_2dNested(self.mu_AP_SimulatedResponses) + mu_AP_SimulatedResponses = simulationOutputProcessingFunction(mu_AP_SimulatedOutput) + if flatten == True: + mu_AP_SimulatedResponses = np.array(mu_AP_SimulatedResponses).flatten() + mu_AP_SimulatedResponses = nestedObjectsFunctions.makeAtLeast_2dNested(mu_AP_SimulatedResponses) + mu_AP_SimulatedResponses = nestedObjectsFunctions.convertInternalToNumpyArray_2dNested(mu_AP_SimulatedResponses) #Check if we have simulation uncertainties, and populate if so. if type(self.UserInput.responses_simulation_uncertainties) != type(None): - self.mu_AP_responses_simulation_uncertainties = nestedObjectsFunctions.makeAtLeast_2dNested( self.get_responses_simulation_uncertainties(self.mu_AP_parameter_set)) - self.mu_AP_responses_simulation_uncertainties = nestedObjectsFunctions.convertInternalToNumpyArray_2dNested(self.mu_AP_responses_simulation_uncertainties) - + #make an internal variable in case we need to flatten. + mu_AP_responses_simulation_uncertainties = self.get_responses_simulation_uncertainties(self.mu_AP_parameter_set) + if flatten == True: + mu_AP_responses_simulation_uncertainties = np.array(mu_AP_responses_simulation_uncertainties).flatten() + mu_AP_responses_simulation_uncertainties = nestedObjectsFunctions.makeAtLeast_2dNested(mu_AP_responses_simulation_uncertainties) + mu_AP_responses_simulation_uncertainties = nestedObjectsFunctions.convertInternalToNumpyArray_2dNested(mu_AP_responses_simulation_uncertainties) #Now to populate the allResponsesListsOfYArrays and the allResponsesListsOfYUncertaintiesArrays for responseDimIndex in range(num_response_dimensions): if not hasattr(self, 'mu_AP_parameter_set'): #Check if a mu_AP has been assigned. It is normally only assigned if mcmc was used. diff --git a/PEUQSE/InverseProblem_scratch.py b/PEUQSE/InverseProblem_scratch.py index b8b86fc2..d8f25b2a 100644 --- a/PEUQSE/InverseProblem_scratch.py +++ b/PEUQSE/InverseProblem_scratch.py @@ -2989,23 +2989,28 @@ def createSimulatedResponsesPlots(self, allResponses_x_values=[], allResponsesLi if hasattr(self, 'mu_AP_parameter_set'): #Check if a mu_AP has been assigned. It is normally only assigned if mcmc was used. #Get mu_AP simiulated output and simulated responses. self.mu_AP_SimulatedOutput = simulationFunction(self.mu_AP_parameter_set) + #Make an internal variable in case we need to flatten. + mu_AP_SimulatedOutput = copy.deepcopy(self.mu_AP_SimulatedOutput) if type(simulationOutputProcessingFunction) == type(None): - if flatten == True: - self.mu_AP_SimulatedOutput = np.array(self.mu_AP_SimulatedOutput).flatten() - self.mu_AP_SimulatedResponses = nestedObjectsFunctions.makeAtLeast_2dNested(self.mu_AP_SimulatedOutput) - self.mu_AP_SimulatedResponses = nestedObjectsFunctions.convertInternalToNumpyArray_2dNested(self.mu_AP_SimulatedResponses) + mu_AP_SimulatedResponses = mu_AP_SimulatedOutput + if flatten == True: + mu_AP_SimulatedResponses = np.array(mu_AP_SimulatedResponses).flatten() + mu_AP_SimulatedResponses = nestedObjectsFunctions.makeAtLeast_2dNested(mu_AP_SimulatedResponses) + mu_AP_SimulatedResponses = nestedObjectsFunctions.convertInternalToNumpyArray_2dNested(mu_AP_SimulatedResponses) if type(simulationOutputProcessingFunction) != type(None): + mu_AP_SimulatedResponses = simulationOutputProcessingFunction(mu_AP_SimulatedOutput) if flatten == True: - self.mu_AP_SimulatedOutput = np.array(simulationOutputProcessingFunction(self.mu_AP_SimulatedOutput) ).flatten() - self.mu_AP_SimulatedResponses = nestedObjectsFunctions.makeAtLeast_2dNested( self.mu_AP_SimulatedOutput ) - self.mu_AP_SimulatedResponses = nestedObjectsFunctions.convertInternalToNumpyArray_2dNested(self.mu_AP_SimulatedResponses) + mu_AP_SimulatedResponses = np.array(mu_AP_SimulatedResponses).flatten() + mu_AP_SimulatedResponses = nestedObjectsFunctions.makeAtLeast_2dNested(mu_AP_SimulatedResponses) + mu_AP_SimulatedResponses = nestedObjectsFunctions.convertInternalToNumpyArray_2dNested(mu_AP_SimulatedResponses) #Check if we have simulation uncertainties, and populate if so. if type(self.UserInput.responses_simulation_uncertainties) != type(None): + #make an internal variable in case we need to flatten. + mu_AP_responses_simulation_uncertainties = self.get_responses_simulation_uncertainties(self.mu_AP_parameter_set) if flatten == True: - self.mu_AP_responses_simulation_uncertainties = np.array(self.get_responses_simulation_uncertainties(self.mu_AP_parameter_set)).flatten() - self.mu_AP_responses_simulation_uncertainties = nestedObjectsFunctions.makeAtLeast_2dNested( self.mu_AP_responses_simulation_uncertainties) - self.mu_AP_responses_simulation_uncertainties = nestedObjectsFunctions.convertInternalToNumpyArray_2dNested(self.mu_AP_responses_simulation_uncertainties) - + mu_AP_responses_simulation_uncertainties = np.array(mu_AP_responses_simulation_uncertainties).flatten() + mu_AP_responses_simulation_uncertainties = nestedObjectsFunctions.makeAtLeast_2dNested(mu_AP_responses_simulation_uncertainties) + mu_AP_responses_simulation_uncertainties = nestedObjectsFunctions.convertInternalToNumpyArray_2dNested(mu_AP_responses_simulation_uncertainties) if flatten == True: self.UserInput.responses_observed = [np.array(self.UserInput.responses_observed).flatten()] From c971a0cc7bc387fab24ac1a33f68845245900bad Mon Sep 17 00:00:00 2001 From: AdityaSavara <39929571+AdityaSavara@users.noreply.github.com> Date: Thu, 4 Aug 2022 14:20:50 -0400 Subject: [PATCH 09/23] responses_observed and responses_observed_uncertainties --- PEUQSE/InverseProblem.py | 6 ++++++ PEUQSE/InverseProblem_scratch.py | 10 ++++++---- 2 files changed, 12 insertions(+), 4 deletions(-) diff --git a/PEUQSE/InverseProblem.py b/PEUQSE/InverseProblem.py index 34f3e22a..21b1f9f4 100644 --- a/PEUQSE/InverseProblem.py +++ b/PEUQSE/InverseProblem.py @@ -3011,6 +3011,12 @@ def createSimulatedResponsesPlots(self, allResponses_x_values=[], allResponsesLi mu_AP_responses_simulation_uncertainties = np.array(mu_AP_responses_simulation_uncertainties).flatten() mu_AP_responses_simulation_uncertainties = nestedObjectsFunctions.makeAtLeast_2dNested(mu_AP_responses_simulation_uncertainties) mu_AP_responses_simulation_uncertainties = nestedObjectsFunctions.convertInternalToNumpyArray_2dNested(mu_AP_responses_simulation_uncertainties) + #make internal variables for responses_observed and responses_observed_uncertainties in case we need to flatten them. + responses_observed = copy.deepcopy(self.UserInput.responses_observed) + responses_observed_uncertainties = copy.deepcop(self.UserInput.responses_observed_uncertainties) + if flatten == True: #flatten and then nest, as needed. + responses_observed = [np.array(responses_observed).flatten()] + responses_observed_uncertainties = [np.array(responses_observed_uncertainties).flatten()] #Now to populate the allResponsesListsOfYArrays and the allResponsesListsOfYUncertaintiesArrays for responseDimIndex in range(num_response_dimensions): if not hasattr(self, 'mu_AP_parameter_set'): #Check if a mu_AP has been assigned. It is normally only assigned if mcmc was used. diff --git a/PEUQSE/InverseProblem_scratch.py b/PEUQSE/InverseProblem_scratch.py index d8f25b2a..ad458694 100644 --- a/PEUQSE/InverseProblem_scratch.py +++ b/PEUQSE/InverseProblem_scratch.py @@ -3011,10 +3011,12 @@ def createSimulatedResponsesPlots(self, allResponses_x_values=[], allResponsesLi mu_AP_responses_simulation_uncertainties = np.array(mu_AP_responses_simulation_uncertainties).flatten() mu_AP_responses_simulation_uncertainties = nestedObjectsFunctions.makeAtLeast_2dNested(mu_AP_responses_simulation_uncertainties) mu_AP_responses_simulation_uncertainties = nestedObjectsFunctions.convertInternalToNumpyArray_2dNested(mu_AP_responses_simulation_uncertainties) - - if flatten == True: - self.UserInput.responses_observed = [np.array(self.UserInput.responses_observed).flatten()] - self.UserInput.responses_observed_uncertainties = [np.array(self.UserInput.responses_observed_uncertainties).flatten()] + #make internal variables for responses_observed and responses_observed_uncertainties in case we need to flatten them. + responses_observed = copy.deepcopy(self.UserInput.responses_observed) + responses_observed_uncertainties = copy.deepcop(self.UserInput.responses_observed_uncertainties) + if flatten == True: #flatten and then nest, as needed. ("lazy" way) + responses_observed = [np.array(responses_observed).flatten()] + responses_observed_uncertainties = [np.array(responses_observed_uncertainties).flatten()] #Now to populate the allResponsesListsOfYArrays and the allResponsesListsOfYUncertaintiesArrays for responseDimIndex in range(num_response_dimensions): if not hasattr(self, 'mu_AP_parameter_set'): #Check if a mu_AP has been assigned. It is normally only assigned if mcmc was used. From ec8c6bfdf11951f6f9d543ec346d6d1530db8fe6 Mon Sep 17 00:00:00 2001 From: AdityaSavara <39929571+AdityaSavara@users.noreply.github.com> Date: Thu, 4 Aug 2022 14:32:47 -0400 Subject: [PATCH 10/23] converting the lists of arrays additions to all take in local variables and adding 'combined' suffix if needed. --- PEUQSE/InverseProblem.py | 32 +++++++++++++++++--------------- PEUQSE/InverseProblem_scratch.py | 28 +++++++++++++++------------- 2 files changed, 32 insertions(+), 28 deletions(-) diff --git a/PEUQSE/InverseProblem.py b/PEUQSE/InverseProblem.py index 21b1f9f4..12078fa6 100644 --- a/PEUQSE/InverseProblem.py +++ b/PEUQSE/InverseProblem.py @@ -3014,43 +3014,43 @@ def createSimulatedResponsesPlots(self, allResponses_x_values=[], allResponsesLi #make internal variables for responses_observed and responses_observed_uncertainties in case we need to flatten them. responses_observed = copy.deepcopy(self.UserInput.responses_observed) responses_observed_uncertainties = copy.deepcop(self.UserInput.responses_observed_uncertainties) - if flatten == True: #flatten and then nest, as needed. + if flatten == True: #flatten and then nest, as needed. ("lazy" way) responses_observed = [np.array(responses_observed).flatten()] responses_observed_uncertainties = [np.array(responses_observed_uncertainties).flatten()] #Now to populate the allResponsesListsOfYArrays and the allResponsesListsOfYUncertaintiesArrays for responseDimIndex in range(num_response_dimensions): if not hasattr(self, 'mu_AP_parameter_set'): #Check if a mu_AP has been assigned. It is normally only assigned if mcmc was used. if num_response_dimensions == 1: - listOfYArrays = [self.UserInput.responses_observed[responseDimIndex], self.mu_guess_SimulatedResponses[responseDimIndex], self.map_SimulatedResponses[responseDimIndex]] + listOfYArrays = [UserInput.responses_observed[responseDimIndex], mu_guess_SimulatedResponses[responseDimIndex], map_SimulatedResponses[responseDimIndex]] allResponsesListsOfYArrays.append(listOfYArrays) #Now to do uncertainties, there are two cases. First case is with only observed uncertainties and no simulation ones. if type(self.UserInput.responses_simulation_uncertainties) == type(None): #This means there are no simulation uncertainties. So for each response dimension, there will be a list with only the observed uncertainties in that list. - allResponsesListsOfYUncertaintiesArrays.append( [self.UserInput.responses_observed_uncertainties[responseDimIndex]] ) #Just creating nesting, we need to give a list for each response dimension. + allResponsesListsOfYUncertaintiesArrays.append( [responses_observed_uncertainties[responseDimIndex]] ) #Just creating nesting, we need to give a list for each response dimension. else: #This case means that there are some responses_simulation_uncertainties to include, so allResponsesListsOfYUncertaintiesArrays will have more dimensions *within* its nested values. - allResponsesListsOfYUncertaintiesArrays.append([self.UserInput.responses_observed_uncertainties[responseDimIndex],self.mu_guess_responses_simulation_uncertainties[responseDimIndex],self.map_responses_simulation_uncertainties[responseDimIndex]]) #We need to give a list for each response dimension. + allResponsesListsOfYUncertaintiesArrays.append([responses_observed_uncertainties[responseDimIndex],mu_guess_responses_simulation_uncertainties[responseDimIndex],map_responses_simulation_uncertainties[responseDimIndex]]) #We need to give a list for each response dimension. elif num_response_dimensions > 1: - listOfYArrays = [self.UserInput.responses_observed[responseDimIndex], self.mu_guess_SimulatedResponses[responseDimIndex], self.map_SimulatedResponses[responseDimIndex]] + listOfYArrays = [responses_observed[responseDimIndex], mu_guess_SimulatedResponses[responseDimIndex], map_SimulatedResponses[responseDimIndex]] allResponsesListsOfYArrays.append(listOfYArrays) #Now to do uncertainties, there are two cases. First case is with only observed uncertainties and no simulation ones. if type(self.UserInput.responses_simulation_uncertainties) == type(None): #This means there are no simulation uncertainties. So for each response dimension, there will be a list with only the observed uncertainties in that list. - allResponsesListsOfYUncertaintiesArrays.append( [self.UserInput.responses_observed_uncertainties[responseDimIndex]] ) #Just creating nesting, we need to give a list for each response dimension. + allResponsesListsOfYUncertaintiesArrays.append( [responses_observed_uncertainties[responseDimIndex]] ) #Just creating nesting, we need to give a list for each response dimension. else: #This case means that there are some responses_simulation_uncertainties to include, so allResponsesListsOfYUncertaintiesArrays will have more dimensions *within* its nested values. - allResponsesListsOfYUncertaintiesArrays.append([self.UserInput.responses_observed_uncertainties[responseDimIndex],self.mu_guess_responses_simulation_uncertainties[responseDimIndex],self.map_responses_simulation_uncertainties[responseDimIndex]]) #We need to give a list for each response dimension. + allResponsesListsOfYUncertaintiesArrays.append([responses_observed_uncertainties[responseDimIndex],mu_guess_responses_simulation_uncertainties[responseDimIndex],map_responses_simulation_uncertainties[responseDimIndex]]) #We need to give a list for each response dimension. if hasattr(self, 'mu_AP_parameter_set'): if num_response_dimensions == 1: - listOfYArrays = [self.UserInput.responses_observed[responseDimIndex], self.mu_guess_SimulatedResponses[responseDimIndex], self.map_SimulatedResponses[responseDimIndex], self.mu_AP_SimulatedResponses[responseDimIndex]] + listOfYArrays = [UserInput.responses_observed[responseDimIndex], mu_guess_SimulatedResponses[responseDimIndex], map_SimulatedResponses[responseDimIndex], mu_AP_SimulatedResponses[responseDimIndex]] allResponsesListsOfYArrays.append(listOfYArrays) if type(self.UserInput.responses_simulation_uncertainties) == type(None): #This means there are no simulation uncertainties. So for each response dimension, there will be a list with only the observed uncertainties in that list. - allResponsesListsOfYUncertaintiesArrays.append( [self.UserInput.responses_observed_uncertainties[responseDimIndex]] ) #Just creating nesting, we need to give a list for each response dimension. + allResponsesListsOfYUncertaintiesArrays.append( [responses_observed_uncertainties[responseDimIndex]] ) #Just creating nesting, we need to give a list for each response dimension. else: #This case means that there are some responses_simulation_uncertainties to include, so allResponsesListsOfYUncertaintiesArrays will have more dimensions *within* its nested values. - allResponsesListsOfYUncertaintiesArrays.append([self.UserInput.responses_observed_uncertainties[responseDimIndex],self.mu_guess_responses_simulation_uncertainties[responseDimIndex],self.map_responses_simulation_uncertainties[responseDimIndex],self.mu_AP_responses_simulation_uncertainties[responseDimIndex]]) #We need to give a list for each response dimension. + allResponsesListsOfYUncertaintiesArrays.append([responses_observed_uncertainties[responseDimIndex],mu_guess_responses_simulation_uncertainties[responseDimIndex],map_responses_simulation_uncertainties[responseDimIndex],mu_AP_responses_simulation_uncertainties[responseDimIndex]]) #We need to give a list for each response dimension. elif num_response_dimensions > 1: - listOfYArrays = [self.UserInput.responses_observed[responseDimIndex], self.mu_guess_SimulatedResponses[responseDimIndex], self.map_SimulatedResponses[responseDimIndex], self.mu_AP_SimulatedResponses[responseDimIndex]] + listOfYArrays = [responses_observed[responseDimIndex], mu_guess_SimulatedResponses[responseDimIndex], map_SimulatedResponses[responseDimIndex], mu_AP_SimulatedResponses[responseDimIndex]] allResponsesListsOfYArrays.append(listOfYArrays) if type(self.UserInput.responses_simulation_uncertainties) == type(None): #This means there are no simulation uncertainties. So for each response dimension, there will be a list with only the observed uncertainties in that list. - allResponsesListsOfYUncertaintiesArrays.append( [self.UserInput.responses_observed_uncertainties[responseDimIndex]] ) #Just creating nesting, we need to give a list for each response dimension. + allResponsesListsOfYUncertaintiesArrays.append( [responses_observed_uncertainties[responseDimIndex]] ) #Just creating nesting, we need to give a list for each response dimension. else: #This case means that there are some responses_simulation_uncertainties to include, so allResponsesListsOfYUncertaintiesArrays will have more dimensions *within* its nested values. - allResponsesListsOfYUncertaintiesArrays.append([self.UserInput.responses_observed_uncertainties[responseDimIndex],self.mu_guess_responses_simulation_uncertainties[responseDimIndex],self.map_responses_simulation_uncertainties[responseDimIndex],self.mu_AP_responses_simulation_uncertainties[responseDimIndex]]) #We need to give a list for each response dimension. + allResponsesListsOfYUncertaintiesArrays.append([responses_observed_uncertainties[responseDimIndex],mu_guess_responses_simulation_uncertainties[responseDimIndex],map_responses_simulation_uncertainties[responseDimIndex],mu_AP_responses_simulation_uncertainties[responseDimIndex]]) #We need to give a list for each response dimension. if plot_settings == {}: plot_settings = self.UserInput.simulated_response_plot_settings @@ -3071,11 +3071,13 @@ def createSimulatedResponsesPlots(self, allResponses_x_values=[], allResponsesLi import PEUQSE.plotting_functions as plotting_functions setMatPlotLibAgg(self.UserInput.plotting_ouput_settings['setMatPlotLibAgg']) allResponsesFigureObjectsList = [] - for responseDimIndex in range(self.UserInput.num_response_dimensions): #TODO: Move the exporting out of the plot creation and/or rename the function and possibly have options about whether exporting graph, data, or both. + for responseDimIndex in range(num_response_dimensions): #TODO: Move the exporting out of the plot creation and/or rename the function and possibly have options about whether exporting graph, data, or both. #Some code for setting up individual plot settings in case there are multiple response dimensions. individual_plot_settings = copy.deepcopy(plot_settings) #we need to edit the plot settings slightly for each plot. if num_response_dimensions == 1: - responseSuffix = '' #If there is only 1 dimension, we don't need to add a suffix to the files created. That would only confuse people. + responseSuffix = '' #If there is only 1 dimension, we don't need to add a suffix to the files created. That would only confuse people, unless it is a 'flattened' case, in which case we will add a suffix of 'combined'. + if flatten == True: + responseSuffix = '_combined' if num_response_dimensions > 1: responseSuffix = "_"+str(responseDimIndex) individual_plot_settings['figure_name'] = individual_plot_settings['figure_name']+responseSuffix diff --git a/PEUQSE/InverseProblem_scratch.py b/PEUQSE/InverseProblem_scratch.py index ad458694..2b0692a5 100644 --- a/PEUQSE/InverseProblem_scratch.py +++ b/PEUQSE/InverseProblem_scratch.py @@ -3021,36 +3021,36 @@ def createSimulatedResponsesPlots(self, allResponses_x_values=[], allResponsesLi for responseDimIndex in range(num_response_dimensions): if not hasattr(self, 'mu_AP_parameter_set'): #Check if a mu_AP has been assigned. It is normally only assigned if mcmc was used. if num_response_dimensions == 1: - listOfYArrays = [self.UserInput.responses_observed[responseDimIndex], self.mu_guess_SimulatedResponses[responseDimIndex], self.map_SimulatedResponses[responseDimIndex]] + listOfYArrays = [UserInput.responses_observed[responseDimIndex], mu_guess_SimulatedResponses[responseDimIndex], map_SimulatedResponses[responseDimIndex]] allResponsesListsOfYArrays.append(listOfYArrays) #Now to do uncertainties, there are two cases. First case is with only observed uncertainties and no simulation ones. if type(self.UserInput.responses_simulation_uncertainties) == type(None): #This means there are no simulation uncertainties. So for each response dimension, there will be a list with only the observed uncertainties in that list. - allResponsesListsOfYUncertaintiesArrays.append( [self.UserInput.responses_observed_uncertainties[responseDimIndex]] ) #Just creating nesting, we need to give a list for each response dimension. + allResponsesListsOfYUncertaintiesArrays.append( [responses_observed_uncertainties[responseDimIndex]] ) #Just creating nesting, we need to give a list for each response dimension. else: #This case means that there are some responses_simulation_uncertainties to include, so allResponsesListsOfYUncertaintiesArrays will have more dimensions *within* its nested values. - allResponsesListsOfYUncertaintiesArrays.append([self.UserInput.responses_observed_uncertainties[responseDimIndex],self.mu_guess_responses_simulation_uncertainties[responseDimIndex],self.map_responses_simulation_uncertainties[responseDimIndex]]) #We need to give a list for each response dimension. + allResponsesListsOfYUncertaintiesArrays.append([responses_observed_uncertainties[responseDimIndex],mu_guess_responses_simulation_uncertainties[responseDimIndex],map_responses_simulation_uncertainties[responseDimIndex]]) #We need to give a list for each response dimension. elif num_response_dimensions > 1: - listOfYArrays = [self.UserInput.responses_observed[responseDimIndex], self.mu_guess_SimulatedResponses[responseDimIndex], self.map_SimulatedResponses[responseDimIndex]] + listOfYArrays = [responses_observed[responseDimIndex], mu_guess_SimulatedResponses[responseDimIndex], map_SimulatedResponses[responseDimIndex]] allResponsesListsOfYArrays.append(listOfYArrays) #Now to do uncertainties, there are two cases. First case is with only observed uncertainties and no simulation ones. if type(self.UserInput.responses_simulation_uncertainties) == type(None): #This means there are no simulation uncertainties. So for each response dimension, there will be a list with only the observed uncertainties in that list. - allResponsesListsOfYUncertaintiesArrays.append( [self.UserInput.responses_observed_uncertainties[responseDimIndex]] ) #Just creating nesting, we need to give a list for each response dimension. + allResponsesListsOfYUncertaintiesArrays.append( [responses_observed_uncertainties[responseDimIndex]] ) #Just creating nesting, we need to give a list for each response dimension. else: #This case means that there are some responses_simulation_uncertainties to include, so allResponsesListsOfYUncertaintiesArrays will have more dimensions *within* its nested values. - allResponsesListsOfYUncertaintiesArrays.append([self.UserInput.responses_observed_uncertainties[responseDimIndex],self.mu_guess_responses_simulation_uncertainties[responseDimIndex],self.map_responses_simulation_uncertainties[responseDimIndex]]) #We need to give a list for each response dimension. + allResponsesListsOfYUncertaintiesArrays.append([responses_observed_uncertainties[responseDimIndex],mu_guess_responses_simulation_uncertainties[responseDimIndex],map_responses_simulation_uncertainties[responseDimIndex]]) #We need to give a list for each response dimension. if hasattr(self, 'mu_AP_parameter_set'): if num_response_dimensions == 1: - listOfYArrays = [self.UserInput.responses_observed[responseDimIndex], self.mu_guess_SimulatedResponses[responseDimIndex], self.map_SimulatedResponses[responseDimIndex], self.mu_AP_SimulatedResponses[responseDimIndex]] + listOfYArrays = [UserInput.responses_observed[responseDimIndex], mu_guess_SimulatedResponses[responseDimIndex], map_SimulatedResponses[responseDimIndex], mu_AP_SimulatedResponses[responseDimIndex]] allResponsesListsOfYArrays.append(listOfYArrays) if type(self.UserInput.responses_simulation_uncertainties) == type(None): #This means there are no simulation uncertainties. So for each response dimension, there will be a list with only the observed uncertainties in that list. - allResponsesListsOfYUncertaintiesArrays.append( [self.UserInput.responses_observed_uncertainties[responseDimIndex]] ) #Just creating nesting, we need to give a list for each response dimension. + allResponsesListsOfYUncertaintiesArrays.append( [responses_observed_uncertainties[responseDimIndex]] ) #Just creating nesting, we need to give a list for each response dimension. else: #This case means that there are some responses_simulation_uncertainties to include, so allResponsesListsOfYUncertaintiesArrays will have more dimensions *within* its nested values. - allResponsesListsOfYUncertaintiesArrays.append([self.UserInput.responses_observed_uncertainties[responseDimIndex],self.mu_guess_responses_simulation_uncertainties[responseDimIndex],self.map_responses_simulation_uncertainties[responseDimIndex],self.mu_AP_responses_simulation_uncertainties[responseDimIndex]]) #We need to give a list for each response dimension. + allResponsesListsOfYUncertaintiesArrays.append([responses_observed_uncertainties[responseDimIndex],mu_guess_responses_simulation_uncertainties[responseDimIndex],map_responses_simulation_uncertainties[responseDimIndex],mu_AP_responses_simulation_uncertainties[responseDimIndex]]) #We need to give a list for each response dimension. elif num_response_dimensions > 1: - listOfYArrays = [self.UserInput.responses_observed[responseDimIndex], self.mu_guess_SimulatedResponses[responseDimIndex], self.map_SimulatedResponses[responseDimIndex], self.mu_AP_SimulatedResponses[responseDimIndex]] + listOfYArrays = [responses_observed[responseDimIndex], mu_guess_SimulatedResponses[responseDimIndex], map_SimulatedResponses[responseDimIndex], mu_AP_SimulatedResponses[responseDimIndex]] allResponsesListsOfYArrays.append(listOfYArrays) if type(self.UserInput.responses_simulation_uncertainties) == type(None): #This means there are no simulation uncertainties. So for each response dimension, there will be a list with only the observed uncertainties in that list. - allResponsesListsOfYUncertaintiesArrays.append( [self.UserInput.responses_observed_uncertainties[responseDimIndex]] ) #Just creating nesting, we need to give a list for each response dimension. + allResponsesListsOfYUncertaintiesArrays.append( [responses_observed_uncertainties[responseDimIndex]] ) #Just creating nesting, we need to give a list for each response dimension. else: #This case means that there are some responses_simulation_uncertainties to include, so allResponsesListsOfYUncertaintiesArrays will have more dimensions *within* its nested values. - allResponsesListsOfYUncertaintiesArrays.append([self.UserInput.responses_observed_uncertainties[responseDimIndex],self.mu_guess_responses_simulation_uncertainties[responseDimIndex],self.map_responses_simulation_uncertainties[responseDimIndex],self.mu_AP_responses_simulation_uncertainties[responseDimIndex]]) #We need to give a list for each response dimension. + allResponsesListsOfYUncertaintiesArrays.append([responses_observed_uncertainties[responseDimIndex],mu_guess_responses_simulation_uncertainties[responseDimIndex],map_responses_simulation_uncertainties[responseDimIndex],mu_AP_responses_simulation_uncertainties[responseDimIndex]]) #We need to give a list for each response dimension. if plot_settings == {}: plot_settings = self.UserInput.simulated_response_plot_settings @@ -3075,7 +3075,9 @@ def createSimulatedResponsesPlots(self, allResponses_x_values=[], allResponsesLi #Some code for setting up individual plot settings in case there are multiple response dimensions. individual_plot_settings = copy.deepcopy(plot_settings) #we need to edit the plot settings slightly for each plot. if num_response_dimensions == 1: - responseSuffix = '' #If there is only 1 dimension, we don't need to add a suffix to the files created. That would only confuse people. + responseSuffix = '' #If there is only 1 dimension, we don't need to add a suffix to the files created. That would only confuse people, unless it is a 'flattened' case, in which case we will add a suffix of 'combined'. + if flatten == True: + responseSuffix = '_combined' if num_response_dimensions > 1: responseSuffix = "_"+str(responseDimIndex) individual_plot_settings['figure_name'] = individual_plot_settings['figure_name']+responseSuffix From 6de26eb68ffe7835fe030a0e1ed96797103cc4e3 Mon Sep 17 00:00:00 2001 From: AdityaSavara <39929571+AdityaSavara@users.noreply.github.com> Date: Thu, 4 Aug 2022 16:51:03 -0400 Subject: [PATCH 11/23] Update InverseProblem.py --- PEUQSE/InverseProblem.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/PEUQSE/InverseProblem.py b/PEUQSE/InverseProblem.py index 12078fa6..678b9bd0 100644 --- a/PEUQSE/InverseProblem.py +++ b/PEUQSE/InverseProblem.py @@ -2922,7 +2922,7 @@ def createSimulatedResponsesPlots(self, allResponses_x_values=[], allResponsesLi #allResponsesListsOfYArrays is to have 3 layers of lists: Response > Responses Observed, mu_guess Simulated Responses, map_Simulated Responses, (mu_AP_simulatedResponses) > Values #flatten = True will convert the individual responses into a 'single response series' num_response_dimensions = self.UserInput.num_response_dimensions - if flatten = True: #if we are flattening, we will have 1 response dimension at the end. + if flatten == True: #if we are flattening, we will have 1 response dimension at the end. num_response_dimensions = 1 if allResponses_x_values == []: if flatten == True: From a7749a782e85e370617ceebb131ae434a739a92f Mon Sep 17 00:00:00 2001 From: AdityaSavara <39929571+AdityaSavara@users.noreply.github.com> Date: Fri, 5 Aug 2022 02:00:43 -0400 Subject: [PATCH 12/23] Update setup.py --- setup.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/setup.py b/setup.py index 409c0c84..8a71acd7 100644 --- a/setup.py +++ b/setup.py @@ -21,7 +21,7 @@ EMAIL = 'AditySavara2008@u.northwestern.edu' #Eric A. Walker is a co-author and can be reached at WALKER, ERIC AUTHOR = 'Aditya Savara' REQUIRES_PYTHON = '>=3.5.0' -VERSION = '1.1.8' +VERSION = '1.1.9' LICENSE = 'BSD-3-Clause' # What packages are required for this module to be executed? From c7bc18c4a4ae7473a8937230a7d9aca50772ef65 Mon Sep 17 00:00:00 2001 From: AdityaSavara <39929571+AdityaSavara@users.noreply.github.com> Date: Fri, 5 Aug 2022 13:01:44 -0400 Subject: [PATCH 13/23] Adding current Example 7a graphs --- ...utoCorrelationPlot_Combined_Parameters.png | Bin 0 -> 19105 bytes .../graphs/AutoCorrelationPlot_theta_1.png | Bin 0 -> 19415 bytes .../graphs/AutoCorrelationPlot_theta_2.png | Bin 0 -> 19536 bytes .../GewekeDiagnostic_Combined_Parameters.png | Bin 0 -> 21297 bytes .../graphs/GewekeDiagnostic_theta_1.png | Bin 0 -> 21043 bytes .../graphs/GewekeDiagnostic_theta_2.png | Bin 0 -> 19325 bytes .../graphs/Heat_Scatter_theta_1_theta_2.png | Bin 187746 -> 181900 bytes .../graphs/Heat_Scatter_theta_2_theta_1.png | Bin 188161 -> 180835 bytes .../graphs/Histogram_sampling_0_theta_1.png | Bin 48412 -> 35187 bytes .../graphs/Histogram_sampling_1_theta_2.png | Bin 54229 -> 39718 bytes .../graphs/PosteriorContourPlots__0_1.png | Bin 127357 -> 127568 bytes .../PosteriorContourPlots__combined.png | Bin 127357 -> 127568 bytes .../Posterior_Example_two_response_0.png | Bin 53800 -> 37007 bytes .../Posterior_Example_two_response_1.png | Bin 47884 -> 43398 bytes .../graphs/scatter_matrix_posterior.png | Bin 293722 -> 265936 bytes 15 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 Examples/Example07/graphs/AutoCorrelationPlot_Combined_Parameters.png create mode 100644 Examples/Example07/graphs/AutoCorrelationPlot_theta_1.png create mode 100644 Examples/Example07/graphs/AutoCorrelationPlot_theta_2.png create mode 100644 Examples/Example07/graphs/GewekeDiagnostic_Combined_Parameters.png create mode 100644 Examples/Example07/graphs/GewekeDiagnostic_theta_1.png create mode 100644 Examples/Example07/graphs/GewekeDiagnostic_theta_2.png diff --git a/Examples/Example07/graphs/AutoCorrelationPlot_Combined_Parameters.png b/Examples/Example07/graphs/AutoCorrelationPlot_Combined_Parameters.png new file mode 100644 index 0000000000000000000000000000000000000000..e191cd49d60d5abdde5817c7354117bac8a0c216 GIT binary patch literal 19105 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 literal 0 HcmV?d00001 diff --git a/Examples/Example07/graphs/AutoCorrelationPlot_theta_2.png b/Examples/Example07/graphs/AutoCorrelationPlot_theta_2.png new file mode 100644 index 0000000000000000000000000000000000000000..7e24ceeb7d7344fb38e0a52ca7d3e726962dc338 GIT binary patch literal 19536 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 HDWM4fRMM}G literal 0 HcmV?d00001 diff --git a/Examples/Example07/graphs/GewekeDiagnostic_theta_1.png b/Examples/Example07/graphs/GewekeDiagnostic_theta_1.png new file mode 100644 index 0000000000000000000000000000000000000000..ccdcd3e0fb64ec9144308a7d3ffab030a628a4ea GIT binary patch literal 21043 zcmb5W1z1(>);79GK^m1*U{NB{4boBq5{jg>AdQ4bht#6Qpap4>ZfQ_L1f(Ps1OW+Y zB$Ya2`tEP<@B6O*oa;aDwb{aAG1r_=jB$_qzQ+@xrJ+o6mhLPHg(A73qHqg^!YYF= zCIWnTWrTy>7XHC?lfR)u0RQ1;1o;~|s<1X%nFXQvuhdBE$y73$QYiACBdmeah zerulIm`a_PI`oy^*jQvSi{>YnCqOfF_KaX5-_*RqRU$yQvuIflAqvgiB@JwD4$;-jrD#)Ik8lW^XaBTApW zRXIz`?85hz-SFe%LcP-2ccDZ{!uC|sN1NBx)5Hcx%u~IxB;J+mv_>o>(bKK>Z@>aZvuJ$B%ZF25~M)xCg4{%DcGm%U{1vaq;5hvP+(jOro5hpOnT+iO{7b zn}a`p=+?Ho7z18aR8SfgQ%y}x5fBo}85>`M4|?$90|h)3#r^*Dj)BbUGxPJIA3mt8 z_lU!|^ET~JCh(fZ!o!*^4P@%qIMA|E5~9AhoF4P$sV6^%M?eb+o!?&Q3zpABp?nW! z!VhMncpuDvybux+Vm6qis9*1XrTKWz=-}W$mgBs|-s%_6QM=>w*Z zA3tt>yjp5DR$>g3N+abhM8&0VwwHE2jF{isuib*b%8(lu8w>vDy}wS$b*q4!k&!G&w)I=U$&r@|D<#|n3T0<+udS^ew6wG| zI_3XEfwJYH=-rhol9&P266wPkd*_ooF)N=kiI)w4#8o-U~_A^}IueuouN)Vvid zW2N*jOG`>(e;*u_!FqU5dweh#=g=C6Wqlg=VXZr5!+lwv)e#ny{NksVXv&DU6Ubi0 z#lveG8>7DVXuUo2dbpN>LByBJ`|l?v=#f1lWJ~$$*DqMwL4kp&i`P7euX(J>8XD5U zI(Aw9d}VdK9B2RABgV$YMnkFaHrOMtv^dHfz6ePES;|J44Z0+pg;jj>=FO;ya5Bc& zCr`*dy}ZnSe2B+HM=QYU-`kibE7pxlH1(&oD5ues+CBege`9*~0C@q8MiY>dc3Q?s zg~1}mLcx3E?8i#XM~e(L_x3u!w*_x4Wye{}e|$lHHdL!{goBgwu~N32r>B_r?()cj zo0#V&6DKDpU%-j)!QtU`=J@Zt0l$e*@Ycu3{s zhmPPLTOJlJee@g*LbOQ=MElB5?gtb z&ptNlo&fERw-nFaw}Fw7XR~?OUTTCNt~ZdOo;-c}7~<;O>X%BD8#m-&1$wNG2l*ZD zq1o8*P+uj_ppZxjziPuFlWhHF-R+Wai}M9Mwv)@@ulb&>pZOVCRaNIv57xd4f4C>0 zqoczlB=q@pAr}`{QODM!DX+`>wHX%_Q)tJau-6oF4rdG}f6vE{T>ibVc%Hv_L3>BWq|uWi zGcywvct70>zv0nFXDAUh6FC8&+k!fZPc^CbED_QBjwtGzRJW=;G<;@-_^1;Ni^E`; zYK?E*di?I4yi<`T7ge@eB99~TRE=z9gy+~_!P1&MbE-S-f5;6xkDQu1+-IYSy5)F} z-ZV2_1UAXc%STgfQM}EVkwU$>uhsSt3dKBDX_i-3uu#W``^w>@mo{g@8M87ou_RuS zUe-u!h3$lbhdw=8l(Dg~2~=l)4?!XP@ndWqJv|m_>8UI?l&q{Q>g?IGWp0Zay(z*y zvvY=S5Sfqutd!CS+ntAj4;~-a&pupPSwWK%yyYDaI6a)cD>~L1go8eRw%n`@+osy^ z$Kv7~>;|fqny?;9X-Kd(LUaz(&6iq^ei13f(1i}?Yg$g!IKmcrqQbhlyBn&-fr~=& zm{`C`W49aZE5>j258oFVRBD-;lD$w3mGap`$rdhF32Ugavay+W#a?>-`n4?Nz;v$# z+Q!q9Lw2Kv5dB`S>n@$hXU}5JlB_pwYlt{a ziaA|Fqk~8;Nqk=7H@v32{VsHQ*^Y{ux@*dNg*%GjP!|@u8D&Jsjoe$Knb*&Vn6;v6 zU{LZ#>|*x#)8_g_r|(_5=5g<(#6yeH=0BVbaPJ0j3{o_f(U6icyK57PzYh;9qoaxU zemv8x5O-Thk|eW?Zrc8IZ50Cie2r$BSlfEbsXub@(S}FPd&8PC{GBw1Yqit*5bK|* z<`zM0au_c&zq{3uB5bd(uTMinOnh&9vEO-1jGE`JS)9y?7!fI{HF685`vIq83*xB_ z)tKyRu|BE(1qd2GGojQ;EiE!DQ%%>5-ag3eJ{AxZ{Ibz<>hw$6)u(LX+RHJ4KSM*e zkcjF?I%Lx9OY8S%$9AyAN!7xF8P@ux3(ROL!Tl*U4UJAB-p0VKxvmB#&aMX|i*}Q5 zU6Q2z>c6DZ4V@TlPr3Cl$FiveuqS=G3xw|gdwiOGn zDYr$_l@uLurX53Q`M&{wY#$=-Gw zrb;+sW^JeJn~uxL{Y|gw*4^_;F8lpaO#V+n<<(gc!qwT1D9`1B{7qN`-%A?SU6(Bl z{zN??w`hs{ieKn-x&0RG`@w8w%fr33*KgiDhRxZq(M%MhgoE;g8R5JC=_2gXIl#XT zXVqC&vp5gGK2!D{uOe#$)EvXZ#LJ*)sCq;up z_t5(Q^EJIW@=48P0wJ-Ds>Sm%f|B z0{O$sI|EB8dB%5acN|x5Vyuu_Ax$HR62Cun7Ra^w?nXB((>0u=ayrU+F#XIwXj*>Iitx%A8me@`!MgS zprFtS5F}eEM&94Qc~BZE6--oAaH3vM+|JDV@GXG1WMnc&e5UBy0pH0&uSd-2J*a&! zsQ|wq3(nP82_!2`D|azxQ;r(N5I7#{vIWkeZ-ubkZ6%tsqjH2fC05Lfwp_8f|g z8>mnZAY%duC^D=*`|Pr&lDc|yRJKT77LUR#E@b9*oSgi87AdK3OEnP39t2!wW6K0s zHsTgdFG@Ps8RMqp=_v3e`IGrMO8P zU+E6!UvDV!y1;zFgE_x`kw_VOt%?zIXx}03lmqSrliLPf$o*eM2buXpmB|wh1bwZH@u(NS=Rw=GU#I zrCp4s6ONql-)P$Bv+kvFf;#>Sjf}r!?Qti)^Mk7>oYtM6!~74Ib)0;@R@o+rIMUTh z!B6TL(k~}Ief;>2-np^OF^*A&q4IwJLQNN-qx~tLxCsVfyXS)zv6?c+LeeJ(mQF^Q zTHm+(Wfp4~y?#(|8CGE?{5RXqlzVPjkgw3bA!oBdBVqG%jLPbw2x0GMUV$K4GuP?K z$-AuV?9BZ9@rMHJA#ZtiW0J*u6>ge}>!@m8lxy{L=t)dSm>pDRoHu0ZyO}OY3*&** z!YCv{PSiRp170_kQD(7juj3l8K zdG-1=!BxEy1#Rv4LFsP|kGh6()wX&C`)R(dFD{19_ax5!=zhk*!O;p8F7PNl_Ydw8 z^=c_iABo7XwiyvclUt+)pCOayNn~MW#+DtPNB#c&8xtG5ut!Knb_V6?MSIHLv{KUW zw&l9K{6Mw6o{p|ALNxpinl_`^_{G00pTo~*A!8RrF}vWkxhr6mhghVvgb zzvkGDhAy#WQPH?u{QH)oI;EjBNJ{2V&jN#D5T%gI-pdhz1L=oz~(!wCms zb#=(6q}8niE^Y$J(WxDy$N?G{w zy!)PhwcP~-q$MTMpjshM2EM%Z$l~Wv?$TH(nHuSup(Y8lx!H|z7W=rxr7l_cAb>tB^+Auq_I(_$N$qAd7 zsLsBI6oHGRh}*Q3N&PYF*CSL^Aa0}ohH+KDxh$*ecv*4!D#rhQEq73k3Dp>S(^QnQ zocc55qQAp23#A?@W&D$d14Cx2AsQMNg1<23mhH~nee}R*>}&z=SptN~)EId+=rR_7 z6~;_Thr_Z5shYrr6LQhCHDT{qYCU;`C6ah9!_y4dRUZJZeemnY4JXB4dm6ceZfrZK z@7KBcW|@S}ok2@p;oy+HcaOFH(FSRg30dx~2xMUbOAu9f-Ho$acg%t~`VDym%irq( z!8u;zNbkM3N{A8z+6Jl3pq8XoUbq{^selua#B+~5Rt~noCaa`mnwkmf0T3hE<>iB+ z6kG3gE-)8=P`?;tXa>I)5TN93+{9LjV<2fViMw!B*X(<1PzhAu^2q6b|vCqV#pHpn9sXe2%P*l(u%ST0K|QKW6s$Kc11M)McyC9vm+!$@tiGBKf? zn}6pOzW;7~n>x#dR?1Q~TZ1ga+R`#aAM!DQOQte|SNjNB?4_aQ-O#1$_KyLmQPH3^ zJb+$&Rx8-)X?p3)1)Z-6#u(Y#7QvpA|86X7XAbUduOYh$#aES!AVre(ei2f9w-ZM7LRP2%L&L)pe*0(Zj(gL@D@Pn}bN$|;2Fex&5`tqu zj;PZlCY-^WpslTKX}p|;!Fve}SYH3qeoD4#m+W0vnE*FML`0~lt1DPpFU|5(?K057+RgbpQBqdSOxDZdhA-58s1=i{98h~Lc;}Eq3t{MMJ zq!-1=IbWQ;bLS3F>V<3 zYW_#!v*VDjq142djbaSDP)))f$N#7SYb=z*&LH%4o`AQ-=j)%L87jUrZY4H%)i=hgnceTLBGrlYiMX_0C)mq zE%Nj8CrSB;jFuP^p$>pvCiAhNW!1MvZH`9GNqaA|Y7NF?w z2*1_+>@w&R(NL$*!{DI;A+4~8iH$G6&A^c1p?dX?>4hZ12AE8HRib8{M7!?M9>=V= zhbckfu$P%EMldsYa(oDTAitO~02zEJ5ea65& zI`hRy<1Ra;w;b1bEo$a+`aUI1f^z*pg%EqY;*LXl$R^z1;;LS=x!@w1AnJyn!rQzG z$)JMjFn+$dQaZ-+C+yp79!UHzPil$V<>m`QZBo$%jHtAm+=ME{;tUcNmjLY`8W-vn z@N#;kCJ$W{MhQ15GMlxDnwr;$%7XH6*(nH(bc|HnnbO6H^3dpec<+ZU9a|6X?7JM@=>MX-T!E1jDE0ez&aO>BvcR4qn@!1Zs z>V;bf!VQmp7Ow8hIwrY;seOw1DR2F+@b2K?P-tn~700;9Pj`q*V`ygAQ%HVI&B(tG zhP#Scusn5y&|&1w9U2LD4iF9zAO!Uou5;5a6~Y+YZ&${29qx{qVhPTakvD%+V$eFu;6%f7}t086rcH zOhB`s1xt?c4HcDEAV|UhNC)zVwYJLYh2J}8Z=K^@OhjR$`e5_IH6dx&!!n5=0LPiY zUynEWh%&RVfU-kQOZzi=oWPb^w@5#T-?H;N)N;aJr>3WW^wL=>;&KItR(6Q#E(sbb zkp=QtvwM_F1T{fD0RgW4=Wsqhgk9i}qiF^4A&R&t`G$B(z86c(?~`=a2n;3c)v~f# zm$ya}F9pFDZuvE9bnPD@pFiH>g6zE+Q(3ZSVEOab;;;|Vg}P< zT}x1pp7hMCXlN+e+Fn7)f^-9GqrAL)>05&+WZ?Vz+ncoyh}EsEg%|QB0G*EaFXM_> zv=bn^8I%hBMo)eQ-%Yu=bh>czW{0m;gg^zi0(o~fSv^ef{wIAMRPOLkJ}5hZ*2MzK zO25vP4X{S^9x}TU9;+BAJ`oY4qc>R)OX#NLE8W7a!;O}?&6)Qy#|f|g%L{O@Tv+<{ zhxOHhxDQzZ-tS$n-EyyOYxkuAEYRCK)5P622dhAAX_V5rvF|n}VAWATeB@F88 z($a9TMfAYraYaugbl($u@ICO0p8_)lXsg=B#xW2ZL3GGAs&zsLfs>Q{ z7Naz=zW6_wS3^sgBR|oUDI4wD2$8l}@rFp7!Knd`Z)7D z3x7oFDM;pwDC2)~DhS5}QC!pi7RnK?LQYQ~g&?1klat9cQ{S!7>o_bqO|&3e#anmcIUnhsq*}FJ6Qe6>*_tEiAIWcw#%TmKEBOU?2CIhB#x(FEMSITG;vzJ^?)y@JaYa^Wi5OM##-p zJqhMe73ep43*(b95C_Qyu77JlR2&*XYhw80SWuiSfg|ydVk`(P6ma9_gSpkPc!=H8 z+lv&spVGu}P{8d!)_3@#!-t25hxjO74gcIc+U~am1(kd6H)vH)UcMxOOM`%1bMT6C z))o{O4A53tjg6BwqcNcP`T}p_$iVw=T2c<+_qz~6OhiN*NSg8g;E0HGmo1=hhV==; zr4qnzlo>#DgxC4A^Ao3&rZes@z;8&8%Ool4wVi8?a?X%rlL>Dnxi7F8#-6tmWV z)Z&wqBNzjYD1Za1y1A&Lsj2MkT|emPw$M9slAyv0_3)jjxtv=C-4ko*-SQ&5(E(NJ zER`j^_{2b{fsG*!mp1LuAy^A46jUojbw2MMn~T!EZ%5|1uHb>>$d51^@UhsadXF_b zN6(PA#pf<-dsD2UkorUTa0HvrA?y~lFg_4#_HilGEXmn;Da*LyO)qr(7_tqw~O-y1D^%)32 zNJ38r{p;%LKJ@kB1?u+r5xQK42Td8=gYc87#c}t1%-Rw6s=SV^J2?T$S#T`!#=pQ5 zOQDe&B3x1cx4_$cfDN*+cvg1y)_kIAjaOQ3ZYz>OVGBb&905ZHq-w30o~|wx2vXYm z`WPPLdi}%m1TI8lrKX}jHxsT^x)ZBI;m=H2bC7ArL_t&#oj%^NOqHZt*m1SA@!g%< z5R_hzEQ`cd=A1u>xSZbl@x@hs5CC=V+?jzu%U-I7Za>%2+39M!0DKjYG7O?8cqn;Z ztfR(IDjoE4p9drM&A+=~4-z5?tpF}CoIyIAcqkzuq3^KPJExj_i~^X5RD*_xhRSS* z*%g$PuY=#^wT`WNX{Q4dg*L^R z^0<)I`{c+uJx~;~~VjhHh=E^x>)?kVI)$Ti?3>q-;Jt@d-bp zq~fzRq{eIh@%a@RQKz)QwVp)YE=0CII`SREwLVjT7iIXSx?ZHK_4V2K@%PKPNOgZZ zUt*l>%<=y8BRPe=?R|>Oyyo3Zoa+~|#3}2a zB#(D5^R(Y7)RoJq9)tMB2^NClkpU_y4FFmX4)1^?x%E!neKwf&=g~ zYp~mZ0cHT0h$w~*lW!>?1SAPqMgB!So~z|u2p;`BHs)44GB!3BN^N4J{rSfgE?S&y zPK8;Af1n&m-Twi~btp6Xg#b`OOjm@2gh-(Zeh>-wr9fD&<0CU)+D}0jE1>lt)-hCz z6hq8FPe%2n@TutNBBAuLgp`;h?#2$n^p5v3K2!U}a{XxdOB&>MKc!0%b<+G}?z(#^ zr7uUC*=Cn`Syy$Q`=|V8!B^V(;hI-1twNG49}=yGGx{So831eD<&p=CwY#_y~-2-M6GUDdv+nO#DpvYebLir-yd31Y| za7KJ{<>#&+(h2TpY#Ywp{ajUR3n|#4A>>1&(K`}S!Af0Uxw6jyws81M9udMlb3lE=xmFl=do6$>ma0IJUwjXJ0A?JdFJ`5o(- zTWw#eXn&@hfttZYps4?!mrrS2)J*+$FMwC+0r-SiSy>;PG6WpCsK1mLL8f6K)W%7` zDQR`w>Hn{@Vv= z#Lidp_G2wb$9mzi7z0Ge4+ruU@#Yw=_3@qnp;R(5_b>VzhT=N=Gc<6hXG5_E2L~sm zf$fk3@deq>Kj!Dn7kZNqKxWDuvEv671R?sCCTe-#6c%0*cvMgoBk(6oNsUr}*pK8n z+*A?I>|0>E%bcgBk*I`;i|Y!)Ig>__cvJqdjREy+Gf*>80NO2q)(~@FA}75h5dt1I zk+^H%e}dJ@%*_0KZ7oJSTd6v!OJ@~6Ne79& z%?m^`Y`663tX$mDkW94I{l232;BVqGISuo56cMuJ-6E4!v+W zi~&NCaB^1Ecgg<;I&%AqiA*cAQlk0z$VWy-#M~B$!6yhb31T#Zo0@@|u=cQy0Qa%3 zo|Q3f0Ex7S0>`f;K`UaE}01qmH7O94M-Y%(r=gtL4jDuhlJ2;q3Yq9_qzL??ivu-V2-A>2E#6&luk5lz= z>g>UQ$-&PFcpm+%8!?7Kk%MFNhF#kA2c{c0;Xkm_BDG(clfUIP+Zc8>aB>Q|nrw;( z!U1zXse&irLsiYv*{)ri$eVlm^r_a}yV0->5St}0FWI!;{>wpWSacA^-osKa2ZEEB zK{9DY;s~5_503vl^z`uoh47N+?ug!{O@|cKpM42~My}|}4_cuJK`-*Wbuz8)qw1Tt zJCfkudi!7oJ2EP2>w7TSET{%l+%{MKe!wl7(;q$avw&BFipC zGH-V6E6jD)oyQ;45EfZb)y#>9^#ir)x$a0#9;tp{hvQRIqabvqU3)|dc@g2v!8-YM zp&Y1vZmO0v!TY59wF=Dq*H}I!@mnH-;^AXav@G+xT#4ba=LWZw$b>GKB6E77FLY@E zj2LbE3A|YFZ0i3ne9g6jxZnJI)p&v~sK9>|3+vC=Zf;>NJa6Q8e5IwO!FRY&Q*Bs0 zp^j}v6u?NaY*YXd1LbVKLa5HXXJ@DpN=~nZy^R9f#;tdDXOJiY{0+i9rHVRtf~$0M z+%m3Cf-4p80P~<27^w8No*prZLLmtig?A$7suZ|#fVmU|C?9ee3>QmanzgXB{7b6? zzvs62>ET0tk!Pw3X2fruvhZ?;mL^uEaZ?PA7ohwbM z*}gefoRS~`X>i#0RFQ1Q@KgY792iUlSJ zWQgUyB|zr<+0btJSg0ex2$EG+Ms8g1?xNZ#bO!Ch3MTW$y|4D+&xO!Wr%z0b?cSj?i9jd>eOI7rQ`2*TLha zPBi;nBcn)Gb|a@$hE?$fDr&I;gx4K5#z+G*hq^h}Ge!0M+qt2OeeHv1k&mIYBu4l^ zRaMnZ$m!WdMZ}3b#`544H2w!_eJ;Ftlg-MDRw^*>mbYm?!#UQY>$ z?a1@oTUVe)Tb_NrI_GSmt@biqF58kSaS*49Q?Q%_RNKJ3m8sVapX)$%2!y4?BrVM# zJ8aht^T`wYQ5s8{yMdhKPG~~xKUnD|2$=OYsh5EOka!u}a8eG&d=r!OZ-mS*Fq?~a z=I$grv-9FjKLVG?`H~UcUfp%x1?)BmRaUr*HM|@M!@VtUXwZU0_9-G12#ARlz#j}Q(k-axETE-9!(e7+;Z3gu?jPEE9OvjDgSQMcsMiR1 z0NoNx7A|&s`-V^PPYEF#d$#b=J+H-=k2ZmqqvOu8jpZ(s#HE34Wlz2|wj)_gkJB*t z*OG(}BC|^cEXJ7B?I-+Uz`Y|JT{J%;MAfDcjD|9Z1QyurJ&Biorl0!sTnR`> z5am)dH9SZ@v$evihws66Suokrfej)IOdH@kd+S$GS&4q3dXt^k=-aBiLwak`+b0J1 zCf8Ij!pOB2Qc8aS#lvU*4%dk-92f$Q^JkH^5y<$VcX`0n#0T1&XT(jrC3y#3Rp%wr zsvJB-e)+-nii)P3kd5yheM-qk569vkOz|pZb|Y_e`{Q4}T-$t$ZMY&|^(vZyuZU0y zGPM-wD%3*8cMe${i-`s&Dhl0MEzm%Gr4Bs&*DroJ1MQa`EQ|6a;=XD2j~c`FUw?Ja zCdjxU7Y|Wgp8rW@`G*Ps*W65Koo#_lJ!e1r4rOb<5yqZ#j-OAB^KYU6Wkv){XP$Dy zcdAWKq?td9P7PsKzQP`qWv0A!fw}xf1NZE!NYQL_{*ZnBf0hUYz+Cy!SvTq&+M~TD?)Ucc}rc0Rz8xVKC)TGieP8i#1?a(P z1ONL0aa(R$cubU(+LGrP6~4}aiIZ@V{WywIOe za68}PeHaM<_IE(FXzS?QtI~v~FW_%np!@0Gy?fsQnJ-?I93rJL)cg1qpKsE^SXk3S zCv(}e_LEBK=u$CH_8HV27HAB+G(|ZM!Zw5`Xc@tBc6R<3MXhuwx!H;Xon1I6gyjM$ z**8@AE0&s}9&(kw`#EDjX~Di)*t3LX_##<9t`;{>hm(Ses?)LOo&fX)R37pgRN%%* z{vu$^6u)C+Y}oF?WoxV*`eqJKC^bIah^Y4?KVKkhrCrafvu4rNZ~N|c3`SnK3QR2q zMBJoC8PKbN{6YnO{HWT6_tR{xz^wHg=RUZaGlk;YQ)){tYG>Mca{KFzeqnUK#`I!x zRlYH~wdiX08QI*Ob~_lT|H%<^?@fS|I2CZ}hcvzbAY|_cChFgGup72V;Anl-D0W<`(WyMgiC_(te2l1j4nisH8g4VsQ02BCp4<775=aAy#ZK1VX zv({&nTj#bi#|7>AR9(Z&`-|F0ozeBn;3}#W zn&!YLDW{@BpphmPR8>`_8oi-IL?wlZ357LAscPN%nzjfe|x`J9Tb=vKQ$0p zu^^naf^7CRom=Z!QtGx=H|Epx&wGy-{g^?b#_^W+&bYi3xm-R1t+ZUS5)FJaV@7 z89*9Z05bqRU(ddDl`sA}U!dTwM$HV$#v+6vvisdTH+(m9w~d9j+B*>enSD zVbE^`Xz}BVue|zYD5P5vT4=)kkN;$vw)h`_Bl8l2WnlZj-{=S4A(Rs>m3)z$r5VE~ zW7SDp3hhO^70UAw3Xg$KtQK1@uAO>km6+6F)eWfV>*Vfg~6d5828~TE;~|139Fhh#2QMsU&8%cYelWZK#?V1dG6ug zl!K>Kq(oSB=~V)mi*SJgZf9W1N{sFuCOQzah4A5biWfu38*ccugE`m!pI<1*LqOO4 z>o!P*f??=Q{hJ!@pa>ATR$w!4aio`(Ev#{T?~L9Vfd+@2?V3NH5#vO{yHJ}Ifv4It zdcvw%QS;uCd{Of##wlpj^xe#L#f$Cu@O#OyhF%GILjiZR-EME*mp^_8ISvSBi)LM5 zg~0a8cO@d?GAD-ig{}c_vvxyBKV7eWQ+-P`zhm86??ql`i7>f;-!C+sbqJTi7GW== zzk|t32t~JF zg^$n*=J2Vi!s`O(khm9ugE*aq0zO9Kam;mogV%CjZs&Y#f}Rb;tR!{6_&t++>;slWzG5%+4F-p{1Lvq;g&RjSVAxk6zo9 z66fyJBn;yGGo-zt2M0s`%+lw#(<2pap77$LYwu;)71h>S5tZUV{QZb)PsFKis zqwU3*pf7DxTZK=UOgV0{UR4gT^^u=XZz$qgg;yUC@^g6vj8x zhnl+1JhHt~uckI|juv)tVRSmAW9(AGqF1j_(60)D*N5(ITbGvq9T=tGS4Ohbr%cYP zO&BAt7pY48Y}WfUd%bk4PsiGf19Zl>za)c@1?(J9mWXK~zr)6qIx7asel!JutcE|+@5mH+__;L`v5HzG&(4H5sDin&nDeOL1zwdN;U2Gy; zD&r+o=D;=1fIbCcYHKi=GzLJuEJs!Ii_a-Ahx!$Vk|?u3Z>Bd#%WMiwDqr5`#6t0w zN=A~2rU`iWO)S5uUG#q>Rol=xzv^bB*6Nw!3q56ipiC_IV|_{$B|~i@p6x>rlF`?$ z(c_#U4FM?!EJP8IYYA`{@)K?V`EG8W=@u+%uJuXe*_>XcTr-kaHnzx5wsxl~7b`7o zifQ*8n@#PDyqs!H-k%YwHsoHrsqdx}VIXr!l=J&0m6!RDpA;4<>d}i=+7rK;TRt?H z?SD~C-FP(S)?k14lUQxReuVIb6yOhNDAxwB0MfFI`rGpZ{1;-#ss&NPPfJS+m8_1B zS{f;&MyfwZBB@fPg_KE6jE1wn54<RUsc<~3jDWkoC2^wEYZ+eA%DdKi+=t;n_%3h z@IuZ7xZgF@f8OkH@#ECGyW3&4NNy>r_2Uhk)%t1U{EkXmq*SO z`l6G*DHo1pm6VWziI4je0yMyHitq(s@cBg2cwt@3UG}StkMy;Ki}q$KaPg0Qqp@U; z^UXm`5?>y+G^9@$&$%wtIYMo(rmBi`pF?#$Fg}ifK7LqF*?#BG;(_}S|5d@nz0L1! z#jybtuGh*IE3>sYo`6>l7<8Z(LD)m|C(@Yyzn6E0TbmPBL% zWe;45h99xs&;RQA54*9xd14pU(6#hw%V4|i*8%PV>3s7#IZnrnKR@~6X2_}0qqxCu zbCu`8@%7&hR517O@Te&aF4L2je+(2y6b&l!{WlAyPcww4wd)Mo4PEyM;}~(^BnDR> z=+Z$>UFfzvr~hxEqRwjgWiAjMWRjaG1fhXh+xO)6A}SC#PsyEu>(C?Jew|Dz1Oz-B z8^gPsAiY9{Rla-oA~+dl%k)8Rn4OzLnxL^!Ftbm99snb2^hI$>pfpgZ|E++KMrGF2 zP|?!Tz6Ei35KM}z6Se(pr5)3!Cy!tdm+A+$jEn{ zG4yp4zmH5F5-bG4c>z%vj2T#QE$ymPK-Mn@@FTId1%1rpKsC`?MjO|;hAJv4Rlw^N zw1U=U07anh5?E9QA2^%<-T+mA;ZSYxpx2zpX1l6h;I+ajEl0e9`lbr|FK@b!qZ7(33l04Fz(FlIX7oWLEsn% z^URmgVxuq6iI8McdLQXIrHcvUw?3+uJlcGZTs@k<6D(FMp9{_nuk3nsK^syR9D8Au z7PT=3u8*|tdjh(~#(nS>IBx<_4^X-mg)5eB{XI_R-$ z@8~cGC(B*x{A(TedE?a0dKG4JWSJiPnKOabzQ3(RAg%-R)3)mW39|tWo{G@G8l!4z z-E%C?7?Ek9- z)$mh~Q3?i>P1i4d$d&HBdCt2mKUd{0*F z%0?Q!wza_80u(4BqC&^om+`TZ19AyFnx&m0H=fejx&KHsVoyY+p$PZ24yB0txtWMUsk@_6L zrmF}E!KI?7??HwXTJz_gjv)uUaB*@*cC@#bfislvh3fp%v0$-Lmr?Ugu;fM^lu_$X&@&=hma%A?*D!!5xf+q07hnc zjB*z4g6yq=&n0teYHC~1KAYTR%5mORP))Q&`u!yFD$*V@0Ov$N*Q;CY+EmlTl3|Te z6EygPIZX~81ZFrKQ0e$?+SjMh7zxlRUmD-GW%Bq~0&GR=^$KdCaKaDL==cEK9fl8A z*TN{1=xwhC{r>Z37W~Nvr+e!{IguMA-w(!eqeUuK6_eIfQ-+(y*hthI%hhvVJ%3J2 zbd{g)R%FOoN3`K9R&NSN8!LSI&}8kTHA4fhXH-2|Px+XKds7Xb_HTrW9jQDMbZL{3zKydowcQ2~8`C~$HqdwGeoKZ^k1&cqCE z)F9w%JPiH87zrH4WV2uDuV1df*Gu$mW-a58@wT?N-`^8J z`YBtqsN4C<^(zvYwuW568cQ@ggGiOj~X=yt;0x+{(aC(fUre*?{LDu3;IO~92Ts#>( zIFsMLUE$`og5~zMzPyh8YVctIQ!bSRfGGlT2m)sgHI+UW6$g?wr!mqhfp7`kA z2SUdtC9KU1k=g>`@F{XI_SDvjg825ir?;=KV|e&naGR`|+4lfD)51;q(}+KD!*Fs5 zX~xLt=yHz-w9D#&YOA2Y%FHZZa<>l56JXmMnw*^Ed9QSTb#=9UV!{aAAV1)!1ZL)6 ze|GI@#a(m!!2|H3Ip-a4pdB_sA0bZtfCeA|VDNrJ{L$-iwy_}(ZeuDbDS4Wd!~v&5 z4D451(UMa{#KgP+EKWf|c=qhjnB2z?AD+ksfsIEq z??V3wkiiKxw+szAOHEr6z;zkfVL?F=4|bCth&4ap-`RzQyjpW(<8OK^rANl~76He% z?%quU?`)*X3MD_B@N+(XboVEKMnwhID_3sFh|0*AqWrET*K9n8Q%PuL{2LnsPMg0S zLwBnIoPYy^06Fj3jc4o;7)*YCexv7>yu!)qeWjRI|8iGu+>*+Yrd*s54OzPfKzGcu%U@js;H>&JUJ4F^LKKgQw-@0 z25n>zC{adRk9ppK3x_NFRczS%dwZjLcrDluz(MIhj?{wZ||k`6Id{LRaMWS`v<_YGHiQT zsS6O=p*F0#Hu~vP?Dy|xU?&+AiUA=RJSYZml9#CS6hIrK@gpTAWykGn-UA0m$K95R znhAmT0m)+fJ&qJezZz^_(tW?VP7)}Ey8tnNfzzeH@Hg#vb$$aGhuSLR{!gDYT6FKv z2i#DQxCov}c>wl&sePAXr=iUNY@Lgr3vR=h_F4<#;1eGd)EnXmV;^?FaX2m>9{2-- zde>JbtMhD;(+U_FkrRrbY=}z_JyZk9%=hSk0;zIJKo<`WKO-U{V%pa_Weo`u@!SWJ zF-n_RS_T&vJBE85gWiA3z@Wf6wa*%yM{i_~KmpO`O33gpJZq>N$HvBnf}R)9yh1z< zkB^V*z=Hq{;`q=}8xK=#Uak*r_{(5phyOGfb>}xe!@~to(9ozLws|n#k5Z=})dB={ z`QD0koLpR7oC}K=@l--t|4R77w>q~oHpl)DNiD$(CMGUkZNxsWnWbcQstnN!%r*Mc z8aHmBrKDbh2{!HJ%dP$WMKEI_}fJNlt>({?8zkTfP-MPR-0a|`nTB>Sjxbf~k z;6U}HnKOZ-GCguDfZGE-fa4;d6Z3$Fb9J2H-+yP(pP#@2qqMmA_seYHdO6TCIbe|t zEO3D9L6#gg1Z{aan+81j=>_nd8sPR$;JUF+;7&~;Vd0xQ3YE{EJqsM3N;Z%HZI%Gm zVI3U6%{m7Y4E~htUDJ5VZT+7jpfiD6xtoB;HT`?HO5;@d%70n5S40*q(&$Q>dWFL$ zP{ehkR~E}Mjjlxzs-g!(TmwZ`FJYPimJVSE2J+WT;!5ZO@mUeDDg3Yz z5x_frr+Dn)A3Qh3OS(kxpD&S31pH3yqGsfVAfz6{qSoy0NC=gpnx8f)4VDVfjR38`8We^fSA=e@yKTUXcf z;v#9`^>_Vt?cA+~aKO4YEVg-UjP=tK@!+~Tx&4EKGRqc%l&QMq&!0b+R#vJ+)1R@p zbt{^|%o8WwZ}Y^*j~}Zg9t)a>sprs~eQ&J$xHIQ58%i?HVw8G)`G4#N3tO{`t zAJSyD6g-ym*&Of5QmwwbKu<4V7?{LwVD%;Yl4AG`k=rA0@hK@Ec>gZwb0{e6`1n!L z#YKpNlQZG*V?qW71_AT>+DyxbH&fmZ=RI^7syy>7EiIHH>r(H$d$s2Z2mIFa_U;1X zP|~AEY@(vH4_Fn#LPPPtS2*LcevztLR0cv0>0<>0I=&R@TNIgFG@Yq1t6Ubui$Y+8eR@7_H_ z6B7dmx2?tNKYsi;U(nb5$to*xFA1 zt{TI_AYawj4=b~7w;FkSSDeLdyfJ8aue;L8uSF}2@+CL z_9XR*xj7;elOgpb`*$9{U6w}Wj?>XK4Gl4IBt#7Pugz$_w-J$&l0uNxwY7w_H1d1* zw%*F$|8e4BLPF5+u;~G#sOap}6sJ3prkSs=ENygKVR?BuRzf;0PVQ)b&GExS?!xNo zl#y!J;Jb^%soY##rA(5yOZAJ4h10IIzkc(^s6FmvYH;u|>zFe5gOG`dNpA1FgB*c% z%-x?~BTveD#;3{oB%eEXt_%X{tJmTaUFLaXG8;5bfUWA9>j)^~i?=bCPh)qi>} z>!mZFLdha)p|7w13oc;z?NYDUC}g`6)rSf3sr5A@ku)H70W_<9N^ zyRo?$*BToWR8YYGFfs9}wl-3vA8qu;_5xp$)sOcHbA1H{Ne4GSJ;5g=Bpm$q&2oEr zqS|Ew7a9MWf6a4$TNu_ka{2OQJOTo%!BWe?GHb$CE8(c<=!7RvqP~35k&=!1a`^qkqOo=;}Vcz8jE^wD)`xpF~Ys;88zHp&|m-cEm7t$=knwDr%$8N zJCv5zXXJCcbLZ9TBeyQO_JbiTmH-kI0Rp$%0=Gp^AK*tPbN44+tje)a#h?cYhnQ#v z!7#|#ib_hb%&yPgdf(ZpoOdOS@1W^wW_^3%na_E8Ti=6LE!iuKWB2!c7aMSn5m-P* z87`w>m5+f-t*)+SJA1bHa|%%=p32X!d0MQ7Mn-+RS(870gnUkuG1v|AUZ11h{5?cC zUV?`PD%=|z8(W4tZovZPycg~}NC`8Ysaab!8+T_qPuPhu7FX$@!<8a(g9QEwhZXZ< zcDALrmo`RNEl0;r?1_3(N@{AVcY1GA6Arvcdd2EIR!^>~s){r&lr+Ryx5uI1holn` z6N4A1PP~S$T$jDg-wvdw9b{~kCJVK%nYOjHm6nxFB=`3ACOmxDe0{;q#bw;vi6$~z z=LJ_b&-!WhyRR!M+Fo3Y7P7{Y{rX-(3L~jvWOU-JX?5WJ`?wIoW_8`KZ(J@kt)U4G z4ef^d;66|D`PsQ+8L~kKs~v);1O!4%&#J;2h>wpCgxm1+@maV_hS>GIz^9?1S%z!1 zYPyf_y=3q-oRZaQX|#@roV=~tbt*%bkKak~)TuxSNZ7@$PZVT3r!fN312w7cH^ z5=9Hagp?fe@+^?2>PPnuMwTa9P~0JP?%YH$rF^5zQf+Wa{q8Gu87PyrdyDVpdh;lu z3O^VNI6CRKw~3D!8XAs=v-&sYYCc5|2Pe0Lv{3r`^_K;|it_SS$bHnTtPd)khODqL zCkEf%<%hZ+HaTe}U|5QvmkLWLT;XV+mS4XRL29=~eGKb;&!K5xBAiuU+O}=a^#RjJ2lK>{(EPTuil-z*!%~LjpxZ&<(aR)^Jt3}tdCfkYPbIQ=ycL|S>J6cOH0e` z-GvfMd;9zW*AJq_J?fV{74;&N)%yGny*GZg)$gxf&U(%(FaP}R@9#->=f8vkLeTs6 z{L!OUC@-mo0=6>u77NRr)@D9wWNHhADmFuD=fhxJM2}|PwrGZ$Njz%^)s%B?Jd;yXXlgtuFD58Ag^rkH%0R~;vc2cz!!jrIU#^d7R`dTdqz)#e+vk~IT zb!YX)ui={BjH%wokz#s+#zSSWB?{(|*yCTi-SM~{wY zXJ@-qk;;B*>VNz3?e~7#X2QhNlhq!-85hSID3jFjSy@>fN8a|0TX(~CTm%RLU{lH4 zTN>aA6%$j(2x9se3O2Kp3$nE|)(+$B3YZcPAO8e%3rv~eW&SZi+cR|5X7Nv(+BsSc zHF6`A3i>90eS0GXKm~wY52X9`#Stcm^`b8lJUj$&g9tK`xa#AFUNm2%^8LFD{p_bs z5lN>}OiWBHFE2MXhmuY#ERaGy0Z1|4XJFn2=PkS0#Ufx_PK0&^X=x`%1CIQ*cXn_P z`m?5n3u`Vuw*7!QiYtpi@7h2o>U4W3wr#RK|nx2 z$ZPe7@#RHg_Wdk86%Ar%;$KT$5}^$jl0ap( zYoj9^RsQuDXKoNQY0Azb#N_NWy%&gMs9s2>e#H%a)EE(&fu};$W8y_kc>UiW(+ySA zAcp2HVidj)`5^J%-{5{LGWYS-=Q~1gs#fJ zj%!DhkV5n4?GIc>{8@sTEEsAQXJP?aS!O67%j@ff6(gylH_?{k*1*~49GoF@(P31P zrzg$?X{HF_5EBzuRQAlfLt$6e)~3?BO07s{`6;QVmx=>DOku#$Vds#OJ!1R{MJ(&P5_LLgHWagdstn!ze( zRxTQ1l^D#`9H)Q9V10dkE%ws;H*wEDYG{Oh;3|azx;RG5qtOU3_?4zv2$kgrE-N@W zPY~o1k6(r;9)yF%cT5|;wjox(d>JRO*oWFm#YTrwkt-KIRB7E#Q8#pZw6iF{3ma2*h0g_Q(ejI9+HeV9jz`c0!f{{5If>Tl5 zq7@H4LhHP{bmy~kv@0tsYMPpDP(tFLJTcDy1Vy*|?cH0Z4gM$HW;!p}*l-~hv!ByW zojr?%f*$wgX4m9em%{8r6F(!9D0>leD;fwKt4YB9ncAnuCns?M$cKc5aR9Q^c?viu zBs3HUQB+iPf$AoNWuuAI{@Wfv^J8di{NhGOGI>;c6hsQT3?d?X?ZjN}+?h-Msx5EjNJ5ZaVXX#UBgRC!Jxeaj&Bi|qb0!Y~pjsD`YMW~D6E2Vvpi zgpg$;Ah#Vucr>4cz#suvQE2ogjK3lsU;-3sGA%7FNXM3wt&z|TIcUp5K6ujom?*Xw zCXL{Ja4Kr0Ub6XQ2O3{^#Al!vc$tr$x;hn=A8A%xAJ zEY`{E$&6 z@Uqdl;Q(u37eaMRmyDf0xf_xIe8I6fgcvZwOIIHVxCH2@pv9R4$^{)|^Grw>Y*`!> zRve!ESxaLL0Yz^t8kU<$hZ~?1jfLvU@`57-6UCpE$F9sFlvqnpY2V9JyT96@7=D2$ zA8Rfr1go%Fqy}%ZL$JZ3H&@fJ=FW{+Co3zfaj0qL=3~;lEZnWSP;SsdSvBV0GTreQ z`a?ciCjO1<8iZ?A!MH1BTAk}>eRl{pH!DW*15Qt+wcOTf4_tSR-j9!N@ zDW*y|F#?2(f)Ic-kR>Y=+4`$~Fyt%t+qcxqW=J;>7eML|VXhv0$hLYC`UJVv9f#gUbr+4PpazKV|$yu7?P91c>cAs^== zm**Ja@Qy2!ZKwDP{HuTWYAH;gW1Nb=bjD7^oI~no5cQY$keVEZC9GPBSU81QZe14E zoVkprDkr4q>ApPPWc>J3DBZ|=jX$;3^Z1DqMhmZN;xDy9dB#(P(8tj;NVTJ|(II^_ z_c4QCv}^lP@A-j7qKT%~NLqH9Na$Rh0H_>8(B>d0>y<)k`F>_{oAF6Uf%%&uM8Wc2 zAF01HCMMZ^V_{z6N1st31>K9S{X8}jT z0&eEKe7OU?#ER)78jKzX4bD}didBIGcy;%iso^C^8x!a|7!95?NAnp^QzPR&FIxbZ zE3K*u&&#`6F?7N@Mf?{1aT5I6+FFNaO;4#fWdE+^^MGoJX?fV#*)y@f(GmgZ)7Y31 zR*R6|u6w;A9CWUPgF@XxS?VwTZTbAU82j7R)zx$DlO)`F_q%(}(ELvUk>DGuN+bx} zZD?z&GIHM1lAT4)o6ALcWvRcVUDvxDy6$k5tbDhI0)rB?qd@|J9C@kB z=QvbJjw}O~gV(+Q6_G$fN|y6EI?&JgBM5M}ia9!#UC-r^z<2kS;I*qEydiwh|+az`Ouu;{vP&g3@2`x;mWx`8hWNz9f>zXRqTT&!k*& z;k7}D89u_r&3yq*1;;@G;TGViz@XwHu+q_E0L6+(#&&mW-}d_U`Ua!}=BipCbTytyC7Adx)ooExQ#YOIN|Rv#K>j27Cg307 z7Tr4Fw^mqFHPaChL}>dvybAG%GQqdKhO1o-D;-Z%F+;01H)nTyr((dY1xE4x86eet zS3mF$1OL$wL(U}O(g78-85_$~Go3dk%GUPY9w#Sf@Q?>E?vQi{Sy)&AyPV?Vb6CDL@o^4CZILUdCPL4l%LguwatDx3;ypUegT?2^sIsRI-Sf zXbd_A#ai(JiyVSDeJ>9(6u7;7t8DV)Tt1;nNXw9}4)A1c37o2Eyw#Y-abHe$X$gRe zrUY^bO4o%d;sCMjyU}Oh8>&Ji_#!K-3~J%2Bz51zomnCZ3M^1L3&SOE7h3YP(u>Pt zA%hp_7sWq*91ex(0v8S1^#Os7a#}zVG3^@{a?w*ozKnTJ6#cKN5v|NoXx{KV&yHv! z9Yhq!{`XH`%f*zl_D=1(Xga}ALj??jIBdjX362p`ggkgaNkGADnD3;aK?ZSxAaH`a zST34K3#be=RFN5wkrf$Jb@B`Eei?WX_ zak*U(%$DWR;Q3!i;$nYK}15A1`PXso%|4;d}VicvCXA1^Vvh1NW6vqA|>dN z-rie^gD$qErR5lK_bBUygCz23Dw>(GK*sJbG-^ruUUhqfajABVVt;?X`^`-)S&&dL z((W&>nmw+_NdZuuLB^t3_|jq*%A+tO?%LIl{D!rjWo1(w*&j}yI@Ji`&oUH$+*1t+ zbr~7wOZqYk)A?0E9k{{y<7)>yx{Cz3wK&m%$%2nD@R|NRx!X9@uH zbGdL~^~^%mh+~M_$3?uM<%v+{Sj1}h6}%+!>i-0K8zrl}vc3Iji1`Re{C6H43ag^9 z1^@|ld=s(b`dkm1NkL|)nN>X@El$DS^#Ybj2DC$i@9qf#K~jAEoozq9w!S;3D0NDc zQiR*==eDL`!X6-8P3yerKo4oVELisyQ%3zITUW!Z&Us8e=A=wzKkuWb$5M4QfSJ@L z;1)`|f;J2w2|Xg%K&PN@nJW8vf!3ke<-g+x*{0NrWwRGg12CVMMFPyoA#=_k%Sm~yazU@dmZWZJZQY`Ye2OB zanhmu!+ByadX)17)C{z|6v)V1zlwoipZt)>i>qo7(4Rd0w|i+D$D^mG4+Fv2^qmJe zGCngykgw~o-biH62aD(d^e>$J`~_bMnNWEvijE&IrqGfvj4Gcdfe60p@#8%;bfrxo zw#EoUDYt?}4IETJ+8z%V*ElGnVOR26AVrp0G~HJpavrM@BnE2iuNR;`wzO0TaE(%4 zFT1q#+mB?!At_JcEjZr9-cm#Rt&%z(cPSNXZWO;k4)EC;xrZ`yQ1NgOm{L@2MOnCt z#k}5mA-5R~W?4@vXgh)00y#H{rMSv>=S~cZ93!x|styi((4oQVvb2i`Ny&yOpIDvl z(CZg8t=0~-W4yw1rh!03Qj|6mS=ikX4Y(WC-r&QSkD z%Q`6o*8+-nE1+oFX%mo0pE=krdTI(6R4>P6-RwbkoUzpWAV z4hY;(V6jg<37aYox_Uy6I-*Ig^k{!p0i_hbSKM0pz?!#s zN<$#)36U)Z*;g2&Mgvpvq$_z!P-fHiK1|<%*}l_ZWMrflMkEPo3ZMuwz10ZRfEZq*~~;f$G3MZ&_=A})Q0 z^}gi{d@Gc0B@W>+ra%VJwx_XuRac$r#Y47fE%;^NR(%U1_!0=vx&;!y9@R4D) z3%jqMAFv85O94kr*K#$QR9XG-64XLq1sI&L-7r>2f!F=!T7R#BM*GEQtr+4i6IxMdt~6U0&LuP?6-Zxn#sF+SwnAnpxK93ARv zK-~+_Q|KC_3Mks8e*Dcf)2wcVlMn&DnhWG;7`$rG&LKyWU@@TSs9d{5trPwAtM2~x z)C0Z#hMk$Gpk-0wMZA}SPzF>Y#=t=x({y7U&ZP{aB`YUK&A<>YY>iF%?Fd!qLS8|A zxDE*CQxb0MiBVS#twu|NQUrr(fq?1g22F}t#)E8cYf0765Cc~?iY8MoQ~`payZ~N~ zs^W|c1b~(3UX6TF&Y!w&?Se}i-NFCB|8VD~M!NjTlG;@g;N)YVkJW4gCrtM%J%0C} zUx@*YqI$ubH=@Rsj*$T8wda-@m3in;zB8t2pb@4*`0h_#$jlrfA~b+U`#vZ49N%|0 z3kHRPL#Ba>qOw1Q;Ri6>Ge*KHA)HC-sCZ=sT|l+}fi%V%m_86esin&a-ux}eSQz|~ zdt(66anKb9x;K>AU{KyARUGf{&esww9W2X`9Boa1{lPF<$Lddrs9R;5!Hj3>@`X~g zytEMuQTwOJqElTnO>t5>1Jo21@{h+0M+1^Bo6(V6zH3-_#0Ne1p(<1iVQ7r;tN>r# zyy)Sdd0_#vcar%r=;)~lxJwzO2K5!*sc9|{=XU^}-7vm+#fApR(&iqSpxFDSt0HD49^a&LhT)|>8{O%s*i4!M4ho_gW zB`B-RhLgmN5(`L4VU7`y1wzaC`V1f6$CnpU?}H=|!I&SCRV1#AFgq1di|bq(XozT% zKiYTO-rh!8mF1O{i9?_1Bm*@6X13g-O8t7DXN~(lTp74CCV-Gp1x2@Dz511p;f-rT z%|q1f40s%J-lyUOiL!rO{5cIJLItE4`Tb=j$UL<3^YcLQwF9LURyFEsd?uB9>HlLky zTZZ5TRZ{@~(5`?zMR-rReXzve9!A>l#)i2`sq17!0nS$L{y*B%0s3hO;sRX~i99H{&1 z8=#&|Q?};~0o+47ESMqG*8htsEV@~< zMK0~IU9kiOrdgp*!Ie`b=B0-pz;b{DxLNo%WMbsUg)aiv?{e>+Dwqi@Zro@q8msfU zSM=XSX872RqfwQ!k5N7mCJ5w>7Jx#iI)WOqc6N43OG^VacnWl6X+RT%Rvif}DJdB( z`SAU9EujkSE)DzgF7Gu(Mch&UJ*PQ$X^rQyHQ!qSP>fjuqlG%Nda?*BoyTr3d)YCb zvWlV?G&3zZfKDJjIXMi(3NV#$NJvzE+)^ykw?;7z=bXo6%-b^JIUz)gVuo}Qi-z~!O&&$tNt4}L&hbl<+QOGqS#8|a#;Py(6UJborf z?)oMCz=CXV=^!T{7$BCFVVH3csKp!7kAsWE#rnATpAbY5*#laSh>UEi^VxEl!jgm8 zMB}LhIk+HRxs8pFkMmJBn7(yCz2%&$p+6fVwecILU*%u$h<#at!Rl_3Za{k96yOb1 zWCeR-G-Mb~ptsCsU)X0voHmBFhMEwQ&zRsMrq{18$bGcn`wN6{miv$O<~>v|=;MI< zR*hr60Q$i0#zHuh$fo}ON}YFa`EvP+-LBGc2y;WRfpzgCxx%>Un-*^4^5)?Xp_o{2e5vqfw>R<-DvZCiI)SyOa$YF)yT9YXptkVJ=an{|C+?G3&Pnm-Z zrRHD1c){Vj`Ryi(NFJ$kgMEl3GJD>4Xj#-TbVu~)8*Yu?E4cHgvs&o zh@_+>T>s}qZhX89vPxtDtUHU{2tjgFB$_9t+)N{}US9(7@_8X88xG)bh^P~D)@ zx{*ulN8IJP5X8;PtCXpY`ht^_lYt$(2wuu04+s(YnXYuoR1H+o661p$i1w@#E#aPE zp93ar%h^rKtkE3A^hmXBtO@RawND^%=19zTrK{T7^1y1x8W@Je6TC)+w&rmsqO!L) z+4MTqkVgt-9^g(JgjJK)9u*mR0XVe4)o)}(?9CI<)joQ@98<-T0){m>O4YNZB-Cbk zdk3f^)YhiUM+eSlS0E@~_Wg7qJqP{@RIUUIO8KpUxX0VX?0r+OsDN4YgiBjnTSIC7 zFTK4GR`&-74PW*--1b4qLGUR8^02Y7$$$zvSmz@NjmHj20+kNsu(;3@$^^IsJf45| zD4C$ip;jR<>y!fR{A;xCX^9XKyUM1)pU%U7#rv8%kd@Hg@)w!Bb+@l@dcb_HSxGr0 zK5Tb^5!D+To{U~kvYi2=5P(m*Z#$tbr4|2}k;JOW*%dQkH6B;D!2K^|`?!FofokbM zTYg&m;{7jq@S%sUH`Zb0ZC^~>A+g&yEHJftrEU1C1>8X74oXkz-{xBKgRGq*Y@Gqp z_0rM_Nf(a*}$;r_n1`iIiyzk&#nGvi!YNCxsyhmx~hO^#&-!aF?uRS^Imuopx zZcl4mbvt%ppoCLGf*yMH?ad+Q9`H~@lTQeaZ*&SE&%V-N>(&PQL4-0mDz;VSN>w&{ zy~x2}r80}JkmbB?x$k~h!b(YKvf!}gCcWiWX$!I*5_b`(?v%| zD?zVibPcSahrlMW8I&eR2@AfD zHR;dORGJsnFf!rbiM^a|KluDMXM!5qv;3Hz)^k_`v9$%P+)%_+9`qRV<$jwZUa})9 zqwY(_sCdfUQF5;!ADQpX&HTxjo2~fp6aAT*8hF>S`U7H)T2%=h z)7=ggKu+L*rM`L-OoDu<6CS)~x;}A$kCc@`KdQ5BNVwDnv+B9kNx{A<%!O^=;J1Ex zE9GH{B8}VC>x#}AcQsoGkiV8?9PPvNgMR@Jur}6U9*BsFQUq+xbVdbA3k2HI^AC7f zgC1Pgfsz=@kSfj>Dtr@mx5%jxRg+uFvATEa_}wnG`cBBWE{Kv30hR%p90>Lx@mu{a zIh&AwTR=W2bNnU(mR?$LoVTV29NMpA&=&qe>nkQ%NlxG^`aT<)KLyWS!ATLf@(Sz< zeh`*~{Cw{zt&-dCJB|5@AN_dFtrg(E=$INiDPxbTYGb;wb0rk}Oxftf@<_RS>~T6T zeaz~P4^K(Z$~mt7!GV(PMpgF6bEz=73*tg82>B^kclJSye#vsM><8t54IeQaqBuUVdbV*~GH`$MLW`ja{q#7p0@ z5TkxlKocz;9i%{JwicOGZIg8gq;^c{cXD6RQ2+u|-Tg*)QtHO_bFH1r$&Gw0#Hf)I z0ROMSvSa!A`AOfwY0JsYjn5!xrmUt$1bMZ~z|*$F)b@kWW2s9Ay0S?%DJ18J9-x3q zmd2_v5C^(o90YZ;0j=X3db6_gMlzXOWa3w?i+X}dUufl5k{j2(xLSKrTKciMf9iwo z&L=g)G!|!FAMPgT$tI=ptaHmw7DXtft19ZE^%?bZJbI-2doxUaH}kacV-wsz7f<&$ zf44&Zo=u=a;!{#0DCM`2OP4N*%X^k&KJd45=$uYQ;MADU>WaiM%MYs9mHk+VT@UxY zG}5H$K$t}B+Nh6#F@i}kTgSVZbJW{HOMyo5525qShbsi!g?}+w@)FEFMI3$``)h)=E|7QwHyi5|fvv0BX&*wnJkP|{b zw_$Tuj>&DOX@>vG+swDFs96J-yVP6c@$=Z4e}DWRPU%n^w}97e{@e0S@JKwnUi~EV z#P5ig3F=bcjg{~kd-@r#awa8_NOfA;4SqF5vnnEYCFeP_V^L;4k5Q^|S6ImjAx7ho z_F0XS6(ic3dQltJ++~4k$~V?S%pW!Wv^R@4$zhdlbPs>Aor059$*$+uED4_{DxV#rN2YjNB+56s#B@M9S-O5j~&El?&mp2A@^wmG5!G?rxU@qe}vyDS2Kbj=^YJ zQ|7PgSzJ(R*-%o72yupl)JZ^Rm?8nDzBb_OC#b<+C((IBKjCIlg{}q=S!N)`+Xj;e zXgrPiI7i$CN`Nqvu7%}y8vt#xU?}V)fv=zai@|Cq?-B_ElXLs_Z6JCg;^K;5*Hu?z z&^;Ew>NYeez$T(?vIkUOkiV;P@=VbGZ#$RyL;}x!+lLHs0BQM@oB2m+48bb}iV~n1 z3w!%WP@6%J)N`N(CJmTvjAue163Oh+@#kgacQ5qJhgHjS+^SUV&>NBhptl{Nh{M~85}`k1@PRpw*+FzvVJbX_>Gy_gYDGs-+y ztZox=^6`-%%cDL^u1)|EO5r_J_y(@LOKyu9wHa$#(E-eYO%7kGn`qy3OYXWILP(4?oH_X=m{WE zLMMIf56Bj5*cUe`f$DVmA*RL`H$(Q|cyx4wL0reaf1n|7b)oJ5 z!>l)7A&3B0V1qgWt%uz}aoUBIK8ZGi^s`RmgMt4EjhV8A=z+aPK%uS>QQ(X?cC$jbV1{KD0{{&OR#X55 zP7s>mw5fsM>{^~a?PqtOrKcZon>0aJ4;x=Bn|m+SrBg_tf73}N3ZfIPHNBbN2fbj>X- zmd?(UV6wb@-ER`ec~Ust#Lu4}=vibIKbrW1;D%j26fex6JCMYBG6y44!j2#4qArzlp%@8c{R@arTd*=%-nen&7l@aIU|mv)o*p|oltlf4Ow#VBz!3w~Ng3=Kfo+LT zL46)7wM4g3{=fV$N>XJzM}25Znl~2$g<&9>oW}zZp41MHBG}2wsDNQ3jOsYoLYt zVMCw3vGGSt!G1j%i)>1ol17SDx3lCC8(Hj4m|6jFB$*s-d0^v8a`85|#yX;w z!nzv@HY}5sB0$gvf_wP&A9vft^e{*nsJac?twAmeKvfnb5K8PgcnzS3Lv8F(DVv&K z><5^@z`@2P_5`(8&t~T_|8_&y612O(UR!A4DQJ1Ggh0%ro>bTaGde~J+vz&N5(e|E z4D1cs+=1}1eCQvK1z(;J3?}@_23$Adc@)#v*6kS*;RfN4I*vR&r6gPJ)mOwH8Sx0| zYffaVaXGB7$@}kPP%oPN;kGsGe147fh@~C__7o!DJb%5Sa!st?C%ezVb#eF{s)(U< z#v9vD4k!7Y3#DK;%L6chXXoW{%E&O`%~BxaK$L;k(YbsZrFOw5-2zKEGc!}lcUuS@W!M&JSMi;1)=QcIEIdHD zHiDDvg0L>L!P&m8IW#J zsGmvSCDD2=i(?%V9lW#^j4=n26IjgFgFV!dw!Z%3KvbVWX^NPHq&esqp$quxhZ_P| z2`QM*gKs^n%^<-P2i>0WgYP(8FxcI%nwrLd4gp50OgLTbQ86R_lEFyK4>VO37Z-Q7 zwS}I6J^NR??!x9$g22;B>it=&l<3bUY%zEP{$_d%<~?98QZh0d00l9^Sa2l|#+(pM z0b|43`nt`{&(DM%WE=KZNex0hK^B;qoo#>XKHm(e2F)js6JVPGJq=AW`X-QngRxAK zF&>9&vt6Pf;j=IB*+iAp+Om z?e1HzqSbR0LAuU*9xQe}_s}a%$P)LS`HOmB3lmTyt0x%s$-ZwHDG_&ud`)Tus@oNI zgMu*<2Qv6fKWs9w0#XtMiKs9J21BHg!Q3|pynD?+Awk6;v?c>SwFPW3=D$}Ut|CFZ znFIzHb50^JLQJ}vJ(S#tN3099j zf)od_7=lkqKMuMVx)V@-caF0zt_#xwR4X+N4K4x>yA~~lgH|WOGiTaBn*ys6YOm)6 zl^B*x@uneY1{a|DfEtO9*ueuLB$GN}=L0I6!iWK4bXm*I*X0AXlMwKQDvAfdAsoYe zjs~K2yWwb00hx}h0qg`P3WgdDQ3mdlM7~)CmvIF0RWJlLOO{G(Gi+nTK}hKZ0>N_u zrA-LziFKn4U)EE9&Q|b1c`+=vqkbN6=mnNc)0#W@=XbJ)Vb5$B+#+!3#`ag5^HlG` z6A$pgPX+f3HY9u`5W*1My$#~^1+Y<7TZ6h!`~3NHR0G`IS~4%$8W14zq`jNi3;RF# z79gbCieajg__Cd$7OB z5h_Sb*{W(QJk}&xSpU%X?WIH>xXZnEg~O)bDAphd^m(Mw=KQhVZ_hAY-p>%Eo16g# zNGxzb7>!@>3<5{sk>K88of?6(XI*F?aPuW$|9b!psHh3E05*y#=s%G_ILIUnXcOp& z3F+xwa=6*(K&gPS5QNw`Fki!nGgW+MlLN;T>K;UmiJ*`P-Rc*B&DSW>L^o9dRh4sq zTCZR?6$eyecz{O>u+XJmYqm%ubY-{!0Ra#jKt8AVoJ6V@Tmg0h9!0l4!Bah8lU1`O z#ZTC!4_AYWzzM@aLf4bt0y`$`;fjKHUx4(DZZbk$_t3B@@+4ZW{`i1e(=Dv6v$}?^ zJjco1_A0vEraTVQKYXnz;9$cbhDnkF5ptjFc2HG=^(pK+sl2%6eDfwsMooc%93$>< z+32Cy@2A8jt4%uW&@8{Zz|8a$0tv3iCNLv(c|K~ap2+T4y^@e45r z4SOg~nf9e_wm~Dqi2ErV%BA{DSrRn9fz)`c)a9>fxT$>Ecuds7Hp&+6-V;T6PbSS>rPHcS&q_;64}SmNJhg%d+Lu*UO6VIH z2tWN)SW*(;U1;N-4V&Vl+nV7q1J|!#SI75AyRv18KM(jBgk_g^BVWIMr6LK%oH)Ub zA+xG5Hs9!Ts4x_u7oaCq$)Zm03jbtlZDA33aNq||gjn%}iXeMxkL#KgW30+fnj#!Eka^`md!jKIna&s@l?t$pSqrJ_(?IAh$&-bEwNOQzWLRmkjSi*W7AVCfJ~dFIdp7eG2b98&yVe z@nWCHn{ST+sv>US{Jgz{q-2jn1%`|O9?sEiCx$v7cxdJ1 zdPt&g~?8U9Y;|SI}X79Wk8T{?R z$IowXXU8TexO6>zX2!O8LP$?fFFQ9E9l#$yxcnPf!&`y|7N+OtiJyK7`(R^bXBPpR z|9}?*BUj>w^=a4qAl)nmg^}rL?%%(EL+5xfrbIn?O~kxUNhbo}f$k-Ji~s%yHwF5A vy@v=7^!rI%fdCw|xrzUN;{W=m-DB597cPqPY=adaK`vdqqFk(KasU4T@r8J( literal 0 HcmV?d00001 diff --git a/Examples/Example07/graphs/Heat_Scatter_theta_1_theta_2.png b/Examples/Example07/graphs/Heat_Scatter_theta_1_theta_2.png index ddd584b70385234d683591200df1ddf564998361..b1868f494b8a272a008dd17d8fc00f6a7ffdb910 100644 GIT binary patch literal 181900 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 literal 188161 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�a7sa0Wfx?JCjz7BcD#l(3e6f*i{w==+a39t( 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
tD@Gf(zvht)bde_3z6w~seOr*;<4o2RDT~D9| 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%0A#eP^40G0N+5n- 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 b#Ne>I-WR`5yOe9j^|LUuG0pjO-QNEIm`3|M literal 48412 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 diff --git a/Examples/Example07/graphs/Histogram_sampling_1_theta_2.png b/Examples/Example07/graphs/Histogram_sampling_1_theta_2.png index ec2157f8e50180d1615042032b82e1ffa053d5d1..28c3e07b5d634dd02563e55a3882ac56cd31b914 100644 GIT binary patch literal 39718 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

d|I;f3iRa$L&EGDUxmbA)Vu+VPuHtX3( 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 diff --git a/Examples/Example07/graphs/PosteriorContourPlots__0_1.png b/Examples/Example07/graphs/PosteriorContourPlots__0_1.png index dc55792fc63c2b0a079f047009cdb44f26382be8..0fdff02b8a2e235b135f99e7ce06463caf9dc32a 100644 GIT binary patch literal 127568 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≷+e_+MX011a7e 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 literal 127357 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 MA#*wP;*ER%2UNr(h5!Hn diff --git a/Examples/Example07/graphs/PosteriorContourPlots__combined.png b/Examples/Example07/graphs/PosteriorContourPlots__combined.png index dc55792fc63c2b0a079f047009cdb44f26382be8..0fdff02b8a2e235b135f99e7ce06463caf9dc32a 100644 GIT binary patch literal 127568 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≷+e_+MX011a7e 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 literal 127357 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 literal 293722 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≪Th$Ic_iS3zR>laF>}W;Zn}(I=BI1 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

>0@vPSQt5l^1s1AqEM=barGN?(zI1 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 From 2e1b79d2b5bfb209d8aa85898629dda39549b1ce Mon Sep 17 00:00:00 2001 From: AdityaSavara <39929571+AdityaSavara@users.noreply.github.com> Date: Fri, 5 Aug 2022 13:02:34 -0400 Subject: [PATCH 14/23] removing extraneous ")" --- PEUQSE/InverseProblem.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/PEUQSE/InverseProblem.py b/PEUQSE/InverseProblem.py index 678b9bd0..6a197b88 100644 --- a/PEUQSE/InverseProblem.py +++ b/PEUQSE/InverseProblem.py @@ -2952,7 +2952,7 @@ def createSimulatedResponsesPlots(self, allResponses_x_values=[], allResponsesLi mu_guess_SimulatedResponses = simulationOutputProcessingFunction(mu_guess_SimulatedOutput) if flatten == True: mu_guess_SimulatedResponses = np.array(mu_guess_SimulatedResponses).flatten() - mu_guess_SimulatedResponses = nestedObjectsFunctions.makeAtLeast_2dNested(mu_guess_SimulatedResponses) ) + mu_guess_SimulatedResponses = nestedObjectsFunctions.makeAtLeast_2dNested(mu_guess_SimulatedResponses) mu_guess_SimulatedResponses = nestedObjectsFunctions.convertInternalToNumpyArray_2dNested(mu_guess_SimulatedResponses) #Check if we have simulation uncertainties, and populate if so. if type(self.UserInput.responses_simulation_uncertainties) != type(None): From 212c281c4f99e5b09e1869206d0e5d01e90224f9 Mon Sep 17 00:00:00 2001 From: AdityaSavara <39929571+AdityaSavara@users.noreply.github.com> Date: Fri, 5 Aug 2022 13:03:12 -0400 Subject: [PATCH 15/23] fixing syntax issues --- PEUQSE/InverseProblem.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/PEUQSE/InverseProblem.py b/PEUQSE/InverseProblem.py index 6a197b88..d5a5a35d 100644 --- a/PEUQSE/InverseProblem.py +++ b/PEUQSE/InverseProblem.py @@ -2973,7 +2973,7 @@ def createSimulatedResponsesPlots(self, allResponses_x_values=[], allResponsesLi map_SimulatedResponses = nestedObjectsFunctions.makeAtLeast_2dNested(map_SimulatedResponses) map_SimulatedResponses = nestedObjectsFunctions.convertInternalToNumpyArray_2dNested(map_SimulatedResponses) if type(simulationOutputProcessingFunction) != type(None): - map_SimulatedResponses = simulationOutputProcessingFunction(map_SimulatedOutput + map_SimulatedResponses = simulationOutputProcessingFunction(map_SimulatedOutput) if flatten == True: map_SimulatedResponses = np.array(map_SimulatedResponses).flatten() map_SimulatedResponses = nestedObjectsFunctions.makeAtLeast_2dNested(map_SimulatedResponses) @@ -2993,7 +2993,7 @@ def createSimulatedResponsesPlots(self, allResponses_x_values=[], allResponsesLi mu_AP_SimulatedOutput = copy.deepcopy(self.mu_AP_SimulatedOutput) if type(simulationOutputProcessingFunction) == type(None): mu_AP_SimulatedResponses = mu_AP_SimulatedOutput - if flatten == True: + if flatten == True: mu_AP_SimulatedResponses = np.array(mu_AP_SimulatedResponses).flatten() mu_AP_SimulatedResponses = nestedObjectsFunctions.makeAtLeast_2dNested(mu_AP_SimulatedResponses) mu_AP_SimulatedResponses = nestedObjectsFunctions.convertInternalToNumpyArray_2dNested(mu_AP_SimulatedResponses) From e06dded3eebc984b0fc256b3a148ad5fab6d9e96 Mon Sep 17 00:00:00 2001 From: AdityaSavara <39929571+AdityaSavara@users.noreply.github.com> Date: Fri, 5 Aug 2022 13:05:02 -0400 Subject: [PATCH 16/23] more converting to local variable --- PEUQSE/InverseProblem.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/PEUQSE/InverseProblem.py b/PEUQSE/InverseProblem.py index d5a5a35d..63686b54 100644 --- a/PEUQSE/InverseProblem.py +++ b/PEUQSE/InverseProblem.py @@ -3021,7 +3021,7 @@ def createSimulatedResponsesPlots(self, allResponses_x_values=[], allResponsesLi for responseDimIndex in range(num_response_dimensions): if not hasattr(self, 'mu_AP_parameter_set'): #Check if a mu_AP has been assigned. It is normally only assigned if mcmc was used. if num_response_dimensions == 1: - listOfYArrays = [UserInput.responses_observed[responseDimIndex], mu_guess_SimulatedResponses[responseDimIndex], map_SimulatedResponses[responseDimIndex]] + listOfYArrays = [responses_observed[responseDimIndex], mu_guess_SimulatedResponses[responseDimIndex], map_SimulatedResponses[responseDimIndex]] allResponsesListsOfYArrays.append(listOfYArrays) #Now to do uncertainties, there are two cases. First case is with only observed uncertainties and no simulation ones. if type(self.UserInput.responses_simulation_uncertainties) == type(None): #This means there are no simulation uncertainties. So for each response dimension, there will be a list with only the observed uncertainties in that list. @@ -3038,7 +3038,7 @@ def createSimulatedResponsesPlots(self, allResponses_x_values=[], allResponsesLi allResponsesListsOfYUncertaintiesArrays.append([responses_observed_uncertainties[responseDimIndex],mu_guess_responses_simulation_uncertainties[responseDimIndex],map_responses_simulation_uncertainties[responseDimIndex]]) #We need to give a list for each response dimension. if hasattr(self, 'mu_AP_parameter_set'): if num_response_dimensions == 1: - listOfYArrays = [UserInput.responses_observed[responseDimIndex], mu_guess_SimulatedResponses[responseDimIndex], map_SimulatedResponses[responseDimIndex], mu_AP_SimulatedResponses[responseDimIndex]] + listOfYArrays = [responses_observed[responseDimIndex], mu_guess_SimulatedResponses[responseDimIndex], map_SimulatedResponses[responseDimIndex], mu_AP_SimulatedResponses[responseDimIndex]] allResponsesListsOfYArrays.append(listOfYArrays) if type(self.UserInput.responses_simulation_uncertainties) == type(None): #This means there are no simulation uncertainties. So for each response dimension, there will be a list with only the observed uncertainties in that list. allResponsesListsOfYUncertaintiesArrays.append( [responses_observed_uncertainties[responseDimIndex]] ) #Just creating nesting, we need to give a list for each response dimension. From 41251238f1dd2b6913f48f11207e694b809e6aa4 Mon Sep 17 00:00:00 2001 From: AdityaSavara <39929571+AdityaSavara@users.noreply.github.com> Date: Fri, 5 Aug 2022 13:07:02 -0400 Subject: [PATCH 17/23] Update InverseProblem.py --- PEUQSE/InverseProblem.py | 1 - 1 file changed, 1 deletion(-) diff --git a/PEUQSE/InverseProblem.py b/PEUQSE/InverseProblem.py index 63686b54..d31e2209 100644 --- a/PEUQSE/InverseProblem.py +++ b/PEUQSE/InverseProblem.py @@ -3173,7 +3173,6 @@ def createMumpcePlots(self): @CiteSoft.after_call_compile_consolidated_log(compile_checkpoints=True) #This is from the CiteSoft module. def createAllPlots(self): if self.UserInput.request_mpi == True: #need to check if UserInput.request_mpi is on, since if so we will only make plots after the final process. - import os; import sys import PEUQSE.parallel_processing if PEUQSE.parallel_processing.finalProcess == True: pass#This will proceed as normal. From 8d21e41663716c46743bf038dd6cc1b3f5836252 Mon Sep 17 00:00:00 2001 From: AdityaSavara <39929571+AdityaSavara@users.noreply.github.com> Date: Fri, 5 Aug 2022 13:13:17 -0400 Subject: [PATCH 18/23] Typo fix --- PEUQSE/InverseProblem.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/PEUQSE/InverseProblem.py b/PEUQSE/InverseProblem.py index d31e2209..019df213 100644 --- a/PEUQSE/InverseProblem.py +++ b/PEUQSE/InverseProblem.py @@ -3013,7 +3013,7 @@ def createSimulatedResponsesPlots(self, allResponses_x_values=[], allResponsesLi mu_AP_responses_simulation_uncertainties = nestedObjectsFunctions.convertInternalToNumpyArray_2dNested(mu_AP_responses_simulation_uncertainties) #make internal variables for responses_observed and responses_observed_uncertainties in case we need to flatten them. responses_observed = copy.deepcopy(self.UserInput.responses_observed) - responses_observed_uncertainties = copy.deepcop(self.UserInput.responses_observed_uncertainties) + responses_observed_uncertainties = copy.deepcopy(self.UserInput.responses_observed_uncertainties) if flatten == True: #flatten and then nest, as needed. ("lazy" way) responses_observed = [np.array(responses_observed).flatten()] responses_observed_uncertainties = [np.array(responses_observed_uncertainties).flatten()] From d802a465a33e6a68afade1d620218437db3d22ce Mon Sep 17 00:00:00 2001 From: AdityaSavara <39929571+AdityaSavara@users.noreply.github.com> Date: Fri, 5 Aug 2022 14:21:08 -0400 Subject: [PATCH 19/23] Updating Example 7a graphs --- ...response_0.png => Posterior_Simulated_0.png} | Bin ...response_1.png => Posterior_Simulated_1.png} | Bin .../graphs/Posterior_Simulated_combined.png | Bin 0 -> 68610 bytes Examples/Example07/runfile_Example07a.py | 2 +- 4 files changed, 1 insertion(+), 1 deletion(-) rename Examples/Example07/graphs/{Posterior_Example_two_response_0.png => Posterior_Simulated_0.png} (100%) rename Examples/Example07/graphs/{Posterior_Example_two_response_1.png => Posterior_Simulated_1.png} (100%) create mode 100644 Examples/Example07/graphs/Posterior_Simulated_combined.png diff --git a/Examples/Example07/graphs/Posterior_Example_two_response_0.png b/Examples/Example07/graphs/Posterior_Simulated_0.png similarity index 100% rename from Examples/Example07/graphs/Posterior_Example_two_response_0.png rename to Examples/Example07/graphs/Posterior_Simulated_0.png diff --git a/Examples/Example07/graphs/Posterior_Example_two_response_1.png b/Examples/Example07/graphs/Posterior_Simulated_1.png similarity index 100% rename from Examples/Example07/graphs/Posterior_Example_two_response_1.png rename to Examples/Example07/graphs/Posterior_Simulated_1.png diff --git a/Examples/Example07/graphs/Posterior_Simulated_combined.png b/Examples/Example07/graphs/Posterior_Simulated_combined.png new file mode 100644 index 0000000000000000000000000000000000000000..42315bc3077e4563af1990698bdeebb634ce3a72 GIT binary patch literal 68610 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 Date: Fri, 5 Aug 2022 14:23:47 -0400 Subject: [PATCH 20/23] Delete InverseProblem_scratch.py --- PEUQSE/InverseProblem_scratch.py | 3865 ------------------------------ 1 file changed, 3865 deletions(-) delete mode 100644 PEUQSE/InverseProblem_scratch.py diff --git a/PEUQSE/InverseProblem_scratch.py b/PEUQSE/InverseProblem_scratch.py deleted file mode 100644 index 2b0692a5..00000000 --- a/PEUQSE/InverseProblem_scratch.py +++ /dev/null @@ -1,3865 +0,0 @@ -import numpy as np -#from mpl_toolkits.mplot3d import Axes3D -#import scipy -from scipy.stats import multivariate_normal -#from scipy.integrate import odeint -import sys -import time -import copy -from collections.abc import Iterable -#import mumce_py.Project as mumce_pyProject #FIXME: Eric to fix plotting/graphing issue described in issue 9 -- https://github.com/AdityaSavara/ODE-KIN-BAYES-SG-EW/issues/9 -#import mumce_py.solution mumce_pySolution -try: - import CiteSoft - from CiteSoft import function_call_cite -except: - import os #The below lines are to allow CiteSoftLocal to be called regardless of user's working directory. - lenOfFileName = len(os.path.basename(__file__)) #This is the name of **this** file. - absPathWithoutFileName = os.path.abspath(__file__)[0:-1*lenOfFileName] - sys.path.append(absPathWithoutFileName) - import CiteSoftLocal as CiteSoft -try: - import UnitTesterSG.nestedObjectsFunctions as nestedObjectsFunctions -except: - import PEUQSE.nestedObjectsFunctionsLocal as nestedObjectsFunctions - -class parameter_estimation: - #Inside this class, a UserInput namespace is provided. This has dictionaries of UserInput choices. - #However, the code initally parses those choices and then puts processed versions in the SAME name space, but no longer in the dictionaries. - #So functions in this class should (when possible) call the namespace variables that are not in dictionaries, unless the original userinput is desired. - #'inverse problem'. Initialize chain with initial guess (prior if not provided) as starting point, chain burn-in length and total length, and Q (for proposal samples). Initialize experimental data. Theta is initialized as the starting point of the chain. - - - software_name = "PEUQSE Bayesian Parameter Estimation" - software_version = "1.0.0" - software_unique_id = "https://doi.org/10.1002/cctc.202000953" - software_kwargs = {"version": software_version, "author": ["Aditya Savara", "Eric A. Walker"], "doi": "https://doi.org/10.1002/cctc.202000953", "cite": "Savara, A. and Walker, E.A. (2020), PEUQSE Intro 1: Bayesian Parameter Estimation Considering Uncertainty or Error from both Experiments and Theory. ChemCatChem. Accepted. doi:10.1002/cctc.202000953"} - @CiteSoft.after_call_compile_consolidated_log() - @CiteSoft.function_call_cite(unique_id=software_unique_id, software_name=software_name, **software_kwargs) - def __init__(self, UserInput = None): - #TODO: settings that are supposed to be Booleans should get Boolean cast in here. Otherwise if they are strings they will cause problems in "or" statements (where strings can return true even if the string is 'False'). - self.UserInput = UserInput #Note that this is a pointer, so the later lines are within this object. - #Now will automatically populate some variables from UserInput - #make subdirectories as needed. - import os - for directoryName in UserInput.directories: - if not os.path.exists(directoryName): - os.makedirs(directoryName) - - #Populate variables for bounds and reduced parameter space. - self.parameterBoundsOn = bool(len(UserInput.model['InputParameterPriorValues_upperBounds']) + len(UserInput.model['InputParameterPriorValues_lowerBounds'])) - UserInput.InputParameterPriorValues_lowerBounds = UserInput.model['InputParameterPriorValues_lowerBounds'] - UserInput.InputParameterPriorValues_upperBounds = UserInput.model['InputParameterPriorValues_upperBounds'] - self.reducedParameterSpaceOn = bool(len(UserInput.model['reducedParameterSpace'])) - - #Check for deprecated UserInput choices. - if hasattr(UserInput.parameter_estimation_settings, 'multistart_gridsearchToSamples'): - print("The UserInput feature parameter_estimation_settings['multistart_gridsearchToSamples'] has been renamed. Use parameter_estimation_settings['multistart_permutationsToSamples'].") - if hasattr(UserInput.parameter_estimation_settings, 'multistart_permutationsToSamples') == False: - UserInput.parameter_estimation_settings['multistart_permutationsToSamples']= UserInput.parameter_estimation_settings['multistart_gridsearchToSamples'] - if hasattr(UserInput.parameter_estimation_settings, 'multistart_gridsearch_threshold_filter_coefficient'): - print("The UserInput feature parameter_estimation_settings['multistart_gridsearch_threshold_filter_coefficient'] has been renamed. Use parameter_estimation_settings['multistart_permutationsToSamples_threshold_filter_coefficient'].") - if hasattr(UserInput.parameter_estimation_settings, 'multistart_permutationsToSamples_threshold_filter_coefficient') == False: - UserInput.parameter_estimation_settings['multistart_permutationsToSamples_threshold_filter_coefficient']= UserInput.parameter_estimation_settings['multistart_gridsearch_threshold_filter_coefficient'] - #Check if EnsembleJumpSampling specification for multistart and change type to EnsembleModifiedMHSampling - if UserInput.parameter_estimation_settings['multistart_searchType'] == 'doEnsembleJumpSampling': - self.UserInput.parameter_estimation_settings['multistart_searchType'] = 'doEnsembleModifiedMHSampling' - - #Check if there are parameterNames provided. If not, we will make some. - if len(UserInput.model['parameterNamesAndMathTypeExpressionsDict']) == 0: - numParameters = len(UserInput.model['InputParameterPriorValues']) - for parameterIndex in range(0,numParameters): - UserInput.model['parameterNamesAndMathTypeExpressionsDict'][str(parameterIndex)]= 'ParInd_'+str(parameterIndex) - elif type(UserInput.model['parameterNamesAndMathTypeExpressionsDict']) == type([1]): # if it's a list, make a dictionary. - listToMakeDictionary = UserInput.model['parameterNamesAndMathTypeExpressionsDict'] - newDictionary = {} - for paramName in listToMakeDictionary: - newDictionary[str(paramName)] = str(paramName) - UserInput.model['parameterNamesAndMathTypeExpressionsDict'] = newDictionary - UserInput.parameterNamesList = list(UserInput.model['parameterNamesAndMathTypeExpressionsDict'].keys()) - UserInput.stringOfParameterNames = str(UserInput.parameterNamesList).replace("'","")[1:-1] - UserInput.parameterNamesAndMathTypeExpressionsDict = UserInput.model['parameterNamesAndMathTypeExpressionsDict'] - if self.UserInput.parameter_estimation_settings['verbose']: - print("Parameter Estimation Object Initialized") - - if type(UserInput.parameter_estimation_settings['checkPointFrequency']) != type(None): #This is for backwards compatibility. - UserInput.parameter_estimation_settings['mcmc_checkPointFrequency'] = UserInput.parameter_estimation_settings['checkPointFrequency'] - UserInput.parameter_estimation_settings['multistart_checkPointFrequency'] = UserInput.parameter_estimation_settings['checkPointFrequency'] - UserInput.request_mpi = False #Set as false as default. - if ( \ - UserInput.parameter_estimation_settings['mcmc_parallel_sampling'] or \ - UserInput.parameter_estimation_settings['multistart_parallel_sampling'] or \ - UserInput.doe_settings['parallel_conditions_exploration'] or \ - UserInput.doe_settings['parallel_parameter_modulation'] \ - ) \ - == True: - UserInput.request_mpi = True - if (UserInput.doe_settings['parallel_conditions_exploration'] or UserInput.doe_settings['parallel_parameter_modulation']) and (UserInput.parameter_estimation_settings['mcmc_parallel_sampling'] or UserInput.parameter_estimation_settings['multistart_parallel_sampling']): - print("Warning: Parallelization of Design of experiments is not compatible with parallelization of either mcmc_parallel_sampling or multistart_parallel_sampling. Those other features are being turned off.") - UserInput.parameter_estimation_settings['multistart_parallel_sampling'] = False - UserInput.parameter_estimation_settings['mcmc_parallel_sampling'] = False - - if UserInput.request_mpi == True: #Rank zero needs to clear out the mpi_cached_files directory (unless we are continuing sampling), so check if we are using rank 0. - import os; #import sys - import PEUQSE.parallel_processing - if PEUQSE.parallel_processing.currentProcessorNumber == 0: - if not os.path.exists('./mpi_cached_files'): - os.makedirs('./mpi_cached_files') - if not os.path.exists(UserInput.directories['graphs']+"mpi_cached_files"): - os.makedirs(UserInput.directories['graphs']+"mpi_cached_files") - if not os.path.exists(UserInput.directories['logs_and_csvs']+"mpi_cached_files"): - os.makedirs(UserInput.directories['logs_and_csvs']+"mpi_cached_files") - if not os.path.exists(UserInput.directories['pickles']+"mpi_cached_files"): - os.makedirs(UserInput.directories['pickles']+"mpi_cached_files") - if ('mcmc_continueSampling' not in UserInput.parameter_estimation_settings) or (UserInput.parameter_estimation_settings['mcmc_continueSampling'] == False) or (UserInput.parameter_estimation_settings['mcmc_continueSampling'] == 'auto'): - os.chdir("./mpi_cached_files") - deleteAllFilesInDirectory() - os.chdir("./..") - if UserInput.directories['graphs'] != "./": - os.chdir(UserInput.directories['graphs']+"mpi_cached_files") - deleteAllFilesInDirectory() - os.chdir("./../..") - if UserInput.directories['logs_and_csvs'] != "./": - os.chdir(UserInput.directories['graphs']+"mpi_cached_files") - deleteAllFilesInDirectory() - os.chdir("./../..") - if UserInput.directories['pickles'] != "./": - os.chdir(UserInput.directories['graphs']+"mpi_cached_files") - deleteAllFilesInDirectory() - os.chdir("./../..") - - #Now check the number of processor ranks to see if the person really is using parallel processing. - if PEUQSE.parallel_processing.numProcessors > 1: #This is the normal case. - sys.exit() #TODO: right now, processor zero just exits after making and emptying the directory. In the future, things will be more complex for the processor zero. - elif PEUQSE.parallel_processing.numProcessors == 1: #This is the case where the person has only one process rank, so probably does not want code execution to stop just yet. (This is an intentional case for gridsearch for example, where running without mpi will print the number of grid Permutations). - print("Notice: you have requested parallel processing by MPI but have only 1 processor rank enabled or are not using mpi for this run. Parallel processing is being disabled for this run. If you are running to find the number of process ranks to use, another message will be printed out with the number of processor ranks to provide to mpi.") - UserInput.request_mpi = False - if UserInput.parameter_estimation_settings['mcmc_parallel_sampling']: - print("Your settings suggest that you are trying to use mcmc_parallel_sampling. Please use the mpi command from the prompt. To do N parallel samplings requires N+1 process ranks. For example, if you wanted to have 4 parallel samplings, you would need 5 process ranks and would use: mpiexec -n 5 python runfile_for_your_analysis.py") - sys.exit() - - - #Setting this object so that we can make changes to it below without changing UserInput dictionaries. - self.UserInput.mu_prior = np.array(UserInput.model['InputParameterPriorValues'], dtype='float') - #Below code is mainly for allowing uniform distributions in priors. - UserInput.InputParametersPriorValuesUncertainties = np.array(UserInput.model['InputParametersPriorValuesUncertainties'],dtype='float') #Doing this so that the -1.0 check below should work. - if -1.0 in UserInput.InputParametersPriorValuesUncertainties: #This means that at least one of the uncertainties has been set to "-1" which means a uniform distribution. - UserInput.InputParametersPriorValuesUniformDistributionsIndices = [] #intializing. - if len(np.shape(UserInput.InputParametersPriorValuesUncertainties)) != 1: - print("A value of '-1' in the uncertainties signifies a uniform distribution for PEUQSE. As of July 1st 2020, the uniform distribution feature is only compatible with a 1D of array for uncertainties and not compatible with providing a full covariance matrix. If you need such a feature, contact the developers because it could be implemented. Eventually, a more sophisiticated back end may be used which would allow such a feature.") - # If there is a uniform distribution, that means two actions need to be taken: - #First, we will populate InputParametersPriorValuesUncertainties with the standard deviation of a uniform distribution. This is so that the MCMC steps can be taken of the right size. - #Second, that we will need to make a custom calculation when calculating the prior probability that effectively excludes this variable. So we'll create an array of indices to help us with that. - #We will do both in a loop. - UserInput.InputParametersPriorValuesUniformDistributionsKey = UserInput.InputParametersPriorValuesUncertainties *1.0 #Just initalizing - for parameterIndex, uncertaintyValue in enumerate(UserInput.InputParametersPriorValuesUncertainties): - if uncertaintyValue == -1.0: - UserInput.InputParametersPriorValuesUniformDistributionsKey[parameterIndex] = 1.0 #This is setting the parameter as "True" for having a uniform distribution. - UserInput.InputParametersPriorValuesUniformDistributionsIndices.append(parameterIndex) - #In the case of a uniform distribution, the standard deviation and variance are given by sigma = (b−a)/ √12 : - #See for example https://www.quora.com/What-is-the-standard-deviation-of-a-uniform-distribution-How-is-this-formula-determined - if self.parameterBoundsOn == False: - print("ERROR: An uncertaintyValue of -1.0 has been provided which indicates a Uniform distribution. Uniform distributions require both upper and lower bounds, but these have not been provided. CheKiPUEQ is exiting the program."); sys.exit() - std_prior_single_parameter = (UserInput.InputParameterPriorValues_upperBounds[parameterIndex] - UserInput.InputParameterPriorValues_lowerBounds[parameterIndex])/(12**0.5) - UserInput.InputParametersPriorValuesUncertainties[parameterIndex] = std_prior_single_parameter #Note that going forward the array InputParametersPriorValuesUncertainties cannot be checked to see if the parameter is from a uniform distribution. Instead, InputParametersPriorValuesUniformDistributionsKey must be checked. - #We will also fill the model['InputParameterPriorValues'] to have the mean of the two bounds. This can matter for some of the scaling that occurs later. - self.UserInput.mu_prior[parameterIndex] = (UserInput.InputParameterPriorValues_upperBounds[parameterIndex] + UserInput.InputParameterPriorValues_lowerBounds[parameterIndex])/2 - - #Now to make covmat. Leaving the original dictionary object intact, but making a new object to make covmat_prior. - if len(np.shape(UserInput.InputParametersPriorValuesUncertainties)) == 1 and (len(UserInput.InputParametersPriorValuesUncertainties) > 0): #If it's a 1D array/list that is filled, we'll diagonalize it. - UserInput.std_prior = np.array(UserInput.InputParametersPriorValuesUncertainties, dtype='float') #using 32 since not everyone has 64. - UserInput.var_prior = np.power(UserInput.InputParametersPriorValuesUncertainties,2) - UserInput.covmat_prior = np.diagflat(self.UserInput.var_prior) - elif len(np.shape(UserInput.InputParametersPriorValuesUncertainties)) > 1: #If it's non-1D, we assume it's already a covariance matrix. - UserInput.covmat_prior = np.array(UserInput.InputParametersPriorValuesUncertainties, dtype='float') - UserInput.var_prior = np.diagonal(UserInput.covmat_prior) - UserInput.std_prior = np.power(UserInput.covmat_prior,0.5) - else: #If a blank list is received, that means the user - print("The covariance matrix of the priors is undefined because InputParametersPriorValuesUncertainties is blank.") - # cov_prior = np.array([[200.0, 0., 0., 0., 0., 0.], - # [0., 200.0, 0., 0., 0., 0.], - # [0., 0., 13.0, 0., 0., 0.], - # [0., 0., 0., 13.0, 0., 0.], - # [0., 0., 0., 0., 0.1, 0.], - # [0., 0., 0., 0., 0., 0.1]]) - #Making things at least 2d. Also changing it to a purely internal variable because that way we don't edit the user input dictionary going forward. - - #Below, we are generating samples of the prior for info gain purposes. This requires considering random seeds. - if 'mcmc_random_seed' in self.UserInput.parameter_estimation_settings: - if type(self.UserInput.parameter_estimation_settings['mcmc_random_seed']) == type(1): #if it's an integer, then it's not a "None" type or string, and we will use it. - np.random.seed(self.UserInput.parameter_estimation_settings['mcmc_random_seed']) - self.samples_of_prior = np.random.multivariate_normal(self.UserInput.mu_prior,UserInput.covmat_prior,UserInput.parameter_estimation_settings['mcmc_length']) - - #Now do some processing on the responses formatting and uncertainties. - #Make them 2dNested if needed.. - - UserInput.responses_observed = np.array(nestedObjectsFunctions.makeAtLeast_2dNested(UserInput.responses['responses_observed'])) - if UserInput.responses['num_responses']=='auto': - self.UserInput.num_response_dimensions = np.shape(UserInput.responses_observed)[0] - else: - self.UserInput.num_response_dimensions = UserInput.responses['num_responses'] - if len(UserInput.responses['responses_abscissa']) == 0: #This means it has not been provided and we will make one. - UserInput.responses_abscissa = [] #the one from input should already be a list, but we start a fresh one. - for responseIndex in range(0,self.UserInput.num_response_dimensions): - numPoints = len(UserInput.responses_observed[responseIndex]) - UserInput.responses_abscissa.append(np.linspace(0, numPoints,numPoints)) - else: - UserInput.responses_abscissa = UserInput.responses['responses_abscissa'] - UserInput.responses_abscissa = np.array(nestedObjectsFunctions.makeAtLeast_2dNested(UserInput.responses_abscissa)) - #Make sure all objects inside are arrays (if they are lists we convert them). This is needed to apply the heurestic. - UserInput.responses_abscissa = nestedObjectsFunctions.convertInternalToNumpyArray_2dNested(UserInput.responses_abscissa) - UserInput.responses_observed = nestedObjectsFunctions.convertInternalToNumpyArray_2dNested(UserInput.responses_observed) - - #Now to process responses_observed_uncertainties, there are several options so we need to process it according to the cases. - #The normal case: - if isinstance(self.UserInput.responses['responses_observed_uncertainties'], Iterable): #If it's an array or like one, we take it as is. The other options are a none object or a function. - UserInput.responses_observed_uncertainties = UserInput.responses['responses_observed_uncertainties'] - #Processing of responses_observed_uncertainties for case that a blank list is received and not zeros. - if len(UserInput.responses['responses_observed_uncertainties']) == 0: - #if the response uncertainties is blank, we will use the heurestic of sigma = 5% of the observed value, and then add an orthogonal uncertainty of 2% of the maximum for that response. - #Note that we are actually checking in index[0], that is because as an atleast_2d array even a blank list / array in it will give a length of 1. - UserInput.responses_observed_uncertainties = np.abs( UserInput.responses_observed) * 0.05 - for responseIndex in range(0,UserInput.num_response_dimensions): #need to cycle through to apply the "minimum" uncertainty of 0.02 times the max value. - maxResponseAbsValue = np.max(np.abs(UserInput.responses_observed[responseIndex])) - UserInput.responses_observed_uncertainties[responseIndex] = ( UserInput.responses_observed_uncertainties[responseIndex]**2 + (maxResponseAbsValue*0.02)**2 ) ** 0.5 - #The below deprecated syntax is a bit hard to read, but it is similar to this: a[a==2] = 10 #replace all 2's with 10's #UserInput.responses_observed_uncertainties[responseIndex][UserInput.responses_observed_uncertainties[responseIndex] < maxResponseAbsValue * 0.02] = maxResponseAbsValue * 0.02 - elif nestedObjectsFunctions.sumNested(UserInput.responses['responses_observed_uncertainties']) == 0: #If a 0 (or list summing to 0) is provided, we will make the uncertainties zero. - UserInput.responses_observed_uncertainties = UserInput.responses_observed * 0.0 #This will work because we've converted the internals to array already. - #Below two lines not needed. Should be removed if everythig is working fine after Nov 2020. - #for responseIndex in range(0,len(UserInput.responses_observed[0])): - # UserInput.responses_observed_uncertainties[0][responseIndex]= UserInput.responses_observed[0][responseIndex]*0.0 - UserInput.responses_observed_uncertainties = np.array(nestedObjectsFunctions.makeAtLeast_2dNested(UserInput.responses_observed_uncertainties)) - UserInput.responses_observed_uncertainties = nestedObjectsFunctions.convertInternalToNumpyArray_2dNested(UserInput.responses_observed_uncertainties) - #If the feature of self.UserInput.responses['responses_observed_weighting'] has been used, then we need to apply that weighting to the uncertainties. - if len(self.UserInput.responses['responses_observed_weighting']) > 0: - UserInput.responses_observed_weighting = np.array(nestedObjectsFunctions.makeAtLeast_2dNested(UserInput.responses['responses_observed_weighting'])) - UserInput.responses_observed_weighting = nestedObjectsFunctions.convertInternalToNumpyArray_2dNested(UserInput.responses_observed_weighting) - UserInput.responses_observed_weighting = UserInput.responses_observed_weighting.astype(np.float) - UserInput.responses_observed_weight_coefficients = copy.deepcopy(UserInput.responses_observed_weighting).astype(np.float) #initialize the weight_coefficients - #We'll apply it 1 response at a time. - for responseIndex, responseWeightingArray in enumerate(UserInput.responses_observed_weighting): - if 0 in responseWeightingArray: #we can't have zeros in weights. So if we have any zeros, we will set the weighting of those to 1E6 times less than other values. - #Originally, used minNonZero/1E6. Now, use eps which is the smallest non-zero value allowed. - #minNonZero = np.min(UserInput.responses_observed_weighting[UserInput.responses_observed_weighting>0]) - responseWeightingArray[responseWeightingArray==0] = np.finfo(float).eps #minNonZero/1E6 #set the 0 values to be 1E6 times smaller than minNonZero. - UserInput.responses_observed_weighting[responseIndex] = responseWeightingArray - #now calculate and apply the weight coefficients. - for responseIndex in range(len(UserInput.responses_observed_weighting)): - UserInput.responses_observed_weight_coefficients[responseIndex] = (UserInput.responses_observed_weighting[responseIndex])**(-0.5) #this is analagous to the sigma of a variance weighted heuristic. - UserInput.responses_observed_uncertainties = UserInput.responses_observed_uncertainties*UserInput.responses_observed_weight_coefficients - else: #The other possibilities are a None object or a function. For either of thtose cases, we simply set UserInput.responses_observed_uncertainties equal to what the user provided. - UserInput.responses_observed_uncertainties = copy.deepcopy(self.UserInput.responses['responses_observed_uncertainties']) - - #Now to process responses_simulation_uncertainties, there are several options so we need to process it according to the cases. - #The normal case: - if isinstance(self.UserInput.model['responses_simulation_uncertainties'], Iterable): #If it's an array or like one, we take it as is. The other options are a none object or a function. - UserInput.responses_simulation_uncertainties = np.array(nestedObjectsFunctions.makeAtLeast_2dNested(self.UserInput.model['responses_simulation_uncertainties'])) - UserInput.responses_simulation_uncertainties = nestedObjectsFunctions.convertInternalToNumpyArray_2dNested(UserInput.responses_simulation_uncertainties) - #TODO: allow a length of zero 'responses_simulation_uncertainties' to mean that the heurestic function should be called after each simulation. That is not what it is doing right now (Dec 2020). Right now it is just using a static value from the heurestic applied to the observed_responses. - #Processing of responses_simulation_uncertainties for case that a blank list is received and not zeros. - if len(UserInput.responses_simulation_uncertainties[0]) == 0: - #if the response uncertainties is blank, we will use the heurestic of sigma = 5% of the observed value, with a floor of 2% of the maximum for that response. - #Note that we are actually checking in index[0], that is because as an atleast_2d array even a blank list / array in it will give a length of 1. - UserInput.responses_simulation_uncertainties = np.abs(UserInput.responses_observed) * 0.05 - for responseIndex in range(0,UserInput.num_response_dimensions): #need to cycle through to apply the "minimum" uncertainty of 0.02 times the max value. - maxResponseAbsValue = np.max(np.abs(UserInput.responses_observed[responseIndex])) #Because of the "at_least2D" we actually need to use index 0. - #The below syntax is a bit hard to read, but it is similar to this: a[a==2] = 10 #replace all 2's with 10's - UserInput.responses_simulation_uncertainties[responseIndex][UserInput.responses_simulation_uncertainties[responseIndex] < maxResponseAbsValue * 0.02] = maxResponseAbsValue * 0.02 - elif nestedObjectsFunctions.sumNested(UserInput.responses_simulation_uncertainties) == 0: #If a 0 (or list summing to 0) is provided, we will make the uncertainties zero. - UserInput.responses_simulation_uncertainties = UserInput.responses_observed * 0.0 #This will work because we've converted the internals to array already. - else: #The other possibilities are a None object or a function. For either of thtose cases, we simply set UserInput.responses_simulation_uncertainties equal to what the user provided. - UserInput.responses_simulation_uncertainties = copy.deepcopy(self.UserInput.model['responses_simulation_uncertainties']) - - #Now to process simulatedResponses_upperBounds and simulatedResponses_lowerBounds. Can be a blank list or a nested list. - if len(UserInput.model['simulatedResponses_upperBounds']) > 0: - UserInput.model['simulatedResponses_upperBounds'] = np.array(nestedObjectsFunctions.makeAtLeast_2dNested(self.UserInput.model['simulatedResponses_upperBounds'])) - UserInput.model['simulatedResponses_upperBounds'] = nestedObjectsFunctions.convertInternalToNumpyArray_2dNested(UserInput.model['simulatedResponses_upperBounds']) - if len(UserInput.model['simulatedResponses_lowerBounds']) > 0: - UserInput.model['simulatedResponses_lowerBounds'] = np.array(nestedObjectsFunctions.makeAtLeast_2dNested(self.UserInput.model['simulatedResponses_lowerBounds'])) - UserInput.model['simulatedResponses_lowerBounds'] = nestedObjectsFunctions.convertInternalToNumpyArray_2dNested(UserInput.model['simulatedResponses_lowerBounds']) - - self.UserInput.num_data_points = len(nestedObjectsFunctions.flatten_2dNested(UserInput.responses_observed)) #This works if there is a single response series. - #We need to figure out if the abscissa has length equal to the responses or not. - if len(UserInput.responses_abscissa) == len(UserInput.responses_observed): - self.separate_abscissa_per_response = True #This means we **will** iterate across the abscissa when iterating across each response. - else: - self.separate_abscissa_per_response = False #This means we **won't** iterate across the abscissa when iterating across each response. - - self.staggeredResponses = nestedObjectsFunctions.checkIfStaggered_2dNested(UserInput.responses_observed) - #TODO: This currently only is programmed for if the uncertainties are uncorrelated standard deviaions (so is not compatible with a directly fed cov_mat). Also, we need to figure out what do when they are not gaussian/symmetric. - UserInput.responses_observed_transformed, UserInput.responses_observed_transformed_uncertainties = self.transform_responses(UserInput.responses_observed, UserInput.responses_observed_uncertainties) #This creates transforms for any data that we might need it. The same transforms will also be applied during parameter estimation. - - #The below unusual code is because during doeParameterModulationPermutationsScanner, populate synthetic data calls init again. - #So we will only call populateIndependentVariablesFunction if we're not in the middle of design of experiments. - if not hasattr(self, 'middle_of_doe_flag'): #We check of the middle_of_doe_flag exists. #If the flag is not there and the populate function exists, we call it. - if type(UserInput.model['populateIndependentVariablesFunction']) != type(None): - UserInput.model['populateIndependentVariablesFunction'](UserInput.responses['independent_variables_values']) - if hasattr(self, 'middle_of_doe_flag'): #We check of the middle_of_doe_flag exists. If it's there, no problem. - if self.middle_of_doe_flag == False: #If the flag is there, we only proceed to call the function if the flag is set to false. - if type(UserInput.model['populateIndependentVariablesFunction']) != type(None): - UserInput.model['populateIndependentVariablesFunction'](UserInput.responses['independent_variables_values']) - - #Now scale things as needed: - if UserInput.parameter_estimation_settings['scaling_uncertainties_type'] == "off": - self.UserInput.mu_prior_scaled = UserInput.mu_prior*1.0 - self.UserInput.var_prior_scaled = UserInput.var_prior*1.0 - self.UserInput.covmat_prior_scaled = UserInput.covmat_prior*1.0 - else: - if UserInput.parameter_estimation_settings['scaling_uncertainties_type'] == "std": - self.UserInput.scaling_uncertainties = UserInput.std_prior #Could also be by mu_prior. The reason a separate variable is made is because this will be used in the getPrior function as well, and having a separate variable makes it easier to trace. This scaling helps prevent numerical errors in returning the pdf. - elif UserInput.parameter_estimation_settings['scaling_uncertainties_type'] == "mu": - self.UserInput.scaling_uncertainties = UserInput.mu_prior - else: #Else we assume that UserInput.parameter_estimation_settings['scaling_uncertainties_type'] has been set to a fixed float or vector. For now, we'll just support float. - scaling_factor = float(UserInput.parameter_estimation_settings['scaling_uncertainties_type']) - self.UserInput.scaling_uncertainties = (UserInput.mu_prior/UserInput.mu_prior)*scaling_factor #This basically makes a vector of ones times the scaling factor. - #TODO: consider a separate scaling for each variable, taking the greater of either mu_prior or std_prior. - #TODO: Consider changing how self.UserInput.scaling_uncertainties is done to accommodate greater than 1D vector. Right now we use np.shape(self.UserInput.scaling_uncertainties)[0]==1, but we could use np.shape(self.UserInput.scaling_uncertainties)==np.shape(UserInput.mu_prior) - if np.shape(nestedObjectsFunctions.makeAtLeast_2dNested(self.UserInput.scaling_uncertainties))[0]==1: #In this case, the uncertainties is not a covariance matrix. - pass - elif np.shape(nestedObjectsFunctions.makeAtLeast_2dNested(self.UserInput.scaling_uncertainties))[0]==np.shape(nestedObjectsFunctions.makeAtLeast_2dNested(self.UserInput.scaling_uncertainties))[1]: #In his case, the uncertainties are a covariance matrix so we take the diagonal (which are variances) and the square root of them. - self.UserInput.scaling_uncertainties = (np.diagonal(self.UserInput.scaling_uncertainties))**0.5 #Take the diagonal which is variances, and - else: - print("There is an unsupported shape somewhere in the prior. The prior is currently expected to be 1 dimensional.") - print(np.shape(self.UserInput.scaling_uncertainties)) - sys.exit() - self.UserInput.mu_prior_scaled = np.array(UserInput.mu_prior/UserInput.scaling_uncertainties) - self.UserInput.var_prior_scaled = np.array(UserInput.var_prior/(UserInput.scaling_uncertainties*UserInput.scaling_uncertainties)) - self.UserInput.covmat_prior_scaled = self.UserInput.covmat_prior*1.0 #First initialize, then fill. - for parameterIndex, parameterValue in enumerate(UserInput.scaling_uncertainties): - UserInput.covmat_prior_scaled[parameterIndex,:] = UserInput.covmat_prior[parameterIndex,:]/parameterValue - #The next line needs to be on UserInput.covmat_prior_scaled and not UserInput.covmat_prior, since we're stacking the divisions. - UserInput.covmat_prior_scaled[:,parameterIndex] = UserInput.covmat_prior_scaled[:,parameterIndex]/parameterValue - - #To find the *observed* responses covariance matrix, meaning based on the uncertainties reported by the users, we take the uncertainties from the points. This is needed for the likelihood. However, it will be transformed again at that time. - #First, we have to make sure self.UserInput.responses_observed_transformed_uncertainties is an iterable. It could be a none-type or a function. - if isinstance(self.UserInput.responses_observed_transformed_uncertainties, Iterable): - self.observed_responses_covmat_transformed = returnShapedResponseCovMat(self.UserInput.num_response_dimensions, self.UserInput.responses_observed_transformed_uncertainties) - else: #If responses_observed_transformed_uncertainties is a None type, then we don't need observed_responses_covmat_transformed. If it is a function, then we have to create the object on the fly so can't create it now. - pass - - #self.covmat_prior = UserInput.covmat_prior - self.Q_mu = self.UserInput.mu_prior*0 # Q samples the next step at any point in the chain. The next step may be accepted or rejected. Q_mu is centered (0) around the current theta. - self.Q_covmat = self.UserInput.covmat_prior # Take small steps. - #TODO: Make initial guess handle a string, then assume that it is a pickle file - # check if InputParameterInitialGuess is a string - # if so, read the pickle file in the same way as the sampling functions (look for file, then read) - # After reading it, slice the matrix to only the first walker is saved. - if isinstance(self.UserInput.model['InputParameterInitialGuess'], str): - # try to read from current directory and pickle directory - start_point_pkl_file_name = self.UserInput.model['InputParameterInitialGuess'] - if '.pkl' in start_point_pkl_file_name: # remove '.pkl' from string if it is there - start_point_pkl_file_name = start_point_pkl_file_name.replace('.pkl', '') - from os.path import exists - # check if file exists in current working directory - if exists(start_point_pkl_file_name + '.pkl'): - initialGuessUnfiltered = unpickleAnObject(start_point_pkl_file_name) - # check if file exists in pickle directory - elif exists(self.UserInput.directories['pickles'] + start_point_pkl_file_name + '.pkl'): - initialGuessUnfiltered = unpickleAnObject(self.UserInput.directories['pickles'] + start_point_pkl_file_name) - else: - print('The pickled object for initial guess points must exist in base directory or pickles directory. The pickled file should have extension of ".pkl"') - sys.exit() - # check if the shape of the loaded initial guess is a single point or a list of walkers - if len(initialGuessUnfiltered.shape) == 1: - self.UserInput.InputParameterInitialGuess = initialGuessUnfiltered - elif len(initialGuessUnfiltered.shape) == 2: - # this is assumed to have the shape (num_walkers, num_parameters) - self.UserInput.InputParameterInitialGuess = initialGuessUnfiltered[0] # take only the first walker as the initial points - else: - print('The shape of the initial guess pickled array should be (num_walkers, num_parameters). The current pickled array does not have this shape and has:', initialGuessUnfiltered.shape) - sys.exit() - else: - #Getting initial guess of parameters and populating the internal variable for it. - if ('InputParameterInitialGuess' not in self.UserInput.model) or (len(self.UserInput.model['InputParameterInitialGuess'])== 0): #if an initial guess is not provided, we use the prior. - self.UserInput.model['InputParameterInitialGuess'] = np.array(self.UserInput.mu_prior, dtype='float') - #From now, we switch to self.UserInput.InputParameterInitialGuess because this is needed in case we're going to do reducedParameterSpace or grid sampling. - self.UserInput.InputParameterInitialGuess = np.array(self.UserInput.model['InputParameterInitialGuess'], dtype='float') - #Now populate the simulation Functions. #NOTE: These will be changed if a reduced parameter space is used. - self.UserInput.simulationFunction = self.UserInput.model['simulateByInputParametersOnlyFunction'] - self.UserInput.simulationOutputProcessingFunction = self.UserInput.model['simulationOutputProcessingFunction'] - - #Check the shapes of the arrays for UserInput.responses_observed and UserInput.responses_observed_uncertainties by doing a simulation. Warn the user if the shapes don't match. - initialGuessSimulatedResponses = self.getSimulatedResponses(self.UserInput.InputParameterInitialGuess) - if np.shape(initialGuessSimulatedResponses) != np.shape(UserInput.responses_observed): - print("PEUQSE Warning: the shape of the responses_observed is", np.shape(UserInput.responses_observed), ", but the shape using your provided simulation function is", np.shape(initialGuessSimulatedResponses), " . PEUQSE is probably going to crash when trying to calculate the likelihood.") - - #Now reduce the parameter space if requested by the user. #Considered having this if statement as a function called outside of init. However, using it in init is the best practice since it forces correct ordering of reduceParameterSpace and reduceResponseSpace - if len(self.UserInput.model['reducedParameterSpace']) > 0: - print("Notification: the UserInput.model['reducedParameterSpace'] is not blank. That means the only parameters allowed to change will be the ones in the indices inside 'reducedParameterSpace'. All others will be held constant. The values inside 'InputParameterInitialGuess will be used', and 'InputParameterPriorValues' if an initial guess was not provided.") - self.reduceParameterSpace() - - #Now reduce the parameter space if requested by the user. #Considered having this if statement as a function called outside of init. However, using it in init is the best practice since it forces correct ordering of reduceParameterSpace and reduceResponseSpace - #This code must be **after** the reduceParameterSpace because this makes a wrapper for the simulationOutputProcessingFunction - if len(self.UserInput.responses['reducedResponseSpace']) > 0: - print("Important: the UserInput.model['reducedResponseSpace'] is not blank. That means the only responses examined will be the ones in the indices inside 'reducedReponseSpace'. The values of all others will be discarded during each simulation.") - self.reduceResponseSpace() - - #Check if we should plan to split the responses into separate likelihood terms. - self.prepareResponsesForSplitLikelihood = False #initialized as false, will change to True if needed. - #First check if it is a single response, then if so a singlepoint with the initial values and see if it turns out okay. - if len(self.UserInput.responses_observed_transformed)==1: #this means single response - initialLogP = self.getLogP(self.UserInput.InputParameterInitialGuess) - if (np.isnan(initialLogP) or initialLogP < -1E90): - if np.shape(UserInput.responses_observed) == np.shape(UserInput.responses_observed_uncertainties): - #this if statement only occurs if uncertainties are standard deviations and not covmat, - #which means we can prepare the responses for split likelihood and should plan to. - self.prepareResponsesForSplitLikelihood = True - - self.permutation_and_doOptimizeNegLogP = False #just initializing this flag with its default. - self.permutation_and_doOptimizeSSR = False #just initializing this flag with its default. - self.permutation_and_doOptimizeLogP = False - - #fills the samples etc. By default, for multistart, it will also perform filtering and then create the post_burn_in_samples. - def reload_samples(self, sampling_type='', filepath = ''): - if (sampling_type != 'multistart') and (sampling_type != 'mcmc'): - print("ERROR: reload_samples requires specifying either 'multistart' or 'mcmc' as the first argument"); sys.exit() - if filepath == '': - filepath = self.UserInput.directories['logs_and_csvs'] #take the default. - #in both cases, multstart or mcmc, it's really an array of logP_and_parameter_values, just slightly different meanings. - if sampling_type == 'multistart': #load from the unfiltered values. - self.permutations_MAP_logP_and_parameters_values = np.genfromtxt(filepath + "\\multistart_MAP_logP_and_parameters_values.csv", delimiter=",") - multistart_permutationsToSamples_threshold_filter_coefficient = self.UserInput.parameter_estimation_settings['multistart_permutationsToSamples_threshold_filter_coefficient'] - permutations_to_samples_with_logP = convertPermutationsToSamples(self.permutations_MAP_logP_and_parameters_values, relativeFilteringThreshold = 10**(-1*multistart_permutationsToSamples_threshold_filter_coefficient)) - self.post_burn_in_samples = permutations_to_samples_with_logP[:,1:] #drop the first column which is logP. - logP_and_parameter_values = np.array(permutations_to_samples_with_logP) - self.post_burn_in_log_posteriors_un_normed_vec = permutations_to_samples_with_logP[:,0] - self.post_burn_in_log_posteriors_un_normed_vec = np.array(nestedObjectsFunctions.makeAtLeast_2dNested(self.post_burn_in_log_posteriors_un_normed_vec)).transpose() - #need to populate post_burn_in_log_priors_vec this with an object, otherwise calculatePostBurnInStatistics will try to calculate all the priors. - self.post_burn_in_log_priors_vec = None - #Below is needed to avoid causing an error in the calculatePostBurnInStatistics since we don't have a real priors vec. - self.UserInput.parameter_estimation_settings['mcmc_threshold_filter_samples'] = False - self.calculatePostBurnInStatistics(calculate_post_burn_in_log_priors_vec = False) - if sampling_type == 'mcmc': - mcmc_logP_and_parameters_values = np.genfromtxt(filepath + "\\mcmc_logP_and_parameter_samples.csv", delimiter=",") - logP_and_parameter_values = np.array(mcmc_logP_and_parameters_values) - try: - self.calculatePostBurnInStatistics(calculate_post_burn_in_log_priors_vec = True) - except: - self.calculatePostBurnInStatistics(calculate_post_burn_in_log_priors_vec = False) - # below are not needed because they occur in self.calculatePostBurnInStatistics - # self.map_logP = max(np.array(logP_and_parameter_values[:,0])) - # index_of_map_logP = np.where(logP_and_parameter_values[:,0] == self.map_logP) - # self.map_parameter_set = logP_and_parameter_values[index_of_map_logP,1:] - - - - def reduceResponseSpace(self): - #This function has no explicit arguments, but takes everything in self.UserInput as an implied argument. - #In particular, self.UserInput.responses['reducedResponseSpace'] - #it has two implied returns: 1) self.UserInput.simulationOutputProcessingFunction, 2) self.responses_covmat becomes reduced in size. - - UserInput = self.UserInput - #First, we need to make a function that is going to reduce the dimensionality of the outputs outputs when there are simulations. - #Make a deep copy of the existing function, so that we can use it if needed. - self.UserInput.beforeReducedResponseSpaceSimulationOutputProcessingFunction = copy.deepcopy(self.UserInput.simulationOutputProcessingFunction) - self.UserInput.beforeReducedResponseSpace_num_response_dimensions = self.UserInput.num_response_dimensions - def extractReducedResponsesOutputsWrapper(simulatedOutput): - #The simulatedOuput is an exlicit argument, the self.UserInput.model['reducedResponseSpace'] is an implicit argument. - #First, check if there is an OutputProcessing function to use on the simulatedOutput. - if type(self.UserInput.beforeReducedResponseSpaceSimulationOutputProcessingFunction) != type(None): - fullResponseOutput = self.UserInput.beforeReducedResponseSpaceSimulationOutputProcessingFunction(simulatedOutput) #We use the processing function to convert the simulated output to the actual responses, then we trim them as above. - elif type(self.UserInput.beforeReducedResponseSpaceSimulationOutputProcessingFunction) == type(None): #if not, we take the output directly. - fullResponseOutput = simulatedOutput - - #We could calculate the number of responses from fullResponseOutput, but we use self.UserInput.beforeReducedResponseSpace_num_response_dimensions as an implicit argument. - reducedResponseOutput = []#Just intializing, then will append to it. - for responseDimIndex in range(self.UserInput.beforeReducedResponseSpace_num_response_dimensions): - #We'll only keep a responsDim if the responseDimIndex is named in self.UserInput.model['reducedResponseSpace'] - if responseDimIndex in self.UserInput.responses['reducedResponseSpace']: - reducedResponseOutput.append(fullResponseOutput[responseDimIndex]) - return reducedResponseOutput - - #Now get our first "implied return" by using the above function as the processing function. - self.UserInput.simulationOutputProcessingFunction = extractReducedResponsesOutputsWrapper - - #Now we get our second "implied return" by reducing the response_abscissa, transformed response values, and their uncertainties. - #TODO: consider making a different variable so that the dictionary does not need to get overwritten. - self.UserInput.responses_abscissa = returnReducedIterable(self.UserInput.responses_abscissa, self.UserInput.responses['reducedResponseSpace']) - self.UserInput.responses_observed_transformed = returnReducedIterable(self.UserInput.responses_observed_transformed, self.UserInput.responses['reducedResponseSpace']) - self.UserInput.responses_observed_transformed_uncertainties = returnReducedIterable(self.UserInput.responses_observed_transformed, self.UserInput.responses['reducedResponseSpace']) - self.UserInput.num_response_dimensions = np.shape(UserInput.responses_abscissa)[0] - - #Now we get our third "implied return" by reducing the response_covmat. - self.observed_responses_covmat_transformed = returnReducedIterable(self.observed_responses_covmat_transformed, self.UserInput.responses['reducedResponseSpace']) - return - - - #This function reduces the parameter space. The only parameters allowed to change will be the ones in the indices inside 'reducedParameterSpace'. All others will be held constant. The values inside 'InputParameterInitialGuess will be used', and 'InputParameterPriorValues' if an initial guess was not provided.") - #These lines of code started in __init__ was moved outside of initializing the class so that someday people can call it later on after making the class object, if desired. - #That way people can change to a different reduced parameter space without making a new object by updating what is in UserInput.model['reducedParameterSpace'] - #However, that 'later changing' is currently not supported. The indices *at present* only work out correctly when this is called at end of initialization. - def reduceParameterSpace(self): - UserInput = self.UserInput - - self.UserInput.simulationFunction = self.simulateWithSubsetOfParameters #Now simulateWithSubsetOfParameters will be called as the simulation function. - self.UserInput.simulationOutputProcessingFunction = None #We will use self.UserInput.model['simulationOutputProcessingFunction'], but we'll do it inside subsetOfParameterSpaceWrapper. So during parameter estimation there will be no separate call to a simulation output processing function. - #Now start reducing various inputs... - reducedIndices = UserInput.model['reducedParameterSpace'] - UserInput.InputParameterInitialGuess = returnReducedIterable(UserInput.InputParameterInitialGuess, reducedIndices) - UserInput.parameterNamesList = returnReducedIterable(UserInput.parameterNamesList, reducedIndices) - #We need to reparse to populate UserInput.stringOfParameterNames, can't use return Reduced Iterable. - UserInput.stringOfParameterNames = str(UserInput.parameterNamesList).replace("'","")[1:-1] - #To make UserInput.parameterNamesAndMathTypeExpressionsDict we use a for loop to remove keys that should not be there anymore. - #need to trim the dictionary based on what is in the UserInput.parameterNamesList variable - parameterNamesAndMathTypeExpressionsDict = copy.deepcopy(self.UserInput.model['parameterNamesAndMathTypeExpressionsDict']) - for keyIndex in range(len(parameterNamesAndMathTypeExpressionsDict)): - key = list(self.UserInput.model['parameterNamesAndMathTypeExpressionsDict'])[keyIndex] #Need to call it out separately from original dictionary due to loop making the new dictionary smaller. - if key not in self.UserInput.parameterNamesList: - del parameterNamesAndMathTypeExpressionsDict[key] #Remove any parameters that were not in reduced parameter space. - UserInput.parameterNamesAndMathTypeExpressionsDict = parameterNamesAndMathTypeExpressionsDict - UserInput.InputParametersPriorValuesUncertainties = returnReducedIterable(UserInput.InputParametersPriorValuesUncertainties, reducedIndices) - if self.parameterBoundsOn: #only need to reduce the iterables for the parameter bounds if they exist. - UserInput.InputParameterPriorValues_lowerBounds = returnReducedIterable( UserInput.InputParameterPriorValues_lowerBounds , reducedIndices ) - UserInput.InputParameterPriorValues_upperBounds = returnReducedIterable( UserInput.InputParameterPriorValues_upperBounds , reducedIndices ) - #We have a list that keeps track of InputParameters which have Uniform Prior distributions. The logic for how to update that is a bit different. - if hasattr(self.UserInput, 'InputParametersPriorValuesUniformDistributionsIndices') == True: - NewInputParametersPriorValuesUniformDistributionsIndices = [] - for indexNumber, indexValue in enumerate(reducedIndices): #we need to know which position it has in the reducedIndices, and we'll append **that** position if the item is a uniform distribution. - if indexValue in UserInput.InputParametersPriorValuesUniformDistributionsIndices: - NewInputParametersPriorValuesUniformDistributionsIndices.append(indexNumber) - #else pass. - UserInput.InputParametersPriorValuesUniformDistributionsIndices = NewInputParametersPriorValuesUniformDistributionsIndices - UserInput.std_prior = returnReducedIterable( UserInput.std_prior , reducedIndices ) - UserInput.var_prior = returnReducedIterable( UserInput.var_prior , reducedIndices ) - UserInput.covmat_prior = returnReducedIterable( UserInput.covmat_prior , reducedIndices ) - self.UserInput.scaling_uncertainties = returnReducedIterable( self.UserInput.scaling_uncertainties , reducedIndices ) - self.UserInput.mu_prior = returnReducedIterable( self.UserInput.mu_prior , reducedIndices ) - self.UserInput.mu_prior_scaled = returnReducedIterable( self.UserInput.mu_prior_scaled , reducedIndices ) - self.UserInput.var_prior_scaled = returnReducedIterable( self.UserInput.var_prior_scaled , reducedIndices ) - self.UserInput.covmat_prior_scaled = returnReducedIterable( self.UserInput.covmat_prior_scaled , reducedIndices ) - self.Q_mu = returnReducedIterable( self.Q_mu , reducedIndices ) - self.Q_covmat = returnReducedIterable( self.Q_covmat , reducedIndices ) - #There are no returns. Everything above is an implied return. - return - - def get_responses_simulation_uncertainties(self, discreteParameterVector): #FIXME: Make sure this works with responses['reducedResponseSpace'] and model['reducedParameterSpace']. I don't think it does. - if isinstance(self.UserInput.responses_simulation_uncertainties, Iterable): #If it's an array or like one, we take it as is. The other options are a non object or a function. - responses_simulation_uncertainties = np.array(self.UserInput.responses_simulation_uncertainties)*1.0 - elif type(self.UserInput.responses_simulation_uncertainties) == type(None): - responses_simulation_uncertainties = self.UserInput.responses_simulation_uncertainties - else: #Else we assume it's a function taking the discreteParameterVector. - responses_simulation_uncertainties = self.UserInput.responses_simulation_uncertainties(discreteParameterVector) #This is passing an argument to a function. - responses_simulation_uncertainties = np.array(nestedObjectsFunctions.makeAtLeast_2dNested(responses_simulation_uncertainties)) - responses_simulation_uncertainties = nestedObjectsFunctions.convertInternalToNumpyArray_2dNested(responses_simulation_uncertainties) - return responses_simulation_uncertainties - - def simulateWithSubsetOfParameters(self,reducedParametersVector): #This is a wrapper. - #This function has implied arguments of ... - #self.UserInput.model['InputParameterInitialGuess'] for the parameters to start with - #self.UserInput.model['reducedParameterSpace'] a list of indices for which parameters are the only ones to change. - #simulationFunction = self.UserInput.model['simulateByInputParametersOnlyFunction'] - #simulationOutputProcessingFunction = self.UserInput.model['simulationOutputProcessingFunction'] - #When this wrapper is used, EVERYWHERE ELSE will call it to do the simulation, by calling self.UserInput.simulationFunction and self.UserInput.simulationOutputProcessingFunction - simulationFunction = self.UserInput.model['simulateByInputParametersOnlyFunction'] #This is making a local simulation function. The global will be set ot simulateWithSubsetOfParameters. - simulationOutputProcessingFunction = self.UserInput.model['simulationOutputProcessingFunction'] #This is making a local simulation function. The global will be set to None. - - #now populate the discreteParameterVector first with the initial guess, then with the new reducedParameters vector. - discreteParameterVector = copy.deepcopy(self.UserInput.model['InputParameterInitialGuess']) #This is the original one from the user, before any reduction. - for reducedParameterIndex, parameterValue in enumerate(reducedParametersVector): - #we find which index to put things into from #self.UserInput.model['reducedParameterSpace'], which is a list of indices. - regularParameterIndex = self.UserInput.model['reducedParameterSpace'][reducedParameterIndex] - discreteParameterVector[regularParameterIndex] = parameterValue - if type(simulationFunction) != type(None):#This is the normal case. - simulationOutput = simulationFunction(discreteParameterVector) - if type(simulationOutput) == type(None): - return None #This is for the case that the simulation fails. User can have simulationOutput return a None type in case of failure. Perhaps should be made better in future. - if len(simulationOutput) == 1: #if a 'nan' is returned, then we'll treat the simulation like a failed simulation. - if simulationOutput == np.float('nan'): - return None - - - if type(simulationOutputProcessingFunction) == type(None): - simulatedResponses = simulationOutput #Is this the log of the rate? If so, Why? - if type(simulationOutputProcessingFunction) != type(None): - simulatedResponses = simulationOutputProcessingFunction(simulationOutput) - - simulatedResponses = nestedObjectsFunctions.makeAtLeast_2dNested(simulatedResponses) - #This is not needed: - #observedResponses = nestedObjectsFunctions.makeAtLeast_2dNested(self.UserInput.responses_observed) - return simulatedResponses - - def transform_responses(self, nestedAllResponsesArray, nestedAllResponsesUncertainties = []): - nestedAllResponsesArray_transformed = copy.deepcopy(nestedAllResponsesArray) #First make a copy to populate with transformed values. - nestedAllResponsesUncertainties_transformed = copy.deepcopy(nestedAllResponsesUncertainties) #First make a copy to populate with transformed values. If blank, we won't populate it. - UserInput = self.UserInput - #TODO: Make little function for interpolation in case it's necessary (see below). -# def littleInterpolator(): -# abscissaRange = UserInput.responses_abscissa[responseIndex][-1] - UserInput.responses_abscissa[responseIndex][0] #Last value minus first value. -# UserInput.responses_observed = nestedObjectsFunctions.makeAtLeast_2dNested(UserInput.responses_observed) -# UserInput.responses_observed_uncertainties = nestedObjectsFunctions.makeAtLeast_2dNested(UserInput.responses_observed_uncertainties) - if 'data_overcategory' not in UserInput.responses: #To make backwards compatibility. - UserInput.responses['data_overcategory'] = '' - if UserInput.responses['data_overcategory'] == 'transient_kinetics': #This assumes that the abscissa is always time. - for responseIndex, response in enumerate(UserInput.responses_observed): - #We will need the abscissa also, so need to check if there are independent abscissa or not: - if len(UserInput.responses_abscissa) == 1: #This means there is only one abscissa. - abscissaIndex = 0 - else: - abscissaIndex = responseIndex - #Now to do the transforms. - if UserInput.responses['response_types'][responseIndex] == 'I': #For intermediate - if UserInput.responses['response_data_types'][responseIndex] == 'c': - t_values, nestedAllResponsesArray_transformed[responseIndex], dydt_values = littleEulerGivenArray(0, UserInput.responses_abscissa[abscissaIndex], nestedAllResponsesArray[responseIndex]) - if len(nestedAllResponsesUncertainties) > 0: - nestedAllResponsesUncertainties_transformed[responseIndex] = littleEulerUncertaintyPropagation(nestedAllResponsesUncertainties[responseIndex], UserInput.responses_abscissa[abscissaIndex], np.mean(nestedAllResponsesUncertainties[responseIndex])/10) - if UserInput.responses['response_data_types'][responseIndex] == 'r': - #Perform the littleEuler twice. - t_values, nestedAllResponsesArray_transformed[responseIndex], dydt_values = littleEulerGivenArray(0, UserInput.responses_abscissa[abscissaIndex], nestedAllResponsesArray[responseIndex]) - if len(nestedAllResponsesUncertainties) > 0: - nestedAllResponsesUncertainties_transformed[responseIndex] = littleEulerUncertaintyPropagation(nestedAllResponsesUncertainties[responseIndex], UserInput.responses_abscissa[abscissaIndex], np.mean(nestedAllResponsesUncertainties[responseIndex])/10) - t_values, nestedAllResponsesArray_transformed[responseIndex], dydt_values = littleEulerGivenArray(0, UserInput.responses_abscissa[abscissaIndex], nestedAllResponsesArray_transformed[responseIndex]) - if len(nestedAllResponsesUncertainties) > 0: - nestedAllResponsesUncertainties_transformed[responseIndex] = littleEulerUncertaintyPropagation(nestedAllResponsesUncertainties_transformed[responseIndex], UserInput.responses_abscissa[abscissaIndex], np.mean(nestedAllResponsesUncertainties[responseIndex])/10) - if UserInput.responses['response_types'][responseIndex] == 'R': #For reactant - if UserInput.responses['response_data_types'][responseIndex] == 'c': - pass - if UserInput.responses['response_data_types'][responseIndex] == 'r': - #TODO: use responses['points_if_transformed'] variable to interpolate the right number of points. This is for data that's not already evenly spaced. - t_values, nestedAllResponsesArray_transformed[responseIndex], dydt_values = littleEulerGivenArray(0, UserInput.responses_abscissa[abscissaIndex], nestedAllResponsesArray[responseIndex]) - if len(nestedAllResponsesUncertainties) > 0: - nestedAllResponsesUncertainties_transformed[responseIndex] = littleEulerUncertaintyPropagation(nestedAllResponsesUncertainties[responseIndex], UserInput.responses_abscissa[abscissaIndex], np.mean(nestedAllResponsesUncertainties[responseIndex])/10) - if UserInput.responses['response_types'][responseIndex] == 'P': #For product - - if UserInput.responses['response_data_types'][responseIndex] == 'c': - pass - if UserInput.responses['response_data_types'][responseIndex] == 'r': - #TODO: use responses['points_if_transformed'] variable to interpolate the right number of points. This is for data that's not already evenly spaced. - t_values, nestedAllResponsesArray_transformed[responseIndex], dydt_values = littleEulerGivenArray(0, UserInput.responses_abscissa[abscissaIndex], nestedAllResponsesArray[responseIndex]) - if len(nestedAllResponsesUncertainties) > 0: - nestedAllResponsesUncertainties_transformed[responseIndex] = littleEulerUncertaintyPropagation(nestedAllResponsesUncertainties[responseIndex], UserInput.responses_abscissa[abscissaIndex], np.mean(nestedAllResponsesUncertainties[responseIndex])/10) - if UserInput.responses['response_types'][responseIndex] == 'O': #O is for other. - if UserInput.responses['response_data_types'][responseIndex] == 'o': #other - pass - if UserInput.responses['response_data_types'][responseIndex] == 'c': #concentration - LittleEuler - if UserInput.responses['response_data_types'][responseIndex] == 'r': - LittleEulerTwice - if UserInput.responses['data_overcategory'] == 'steady_state_kinetics': #TODO: so far, this does not do anything. It assumes that the abscissa is never time. - for responseIndex, response in enumerate(UserInput.responses_observed): - if UserInput.responses['response_types'][responseIndex] == 'T': #For abscissa of temperature dependence. Will probably do a log transform. - if UserInput.responses['response_data_types'][responseIndex] == 'c': - pass - if UserInput.responses['response_data_types'][responseIndex] == 'r': - pass - if UserInput.responses['response_types'][responseIndex] == 'I' or UserInput.responses['response_types'][responseIndex] == 'P' or UserInput.responses['response_types'][responseIndex] == 'R': #For abscissa of concentration dependence. - if UserInput.responses['response_data_types'][responseIndex] == 'c': - pass - if UserInput.responses['response_data_types'][responseIndex] == 'r': - pass - return nestedAllResponsesArray_transformed, nestedAllResponsesUncertainties_transformed - - #Throughout this file, this function is called to generate initialStartPoint distributions or walkerInitialDistributions. - # These are **not** identical variables and should not be messed up during editing. walkerInitialDistributions are a special case of initialStartPoints - # The distinction is hierarchical. Somebody could do a multiStart search with a uniformInitialDistributionType and have a walkerInitialDistribution started around each case within that. - # Effectively, the initialDistributionPoints are across parameter space, while the walkerInitialDistribution **could** be designed to find local modes using a smaller spread. - - def generateInitialPoints(self, numStartPoints=0, initialPointsDistributionType='uniform', relativeInitialDistributionSpread=1.0, numParameters = 0, centerPoint=None, gridsearchSamplingInterval = [], gridsearchSamplingRadii = []): - #The initial points will be generated from a distribution based on the number of walkers and the distributions of the parameters. - #The variable UserInput.std_prior has been populated with 1 sigma values, even for cases with uniform distributions. - #The random generation at the front of the below expression is from the zeus example https://zeus-mcmc.readthedocs.io/en/latest/ - #The multiplication is based on the randn function using a sigma of one (which we then scale up) and then advising to add mu after: https://docs.scipy.org/doc/numpy-1.15.1/reference/generated/numpy.random.randn.html - #The actual numParameters cannot be 0. We just use 0 to mean not provided, in which case we pull it from the initial guess. - #The arguments gridsearchSamplingInterval and gridsearchSamplingRadii are only for the distribution type 'grid', and correspond to the variables gridsearchSamplingInterval = [], gridsearchSamplingRadii = [] inside getGridPermutations. - if str(centerPoint).lower() == str(None).lower(): - centerPoint = np.array(self.UserInput.InputParameterInitialGuess)*1.0 #This may be a reduced parameter space. - if initialPointsDistributionType.lower() not in ['grid', 'uniform', 'identical', 'gaussian', 'astroidal', 'sobol', 'shell']: - print("Warning: initialPointsDistributionType must be from: 'grid', 'uniform', 'identical', 'gaussian', 'astroidal', 'sobol', 'shell'. A different choice was received and is not understood. initialPointsDistributionType is being set as 'sobol'.") - initialPointsDistributionType = 'sobol' - #For a multi-start with a grid, our algorithm is completely different than other cases. - if initialPointsDistributionType.lower() =='grid': - gridPermutations, numPermutations = self.getGridPermutations(centerPoint, gridsearchSamplingInterval=gridsearchSamplingInterval, gridsearchSamplingRadii=gridsearchSamplingRadii) - initialPoints = gridPermutations - #Below lines are for non-grid cases. - if numParameters == 0: - numParameters = len(centerPoint) - if numStartPoints == 0: #This is a deprecated line. The function was originally designed for making mcmc walkers and then was generalized. - numStartPoints = self.mcmc_nwalkers - if initialPointsDistributionType.lower() =='uniform': - initialPointsFirstTerm = np.random.uniform(-2,2, [numStartPoints,numParameters]) #<-- this is from me, trying to remove bias. This way we get sampling from a uniform distribution from -2 standard deviations to +2 standard deviations. That way the sampling is over 95% of the prior and is (according to the prior) likely to include the HPD region. - elif initialPointsDistributionType.lower() == 'identical': - initialPointsFirstTerm = np.zeros((numStartPoints, numParameters)) #Make the first term all zeros. - elif initialPointsDistributionType.lower() =='gaussian': - initialPointsFirstTerm = np.random.randn(numStartPoints, numParameters) #<--- this was from the zeus example. TODO: change this to rng.standard_normal - elif (initialPointsDistributionType.lower() == 'astroidal') or (initialPointsDistributionType.lower() == 'shell'): - # The idea is to create a hypercube around the origin then apply a power law factor. - # This factor is set as the numParameters to create an interesting distribution for Euclidean distance that starts as a uniform distribution then decays by a power law if the exponent is the number of dimensions. - from scipy.stats import qmc - from warnings import catch_warnings, simplefilter #used to suppress warnings when sobol samples are not base2. - # A sobol object has to be created to then extract points from the object. - # The scramble (Owen Scramble) is always True. This option helps convergence and creates a more unbiased sampling. - sobol_object = qmc.Sobol(d=numParameters, scramble=True) - with catch_warnings(): - simplefilter("ignore") - sobol_samples = sobol_object.random(numStartPoints) - # now we must translate the sequence (from range(0,1) to range(-2,2)). This is analagous to the way we get sampling from a uniform distribution from -2 standard deviations to +2 standard deviations. - initialPointsFirstTerm = -1 + 2*sobol_samples - # This section assures that positive and negative values are generated. - # create mapping scheme of negative values, then make matrix completely positive, apply negatives back later - neg_map = np.ones((numStartPoints,numParameters), dtype=int) - neg_map[initialPointsFirstTerm < 0] = -1 - initialPointsFirstTerm = np.abs(initialPointsFirstTerm) - if initialPointsDistributionType.lower() == 'astroidal': - initialPointsFirstTerm = initialPointsFirstTerm**numParameters - elif initialPointsDistributionType.lower() == 'shell': - initialPointsFirstTerm = initialPointsFirstTerm**(1/numParameters) - initialPointsFirstTerm = neg_map*initialPointsFirstTerm - # Apply a proportional factor of 2 to get bounds of 2 sigma. This is analagous to the way we get sampling from a uniform distribution from -2 standard deviations to +2 standard deviations. - initialPointsFirstTerm *= 2 - elif initialPointsDistributionType.lower() == 'sobol': - from scipy.stats import qmc - from warnings import catch_warnings, simplefilter #used to suppress warnings when sobol samples are not base2. - # A sobol object has to be created to then extract points from the object. - # The scramble (Owen Scramble) is always True. This option helps convergence and creates a more unbiased sampling. - sobol_object = qmc.Sobol(d=numParameters, scramble=True) - with catch_warnings(): - simplefilter("ignore") - sobol_samples = sobol_object.random(numStartPoints) - # now we must translate the sequence (from range(0,1) to range(-2,2)). This is analagous to the way we get sampling from a uniform distribution from -2 standard deviations to +2 standard deviations. - initialPointsFirstTerm = -2 + 4*sobol_samples - if initialPointsDistributionType !='grid': - #Now we add to centerPoint, usually self.UserInput.InputParameterInitialGuess. We don't use the UserInput initial guess directly because gridsearch and other things can change it -- so we need to use this one. - initialPoints = relativeInitialDistributionSpread*initialPointsFirstTerm*self.UserInput.std_prior + centerPoint - return initialPoints - - #This helper function has been made so that gridSearch and design of experiments can call it. - #Although at first glance it may seem like it should be in the CombinationsGeneratorModule, that is a misconception. This is just a wrapper setting defaults for calling that module, such as using the prior for the grid interval when none is provided. - #note that a blank list is okay for gridsearchSamplingInterval if doing a parameter grid, but not for other types of grids. - def getGridPermutations(self, gridCenterVector, gridsearchSamplingInterval, gridsearchSamplingRadii, SpreadType="Addition",toFile=False): - import PEUQSE.CombinationGeneratorModule as CombinationGeneratorModule - numParameters = len(gridCenterVector) - if len(gridsearchSamplingRadii) == 0: - gridsearchSamplingRadii = np.ones(numParameters, dtype='int') #By default, will make ones. - numPermutations = 3**numParameters - else: - gridsearchSamplingRadii = np.array(gridsearchSamplingRadii, dtype='int') - numPermutations = 1 #just initializing. - for radius in gridsearchSamplingRadii: - numPermutations=numPermutations*(2*radius+1) - if len(gridsearchSamplingInterval) == 0: - gridsearchSamplingInterval = self.UserInput.std_prior #By default, we use the standard deviations associated with the priors. - else: gridsearchSamplingInterval = np.array(gridsearchSamplingInterval, dtype='float') - gridPermutations = CombinationGeneratorModule.combinationGenerator(gridCenterVector, gridsearchSamplingInterval, gridsearchSamplingRadii, SpreadType=SpreadType,toFile=toFile) - return gridPermutations, numPermutations - - def doListOfPermutationsSearch(self, listOfPermutations, numPermutations = None, searchType='getLogP', exportLog = True, walkerInitialDistribution='UserChoice', passThroughArgs = {}, calculatePostBurnInStatistics=True, keep_cumulative_post_burn_in_data = False, centerPoint=None, permutationsToSamples=False): #This is the 'engine' used by doGridSearch and doMultiStartSearch - #The listOfPermutations can also be another type of iterable. - #Possible searchTypes are: 'getLogP', 'doEnsembleSliceSampling', 'doEnsembleJumpSampling', 'doMetropolisHastings', 'doOptimizeNegLogP', 'doOptimizeLogP' 'doOptimizeSSR' - #permutationsToSamples should normally only be True if somebody is using gridsearch or uniform multistart with getLogP. - self.listOfPermutations = listOfPermutations #This is being made into a class variable so that it can be used during parallelization - if str(numPermutations).lower() == str(None).lower(): - numPermutations = len(self.listOfPermutations) - if str(centerPoint).lower() == str(None).lower(): - centerPoint = self.UserInput.InputParameterInitialGuess*1.0 - if searchType == 'doGetLogP' or searchType == 'doSinglePoint': #Fixing a common input mistake. - searchType = 'getLogP' - if searchType == 'doEnsembleJumpSampling': #Fix the frontend name to the backend name. - searchType = 'doEnsembleModifiedMHSampling' - self.permutation_searchType = searchType #This is mainly for consolidate_parallel_sampling_data - verbose = self.UserInput.parameter_estimation_settings['verbose'] - if verbose: - print("Starting multistart/permutations search.") - file_name_prefix, file_name_suffix, directory_name_suffix = self.getParallelProcessingPrefixAndSuffix() #As of Nov 21st 2020, these should always be '' since multiStart_continueSampling is not intended to be used with parallel sampling. - if (self.UserInput.parameter_estimation_settings['mcmc_continueSampling'] == 'auto') or (self.UserInput.parameter_estimation_settings['mcmc_continueSampling'] == False): - mcmc_continueSampling = False #need to set this variable to false if it's an auto. The only time mcmc_continue sampling should be on for multistart is if someone is doing it intentionally, which would normally only be during an MPI case. - if (self.UserInput.parameter_estimation_settings['mcmc_continueSampling'] == True): - mcmc_continueSampling = True #The only time mcmc_continue sampling should be on for multistart is if someone is doing it intentionally, which would normally only be during an MPI case. - #Check if we need to do multistart_continueSampling, and prepare for it if we need to. - if ('multistart_continueSampling' not in self.UserInput.parameter_estimation_settings) or (self.UserInput.parameter_estimation_settings['multistart_continueSampling'] == 'auto'): - if hasattr(self, 'multistart_MAP_logP_and_parameters_values'): - multistart_continueSampling = True - else: - multistart_continueSampling = False - else: multistart_continueSampling = self.UserInput.parameter_estimation_settings['multistart_continueSampling'] - if multistart_continueSampling == True: - if hasattr(self, 'multistart_MAP_logP_and_parameters_values'): #if we are continuing from old results in the same instance - self.last_permutations_MAP_logP_and_parameters_values = copy.deepcopy(self.permutations_MAP_logP_and_parameters_values) - else: #Else we need to read from the file. - self.last_permutations_MAP_logP_and_parameters_values_filename = file_name_prefix + "multistart_MAP_logP_and_parameters_values" + file_name_suffix - self.last_permutations_MAP_logP_and_parameters_values = unpickleAnObject(self.UserInput.directories['pickles']+self.last_permutations_MAP_logP_and_parameters_values_filename) - #extract he last_listOfPermutations from the array object. - self.last_listOfPermutations = np.array(nestedObjectsFunctions.makeAtLeast_2dNested(self.last_permutations_MAP_logP_and_parameters_values[:,1:])) #later columns are the permutations. - if np.shape(self.last_listOfPermutations)[0] == 1: #In this case, need to transpose. - self.last_listOfPermutations = self.last_listOfPermutations.transpose() - #unlike in mcmc_continueSampling, we don't need the last_InputParameterInitialGuess information. - #Initialize some things before permutations loop. - allPermutationsResults = [] - self.permutations_MAP_logP_and_parameters_values = [] #Just initializing as fresh. - if (type(self.UserInput.parameter_estimation_settings['multistart_checkPointFrequency']) != type(None)) or (verbose == True): - timeAtPermutationSearchStart = time.time() - timeAtLastPermutation = timeAtPermutationSearchStart #just initializing - self.highest_logP = float('-inf') #just initializing - highest_logP_parameter_set = np.ones(len(self.UserInput.InputParameterInitialGuess))*float('nan') #just initializing - #bestResultSoFar has this form: [self.map_parameter_set, self.mu_AP_parameter_set, self.stdap_parameter_set, self.evidence, self.info_gain, self.post_burn_in_samples, self.post_burn_in_log_posteriors_un_normed_vec] - bestResultSoFar = [highest_logP_parameter_set, None, None, None, None, None, None] #just initializing. - highest_MAP_initial_point_index = None #just initializing - highest_MAP_initial_point_parameters = None #just initializing - if self.UserInput.parameter_estimation_settings['exportAllSimulatedOutputs'] == True: - self.permutations_unfiltered_map_simulated_outputs = [] - if (searchType == 'doEnsembleSliceSampling') or (searchType == 'doEnsembleModifiedMHSampling'): - if str(self.UserInput.parameter_estimation_settings['mcmc_nwalkers']).lower() == 'auto': - permutationSearch_mcmc_nwalkers = 2*len(centerPoint) #Lowest possible is 2 times num parameters for ESS. - else: - permutationSearch_mcmc_nwalkers = int(self.UserInput.parameter_estimation_settings['mcmc_nwalkers']) - #Start grid search loop. - if (searchType == 'doEnsembleSliceSampling') or (searchType == 'doMetropolisHastings') or (searchType == 'doEnsembleModifiedMHSampling'): #Choose the walker distribution type. - if walkerInitialDistribution == 'UserChoice': #UserChoice comes from UserInput. It can still be auto. - walkerInitialDistribution = self.UserInput.parameter_estimation_settings['mcmc_walkerInitialDistribution'] - #The identical distribution is used by default because otherwise the walkers may be spread out too far and it could defeat the purpose of a gridsearch. - if walkerInitialDistribution.lower() == 'auto': - walkerInitialDistribution = 'sobol' - for permutationIndex,permutation in enumerate(self.listOfPermutations): - #####Begin PEUQSE Parallel Processing During Loop Block#### - if (self.UserInput.parameter_estimation_settings['multistart_parallel_sampling'])== True: - #We will only execute the sampling the permutationIndex matches the processor rank. - #Additionally, if the rank is 0 and the simulation got here, it will be assumed the person is running this just to find the number of Permutations, so that will be spit out and the simulation ended. - import PEUQSE.parallel_processing - if PEUQSE.parallel_processing.currentProcessorNumber == 0: - print("For the user input settings provided, the number of Permutations+1 will be", numPermutations+1, ". Please use mpiexec or mpirun with this number for N. If you are not expecting to see this message, change your UserInput choices. You have chosen parallel processing for gridsearch and have run PEUQSE without mpi, which is a procedure to retrieve the number of processor ranks to use for parallelized gridsearch. A typical syntax now would be: mpiexec -n ", numPermutations+1, " python runfile_for_your_analysis.py" ) - sys.exit() - elif PEUQSE.parallel_processing.currentProcessorNumber != permutationIndex+1: - continue #This means the permutation index does not match the processor rank so nothing should be executed. - #elif PEUQSE.parallel_processing.currentProcessorNumber == permutationIndex+1: - # pass #This is the "normal" case and is implied, so is commented out. - #####End PEUQSE Parallel Processing During Loop Block#### - self.UserInput.InputParameterInitialGuess = permutation #We need to fill the variable InputParameterInitialGuess with the permutation being checked. - if (searchType == 'getLogP'): - self.map_logP = self.getLogP(permutation) #The getLogP function does not fill map_logP by itself. - self.map_parameter_set = permutation - thisResult = [self.map_parameter_set, None, None, None, None, None, None] - #thisResultStr = [self.map_logP, str(self.map_parameter_set).replace(",","|").replace("[","").replace('(','').replace(')',''), 'None', 'None', 'None', 'None', 'None', 'None'] - if searchType == 'doMetropolisHastings': - self.map_logP = np.float('-inf') #initializing as -inf to have a 'pure' mcmc sampling. - thisResult = self.doMetropolisHastings(calculatePostBurnInStatistics=calculatePostBurnInStatistics, continueSampling=mcmc_continueSampling) - #self.map_logP gets done by itself in doMetropolisHastings - #Note that "thisResult" has the form: [self.map_parameter_set, self.mu_AP_parameter_set, self.stdap_parameter_set, self.evidence, self.info_gain, self.post_burn_in_samples, self.post_burn_in_log_posteriors_un_normed_vec] - if keep_cumulative_post_burn_in_data == True: - if permutationIndex == 0: - self.cumulative_post_burn_in_samples = self.post_burn_in_samples - self.cumulative_post_burn_in_log_priors_vec = self.post_burn_in_log_priors_vec - self.cumulative_post_burn_in_log_posteriors_un_normed_vec = self.post_burn_in_log_posteriors_un_normed_vec - else: #This is basically elseif permutationIndex > 0: - self.cumulative_post_burn_in_samples = np.vstack((self.cumulative_post_burn_in_samples, self.post_burn_in_samples)) - self.cumulative_post_burn_in_log_priors_vec = np.vstack((self.cumulative_post_burn_in_log_priors_vec, self.post_burn_in_log_priors_vec)) - self.cumulative_post_burn_in_log_posteriors_un_normed_vec = np.vstack((self.cumulative_post_burn_in_log_posteriors_un_normed_vec, self.post_burn_in_log_posteriors_un_normed_vec)) - if searchType == 'doEnsembleSliceSampling': - self.map_logP = np.float('-inf') #initializing as -inf to have a 'pure' mcmc sampling. - thisResult = self.doEnsembleSliceSampling(mcmc_nwalkers_direct_input=permutationSearch_mcmc_nwalkers, calculatePostBurnInStatistics=calculatePostBurnInStatistics, walkerInitialDistribution=walkerInitialDistribution, continueSampling=mcmc_continueSampling) - #Note that "thisResult" has the form: [self.map_parameter_set, self.mu_AP_parameter_set, self.stdap_parameter_set, self.evidence, self.info_gain, self.post_burn_in_samples, self.post_burn_in_log_posteriors_un_normed_vec] - #self.map_logP gets done by itself in doEnsembleSliceSampling - if keep_cumulative_post_burn_in_data == True: - if permutationIndex == 0: - self.cumulative_post_burn_in_samples = self.post_burn_in_samples - self.cumulative_post_burn_in_log_priors_vec = self.post_burn_in_log_priors_vec - self.cumulative_post_burn_in_log_posteriors_un_normed_vec = self.post_burn_in_log_posteriors_un_normed_vec - else: #This is basically elseif permutationIndex > 0: - self.cumulative_post_burn_in_samples = np.vstack((self.cumulative_post_burn_in_samples, self.post_burn_in_samples)) - self.cumulative_post_burn_in_log_priors_vec = np.vstack((self.cumulative_post_burn_in_log_priors_vec, self.post_burn_in_log_priors_vec)) - self.cumulative_post_burn_in_log_posteriors_un_normed_vec = np.vstack((self.cumulative_post_burn_in_log_posteriors_un_normed_vec, self.post_burn_in_log_posteriors_un_normed_vec)) - if searchType == 'doEnsembleModifiedMHSampling': - self.map_logP = np.float('-inf') #initializing as -inf to have a 'pure' mcmc sampling. - thisResult = self.doEnsembleModifiedMHSampling(mcmc_nwalkers_direct_input=permutationSearch_mcmc_nwalkers, calculatePostBurnInStatistics=calculatePostBurnInStatistics, walkerInitialDistribution=walkerInitialDistribution, continueSampling=mcmc_continueSampling) - #Note that "thisResult" has the form: [self.map_parameter_set, self.mu_AP_parameter_set, self.stdap_parameter_set, self.evidence, self.info_gain, self.post_burn_in_samples, self.post_burn_in_log_posteriors_un_normed_vec] - #self.map_logP gets done by itself in doEnsembleJumpSampling - if keep_cumulative_post_burn_in_data == True: - if permutationIndex == 0: - self.cumulative_post_burn_in_samples = self.post_burn_in_samples - self.cumulative_post_burn_in_log_priors_vec = self.post_burn_in_log_priors_vec - self.cumulative_post_burn_in_log_posteriors_un_normed_vec = self.post_burn_in_log_posteriors_un_normed_vec - else: #This is basically elseif permutationIndex > 0: - self.cumulative_post_burn_in_samples = np.vstack((self.cumulative_post_burn_in_samples, self.post_burn_in_samples)) - self.cumulative_post_burn_in_log_priors_vec = np.vstack((self.cumulative_post_burn_in_log_priors_vec, self.post_burn_in_log_priors_vec)) - self.cumulative_post_burn_in_log_posteriors_un_normed_vec = np.vstack((self.cumulative_post_burn_in_log_posteriors_un_normed_vec, self.post_burn_in_log_posteriors_un_normed_vec)) - if searchType == 'doOptimizeLogP': - optimizationOutput = self.doOptimizeLogP(**passThroughArgs) - self.map_logP = optimizationOutput[1] - self.map_parameter_set = optimizationOutput[0] - thisResult = [self.map_parameter_set, None, None, None, None, None, None] - if searchType == 'doOptimizeNegLogP': - optimizationOutput = self.doOptimizeNegLogP(**passThroughArgs) - self.map_logP = -1.0*optimizationOutput[1] #need to times by negative 1 to convert negLogP into P. - self.map_parameter_set = optimizationOutput[0] - thisResult = [self.map_parameter_set, None, None, None, None, None, None] - if searchType == 'doOptimizeSSR': - optimizationOutput = self.doOptimizeSSR(**passThroughArgs) - self.map_logP = -1.0*optimizationOutput[1] #The SSR is a minimizing objective function, so we multiply by -1 to make it analagous to a log_P. - self.map_parameter_set = optimizationOutput[0] - thisResult = [self.map_parameter_set, None, None, None, None, None, None] - if (type(self.UserInput.parameter_estimation_settings['multistart_checkPointFrequency']) != type(None)) or (verbose == True): - timeAtThisPermutation = time.time() - timeOfThisPermutation = timeAtThisPermutation - timeAtLastPermutation - averageTimePerPermutation = (timeAtThisPermutation - timeAtPermutationSearchStart)/(permutationIndex+1) - numRemainingPermutations = numPermutations - permutationIndex+1 - timeAtLastPermutation = timeAtThisPermutation #Updating. - if self.map_logP > self.highest_logP: #This is the grid point in space with the highest value found so far and will be kept. - bestResultSoFar = thisResult #for mcmc: [self.map_parameter_set, self.mu_AP_parameter_set, self.stdap_parameter_set, self.evidence, self.info_gain, self.post_burn_in_samples, self.post_burn_in_log_posteriors_un_normed_vec] - self.highest_logP = np.copy(self.map_logP) - highest_logP_parameter_set = np.copy(self.map_parameter_set) - highest_MAP_initial_point_index = permutationIndex - highest_MAP_initial_point_parameters = permutation - allPermutationsResults.append(thisResult) - if self.UserInput.parameter_estimation_settings['exportAllSimulatedOutputs'] == True: - if (searchType == 'doEnsembleSliceSampling') or (searchType=='doMetropolisHastings') or (searchType == 'doEnsembleModifiedMHSampling'): #we need to run the map again, outside of mcmc, to populate - self.map_logP = self.getLogP(self.map_parameter_set) #this has an implied return of self.lastSimulatedResponses. - #else no extra work needs to be done since the last simulation was the map. - self.permutations_unfiltered_map_simulated_outputs.append(np.array(self.lastSimulatedResponses).flatten()) - self.permutations_MAP_logP_and_parameters_values.append(np.hstack((self.map_logP, self.map_parameter_set))) - if verbose == True: - print("Permutation", permutation, "number", permutationIndex+1, "out of", numPermutations, "timeOfThisPermutation", timeOfThisPermutation) - print("Permutation", permutationIndex+1, "averageTimePerPermutation", "%.2f" % round(averageTimePerPermutation,2), "estimated time remaining", "%.2f" % round( numRemainingPermutations*averageTimePerPermutation,2), "s" ) - print("Permutation", permutationIndex+1, "current logP", self.map_logP, "highest logP", self.highest_logP, "highest logP Parameter Set", highest_logP_parameter_set) - elif type(self.UserInput.parameter_estimation_settings['multistart_checkPointFrequency']) != type(None): #If verbose off but checkpoint frequency is on. - if (permutationIndex ==0 or ((permutationIndex+1)/self.UserInput.parameter_estimation_settings['multistart_checkPointFrequency']).is_integer()): - print("Permutation", permutation, "number", permutationIndex+1, "out of", numPermutations, "timeOfThisPermutation", timeOfThisPermutation) - print("Permutation", permutationIndex+1, "averageTimePerPermutation", "%.2f" % round(averageTimePerPermutation,2), "estimated time remaining", "%.2f" % round( numRemainingPermutations*averageTimePerPermutation,2), "s" ) - print("Permutation", permutationIndex+1, "current logP", self.map_logP, "highest logP", self.highest_logP) - ####START BLOCK RELATED TO PARALLEL SAMPLING#### - if (self.UserInput.parameter_estimation_settings['multistart_parallel_sampling']) == True: #This is the parallel sampling mpi case. #Consider later adding self.UserInput.parameter_estimation_settings['permutation_parallel_sampling']) - #We are going to export all of the relevant statistics for each permutation. - self.exportPostPermutationStatistics(searchType = searchType) #this is needed for **each** permutation if parallel sampling is being done. - self.checkIfAllParallelSimulationsDone("permutation"+"_map_logP_") #This checks if we are on the final process and also sets the global variable for it accordingly. - if PEUQSE.parallel_processing.finalProcess == False: - return self.map_logP #This is sortof like a sys.exit(), we are just ending the PermutationSearch function here if we are not on the finalProcess. - if PEUQSE.parallel_processing.finalProcess == True: - self.UserInput.parameter_estimation_settings['multistart_parallel_sampling'] = False ##We are turning off the parallel sampling variable because the parallel sampling is over now. The export log will become export extra things if we keep this on for the next step. - self.consolidate_parallel_sampling_data(parallelizationType="permutation", mpi_cached_files_prefix='permutation') #this parallelizationType means "keep only the best, don't average" - - ####END BLOCK RELATED TO PARALLEL SAMPLING#### - ####Doing some statistics across the full permutation set. TODO: Consider merging this into exportPostPermutationStatistics and calling that same function again, which is what I think the mcmc parallel sampling does. But the filenames are different, so some care would be needed if that is going to be done.#### - #TODO: export the allPermutationsResults to file at end of search in a nicer format. - #set the initial guess back to the center of the grid. - self.UserInput.InputParameterInitialGuess = centerPoint - #populate the map etc. with those of the best result. - self.map_logP = self.highest_logP - self.map_parameter_set = highest_logP_parameter_set - if (searchType == 'doEnsembleSliceSampling') or (searchType == 'doMetropolisHastings') or (searchType == 'doEnsembleModifiedMHSampling'): - #For MCMC, we can now calculate the post_burn_in statistics for the best sampling from the full samplings done. We don't want to lump all together because that would not be unbiased. - #Note that "thisResult" and thus "bestResultSoFar" has the form: [self.map_parameter_set, self.mu_AP_parameter_set, self.stdap_parameter_set, self.evidence, self.info_gain, self.post_burn_in_samples, self.post_burn_in_log_posteriors_un_normed_vec] - self.map_parameter_set, self.mu_AP_parameter_set, self.stdap_parameter_set, self.evidence, self.info_gain, self.post_burn_in_samples, self.post_burn_in_log_posteriors_un_normed_vec = bestResultSoFar - if calculatePostBurnInStatistics == True: - #self.post_burn_in_samples = bestResultSoFar[5] #Setting the global variable will allow calculating the info gain and priors also. - #self.post_burn_in_log_posteriors_un_normed_vec = bestResultSoFar[6] - self.calculatePostBurnInStatistics(calculate_post_burn_in_log_priors_vec = True) - self.exportPostBurnInStatistics() - #One could call calculatePostBurnInStatistics() if one wanted the cumulative from all results. But we don't actually want that. - #Below should not be used. These commented out lines are biased towards the center of the grid. - #self.post_burn_in_samples = cumulative_post_burn_in_samples - #self.post_burn_in_log_priors_vec = cumulative_post_burn_in_log_priors_vec - #self.post_burn_in_log_posteriors_un_normed_vec = cumulative_post_burn_in_log_posteriors_un_normed_vec - #implied return bestResultSoFar # [self.map_parameter_set, self.mu_AP_parameter_set, self.stdap_parameter_set, self.evidence, self.info_gain, self.post_burn_in_samples, self.post_burn_in_log_posteriors_un_normed_vec] - if (searchType == 'getLogP') or (searchType == 'doOptimizeNegLogP') or (searchType == 'doOptimizeSSR') or (searchType == 'doOptimizeLogP'): - if (searchType == 'doOptimizeNegLogP'): - self.permutation_and_doOptimizeNegLogP = True #turning on this flag for case of permutation_and_doOptimize. This is needed so that a warning can be put in the mcmc_log. - if (searchType == 'doOptimizeSSR'): - self.permutation_and_doOptimizeSSR = True - if (searchType == 'doOptimizeLogP'): - self.permutation_and_doOptimizeLogP = True - #if it's getLogP gridsearch, we are going to convert it to samples if requested. - if permutationsToSamples == True: - self.permutations_MAP_logP_and_parameters_values = np.vstack( self.permutations_MAP_logP_and_parameters_values) #Note that vstack actually requires a tuple with multiple elements as an argument. So this list or array like structure is being converted to a tuple of many elements and then being stacked. - #now stack with earlier results for multistart_continueSampling if needed. - if multistart_continueSampling == True: - self.permutations_MAP_logP_and_parameters_values = np.vstack((self.last_permutations_MAP_logP_and_parameters_values,self.permutations_MAP_logP_and_parameters_values)) - self.listOfPermutations = np.vstack((self.last_listOfPermutations, self.listOfPermutations)) - highest_MAP_initial_point_index = "Not provided with continueSampling." #TODO: take self.map_parameter_set from after calculatePostBurnIn Statistics highest_MAP_initial_point_index and search for the right row in listOfPermutations. - #First set the multistart_permutationsToSamples_threshold_filter_coefficient. We will take 10**-(thisnumber) later. - if str(self.UserInput.parameter_estimation_settings['multistart_permutationsToSamples_threshold_filter_coefficient']).lower() == 'auto': - multistart_permutationsToSamples_threshold_filter_coefficient = 2.0 - else: - multistart_permutationsToSamples_threshold_filter_coefficient = self.UserInput.parameter_estimation_settings['multistart_permutationsToSamples_threshold_filter_coefficient'] - try: - logP_values_and_samples = convertPermutationsToSamples(self.permutations_MAP_logP_and_parameters_values, maxLogP=float(self.map_logP), relativeFilteringThreshold = 10**(-1*multistart_permutationsToSamples_threshold_filter_coefficient)) - self.post_burn_in_log_posteriors_un_normed_vec = logP_values_and_samples[:,0] - self.post_burn_in_log_posteriors_un_normed_vec = np.array(nestedObjectsFunctions.makeAtLeast_2dNested(self.post_burn_in_log_posteriors_un_normed_vec)).transpose() - self.post_burn_in_samples = logP_values_and_samples[:,1:] - #need to populate post_burn_in_log_priors_vec this with an object, otherwise calculatePostBurnInStatistics will try to calculate all the priors. - self.post_burn_in_log_priors_vec = None - #Below is needed to avoid causing an error in the calculatePostBurnInStatistics since we don't have a real priors vec. - self.UserInput.parameter_estimation_settings['mcmc_threshold_filter_samples'] = False - self.calculatePostBurnInStatistics() - # create discrete_chains_post_burn_in_samples - self.discrete_chains_post_burn_in_samples = np.expand_dims(self.post_burn_in_samples, axis=1) - if self.UserInput.parameter_estimation_settings['convergence_diagnostics']: #Run convergence diagnostics if UserInput defines it as True - self.getConvergenceDiagnostics(self.discrete_chains_post_burn_in_samples) - except: - print("Could not convertPermutationsToSamples. This usually means there were no finite probability points sampled.") - permutationsToSamples = False #changing to false to prevent errors during exporting. - - #implied return bestResultSoFar# [self.map_parameter_set, self.map_logP] - #This has to be below the later parts so that permutationsToSamples can occur first. - if exportLog == True: - pass #Later will do something with allPermutationsResults variable. It has one element for each result (that is, each permutation). - with open(self.UserInput.directories['logs_and_csvs'] + "multistart_log_file.txt", 'w') as out_file: - out_file.write("centerPoint: " + str(centerPoint) + "\n") - if self.permutation_and_doOptimizeSSR == False:# In the normal case, we are not doing SSR. - out_file.write("highest_MAP_logP: " + str(self.map_logP) + "\n") - out_file.write("highest_MAP_logP_parameter_set: " + str(bestResultSoFar[0])+ "\n") - out_file.write("highest_MAP_initial_point_index: " + str(highest_MAP_initial_point_index)+ "\n") - out_file.write("highest_MAP_initial_point_parameters: " + str( highest_MAP_initial_point_parameters)+ "\n") - if (searchType == 'doEnsembleSliceSampling') or (searchType == 'doMetropolisHastings') or (searchType == 'doEnsembleModifiedMHSampling') or (permutationsToSamples == True): - if (searchType == 'doEnsembleSliceSampling') or (searchType == 'doMetropolisHastings') or (searchType == 'doEnsembleModifiedMHSampling'): - caveat = ' (for the above initial point) ' - elif permutationsToSamples == True: - caveat = '' - out_file.write("self.mu_AP_parameter_set : " + caveat + str( bestResultSoFar[1])+ "\n") - out_file.write("self.stdap_parameter_set : " + caveat + str( bestResultSoFar[2])+ "\n") - if (self.permutation_and_doOptimizeNegLogP == True) or (self.permutation_and_doOptimizeLogP == True): - out_file.write("\n WARNING: It appears this run used a doOptimize with multi-start. In this case, the MAP_logP and map_parameter_set are the optimum from the run. However, the mu_AP_parameter_set and stdap_parameter_set are not meaningful, since this was not an even weighted exploration of the posterior. \n") - if self.permutation_and_doOptimizeSSR == True: #special case where we are doing SSR. - out_file.write("Below, negSSR means the SSR times -1. This is the optimum from the run. \n") - out_file.write("highest_negSSR: " + str(self.map_logP) + "\n") - out_file.write("highest_negSSR_parameter_set: " + str(self.map_parameter_set)+ "\n") - out_file.write("highest_negSSR_initial_point_index: " + str(highest_MAP_initial_point_index)+ "\n") - out_file.write("highest_negSSR_initial_point_parameters: " + str( highest_MAP_initial_point_parameters)+ "\n") - caveat = ' (actually just an analogue) ' - out_file.write("self.mu_AP_parameter_set : " + caveat + str( self.mu_AP_parameter_set)+ "\n") - out_file.write("self.stdap_parameter_set : " + caveat + str( self.stdap_parameter_set)+ "\n") - if self.permutation_and_doOptimizeSSR == True: - out_file.write("\n WARNING: It appears this run used a doOptimize with multi-start. In this case, the highest_negSSR and highest_negSSR_parameter_set are at the optimum from the run. However, the mu_AP_parameter_set and stdap_parameter_set are not meaningful, since this was not an even weighted exploration of the posterior. However, the values have been reported that are analogous if the negSSR is treated as a logP, and the posterior graphs have been made accordingly. \n") - - - #do some exporting etc. This is at the end to avoid exporting every single time if parallelization is used. - np.savetxt(self.UserInput.directories['logs_and_csvs']+'multistart_initial_points_parameters_values'+'.csv', self.listOfPermutations, delimiter=",") - np.savetxt(self.UserInput.directories['logs_and_csvs']+'multistart_MAP_logP_and_parameters_values.csv',self.permutations_MAP_logP_and_parameters_values, delimiter=",") - pickleAnObject(self.permutations_MAP_logP_and_parameters_values, self.UserInput.directories['pickles']+file_name_prefix+'multistart_MAP_logP_and_parameters_values'+file_name_suffix) - if self.UserInput.parameter_estimation_settings['exportAllSimulatedOutputs'] == True: - np.savetxt(self.UserInput.directories['logs_and_csvs']+'multistart_unfiltered_map_simulated_outputs'+'.csv', self.permutations_unfiltered_map_simulated_outputs, delimiter=",") - print("Final map parameter results from PermutationSearch:", self.map_parameter_set, " \nFinal map logP:", self.map_logP, "more details available in multistart_log_file.txt") - return bestResultSoFar# [self.map_parameter_set, self.map_logP, etc.] - - #@CiteSoft.after_call_compile_consolidated_log() #This is from the CiteSoft module. - def doMultiStart(self, searchType='UserChoice', numStartPoints = 'UserChoice', relativeInitialDistributionSpread='UserChoice', exportLog = 'UserChoice', initialPointsDistributionType='UserChoice', passThroughArgs = 'UserChoice', calculatePostBurnInStatistics='UserChoice', keep_cumulative_post_burn_in_data = 'UserChoice', walkerInitialDistribution='UserChoice', centerPoint = None, gridsearchSamplingInterval = 'UserChoice', gridsearchSamplingRadii = 'UserChoice'): - #See doListOfPermutationsSearch for possible values of searchType variable - #This function is basically a wrapper that creates a list of initial points and then runs a 'check each permutation' search on that list. - #We set many of the arguments to have blank or zero values so that if they are not provided, the values will be taken from the UserInput choices. - if str(searchType) == 'UserChoice': - searchType = self.UserInput.parameter_estimation_settings['multistart_searchType'] - if str(initialPointsDistributionType) == 'UserChoice': - initialPointsDistributionType = self.UserInput.parameter_estimation_settings['multistart_initialPointsDistributionType'] - if str(numStartPoints) =='UserChoice': - numStartPoints = self.UserInput.parameter_estimation_settings['multistart_numStartPoints'] - if str(relativeInitialDistributionSpread) == 'UserChoice': - relativeInitialDistributionSpread = self.UserInput.parameter_estimation_settings['multistart_relativeInitialDistributionSpread'] - if str(gridsearchSamplingInterval) == 'UserChoice': - gridsearchSamplingInterval = self.UserInput.parameter_estimation_settings['multistart_gridsearchSamplingInterval'] - if str(gridsearchSamplingRadii) == 'UserChoice': - gridsearchSamplingRadii = self.UserInput.parameter_estimation_settings['multistart_gridsearchSamplingRadii'] - if str(exportLog) == 'UserChoice': - exportLog = self.UserInput.parameter_estimation_settings['multistart_exportLog'] - if str(passThroughArgs) == 'UserChoice': - passThroughArgs = self.UserInput.parameter_estimation_settings['multistart_passThroughArgs'] - if str(keep_cumulative_post_burn_in_data) == 'UserChoice': - keep_cumulative_post_burn_in_data = self.UserInput.parameter_estimation_settings['multistart_keep_cumulative_post_burn_in_data'] - if str(calculatePostBurnInStatistics) == 'UserChoice': - calculatePostBurnInStatistics = self.UserInput.parameter_estimation_settings['multistart_calculatePostBurnInStatistics'] - if numStartPoints == 0: #if it's still zero, we need to make it the default which is 3 times the number of active parameters. - numStartPoints = len(self.UserInput.InputParameterInitialGuess)*3 - if relativeInitialDistributionSpread == 0: #if it's still zero, we need to make it the default which is 0.866 - relativeInitialDistributionSpread = 0.866 #This choice is to be helpful for uniform distribution cases, as described in the user input. - if searchType == 'doGetLogP' or searchType == 'doSinglePoint': #Fixing a common input mistake. - searchType = 'getLogP' - #make the initial points list by mostly passing through arguments. - multiStartInitialPointsList = self.generateInitialPoints(numStartPoints=numStartPoints, relativeInitialDistributionSpread=relativeInitialDistributionSpread, initialPointsDistributionType=initialPointsDistributionType, centerPoint = centerPoint, gridsearchSamplingInterval = gridsearchSamplingInterval, gridsearchSamplingRadii = gridsearchSamplingRadii) - - #we normally only turn on permutationsToSamples if grid or uniform and if getLogP or doOptimizeNegLogP. - permutationsToSamples = False#initialize with default - if self.UserInput.parameter_estimation_settings['multistart_permutationsToSamples'] == True: - if (initialPointsDistributionType == 'grid') or (initialPointsDistributionType == 'uniform') or (initialPointsDistributionType == 'sobol') or (initialPointsDistributionType == 'astroidal') or (initialPointsDistributionType == 'shell'): - if (searchType == 'getLogP') or (searchType=='doOptimizeNegLogP') or (searchType=='doOptimizeLogP') or (searchType=='doOptimizeSSR'): - permutationsToSamples = True - - #Look for the best result (highest map_logP) from among these permutations. Maybe later should add optional argument to allow searching for highest mu_AP to find HPD. - bestResultSoFar = self.doListOfPermutationsSearch(listOfPermutations=multiStartInitialPointsList, searchType=searchType, exportLog=exportLog, walkerInitialDistribution=walkerInitialDistribution, passThroughArgs=passThroughArgs, calculatePostBurnInStatistics=calculatePostBurnInStatistics, keep_cumulative_post_burn_in_data=keep_cumulative_post_burn_in_data, centerPoint = centerPoint, permutationsToSamples=permutationsToSamples) - return bestResultSoFar - - #@CiteSoft.after_call_compile_consolidated_log() #This is from the CiteSoft module. - def doGridSearch(self, searchType='getLogP', exportLog = True, gridSamplingAbsoluteIntervalSize = [], gridSamplingNumOfIntervals = [], passThroughArgs = {}, calculatePostBurnInStatistics=True, keep_cumulative_post_burn_in_data = False, walkerInitialDistribution='UserChoice'): - print("Warning: You have called doGridSearch. This function is deprecated and is only retained for old examples. Please use doMultiStart with multistart_initialPointsDistributionType = 'grid' ") - # gridSamplingNumOfIntervals is the number of variations to check in units of variance for each parameter. Can be 0 if you don't want to vary a particular parameter in the grid search. - #calculatePostBurnInStatistics will store all the individual runs in memory and will then provide the samples of the best one. - #TODO: the upper part of the gridsearch may not be compatibile with reduced parameter space. Needs to be checked. - gridCenter = self.UserInput.InputParameterInitialGuess*1.0 #This may be a reduced parameter space. - gridPermutations, numPermutations = self.getGridPermutations(gridCenter, gridSamplingAbsoluteIntervalSize, gridSamplingNumOfIntervals) - bestResultSoFar = self.doListOfPermutationsSearch(gridPermutations, numPermutations = numPermutations, searchType=searchType, exportLog = exportLog, walkerInitialDistribution=walkerInitialDistribution, passThroughArgs=passThroughArgs, calculatePostBurnInStatistics=calculatePostBurnInStatistics, keep_cumulative_post_burn_in_data = keep_cumulative_post_burn_in_data, centerPoint = gridCenter) - return bestResultSoFar - - def checkIfAllParallelSimulationsDone(self, fileNameBase, fileNamePrefix='', fileNameSuffix=''): - import PEUQSE.parallel_processing - #PEUQSE.parallel_processing.currentProcessorNumber - numSimulations = PEUQSE.parallel_processing.numSimulations - import os - os.chdir(self.UserInput.directories['pickles']+"mpi_cached_files") - #now make a list of what we expect. - simulationsKey = np.ones(numSimulations) - working_dir=os.getcwd() - filesInDirectory=os.listdir(working_dir) - for simulationIndex in range(0,numSimulations): #For each simulation, we check if it's there and set the simulation key to 0 if it is done. - simulationNumberString = str(simulationIndex+1) - for name in filesInDirectory: - if fileNamePrefix+fileNameBase+simulationNumberString+fileNameSuffix+".pkl" in name: - simulationsKey[simulationIndex] = 0 - filesInDirectory.remove(name) #Removing so it won't be checked for again, to speed up next search. - if self.UserInput.directories['pickles'] == "./": - os.chdir("..") #change directory back regardless. - else: - os.chdir("../..") #change directory back regardless. - if np.sum(simulationsKey) == 0: - PEUQSE.parallel_processing.finalProcess = True - return True - else: #if simulationsKey is not zero, then we return False b/c not yet finsihed. - PEUQSE.parallel_processing.finalProcess = False - return False - - def consolidate_parallel_doe_data(self, parallelizationType='conditions'): - import PEUQSE.parallel_processing - #PEUQSE.parallel_processing.currentProcessorNumber - numSimulations = PEUQSE.parallel_processing.numSimulations - parModulationNumber = int(self.parModulationPermutationIndex + 1) - #We will check **only** for this parModulationNumber. That way, it this processor is the last to finish this parModulation, it will do the infoGainMatrix stacking. - if self.checkIfAllParallelSimulationsDone("conditionsPermutationAndInfoGain_mod"+str(parModulationNumber)+"_cond") == True: - if parallelizationType.lower() == 'conditions': - import os - os.chdir(self.UserInput.directories['pickles'] + "mpi_cached_files") - self.info_gain_matrix = [] #Initializing this as a blank list, it will be made into an array after the loop. - for simulationIndex in range(0,numSimulations): #For each simulation, we need to grab the results. - simulationNumberString = str(simulationIndex+1) - #Getting the data out. - current_conditionsPermutationAndInfoGain_filename = "conditionsPermutationAndInfoGain_mod"+str(parModulationNumber)+"_cond"+simulationNumberString - current_conditionsPermutationAndInfoGain_data = unpickleAnObject(current_conditionsPermutationAndInfoGain_filename) - #accumulating. - self.info_gain_matrix.append(current_conditionsPermutationAndInfoGain_data) - #Now we'll make this info_gain_matrix into an array and pickle it. It will be an implied return. - self.info_gain_matrix = np.array(self.info_gain_matrix) - current_parModulationInfoGainMatrix_filename = "parModulationInfoGainMatrix_mod"+str(parModulationNumber) - pickleAnObject(self.info_gain_matrix,current_parModulationInfoGainMatrix_filename) - #Change back to the regular directory since we are done. - if self.UserInput.directories['pickles'] == "./": - os.chdir("..") - else: - os.chdir("../..") - return True #so we know we're done. - else: - return False #this means we weren't done. - - def consolidate_parallel_doe_info_gain_matrices(self): - import PEUQSE.parallel_processing - numSimulations = PEUQSE.parallel_processing.numSimulations - import os - os.chdir(self.UserInput.directories['pickles'] + "mpi_cached_files") - info_gains_matrices_list = [] #Initializing this as a blank list, it will be made into an array after the loop. - for parModulationIndex in range(0,self.numParModulationPermutations): #For each simulation, we need to grab the results. - parModulationNumberString = str(parModulationIndex+1) - #Getting the data out. - current_parModulationInfoGainMatrix_filename = "parModulationInfoGainMatrix_mod"+parModulationNumberString - current_parModulationInfoGainMatrix_data = unpickleAnObject(current_parModulationInfoGainMatrix_filename) - #accumulating. - info_gains_matrices_list.append(current_parModulationInfoGainMatrix_data) - #nothing more needs to be done except making it into an array: self.info_gains_matrices_array is an implied return. - self.info_gains_matrices_array=np.array(info_gains_matrices_list) - if self.UserInput.directories['pickles'] == "./": - os.chdir("..") - else: - os.chdir("../..") - - - def consolidate_parallel_sampling_data(self, parallelizationType='equal', mpi_cached_files_prefix=''): - #parallelizationType='equal' means everything will get averaged together. parallelizationType='permutation' will be treated differently, keeps only the best. - #mpi_cached_files_prefix can be 'mcmc' or 'permutation' or '' and looks for a prefix before 'map_logP_6.pkl' where '6' would be the processor rank. - import PEUQSE.parallel_processing - #PEUQSE.parallel_processing.currentProcessorNumber - numSimulations = PEUQSE.parallel_processing.numSimulations - if self.checkIfAllParallelSimulationsDone(mpi_cached_files_prefix+"_map_logP_") == True: #FIXME: Need to make parallelization work even for non-mcmc - if parallelizationType.lower() == 'permutation': - searchType = self.permutation_searchType - import os #All of the below happens in the pickles directory - os.chdir(self.UserInput.directories['pickles']+"mpi_cached_files") - self.listOfPermutations = [] #just initializing. - self.permutations_MAP_logP_and_parameters_values = [] #just initializing. - for simulationIndex in range(0,numSimulations): #For each simulation, we need to grab the results. - simulationNumberString = str(simulationIndex+1) - #Get the data out. - - current_post_map_logP_filename = "permutation_map_logP_"+simulationNumberString - current_post_map_logP_data = unpickleAnObject(current_post_map_logP_filename) - self.map_logP = current_post_map_logP_data - - current_post_initial_parameters_filename = "permutation_initial_point_parameters_"+simulationNumberString - current_post_initial_parameters_data = unpickleAnObject(current_post_initial_parameters_filename) - self.UserInput.InputParameterInitialGuess = current_post_initial_parameters_data - - current_post_map_parameter_set_filename = "permutation_map_parameter_set_"+simulationNumberString - current_post_map_parameter_set_data = unpickleAnObject(current_post_map_parameter_set_filename) - self.map_parameter_set = current_post_map_parameter_set_data - - if (searchType == 'doEnsembleSliceSampling') or (searchType == 'doMetropolisHastings') or (searchType == 'doEnsembleModifiedMHSampling'): - current_post_burn_in_statistics_filename = "permutation_post_burn_in_statistics_"+simulationNumberString - current_post_burn_in_statistics_data = unpickleAnObject(current_post_burn_in_statistics_filename) - [self.map_parameter_set, self.mu_AP_parameter_set, self.stdap_parameter_set, self.evidence, self.info_gain, self.post_burn_in_samples, self.post_burn_in_log_posteriors_un_normed_vec] = current_post_burn_in_statistics_data - - #Still accumulating. - self.permutations_MAP_logP_and_parameters_values.append(np.hstack((self.map_logP, self.map_parameter_set))) - self.listOfPermutations.append(current_post_initial_parameters_data) - if simulationIndex == 0: #This is the first data set. - self.highest_logP = self.map_logP - self.highest_logP_parameter_set = self.map_parameter_set - if (searchType == 'doEnsembleSliceSampling') or (searchType == 'doMetropolisHastings') or (searchType == 'doEnsembleModifiedMHSampling'): - self.highest_logP_post_burn_in_samples = self.post_burn_in_samples - self.highest_logP_post_burn_in_log_priors_vec = self.post_burn_in_log_priors_vec - self.highest_logP_post_burn_in_log_posteriors_un_normed_vec = self.post_burn_in_log_posteriors_un_normed_vec - else: #This is basically elseif permutationIndex > 0: - if self.highest_logP < self.map_logP: - self.highest_logP = self.map_logP - self.highest_logP_parameter_set = self.map_parameter_set - if (searchType == 'doEnsembleSliceSampling') or (searchType == 'doMetropolisHastings') or (searchType == 'doEnsembleModifiedMHSampling'): - self.highest_logP_post_burn_in_samples = self.post_burn_in_samples - self.highest_logP_post_burn_in_log_priors_vec = self.post_burn_in_log_priors_vec - self.highest_logP_post_burn_in_log_posteriors_un_normed_vec = self.post_burn_in_log_posteriors_un_normed_vec - #After the loop is done, we want to keep the accumulated values and then do the regular final calculations. - if (searchType == 'doEnsembleSliceSampling') or (searchType == 'doMetropolisHastings') or (searchType == 'doEnsembleModifiedMHSampling'): #FIXME: These logic needs to be checked to make sure it is correct. - self.map_logP = max(self.post_burn_in_log_posteriors_un_normed_vec) - self.map_index = list(self.post_burn_in_log_posteriors_un_normed_vec).index(self.map_logP) #This does not have to be a unique answer, just one of them places which gives map_logP. - self.map_parameter_set = self.post_burn_in_samples[self.map_index] #This is the point with the highest probability in the - self.map_logP = self.highest_logP - self.map_parameter_set = self.highest_logP_parameter_set - if (searchType == 'doEnsembleSliceSampling') or (searchType == 'doMetropolisHastings') or (searchType == 'doEnsembleModifiedMHSampling'): - self.post_burn_in_samples = self.highest_logP_post_burn_in_samples - self.post_burn_in_log_priors_vec = self.highest_logP_post_burn_in_log_priors_vec - self.post_burn_in_log_posteriors_un_normed_vec = self.highest_logP_post_burn_in_log_posteriors_un_normed_vec - #Now go back to the earlier directory since the consolidation is done. - if self.UserInput.directories['pickles'] == "./": - os.chdir("..") - else: - os.chdir("../..") - if (searchType == 'doEnsembleSliceSampling') or (searchType == 'doMetropolisHastings') or (searchType == 'doEnsembleModifiedMHSampling'): - self.UserInput.request_mpi = False # we need to turn this off, because otherwise it will interfere with our attempts to calculate the post_burn_in statistics. - self.calculatePostBurnInStatistics(calculate_post_burn_in_log_priors_vec = True) #The argument is provided because otherwise there can be some bad priors if ESS was used. - self.exportPostBurnInStatistics() - self.UserInput.request_mpi = True #Set this back to true so that consolidating plots etc. doesn't get messed up. - elif parallelizationType.lower() == 'equal': - import os #All of the below happens in the pickles directory - os.chdir(self.UserInput.directories['pickles']+"./mpi_cached_files") - #These pointers are initialized before the below loop. Mostly in case mpi never actually happened since then after the loop these would be empty. - self.cumulative_post_burn_in_samples = self.post_burn_in_samples - self.cumulative_post_burn_in_log_priors_vec = self.post_burn_in_log_priors_vec - self.cumulative_post_burn_in_log_posteriors_un_normed_vec = self.post_burn_in_log_posteriors_un_normed_vec - for simulationIndex in range(0,numSimulations): #For each simulation, we need to grab the results. - simulationNumberString = str(simulationIndex+1) - #Get the dat aout. - current_post_burn_in_statistics_filename = "mcmc_post_burn_in_statistics_"+simulationNumberString - current_post_burn_in_statistics_data = unpickleAnObject(current_post_burn_in_statistics_filename) - #Populate the class variables. - [self.map_parameter_set, self.mu_AP_parameter_set, self.stdap_parameter_set, self.evidence, self.info_gain, self.post_burn_in_samples, self.post_burn_in_log_posteriors_un_normed_vec] = current_post_burn_in_statistics_data - #Still accumulating. - if simulationIndex == 0: #This is the first data set. - self.cumulative_post_burn_in_samples = self.post_burn_in_samples - self.cumulative_post_burn_in_log_priors_vec = self.post_burn_in_log_priors_vec - self.cumulative_post_burn_in_log_posteriors_un_normed_vec = self.post_burn_in_log_posteriors_un_normed_vec - else: #This is basically elseif permutationIndex > 0: - self.cumulative_post_burn_in_samples = np.vstack((self.cumulative_post_burn_in_samples, self.post_burn_in_samples)) - self.cumulative_post_burn_in_log_priors_vec = np.vstack((self.cumulative_post_burn_in_log_priors_vec, self.post_burn_in_log_priors_vec)) - self.cumulative_post_burn_in_log_posteriors_un_normed_vec = np.vstack((self.cumulative_post_burn_in_log_posteriors_un_normed_vec, self.post_burn_in_log_posteriors_un_normed_vec)) - #After the loop is done, we want to keep the accumulated values and then do the regular final calculations. - self.post_burn_in_samples = self.cumulative_post_burn_in_samples - self.post_burn_in_log_priors_vec = self.cumulative_post_burn_in_log_priors_vec - self.post_burn_in_log_posteriors_un_normed_vec = self.cumulative_post_burn_in_log_posteriors_un_normed_vec - self.UserInput.request_mpi = False # we need to turn this off, because otherwise it will interfere with our attempts to calculate the post_burn_in statistics. - self.UserInput.parameter_estimation_settings['mcmc_parallel_sampling'] = False # we need to turn this off, because otherwise it will interfere with our attempts to calculate the post_burn_in statistics. - if hasattr(self, "during_burn_in_samples"): #need to remove this so it doesn't get exported for the parallel case, since otherwise will export most recent one which is misleading. - delattr(self, "during_burn_in_samples") - if self.UserInput.directories['pickles'] == "./": - os.chdir("..") - else: - os.chdir("../..") - self.calculatePostBurnInStatistics(calculate_post_burn_in_log_priors_vec = True) #The argument is provided because otherwise there can be some bad priors if ESS was used. - self.exportPostBurnInStatistics() - self.UserInput.request_mpi = True #Set this back to true so that consolidating plots etc. doesn't get messed up. - - - - - - #The below function is a helper function that is used during doeInfoGainMatrix. However, it can certainly be used for other purposes. - def populateResponsesWithSyntheticData(self, parModulationPermutation): - #For each parameter Modulation Combination we are going to obtain a matrix of info_gains that is based on a grid of the independent_variables. - #First we need to make some synthetic data using parModulationPermutation for the discreteParameterVector - discreteParameterVector = parModulationPermutation - simulationFunction = self.UserInput.simulationFunction #Do NOT use self.UserInput.model['simulateByInputParametersOnlyFunction'] because that won't work with reduced parameter space requests. - simulationOutputProcessingFunction = self.UserInput.simulationOutputProcessingFunction #Do NOT use self.UserInput.model['simulationOutputProcessingFunction'] because that won't work with reduced parameter space requests. - simulationOutput =simulationFunction(discreteParameterVector) - if type(simulationOutput)==type(None): - return float('-inf'), None #This is intended for the case that the simulation fails. User can return "None" for the simulation output. Perhaps should be made better in future. - if np.array(simulationOutput).any()==float('nan'): - return float('-inf'), None #This is intended for the case that the simulation fails without returning "None". - if type(simulationOutputProcessingFunction) == type(None): - simulatedResponses = simulationOutput #Is this the log of the rate? If so, Why? - if type(simulationOutputProcessingFunction) != type(None): - simulatedResponses = simulationOutputProcessingFunction(simulationOutput) - simulatedResponses = nestedObjectsFunctions.makeAtLeast_2dNested(simulatedResponses) - #need to check if there are any 'responses_simulation_uncertainties'. #TODO: This isn't really implemented yet. - if type(self.UserInput.responses_simulation_uncertainties) == type(None): #if it's a None type, we keep it as a None type - responses_simulation_uncertainties = None - else: #Else we get it based on the the discreteParameterVector - responses_simulation_uncertainties = self.get_responses_simulation_uncertainties(discreteParameterVector) - - synthetic_data = simulatedResponses - synthetic_data_uncertainties = responses_simulation_uncertainties - #We need to populate the "observed" responses in UserInput with the synthetic data. - self.UserInput.responses['responses_observed'] = simulatedResponses - self.UserInput.responses['responses_observed_uncertainties'] = responses_simulation_uncertainties - #Now need to do something unusual: Need to call the __init__ function again so that the arrays get reshaped as needed etc. - self.__init__(self.UserInput) - - #This function requires first populating the doe_settings dictionary in UserInput in order to know which conditions to explore. - software_name = "PEUQSE Bayesian Design of Experiments" - software_version = "1.0.2" - software_unique_id = "https://doi.org/10.1002/cctc.202000976" - software_kwargs = {"version": software_version, "author": ["Eric A. Walker", "Kishore Ravisankar", "Aditya Savara"], "doi": "https://doi.org/10.1002/cctc.202000976", "cite": "Eric Alan Walker, Kishore Ravisankar, Aditya Savara. PEUQSE Intro 2: Harnessing Uncertainties from Data Sets, Bayesian Design of Experiments in Chemical Kinetics. ChemCatChem. Accepted. doi:10.1002/cctc.202000976"} - #@CiteSoft.after_call_compile_consolidated_log() #This is from the CiteSoft module. - @CiteSoft.function_call_cite(unique_id=software_unique_id, software_name=software_name, **software_kwargs) - def doeGetInfoGainMatrix(self, parameterPermutation, searchType='doMetropolisHastings'):#Note: There is an implied argument of info_gains_matrices_array_format being 'xyz' or 'meshgrid' - #At present, we *must* provide a parameterPermutation because right now the only way to get an InfoGainMatrix is with synthetic data assuming a particular parameterPermutation as the "real" or "actual" parameterPermutation. - doe_settings = self.UserInput.doe_settings - self.middle_of_doe_flag = True #This is a work around that is needed because right now the synthetic data creation has an __init__ call which is going to try to modify the independent variables back to their original values if we don't do this. - self.UserInput.parameter_estimation_settings['mcmc_continueSampling'] = False #As of Oct 2020, mcmc_continueSampling is not compatible with design of experiments (doe) feature. - self.info_gain_matrix = [] #Right now, if using KL_divergence, each item in here is a single array. It is a sum across all parameters. - if self.UserInput.doe_settings['info_gains_matrices_multiple_parameters'] == 'each': - info_gain_matrices_each_parameter = [] #make a matrix ready to copy info_gain_matrix. - #need to make a list of lists (or similar) to fill it with the individual matrices necessary. - numParameters = len(self.UserInput.InputParametersPriorValuesUncertainties) - for parameterIndex in range(0,numParameters):#looping across number of parameters... - info_gain_matrices_each_parameter.append([]) #These are empty lists create to indices and initialize each parameter's info_gain_matrix. They will be appended to later. - self.info_gain_matrices_each_parameter = info_gain_matrices_each_parameter #Need to initialize this since it's nested so can't be initialized in a loop later. - if self.UserInput.doe_settings['info_gains_matrices_array_format'] == 'xyz': - self.info_gains_matrices_array_format = 'xyz' - #For the IndependentVariables the grid info must be defined ahead of time. On the fly conditions grid means it's generated again fresh for each parameter combination. (We are doing it this way out of convenience during the first programming of this feature). - if doe_settings['on_the_fly_conditions_grids'] == True: - conditionsGridPermutations, numPermutations = self.getGridPermutations(doe_settings['independent_variable_grid_center'], doe_settings['independent_variable_grid_interval_size'], doe_settings['independent_variable_grid_num_intervals']) - #Here is the loop across conditions. - for conditionsPermutationIndex,conditionsPermutation in enumerate(conditionsGridPermutations): - #####Begin PEUQSE Parallel Processing During Loop Block#### - if (self.UserInput.doe_settings['parallel_conditions_exploration'])== True: - #We will only execute the sampling the permutationIndex matches the processor rank. - #Additionally, if the rank is 0 and the simulation got here, it will be assumed the person is running this just to find the number of Permutations, so that will be spit out and the simulation ended. - import PEUQSE.parallel_processing - if PEUQSE.parallel_processing.currentProcessorNumber == 0: - print("For the user input settings provided, the number of Permutations+1 will be", numPermutations+1, ". Please use mpiexec or mpirun with this number for N. If you are not expecting to see this message, change your UserInput choices. You have chosen parallel processing for gridsearch and have run PEUQSE without mpi, which is a procedure to retrieve the number of processor ranks to use for parallelized gridsearch. A typical syntax now would be: mpiexec -n ", numPermutations+1, " python runfile_for_your_analysis.py" ) - sys.exit() - elif PEUQSE.parallel_processing.currentProcessorNumber != conditionsPermutationIndex+1: - continue #This means the permutation index does not match the processor rank so nothing should be executed. - #elif PEUQSE.parallel_processing.currentProcessorNumber == permutationIndex+1: - # pass #This is the "normal" case and is implied, so is commented out. - #####End PEUQSE Parallel Processing During Loop Block#### - #It is absolutely critical that we *do not* use syntax like self.UserInput.responses['independent_variables_values'] = xxxx - #Because that would move where the pointer is going to. We need to instead populate the individual values in the simulation module's namespace. - #This population Must occur here. It has to be after the indpendent variables have changed, before synthetic data is made, and before the MCMC is performed. - self.UserInput.model['populateIndependentVariablesFunction'](conditionsPermutation) - self.populateResponsesWithSyntheticData(parameterPermutation) - if searchType=='doMetropolisHastings': - [map_parameter_set, muap_parameter_set, stdap_parameter_set, evidence, info_gain, samples, logP] = self.doMetropolisHastings() - if searchType=='doEnsembleSliceSampling': - [map_parameter_set, muap_parameter_set, stdap_parameter_set, evidence, info_gain, samples, logP] = self.doEnsembleSliceSampling() - if searchType == 'doEnsembleModifiedMHSampling': - [map_parameter_set, muap_parameter_set, stdap_parameter_set, evidence, info_gain, samples, logP] = self.doEnsembleModifiedMHSampling() - conditionsPermutation = np.array(conditionsPermutation) #we're going to make this an array before adding to the info_gain matrix. - conditionsPermutationAndInfoGain = np.hstack((conditionsPermutation, info_gain)) - self.info_gain_matrix.append(conditionsPermutationAndInfoGain) - if (self.UserInput.doe_settings['parallel_conditions_exploration'])== True: - self.exportSingleConditionInfoGainMatrix(self.parameterPermutationNumber, conditionsPermutationAndInfoGain, conditionsPermutationIndex) - if self.UserInput.doe_settings['info_gains_matrices_multiple_parameters'] == 'each': #copy the above lines for the sum. - for parameterIndex in range(0,numParameters):#looping across number of parameters... - conditionsPermutationAndInfoGain = np.hstack((conditionsPermutation, np.array(self.info_gain_each_parameter[parameterIndex]))) #Need to pull the info gain matrix from the nested objected named info_gain_each_parameter - #Below mimics the line above which reads self.info_gain_matrix.append(conditionsPermutationAndInfoGain) - info_gain_matrices_each_parameter[parameterIndex].append(conditionsPermutationAndInfoGain) - self.info_gain_matrix = np.array(self.info_gain_matrix) #this is an implied return in addition to the real return. - if self.UserInput.doe_settings['parallel_conditions_exploration'] == True: #We will overwrite self.info_gain_matrix with a consolidated one if needed. - self.consolidate_parallel_doe_data(parallelizationType='conditions') - if self.UserInput.doe_settings['info_gains_matrices_multiple_parameters'] == 'each': #copy the above line for the sum. - for parameterIndex in range(0,numParameters):#looping across number of parameters... - self.info_gain_matrices_each_parameter[parameterIndex]= np.array(info_gain_matrices_each_parameter[parameterIndex]) - self.middle_of_doe_flag = False #Set this back to false once info gain matrix is ready. - return np.array(self.info_gain_matrix) - if self.UserInput.doe_settings['info_gains_matrices_array_format'] == 'meshgrid': - self.info_gains_matrices_array_format = 'meshgrid' - if len(doe_settings['independent_variable_grid_center']) !=2: - print("CURRENTLY THE INFOGAIN MESHGRID OPTION IS ONLY SUPPORTED FOR TWO INDEPENDENT VARIABLES. Use doe_settings['independent_variable_grid_center'] = 'xyz' and run again.") - sys.exit() - #STEP 1 is just to append each info_gain matrix to info_gain_matrix, and step 2 is - #For loop to generate info_gains_matrix. - #For the IndependentVariables the grid info must be defined ahead of time. On the fly conditions grid means it's generated again fresh for each parameter combination. (We are doing it this way out of convenience during the first programming of this feature). - if doe_settings['on_the_fly_conditions_grids'] == True: - independentVariable1CentralValue = doe_settings['independent_variable_grid_center'][0] - independentVariable2CentralValue = doe_settings['independent_variable_grid_center'][1] - independentVariable1UpperValue = independentVariable1CentralValue + doe_settings['independent_variable_grid_interval_size'][0]*doe_settings['independent_variable_grid_num_intervals'][0] - independentVariable1LowerValue = independentVariable1CentralValue - doe_settings['independent_variable_grid_interval_size'][0]*doe_settings['independent_variable_grid_num_intervals'][0] - independentVariable2UpperValue = independentVariable2CentralValue + doe_settings['independent_variable_grid_interval_size'][1]*doe_settings['independent_variable_grid_num_intervals'][1] - independentVariable2LowerValue = independentVariable2CentralValue - doe_settings['independent_variable_grid_interval_size'][1]*doe_settings['independent_variable_grid_num_intervals'][1] - independentVariable1ValuesArray = np.linspace(independentVariable1LowerValue,independentVariable1UpperValue,doe_settings['independent_variable_grid_num_intervals'][0]*2+1) - independentVariable2ValuesArray = np.linspace(independentVariable2LowerValue,independentVariable2UpperValue,doe_settings['independent_variable_grid_num_intervals'][1]*2+1) - self.meshGrid_independentVariable1ValuesArray = independentVariable1ValuesArray #This is sortof an implied return. - self.meshGrid_independentVariable2ValuesArray = independentVariable2ValuesArray #This is sortof an implied return. - #Here is the loop across conditions. - doSimulation = True #This is a temporary (short-lived) variable being made for parallel processing purposes. - conditionsPermutationIndex = 0 - #We will not be using the function "self.getGridPermutations" for the loops because the meshgrid needs a different loop format. - for indValue2 in independentVariable2ValuesArray: #We know from experience that the outer loop should be over the YY variable. - for indValue1 in independentVariable1ValuesArray: #We know from experience that the inner loop should be over the XX variable. - #It is absolutely critical that we *do not* use syntax like self.UserInput.responses['independent_variables_values'] = xxxx - #Because that would move where the pointer is going to. We need to instead populate the individual values in the simulation module's namespace. - #This population Must occur here. It has to be after the indpendent variables have changed, before synthetic data is made, and before the MCMC is performed. - #####Begin PEUQSE Parallel Processing During Loop Block -- This block is custom for meshgrid since the loop is different.#### - if (self.UserInput.doe_settings['parallel_conditions_exploration'])== True: - numPermutations = len(independentVariable2ValuesArray)*len(independentVariable1ValuesArray) - permutationIndex = conditionsPermutationIndex - #We will only execute the sampling the permutationIndex matches the processor rank. - #Additionally, if the rank is 0 and the simulation got here, it will be assumed the person is running this just to find the number of Permutations, so that will be spit out and the simulation ended. - import PEUQSE.parallel_processing - if PEUQSE.parallel_processing.currentProcessorNumber == 0: - print("For the user input settings provided, the number of Permutations+1 will be", numPermutations+1, ". Please use mpiexec or mpirun with this number for N. If you are not expecting to see this message, change your UserInput choices. You have chosen parallel processing for gridsearch and have run PEUQSE without mpi, which is a procedure to retrieve the number of processor ranks to use for parallelized gridsearch. A typical syntax now would be: mpiexec -n ", numPermutations+1, " python runfile_for_your_analysis.py" ) - sys.exit() - elif PEUQSE.parallel_processing.currentProcessorNumber != conditionsPermutationIndex+1: - doSimulation = False #This means the permutation index does not match the processor rank so nothing should be executed. - elif PEUQSE.parallel_processing.currentProcessorNumber == permutationIndex+1: - doSimulation = True #This is the "normal" case. - #####End PEUQSE Parallel Processing During Loop Block#### - if doSimulation == True: - self.UserInput.model['populateIndependentVariablesFunction']([indValue1,indValue2]) - self.populateResponsesWithSyntheticData(parameterPermutation) - if searchType=='doMetropolisHastings': - [map_parameter_set, muap_parameter_set, stdap_parameter_set, evidence, info_gain, samples, logP] = self.doMetropolisHastings() - if searchType=='doEnsembleSliceSampling': - [map_parameter_set, muap_parameter_set, stdap_parameter_set, evidence, info_gain, samples, logP] = self.doEnsembleSliceSampling() - if searchType=='doEnsembleModifiedMHSampling': - [map_parameter_set, muap_parameter_set, stdap_parameter_set, evidence, info_gain, samples, logP] = self.doEnsembleModifiedMHSampling() - conditionsPermutation = np.array([indValue1,indValue2]) - conditionsPermutationAndInfoGain = np.hstack((conditionsPermutation, info_gain)) - self.info_gain_matrix.append(conditionsPermutationAndInfoGain) #NOTE that the structure *includes* the Permutations. - if (self.UserInput.doe_settings['parallel_conditions_exploration'])== True: - self.exportSingleConditionInfoGainMatrix(self.parModulationPermutationIndex+1, conditionsPermutationAndInfoGain, conditionsPermutationIndex) - if self.UserInput.doe_settings['info_gains_matrices_multiple_parameters'] == 'each': #copy the above lines for the sum. - for parameterIndex in range(0,numParameters):#looping across number of parameters... - conditionsPermutationAndInfoGain = np.hstack((conditionsPermutation, np.array(self.info_gain_each_parameter[parameterIndex]))) #Need to pull the info gain matrix from the nested objected named info_gain_each_parameter - #Below mimics the line above which reads self.info_gain_matrix.append(conditionsPermutationAndInfoGain) - info_gain_matrices_each_parameter[parameterIndex].append(conditionsPermutationAndInfoGain) - conditionsPermutationIndex = conditionsPermutationIndex + 1 #This variable was added for and is used in parallelization. - self.info_gain_matrix = np.array(self.info_gain_matrix) #this is an implied return in addition to the real return. - if self.UserInput.doe_settings['parallel_conditions_exploration'] == True: #We will overwrite self.info_gain_matrix with a consolidated one if needed. - self.consolidate_parallel_doe_data(parallelizationType='conditions') - if self.UserInput.doe_settings['info_gains_matrices_multiple_parameters'] == 'each': #copy the above line for the sum. - for parameterIndex in range(0,numParameters):#looping across number of parameters... - self.info_gain_matrices_each_parameter[parameterIndex]= np.array(info_gain_matrices_each_parameter[parameterIndex]) - self.middle_of_doe_flag = False #Set this back to false once info gain matrix is ready. - return np.array(self.info_gain_matrix) - - #This function requires population of the UserInput doe_settings dictionary. It automatically scans many parameter modulation Permutations. - def doeParameterModulationPermutationsScanner(self, searchType='doMetropolisHastings'): - import PEUQSE.CombinationGeneratorModule as CombinationGeneratorModule - doe_settings = self.UserInput.doe_settings - #For the parameters, we are able to use a default one standard deviation grid if gridSamplingAbsoluteIntervalSize is a blank list. - #doe_settings['parameter_modulation_grid_center'] #We do NOT create such a variable in user input. The initial guess variable is used, which is the center of the prior if no guess has been provided. - parModulationGridCenterVector = self.UserInput.InputParameterInitialGuess - numParameters = len(parModulationGridCenterVector) - parModulationGridIntervalSizeAbsolute = doe_settings['parameter_modulation_grid_interval_size']*self.UserInput.std_prior - parModulationGridPermutations, numPermutations = self.getGridPermutations(parModulationGridCenterVector,parModulationGridIntervalSizeAbsolute, doe_settings['parameter_modulation_grid_num_intervals']) - self.numParModulationPermutations = numPermutations - parModulationGridPermutations= np.array(parModulationGridPermutations) - - if len(self.UserInput.parameterNamesList) == len(self.UserInput.InputParametersPriorValuesUncertainties): #then we assume variable names have been provided. - headerString = self.UserInput.stringOfParameterNames #This variable is a string, no brackets. - else: #else no variable names have been provided. - headerString = '' - np.savetxt(self.UserInput.directories['logs_and_csvs']+"Info_gain__parModulationGridPermutations.csv", parModulationGridPermutations, delimiter=",", encoding =None, header=headerString) - #We will get a separate info gain matrix for each parModulationPermutation, we'll store that in this variable. - info_gains_matrices_list = [] - if self.UserInput.doe_settings['info_gains_matrices_multiple_parameters'] == 'each': #just making analogous structure which exists for sum. - info_gains_matrices_lists_one_for_each_parameter = [] #make a matrix ready to copy info_gains_matrices_list. - #need to make a list of lists (or similar) to fill it with the individual matrices necessary. - numParameters = len(self.UserInput.InputParametersPriorValuesUncertainties) - for parameterIndex in range(0,numParameters):#looping across number of parameters... - info_gains_matrices_lists_one_for_each_parameter.append([]) #These are empty lists create to indices and initialize each parameter's info_gain_matrix. They will be appended to later. - for parModulationPermutationIndex,parModulationPermutation in enumerate(parModulationGridPermutations): - #####Begin PEUQSE Parallel Processing During Loop Block#### - if (self.UserInput.doe_settings['parallel_parameter_modulation'])== True: - #We will only execute the sampling the permutationIndex matches the processor rank. - #Additionally, if the rank is 0 and the simulation got here, it will be assumed the person is running this just to find the number of Permutations, so that will be spit out and the simulation ended. - import PEUQSE.parallel_processing - if PEUQSE.parallel_processing.currentProcessorNumber == 0: - print("For the user input settings provided, the number of Permutations+1 will be", numPermutations+1, ". Please use mpiexec or mpirun with this number for N. If you are not expecting to see this message, change your UserInput choices. You have chosen parallel processing for gridsearch and have run PEUQSE without mpi, which is a procedure to retrieve the number of processor ranks to use for parallelized gridsearch. A typical syntax now would be: mpiexec -n ", numPermutations+1, " python runfile_for_your_analysis.py" ) - sys.exit() - elif PEUQSE.parallel_processing.currentProcessorNumber != parModulationPermutationIndex+1: - continue #This means the permutation index does not match the processor rank so nothing should be executed. - #elif PEUQSE.parallel_processing.currentProcessorNumber == permutationIndex+1: - # pass #This is the "normal" case and is implied, so is commented out. - #####End PEUQSE Parallel Processing During Loop Block#### - #We will get separate info gain matrix for each parameter modulation combination. - self.parModulationPermutationIndex = parModulationPermutationIndex #This variable is being created for parallel processing of conditions. - info_gain_matrix = self.doeGetInfoGainMatrix(parModulationPermutation, searchType=searchType) - #Append the info gain matrix obtainend (unless doing a parallel_conditions_exploration). - if self.UserInput.doe_settings['parallel_conditions_exploration'] == False: - info_gains_matrices_list.append(np.array(info_gain_matrix)) - if self.UserInput.doe_settings['info_gains_matrices_multiple_parameters'] == 'each': #copy the above lines which were for the sum. - for parameterIndex in range(0,numParameters):#looping across number of parameters... - info_gains_matrices_lists_one_for_each_parameter[parameterIndex].append(np.array(self.info_gain_matrices_each_parameter[parameterIndex])) - self.info_gains_matrices_array=np.array(info_gains_matrices_list) #This is an implied return, but we will also return it. - if self.UserInput.doe_settings['info_gains_matrices_multiple_parameters'] == 'each': #copy the above line for the sum. - self.info_gains_matrices_arrays_one_for_each_parameter = list(self.UserInput.InputParametersPriorValuesUncertainties) #initializing it with right length, then will fill it. - for parameterIndex in range(0,numParameters):#looping across number of parameters... - self.info_gains_matrices_arrays_one_for_each_parameter[parameterIndex]= np.array(info_gains_matrices_lists_one_for_each_parameter[parameterIndex]) #make each an array like above. - self.info_gains_matrices_arrays_one_for_each_parameter = np.array(self.info_gains_matrices_arrays_one_for_each_parameter) - #TODO: write the self.info_gains_matrices_array individual elements to file. - #for modulationIndex in range(len(self.info_gains_matrices_array)): - #self.info_gains_matrices_array[modulationIndex] #Write this to file. This is 'xyz' format regardless of whether self.info_gains_matrices_array_format == 'xyz' or =='meshgrid' is used. - ####Start block for parallel_conditions_exploration ##### - if self.UserInput.doe_settings['parallel_conditions_exploration'] == True: - #if we're doing a parallel_conditions_exploration, we need to check if we are on the last - #condition exploration of the last parameter modulation. [#things could be done differently, but this works.] - if self.parModulationPermutationIndex+1 != self.numParModulationPermutations: - return #this means we do nothing because it's not the final parModulation. - elif self.parModulationPermutationIndex+1 == self.numParModulationPermutations: - import PEUQSE.parallel_processing #Even if it's the final parModulation, need to check if it's final combination. - if PEUQSE.parallel_processing.finalProcess == False: #not final combination. - return - elif PEUQSE.parallel_processing.finalProcess == True: - #If final parModulation and final combination, we populate self.info_gain_matrices_array - self.consolidate_parallel_doe_info_gain_matrices() #And now we continue on with the plotting. - ####End block for parallel_conditions_exploration ##### - return self.info_gains_matrices_array - - @CiteSoft.after_call_compile_consolidated_log(compile_checkpoints=True) #This is from the CiteSoft module. - def createInfoGainPlots(self, parameterIndices=[], plot_suffix = ''): - #parameterIndices should be a list of parameters if the user only wants as subset of parameters. The default, a blank list, will do all if the setting for doing each is on. - #first make the modulation plots for the Sum. - self.createInfoGainModulationPlots(parameterIndex=None, plot_suffix = plot_suffix) - #now, by default, loop through and make plots fore each parameterIndex if the setting for that is on. - if self.UserInput.doe_settings['info_gains_matrices_multiple_parameters'] == 'each': - if len(parameterIndices) > 0: #if the user has provided a list of parameters, we will only make the plots for those parameters. - for parameterIndex in parameterIndices: - plotSuffixString = "_par_" + str(parameterIndex) + plot_suffix - self.createInfoGainModulationPlots(parameterIndex=parameterIndex, plot_suffix = plotSuffixString) - if len(parameterIndices) == 0: #This is the default case, and we'll make plots for each parameter. - numParameters = len(self.UserInput.InputParametersPriorValuesUncertainties) - for parameterIndex in range(0,numParameters): - plotSuffixString = "_par_" + str(parameterIndex) + plot_suffix - self.createInfoGainModulationPlots(parameterIndex=parameterIndex, plot_suffix = plotSuffixString) - - def createInfoGainModulationPlots(self, parameterIndex=None, plot_suffix = ''): - #self.info_gains_matrices_array is an implied argument that usually gets populated in doeParameterModulationPermutationsScanner (when that is used). - #Right now, when using KL_divergence and design of experiments there is an option of UserInput.doe_settings['info_gains_matrices_multiple_parameters'] = 'each' or 'sum' - #the default is sum. But when it is 'each', then it is possible to plot separate info_gains for each parameter. - #Note: the below code *does not* add a suffix to inidicate when a parameter Index has been fed. - #TODO: The variable "parameterInfoGainIndex" is made with the presumption that later we'll have to add another index when we have info_gains for each parameter. In that case it will become like this: - #xValues = self.info_gains_matrices_array[modulationIndex][:,0] will become xValues = self.info_gains_matrices_array[modulationIndex][parameterInfoGainIndex][:,0] - #self.meshGrid_independentVariable1ValuesArray will remain unchanged. - - import PEUQSE.plotting_functions as plotting_functions - setMatPlotLibAgg(self.UserInput.plotting_ouput_settings['setMatPlotLibAgg']) - #assess whether the function is called for the overall info_gain matrices or for a particular parameter. - if parameterIndex==None: #this means we're using the regular info gain, not the parameter specific case. - #Normally, the info gain plots should be stored in self.info_gains_matrices_array. - #However, in case it does not exist or there are none in there, then we assume the person is trying to make just one. So we take the most recent info gain matrix. - try: - if len(self.info_gains_matrices_array) >= 0: #normally, it should exist and be populated. - pass - if len(self.info_gains_matrices_array) == 0:#in case it exists but is not populated, we'll populated. - self.info_gains_matrices_array = np.array([self.info_gain_matrix]) - except: #if it does not yet exist, we create it and populate it. - self.info_gains_matrices_array = np.array([self.info_gain_matrix]) - local_info_gains_matrices_array = self.info_gains_matrices_array #We have to switch to a local variable since that way below we can use the local variable whether we're doing the 'global' info_gains_matrices array or a parameter specific one. - if parameterIndex!=None: - if hasattr(self, 'info_gains_matrices_arrays_one_for_each_parameter'): #this structure will only exist if doeParameterModulationPermutationsScanner has been called. - local_info_gains_matrices_array = np.array(self.info_gains_matrices_arrays_one_for_each_parameter)[:][parameterIndex] #each "row" is a modulation, and within that are structures for each parameter. This is further described in the document InfoGainMatrixObjectsStructure.docx - else: #if a modulation has not been run, and simply doeGetInfoGainMatrix was done, then the larger structure might not exist and we have to just pull out by the parameter index and then make it nested as for a regular info_gain sum. - local_info_gains_matrices_array = np.array([self.info_gain_matrices_each_parameter[parameterIndex]]) - #At present, plots are only made if the number of independent variables is 2. - if len(self.UserInput.doe_settings['independent_variable_grid_center']) == 2: - if self.info_gains_matrices_array_format == 'xyz': - for modulationIndex in range(len(local_info_gains_matrices_array)): - xValues = local_info_gains_matrices_array[modulationIndex][:,0] - yValues = local_info_gains_matrices_array[modulationIndex][:,1] - zValues = local_info_gains_matrices_array[modulationIndex][:,2] - if self.UserInput.doe_settings['parallel_parameter_modulation'] == False: #This is the normal case. - plotting_functions.makeTrisurfacePlot(xValues, yValues, zValues, figure_name = "Info_gain_TrisurfacePlot_modulation_"+str(modulationIndex+1)+plot_suffix, directory = self.UserInput.directories['graphs']) - if self.UserInput.doe_settings['parallel_parameter_modulation'] == True: #This is the parallel case. In this case, the actual modulationIndex to attach to the filename is given by the processor rank. - import PEUQSE.parallel_processing - plotting_functions.makeTrisurfacePlot(xValues, yValues, zValues, figure_name = "Info_gain_TrisurfacePlot_modulation_"+str(PEUQSE.parallel_processing.currentProcessorNumber)+plot_suffix, directory = self.UserInput.directories['graphs']) - if self.info_gains_matrices_array_format == 'meshgrid': - for modulationIndex in range(len(local_info_gains_matrices_array)): - #Now need to get things prepared for the meshgrid. - #NOTE: we do not pull XX and YY from local_info_gains_matrices_array because that is 1D and these are 2D arrays made a different way. - #xValues = local_info_gains_matrices_array[modulationIndex][:,0] #Still correct, but not being used. - #yValues = local_info_gains_matrices_array[modulationIndex][:,1] #Still correct, but not being used. - XX, YY = np.meshgrid(self.meshGrid_independentVariable1ValuesArray, self.meshGrid_independentVariable2ValuesArray) - zValues = local_info_gains_matrices_array[modulationIndex][:,2] - ZZ = zValues.reshape(XX.shape) #We know from experience to reshape this way. - if self.UserInput.doe_settings['parallel_parameter_modulation'] == False: #This is the normal case. - plotting_functions.makeMeshGridSurfacePlot(XX, YY, ZZ, figure_name = "Info_gain_Meshgrid_modulation_"+str(modulationIndex+1)+plot_suffix, directory = self.UserInput.directories['graphs']) - if self.UserInput.doe_settings['parallel_parameter_modulation'] == True: #This is the parallel case. In this case, the actual modulationIndex to attach to the filename is given by the processor rank. - import PEUQSE.parallel_processing - plotting_functions.makeMeshGridSurfacePlot(XX, YY, ZZ, figure_name = "Info_gain_Meshgrid_modulation_"+str(PEUQSE.parallel_processing.currentProcessorNumber)+plot_suffix, directory = self.UserInput.directories['graphs']) - else: - print("At present, createInfoGainPlots and createInfoGainModulationPlots only create plots when the length of independent_variable_grid_center is 2. We don't currently support creation of other dimensional plots. The infogain data is being exported into the file _____.csv") - def getLogP(self, proposal_sample): #The proposal sample is specific parameter vector. - log_prior_proposal = self.getLogPrior(proposal_sample) - if log_prior_proposal == float('-inf'): #due to the bounds check or other reasons, log_prior_proposal could be '-inf'. - return float('-inf') - #else continue as normal. - log_likelihood_proposal, simulationOutput_proposal = self.getLogLikelihood(proposal_sample) - logP = log_likelihood_proposal+log_prior_proposal #Of the Metropolis-Hastings accept/reject ratio - return logP - - def getNegLogP(self, proposal_sample): #The proposal sample is specific parameter vector. We are using negative of log P because scipy optimize doesn't do maximizing. It's recommended minimize the negative in this situation. - neg_log_postererior = -1*self.getLogP(proposal_sample) - return neg_log_postererior - - #this is just a wrapper around doOptimizeNegLogP - def doOptimizeLogP(self, simulationFunctionAdditionalArgs = (), method = None, optimizationAdditionalArgs = {}, printOptimum = True, verbose=True, maxiter=0): - if printOptimum == True: - print("doOptimizeLogP is a wrapper that calls doOptimizeNegLogP. The final results from doOptimizeNegLogP will be printed.") - [self.map_parameter_set, negLogP] = self.doOptimizeNegLogP(simulationFunctionAdditionalArgs = simulationFunctionAdditionalArgs, method = method, optimizationAdditionalArgs = optimizationAdditionalArgs, printOptimum = printOptimum, verbose=verbose, maxiter=maxiter) - self.map_logP = -1.0*negLogP - return [self.map_parameter_set, self.map_logP] - - find_MAP = doOptimizeLogP # pointer to doOptimizeLogP to make our user options similar to existing popular BPE softwares (ie. pymc) - - def doOptimizeNegLogP(self, simulationFunctionAdditionalArgs = (), method = None, optimizationAdditionalArgs = {}, printOptimum = True, verbose=True, maxiter=0): - #THe intention of the optional arguments is to pass them into the scipy.optimize.minimize function. - # the 'method' argument is for Nelder-Mead, BFGS, SLSQP etc. https://docs.scipy.org/doc/scipy/reference/generated/scipy.optimize.minimize.html#scipy.optimize.minimize - #Note that "maxiter=0" just means to use the default. - initialGuess = self.UserInput.InputParameterInitialGuess - import scipy.optimize - if verbose == False: - if maxiter == 0: - optimizeResult = scipy.optimize.minimize(self.getNegLogP, initialGuess, method = method) - if maxiter != 0: - optimizeResult = scipy.optimize.minimize(self.getNegLogP, initialGuess, method = method, options={"maxiter": maxiter}) - if verbose == True: - verbose_simulator = verbose_optimization_wrapper(self.getNegLogP) - if maxiter == 0: - optimizeResult = scipy.optimize.minimize(verbose_simulator.simulateAndStoreObjectiveFunction, initialGuess, method=method, callback=verbose_simulator.callback, options={"disp": True}) - if maxiter != 0: - optimizeResult = scipy.optimize.minimize(verbose_simulator.simulateAndStoreObjectiveFunction, initialGuess, method=method, callback=verbose_simulator.callback, options={"maxiter": maxiter}) - #print(f"Number of calls to Simulator instance {verbose_simulator.num_calls}") <-- this is the same as the "Function evaluations" field that gets printed. - - self.map_parameter_set = optimizeResult.x #This is the map location. - negLogP = optimizeResult.fun - self.map_logP = -1.0*negLogP #This is the map logP - if printOptimum == True: - print("Final results from doOptimizeNegLogP:", self.map_parameter_set, "final negLogP:", negLogP, "final logP:", self.map_logP) - return [self.map_parameter_set, negLogP] - - - def getSSR(self, discreteParameterVector): #The proposal sample is specific parameter vector. - #First do a parameter bounds check. We'll return an inf if it fails. - passedBoundsCheck = self.doInputParameterBoundsChecks(discreteParameterVector) - if passedBoundsCheck == False: - return float('inf') - - #If within bounds, proceed to get the simulated responses. - simulatedResponses = self.getSimulatedResponses(discreteParameterVector) - if type(simulatedResponses) == type(None): - return float('inf') #This is intended for the case that the simulation fails, indicated by receiving an 'nan' or None type from user's simulation function. - - #now calculate the SSR if nothing has failed. - Residuals = np.array(simulatedResponses) - np.array(self.UserInput.responses_observed) - SSR = np.sum(Residuals**2) - return SSR - - def doOptimizeSSR(self, simulationFunctionAdditionalArgs = (), method = None, optimizationAdditionalArgs = {}, printOptimum = True, verbose=True, maxiter=0): - #THe intention of the optional arguments is to pass them into the scipy.optimize.minimize function. - # the 'method' argument is for Nelder-Mead, BFGS, SLSQP etc. https://docs.scipy.org/doc/scipy/reference/generated/scipy.optimize.minimize.html#scipy.optimize.minimize - #Note that "maxiter=0" just means to use the default. - if self.parameterBoundsOn:#Will force L-BFGS-B because it has bounds. - if method != 'L-BFGS-B': - print("Notification: Parameter bounds are on and doOptimizeSSR is being called. Forcing the optimization method to be L-BFGS-B because this it the only SSR method presently allowed for bounds with PEUQSE.") - method = 'L-BFGS-B' - zippedBounds = list(zip(self.UserInput.InputParameterPriorValues_lowerBounds, self.UserInput.InputParameterPriorValues_upperBounds)) - optimizationAdditionalArgs['bounds'] = zippedBounds - - initialGuess = self.UserInput.InputParameterInitialGuess - import scipy.optimize - if verbose == False: - if maxiter == 0: - optimizeResult = scipy.optimize.minimize(self.getSSR, initialGuess, method = method, **optimizationAdditionalArgs) - if maxiter != 0: - optimizeResult = scipy.optimize.minimize(self.getSSR, initialGuess, method = method, options={"maxiter": maxiter}, **optimizationAdditionalArgs) - if verbose == True: - verbose_simulator = verbose_optimization_wrapper(self.getSSR) - if maxiter == 0: - optimizeResult = scipy.optimize.minimize(verbose_simulator.simulateAndStoreObjectiveFunction, initialGuess, method=method, callback=verbose_simulator.callback, options={"disp": True}, **optimizationAdditionalArgs) - if maxiter != 0: - optimizeResult = scipy.optimize.minimize(verbose_simulator.simulateAndStoreObjectiveFunction, initialGuess, method=method, callback=verbose_simulator.callback, options={"maxiter": maxiter}, **optimizationAdditionalArgs) - #print(f"Number of calls to Simulator instance {verbose_simulator.num_calls}") <-- this is the same as the "Function evaluations" field that gets printed. - - self.opt_parameter_set = optimizeResult.x #This is the best fit parameter set. - self.opt_SSR = optimizeResult.fun #This is the best fit SSR. - if printOptimum == True: - print("Final results from doOptimizeSSR:", self.opt_parameter_set, "final SSR:", self.opt_SSR, "final negSSR:", -1*self.opt_SSR) - #FIXME: Right now, the createAllPlots command will not work unless we populate the map parameter set, so that is what we are doing. But a better longterm solution needs to be made. In which the graph says "opt" rather than "MAP" and uses the appropriate variables. - #TODO: Also need to add things like WSSR based on magnitude and variance weightings. - self.map_parameter_set = self.opt_parameter_set - return [self.opt_parameter_set, self.opt_SSR] - - - #This function is meant to be called from the runfile when testing a new function etc. It allows a simulation plot to be created. - #This is *not* recommended for use in other functions, where it is recommended that getLogP be called directly. - def doSinglePoint(self, discreteParameterVector=None, objectiveFunction='logP'): - #objectiveFunction can be 'logP' or 'SSR' - if type(discreteParameterVector)==type(None): #If somebody did not feed a specific vector, we take the initial guess. - discreteParameterVector = self.UserInput.InputParameterInitialGuess - if self.reducedParameterSpaceOn: #if reduced parameter space is on, we need to use a reduced discreteParameterVector - reducedIndices = self.UserInput.model['reducedParameterSpace'] - discreteParameterVector = returnReducedIterable(discreteParameterVector, reducedIndices) - if objectiveFunction=='logP': - self.map_parameter_set = discreteParameterVector - self.map_logP = self.getLogP(discreteParameterVector) - objectiveFunctionValue = self.map_logP - if objectiveFunction=='SSR': - self.opt_parameter_set = discreteParameterVector - self.opt_SSR = self.getSSR(discreteParameterVector) - objectiveFunctionValue = self.opt_SSR - return [discreteParameterVector, objectiveFunctionValue] - - def calculateInfoGain(self): - if self.UserInput.parameter_estimation_settings['mcmc_info_gain_returned'] == 'KL_divergence': - try: #If the info_gain_KL fails, we will return info_gain_log_ratio. - #Below is the KL_divergence info_gain calculation. - from warnings import catch_warnings, simplefilter #Used to surpress warnings from 0 probability density in current_info_gain_KL calculation - length, width = self.post_burn_in_samples.shape - self.info_gain_KL = 0 - self.info_gain_KL_each_parameter = [] - for param in range(width): - import matplotlib.pyplot as plt #FIXME: #TODO: this plotting needs to be moved into the plotting area and as optinoal. - (density0,bins0,pathces0)=plt.hist([self.samples_of_prior[:,param].flatten(),self.post_burn_in_samples[:,param].flatten()],bins=100,density=True) - # the following code handles surpressing the RuntimeWarning displayed when dealing with a 0 probability density in calculating current_info_gain_KL. It does not affect the calculation at all. - with catch_warnings(): - simplefilter("ignore") - current_info_gain_KL = density0[1]*np.log(density0[1]/density0[0]) - current_info_gain_KL = current_info_gain_KL[np.isfinite(current_info_gain_KL)] - current_info_gain_KL = np.sum(current_info_gain_KL) - self.info_gain_KL_each_parameter.append(current_info_gain_KL) #could make this optional, but normally shouldn't take much memory. - self.info_gain_KL = self.info_gain_KL + current_info_gain_KL - self.info_gain_each_parameter = self.info_gain_KL_each_parameter #could make this optional, but normally shouldn't take much memory. - self.info_gain = self.info_gain_KL - except: - print("unable to calculate KL_divergence info_gain. Calculating log_ratio info_gain.") - self.UserInput.parameter_estimation_settings['mcmc_info_gain_returned'] = 'log_ratio' - if self.UserInput.parameter_estimation_settings['mcmc_info_gain_returned'] == 'log_ratio': - if self.UserInput.parameter_estimation_settings['mcmc_info_gain_cutoff'] == 0: - #we have log A, and we want log(A/B). #log (e^log(A) / B ) = log(A/B). - #But we could also do... log(A) - log(B) = log(A/B). So changing to that. - post_burn_in_log_posteriors_vec = self.post_burn_in_log_posteriors_un_normed_vec - np.log(self.evidence) - log_ratios = (post_burn_in_log_posteriors_vec-self.post_burn_in_log_priors_vec) #log10(a/b) = log10(a)-log10(b) - log_ratios[np.isinf(log_ratios)] = 0 - log_ratios = np.nan_to_num(log_ratios) - self.info_gain_log_ratio_each_parameter = None #TODO: create a list or array of arrays such that the index is the parameter number. - self.info_gain_log_ratio = np.mean(log_ratios) #NOTE: The log_ratio info_gain is *always* calculated, at this line or below. - elif self.UserInput.parameter_estimation_settings['mcmc_info_gain_cutoff'] != 0: - #Need to consider using a truncated evidence array as well, but for now will not worry about that. - #First intialize the stacked array. - #Surprisingly, the arrays going in haves shapes like 900,1 rather than 1,900 so now transposing them before stacking. - stackedLogProbabilities = np.vstack((self.post_burn_in_log_priors_vec.transpose(), self.post_burn_in_log_posteriors_un_normed_vec.transpose())) - #Now, we are going to make a list of abscissaIndices to remove, recognizing that numpy arrays are "transposed" relative to excel. - abscissaIndicesToRemove = [] - #FIXME: Below there are some "if verbose", but those should not be printed, they should be collected and exported to a file at the end. - for abscissaIndex in range(np.shape(stackedLogProbabilities)[1]): - if self.UserInput.parameter_estimation_settings['verbose']: - print("parameter set:", self.post_burn_in_samples[abscissaIndex]) - ordinateValues = stackedLogProbabilities[:,abscissaIndex] - #We mark anything where there is a 'nan': - if np.isnan( ordinateValues ).any(): #A working numpy syntax is to have the any outside of the parenthesis, for this command, even though it's a bit strange. - abscissaIndicesToRemove.append(abscissaIndex) - if self.UserInput.parameter_estimation_settings['verbose']: - print(abscissaIndex, "removed nan (log_prior, log_posterior)", ordinateValues, np.log( self.UserInput.parameter_estimation_settings['mcmc_info_gain_cutoff'])) - elif (ordinateValues < np.log( self.UserInput.parameter_estimation_settings['mcmc_info_gain_cutoff'] ) ).any(): #again, working numpy syntax is to put "any" on the outside. We take the log since we're looking at log of probability. This is a natural log. - abscissaIndicesToRemove.append(abscissaIndex) - if self.UserInput.parameter_estimation_settings['verbose']: - print(abscissaIndex, "removed small (prior, posterior)", np.exp(ordinateValues), self.UserInput.parameter_estimation_settings['mcmc_info_gain_cutoff']) - else: - if self.UserInput.parameter_estimation_settings['verbose']: - print(abscissaIndex, "kept (prior, posterior)", np.exp(ordinateValues), self.UserInput.parameter_estimation_settings['mcmc_info_gain_cutoff']) - pass - #Now that this is finshed, we're going to do the truncation using numpy delete. - stackedLogProbabilities_truncated = stackedLogProbabilities*1.0 #just initializing. - stackedLogProbabilities_truncated = np.delete(stackedLogProbabilities, abscissaIndicesToRemove, axis=1) - post_burn_in_log_priors_vec_truncated = stackedLogProbabilities_truncated[0] - post_burn_in_log_posteriors_un_normed_vec_truncated = stackedLogProbabilities_truncated[1] #We have to truncate with not normalized, so we add the normalization in here. - post_burn_in_log_posteriors_vec_truncated = np.log ( np.exp( post_burn_in_log_posteriors_un_normed_vec_truncated) /self.evidence) - #Now copy the same lines that Eric had used above, only change to using log_ratios_truncated - log_ratios_truncated = (post_burn_in_log_posteriors_vec_truncated-post_burn_in_log_priors_vec_truncated) - log_ratios_truncated[np.isinf(log_ratios_truncated)] = 0 - log_ratios_truncated = np.nan_to_num(log_ratios_truncated) - self.info_gain_log_ratio_each_parameter = None #TODO: create a list or array of arrays such that the index is the parameter number. - self.info_gain_log_ratio = np.mean(log_ratios_truncated) #NOTE: The log_ratio info_gain is *always* calculated, at this line or earlier. - #TODO: Export the below things. - #post_burn_in_log_posteriors_vec_non_truncated = self.post_burn_in_log_posteriors_un_normed_vec - np.log(self.evidence) - #print(post_burn_in_log_posteriors_vec_truncated) #TODO: Export this - #print(post_burn_in_log_priors_vec_truncated) #TODO: Export this - self.info_gain = self.info_gain_log_ratio - return self.info_gain - - - def exportSingleConditionInfoGainMatrix(self, parameterPermutationNumber, conditionsPermutationAndInfoGain, conditionsPermutationIndex): - #Note that parameterPermutationNumber is parameterPermutationIndex+1 - file_name_prefix, file_name_suffix, directory_name_suffix = self.getParallelProcessingPrefixAndSuffix() #Rather self explanatory. - file_name_suffix=file_name_suffix[1:] #removing the '_' that comes by default, we will add the '_' back in later below. - if int(conditionsPermutationIndex+1) != int(file_name_suffix): - print("line 1199: There is a problem in the parallel processing of conditions info gain matrix calculation!", conditionsPermutationIndex+1, file_name_suffix) - #I am commenting out the below line because the savetxt was causing amysterious "no such file or directory" error. - np.savetxt(self.UserInput.directories['logs_and_csvs']+directory_name_suffix+file_name_prefix+'conditionsPermutationAndInfoGain_'+'mod'+str(int(parameterPermutationNumber))+'_cond'+str(conditionsPermutationIndex+1)+'.csv',conditionsPermutationAndInfoGain, delimiter=",") - pickleAnObject(conditionsPermutationAndInfoGain, self.UserInput.directories['pickles']+directory_name_suffix+file_name_prefix+'conditionsPermutationAndInfoGain_'+'mod'+str(int(parameterPermutationNumber))+'_cond'+str(conditionsPermutationIndex+1)) - - #This function will calculate MAP and mu_AP, evidence, and related quantities. - def calculatePostBurnInStatistics(self, calculate_post_burn_in_log_priors_vec = False): - #First need to create priors if not already there, because ESS does not store priors during the run (MH does). - if not hasattr(self, 'post_burn_in_log_priors_vec'): - calculate_post_burn_in_log_priors_vec = True - if calculate_post_burn_in_log_priors_vec == True: - #TODO: change below to use numpy vectorize. It will probably be faster then. - #Below line following a line from https://github.com/threeML/threeML/blob/master/threeML/bayesian/zeus_sampler.py - self.post_burn_in_log_priors_vec = np.array([self.getLogPrior(parameterPermutation) for parameterPermutation in self.post_burn_in_samples]) - self.post_burn_in_log_priors_vec = np.atleast_2d(self.post_burn_in_log_priors_vec).transpose() - #Next need to apply filtering before getting statistics. - filterSamples = bool(self.UserInput.parameter_estimation_settings['mcmc_threshold_filter_samples']) - filterCoeffient = self.UserInput.parameter_estimation_settings['mcmc_threshold_filter_coefficient'] - if type(filterCoeffient) == type("string"): - if filterCoeffient.lower() == "auto": - filterCoeffient = 2.0 - if filterSamples == True: - #before filtering, we will keep an unfiltered version in case of ['exportAllSimulatedOutputs'] == True: - if self.UserInput.parameter_estimation_settings['exportAllSimulatedOutputs'] == True: - try: #This try and except is primarily because as of Dec 6th 2020, the feature has been implemented for MH but not ESS. With ESS, post_burn_in_log_priors_vec_unfiltered is not gauranteed. - self.post_burn_in_samples_unfiltered = copy.deepcopy(self.post_burn_in_samples) - self.post_burn_in_log_posteriors_un_normed_vec_unfiltered = copy.deepcopy(self.post_burn_in_log_posteriors_un_normed_vec) - self.post_burn_in_log_priors_vec_unfiltered = copy.deepcopy(self.post_burn_in_log_priors_vec) - except: - pass - originalLength = np.shape(self.post_burn_in_log_posteriors_un_normed_vec)[0] - try: - mergedArray = np.hstack( (self.post_burn_in_log_posteriors_un_normed_vec, self.post_burn_in_log_priors_vec, self.post_burn_in_samples) ) - except: - print("Line 866: There has been an error, here are post_burn_in_log_posteriors_un_normed_vec, post_burn_in_samples, post_burn_in_log_priors_vec", np.shape(self.post_burn_in_log_posteriors_un_normed_vec), np.shape(self.post_burn_in_samples), np.shape(self.post_burn_in_log_priors_vec)) - # print(self.post_burn_in_log_posteriors_un_normed_vec, self.post_burn_in_samples, self.post_burn_in_log_priors_vec) - sys.exit() - #Now need to find cases where the probability is too low and filter them out. - #Filtering Step 1: Find average and Stdev of log(-logP) - logNegLogP = np.log(-1*self.post_burn_in_log_posteriors_un_normed_vec) - meanLogNegLogP = np.mean(logNegLogP) - stdLogNegLogP = np.std(logNegLogP) - maxLogP = np.max(self.post_burn_in_log_posteriors_un_normed_vec) #this is the MAP logP. - #getting the mu_AP probability for filtering requires a couple of steps. We name it carefully because the mu_AP willl change after filtering. - mu_AP_parameter_set_unfiltered_data = np.mean(self.post_burn_in_samples, axis=0) #now we are going to get the mu_AP of the unfiltered data. - mu_AP_log_P_unfiltered_data = self.getLogP(mu_AP_parameter_set_unfiltered_data) #this is the mu_AP logP - if self.UserInput.parameter_estimation_settings['mcmc_threshold_filter_benchmark'] == 'mu_AP': - #This benchmark is relative to the LogP values themselves - filteringThreshold = mu_AP_log_P_unfiltered_data - filterCoeffient # filter values below threshold starting at the mu_AP or mu_AP proxy. - removeValuesDirection = 'below' - #Now, call the function I have made for filtering by deleting the rows above/below a certain value - truncatedMergedArray = arrayThresholdFilter(mergedArray, filterKey=self.post_burn_in_log_posteriors_un_normed_vec, thresholdValue=filteringThreshold, removeValues = removeValuesDirection, transpose=False) - elif self.UserInput.parameter_estimation_settings['mcmc_threshold_filter_benchmark'] == 'MAP': - #This benchmark is relative to the LogP values themselves - filteringThreshold = maxLogP - filterCoeffient # filter values below threshold starting at the MAP - removeValuesDirection = 'below' - #Now, call the function I have made for filtering by deleting the rows above/below a certain value - truncatedMergedArray = arrayThresholdFilter(mergedArray, filterKey=self.post_burn_in_log_posteriors_un_normed_vec, thresholdValue=filteringThreshold, removeValues = removeValuesDirection, transpose=False) - elif self.UserInput.parameter_estimation_settings['mcmc_threshold_filter_benchmark'] == 'auto': - #This benchmark is unusual be cause it it is related to logNegLogP - filteringThreshold = meanLogNegLogP+filterCoeffient*stdLogNegLogP #Threshold. - removeValuesDirection = 'above' - #Now, call the function I have made for filtering by deleting the rows above/below a certain value - truncatedMergedArray = arrayThresholdFilter(mergedArray, filterKey=logNegLogP, thresholdValue=filteringThreshold, removeValues = removeValuesDirection, transpose=False) - self.post_burn_in_log_posteriors_un_normed_vec = np.atleast_2d(truncatedMergedArray[:,0]).transpose() - self.post_burn_in_log_priors_vec = np.atleast_2d(truncatedMergedArray[:,1]).transpose() - self.post_burn_in_samples = truncatedMergedArray[:,2:] - #Map calculation etc. is intentionally placed below the filtering so that the map_index is assigned correctly per the final values. - self.mu_AP_parameter_set = np.mean(self.post_burn_in_samples, axis=0) #This is the mean of the posterior, and is the point with the highest expected value of the posterior (for most distributions). For the simplest cases, map and mu_AP will be the same. - self.stdap_parameter_set = np.std(self.post_burn_in_samples, axis=0) #This is the mean of the posterior, and is the point with the highest expected value of the posterior (for most distributions). For the simplest cases, map and mu_AP will be the same. - map_logP = max(self.post_burn_in_log_posteriors_un_normed_vec) - self.map_logP = map_logP - self.map_index = list(self.post_burn_in_log_posteriors_un_normed_vec).index(map_logP) #This does not have to be a unique answer, just one of them places which gives map_logP. - self.map_parameter_set = self.post_burn_in_samples[self.map_index] #This is the point with the highest probability in the posterior. - #TODO: Probably should return the variance of each sample in the post_burn_in - #posterior probabilites are transformed to a standard normal (std=1) for obtaining the evidence: - self.evidence = np.mean(np.exp(self.post_burn_in_log_posteriors_un_normed_vec))/np.linalg.norm(self.post_burn_in_samples) - self.info_gain = self.calculateInfoGain() - if self.UserInput.parameter_estimation_settings['verbose'] == True: - print("map_parameter_set ", self.map_parameter_set) - print("mu_AP_parameter_set ", self.mu_AP_parameter_set) - print("stdap_parameter_set ",self.stdap_parameter_set) - return [self.map_parameter_set, self.mu_AP_parameter_set, self.stdap_parameter_set, self.evidence, self.info_gain, self.post_burn_in_samples, self.post_burn_in_log_posteriors_un_normed_vec] - - #This function gets the prefix and suffix for saving files when doing ParallelProcessing with MPI. - #Importantly, the **directory** of the parallel processing is included as part of the prefix. - def getParallelProcessingPrefixAndSuffix(self): - file_name_prefix = '' - file_name_suffix = '' - directory_name_suffix = '' - if (self.UserInput.parameter_estimation_settings['mcmc_parallel_sampling'] or self.UserInput.parameter_estimation_settings['multistart_parallel_sampling'] or self.UserInput.doe_settings['parallel_conditions_exploration']) == True: - import PEUQSE.parallel_processing - import os - if PEUQSE.parallel_processing.currentProcessorNumber == 0: - pass - if PEUQSE.parallel_processing.currentProcessorNumber > 0: - file_name_suffix = "_"+str(PEUQSE.parallel_processing.currentProcessorNumber) - file_name_prefix = "" - directory_name_suffix = "mpi_cached_files/" #TODO: FIX THIS, IT MAY NOT WORK ON EVERY OS. SHOULD USE 'os' MODULE TO FIND DIRECTION OF THE SLASH OR TO DO SOMETHING SIMILAR. CURRENTLY IT IS WORKING ON MY WINDOWS DESPITE BEING "/" - return file_name_prefix, file_name_suffix, directory_name_suffix - - def exportPostBurnInStatistics(self): - #TODO: Consider to Make header for mcmc_samples_array. Also make exporting the mcmc_samples_array optional. - file_name_prefix, file_name_suffix, directory_name_suffix = self.getParallelProcessingPrefixAndSuffix() #Rather self explanatory. - mcmc_samples_array = np.hstack((self.post_burn_in_log_posteriors_un_normed_vec,self.post_burn_in_samples)) - np.savetxt(self.UserInput.directories['logs_and_csvs']+directory_name_suffix+file_name_prefix+'mcmc_logP_and_parameter_samples'+file_name_suffix+'.csv',mcmc_samples_array, delimiter=",") - pickleAnObject(mcmc_samples_array, self.UserInput.directories['pickles']+directory_name_suffix+file_name_prefix+'mcmc_logP_and_parameter_samples'+file_name_suffix) - if self.UserInput.parameter_estimation_settings['exportAllSimulatedOutputs'] == True: #By default, we should not keep this, it's a little too large with large sampling. - try: #The main reason to use a try and except is because this feature has not been implemented for ESS. With ESS, the mcmc_unfiltered_post_burn_in_simulated_outputs would not be retained and the program would crash. - np.savetxt(self.UserInput.directories['logs_and_csvs']+directory_name_suffix+file_name_prefix+'mcmc_unfiltered_post_burn_in_simulated_outputs'+file_name_suffix+'.csv',self.post_burn_in_samples_simulatedOutputs, delimiter=",") - np.savetxt(self.UserInput.directories['logs_and_csvs']+directory_name_suffix+file_name_prefix+'mcmc_unfiltered_post_burn_in_parameter_samples'+file_name_suffix+'.csv',self.post_burn_in_samples_unfiltered, delimiter=",") - np.savetxt(self.UserInput.directories['logs_and_csvs']+directory_name_suffix+file_name_prefix+'mcmc_unfiltered_post_burn_in_log_priors_vec'+file_name_suffix+'.csv',self.post_burn_in_log_posteriors_un_normed_vec_unfiltered, delimiter=",") - np.savetxt(self.UserInput.directories['logs_and_csvs']+directory_name_suffix+file_name_prefix+'mcmc_unfiltered_post_burn_in_log_posteriors_un_normed_vec'+file_name_suffix+'.csv',self.post_burn_in_log_priors_vec_unfiltered, delimiter=",") - except: - pass - with open(self.UserInput.directories['logs_and_csvs']+directory_name_suffix+file_name_prefix+'mcmc_log_file'+file_name_suffix+".txt", 'w') as out_file: - out_file.write("self.initial_point_parameters:" + str( self.UserInput.InputParameterInitialGuess) + "\n") - out_file.write("MAP_logP:" + str(self.map_logP) + "\n") - out_file.write("self.map_parameter_set:" + str( self.map_parameter_set) + "\n") - out_file.write("self.map_index:" + str(self.map_index) + "\n") - out_file.write("self.mu_AP_parameter_set:" + str( self.mu_AP_parameter_set) + "\n") - out_file.write("self.stdap_parameter_set:" + str( self.stdap_parameter_set) + "\n") - out_file.write("self.info_gain:" + str(self.info_gain) + "\n") - out_file.write("evidence:" + str(self.evidence) + "\n") - out_file.write("posterior_cov_matrix:" + "\n" + str(np.cov(self.post_burn_in_samples.T)) + "\n") - if (self.permutation_and_doOptimizeNegLogP == True) or (self.permutation_and_doOptimizeLogP == True): - out_file.write("\n WARNING: It appears this run used a doOptimize with multi-start. In this case, the MAP_logP and map_parameter_set are the optima. However, the mu_AP_parameter_set and stdap_parameter_set are not meaningful, since this was not an even weighted exploration of the posterior.") - relativeDifferenceArray = abs((self.map_parameter_set - self.mu_AP_parameter_set)/self.UserInput.std_prior) - if np.array(relativeDifferenceArray > 0.10).any() == True: - out_file.write("Convergence Status: Warning - The difference between the MAP parameter set and mu_AP parameter set is greater than 10% of the prior standard deviations in at least one parameter. This means that either your posterior distribution is asymmetric or that it is not yet converged. This may mean that you need to increase your mcmc_length, increase or decrease your mcmc_relative_step_length, or change what is used for the model response. There is no general method for knowing the right value for mcmc_relative_step_length since it depends on the sharpness and smoothness of the response. See for example https://www.sciencedirect.com/science/article/pii/S0039602816300632") - else: - out_file.write("Convergence Status: The difference between the MAP parameter set and mu_AP parameter set is less than 10% of the prior standard deviations for each parameter. There is no general method for knowing when the correct solution has been obtained, but this small difference is one sign of a converged solution.") - postBurnInStatistics = [self.map_parameter_set, self.mu_AP_parameter_set, self.stdap_parameter_set, self.evidence, self.info_gain, self.post_burn_in_samples, self.post_burn_in_log_posteriors_un_normed_vec] - if hasattr(self, 'during_burn_in_samples'): - pickleAnObject(np.hstack((self.during_burn_in_log_posteriors_un_normed_vec, self.during_burn_in_samples)),self.UserInput.directories['pickles']+directory_name_suffix+file_name_prefix+'mcmc_burn_in_logP_and_parameter_samples'+file_name_suffix) - np.savetxt(self.UserInput.directories['logs_and_csvs']+directory_name_suffix+file_name_prefix+'mcmc_burn_in_logP_and_parameter_samples'+file_name_suffix+'.csv',np.hstack((self.during_burn_in_log_posteriors_un_normed_vec, self.during_burn_in_samples)), delimiter=",") - pickleAnObject(postBurnInStatistics,self.UserInput.directories['pickles']+directory_name_suffix+file_name_prefix+'mcmc_post_burn_in_statistics'+file_name_suffix) - pickleAnObject(self.map_logP,self.UserInput.directories['pickles']+directory_name_suffix+file_name_prefix+'mcmc_map_logP'+file_name_suffix) - if self.UserInput.parameter_estimation_settings['mcmc_continueSampling'] == True: - pickleAnObject(self.UserInput.InputParameterInitialGuess,self.UserInput.directories['pickles']+directory_name_suffix+file_name_prefix+'mcmc_continued_initial_point_parameters'+file_name_suffix) - else: - pickleAnObject(self.UserInput.InputParameterInitialGuess,self.UserInput.directories['pickles']+directory_name_suffix+file_name_prefix+'mcmc_initial_point_parameters'+file_name_suffix) - if hasattr(self, 'mcmc_last_point_sampled'): - pickleAnObject(self.mcmc_last_point_sampled, self.UserInput.directories['pickles']+directory_name_suffix+file_name_prefix+'mcmc_last_point_sampled'+file_name_suffix) - - #This function is modelled after exportPostBurnInStatistics. That is why it has the form that it does. - def exportPostPermutationStatistics(self, searchType=''): #if it is an mcmc run, then we need to save the sampling as well. - #TODO: Consider to Make header for mcmc_samples_array. Also make exporting the mcmc_samples_array optional. - file_name_prefix, file_name_suffix, directory_name_suffix = self.getParallelProcessingPrefixAndSuffix() #Rather self explanatory. - if (searchType == 'doEnsembleSliceSampling') or (searchType == 'doMetropolisHastings') or (searchType == 'doEnsembleModifiedMHSampling'): #Note: this might be needed for parallel processing, not sure. - mcmc_samples_array = np.hstack((self.post_burn_in_log_posteriors_un_normed_vec,self.post_burn_in_samples)) - np.savetxt(self.UserInput.directories['logs_and_csvs']+directory_name_suffix+file_name_prefix+'permutation_logP_and_parameter_samples'+file_name_suffix+'.csv',mcmc_samples_array, delimiter=",") - pickleAnObject(mcmc_samples_array, self.UserInput.directories['pickles']+directory_name_suffix+file_name_prefix+'permutation_logP_and_parameter_samples'+file_name_suffix) - if self.UserInput.parameter_estimation_settings['exportAllSimulatedOutputs'] == True: #By default, we should not keep this, it's a little too large with large sampling. - try: #The main reason to use a try and except is because this feature has not been implemented for ESS. With ESS, the mcmc_unfiltered_post_burn_in_simulated_outputs would not be retained and the program would crash. - np.savetxt(self.UserInput.directories['logs_and_csvs']+directory_name_suffix+file_name_prefix+'permutation_unfiltered_post_burn_in_simulated_outputs'+file_name_suffix+'.csv',self.post_burn_in_samples_simulatedOutputs, delimiter=",") - np.savetxt(self.UserInput.directories['logs_and_csvs']+directory_name_suffix+file_name_prefix+'permutation_unfiltered_post_burn_in_parameter_samples'+file_name_suffix+'.csv',self.post_burn_in_samples_unfiltered, delimiter=",") - np.savetxt(self.UserInput.directories['logs_and_csvs']+directory_name_suffix+file_name_prefix+'permutation_unfiltered_post_burn_in_log_priors_vec'+file_name_suffix+'.csv',self.post_burn_in_log_posteriors_un_normed_vec_unfiltered, delimiter=",") - np.savetxt(self.UserInput.directories['logs_and_csvs']+directory_name_suffix+file_name_prefix+'permutation_unfiltered_post_burn_in_log_posteriors_un_normed_vec'+file_name_suffix+'.csv',self.post_burn_in_log_priors_vec_unfiltered, delimiter=",") - except: - pass - with open(self.UserInput.directories['logs_and_csvs']+directory_name_suffix+file_name_prefix+'permutation_log_file'+file_name_suffix+".txt", 'w') as out_file: - out_file.write("self.initial_point_parameters:" + str( self.UserInput.InputParameterInitialGuess) + "\n") - out_file.write("MAP_logP:" + str(self.map_logP) + "\n") - out_file.write("self.map_parameter_set:" + str( self.map_parameter_set) + "\n") - if (searchType == 'doEnsembleSliceSampling') or (searchType == 'doMetropolisHastings') or (searchType == 'doEnsembleModifiedMHSampling'): #Below are only for mcmc_sampling - out_file.write("self.map_index:" + str(self.map_index) + "\n") - out_file.write("self.mu_AP_parameter_set:" + str( self.mu_AP_parameter_set) + "\n") - out_file.write("self.stdap_parameter_set:" + str( self.stdap_parameter_set) + "\n") - out_file.write("self.info_gain:" + str(self.info_gain) + "\n") - out_file.write("evidence:" + str(self.evidence) + "\n") - out_file.write("posterior_cov_matrix:" + "\n" + str(np.cov(self.post_burn_in_samples.T)) + "\n") - relativeDifferenceArray = abs((self.map_parameter_set - self.mu_AP_parameter_set)/self.UserInput.std_prior) - if np.array(relativeDifferenceArray > 0.10).any() == True: - out_file.write("Convergence Status: Warning - The difference between the MAP parameter set and mu_AP parameter set is greater than 10% of the prior standard deviations in at least one parameter. This means that either your posterior distribution is asymmetric or that it is not yet converged. This may mean that you need to increase your mcmc_length, increase or decrease your mcmc_relative_step_length, or change what is used for the model response. There is no general method for knowing the right value for mcmc_relative_step_length since it depends on the sharpness and smoothness of the response. See for example https://www.sciencedirect.com/science/article/pii/S0039602816300632") - else: - out_file.write("Convergence Status: The difference between the MAP parameter set and mu_AP parameter set is less than 10% of the prior standard deviations for each parameter. There is no general method for knowing when the correct solution has been obtained, but this small difference is one sign of a converged solution.") - if (searchType == 'doEnsembleSliceSampling') or (searchType == 'doMetropolisHastings') or (searchType == 'doEnsembleModifiedMHSampling'): - postBurnInStatistics = [self.map_parameter_set, self.mu_AP_parameter_set, self.stdap_parameter_set, self.evidence, self.info_gain, self.post_burn_in_samples, self.post_burn_in_log_posteriors_un_normed_vec] - pickleAnObject(postBurnInStatistics, self.UserInput.directories['pickles']+directory_name_suffix+file_name_prefix+'permutation_post_burn_in_statistics'+file_name_suffix) - pickleAnObject(self.map_logP, self.UserInput.directories['pickles']+directory_name_suffix+file_name_prefix+'permutation_map_logP'+file_name_suffix) - pickleAnObject(self.map_parameter_set, self.UserInput.directories['pickles']+directory_name_suffix+file_name_prefix+'permutation_map_parameter_set'+file_name_suffix) - pickleAnObject(self.UserInput.InputParameterInitialGuess, self.UserInput.directories['pickles']+directory_name_suffix+file_name_prefix+'permutation_initial_point_parameters'+file_name_suffix) - - def getConvergenceDiagnostics(self, discrete_chains_post_burn_in_samples=[]): - """ - Guides Integrated Autocorrelation Time and Geweke convergence analysis and makes plots. - - :param samplingFunctionstr (optional): String to define the sampler. (:type: str) - :param discrete_chains_post_burn_in_samples (optional): Array that contains post burn in samples. Shape is (numSamples, numChains, numParams) (:type np.array) - """ - - if (len(discrete_chains_post_burn_in_samples)==0) and (hasattr(self, 'discrete_chains_post_burn_in_samples')): - discrete_chains_post_burn_in_samples = self.discrete_chains_post_burn_in_samples - # check if inputted array is a numpy array. - if type(discrete_chains_post_burn_in_samples).__module__ != np.__name__: - print('The input array needs to a numpy array. If a list was inputted, wrap the variable in np.array(var)') - sys.exit() - # check if array shape is right. - if len(discrete_chains_post_burn_in_samples.shape) != 3: - print('The input array needs to take the shape (numSamples, numChains, numParameters). The current inputs does not have the appropriate dimensions.') - sys.exit() - - - # convergence diagnostic function is called to run calculations and create plots - # outputs are saved as a tuple - #TODO: make its own plot settings in different commit. - try: - convergence_ouputs = calculateAndPlotConvergenceDiagnostics(discrete_chains_post_burn_in_samples, self.UserInput.model['parameterNamesAndMathTypeExpressionsDict'], self.UserInput.scatter_matrix_plots_settings, self.UserInput.directories['graphs']) - except Exception as theError: - print("Warning: Unable to calculate and plot convergence diagnostics. The error was:", theError) - return None #this is to end the function, so it does not crash below. - - - # initialize and populate convergence dictionary in class object - self.convergence = {} - self.convergence['AutoCorrTime'] = {} - self.convergence['Geweke'] = {} - # unpack tuple to save convergence information to self - self.convergence['AutoCorrTime']['window_indices'] = convergence_ouputs[0] - self.convergence['AutoCorrTime']['final_parameter_values'] = convergence_ouputs[1] - self.convergence['AutoCorrTime']['parameter_act_for_each_window'] = convergence_ouputs[2] - self.convergence['Geweke']['window_indices'] = convergence_ouputs[3] - self.convergence['Geweke']['final_combined_parameter_values'] = convergence_ouputs[4] - self.convergence['Geweke']['final_combined_parameter_percent_outlier'] = convergence_ouputs[5] - - - #Our EnsembleModifiedMHSampling is done by the emcee back end. (pip install emcee) - software_name = "emcee" - software_version = "3.1.2" - software_unique_id = "https://github.com/dfm/emcee" - software_kwargs = {"version": software_version, "author": ['Foreman-Mackey, D.', 'Hogg, D.~W.', 'Lang, D.', 'Goodman, J.'], "cite": ["@article{emcee, author = {{Foreman-Mackey}, D. and {Hogg}, D.~W. and {Lang}, D. and {Goodman}, J.}, title = {emcee: The MCMC Hammer}, journal = {PASP}, year = 2013, volume = 125, pages = {306-312}, eprint = {1202.3665}, doi = {10.1086/670067}}"] } - @CiteSoft.function_call_cite(unique_id=software_unique_id, software_name=software_name, **software_kwargs) - def doEnsembleModifiedMHSampling(self, mcmc_nwalkers_direct_input = None, walkerInitialDistribution='UserChoice', walkerInitialDistributionSpread='UserChoice', calculatePostBurnInStatistics=True, mcmc_exportLog ='UserChoice', continueSampling='auto'): - """ - TODO: make params and return definitions along with a short description. - """ - # import the emcee backend module - import emcee - # handle the initial distribution spread with the UserInputs - if walkerInitialDistribution == 'UserChoice': - walkerInitialDistribution = self.UserInput.parameter_estimation_settings['mcmc_walkerInitialDistribution'] - if walkerInitialDistribution.lower() == 'auto': - walkerInitialDistribution = 'sobol' - if str(walkerInitialDistributionSpread) == 'UserChoice': - walkerInitialDistributionSpread = self.UserInput.parameter_estimation_settings['mcmc_walkerInitialDistributionSpread'] - if str(walkerInitialDistributionSpread).lower() == 'auto': - walkerInitialDistributionSpread = 0.866 #This choice is intended to be useful for uniform distribution priors, as described in the UserInput file. - # First check whether the UserInput already has been used to run another MCMC run, and if so make sure it is the same algorithm type - if hasattr(self.UserInput, 'last_MCMC_run_type'): - if self.UserInput.last_MCMC_run_type == 'EJS': - pass - else: - print("ERROR: Two different algorithms of MCMC runs were attempted to be run within the same python instance without reloading the UserInput. To run two MCMC runs of different algorithms in the same python instance is not supported, but can be accomplished by using imp.reload(UserInput) followed by imp.reload(PEUQSE) between changing MCMC algorithms, and which requires re-populating the UserInput with your choices. "); sys.exit() - - #Check if we need to continue sampling, and prepare for it if we need to. - if continueSampling == 'auto': - if ('mcmc_continueSampling' not in self.UserInput.parameter_estimation_settings) or self.UserInput.parameter_estimation_settings['mcmc_continueSampling'] == 'auto': #check that UserInput does not overrule the auto. - if hasattr(self, 'mcmc_last_point_sampled'): #if we have an existing mcmc_last_point_sampled in the object, we will assume more sampling is desired. - continueSampling = True - else: - continueSampling = False - else: continueSampling = self.UserInput.parameter_estimation_settings['mcmc_continueSampling'] - if continueSampling == True: - if hasattr(self, 'mcmc_last_point_sampled'): #If we are continuing from an old mcmc in this object. - self.last_post_burn_in_log_posteriors_un_normed_vec = copy.deepcopy(self.post_burn_in_log_posteriors_un_normed_vec) - self.last_post_burn_in_samples = copy.deepcopy(self.post_burn_in_samples) - else: #Else we need to read from the file. - #First check if we are doing some kind of parallel sampling, because in that case we need to read from the file for our correct process rank. We put that info into the prefix and suffix. - file_name_prefix, file_name_suffix, directory_name_suffix = self.getParallelProcessingPrefixAndSuffix() - self.last_logP_and_parameter_samples_filename = file_name_prefix + "mcmc_logP_and_parameter_samples" + file_name_suffix - self.last_logP_and_parameter_samples_data = unpickleAnObject(self.UserInput.directories['pickles']+self.last_logP_and_parameter_samples_filename) - self.last_post_burn_in_log_posteriors_un_normed_vec = np.array(nestedObjectsFunctions.makeAtLeast_2dNested(self.last_logP_and_parameter_samples_data[:,0])) #First column is the logP - if np.shape(self.last_post_burn_in_log_posteriors_un_normed_vec)[0] == 1: #In this case, need to transpose. - self.last_post_burn_in_log_posteriors_un_normed_vec = self.last_post_burn_in_log_posteriors_un_normed_vec.transpose() - self.last_post_burn_in_samples = np.array(nestedObjectsFunctions.makeAtLeast_2dNested(self.last_logP_and_parameter_samples_data[:,1:])) #later columns are the samples. - if np.shape(self.last_post_burn_in_samples)[0] == 1: #In this case, need to transpose. - self.last_post_burn_in_samples = self.last_post_burn_in_samples.transpose() - self.mcmc_last_point_sampled_filename = file_name_prefix + "mcmc_last_point_sampled" + file_name_suffix - self.mcmc_last_point_sampled_data = unpickleAnObject(self.UserInput.directories['pickles']+self.mcmc_last_point_sampled_filename) - self.mcmc_last_point_sampled = self.mcmc_last_point_sampled_data - self.last_InputParameterInitialGuess_filename = file_name_prefix + "mcmc_initial_point_parameters" + file_name_suffix - self.last_InputParameterInitialGuess_data = unpickleAnObject(self.UserInput.directories['pickles']+self.last_InputParameterInitialGuess_filename) - self.UserInput.InputParameterInitialGuess = self.last_InputParameterInitialGuess_data #populating this because otherwise non-grid Multi-Start will get the wrong values exported. & Same for final plots. - ####these variables need to be made part of UserInput#### - numParameters = len(self.UserInput.mu_prior) #This is the number of parameters. - if 'mcmc_random_seed' in self.UserInput.parameter_estimation_settings: - if isinstance(self.UserInput.parameter_estimation_settings['mcmc_random_seed'], int): #if it's an integer, then it's not a "None" type or string, and we will use it. - np.random.seed(self.UserInput.parameter_estimation_settings['mcmc_random_seed']) - if isinstance(mcmc_nwalkers_direct_input, type(None)): #This is the normal case. - if 'mcmc_nwalkers' not in self.UserInput.parameter_estimation_settings: self.mcmc_nwalkers = 'auto' - else: self.mcmc_nwalkers = self.UserInput.parameter_estimation_settings['mcmc_nwalkers'] - if isinstance(self.mcmc_nwalkers, str): - if self.mcmc_nwalkers.lower() == "auto": - self.mcmc_nwalkers = numParameters*16 # according to zeus paper (https://doi.org/10.1093/mnras/stab2867), 16*D is the optimal number of walkers for emcee - else: #else it is an integer, or a string meant to be an integer. - self.mcmc_nwalkers = int(self.mcmc_nwalkers) - else: #this is mainly for PermutationSearch which will (by default) use the minimum number of walkers per point. - self.mcmc_nwalkers = int(mcmc_nwalkers_direct_input) - if (self.mcmc_nwalkers%2) != 0: #Check that it's even. If not, add one walker. - print("The EnsembleJumpSampling requires an even number of Walkers. Adding one Walker.") - self.mcmc_nwalkers = self.mcmc_nwalkers + 1 - requested_mcmc_steps = self.UserInput.parameter_estimation_settings['mcmc_length'] - nEnsembleSteps = int(requested_mcmc_steps/self.mcmc_nwalkers) #We calculate the calculate number of the Ensemble Steps from the total sampling steps requested divided by self.mcmc_nwalkers. - if nEnsembleSteps == 0: - nEnsembleSteps = 1 - if str(self.UserInput.parameter_estimation_settings['mcmc_burn_in']).lower() == 'auto': self.mcmc_burn_in_length = int(requested_mcmc_steps*0.1) # burn in is relative to entire ensemble - else: self.mcmc_burn_in_length = self.UserInput.parameter_estimation_settings['mcmc_burn_in'] - if 'mcmc_maxiter' not in self.UserInput.parameter_estimation_settings: mcmc_maxiter = 1E6 #The default from zeus is 1E4, but I have found that is not always sufficient. - else: mcmc_maxiter = self.UserInput.parameter_estimation_settings['mcmc_maxiter'] - ####end of user input variables#### - #now to do the mcmc - # if the initial guess is a string, read its pickle file for starting points for walkers - # if this read array is a single point, proceed as normal - # if this read array is multiple points, make sure that it has the same shape as number of walkers - # else, print error and exit - loaded_initial_guess_flag = False # flag to switch allow normal generation of initial points to guided if the loaded points are a single point - if isinstance(self.UserInput.model['InputParameterInitialGuess'], str): # if yes, then assume a pickle file is imported - # try to read from current directory and pickle directory - start_point_pkl_file_name = self.UserInput.model['InputParameterInitialGuess'] - if '.pkl' in start_point_pkl_file_name: # remove '.pkl' from string if it is there - start_point_pkl_file_name = start_point_pkl_file_name.replace('.pkl', '') - from os.path import exists - # check if file exists in current working directory - if exists(start_point_pkl_file_name + '.pkl'): - walkerStartPoints = unpickleAnObject(start_point_pkl_file_name) - loaded_initial_guess_flag = True # makes sure the pickled array is used for starting points - # check if file exists in pickle directory - elif exists(self.UserInput.directories['pickles'] + start_point_pkl_file_name + '.pkl'): - walkerStartPoints = unpickleAnObject(self.UserInput.directories['pickles'] + start_point_pkl_file_name) - loaded_initial_guess_flag = True # makes sure the pickled array is used for starting points - else: - print('The pickled object for initial guess points must exist in base directory or pickles directory.') - sys.exit() - # check if start points have the same amount of walkers - initial_guess_mcmc_nwalkers = walkerStartPoints.shape[0] # last points have shape (nwalkers, nparams) - if len(walkerStartPoints.shape) == 1: - loaded_initial_guess_flag = False # set this to false so initial points can be generated - elif initial_guess_mcmc_nwalkers != self.mcmc_nwalkers: - print(f'Initial guess walker number must be the same shape as mcmc_nwalkers: {self.mcmc_nwalkers} mcmc walkers but initial guess had {initial_guess_mcmc_nwalkers} walkers') - sys.exit() - if continueSampling == False: - # check if initial guess is loaded - if not loaded_initial_guess_flag: - walkerStartPoints = self.generateInitialPoints(initialPointsDistributionType=walkerInitialDistribution, numStartPoints = self.mcmc_nwalkers,relativeInitialDistributionSpread=walkerInitialDistributionSpread) #making the first set of starting points. - elif continueSampling == True: - # make burn in samples 0 since burn in has already occurred - self.mcmc_burn_in_length = 0 - # start points have the same amount of walkers - previous_mcmc_nwalkers = self.mcmc_last_point_sampled.shape[0] # last points have shape (nwalkers, nparams) - if previous_mcmc_nwalkers != self.mcmc_nwalkers: - print(f'Setting walkers to be the same as the previous run for continue sampling: from {self.mcmc_nwalkers} to {previous_mcmc_nwalkers} walkers') - self.mcmc_nwalkers = previous_mcmc_nwalkers - # starts from the last set of chains - walkerStartPoints = self.mcmc_last_point_sampled - emcee_sampler = emcee.EnsembleSampler(self.mcmc_nwalkers, numParameters, log_prob_fn=self.getLogP) - for trialN in range(0,1000):#Todo: This number of this range is hardcoded but should probably be a user selection. - try: - emcee_sampler.run_mcmc(walkerStartPoints, nEnsembleSteps,progress=True) - break - except Exception as exceptionObject: - #TODO: come up with exception summaries like this. - if "finite" in str(exceptionObject): #This means there is an error message from zeus saying " Invalid walker initial positions! Initialise walkers from positions of finite log probability." - print("One of the starting points has a non-finite probability. Picking new starting points. If you see this message like an infinite loop, consider trying the doEnsembleSliceSampling optional argument of walkerInitialDistributionSpread. It has a default value of 1.0. Reducing this value to 0.25, for example, may work if your initial guess is near the maximum of the posterior distribution.") - #Need to make the sampler again, in this case, to throw away anything that has happened so far - walkerStartPoints = self.generateInitialPoints(initialPointsDistributionType=walkerInitialDistribution, numStartPoints = self.mcmc_nwalkers, relativeInitialDistributionSpread=walkerInitialDistributionSpread) - emcee_sampler = emcee.EnsembleSampler(self.mcmc_nwalkers, numParameters, log_prob_fn=self.getLogP) - elif "maxiter" in str(exceptionObject): #This means there is an error message from zeus that the max iterations have been reached. - print("WARNING: One or more of the Ensemble Slice Sampling walkers encountered an error. The value of mcmc_maxiter is currently", mcmc_maxiter, "you should increase it, perhaps by a factor of 1E2.") - else: - print(str(exceptionObject)) - sys.exit() - #Now to keep the results: - #TODO: when implementing convergence diagnostics, extract more chain information from get_chain without flattening (i think) - adjusted_mcmc_burn_in_length = int(self.mcmc_burn_in_length / self.mcmc_nwalkers) - self.post_burn_in_samples = emcee_sampler.get_chain(flat=True, discard = adjusted_mcmc_burn_in_length ) - discrete_chains_post_burn_in_samples = emcee_sampler.get_chain(flat=False, discard = adjusted_mcmc_burn_in_length) - if self.UserInput.parameter_estimation_settings['mcmc_store_samplingObject'] == True: - self.discrete_chains_post_burn_in_samples = discrete_chains_post_burn_in_samples - self.post_burn_in_log_posteriors_un_normed_vec = np.atleast_2d(emcee_sampler.get_log_prob(flat=True, discard=adjusted_mcmc_burn_in_length)).transpose() #Needed to make it 2D and transpose. - self.mcmc_last_point_sampled = discrete_chains_post_burn_in_samples[-1] #gets the last sample of each chain. - # Populate the last_MCMC_run_type in UserInput so that there is a record of which MCMC run type was last used with this UserInput instance. - self.UserInput.last_MCMC_run_type = 'EJS' - if continueSampling == True: - self.post_burn_in_samples = np.vstack((self.last_post_burn_in_samples, self.post_burn_in_samples )) - self.post_burn_in_log_posteriors_un_normed_vec = np.vstack( (self.last_post_burn_in_log_posteriors_un_normed_vec, self.post_burn_in_log_posteriors_un_normed_vec)) - #####BELOW HERE SHOUD BE SAME FOR doMetropolisHastings and doEnsembleSliceSampling and doEnsembleModifiedMHSampling##### - if (self.UserInput.parameter_estimation_settings['mcmc_parallel_sampling'] or self.UserInput.parameter_estimation_settings['multistart_parallel_sampling']) == True: #If we're using certain parallel processing, we need to make calculatePostBurnInStatistics into True. - calculatePostBurnInStatistics = True - if self.UserInput.parameter_estimation_settings['mcmc_parallel_sampling']: #mcmc_exportLog == True is needed for mcmc_parallel_sampling, but not for multistart_parallel_sampling - mcmc_exportLog=True - if self.UserInput.parameter_estimation_settings['mcmc_store_samplingObject']: - self.samplerType = 'EnsembleModifiedMHSampling' - self.samplingObject = emcee_sampler - if calculatePostBurnInStatistics == True: - self.calculatePostBurnInStatistics(calculate_post_burn_in_log_priors_vec = True) #This function call will also filter the lowest probability samples out, when using default settings. - if self.UserInput.parameter_estimation_settings['convergence_diagnostics']: #Run convergence diagnostics if UserInput defines it as True - self.getConvergenceDiagnostics(discrete_chains_post_burn_in_samples) - if str(mcmc_exportLog) == 'UserChoice': - mcmc_exportLog = bool(self.UserInput.parameter_estimation_settings['mcmc_exportLog']) - if mcmc_exportLog == True: - self.exportPostBurnInStatistics() - if self.UserInput.parameter_estimation_settings['mcmc_parallel_sampling'] == True: #We don't call the below function at this time unless we are doing mcmc_parallel_sampling. For multistart_parallel_sampling the consolidation is done elsewhere and differently. - self.consolidate_parallel_sampling_data(parallelizationType="equal", mpi_cached_files_prefix='mcmc') - return [self.map_parameter_set, self.mu_AP_parameter_set, self.stdap_parameter_set, self.evidence, self.info_gain, self.post_burn_in_samples, self.post_burn_in_log_posteriors_un_normed_vec] - else: #In this case, we are probably doing a PermutationSearch or something like that and only want self.map_logP. - self.map_logP = max(self.post_burn_in_log_posteriors_un_normed_vec) - self.map_index = list(self.post_burn_in_log_posteriors_un_normed_vec).index(self.map_logP) #This does not have to be a unique answer, just one of them places which gives map_logP. - self.map_parameter_set = self.post_burn_in_samples[self.map_index] #This is the point with the highest probability in the posterior. - return self.map_logP - - # pointer to Ensemble Modified MH sampling - # doEnsembleJumpSampling is provided for user convenience as a simpler choice of sampling - doEnsembleJumpSampling = doEnsembleModifiedMHSampling - - - #Our EnsembleSliceSampling is done by the Zeus back end. (pip install zeus-mcmc) - software_name = "zeus" - software_version = "2.0.0" - software_unique_id = "https://github.com/minaskar/zeus" - software_kwargs = {"version": software_version, "author": ["Minas Karamanis", "Florian Beutler"], "cite": ["Minas Karamanis and Florian Beutler. zeus: A Python Implementation of the Ensemble Slice Sampling method. 2020. ","https://arxiv.org/abs/2002.06212", "@article{ess, title={Ensemble Slice Sampling}, author={Minas Karamanis and Florian Beutler}, year={2020}, eprint={2002.06212}, archivePrefix={arXiv}, primaryClass={stat.ML} }"] } - #@CiteSoft.after_call_compile_consolidated_log() #This is from the CiteSoft module. - @CiteSoft.function_call_cite(unique_id=software_unique_id, software_name=software_name, **software_kwargs) - def doEnsembleSliceSampling(self, mcmc_nwalkers_direct_input = None, walkerInitialDistribution='UserChoice', walkerInitialDistributionSpread='UserChoice', movesType='UserChoice', calculatePostBurnInStatistics=True, mcmc_exportLog ='UserChoice', continueSampling='auto'): - #The distribution of walkers intial points can be uniform or gaussian or identical. As of Oct 2020, default is uniform spread around the intial guess. - #The mcmc_nwalkers_direct_input is really meant for PermutationSearch to override the other settings, though of course people could also use it directly. - #The walkerInitialDistributionSpread is in relative units (relative to standard deviations). In the case of a uniform inital distribution the default level of spread is actually across two standard deviations, so the walkerInitialDistributionSpread is relative to that (that is, a value of 2 would give 2*2 = 4 for the full spread in each direction from the initial guess). - import zeus - if walkerInitialDistribution == 'UserChoice': - walkerInitialDistribution = self.UserInput.parameter_estimation_settings['mcmc_walkerInitialDistribution'] - if walkerInitialDistribution.lower() == 'auto': - walkerInitialDistribution = 'sobol' - if str(walkerInitialDistributionSpread) == 'UserChoice': - walkerInitialDistributionSpread = self.UserInput.parameter_estimation_settings['mcmc_walkerInitialDistributionSpread'] - if str(walkerInitialDistributionSpread).lower() == 'auto': - walkerInitialDistributionSpread = 0.866 #This choice is intended to be useful for uniform distribution priors, as described in the UserInput file. - # First check whether the UserInput already has been used to run another MCMC run, and if so make sure it is the same algorithm type - if hasattr(self.UserInput, 'last_MCMC_run_type'): - if self.UserInput.last_MCMC_run_type == 'ESS': - pass - else: - print("ERROR: Two different algorithms of MCMC runs were attempted to be run within the same python instance without reloading the UserInput. To run two MCMC runs of different algorithms in the same python instance is not supported, but can be accomplished by using imp.reload(UserInput) followed by imp.reload(PEUQSE) between changing MCMC algorithms, and which requires re-populating the UserInput with your choices. "); sys.exit() - - #Check if we need to continue sampling, and prepare for it if we need to. - if continueSampling == 'auto': - if ('mcmc_continueSampling' not in self.UserInput.parameter_estimation_settings) or self.UserInput.parameter_estimation_settings['mcmc_continueSampling'] == 'auto': #check that UserInput does not overrule the auto. - if hasattr(self, 'mcmc_last_point_sampled'): #if we have an existing mcmc_last_point_sampled in the object, we will assume more sampling is desired. - continueSampling = True - else: - continueSampling = False - else: continueSampling = self.UserInput.parameter_estimation_settings['mcmc_continueSampling'] - if continueSampling == True: - if hasattr(self, 'mcmc_last_point_sampled'): #If we are continuing from an old mcmc in this object. - self.last_post_burn_in_log_posteriors_un_normed_vec = copy.deepcopy(self.post_burn_in_log_posteriors_un_normed_vec) - self.last_post_burn_in_samples = copy.deepcopy(self.post_burn_in_samples) - else: #Else we need to read from the file. - #First check if we are doing some kind of parallel sampling, because in that case we need to read from the file for our correct process rank. We put that info into the prefix and suffix. - file_name_prefix, file_name_suffix, directory_name_suffix = self.getParallelProcessingPrefixAndSuffix() - self.last_logP_and_parameter_samples_filename = file_name_prefix + "mcmc_logP_and_parameter_samples" + file_name_suffix - self.last_logP_and_parameter_samples_data = unpickleAnObject(self.UserInput.directories['pickles']+self.last_logP_and_parameter_samples_filename) - self.last_post_burn_in_log_posteriors_un_normed_vec = np.array(nestedObjectsFunctions.makeAtLeast_2dNested(self.last_logP_and_parameter_samples_data[:,0])) #First column is the logP - if np.shape(self.last_post_burn_in_log_posteriors_un_normed_vec)[0] == 1: #In this case, need to transpose. - self.last_post_burn_in_log_posteriors_un_normed_vec = self.last_post_burn_in_log_posteriors_un_normed_vec.transpose() - self.last_post_burn_in_samples = np.array(nestedObjectsFunctions.makeAtLeast_2dNested(self.last_logP_and_parameter_samples_data[:,1:])) #later columns are the samples. - if np.shape(self.last_post_burn_in_samples)[0] == 1: #In this case, need to transpose. - self.last_post_burn_in_samples = self.last_post_burn_in_samples.transpose() - self.mcmc_last_point_sampled_filename = file_name_prefix + "mcmc_last_point_sampled" + file_name_suffix - self.mcmc_last_point_sampled_data = unpickleAnObject(self.UserInput.directories['pickles']+self.mcmc_last_point_sampled_filename) - self.mcmc_last_point_sampled = self.mcmc_last_point_sampled_data - self.last_InputParameterInitialGuess_filename = file_name_prefix + "mcmc_initial_point_parameters" + file_name_suffix - self.last_InputParameterInitialGuess_data = unpickleAnObject(self.UserInput.directories['pickles']+self.last_InputParameterInitialGuess_filename) - self.UserInput.InputParameterInitialGuess = self.last_InputParameterInitialGuess_data #populating this because otherwise non-grid Multi-Start will get the wrong values exported. & Same for final plots. - ####these variables need to be made part of UserInput#### - numParameters = len(self.UserInput.mu_prior) #This is the number of parameters. - if 'mcmc_random_seed' in self.UserInput.parameter_estimation_settings: - if type(self.UserInput.parameter_estimation_settings['mcmc_random_seed']) == type(1): #if it's an integer, then it's not a "None" type or string, and we will use it. - np.random.seed(self.UserInput.parameter_estimation_settings['mcmc_random_seed']) - if type(mcmc_nwalkers_direct_input) == type(None): #This is the normal case. - if 'mcmc_nwalkers' not in self.UserInput.parameter_estimation_settings: self.mcmc_nwalkers = 'auto' - else: self.mcmc_nwalkers = self.UserInput.parameter_estimation_settings['mcmc_nwalkers'] - if type(self.mcmc_nwalkers) == type("string"): - if self.mcmc_nwalkers.lower() == "auto": - self.mcmc_nwalkers = numParameters*4 # according to zeus paper (https://doi.org/10.1093/mnras/stab2867), 4*D is the optimal number of walkers for general problems. Multimodal problems benefit from additional walkers. - else: #else it is an integer, or a string meant to be an integer. - self.mcmc_nwalkers = int(self.mcmc_nwalkers) - else: #this is mainly for PermutationSearch which will (by default) use the minimum number of walkers per point. - self.mcmc_nwalkers = int(mcmc_nwalkers_direct_input) - if (self.mcmc_nwalkers%2) != 0: #Check that it's even. If not, add one walker. - print("The EnsembleSliceSampling requires an even number of Walkers. Adding one Walker.") - self.mcmc_nwalkers = self.mcmc_nwalkers + 1 - requested_mcmc_steps = self.UserInput.parameter_estimation_settings['mcmc_length'] - nEnsembleSteps = int(requested_mcmc_steps/self.mcmc_nwalkers) #We calculate the calculate number of the Ensemble Steps from the total sampling steps requested divided by self.mcmc_nwalkers. - if nEnsembleSteps == 0: - nEnsembleSteps = 1 - if str(self.UserInput.parameter_estimation_settings['mcmc_burn_in']).lower() == 'auto': self.mcmc_burn_in_length = int(requested_mcmc_steps*0.1) # burn in is relative to entire ensemble - else: self.mcmc_burn_in_length = self.UserInput.parameter_estimation_settings['mcmc_burn_in'] - if 'mcmc_maxiter' not in self.UserInput.parameter_estimation_settings: mcmc_maxiter = 1E6 #The default from zeus is 1E4, but I have found that is not always sufficient. - else: mcmc_maxiter = self.UserInput.parameter_estimation_settings['mcmc_maxiter'] - # make the move objects from the UserInput or argument specification - if movesType == 'UserChoice': movesType = self.UserInput.parameter_estimation_settings['mcmc_movesType'] - if movesType.lower() == 'auto': movesTypeObject = zeus.moves.DifferentialMove() - elif movesType.lower() == 'differential': movesTypeObject = zeus.moves.DifferentialMove() - elif movesType.lower() == 'global': movesTypeObject = zeus.moves.GlobalMove(n_components=4) #the n_components (believe it means number of modes to expect), has been hard coded to 4 from the default of 5. This was required to have Example00c2 to run without crashing. - elif movesType.lower() == 'gaussian': movesTypeObject = zeus.moves.GaussianMove() - elif movesType.lower() == 'kde': movesTypeObject = zeus.moves.KDEMove() - else: print("The move type must be one of the following: ['auto', 'differential', 'global', 'gaussian', 'kde']") - ####end of user input variables#### - #now to do the mcmc - # if the initial guess is a string, read its pickle file for starting points for walkers - # if this read array is a single point, proceed as normal - # if this read array is multiple points, make sure that it has the same shape as number of walkers - # else, print error and exit - loaded_initial_guess_flag = False # flag to switch allow normal generation of initial points to guided if the loaded points are a single point - if isinstance(self.UserInput.model['InputParameterInitialGuess'], str): # if yes, then assume a pickle file is imported - # try to read from current directory and pickle directory - start_point_pkl_file_name = self.UserInput.model['InputParameterInitialGuess'] - if '.pkl' in start_point_pkl_file_name: # remove '.pkl' from string if it is there - start_point_pkl_file_name = start_point_pkl_file_name.replace('.pkl', '') - from os.path import exists - # check if file exists in current working directory - if exists(start_point_pkl_file_name + '.pkl'): - walkerStartPoints = unpickleAnObject(start_point_pkl_file_name) - loaded_initial_guess_flag = True # makes sure the pickled array is used for starting points - # check if file exists in pickle directory - elif exists(self.UserInput.directories['pickles'] + start_point_pkl_file_name + '.pkl'): - walkerStartPoints = unpickleAnObject(self.UserInput.directories['pickles'] + start_point_pkl_file_name) - loaded_initial_guess_flag = True # makes sure the pickled array is used for starting points - else: - print('The pickled object for initial guess points must exist in base directory or pickles directory.') - sys.exit() - # check if start points have the same amount of walkers - initial_guess_mcmc_nwalkers = walkerStartPoints.shape[0] # last points have shape (nwalkers, nparams) - if len(walkerStartPoints.shape) == 1: - loaded_initial_guess_flag = False # set this to false so initial points can be generated - elif initial_guess_mcmc_nwalkers != self.mcmc_nwalkers: - print(f'Initial guess walker number must be the same shape as mcmc_nwalkers: {self.mcmc_nwalkers} mcmc walkers but initial guess had {initial_guess_mcmc_nwalkers} walkers') - sys.exit() - if continueSampling == False: - # check if initial guess is loaded - if not loaded_initial_guess_flag: - walkerStartPoints = self.generateInitialPoints(initialPointsDistributionType=walkerInitialDistribution, numStartPoints = self.mcmc_nwalkers,relativeInitialDistributionSpread=walkerInitialDistributionSpread) #making the first set of starting points. - elif continueSampling == True: - # make burn in samples 0 since burn in has already occurred - self.mcmc_burn_in_length = 0 - # start points have the same amount of walkers - previous_mcmc_nwalkers = self.mcmc_last_point_sampled.shape[0] # last points have shape (nwalkers, nparams) - if previous_mcmc_nwalkers != self.mcmc_nwalkers: - print(f'Setting walkers to be the same as the previous run for continue sampling: from {self.mcmc_nwalkers} to {previous_mcmc_nwalkers} walkers') - self.mcmc_nwalkers = previous_mcmc_nwalkers - # start walkers at last walker points - walkerStartPoints = self.mcmc_last_point_sampled - # use global move if continue sampling occurs and movesType is on auto - if movesType.lower() == 'auto': movesTypeObject = zeus.moves.GlobalMove(n_components=4); print('Using Global Move in continue sampling') - # walkerStartPoints = self.map_parameter_set #used to be self.mcmc_last_point_sampled. However, ESS works best when sampling near the peak (if there is a monomodoal HPD). - zeus_sampler = zeus.EnsembleSampler(self.mcmc_nwalkers, numParameters, logprob_fn=self.getLogP, maxiter=mcmc_maxiter, moves=movesTypeObject) #maxiter=1E4 is the typical number, but we may want to increase it based on some UserInput variable. - for trialN in range(0,1000):#Todo: This number of this range is hardcoded but should probably be a user selection. - try: - zeus_sampler.run_mcmc(walkerStartPoints, nEnsembleSteps) - break - except Exception as exceptionObject: - if "finite" in str(exceptionObject): #This means there is an error message from zeus saying " Invalid walker initial positions! Initialise walkers from positions of finite log probability." - print("One of the starting points has a non-finite probability. Picking new starting points. If you see this message like an infinite loop, consider trying the doEnsembleSliceSampling optional argument of walkerInitialDistributionSpread. It has a default value of 1.0. Reducing this value to 0.25, for example, may work if your initial guess is near the maximum of the posterior distribution.") - #Need to make the sampler again, in this case, to throw away anything that has happened so far - walkerStartPoints = self.generateInitialPoints(initialPointsDistributionType=walkerInitialDistribution, numStartPoints = self.mcmc_nwalkers, relativeInitialDistributionSpread=walkerInitialDistributionSpread) - zeus_sampler = zeus.EnsembleSampler(self.mcmc_nwalkers, numParameters, logprob_fn=self.getLogP, maxiter=mcmc_maxiter, moves=movesTypeObject) #maxiter=1E4 is the typical number, but we may want to increase it based on some UserInput variable. - elif "maxiter" in str(exceptionObject): #This means there is an error message from zeus that the max iterations have been reached. - print("WARNING: One or more of the Ensemble Slice Sampling walkers encountered an error. The value of mcmc_maxiter is currently", mcmc_maxiter, "you should increase it, perhaps by a factor of 1E2.") - else: - print(str(exceptionObject)) - sys.exit() - #Now to keep the results: - adjusted_mcmc_burn_in_length = int(self.mcmc_burn_in_length / self.mcmc_nwalkers) - self.post_burn_in_samples = zeus_sampler.samples.flatten(discard = adjusted_mcmc_burn_in_length ) - discrete_chains_post_burn_in_samples = zeus_sampler.get_chain(discard = adjusted_mcmc_burn_in_length) - if self.UserInput.parameter_estimation_settings['mcmc_store_samplingObject'] == True: - self.discrete_chains_post_burn_in_samples = discrete_chains_post_burn_in_samples - self.post_burn_in_log_posteriors_un_normed_vec = np.atleast_2d(zeus_sampler.samples.flatten_logprob(discard=adjusted_mcmc_burn_in_length)).transpose() #Needed to make it 2D and transpose. - self.mcmc_last_point_sampled = discrete_chains_post_burn_in_samples[-1] #Note that for **zeus** the last point sampled is actually an array of points equal to the number of walkers. - # Populate the last_MCMC_run_type in UserInput so that there is a record of which MCMC run type was last used with this UserInput instance. - self.UserInput.last_MCMC_run_type = 'ESS' - if continueSampling == True: - self.post_burn_in_samples = np.vstack((self.last_post_burn_in_samples, self.post_burn_in_samples )) - self.post_burn_in_log_posteriors_un_normed_vec = np.vstack( (self.last_post_burn_in_log_posteriors_un_normed_vec, self.post_burn_in_log_posteriors_un_normed_vec)) - #####BELOW HERE SHOUD BE SAME FOR doMetropolisHastings and doEnsembleSliceSampling and doEnsembleModifiedMHSampling##### - if (self.UserInput.parameter_estimation_settings['mcmc_parallel_sampling'] or self.UserInput.parameter_estimation_settings['multistart_parallel_sampling']) == True: #If we're using certain parallel processing, we need to make calculatePostBurnInStatistics into True. - calculatePostBurnInStatistics = True; - if self.UserInput.parameter_estimation_settings['mcmc_parallel_sampling']: #mcmc_exportLog == True is needed for mcmc_parallel_sampling, but not for multistart_parallel_sampling - mcmc_exportLog=True - if self.UserInput.parameter_estimation_settings['mcmc_store_samplingObject']: - self.samplerType = 'EnsembleSliceSampling' - self.samplingObject = zeus_sampler - if calculatePostBurnInStatistics == True: - self.calculatePostBurnInStatistics(calculate_post_burn_in_log_priors_vec = True) #This function call will also filter the lowest probability samples out, when using default settings. - if self.UserInput.parameter_estimation_settings['convergence_diagnostics']: #Run convergence diagnostics if UserInput defines it as True - self.getConvergenceDiagnostics(discrete_chains_post_burn_in_samples) - if str(mcmc_exportLog) == 'UserChoice': - mcmc_exportLog = bool(self.UserInput.parameter_estimation_settings['mcmc_exportLog']) - if mcmc_exportLog == True: - self.exportPostBurnInStatistics() - if self.UserInput.parameter_estimation_settings['mcmc_parallel_sampling'] == True: #We don't call the below function at this time unless we are doing mcmc_parallel_sampling. For multistart_parallel_sampling the consolidation is done elsewhere and differently. - self.consolidate_parallel_sampling_data(parallelizationType="equal", mpi_cached_files_prefix='mcmc') - return [self.map_parameter_set, self.mu_AP_parameter_set, self.stdap_parameter_set, self.evidence, self.info_gain, self.post_burn_in_samples, self.post_burn_in_log_posteriors_un_normed_vec] - else: #In this case, we are probably doing a PermutationSearch or something like that and only want self.map_logP. - self.map_logP = max(self.post_burn_in_log_posteriors_un_normed_vec) - self.map_index = list(self.post_burn_in_log_posteriors_un_normed_vec).index(self.map_logP) #This does not have to be a unique answer, just one of them places which gives map_logP. - self.map_parameter_set = self.post_burn_in_samples[self.map_index] #This is the point with the highest probability in the posterior. - return self.map_logP - - def doEnsembleSliceSamplingGM(self): - """A wrapper for Enseble Slice Sampler that uses Global Move""" - self.doEnsembleSliceSampling(movesType='global') - - #main function to get samples #TODO: Maybe Should return map_log_P and mu_AP_log_P? - #@CiteSoft.after_call_compile_consolidated_log() #This is from the CiteSoft module. - def doMetropolisHastings(self, calculatePostBurnInStatistics = True, mcmc_exportLog='UserChoice', continueSampling = 'auto'): - # First check whether the UserInput already has been used to run another MCMC run, and if so make sure it is the same algorithm type - if hasattr(self.UserInput, 'last_MCMC_run_type'): - if self.UserInput.last_MCMC_run_type == 'MH': - pass - else: - print("ERROR: Two different algorithms of MCMC runs were attempted to be run within the same python instance without reloading the UserInput. To run two MCMC runs of different algorithms in the same python instance is not supported, but can be accomplished by using imp.reload(UserInput) followed by imp.reload(PEUQSE) between changing MCMC algorithms, and which requires re-populating the UserInput with your choices. "); sys.exit() - - #Check if we need to continue sampling, and prepare for it if we need to. - if continueSampling == 'auto': - if ('mcmc_continueSampling' not in self.UserInput.parameter_estimation_settings) or self.UserInput.parameter_estimation_settings['mcmc_continueSampling'] == 'auto': #check that UserInput does not overrule the auto. - if hasattr(self, 'mcmc_last_point_sampled'): #if we have an existing mcmc_last_point_sampled in the object, we will assume more sampling is desired. - continueSampling = True - else: - continueSampling = False - else: continueSampling = self.UserInput.parameter_estimation_settings['mcmc_continueSampling'] - if continueSampling == True: - if hasattr(self, 'mcmc_last_point_sampled'): #if If we are continuing from an old - self.last_post_burn_in_log_posteriors_un_normed_vec = copy.deepcopy(self.post_burn_in_log_posteriors_un_normed_vec) - self.last_post_burn_in_samples = copy.deepcopy(self.post_burn_in_samples) - else: #Else we need to read from the file. - #First check if we are doing some kind of parallel sampling, because in that case we need to read from the file for our correct process rank. We put that info into the prefix and suffix. - file_name_prefix, file_name_suffix, directory_name_suffix = self.getParallelProcessingPrefixAndSuffix() - self.last_logP_and_parameter_samples_filename = file_name_prefix + "mcmc_logP_and_parameter_samples" + file_name_suffix - self.last_logP_and_parameter_samples_data = unpickleAnObject(self.UserInput.directories['pickles']+self.last_logP_and_parameter_samples_filename) - self.last_post_burn_in_log_posteriors_un_normed_vec = np.array(nestedObjectsFunctions.makeAtLeast_2dNested(self.last_logP_and_parameter_samples_data[:,0])) #First column is the logP - if np.shape(self.last_post_burn_in_log_posteriors_un_normed_vec)[0] == 1: #In this case, need to transpose. - self.last_post_burn_in_log_posteriors_un_normed_vec = self.last_post_burn_in_log_posteriors_un_normed_vec.transpose() - self.last_post_burn_in_samples = np.array(nestedObjectsFunctions.makeAtLeast_2dNested(self.last_logP_and_parameter_samples_data[:,1:])) #later columns are the samples. - if np.shape(self.last_post_burn_in_samples)[0] == 1: #In this case, need to transpose. - self.last_post_burn_in_samples = self.last_post_burn_in_samples.transpose() - self.mcmc_last_point_sampled = self.last_post_burn_in_samples[-1] - self.last_InputParameterInitialGuess_filename = file_name_prefix + "mcmc_initial_point_parameters" + file_name_suffix - self.last_InputParameterInitialGuess_data = unpickleAnObject(self.UserInput.directories['pickles']+self.last_InputParameterInitialGuess_filename) - self.UserInput.InputParameterInitialGuess = self.last_InputParameterInitialGuess_data #populating this because otherwise non-grid Multi-Start will get the wrong values exported. & Same for final plots. - #Setting burn_in_length in below few lines (including case for continued sampling). - if str(self.UserInput.parameter_estimation_settings['mcmc_burn_in']).lower() == 'auto': self.mcmc_burn_in_length = int(self.UserInput.parameter_estimation_settings['mcmc_length']*0.1) - else: self.mcmc_burn_in_length = self.UserInput.parameter_estimation_settings['mcmc_burn_in'] - if continueSampling == True: - self.mcmc_burn_in_length = 0 - if 'mcmc_random_seed' in self.UserInput.parameter_estimation_settings: - if type(self.UserInput.parameter_estimation_settings['mcmc_random_seed']) == type(1): #if it's an integer, then it's not a "None" type or string, and we will use it. - np.random.seed(self.UserInput.parameter_estimation_settings['mcmc_random_seed']) - samples_simulatedOutputs = np.zeros((self.UserInput.parameter_estimation_settings['mcmc_length'],self.UserInput.num_data_points)) - samples = np.zeros((self.UserInput.parameter_estimation_settings['mcmc_length'],len(self.UserInput.mu_prior))) - mcmc_step_modulation_history = np.zeros((self.UserInput.parameter_estimation_settings['mcmc_length'])) #TODO: Make this optional for efficiency. #This allows the steps to be larger or smaller. Make this same length as samples. In future, should probably be same in other dimension also, but that would require 2D sampling with each step. - if continueSampling == False: - samples[0,:]=self.UserInput.InputParameterInitialGuess # Initialize the chain. Theta is initialized as the starting point of the chain. It is placed at the prior mean if an initial guess is not provided.. Do not use self.UserInput.model['InputParameterInitialGuess'] because that doesn't work with reduced parameter space feature. - elif continueSampling == True: - samples[0,:]= self.mcmc_last_point_sampled - samples_drawn = samples*1.0 #this includes points that were rejected. #TODO: make this optional for efficiency. - log_likelihoods_vec = np.zeros((self.UserInput.parameter_estimation_settings['mcmc_length'],1)) - log_posteriors_un_normed_vec = np.zeros((self.UserInput.parameter_estimation_settings['mcmc_length'],1)) - log_postereriors_drawn = np.zeros((self.UserInput.parameter_estimation_settings['mcmc_length'])) #TODO: make this optional for efficiency. We don't want this to be 2D, so we don't copy log_posteriors_un_normed_vec. - log_priors_vec = np.zeros((self.UserInput.parameter_estimation_settings['mcmc_length'],1)) - #Code to initialize checkpoints. - if type(self.UserInput.parameter_estimation_settings['mcmc_checkPointFrequency']) != type(None): - print("Starting MCMC sampling.") - timeOfFirstCheckpoint = time.time() - timeCheckpoint = time.time() - timeOfFirstCheckpoint #First checkpoint at time 0. - numCheckPoints = self.UserInput.parameter_estimation_settings['mcmc_length']/self.UserInput.parameter_estimation_settings['mcmc_checkPointFrequency'] - #Before sampling should fill in the first entry for the posterior vector we have created. #FIXME: It would probably be better to start with i of 0 in below sampling loop. I believe that right now the "burn in" and "samples" arrays are actually off by an index of 1. But trying to change that alters their length relative to other arrays and causes problems. Since we always do many samples and this only affects the initial point being averaged in twice, it is not a major problem. It's also avoided if people use a burn in of at least 1. - log_posteriors_un_normed_vec[0]= self.getLogP(samples[0]) - for i in range(1, self.UserInput.parameter_estimation_settings['mcmc_length']): #FIXME: Don't we need to start with i of 0? - sampleNumber = i #This is so that later we can change it to i+1 if the loop starts from i of 0 in the future. - if self.UserInput.parameter_estimation_settings['verbose']: print("MCMC sample number", sampleNumber) - if self.UserInput.parameter_estimation_settings['mcmc_mode'] == 'unbiased': - proposal_sample = samples[i-1,:] + np.random.multivariate_normal(self.Q_mu,self.Q_covmat*self.UserInput.parameter_estimation_settings['mcmc_relative_step_length']) - if self.UserInput.parameter_estimation_settings['mcmc_mode'] == 'MAP_finding': - if i == 1: mcmc_step_dynamic_coefficient = 1 - mcmc_step_modulation_coefficient = np.random.uniform() + 0.5 #TODO: make this a 2D array. One for each parameter. - mcmc_step_modulation_history[i] = mcmc_step_modulation_coefficient - proposal_sample = samples[i-1,:] + np.random.multivariate_normal(self.Q_mu,self.Q_covmat*mcmc_step_dynamic_coefficient*mcmc_step_modulation_coefficient*self.UserInput.parameter_estimation_settings['mcmc_relative_step_length']) - log_prior_proposal = self.getLogPrior(proposal_sample) - [log_likelihood_proposal, simulationOutput_proposal] = self.getLogLikelihood(proposal_sample) - log_prior_current_location = self.getLogPrior(samples[i-1,:]) #"current" location is the most recent accepted location, because we haven't decided yet if we're going to move. - [log_likelihood_current_location, simulationOutput_current_location] = self.getLogLikelihood(samples[i-1,:]) #FIXME: the previous likelihood should be stored so that it doesn't need to be calculated again. - log_accept_probability = (log_likelihood_proposal + log_prior_proposal) - (log_likelihood_current_location + log_prior_current_location) - if self.UserInput.parameter_estimation_settings['verbose']: print('Current log_likelihood',log_likelihood_current_location, 'Proposed log_likelihood', log_likelihood_proposal, '\nLog of Accept_probability (gauranteed if above 0)', log_accept_probability) - if self.UserInput.parameter_estimation_settings['verbose']: print('Current posterior',log_likelihood_current_location+log_prior_current_location, 'Proposed Posterior', log_likelihood_proposal+log_prior_proposal) - if self.UserInput.parameter_estimation_settings['mcmc_modulate_accept_probability'] != 0: #This flattens the posterior by accepting low values more often. It can be useful when greater sampling is more important than accuracy. - N_flatten = float(self.UserInput.parameter_estimation_settings['mcmc_modulate_accept_probability']) - #Our logP are of the type e^logP = P. #This is base 'e' because the logpdf functions are base e. Ashi checked the sourcecode. - #The flattening code works in part because P is always < 1, so logP is always negative. 1/N_flatten at front brings negative number closer to zero which is P closer to 1. If logP is already positive, it will stay positive which also causes no problem. - #TODO: add code that unflattens the final histograms, that way even with more sampling we still get an accurate final posterior distribution. We can also then add a flag if the person wants to keep the posterior flattened. - log_accept_probability = (1/N_flatten)*log_accept_probability - randomNumber = np.random.uniform() - log_randomNumber = np.log(randomNumber) #This is base 'e' because the logpdf functions are base e. Ashi checked the sourcecode. - if log_accept_probability > log_randomNumber: #TODO: keep a log of the accept and reject. If the reject ratio is >90% or some other such number, warn the user. - if self.UserInput.parameter_estimation_settings['verbose']: - print('accept', proposal_sample) - sys.stdout.flush() - #print(simulationOutput_proposal) - samples[i,:] = proposal_sample - samples_drawn[i,:] = proposal_sample - log_postereriors_drawn[i] = (log_likelihood_proposal+log_prior_proposal) #FIXME: should be using getlogP - #samples_simulatedOutputs[i,:] = nestedObjectsFunctions.flatten_2dNested(simulationOutput_proposal) - log_posteriors_un_normed_vec[i] = log_likelihood_proposal+log_prior_proposal - log_likelihoods_vec[i] = log_likelihood_proposal - log_priors_vec[i] = log_prior_proposal - else: - if self.UserInput.parameter_estimation_settings['verbose']: - print('reject', proposal_sample) - sys.stdout.flush() - #print(simulationOutput_current_location) - samples[i,:] = samples[i-1,:] #the sample is not kept if it is rejected, though we still store it in the samples_drawn. - samples_drawn[i,:] = proposal_sample - log_postereriors_drawn[i] = (log_likelihood_proposal+log_prior_proposal) - #samples_simulatedOutputs[i,:] = nestedObjectsFunctions.flatten_2dNested(simulationOutput_current_location) - log_posteriors_un_normed_vec[i] = log_likelihood_current_location+log_prior_current_location - log_likelihoods_vec[i] = log_likelihood_current_location - log_priors_vec[i] = log_prior_current_location - if type(self.UserInput.parameter_estimation_settings['mcmc_checkPointFrequency']) != type(None): - if sampleNumber%self.UserInput.parameter_estimation_settings['mcmc_checkPointFrequency'] == 0: #The % is a modulus function. - timeSinceLastCheckPoint = (time.time() - timeOfFirstCheckpoint) - timeCheckpoint - timeCheckpoint = time.time() - timeOfFirstCheckpoint - checkPointNumber = sampleNumber/self.UserInput.parameter_estimation_settings['mcmc_checkPointFrequency'] - averagetimePerSampling = timeCheckpoint/(sampleNumber) - print("MCMC sample number ", sampleNumber, "checkpoint", checkPointNumber, "out of", numCheckPoints) - print("averagetimePerSampling", averagetimePerSampling, "seconds") - print("timeSinceLastCheckPoint", timeSinceLastCheckPoint, "seconds") - print("Estimated time remaining", averagetimePerSampling*(self.UserInput.parameter_estimation_settings['mcmc_length']-sampleNumber), "seconds") - if self.UserInput.parameter_estimation_settings['mcmc_mode'] != 'unbiased': - print("Most recent mcmc_step_dynamic_coefficient:", mcmc_step_dynamic_coefficient) - if self.UserInput.parameter_estimation_settings['mcmc_mode'] != 'unbiased': - if sampleNumber%100== 0: #The % is a modulus function to change the modulation coefficient every n steps. - if self.UserInput.parameter_estimation_settings['mcmc_mode'] == 'MAP_finding': - recent_log_postereriors_drawn=log_postereriors_drawn[i-100:i] - recent_mcmc_step_modulation_history=mcmc_step_modulation_history[i-100:i] - #Make a 2D array and remove anything that is not finite. - #let's find out where the posterior is not finite: - recent_log_postereriors_drawn_is_finite = np.isfinite(recent_log_postereriors_drawn) #gives 1 if is finite, 0 if not. - #Now let's find the cases that were not... - not_finite_indices = np.where(recent_log_postereriors_drawn_is_finite == 0) - #Now delete the indices we don't want. - recent_log_postereriors_drawn = np.delete(recent_log_postereriors_drawn, not_finite_indices) - recent_mcmc_step_modulation_history = np.delete(recent_mcmc_step_modulation_history, not_finite_indices) -# recent_stacked = np.vstack((recent_log_postereriors_drawn,recent_mcmc_step_modulation_history)).transpose() -# print(recent_stacked) -# np.savetxt(self.UserInput.directories['logs_and_csvs']+"recent_stacked.csv",recent_stacked, delimiter=',') - #Numpy polyfit uses "x, y, degree" for nomenclature. We want posterior as function of modulation history. - linearFit = np.polynomial.polynomial.polyfit(recent_mcmc_step_modulation_history, recent_log_postereriors_drawn, 1) #In future, use multidimensional and numpy.gradient or something like that? - #The slope is in the 2nd index of linearFit, despite what the documentation says. - #A positive slope means that bigger steps have better outcomes, on average. - if linearFit[1] > 0: - if mcmc_step_dynamic_coefficient < 10: - mcmc_step_dynamic_coefficient = mcmc_step_dynamic_coefficient*1.05 - if linearFit[1] < 0: - if mcmc_step_dynamic_coefficient > 0.1: - mcmc_step_dynamic_coefficient = mcmc_step_dynamic_coefficient*0.95 - ######################################## - if continueSampling == False: #Normally we enter this if statement and collect the burn_in samples. If continueSampling, either they already exist in the PE_object and will be exported again later, or they don't exist in the PE_object because are continuing from a previous python instance. If continuing from a previous python instance, during_burn_in_samples won't be created and also won't be exported again. (This logic is so we don't overwrite the old during_burn_in_samples). - self.during_burn_in_samples = samples[0:self.mcmc_burn_in_length] - self.during_burn_in_log_posteriors_un_normed_vec = log_posteriors_un_normed_vec[0:self.mcmc_burn_in_length] - self.post_burn_in_samples = samples[self.mcmc_burn_in_length:] - discrete_chains_post_burn_in_samples = np.expand_dims(self.post_burn_in_samples, axis=1) # MH only has one chain - if self.UserInput.parameter_estimation_settings['mcmc_store_samplingObject'] == True: - self.discrete_chains_post_burn_in_samples = discrete_chains_post_burn_in_samples - #self.post_burn_in_samples_simulatedOutputs = copy.deepcopy(samples_simulatedOutputs) - #self.post_burn_in_samples_simulatedOutputs[self.mcmc_burn_in_length:0] #Note: this feature is presently not compatible with continueSampling. - self.post_burn_in_log_posteriors_un_normed_vec = log_posteriors_un_normed_vec[self.mcmc_burn_in_length:] - self.mcmc_last_point_sampled = self.post_burn_in_samples[-1] - self.post_burn_in_log_likelihoods_vec = log_likelihoods_vec[self.mcmc_burn_in_length:] - self.post_burn_in_log_priors_vec = log_priors_vec[self.mcmc_burn_in_length:] - # Populate the last_MCMC_run_type in UserInput so that there is a record of which MCMC run type was last used with this UserInput instance. - self.UserInput.last_MCMC_run_type = 'MH' - #####BELOW HERE SHOUD BE SAME FOR doMetropolisHastings and doEnsembleSliceSampling and doEnsembleModifiedMHSampling##### - if continueSampling == True: - self.post_burn_in_samples = np.vstack((self.last_post_burn_in_samples, self.post_burn_in_samples )) - self.post_burn_in_log_posteriors_un_normed_vec = np.vstack( (np.array(self.last_post_burn_in_log_posteriors_un_normed_vec), np.array(self.post_burn_in_log_posteriors_un_normed_vec))) - if (self.UserInput.parameter_estimation_settings['mcmc_parallel_sampling'] or self.UserInput.parameter_estimation_settings['multistart_parallel_sampling']) == True: #If we're using certain parallel processing, we need to make calculatePostBurnInStatistics into True. - calculatePostBurnInStatistics = True; - if self.UserInput.parameter_estimation_settings['mcmc_parallel_sampling']: #mcmc_exportLog == True is needed for mcmc_parallel_sampling, but not for multistart_parallel_sampling - mcmc_exportLog=True - if calculatePostBurnInStatistics == True: - #FIXME: I think Below, calculate_post_burn_in_log_priors_vec=True should be false unless we are using continue sampling. For now, will leave it since I am not sure why it is currently set to True/False. - self.calculatePostBurnInStatistics(calculate_post_burn_in_log_priors_vec = True) #This function call will also filter the lowest probability samples out, when using default settings. - if self.UserInput.parameter_estimation_settings['convergence_diagnostics']: #Run convergence diagnostics if UserInput defines it as True - self.getConvergenceDiagnostics(discrete_chains_post_burn_in_samples) - if str(mcmc_exportLog) == 'UserChoice': - mcmc_exportLog = bool(self.UserInput.parameter_estimation_settings['mcmc_exportLog']) - if mcmc_exportLog == True: - self.exportPostBurnInStatistics() - if self.UserInput.parameter_estimation_settings['mcmc_parallel_sampling'] == True: #We don't call the below function at this time unless we are doing mcmc_parallel_sampling. For multistart_parallel_sampling the consolidation is done elsewhere and differently. - self.consolidate_parallel_sampling_data(parallelizationType="equal", mpi_cached_files_prefix='mcmc') - return [self.map_parameter_set, self.mu_AP_parameter_set, self.stdap_parameter_set, self.evidence, self.info_gain, self.post_burn_in_samples, self.post_burn_in_log_posteriors_un_normed_vec] - else: #In this case, we are probably doing a PermutationSearch or something like that and only want self.map_logP. - self.map_logP = max(self.post_burn_in_log_posteriors_un_normed_vec) - self.map_index = list(self.post_burn_in_log_posteriors_un_normed_vec).index(self.map_logP) #This does not have to be a unique answer, just one of them places which gives map_logP. - self.map_parameter_set = self.post_burn_in_samples[self.map_index] #This is the point with the highest probability in the posterior. - return self.map_logP - - def getLogPrior(self,discreteParameterVector): - if type(self.UserInput.model['custom_logPrior']) != type(None): - logPrior = self.UserInput.model['custom_logPrior'](discreteParameterVector) - return logPrior - boundsChecksPassed = self.doInputParameterBoundsChecks(discreteParameterVector) - if boundsChecksPassed == False: #If false, return a 'zero probability' type result. Else, continue getting log of prior.. - return float('-inf') #This approximates zero probability. - if self.UserInput.parameter_estimation_settings['scaling_uncertainties_type'] == "off": - discreteParameterVector_scaled = np.array(discreteParameterVector)*1.0 - elif self.UserInput.parameter_estimation_settings['scaling_uncertainties_type'] != "off": - if np.shape(self.UserInput.scaling_uncertainties)==np.shape(discreteParameterVector): - discreteParameterVector_scaled = np.array(discreteParameterVector)/self.UserInput.scaling_uncertainties - else: #TODO: If we're in the else statemnt, then the scaling uncertainties is a covariance matrix, for which we plan to do row and column scaling, which has not yet been implemented. #We could pobably just use the diagonal in the short term. - print("WARNING: There is an error in your self.UserInput.scaling_uncertainties. This probably means that your uncertainties array does not have a size matching the number of parameters expected by your simulation function. If this is not the situation, contact the developers with a bug report. Send your input file and simulation function file.") - discreteParameterVector_scaled = np.array(discreteParameterVector)*1.0 - - if hasattr(self.UserInput, 'InputParametersPriorValuesUniformDistributionsIndices') == False: #this is the normal case, no uniform distributionns. - logPrior = multivariate_normal.logpdf(x=discreteParameterVector_scaled,mean=self.UserInput.mu_prior_scaled,cov=self.UserInput.covmat_prior_scaled) - elif hasattr(self.UserInput, 'InputParametersPriorValuesUniformDistributionsIndices') == True: #This means that at least one variable has a uniform prior distribution. So we need to remove that parameter before doing the multivariate_normal.logpdf. - #Note that this if-statement is intentionally after the scaling uncertainties because that feature can be compatible with the uniform distribution. - discreteParameterVector_scaled_truncated = np.delete(discreteParameterVector_scaled, self.UserInput.InputParametersPriorValuesUniformDistributionsIndices) #delete does not change original array. - mu_prior_scaled_truncated = np.delete(self.UserInput.mu_prior_scaled, self.UserInput.InputParametersPriorValuesUniformDistributionsIndices) #delete does not change original array. - var_prior_scaled_truncated = np.delete(self.UserInput.var_prior_scaled, self.UserInput.InputParametersPriorValuesUniformDistributionsIndices) #delete does not change original array. - #Presently, we don't have full covmat support with uniform distributions. In principle, it would be better to use covmat_prior_scaled and delete the rows and columns since then we might have covmat support. - #For now, we just make the truncated covmat from the var_prior. We currently don't have full covmat support for the case of uniform distributions. - covmat_prior_scaled_truncated = np.diagflat(var_prior_scaled_truncated) - if len(covmat_prior_scaled_truncated) == 0: #if all variables are uniform, then need to return log(1) which is 0. - logPrior = 0 - else: - logPrior = multivariate_normal.logpdf(x=discreteParameterVector_scaled_truncated,mean=mu_prior_scaled_truncated,cov=covmat_prior_scaled_truncated) - #Note: Below code should be okay regardless of whether there are uniform distributions since it only adjusts logPrior by a scalar. - if self.UserInput.parameter_estimation_settings['undo_scaling_uncertainties_type'] == True: - try: - scaling_factor = float(self.UserInput.parameter_estimation_settings['scaling_uncertainties_type']) - logPrior = logPrior - np.log(scaling_factor) - except: - if self.UserInput.parameter_estimation_settings['scaling_uncertainties_type'] != "off": - print("Warning: undo_scaling_uncertainties_type is set to True, but can only be used with a fixed value for scaling_uncertainties_type. Skipping the undo.") - return logPrior - - def doInputParameterBoundsChecks(self, discreteParameterVector): #Bounds are considered part of the prior, so are set in InputParameterPriorValues_upperBounds & InputParameterPriorValues_lowerBounds - if len(self.UserInput.InputParameterPriorValues_upperBounds) > 0: - upperCheck = boundsCheck(discreteParameterVector, self.UserInput.InputParameterPriorValues_upperBounds, 'upper') - if upperCheck == False: - return False - if len(self.UserInput.InputParameterPriorValues_lowerBounds) > 0: - lowerCheck = boundsCheck(discreteParameterVector, self.UserInput.InputParameterPriorValues_lowerBounds, 'lower') - if lowerCheck == False: - return False - return True #If the test has gotten here without failing any of the tests, we return true. - - #The responses bounds check is different from the parmeter bounds check because responses are nested. - def doSimulatedResponsesBoundsChecks(self, simulatedResponses): #Bounds intended for the likelihood. - if len(self.UserInput.InputParameterPriorValues_upperBounds) > 0: - for responseIndex in self.UserInput.model['simulatedResponses_upperBounds']: - upperCheck = boundsCheck(simulatedResponses[responseIndex], self.UserInput.model['simulatedResponses_upperBounds'][responseIndex], 'upper') - if upperCheck == False: - return False - if len(self.UserInput.InputParameterPriorValues_lowerBounds) > 0: - for responseIndex in self.UserInput.model['simulatedResponses_lowerBounds']: - lowerCheck = boundsCheck(simulatedResponses[responseIndex], self.UserInput.model['simulatedResponses_lowerBounds'][responseIndex], 'lower') - if lowerCheck == False: - return False - return True #If the test has gotten here without failing any of the tests, we return true. - - #This helper function must be used because it allows for the output processing function etc. It has been separated from getLogLikelihood so that it can be used by doOptimizeSSR etc. - def getSimulatedResponses(self, discreteParameterVector): - simulationFunction = self.UserInput.simulationFunction #Do NOT use self.UserInput.model['simulateByInputParametersOnlyFunction'] because that won't work with reduced parameter space requests. - simulationOutputProcessingFunction = self.UserInput.simulationOutputProcessingFunction #Do NOT use self.UserInput.model['simulationOutputProcessingFunction'] because that won't work with reduced parameter space requests. - simulationOutput =simulationFunction(discreteParameterVector) - if type(simulationOutput)==type(None): - return None #This is intended for the case that the simulation fails. User can return "None" for the simulation output. - try:#This warning will not always work if there are multiple responses. #TODO: make this a loop across the number of responses. For now, just making it a "try" and "except" statement. - if np.array(simulationOutput).any()==float('nan'): - print("WARNING: Your simulation output returned a 'nan' for parameter values " +str(discreteParameterVector) + ". 'nan' values cannot be processed by the PEUQSE software and this set of Parameter Values is being assigned a probability of 0.") - return None #This is intended for the case that the simulation fails in some way without returning "None". - except: - pass - if type(simulationOutputProcessingFunction) == type(None): - simulatedResponses = simulationOutput - elif type(simulationOutputProcessingFunction) != type(None): - simulatedResponses = simulationOutputProcessingFunction(simulationOutput) - simulatedResponses = nestedObjectsFunctions.makeAtLeast_2dNested(simulatedResponses) - if self.doSimulatedResponsesBoundsChecks(simulatedResponses) == False: - simulatedResponses = None - #if self.UserInput.parameter_estimation_settings['exportAllSimulatedOutputs' == True: - #decided to always keep the lastSimulatedResponses in memory. Should be okay because only the most recent should be kept. - #At least, that is my understanding after searching for "garbage" here and then reading: http://www.digi.com/wiki/developer/index.php/Python_Garbage_Collection - self.lastSimulatedResponses = copy.deepcopy(simulatedResponses) - return simulatedResponses - - def getLogLikelihood(self,discreteParameterVector): #The variable discreteParameterVector represents a vector of values for the parameters being sampled. So it represents a single point in the multidimensional parameter space. - discreteParameterVectorTuple = tuple(np.ndarray.copy(np.array(discreteParameterVector))) #we use a tuple in case any of the functions try to change the parameters. - - #Check if user has provided a custom log likelihood function. - if type(self.UserInput.model['custom_logLikelihood']) != type(None): - logLikelihood, simulatedResponses = self.UserInput.model['custom_logLikelihood'](discreteParameterVectorTuple) - simulatedResponses = np.array(simulatedResponses).flatten() - return logLikelihood, simulatedResponses - #else pass is implied. - - #Now get the simulated responses. - simulatedResponses = self.getSimulatedResponses(discreteParameterVectorTuple) - #Failure checks: - if type(simulatedResponses) == type(None): - return float('-inf'), None #This is intended for the case that the simulation fails, indicated by receiving an 'nan' or None type from user's simulation function. - #Check if there are any 'nan' in the simulations array, and treat that as a failure also. - nans_in_array = np.isnan(simulatedResponses) - if True in nans_in_array: - return float('-inf'), None - #need to check if there are any 'responses_simulation_uncertainties'. - if type(self.UserInput.responses_simulation_uncertainties) == type(None): #if it's a None type, we keep it as a None type - responses_simulation_uncertainties = None - else: #Else we get it based on the the discreteParameterVectorTuple - responses_simulation_uncertainties = self.get_responses_simulation_uncertainties(discreteParameterVectorTuple) - - #Now need to do transforms. Transforms are only for calculating log likelihood. If responses_simulation_uncertainties is "None", then we need to have one less argument passed in and a blank list is returned along with the transformed simulated responses. - if type(responses_simulation_uncertainties) == type(None): - simulatedResponses_transformed, blank_list = self.transform_responses(simulatedResponses) #This creates transforms for any data that we might need it. The same transforms were also applied to the observed responses. - responses_simulation_uncertainties_transformed = None - simulated_responses_covmat_transformed = None - else: - simulatedResponses_transformed, responses_simulation_uncertainties_transformed = self.transform_responses(simulatedResponses, responses_simulation_uncertainties) #This creates transforms for any data that we might need it. The same transforms were also applied to the observed responses. - simulated_responses_covmat_transformed = returnShapedResponseCovMat(self.UserInput.num_response_dimensions, responses_simulation_uncertainties_transformed) #assume we got standard deviations back. - observedResponses_transformed = self.UserInput.responses_observed_transformed - #If our likelihood is “probability of Response given Theta”… we have a continuous probability distribution for both the response and theta. That means the pdf must use binning on both variables. Eric notes that the pdf returns a probability density, not a probability mass. So the pdf function here divides by the width of whatever small bin is being used and then returns the density accordingly. Because of this, our what we are calling likelihood is not actually probability (it’s not the actual likelihood) but is proportional to the likelihood. - #Thus we call it a probability_metric and not a probability. #TODO: consider changing names of likelihood and get likelihood to "likelihoodMetric" and "getLikelihoodMetric" - #Now we need to make the comprehensive_responses_covmat. - #First we will check whether observed_responses_covmat_transformed is square or not. The multivariate_normal.pdf function requires a diagonal values vector to be 1D. - observed_responses_covmat_transformed = self.observed_responses_covmat_transformed - - #For some cases, we should prepare to split the likelihood. - if self.prepareResponsesForSplitLikelihood == True: - simulatedResponses_transformed = nestedObjectsFunctions.convertToNested(simulatedResponses_transformed[0]) - if type(simulated_responses_covmat_transformed) != type(None): - simulated_responses_covmat_transformed = nestedObjectsFunctions.convertToNested(simulated_responses_covmat_transformed[0]) - observedResponses_transformed = nestedObjectsFunctions.convertToNested(observedResponses_transformed[0]) - observed_responses_covmat_transformed = nestedObjectsFunctions.convertToNested(observed_responses_covmat_transformed[0]) - #In general, the covmat could be a function of the responses magnitude and independent variables. So eventually, we will use non-linear regression or something to estimate it. However, for now we simply take the observed_responses_covmat_transformed which will work for most cases. - #TODO: use Ashi's nonlinear regression code (which he used in this paper https://www.sciencedirect.com/science/article/abs/pii/S0920586118310344). Put in the response magnitudes and the independent variables. - #in future it will be something like: if self.UserInput.covmat_regression== True: comprehensive_responses_covmat = nonLinearCovmatPrediction(self.UserInput['independent_variable_values'], observed_responses_covmat_transformed) - #And that covmat_regression will be on by default. We will need to have an additional argument for people to specify whether magnitude weighting and independent variable values should both be considered, or just one. - #First, get the shape of the covmat. - observed_responses_covmat_transformed_shape = np.shape(observed_responses_covmat_transformed) - if type(simulated_responses_covmat_transformed) == type(None): - comprehensive_responses_covmat = observed_responses_covmat_transformed - else: #Else we add the uncertainties, assuming they are orthogonal. Note that these are already covmats so are already variances that can be added directly. - comprehensive_responses_covmat = observed_responses_covmat_transformed + simulated_responses_covmat_transformed #TODO: I think think this needs to be moved own into the responseIndex loop to correctly handle staggered uncertainties. [like one response having full covmatrix and others not] - comprehensive_responses_covmat_shape = copy.deepcopy(observed_responses_covmat_transformed_shape) #no need to take the shape of the actual comprehensive_responses_covmat since they must be same. This is probably slightly less computation. - if (len(comprehensive_responses_covmat_shape) == 1) and (comprehensive_responses_covmat_shape[0]==1): #Matrix is square because has only one value. - log_probability_metric = multivariate_normal.logpdf(mean=simulatedResponses_transformed,x=observedResponses_transformed,cov=comprehensive_responses_covmat) - return log_probability_metric, simulatedResponses_transformed #Return this rather than going through loop further. - elif len(comprehensive_responses_covmat_shape) > 1 and (comprehensive_responses_covmat_shape[0] == comprehensive_responses_covmat_shape[1]): #Else it is 2D, check if it's square. - try: - log_probability_metric = multivariate_normal.logpdf(mean=simulatedResponses_transformed,x=observedResponses_transformed,cov=comprehensive_responses_covmat) - return log_probability_metric, simulatedResponses_transformed #Return this rather than going through loop further. - except: - pass #If it failed, we assume it is not square. For example, it could be 2 responses of length 2 each, which is not actually square. - #TODO: Put in near-diagonal solution described in github: https://github.com/AdityaSavara/PEUQSE/issues/3 - #If neither of the above return statements have occurred, we should go through the uncertainties per response. - log_probability_metric = 0 #Initializing since we will be adding to it. - for responseIndex in range(self.UserInput.num_response_dimensions): - #We will check if the response has too many values. If has too many values, then the covmat will be too large and will evaluate each value separately (with only variance, no covariance) in order to achive a linear scaling. - if len(simulatedResponses_transformed[responseIndex]) > self.UserInput.responses['responses_observed_max_covmat_size']: - calculate_log_probability_metric_per_value = True - response_log_probability_metric = 0 #initializing so that can check if it is a 'nan' or not a bit further down below. - else: - calculate_log_probability_metric_per_value = False - #no need oto intialize response_log_probability_metric. - #Now try to calculate response_log_probability_metric - if calculate_log_probability_metric_per_value == False: #The normal case. - try: #try to evaluate, but switch to individual values if there is any problem. - response_log_probability_metric = multivariate_normal.logpdf(mean=simulatedResponses_transformed[responseIndex],x=observedResponses_transformed[responseIndex],cov=comprehensive_responses_covmat[responseIndex]) #comprehensive_responses_covmat has to be 2D or has to be 1D array/list of variances of length equal to x. - except: - response_log_probability_metric = float('nan') #this keeps track of failure cases. - calculate_log_probability_metric_per_value = False - if calculate_log_probability_metric_per_value == True: - if response_log_probability_metric == float('nan'): # if a case failed... - response_log_probability_metric = -1E100 #Just initializing, then will add each probability separately. One for each **value** of this response dimension. The -1E100 is to penalize any cases responses that failed. - else: - response_log_probability_metric = 0 #No penalty if the 'per value' calculation is being done for non-failure reasons, like the number of values being too long to use a covmat directly. - for responseValueIndex in range(len(simulatedResponses_transformed[responseIndex])): - try: - current_log_probability_metric = multivariate_normal.logpdf(mean=simulatedResponses_transformed[responseIndex][responseValueIndex],x=observedResponses_transformed[responseIndex][responseValueIndex],cov=comprehensive_responses_covmat[responseIndex][responseValueIndex]) - except: #The above is to catch cases when the multivariate_normal fails. - current_log_probability_metric = float('-inf') - #response_log_probability_metric = current_log_probability_metric + response_log_probability_metric - if float(current_log_probability_metric) == float('-inf'): - print("Warning: There are posterior points that have zero probability. If there are too many points like this, the MAP and mu_AP returned will not be meaningful. Parameters:", discreteParameterVectorTuple) - current_log_probability_metric = -1E100 #Just choosing an arbitrarily very severe penalty. I know that I have seen 1E-48 to -303 from the multivariate pdf, and values inbetween like -171, -217, -272. I found that -1000 seems to be worse, but I don't have a systematic testing. I think -1000 was causing numerical errors. - response_log_probability_metric = current_log_probability_metric + response_log_probability_metric - log_probability_metric = log_probability_metric + response_log_probability_metric - return log_probability_metric, simulatedResponses_transformed - - def truncatePostBurnInSamples(self, post_burn_in_samples=[], parameterBoundsLower=None, parameterBoundsUpper=None): - """ - Truncate the post_burn_in_samples variable along with other variables that are relative to it. - Apply a lower and upper bound to a parameter to truncate. - Bounds are Inclusive. Set a None on a bound to not have it change. - Example of changing just lower bound for one parameter: parameterBounds = [(paramLowerBound, None)] - - :param post_burn_in_samples: Samples after mcmc run. (:type: np.array) - :param parameterBoundsLower: List of parameter lower bounds. Use None to indicate a bound not being applied. (:type: list) - :param parameterBoundsUpper: List of parameter upper bounds. Use None to indicate a bound not being applied. (:type: list) - """ - if post_burn_in_samples == []: - post_burn_in_samples = self.post_burn_in_samples - # truncate the post burn in samples according to the parameterBounds - truncated_post_burn_in_samples, truncated_mask = truncateSamples(post_burn_in_samples, parameterBoundsLower=parameterBoundsLower, parameterBoundsUpper=parameterBoundsUpper, returnMask=True) - # reassign class variables to the truncated versions - self.post_burn_in_samples = truncated_post_burn_in_samples - self.post_burn_in_log_posteriors_un_normed_vec = self.post_burn_in_log_posteriors_un_normed_vec[truncated_mask, :] - self.post_burn_in_log_priors_vec = self.post_burn_in_log_priors_vec[truncated_mask, :] - # return post_burn_in_samples - return truncated_post_burn_in_samples - - def makeHistogramsForEachParameter(self): - import PEUQSE.plotting_functions as plotting_functions - setMatPlotLibAgg(self.UserInput.plotting_ouput_settings['setMatPlotLibAgg']) - parameterSamples = self.post_burn_in_samples - parameterNamesAndMathTypeExpressionsDict = self.UserInput.parameterNamesAndMathTypeExpressionsDict - if hasattr(self.UserInput, 'histogram_plot_settings') == False: #put some defaults for backwards compatibility. - self.UserInput.histogram_plot_settings={} - plotting_functions.makeHistogramsForEachParameter(parameterSamples,parameterNamesAndMathTypeExpressionsDict, directory = self.UserInput.directories['graphs'], parameterInitialValue=self.UserInput.model['InputParameterPriorValues'], parameterMAPValue=self.map_parameter_set, parameterMuAPValue=self.mu_AP_parameter_set, histogram_plot_settings=self.UserInput.histogram_plot_settings) - - def makeSamplingScatterMatrixPlot(self, parameterSamples = [], parameterNamesAndMathTypeExpressionsDict={}, parameterNamesList =[], parameterMAPValue=[], parameterMuAPValue=[], parameterInitialValue = [], plot_settings={'combined_plots':'auto'}): - import pandas as pd #This is one of the only functions that use pandas. - import matplotlib.pyplot as plt - import PEUQSE.plotting_functions as plotting_functions - if 'dpi' not in plot_settings: plot_settings['dpi'] = 220 - if 'figure_name' not in plot_settings: plot_settings['figure_name'] = 'scatter_matrix_posterior' - if parameterSamples ==[] : parameterSamples = self.post_burn_in_samples - if parameterNamesAndMathTypeExpressionsDict == {}: parameterNamesAndMathTypeExpressionsDict = self.UserInput.parameterNamesAndMathTypeExpressionsDict - if parameterNamesList == []: parameterNamesList = self.UserInput.parameterNamesList #This is created when the parameter_estimation object is initialized. - if parameterMAPValue == []: parameterMAPValue = self.map_parameter_set - if parameterMuAPValue == []: parameterMuAPValue = self.mu_AP_parameter_set - if parameterInitialValue == []: parameterInitialValue = self.UserInput.model['InputParameterPriorValues'] - combined_plots = plot_settings['combined_plots'] - if 'individual_plots' in plot_settings: - individual_plots = plot_settings['individual_plots'] - else: #TODO: A. Savara added this code to prevent crashes for cases where individual_plots was not defined. However, it should be defined automatically before this point. - individual_plots = True - posterior_df = pd.DataFrame(parameterSamples,columns=[parameterNamesAndMathTypeExpressionsDict[x] for x in parameterNamesList]) - if combined_plots == 'auto': #by default, we will not make the scatter matrix when there are more than 5 parameters. - if (len(parameterNamesList) > 5) or (len(parameterNamesAndMathTypeExpressionsDict) > 5): - #For the case of 'auto' when the parameters is too large in number, we will turn off the combined plots. - combined_plots = False - #For the case of 'auto' we will then turn on the individual plots. - if self.UserInput.scatter_matrix_plots_settings['individual_plots'] == 'auto': - individual_plots = True - if individual_plots == True: #This means we will return individual plots. - #The below code was added by Troy Gustke and merged in to PEUQSE at end of June 2021. - # create graph variable for plotting options - graphs_directory = self.UserInput.directories['graphs'] - # combine all the solutions and meta data for each parameter posterior to the simulation. - # Zip parameters contain parameter columns in dataframe, parameter names, MAP, muAP, and initial value - finalParametersAndMetaData1 = zip(posterior_df.columns, parameterNamesAndMathTypeExpressionsDict.keys(), parameterMAPValue, parameterMuAPValue, parameterInitialValue) - finalParametersAndMetaData2 = zip(posterior_df.columns, parameterNamesAndMathTypeExpressionsDict.keys(), parameterMAPValue, parameterMuAPValue, parameterInitialValue) - # compare each parameter with only unique solutions - # i and j represent the index of an abstract matrix created from comparing the parameter vectors. - # The loop moves through the matrix and compares parameters by plotting but will only plot the bottom triangle of the matrix. - for param_a_index, (param_a_column, param_a_name, param_a_MAP, param_a_mu_AP, param_a_initial) in enumerate(finalParametersAndMetaData1): - for param_b_index, (param_b_column, param_b_name, param_b_MAP, param_b_mu_AP, param_b_initial) in enumerate(finalParametersAndMetaData2): - if param_a_index != param_b_index: - if self.UserInput.scatter_matrix_plots_settings['all_pair_permutations']: - plotting_functions.createScatterPlot(posterior_df[param_a_column], posterior_df[param_b_column], (param_a_column, param_a_name, param_a_MAP, param_a_mu_AP, param_a_initial), - (param_b_column, param_b_name, param_b_MAP, param_b_mu_AP, param_b_initial), graphs_directory, plot_settings) - else: - if param_a_index Responses Observed, mu_guess Simulated Responses, map_Simulated Responses, (mu_AP_simulatedResponses) > Values - #flatten = True will convert the individual responses into a 'single response series' - num_response_dimensions = self.UserInput.num_response_dimensions - if flatten = True: #if we are flattening, we will have 1 response dimension at the end. - num_response_dimensions = 1 - if allResponses_x_values == []: - if flatten == True: - allResponses_x_values = np.array(self.UserInput.responses_abscissa).flatten() - allResponses_x_values = nestedObjectsFunctions.makeAtLeast_2dNested(allResponses_x_values) - else: - allResponses_x_values = nestedObjectsFunctions.makeAtLeast_2dNested(self.UserInput.responses_abscissa) - if allResponsesListsOfYArrays ==[]: #In this case, we assume allResponsesListsOfYUncertaintiesArrays == [] also. - allResponsesListsOfYArrays = [] #Need to make a new list in the case that there was one already, to avoid overwriting the default argument object. - allResponsesListsOfYUncertaintiesArrays = [] #Set accompanying uncertainties list to a blank list in case it is not already one. Otherwise appending would mess up indexing. - simulationFunction = self.UserInput.simulationFunction #Do NOT use self.UserInput.model['simulateByInputParametersOnlyFunction'] because that won't work with reduced parameter space requests. - simulationOutputProcessingFunction = self.UserInput.simulationOutputProcessingFunction #Do NOT use self.UserInput.model['simulationOutputProcessingFunction'] because that won't work with reduced parameter space requests. - - #We already have self.UserInput.responses_observed, and will use that below. So now we get the simulated responses for the guess, MAP, mu_ap etc. - - #Get mu_guess simulated output and responses. - self.mu_guess_SimulatedOutput = simulationFunction( self.UserInput.InputParameterInitialGuess) #Do NOT use self.UserInput.model['InputParameterInitialGuess'] because that won't work with reduced parameter space requests. - #Make in internal variable in case we need to flatten. - mu_guess_SimulatedOutput = copy.deepcopy(self.mu_guess_SimulatedOutput) - if type(simulationOutputProcessingFunction) == type(None): - mu_guess_SimulatedResponses = mu_guess_SimulatedOutput - if flatten == True: - mu_guess_SimulatedResponses = np.array(mu_guess_SimulatedResponses).flatten() - mu_guess_SimulatedResponses = nestedObjectsFunctions.makeAtLeast_2dNested(mu_guess_SimulatedResponses) - mu_guess_SimulatedResponses = nestedObjectsFunctions.convertInternalToNumpyArray_2dNested(mu_guess_SimulatedResponses) - if type(simulationOutputProcessingFunction) != type(None): - mu_guess_SimulatedResponses = simulationOutputProcessingFunction(mu_guess_SimulatedOutput) - if flatten == True: - mu_guess_SimulatedResponses = np.array(mu_guess_SimulatedResponses).flatten() - mu_guess_SimulatedResponses = nestedObjectsFunctions.makeAtLeast_2dNested(mu_guess_SimulatedResponses) ) - mu_guess_SimulatedResponses = nestedObjectsFunctions.convertInternalToNumpyArray_2dNested(mu_guess_SimulatedResponses) - #Check if we have simulation uncertainties, and populate if so. - if type(self.UserInput.responses_simulation_uncertainties) != type(None): - #make an internal variable in case we need to flatten. - mu_guess_responses_simulation_uncertainties = self.get_responses_simulation_uncertainties(self.UserInput.InputParameterInitialGuess) - if flatten == True: - mu_guess_responses_simulation_uncertainties = np.array(mu_guess_responses_simulation_uncertainties).flatten() - mu_guess_responses_simulation_uncertainties = nestedObjectsFunctions.makeAtLeast_2dNested(mu_guess_responses_simulation_uncertainties) - mu_guess_responses_simulation_uncertainties = nestedObjectsFunctions.convertInternalToNumpyArray_2dNested(mu_guess_responses_simulation_uncertainties) - #Get map simiulated output and simulated responses. - self.map_SimulatedOutput = simulationFunction(self.map_parameter_set) - #Make an internal variable in case we need to flatten. - map_SimulatedOutput = copy.deepcopy(self.map_SimulatedOutput) - if type(simulationOutputProcessingFunction) == type(None): - map_SimulatedResponses = map_SimulatedOutput - if flatten == True: - map_SimulatedResponses = np.array(map_SimulatedResponses).flatten() - map_SimulatedResponses = nestedObjectsFunctions.makeAtLeast_2dNested(map_SimulatedResponses) - map_SimulatedResponses = nestedObjectsFunctions.convertInternalToNumpyArray_2dNested(map_SimulatedResponses) - if type(simulationOutputProcessingFunction) != type(None): - map_SimulatedResponses = simulationOutputProcessingFunction(map_SimulatedOutput - if flatten == True: - map_SimulatedResponses = np.array(map_SimulatedResponses).flatten() - map_SimulatedResponses = nestedObjectsFunctions.makeAtLeast_2dNested(map_SimulatedResponses) - map_SimulatedResponses = nestedObjectsFunctions.convertInternalToNumpyArray_2dNested(map_SimulatedResponses) - #Check if we have simulation uncertainties, and populate if so. - if type(self.UserInput.responses_simulation_uncertainties) != type(None): - #make an internal variable in case we need to flatten. - map_responses_simulation_uncertainties = self.get_responses_simulation_uncertainties(self.map_parameter_set) - if flatten == True: - map_responses_simulation_uncertainties = np.array(map_responses_simulation_uncertainties).flatten() - map_responses_simulation_uncertainties = nestedObjectsFunctions.makeAtLeast_2dNested(map_responses_simulation_uncertainties) - map_responses_simulation_uncertainties = nestedObjectsFunctions.convertInternalToNumpyArray_2dNested(map_responses_simulation_uncertainties) - if hasattr(self, 'mu_AP_parameter_set'): #Check if a mu_AP has been assigned. It is normally only assigned if mcmc was used. - #Get mu_AP simiulated output and simulated responses. - self.mu_AP_SimulatedOutput = simulationFunction(self.mu_AP_parameter_set) - #Make an internal variable in case we need to flatten. - mu_AP_SimulatedOutput = copy.deepcopy(self.mu_AP_SimulatedOutput) - if type(simulationOutputProcessingFunction) == type(None): - mu_AP_SimulatedResponses = mu_AP_SimulatedOutput - if flatten == True: - mu_AP_SimulatedResponses = np.array(mu_AP_SimulatedResponses).flatten() - mu_AP_SimulatedResponses = nestedObjectsFunctions.makeAtLeast_2dNested(mu_AP_SimulatedResponses) - mu_AP_SimulatedResponses = nestedObjectsFunctions.convertInternalToNumpyArray_2dNested(mu_AP_SimulatedResponses) - if type(simulationOutputProcessingFunction) != type(None): - mu_AP_SimulatedResponses = simulationOutputProcessingFunction(mu_AP_SimulatedOutput) - if flatten == True: - mu_AP_SimulatedResponses = np.array(mu_AP_SimulatedResponses).flatten() - mu_AP_SimulatedResponses = nestedObjectsFunctions.makeAtLeast_2dNested(mu_AP_SimulatedResponses) - mu_AP_SimulatedResponses = nestedObjectsFunctions.convertInternalToNumpyArray_2dNested(mu_AP_SimulatedResponses) - #Check if we have simulation uncertainties, and populate if so. - if type(self.UserInput.responses_simulation_uncertainties) != type(None): - #make an internal variable in case we need to flatten. - mu_AP_responses_simulation_uncertainties = self.get_responses_simulation_uncertainties(self.mu_AP_parameter_set) - if flatten == True: - mu_AP_responses_simulation_uncertainties = np.array(mu_AP_responses_simulation_uncertainties).flatten() - mu_AP_responses_simulation_uncertainties = nestedObjectsFunctions.makeAtLeast_2dNested(mu_AP_responses_simulation_uncertainties) - mu_AP_responses_simulation_uncertainties = nestedObjectsFunctions.convertInternalToNumpyArray_2dNested(mu_AP_responses_simulation_uncertainties) - #make internal variables for responses_observed and responses_observed_uncertainties in case we need to flatten them. - responses_observed = copy.deepcopy(self.UserInput.responses_observed) - responses_observed_uncertainties = copy.deepcop(self.UserInput.responses_observed_uncertainties) - if flatten == True: #flatten and then nest, as needed. ("lazy" way) - responses_observed = [np.array(responses_observed).flatten()] - responses_observed_uncertainties = [np.array(responses_observed_uncertainties).flatten()] - #Now to populate the allResponsesListsOfYArrays and the allResponsesListsOfYUncertaintiesArrays - for responseDimIndex in range(num_response_dimensions): - if not hasattr(self, 'mu_AP_parameter_set'): #Check if a mu_AP has been assigned. It is normally only assigned if mcmc was used. - if num_response_dimensions == 1: - listOfYArrays = [UserInput.responses_observed[responseDimIndex], mu_guess_SimulatedResponses[responseDimIndex], map_SimulatedResponses[responseDimIndex]] - allResponsesListsOfYArrays.append(listOfYArrays) - #Now to do uncertainties, there are two cases. First case is with only observed uncertainties and no simulation ones. - if type(self.UserInput.responses_simulation_uncertainties) == type(None): #This means there are no simulation uncertainties. So for each response dimension, there will be a list with only the observed uncertainties in that list. - allResponsesListsOfYUncertaintiesArrays.append( [responses_observed_uncertainties[responseDimIndex]] ) #Just creating nesting, we need to give a list for each response dimension. - else: #This case means that there are some responses_simulation_uncertainties to include, so allResponsesListsOfYUncertaintiesArrays will have more dimensions *within* its nested values. - allResponsesListsOfYUncertaintiesArrays.append([responses_observed_uncertainties[responseDimIndex],mu_guess_responses_simulation_uncertainties[responseDimIndex],map_responses_simulation_uncertainties[responseDimIndex]]) #We need to give a list for each response dimension. - elif num_response_dimensions > 1: - listOfYArrays = [responses_observed[responseDimIndex], mu_guess_SimulatedResponses[responseDimIndex], map_SimulatedResponses[responseDimIndex]] - allResponsesListsOfYArrays.append(listOfYArrays) - #Now to do uncertainties, there are two cases. First case is with only observed uncertainties and no simulation ones. - if type(self.UserInput.responses_simulation_uncertainties) == type(None): #This means there are no simulation uncertainties. So for each response dimension, there will be a list with only the observed uncertainties in that list. - allResponsesListsOfYUncertaintiesArrays.append( [responses_observed_uncertainties[responseDimIndex]] ) #Just creating nesting, we need to give a list for each response dimension. - else: #This case means that there are some responses_simulation_uncertainties to include, so allResponsesListsOfYUncertaintiesArrays will have more dimensions *within* its nested values. - allResponsesListsOfYUncertaintiesArrays.append([responses_observed_uncertainties[responseDimIndex],mu_guess_responses_simulation_uncertainties[responseDimIndex],map_responses_simulation_uncertainties[responseDimIndex]]) #We need to give a list for each response dimension. - if hasattr(self, 'mu_AP_parameter_set'): - if num_response_dimensions == 1: - listOfYArrays = [UserInput.responses_observed[responseDimIndex], mu_guess_SimulatedResponses[responseDimIndex], map_SimulatedResponses[responseDimIndex], mu_AP_SimulatedResponses[responseDimIndex]] - allResponsesListsOfYArrays.append(listOfYArrays) - if type(self.UserInput.responses_simulation_uncertainties) == type(None): #This means there are no simulation uncertainties. So for each response dimension, there will be a list with only the observed uncertainties in that list. - allResponsesListsOfYUncertaintiesArrays.append( [responses_observed_uncertainties[responseDimIndex]] ) #Just creating nesting, we need to give a list for each response dimension. - else: #This case means that there are some responses_simulation_uncertainties to include, so allResponsesListsOfYUncertaintiesArrays will have more dimensions *within* its nested values. - allResponsesListsOfYUncertaintiesArrays.append([responses_observed_uncertainties[responseDimIndex],mu_guess_responses_simulation_uncertainties[responseDimIndex],map_responses_simulation_uncertainties[responseDimIndex],mu_AP_responses_simulation_uncertainties[responseDimIndex]]) #We need to give a list for each response dimension. - elif num_response_dimensions > 1: - listOfYArrays = [responses_observed[responseDimIndex], mu_guess_SimulatedResponses[responseDimIndex], map_SimulatedResponses[responseDimIndex], mu_AP_SimulatedResponses[responseDimIndex]] - allResponsesListsOfYArrays.append(listOfYArrays) - if type(self.UserInput.responses_simulation_uncertainties) == type(None): #This means there are no simulation uncertainties. So for each response dimension, there will be a list with only the observed uncertainties in that list. - allResponsesListsOfYUncertaintiesArrays.append( [responses_observed_uncertainties[responseDimIndex]] ) #Just creating nesting, we need to give a list for each response dimension. - else: #This case means that there are some responses_simulation_uncertainties to include, so allResponsesListsOfYUncertaintiesArrays will have more dimensions *within* its nested values. - allResponsesListsOfYUncertaintiesArrays.append([responses_observed_uncertainties[responseDimIndex],mu_guess_responses_simulation_uncertainties[responseDimIndex],map_responses_simulation_uncertainties[responseDimIndex],mu_AP_responses_simulation_uncertainties[responseDimIndex]]) #We need to give a list for each response dimension. - - if plot_settings == {}: - plot_settings = self.UserInput.simulated_response_plot_settings - if 'legendLabels' not in plot_settings: #The normal case: - if hasattr(self, 'mu_AP_parameter_set'): - plot_settings['legendLabels'] = ['observed', 'mu_guess', 'MAP','mu_AP'] - else: #Else there is no mu_AP. - plot_settings['legendLabels'] = ['observed', 'mu_guess', 'MAP'] - if hasattr(self, "opt_SSR"): #This means we are actually doing an optimization, and self.opt_SSR exists. - plot_settings['legendLabels'] = ['observed', 'mu_guess', 'CPE'] - #Other allowed settings are like this, but will be fed in as simulated_response_plot_settings keys rather than plot_settings keys. - #plot_settings['x_label'] = 'T (K)' - #plot_settings['y_label'] = r'$rate (s^{-1})$' - #plot_settings['y_range'] = [0.00, 0.025] #optional. - #plot_settings['figure_name'] = 'tprposterior' - if 'figure_name' not in plot_settings: - plot_settings['figurename'] = 'Posterior' - import PEUQSE.plotting_functions as plotting_functions - setMatPlotLibAgg(self.UserInput.plotting_ouput_settings['setMatPlotLibAgg']) - allResponsesFigureObjectsList = [] - for responseDimIndex in range(num_response_dimensions): #TODO: Move the exporting out of the plot creation and/or rename the function and possibly have options about whether exporting graph, data, or both. - #Some code for setting up individual plot settings in case there are multiple response dimensions. - individual_plot_settings = copy.deepcopy(plot_settings) #we need to edit the plot settings slightly for each plot. - if num_response_dimensions == 1: - responseSuffix = '' #If there is only 1 dimension, we don't need to add a suffix to the files created. That would only confuse people, unless it is a 'flattened' case, in which case we will add a suffix of 'combined'. - if flatten == True: - responseSuffix = '_combined' - if num_response_dimensions > 1: - responseSuffix = "_"+str(responseDimIndex) - individual_plot_settings['figure_name'] = individual_plot_settings['figure_name']+responseSuffix - if 'x_label' in plot_settings: - if type(plot_settings['x_label']) == type(['list']) and len(plot_settings['x_label']) > 1: #the label can be a single string, or a list of multiple response's labels. If it's a list of greater than 1 length, then we need to use the response index. - individual_plot_settings['x_label'] = plot_settings['x_label'][responseDimIndex] - if 'y_label' in plot_settings: - if type(plot_settings['y_label']) == type(['list']) and len(plot_settings['y_label']) > 1: #the label can be a single string, or a list of multiple response's labels. If it's a list of greater than 1 length, then we need to use the response index. - individual_plot_settings['y_label'] = plot_settings['y_label'][responseDimIndex] - #TODO, low priority: we can check if x_range and y_range are nested, and thereby allow individual response dimension values for those. - numberAbscissas = np.shape(allResponses_x_values)[0] - #We have a separate abscissa for each response. - print("line 3068", allResponses_x_values) - print("line 3069",allResponsesListsOfYArrays) - #print("line 3070",listOfYUncertaintiesArrays) - figureObject = plotting_functions.createSimulatedResponsesPlot(allResponses_x_values[responseDimIndex], allResponsesListsOfYArrays[responseDimIndex], individual_plot_settings, listOfYUncertaintiesArrays=allResponsesListsOfYUncertaintiesArrays[responseDimIndex], directory = self.UserInput.directories['graphs']) - # np.savetxt(self.UserInput.directories['logs_and_csvs']+individual_plot_settings['figure_name']+".csv", np.vstack((allResponses_x_values[responseDimIndex], allResponsesListsOfYArrays[responseDimIndex])).transpose(), delimiter=",", header='x_values, observed, sim_initial_guess, sim_MAP, sim_mu_AP', comments='') - allResponsesFigureObjectsList.append(figureObject) - return allResponsesFigureObjectsList #This is a list of matplotlib.pyplot as plt objects. - - def createMumpcePlots(self): - import PEUQSE.plotting_functions as plotting_functions - setMatPlotLibAgg(self.UserInput.plotting_ouput_settings['setMatPlotLibAgg']) - from PEUQSE.plotting_functions import plotting_functions_class - figureObject_beta = plotting_functions_class(self.UserInput) # The "beta" is only to prevent namespace conflicts with 'figureObject'. - parameterSamples = self.post_burn_in_samples - - #TODO: the posterior mu_vector and cov_matrix should be calculated elsewhere. - posterior_mu_vector = np.mean(parameterSamples, axis=0) - posterior_cov_matrix = np.cov(self.post_burn_in_samples.T) - self.posterior_cov_matrix = posterior_cov_matrix - #TODO: In future, worry about whether there are constants or not, since then we will have to trim down the prior. - #Make the model_parameter_info object that mumpce Project class needs. - self.UserInput.model_parameter_info = []#This variable name is for mumpce definition of variable names. Not what we would choose otherwise. - for parameterIndex, parameterName in enumerate(self.UserInput.parameterNamesAndMathTypeExpressionsDict): - individual_model_parameter_dictionary = {'parameter_number': parameterIndex, 'parameter_name': self.UserInput.parameterNamesAndMathTypeExpressionsDict[parameterName]} #we are actually putting the MathTypeExpression as the parameter name when feeding to mum_pce. - self.UserInput.model_parameter_info.append(individual_model_parameter_dictionary) - self.UserInput.model_parameter_info = np.array(self.UserInput.model_parameter_info) - if len(self.UserInput.contour_plot_settings['active_parameters']) == 0: - numParams = len(self.UserInput.model_parameter_info) - active_parameters = np.linspace(0, numParams-1, numParams) #just a list of whole numbers. - active_parameters = np.array(active_parameters, dtype='int') - else: - active_parameters = self.UserInput.contour_plot_settings['active_parameters'] - #TODO: reduce active_parameters by anything that has been set as a constant. - pairs_of_parameter_indices = self.UserInput.contour_plot_settings['parameter_pairs'] - if pairs_of_parameter_indices == []: - import itertools - all_pairs_iter = itertools.combinations(active_parameters, 2) - all_pairs_list = list(all_pairs_iter) - pairs_of_parameter_indices = all_pairs_list #right now these are tuples, and we need lists inside. - for pairIndex in range(len(pairs_of_parameter_indices)): - pairs_of_parameter_indices[pairIndex] = list(pairs_of_parameter_indices[pairIndex]) - elif type(pairs_of_parameter_indices[0]) == type('string'): - pairs_of_parameter_indices = self.UserInput.pairs_of_parameter_indices - for pairIndex in range(len(pairs_of_parameter_indices)): - firstParameter = int(self.UserInput.parameterNamesAndMathTypeExpressionsDict[pairIndex[0]]) - secondParameter = int(self.UserInput.parameterNamesAndMathTypeExpressionsDict[pairIndex[0]]) - pairs_of_parameter_indices[pairIndex] = [firstParameter, secondParameter] - #Below we populate any custom fields as necessary. These go into a separate argument when making mumpce plots - #Because these are basically arguments for a 'patch' on mumpce made by A. Savara and E. Walker. - contour_settings_custom = {} - # max_x/y_ticks and num_x/y_ticks are included in the following dict to keep backwards compatability - contour_settings_custom_fields = {'figure_name','fontsize','max_num_y_ticks','max_num_x_ticks','num_y_ticks','num_x_ticks','colormap_posterior_customized','colormap_prior_customized','contours_normalized','colorbars','axis_limits','dpi', 'num_pts_per_axis','cmap_levels', 'space_between_subplots', 'zoom_std_devs', 'x_ticks', 'y_ticks', 'center_on'} #This is a set, not a dictionary. - for custom_field in contour_settings_custom_fields: - if custom_field in self.UserInput.contour_plot_settings: - contour_settings_custom[custom_field] = self.UserInput.contour_plot_settings[custom_field] - #The colormap fields need to be removed if they are set to the default, because the default coloring is set in the mumpce class when they are not provided. - if 'colormap_posterior_customized' in contour_settings_custom: - if contour_settings_custom['colormap_posterior_customized'].lower() == 'default' or contour_settings_custom['colormap_posterior_customized'].lower() == 'auto': - del contour_settings_custom['colormap_posterior_customized'] - if 'colormap_prior_customized' in contour_settings_custom: - if contour_settings_custom['colormap_prior_customized'].lower() == 'default' or contour_settings_custom['colormap_prior_customized'].lower() == 'auto': - del contour_settings_custom['colormap_prior_customized'] - baseFigureName = contour_settings_custom['figure_name'] - #First make individual plots if requested. - if self.UserInput.contour_plot_settings['individual_plots'] == 'auto': - individual_plots = True - else: - individual_plots = self.UserInput.contour_plot_settings['individual_plots'] - if individual_plots == True: - for pair in pairs_of_parameter_indices: - contour_settings_custom['figure_name'] = self.UserInput.directories['graphs'] + baseFigureName + "__" + str(pair).replace('[','').replace(']','').replace(',','_').replace(' ','') - figureObject_beta.mumpce_plots(model_parameter_info = self.UserInput.model_parameter_info, active_parameters = active_parameters, pairs_of_parameter_indices = [pair], posterior_mu_vector = posterior_mu_vector, posterior_cov_matrix = posterior_cov_matrix, prior_mu_vector = np.array(self.UserInput.mu_prior), prior_cov_matrix = self.UserInput.covmat_prior, contour_settings_custom = contour_settings_custom) - #now make combined plots if requested. - if self.UserInput.contour_plot_settings['combined_plots'] == 'auto': - if len(pairs_of_parameter_indices) > 5: - combined_plots = False - else: - combined_plots = True - if combined_plots == True: - contour_settings_custom['figure_name'] = self.UserInput.directories['graphs']+baseFigureName + "__combined" - figureObject_beta.mumpce_plots(model_parameter_info = self.UserInput.model_parameter_info, active_parameters = active_parameters, pairs_of_parameter_indices = pairs_of_parameter_indices, posterior_mu_vector = posterior_mu_vector, posterior_cov_matrix = posterior_cov_matrix, prior_mu_vector = np.array(self.UserInput.mu_prior), prior_cov_matrix = self.UserInput.covmat_prior, contour_settings_custom = contour_settings_custom) - return figureObject_beta - - @CiteSoft.after_call_compile_consolidated_log(compile_checkpoints=True) #This is from the CiteSoft module. - def createAllPlots(self): - if self.UserInput.request_mpi == True: #need to check if UserInput.request_mpi is on, since if so we will only make plots after the final process. - import os; import sys - import PEUQSE.parallel_processing - if PEUQSE.parallel_processing.finalProcess == True: - pass#This will proceed as normal. - elif PEUQSE.parallel_processing.finalProcess == False: - return False #this will stop the plots creation. - - try: - self.makeHistogramsForEachParameter() - except: - print("Unable to make histograms plots. This usually means your model is not returning simulated results for most of the sampled parameter possibilities.") - - - try: - self.makeSamplingScatterMatrixPlot(plot_settings=self.UserInput.scatter_matrix_plots_settings) - except: - print("Unable to make scatter matrix plot. This usually means your run is not an MCMC run, or that the sampling did not work well. If you are using Metropolis-Hastings, try EnsembleSliceSampling or try a uniform distribution multistart.") - - - try: - self.makeScatterHeatMapPlots(plot_settings=self.UserInput.scatter_heatmap_plots_settings) - except: - print("Unable to make scatter heatmap plots. This usually means your run is not an MCMC run, or that the sampling did not work well. If you are using Metropolis-Hastings, try one of the other samplers: EnsembleSliceSampling, EnsembleJumpSampling, astroidal distribution multistart, or uniform distribution multistart.") - - try: - self.createMumpcePlots() - except: - print("Unable to make contour plots. This usually means your run is not an MCMC run. However, it could mean that your prior and posterior are too far from each other for plotting. You can change contour_plot_settings['colobars'] to false and can also change the contour_plot_settings['axis_limits'] if you know which region you wish to have plotted.") - - try: - self.createSimulatedResponsesPlots(allResponses_x_values=[], allResponsesListsOfYArrays =[], plot_settings={},allResponsesListsOfYUncertaintiesArrays=[]) #forcing the arguments to be blanks, because otherwise it might use some cached values. - except: - print("Unable to make simulated response plots. This is unusual and typically means your observed values and simulated values are not the same array shape. If so, that needs to be fixed.") - pass - - - #Now we will call createSimulatedResponsesPlots again with flatten = True so that the series get plotted. - try: - self.createSimulatedResponsesPlots(allResponses_x_values=[], allResponsesListsOfYArrays =[], plot_settings={},allResponsesListsOfYUncertaintiesArrays=[], flatten = True) #forcing the arguments to be blanks, because otherwise it might use some cached values. - except: - print("Unable to make simulated response plots. This is unusual and typically means your observed values and simulated values are not the same array shape. If so, that needs to be fixed.") - pass - - def save_to_dill(self, base_file_name, file_name_prefix ='', file_name_suffix='', file_name_extension='.dill'): - save_PE_object(self, base_file_name, file_name_prefix=file_name_prefix, file_name_suffix=file_name_suffix, file_name_extension=file_name_extension) - def load_from_dill(self, base_file_name, file_name_prefix ='', file_name_suffix='', file_name_extension='.dill'): - theObject = load_PE_object(base_file_name, file_name_prefix=file_name_prefix, file_name_suffix=file_name_suffix, file_name_extension=file_name_extension) - print("PE_object.load_from_dill executed. This function returns a new PE_object. To overwrite an existing PE_object, use PE_object = PE_object.load_from_dill(...)") - return theObject - -class verbose_optimization_wrapper: #Learned how to use callback from Henri's post https://stackoverflow.com/questions/16739065/how-to-display-progress-of-scipy-optimize-function - def __init__(self, simulationFunction): - self.simulationFunction = simulationFunction - self.FirstCall = True # Just intializing. - self.iterationNumber = 0 # Just intializing. - - def simulateAndStoreObjectiveFunction(self, discreteParameterVector): - #This class function is what we feed to the optimizer. It mainly keeps track of what has been tried so far. - simulationOutput = self.simulationFunction(discreteParameterVector) # the actual evaluation of the function - self.lastTrialDiscreteParameterVector = discreteParameterVector - self.lastTrialObjectiveFunction = simulationOutput - return simulationOutput - - def callback(self, discreteParameterVector, *extraArgs): - #This class function has to be passed in as the callback function argument to the optimizer. - #basically, it gets 'called' between iterations of the optimizer. - #Some optimizers give back extra args, so there is a *extraArgs argument above. - if self.FirstCall == True: - parameterNamesString = "" - for parameterIndex in range(len(discreteParameterVector)): - parameterName = f"Par-{parameterIndex+1}" - parameterNamesString += f"{parameterName:10s}\t" - headerString = "Iter " + parameterNamesString + "ObjectiveF" - print(headerString) - self.FirstCall = False - - iterationNumberString = "{0:4d} ".format(self.iterationNumber) - discreteParameterVector = self.lastTrialDiscreteParameterVector #We take the stored one rather than the one provided to make sure that we're getting the same one as the stored objective function. - parameterValuesString = "" - for parameterValue in discreteParameterVector: - parameterValuesString += f"{parameterValue:10.5e}\t" - currentObjectiveFunctionValue = f"{self.lastTrialObjectiveFunction:10.5e}" - iterationOutputString = iterationNumberString + parameterValuesString + currentObjectiveFunctionValue - print(iterationOutputString) - self.iterationNumber += 1 #In principle, could be done inside the simulateAndStoreObjectiveFunction, but this way it is after the itration number has been printed. - - -def convertPermutationsToSamples(permutations_MAP_logP_and_parameters_values, maxLogP=None, relativeFilteringThreshold=1E-2, priorsVector=None): - #The relative filtering threshold removes anything which has a probability lower than that relative to maxLogP. - #relativeFilteringThreshold should be a value between 0 and 1. - #the permutations_MAP_logP_and_parameters_values should have the form logP, Parameter1, Parameter2, etc. - #first get maxLogP if it's not provided. - permutationsArray = permutations_MAP_logP_and_parameters_values - if type(maxLogP) != type(None): - maxLogP = maxLogP - elif type(maxLogP) == type(None): - maxLogP= -1*float('inf') #initializing. - for element in permutationsArray: - if element[0] > maxLogP: - maxLogP = element[0] - #now calculate the absoluteFilteringThreshold: - absoluteFilteringThreshold = maxLogP + np.log(relativeFilteringThreshold) - #Now make the samples repetitions based no the logP values. - expandedArraysList = [] - for element in permutationsArray: - if element[0] > absoluteFilteringThreshold: - #If P2 is the smaller probability, here given by the absoluteFilteringThreshold, then... - #it turns out we want P1/P2 = e^(logP1-logP2), where the logs here are all base e, which is our situation. - #if it was base 10, we would want P1/P2 = 10^(log10(P1) -log10(P2) - numberOfRepetitionsNeeded = np.exp(element[0]-absoluteFilteringThreshold) - onesArray = np.ones((int(numberOfRepetitionsNeeded),len(element))) - repeatedArray = onesArray * element - expandedArraysList.append(repeatedArray) - elif element[0] < absoluteFilteringThreshold: - pass - return np.vstack(expandedArraysList) #This stacks the expandedArraysList into a single array. - - -'''Below are a bunch of functions for Euler's Method.''' -#This takes an array of dydt values. #Note this is a local dydtArray, it is NOT a local deltaYArray. -software_name = "Integrated Production (Objective Function)" -software_version = "1.0.0" -software_unique_id = "https://doi.org/10.1016/j.susc.2016.07.001" -software_kwargs = {"version": software_version, "author": ["Aditya Savara"], "doi": "https://doi.org/10.1016/j.susc.2016.07.001", "cite": "Savara, Aditya. 'Simulation and fitting of complex reaction network TPR: The key is the objective function.' Surface Science 653 (2016): 169-180."} -@CiteSoft.function_call_cite(unique_id=software_unique_id, software_name=software_name, **software_kwargs) -def littleEulerGivenArray(y_initial, t_values, dydtArray): - #numPoints = len(t_values) - simulated_t_values = t_values #we'll simulate at the t_values given. - simulated_y_values = np.zeros(len(simulated_t_values)) #just initializing. - simulated_y_values[0] = y_initial - dydt_values = dydtArray #We already have them, just need to calculate the delta_y values. - for y_index in range(len(simulated_y_values)-1): - localSlope = dydtArray[y_index] - deltat_resolution = t_values[y_index+1]-t_values[y_index] - simulated_y_values[y_index+1] = simulated_y_values[y_index] + localSlope * deltat_resolution -# print(simulated_t_values[y_index+1], simulated_y_values[y_index+1], localSlope, localSlope * deltat_resolution) -# print(simulated_y_values[y_index], simulated_t_values[y_index]*10-(simulated_t_values[y_index]**2)/2 +2) - return simulated_t_values, simulated_y_values, dydt_values - -#The initial_y_uncertainty is a scalar, the dydt_uncertainties is an array. t_values is an arrray, so the npoints don't need to be evenly spaced. -def littleEulerUncertaintyPropagation(dydt_uncertainties, t_values, initial_y_uncertainty=0, forceNonzeroInitialUncertainty=True): - y_uncertainties = dydt_uncertainties*0.0 - y_uncertainties[0] = initial_y_uncertainty #We have no way to make an uncertainty for point 0. - for index in range(len(dydt_uncertainties)-1): #The uncertainty for each next point is propagated through the uncertainty of the current value and the delta_t*(dy/dt uncertainty), since we are adding two values. - deltat_resolution = t_values[index+1]-t_values[index] - y_uncertainties[index+1] = ((y_uncertainties[index])**2+(dydt_uncertainties[index]*deltat_resolution)**2)**0.5 - if forceNonzeroInitialUncertainty==True: - if initial_y_uncertainty == 0: #Errors are caused if initial_y_uncertainty is left as zero, so we take the next uncertainty as an assumption for a reasonable base estimate of the initial point uncertainty. - y_uncertainties[0] = y_uncertainties[1] - return y_uncertainties - -#for calculating y at time t from dy/dt. -def littleEulerGivenFunction(y_initial, deltat_resolution, dydtFunction, t_initial, t_final): - numPoints = int((t_final-t_initial)/deltat_resolution)+1 - simulated_t_values = np.linspace(t_initial, t_final, numPoints) - simulated_y_values = np.zeros(len(simulated_t_values)) #just initializing. - dydt_values = np.zeros(len(simulated_t_values)) #just initializing. - simulated_y_values[0] = y_initial - for y_index in range(len(simulated_y_values)-1): - localSlope = dydtFunction(simulated_t_values[y_index] ) - dydt_values[y_index]=localSlope - simulated_y_values[y_index+1] = simulated_y_values[y_index] + localSlope * deltat_resolution -# print(simulated_t_values[y_index+1], simulated_y_values[y_index+1], localSlope, localSlope * deltat_resolution) -# print(simulated_y_values[y_index], simulated_t_values[y_index]*10-(simulated_t_values[y_index]**2)/2 +2) - return simulated_t_values, simulated_y_values, dydt_values - -def dydtNumericalExtraction(t_values, y_values, last_point_derivative = 0): - lastIndex = len(y_values)-1 - delta_y_numerical = np.diff(np.insert(y_values,lastIndex,y_values[lastIndex])) #The diff command gives one less than what is fed in, so we insert the last value again. This gives a final value derivative of 0. - delta_y_numerical[lastIndex] = last_point_derivative #now we set that last point to the optional argument. - #It is ASSUMED that the t_values are evenly spaced. - delta_t = t_values[1]-t_values[0] - dydtNumerical = delta_y_numerical/delta_t - return dydtNumerical -'''End of functions related to Euler's Method''' - -#TODO: move this into some kind of support module for parsing. Like XYYYDataFunctions or something like that. -def returnReducedIterable(iterableObjectToReduce, reducedIndices): - #If a numpy array or list is provided, the same will be returned. Else, a list will be returned. - #For arrays, only 1D and square 2D are supported. Anything else will only do the first axis. - reducedIterable = copy.deepcopy(iterableObjectToReduce) #Doing this initially so that unsupported cases will still return something. - - #In most cases, we use a little function that makes a list to do the reduction. - def returnReducedList(iterableObjectToReduce, reducedIndices): - reducedList = [] #just initializing. - for elementIndex,element in enumerate(iterableObjectToReduce): - if elementIndex in reducedIndices: - reducedList.append(element) - return reducedList - - #Now to do the actual reduction. - if type(iterableObjectToReduce)== type(np.array([0])): - if len(np.shape(iterableObjectToReduce)) == 1: #If it's 1D, we can just use a list and convert back to numpy array. - reducedIterableAsList = returnReducedList(iterableObjectToReduce, reducedIndices) - reducedIterable = np.array(reducedIterableAsList) - if len(np.shape(iterableObjectToReduce)) == 2: #If it's a 2D square matrix, then we will still support it. - if np.shape(iterableObjectToReduce)[0] == np.shape(iterableObjectToReduce)[1]: #Make sure it is square before trying to do more: - #FIRST GO ACROSS THE ROWS. - reducedIterableAsList = returnReducedList(iterableObjectToReduce, reducedIndices) - partiallyReducedIterable = np.array(reducedIterableAsList) - #NOW TRANSPOSE, DO IT AGAIN, AND THEN TRANSPOSE BACK. - partiallyReducedIterable = partiallyReducedIterable.transpose() - reducedIterableAsList = returnReducedList(partiallyReducedIterable, reducedIndices) - reducedIterable = np.array(reducedIterableAsList).transpose() #convert to array and transpose - else: #If it's 2D but not square, we just reduce along the row axis (main axis) - reducedIterableAsList = returnReducedList(iterableObjectToReduce, reducedIndices) - reducedIterable = np.array(reducedIterableAsList) - else: # the following is included in the else, type(iterableObjectToReduce)== type(['list']): - reducedIterable = returnReducedList(iterableObjectToReduce, reducedIndices) - if np.shape(reducedIterable) == np.shape(iterableObjectToReduce): - print("returnReducedIterable received an object type or size that is not supported.") - return reducedIterable - - - -def returnShapedResponseCovMat(numResponseDimensions, uncertainties): - #The uncertainties, whether transformed or not, must be one of the folllowing: a) for a single dimension response can be a 1D array of standard deviations, b) for as ingle dimension response can be a covmat already (so already variances), c) for a multidimensional response we *only* support standard deviations at this time. - if numResponseDimensions == 1: - shapedUncertainties = np.array(uncertainties, dtype="float") #Initializing variable. - if np.shape(shapedUncertainties)[0] == (1): #This means it's just a list of standard deviations and needs to be squared to become variances. - shapedUncertainties = np.square(shapedUncertainties) # Need to square standard deviations to make them into variances. - else: - shapedUncertainties = shapedUncertainties - elif numResponseDimensions > 1: #if the dimensionality of responses is greater than 1, we need to go through each one separately to check. - for responseIndex in range(numResponseDimensions): - shapedUncertainties = np.array(uncertainties, dtype="object") #Filling variable. - if np.shape(shapedUncertainties[responseIndex])[0] == (1): #This means it's just a list of standard deviations and needs to be squared to become variances. - shapedUncertainties[responseIndex] = np.square(shapedUncertainties[responseIndex]) # Need to square standard deviations to make them into variances. - else: - shapedUncertainties[responseIndex] = shapedUncertainties[responseIndex] - return shapedUncertainties - -def boundsCheck(values, valuesBounds, boundsType): - #Expects three arguments. - #the first two are 1D array like arguments (values and a set of *either* upper bounds or lower bounds) - #The third argumment is the type of bounds, either 'upper' or 'lower' - #In practice, this means the function usually needs to be called twice. - #A "None" type is expected for something that is not bounded in that direction. - - #We first need to make arrays and remove anything that is None in the bounds. - values = np.array(values).flatten() - valuesBounds = np.array(valuesBounds).flatten() - #to remove, we use brackets that pull out the indices where the comparison is not None. This is special numpy array syntax. - parametersTruncated = values[valuesBounds != None].flatten() #flattening because becomes mysteriously nested. On 6/28/22, removed the type call since python behavior changed. The line used to be: parametersTruncated = values[type(valuesBounds) != type(None)].flatten() - parametersBoundsTruncated = valuesBounds[valuesBounds != None].flatten() #flattening because becomes mysteriously nested. On 6/28/22, removed the type call since python behavior changed. The line used to be: parametersBoundsTruncated = valuesBounds[type(valuesBounds) != type(None)].flatten() - if boundsType.lower() == 'upper': #we make the input into lower case before proceeding. - upperCheck = parametersTruncated <= parametersBoundsTruncated #Check if all are smaller. - if False in upperCheck: #If any of them failed, we return False. - return False - else: - pass #else we do the lower bounds check next. - if boundsType.lower() == 'lower': - lowerCheck = parametersTruncated >= parametersBoundsTruncated #Check if all are smaller. - if False in lowerCheck: #If any of them failed, we return False. - return False - else: - pass - return True #If we have gotten down to here without returning False, both checks have passed and we return true. - -def arrayThresholdFilter(inputArray, filterKey=[], thresholdValue=0, removeValues = 'below', transpose=False): - #The thesholdFilter function takes an array and removes rows according to a filter key and thresholdValue. - #The filterKey should be a 1D array and will be taken as the first column of the array if not provided. - #The function finds where the filterKey is above or below the thresholdValue and then removes those rows from the original array. - #removeValues can be "above" or "below". - if len(inputArray) == 0: #This should not happen for normal usage, but it has been observed in practice. - return inputArray - if transpose == True: #This is meant for 2D arrays. - inputArray = np.array(inputArray).transpose() - if len(np.shape(inputArray)) == 1: - inputArray2D = np.atleast_2d(inputArray).transpose() - if len(filterKey) == 0: - filterKey == inputArray[0] - #Now some masking type things to delete the rows above a certain value. - filteringFailures = np.zeros(np.shape(filterKey)) - if removeValues.lower() == 'above': - filteringFailures[filterKey>thresholdValue] = 1 #False and True, where True is beyond the filter - if removeValues.lower() == 'below': - filteringFailures[filterKey float('-inf')] #this is numpy syntax for returning a filtered array with a particular condition, and here the condition is that for all rows the first value is > float('-inf'). - - if not isinstance(parameters_values, type(None)): - referencePoint = parameters_values - else: - # find Index where existingSamples[:,0] = logP_value, takes the first value encountered that has the lowest value. This handles equal differences. - indexToUse = np.abs(existingSamples[:,0] - logP_value).argmin() # finds the value that is closest to the input logP value - parameters_values = existingSamples[indexToUse] - referencePoint = parameters_values[1:] - - #now we will add a 0 in front to represent a logP_value. This will come in useful during subtractions. - referencePointWithZeroInFront = np.hstack(([0],referencePoint)) - - #Now calculate the sortBy array. - sortByCalculationsArray = copy.deepcopy(existingSamples) - if sortBy == 'absolute_delta': #take the deltas relative to the reference point, then take their absolute values. - sortByCalculationsArray = (existingSamples - referencePointWithZeroInFront) - sortByCalculationsArray[:,1:] = np.abs(sortByCalculationsArray[:,1:]) - if sortBy == 'relative_delta': #take the deltas relative to the reference point, then take their absolute values, then divide by absolute magnitudes. - sortByCalculationsArray = (existingSamples - referencePointWithZeroInFront) - sortByCalculationsArray[:,1:] = np.abs(sortByCalculationsArray[:,1:])/ np.abs(referencePointWithZeroInFront[1:]) #divide by all of the parameter magnitudes. - # Distance is calculated according to Sqrt(Sum((xi – xi0)^2)). This section only squares the residual. - if sortBy == 'absolute_distance': # take distance relative to reference point - sortByCalculationsArray = (existingSamples - referencePointWithZeroInFront)**2 - sortByCalculationsArray[:,1:] = np.abs(sortByCalculationsArray[:,1:]) - if sortBy == 'relative_distance': #take distance relative to reference point - sortByCalculationsArray = (existingSamples - referencePointWithZeroInFront)**2 - sortByCalculationsArray[:,1:] = np.abs(sortByCalculationsArray[:,1:])/ np.abs(referencePointWithZeroInFront[1:]**2) #this converts into relative distance since (xi - xi0)**2/xi0**2 = ((xi - xi0)/xi)**2 - - # we must sum over the rows only, so axis=1 is necessary. - # The axis is added to allow for hstack to work. Must be a 2d array. - # Sum((xi – xi0)^2) is guided by: - objectiveFunctionArray = np.sum(sortByCalculationsArray[:,1:], axis=1)[:, np.newaxis] # add an axis to make 2d array - - # check if criteria is by distance, if so then wrap the evaluation in a sqrt. - # Sqrt(Sum((xi – xi0)^2)) is guided by: - if 'distance' in sortBy: - objectiveFunctionArray = np.sqrt(objectiveFunctionArray) - - #now we can stack this in front of the existingSamples for sorting. - arrayToSort = np.hstack((objectiveFunctionArray, existingSamples)) - - #now sort it. - sortedArray = arrayToSort[arrayToSort[:,0].argsort()] #by default this will be smallest to largest, which is what we want. - - # have only unique points if unique_points is True - if unique_points: - sortedArray = np.unique(sortedArray, axis=0) - - extractedSamples_with_objective_function_and_logP = sortedArray[0:numPointsToGet].T #extract the relevant rows and transform to appropriate shape of (numPointsToGet, numParameters) - - # seperate values into separate variables. - extracted_objective_values = extractedSamples_with_objective_function_and_logP[0] - extracted_logP_values = extractedSamples_with_objective_function_and_logP[1] - extracted_parameter_samples = extractedSamples_with_objective_function_and_logP[2:].T - - #pickle pointes to easily be used as initial guess - pickleAnObject(extracted_parameter_samples, pickleFileName) - # return parameter samples, logP values, and objective values separately - return extracted_parameter_samples, extracted_logP_values, extracted_objective_values - -def truncateSamples(samples, parameterBoundsLower=None, parameterBoundsUpper=None, returnMask=False): - """ - Truncate samples by bounding the parameter space. Put None in bounds that are not truncated. - Parameter bounds are inclusive. - - :param samples: Samples after mcmc run. (:type: np.array) - :param parameterBoundsLower: List of parameter lower bounds. Use None to indicate a bound not being applied. (:type: list) - :param parameterBoundsUpper: List of parameter upper bounds. Use None to indicate a bound not being applied. (:type: list) - :param returnMask: Boolean value to return the mask along with the samples. (:type: bool) - """ - parameterBounds = zip(parameterBoundsLower, parameterBoundsUpper) - # check length of parameter bounds - if samples.shape[1] != len(parameterBounds): - print('The samples must have shape (numSamples, numParameters) and parameterBounds must be a list of tuples containing the lower and upper bounds for a parameter. The parameters bounds must be in the same order as the parameters ordered in the samples variable.') - sys.exit() - # apply a mask to truncate samples relative to parameter bounds - for param_index, paramBounds in enumerate(parameterBounds): - lowerBound, upperBound = paramBounds - # check if Nones were input, this indicates to not truncate the parameter - if (isinstance(lowerBound, type(None))) and (isinstance(upperBound, type(None))): - continue # skips to the next iteration - elif isinstance(lowerBound, type(None)): # create mask for lower bound - truncatedMask = (samples[:, param_index] <= upperBound) - elif isinstance(upperBound, type(None)): # create mask for upper bound - truncatedMask = (samples[:, param_index] >= lowerBound) - else: # create mask for lower and upper bound - truncatedMask = ((samples[:, param_index] >= lowerBound) & (samples[:, param_index] <= upperBound)) - samples = samples[truncatedMask, :] # truncate number of samples from the mask - if returnMask: - return samples, truncatedMask - else: - return samples - -def splitSamples(samples, parameter_indices, all_parameters_splitting_values): - """ - Split samples at a given value(s). - The samples will be returned in order. - Only supports splitting across one parameter for now. - - :param samples: Parameter samples with shape (numSamples, numParams) (:type: np.array) - :param parameter_indicies: Indices of parameters that are considered when splitting. Only supports one parameter. Ex: [3] (:type: list of ints) - :param all_parameters_splitting_values: List of values to split at. Only supports splitting for one parameter. Ex: [[1,2,3]] (:type: list of lists) - """ - # check if parameter indices is not in a list - if isinstance(parameter_indices, int): - parameter_indices = [parameter_indices] - # make sure the splitting_values variable is a list of lists, or something similar - all_parameters_splitting_values = nestedObjectsFunctions.makeAtLeast_2dNested(all_parameters_splitting_values) - # check if parameter indices is not one, right now only one parameter can be handled - if len(parameter_indices) != 1: - print('This function (splitSamples) only supports splitting across one parameter for now.') - sys.exit() - #TODO: change code to make handle multiple parameters, currently it will not - parameter_index = parameter_indices[0] - splitting_values = all_parameters_splitting_values[0] - # sort samples - sorted_indices = np.argsort(samples[:, parameter_index], axis=0)[:, np.newaxis] # add newaxis to make samples and sorted_indices the same dimensions - sorted_samples = np.take_along_axis(samples, sorted_indices, axis=0) - # find splitting spots - split_at = sorted_samples[:, parameter_index].searchsorted(splitting_values) - split_samples = np.split(sorted_samples, split_at) # split_at must be a list-like object - # return list of arrays - return split_samples - -def calculateAndPlotConvergenceDiagnostics(discrete_chains_post_burn_in_samples, parameterNamesAndMathTypeExpressionsDict, plot_settings={}, graphs_directory='./', createPlots=True): - """ - Calls other convergence functions to do calculations and make plots. - - :param discrete_chains_post_burn_in_samples: Samples with specific arrays for chains. (:type: np.array) - :param parameterNamesAndMathTypeExpressionsDict: Dictionary with parameter name and symbol (:type dict) - :param plot_settings: Plotting settings from UserInput (:type: dict) - :param graphs_directory: Path to save graphs. (:type: str) - :param createPlots: Flag to create plots after convergence analysis. (:type: bool) - """ - from warnings import catch_warnings, simplefilter - # makes sure the plot settings is populated before plotting - if len(plot_settings)==0: - createPlots=False - try: - # use the zeus AutoCorrTime function for all calculations. - from zeus.autocorr import AutoCorrTime - # create window sizes that increase on a log scale. - window_indices_act = np.exp(np.linspace(0, np.log(discrete_chains_post_burn_in_samples.shape[0]), 21)).astype(int)[1:] - # initialize array with shape (N_intervals, numParams) - taus_zeus = np.empty((len(window_indices_act), discrete_chains_post_burn_in_samples.shape[2])) - # populate taus using zeus AutoCorrTime function where lag length is determined by Sokal 1989. - # For more information on Integrated Autocorrelation time see https://emcee.readthedocs.io/en/stable/tutorials/autocorr/ - with catch_warnings(): # suppress warnings from ACT function - simplefilter('ignore') - for i, n in enumerate(window_indices_act): # loop through the window indices to get larger and larger windows - # since size is (numSamples, numChains, numParameters), we pass in limited samples up to the window size index - # while passing in every chain and parameter - taus_zeus[i] = AutoCorrTime(discrete_chains_post_burn_in_samples[:n,:,:]) - - # create plots using PEUQSE plotting functions file. - from PEUQSE.plotting_functions import createAutoCorrTimePlot - # create plots for each parameter. The parameter names and symbols are unpacked from the dictionary. - # loop through each parameter act values to plot and assign to self convergence - parameter_act_for_each_window = {} - combined_parameter_act_for_each_window = np.ones((len(window_indices_act),)) - heuristic_exponent_value = 1 # for individual parameters, the heuristic line is 50tau - for param_taus, (parameter_name, parameter_math_name) in zip(taus_zeus.T, parameterNamesAndMathTypeExpressionsDict.items()): - # only plot if createPlots is True - if createPlots: - createAutoCorrTimePlot(window_indices_act, param_taus, parameter_name, parameter_math_name, heuristic_exponent_value, graphs_directory) - parameter_act_for_each_window[parameter_name] = param_taus - # combine parameters by adding log(ACT) or just by multiplying - combined_parameter_act_for_each_window *= param_taus - # create combined parameters plot for ACT - heuristic_exponent_value = discrete_chains_post_burn_in_samples.shape[2] # reassign to the number of combined parameters, which is all parameters - createAutoCorrTimePlot(window_indices_act, combined_parameter_act_for_each_window, 'Combined_Parameters', 'All Parameters', heuristic_exponent_value, graphs_directory) - - except Exception as theError: - window_indices_act = None - taus_zeus = None - parameter_act_for_each_window = None - print('The AutoCorrelation Time plots have failed to be created. The error was:', theError) - try: # prevents crashing when running convergence diagnostics on short chains or weird models - # We previously used ARVIZ version 0.11.0 with the below syntax and switched in July 2022. - # from arviz import geweke - # local_z_score = geweke(discrete_chains_post_burn_in_samples[:window, chain_num, param_num]) - from PEUQSE.plotting_functions import createGewekePlot - # create a linearly space array for creating window sizes for Geweke percent diagnostic - window_indices_geweke = np.linspace(0, discrete_chains_post_burn_in_samples.shape[0], 21).astype(int)[1:] - # loop through each param, each chain, and each window size - # Geweke function is called for each window size. The full window (last one) is saved for plotting. - total_z_scores = [] # initialize list for combining parameters. - for param_num, (parameter_name, parameter_math_name) in enumerate(parameterNamesAndMathTypeExpressionsDict.items()): - z_scores_array_per_chain = [] # initialize list for number of windows - for chain_num in range(discrete_chains_post_burn_in_samples.shape[1]): - z_scores_array_per_window = [] # initialize the list - for window in window_indices_geweke: - # calculate z scores for each window. Use default settings of first 10% and last 50% of points to compare. - with catch_warnings(): - simplefilter('ignore') - local_z_score = geweke_diagnostic(discrete_chains_post_burn_in_samples[:window, chain_num, param_num]) - # checks if it is the last window. If yes, save the indices. Save for plotting and all last windows are the same. - if window == window_indices_geweke[-1]: - z_scores_final_indices = local_z_score.T[0] - z_scores_array_per_window.append(local_z_score.T[1]) - z_scores_array_per_chain.append(z_scores_array_per_window) - z_scores_array_per_chain = np.array(z_scores_array_per_chain) - # save all chains for combining all parameters. - total_z_scores.append(z_scores_array_per_chain) - z_scores_array = np.mean(np.abs(z_scores_array_per_chain), axis=0) - # use numpy function to count how many z values fall outside 1 std. Divide by total values to get percent (decimal) - z_scores_percentage_outlier = np.count_nonzero(z_scores_array>1, axis=1) / z_scores_array.shape[1] - # save last window for plotting. - z_scores_final = z_scores_array[:,-1] - z_scores_geweke_final_plot_inputs = [z_scores_final_indices, z_scores_final] # allows for easier plotting with unpacking. - # now plot using PEUQSE.plotting function if createPlots is True - if createPlots: - createGewekePlot(z_scores_geweke_final_plot_inputs, window_indices_geweke, z_scores_percentage_outlier, parameter_name, parameter_math_name, graphs_directory) - # get combined parameter Geweke plot - total_z_scores = np.array(total_z_scores) - # abs and average across the parameters. - z_scores_sum_params = np.mean(np.abs(total_z_scores), axis=0) - # average across each chain after params are averaged. - z_scores_sum_params_and_chains = np.mean(z_scores_sum_params, axis=0) - # save final window for plotting and self convergence. - z_scores_sum_params_final = z_scores_sum_params_and_chains[:, -1] - # use numpy function to count how many z values fall outside 1 std. Divide by total values to get percent (decimal) - z_scores_sum_params_percentage_outlier = np.count_nonzero(z_scores_sum_params_and_chains>1, axis=1) / z_scores_sum_params_and_chains.shape[1] - z_scores_sum_params_geweke_final_plot_inputs = [z_scores_final_indices, z_scores_sum_params_final] # allows for easier plotting with unpacking. - # now plot using PEUQSE.plotting function if createPlots is True - if createPlots: - createGewekePlot(z_scores_sum_params_geweke_final_plot_inputs, window_indices_geweke, z_scores_sum_params_percentage_outlier, 'Combined_Parameters', 'All Parameters', graphs_directory) - - except Exception as theError: - print('Could not calculated Geweke convergence analysis. The chain length may be too small, so more samples are recommended.') - print('The Geweke diagnostic graphs failed to be created. The error was:', theError) - window_indices_geweke = None - z_scores_sum_params_final = None - z_scores_sum_params_percentage_outlier = None - # return both window_indicies, final ACT values each param, final ACT values each param and window, final z scores summed parameters, and final summed parameters percent outliers - return (window_indices_act, taus_zeus[-1,:], parameter_act_for_each_window, window_indices_geweke, z_scores_sum_params_final, z_scores_sum_params_percentage_outlier) - -def geweke_diagnostic(post_burn_in_samples, initial_window=0.1, comparison_window=0.5, intervals=20): - """ Geweke diagnostic for convergence of MCMC sampling. - Z scores are compared from the initial window to a final window of the sampling. - - :param post_burn_in_samples: Samples in MCMC sampling after burn in period. (:type: np.array) - :param initial_window: Percent of initial samples to be compared. (:type: float) - :param comparison_window: Percent of final samples to be compared to initial values. (:type: float) - :param intervals: Number of intervals for windows to be compared. (:type: int) - - Geweke function based on logic from arviz module file diagnostics.py version=0.11.0 - """ - for interval in (initial_window, comparison_window): - if interval <= 0 or interval >= 1: - raise ValueError("Invalid intervals for Geweke convergence analysis:", (initial_window, comparison_window), "Must be between 0 and 1") - if initial_window + comparison_window >= 1: - raise ValueError("Invalid intervals for Geweke convergence analysis:", (initial_window, comparison_window), "first and last intervals should not overlap.") - - # Initialize list of z-scores - z_scores_total = [] - - # Last index value of the input samples - last_index = len(post_burn_in_samples) - 1 - - # Start intervals going up to the start of the comparison window of the chain - last_start_index = (1 - comparison_window) * last_index - - # Calculate starting indices - start_indices = np.linspace(0, last_start_index, num=intervals, endpoint=True, dtype=int) - - # Loop over start indices - for start in start_indices: - # Calculate slices - first_slice = post_burn_in_samples[start : start + int(initial_window * (last_index - start))] - last_slice = post_burn_in_samples[int(last_index - comparison_window * (last_index - start)) :] - - z_score = first_slice.mean() - last_slice.mean() - z_score /= np.sqrt(first_slice.var() + last_slice.var()) - - z_scores_total.append([start, z_score]) - - return np.array(z_scores_total) - - - -if __name__ == "__main__": - pass - From 0ab1f31bffaff05d1c11d6c30d866c09f834aba3 Mon Sep 17 00:00:00 2001 From: AdityaSavara <39929571+AdityaSavara@users.noreply.github.com> Date: Fri, 5 Aug 2022 14:25:13 -0400 Subject: [PATCH 21/23] removing old graphs --- .../graphs/Posterior_Example_two_response_0.png | Bin 37007 -> 0 bytes .../graphs/Posterior_Example_two_response_1.png | Bin 43398 -> 0 bytes 2 files changed, 0 insertions(+), 0 deletions(-) delete mode 100644 Examples/Example07/graphs/Posterior_Example_two_response_0.png delete mode 100644 Examples/Example07/graphs/Posterior_Example_two_response_1.png diff --git a/Examples/Example07/graphs/Posterior_Example_two_response_0.png b/Examples/Example07/graphs/Posterior_Example_two_response_0.png deleted file mode 100644 index 9afbdaade85b83764bbc53ef262066f7e417759e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 37007 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 diff --git a/Examples/Example07/graphs/Posterior_Example_two_response_1.png b/Examples/Example07/graphs/Posterior_Example_two_response_1.png deleted file mode 100644 index bfcfb4f4b26732c4fd0d6f5fd323b4a68d00922e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 43398 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 From 49193cc0712098935b4cada9ffe302bd0d4ebf5d Mon Sep 17 00:00:00 2001 From: AdityaSavara <39929571+AdityaSavara@users.noreply.github.com> Date: Fri, 5 Aug 2022 14:29:01 -0400 Subject: [PATCH 22/23] Update InverseProblem.py --- PEUQSE/InverseProblem.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/PEUQSE/InverseProblem.py b/PEUQSE/InverseProblem.py index 019df213..9b2aaa41 100644 --- a/PEUQSE/InverseProblem.py +++ b/PEUQSE/InverseProblem.py @@ -3208,7 +3208,7 @@ def createAllPlots(self): pass - #Now we will call createSimulatedResponsesPlots again with flatten = True so that the series get plotted. + #Now we will call createSimulatedResponsesPlots again with flatten = True so that the series get plotted. This should only occur if all responses are scalars. try: self.createSimulatedResponsesPlots(allResponses_x_values=[], allResponsesListsOfYArrays =[], plot_settings={},allResponsesListsOfYUncertaintiesArrays=[], flatten = True) #forcing the arguments to be blanks, because otherwise it might use some cached values. except: From 25a07397cad3e587bb12d0036c2762afaa9c470c Mon Sep 17 00:00:00 2001 From: AdityaSavara <39929571+AdityaSavara@users.noreply.github.com> Date: Fri, 5 Aug 2022 17:49:56 -0400 Subject: [PATCH 23/23] Update InverseProblem.py --- PEUQSE/InverseProblem.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/PEUQSE/InverseProblem.py b/PEUQSE/InverseProblem.py index 87b41287..adad1202 100644 --- a/PEUQSE/InverseProblem.py +++ b/PEUQSE/InverseProblem.py @@ -1713,11 +1713,11 @@ def doOptimizeSSR(self, simulationFunctionAdditionalArgs = (), method = None, op #This is *not* recommended for use in other functions, where it is recommended that getLogP be called directly. def doSinglePoint(self, discreteParameterVector=None, objectiveFunction='logP'): #objectiveFunction can be 'logP' or 'SSR' - if type(discreteParameterVector)==type(None): #If somebody did not feed a specific vector, we take the initial guess. - discreteParameterVector = self.UserInput.InputParameterInitialGuess - if self.reducedParameterSpaceOn: #if reduced parameter space is on, we need to use a reduced discreteParameterVector + if type(discreteParameterVector)!=type(None) and (self.reducedParameterSpaceOn): #if reduced parameter space is on, and the user is providing an discreteParameterVector, we that is supposed to be the full parameter vector so we will reduce it. reducedIndices = self.UserInput.model['reducedParameterSpace'] discreteParameterVector = returnReducedIterable(discreteParameterVector, reducedIndices) + if type(discreteParameterVector)==type(None): #If somebody did not feed a specific vector, we take the initial guess. For the case of a reducedParameterSpace, this internal variable is already reduced. + discreteParameterVector = self.UserInput.InputParameterInitialGuess if objectiveFunction=='logP': self.map_parameter_set = discreteParameterVector self.map_logP = self.getLogP(discreteParameterVector) @@ -2940,7 +2940,7 @@ def makeScatterHeatMapPlots(self, parameterSamples = [], parameterNamesAndMathTy plotting_functions.createScatterHeatMapPlot(posterior_df[param_a_column], posterior_df[param_b_column], (param_a_column, param_a_name, param_a_MAP, param_a_mu_AP, param_a_initial), (param_b_column, param_b_name, param_b_MAP, param_b_mu_AP, param_b_initial), graphs_directory, plot_settings) - def createSimulatedResponsesPlots(self, allResponses_x_values=[], allResponsesListsOfYArrays =[], plot_settings={},allResponsesListsOfYUncertaintiesArrays=[], showFigure=None): + def createSimulatedResponsesPlots(self, allResponses_x_values=[], allResponsesListsOfYArrays =[], plot_settings={},allResponsesListsOfYUncertaintiesArrays=[], showFigure=None, flatten=False): if showFigure == None: showFigure = True #allResponsesListsOfYArrays is to have 3 layers of lists: Response > Responses Observed, mu_guess Simulated Responses, map_Simulated Responses, (mu_AP_simulatedResponses) > Values #flatten = True will convert the individual responses into a 'single response series'

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 MA#*wP;*ER%2UNr(h5!Hn diff --git a/Examples/Example07/graphs/Posterior_Example_two_response_0.png b/Examples/Example07/graphs/Posterior_Example_two_response_0.png index 8f74b4d3c1db85ec20ee5156a2d0092fb803b5f6..9afbdaade85b83764bbc53ef262066f7e417759e 100644 GIT binary patch literal 37007 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 literal 53800 zcmeFZbySvV+dlf(qmE)LieP{Wf{21jiH?ARgtWARfV6bSj4cXEH%fOm0u~`DT>?rs zBHjDA(3x+qz1DC4`K`6r+AiOBKzN?#zOOjXqpthu4Y8|RHtpX;p-{F6UE`OeP}Vt8 zC~FV>u^#`T$~9w(|Ex9nOGx?;{IUJx&J%pU@!mCg6AI;U9r@p?wf?CA_{R&T0yj;i z3^h$HZX0V*^lzKq(=#;H(^flVu3>DVZD?@z6x*pY%!lrpn%?7LW&NL@pE5MoVr6i8 zBTS(jq6qO{mbUaCYPC|Tty?M@o2DceA939*{H#ORNzpUM$2aO`mhMQ0ewDB&i=xuK zDBX1J$4R{i<=pUt1G zJ^lO3M#lgDm;Vo=;lIgd)rtKT0o)OFF>=>kSFc{(H8P@7d~)@#p&Jq1xN#$w)z47+ zs4I`RGO6a-zKMId_B6dvj9fx}DQmt`W9jcP9x6HCZX4pIVjcCRCt~f||3==Naz#?1 z>9J|M?f45?yNRm5l(zi(*}YM&d*2-UwdbE(Wqi1_dY|hZ+41SBt8_9Uf-g21as2uv zN4pb4Dd{Ixt@{0b|4Wk^@j>O+2VRoUVBe3wn{B8mBdhPfKXm{7jmFYMu7B6lvWK^K zU~`(Tu(0rv+09?I{#<|GKOmsHyPH8=Ts$i?bJvvXrsu!cqGRZFuTzZ2j)f+Qo{6$J$X4A(u~A3uIfbMWA1BMr((y1V$`>o)qJg;@7x_% zUVvBVHpKg=crnYncCk`8xwxY5e0B|=rsg|7!a?u2GA-}ySQr^UPc(o07_v=n_3IO# zXRKb1nRKXJS-o%NJ-%i<7YxDQe%>61RiULbR`+_f3UVL(9+6DL)|ib4DHiRyb5^f< zuY6NeSKm!b8($M4KDaPDE`06U4M|DYw{PD{2lH=Sw{~r$L2I_a)T^hTKJhOu&5v@~ z&LrX$n4#|B;kbdin3&ri9~oO%WHfzcWMrHhOvs<8jXOG@EGy{g!l5Zu6lpZMimPQ$tNO_qi@y=u0Z1t$FwN znz|edLn|vQdHwgZW?jYGMSac)U^->~`s=T7J52fHP)eoFL|>Kl!dOw1R$(rKv60o>V&$b&ZN~&WKdUn8Tl{#mCs{fhB+G=tR#=k0vCk7xggu=(6vhEZD0Wi4uTCRW`k#UiiG~ zI%}@Gel_P=zNMKEa^WZC;=61NevfFe)Ru2*1<#_)hnuZuzCV_UQ{eDmQIu6tQ8}~! zMYi>1v@xiqy6)v`5AYo$H%3DF4{@s z<(!%zB` z`St5p<3FwYz8ub-YSx|W_EIft=3Dr2#jL+tU~-`DWMj0+?ZNuExgQ^?SelETQ->IJ z7DnAnQqvsXc}(QXbLz9~dX1;ULPNcq9cI37ShsFnlvZV6R^U9Yeg8$kDz2m})WXwf;Snq12~uIrdZpoD_QY#5(?T?SP3{;0X$=e7EKfAa%QL~V6&I?--tA#0~>TW#-X;im5RA>(t%J8>rIaNE3 z8iz|L#MN<%8OFTJ#jlRC%;nE?IL%c$EUCX*5N$})mBWw3wr=flaQ*Cdob1)C-wUcS zVkXq`VbLSq_F214E?eYmcl2&pRqRu)L*d38wixDnL_|c$&qvF|#2RNRnAgY3huFDVZ4$L+r~rQFF)TQen-3b#o5q;iti5|tQGY; z$0BF)tM$*jy7~s!70JddE=>KL%kYY}myj{biwcQWmG)@J&)t=J=$fu`oP@BBaK(Gd zS1Km1)>T$)q0)$7d{=gb5I1e%N$?B<6v_UP|CE|%J;?B`LYGp)JjY=%kxcm?;* zA3uugX4upVi|gv@V)b#&*>>~h@rA!X{Pf_ceDqJN-Ml$Ja9Q}qTSC#2Vb28oSg!9^%C(k3Nj|STK0Vz~BhD8vxQ|1( zUb-e+w7i+D+=JZa%q>QOArek|S+TA*atVG2^xy}kG8x4q?TU|U(! z?{ZJpc}IUAe60H=`ZAZ%I9HoDU2lBk6i^&di;wrnXkFUzx=H~s!$T}pa=oT8%p`^17@w#V#29ZoE*@Bm4IGtiHdsEncYm%H@r?Mr|LDGp?*=wT%?(brZPFws)!%FjERXM*N)L} zIzIf0Pb~e2E{PW$~M z6<=**k~&M^l(Vz5tf^^geS&I2lvIRH!L!}b$~orgNe1nCae=%x1L!vFx_lNR{+`V8 z!GIQhlMSj36a6(Br}r@z0{zJ!^ zwHoh<(kS(8D#QfWplLG;ZTjPn#1n45Z4oGt;r7%4yf(6^rFB2MOY7cRnXo9Pi=Z5q z80T%=dF*b-r>DZAi>m#uCcPE?U$acGhU;7zu1{da+{w|rQ>nS}o5RxV)z)mYl;R1h z1Lw+QrG#D4gmk9bnwsRPF3#Kv?A&!yRs>(Y{_ydms6N^UfecA%1;!j1?p9m6zJgkv zzD{Y+HoG1n79e@)(xtqP75w8Etl#?7EGvH2&#gG~S{z@J%H_KIu{#n@i+G>DeE9I; z@M-K~>6UbT0#SbaxQC`KSLA$9il6@h>6@)N7AH@iK3!@Va@D0C_lCO8xn)25H7dS^ z#2q_!q@rc9sJy)y6%{qt;l$e2(-V%Ld{J9)V$HiNyd)cW<1(+!6ktuAbn+b`273Cw znX%61EEBDCaidCqPAS&>g=AEEe}DhlH&-^K=`~5_<>diZeVH0=;c!^8ZGCGcwPyXF zFH=%dR4l(g)N>I3_?W5zd$DVDGy!WeO0(P-$hLYkfB6(P4DWc^StiBw*i%ZGuQ6Nw zF$sB+V;u!4&oeB?)M_3T;}!Bs`R2pE*!sc13qr0;GSQ*5yw-i+AJchaYL6T}ns)E| zU&F0Aa@agFXr%;Uid_F-Kh>nA>Co95Lh9@%Wj(QyVZwQxypy$3d#3MURWQ%b z&(8WxvdG4IvoSC*sG3mGT==3kg5J?REo+>rUbMA_2Y4^BiDzXG?P36KEX0NT*#Deg z?u>hbej@m=ScmWOxW3=xq_B2}<<`D$-)_0zF-1v;S4b-f7FSaXPC{J{w-vQu#%dMy6uC`*Duf*Uq$=p1RyDUVmpy!Spe@R+FYKEu{*kM3pw zu)92_eJ=&(QF))E3JMApZraVX4+zPxf9B{_=Y4dxKQ4#RhoF0oVV&%;8+n`He2{y; zVcT1uZr?V`&Mi{yboMicOYH?isv1Luc1pElwK)x9d9W+fv8g>^156JV2eLB)NDa3i z&7BSu2*R&~pe#waR^dfxPmWS@5S9{hk&X9ZZBBRQnb3%$vSz1v8(?!O%Xtq&L)FfYXyGIWm^fhS(rS)|V z4aEXQ$6yJ%RtuZNtL9%U^`@nzRX~Xmc0Y03C=MXlm&YnOG?go#&S4>`Y0~YuxNm(; zj2tV7*Bwsr{_3!^txsuo><9*7K&c#v2(m9pz9aBrKL@+bl%7!a|~N63}SY#sc*-59{4uZO&-VUF3LC%tyxmp23G7y>k`tgMSOoi13?Wya;j@_{LC83wJ@ znB_A2t+YImgz8{3?peIym8zF0%`*e&$S zmoIwr>o;uZ^}bK$ADEdzXw&A+Ql_S+;fs08OExuwWdl@|0o)A})>vIl6^udvbsp~K zeXT32okcZI$+hd-x7XW`3f`d(QOYtNzB&_(@6c{qeo0^Y!X=2a*K153_?`A6ED$^ckSLC zCZD3o$iN_QfBhCoz}~JdcN1&<`KjUXgP#He0~OG7oz<(|visA_Q>tU-Q)twMv~wJ< zzStjz4qP6@$5(S@z#ed4NSiYbEn8j*T_Pql^6i3+n(Alm=cS~3Dug-s87BWul_6%B1Wm0}nP|(-b zR*#o2U!y5%G$jBRBcoR^-m(wJiEM)8r(vC$3>Y9*6W~v zLCz5P3cgV@2t05Xz>_ncL0L@vL2vqk_Gnu!hxNo=(4D(r8+$f>1Em`T({Zids$Lo^ zEjVYl??s`=&QDFBE$OHoGO}iK2$d5zd9M_BHW{@&H8RC!u%1OZ%UIws6An#PccRxAi= zKfp#UE_xF98^vD;iWgbgH*b1_*b}%V>VKgs_|9b|C8hY0qi22exynwYL=>Ox92|@} zr{8=RMV}~H*uq+}k1s_0q>_9;abaBI0nlF&w{1axd0;W%fR9UJXb42}+X}nIMV_qd_qs7Pf;N!;^%m#^+T<-_@F?o=G(poU;I+2dyzZ9O?an5m?s zBz@TMdRma(b9#+8UbiO6e;zt;f5Mk-_LcmOb1{Ytn@mRh*>!49v=6QvEpzi31IEgjvOHzWZ+~w%Gd$Scts&7lV^ID}8Xd74j!t)T*f{83 z5!4!!N5Y`mS zh)!l(RH~;34Ju_wHT=1iasXn`}diEBQ=&M3{O=v;9BuYSs%qS%iC5!4Q1+hra|H(juSWS8gFlT z#E5S^WTh{(Sr4+*{2kI+Yi-@*qm}&J3Mz!zXj`j$ zSNUDgBJ1f^3x=?62SH~VZF63BcIhAtRJxfVD{wb%&bO`IhsqDg2Stfqh{$muX({FM z%Fq)a9^kKE@{k)HP_E3SOOEu~7_d30N}?OeH8SSqTn8Ew56#+4 zVu3u`Q*Cv194%dES9WwFRnW!pD0=O=k$x*$?%4OIYi4ZZu{1dhzFv6v;K2#h7R*^J zm-$d6s&*9r(;b_rs2b2BOrgaJX>UkhgeKP%$XOS5eJ>%0fB*gWe)hXBX|4MXw`Lk$ zxqbV#Lh9XD{fr|-fPH#A@brNL2M@*pkK6@d(Wwf4NE)A`BPA;*=j6F_vbe>%U;!sm z!h{Cea&rKcH1~wyljlZqMv3kg79OrM^W!^#zO_+O$A8O?(9h*8Ei>(x7cCY6sz9C2 zoUFVBjCdJ%sP4hWou=bGqM~4iu8?U%p}6*5u~`exSL5If>lAM=$<|{10lPn~m?~_rCc>q}lO+ZOjHm%%(KV0h z?7cOZ!Aw!Fm~vW5yud(xcI5X@K50qSc8mEL0>01;G^S!R%t1iT=g*%NvQ4$axh-on z(%8mdoNv2<;td)`A5!Jr-<}D`YYi44MA_?De*Mz5YBWcdW<9gl@{m@Uo6`;31BsyZ znemmP_rKEP4yE%qkE`&#sbh_mo!1%GcsV;Fd;iZ((R)HUa_jp(4IUq2n)MqAuxP6y zjMlj8T3x)dVq04qsU@~{c9YnFec;j6uZ~_tkq@9zht{qA{-1TY&Zy=L!vv7MQiv4T z!%{?9vKrU48!OoBGje34B_m-9j6}O89Lz~9S|v9dO}DGB?*yDD-i03@$@)*%Ya&Wc zq~%zLe0(Rsy)2d|R$K^xYLszz38c-J@IHh+nTZ0Y^UiUV?|H+(iXgs(bp1F7Z&lO} zfp|v18ft6|U91T%%O9^vO(S|O6HF^e3({{bjR4YOP;WME+*k#~p9XP&S)HtNVy0|n zeR~M>s;0fmM=P)jyDAk|qZd?swc^jhg+0aPVd!cxB0gs{IV9ia=BC8?NNz*ll>vJb zO}ieN+MM+eON%jrT%(bT`{Od|mjmrSG1zMm*2%3#yAJ>S2->Fc`-PTFNX zLX-%-QAkI2>1KMHbU+>mnx)sqqS2|1d{y29i!*UA0AG0a{b@G{c${2qej7HgdKUoO z#cZNaqGld~mbbah9*!}gF_0^XhMfteH3d=tmBk-9r)SqwtfXF6J`Q%*O_@EeaQAMc zK=O127gIfPs+{<>`T6++H)+!GTGt+#Rm8OFx#deLZ1KRT`=r64)BXP8VOAhF)B&|p z+bGGfTGSV%qF>Nvs_0|Wl~oLDq+2r5R|~Iyxv=i#$#bGB(i23Y^t+>tNg*r|M0mVY zbq>{0ifz>Y`9bb;a%^YEp%E#hF3z_v%L2W|7doIk5OYCZ@!q}DlMcW76s1evbK|#m z`+3pjX@_MkS>eO1246GZhy`%r;Y;1|Hra`VlYu z2~B-;3fe@ehJUjF)hK@^G&xXpSmcvG#m0f$?LU3%QhZOmOpGU&Y2U5-J=?dx!Rqe0 zV2;U~n~)lJ;{r^K$9Cw|`Oh*sQM&dATH6G=PZX$%@9EqB$mco@(K9e;gTE0QDb0S- z+G%ikX*ypf`OfEsgbRB?PFBnm-+Tf~`n!s`;i;B;vt2>4P0O5uo&34HoTXvh0kSXA zaCPT_IVUhi1BEXR_&Cew*=9AT>&Jk_rA!g$4STHgH)f$wUY;t-UQM*VYuBFqrUD>V z;?S#PF=1W9!z{;-A1Am3%E=u3s!4F@0c=*ELhJr8FZR1%4#l+dYoh7AAsr{g<>DFL zpbJL9;8tN5?dBp;e~nE|rLi0LuqcG87dgv+vikmTZ*7jnC{H;WxtZNue}wg9om_cy z{`?3xisxUrE16rjUW3)`#)v}H9)O~n{G`G)eFf)EU07xKRO9S3zZR;aZE5n_2Y!BjGOlT8x6R2KPCy>!a&Gx6Tpw!G zWx$@wn!`Hie^(y;Sp`_vJuu)qIvXM46HI+plT;4z3XT9z(`{7@Mc2W5H#E`^;(kD5XCsTmX$(p6Va!?Y}&I<;Re%JrX8s2xsgZ*)nl z`4v=n{f7|8eh!$+Tez&*OS?t`#2Ak0e5nfAZ@-W!`J&K&10~b&-z3F}zXbg+yy=&a znBC9K%OreM%s=txGs@S}f1^mdwxCJ*cMm3pjht6?>B% zV1VGpj~}mSl(tl6-&7WKju zHBzML__1RHAPW*`1zo+p$K~YYfDU4yy_4_*hvko3q+CHs;fyZ`{Gai?#&26oU zy$F|?@S>gFaL=vGAcrM+ySa%flvNRZykZWbC8?x3NIlHK;e++W4i{hxEzeDOf#G@Q z4cnxl&3yRqfgNNY+Dy`EgQMckG@QYZj|R|+G>11((bm4dzX8Io2#7%Jje7H`A$gE1 zWp0a+)XY89)KNguknL2JvrVf&AP9VMvIq5*eZ2Kxs&2z6CtYG~f#RlWRno#=ze?aX zV7W&9@gqn6LaBn=Sj1cygu6hEsm3it5o_zZC$j`3l+E{wrqBJG5E6KoUFv0`JbwQ8 zs|*8eJH6O{Xf59{jcuxdlMn~gChSVY2XLI5z{>D#A_&<9{=TkiH|YTYLT_PVLF^zv zxLVzW+;HNO-a363)z6pPA|929UAvl|*g7l0bDd9IMIr`_DGn4~7KZo`Hc zT=z2Ejj4roH&vTTCTM8{i1UjXh9f_`sj#P_#V>fK$dHDFTE*L%W zicq#SGCND3>{Yd`a$ktM@#Y`vsi7!{z)?s8kzas3l!i)+kzuJZGaali$8X7}kc&MA zlYrsCvvV)AX5s%EB%5-B8?^}WrOxK z3EodKGoFaPz~0)ucW(q}{0Y!vY#X*om`NGLZ@PScy^!n0rJ2qn0Tfye9e2j}=t$S& z@P;EJBjJO~a}D{an&tb+5P%I@=qsZ@^IA{bfFnwP#L|p9QK9#IZp~=7SA75ey)U0b z9_rI2;<_ep2e zkP;Ficz*SoHRa7>cP{iLIxH{AA9DyxZLI;hDp@KVqS<(BrBgWmWqz1bzR*9X`>8~A zLD!v=S99mF_1uOHT7hnSR4n?wyoZnxZwNLCH#II@P*)*E^M&j3yu~0!Cj9e|DfUaY zzyCJtA0q`asRNC307!Ct_x^2=y`58 zBDng(;luBxou&b?NbL$NEYdt-)X~=$iQ)sJMGSeXT99`RixDMKU;z|#>SKKrG7RDX zV6}X|Opc8a>1Ps!l9))o7wxjc#e+^68XA(40_~Vcp3=Z2|FotCy#Afbyma`aVyt&; zu3^=oD3K&JS!e5M4Y~HTLv~Klh}F~#b`&`EHu9afi#>emRQ#n*H&@rPwhY|{F*xWE zWJ_ylX$fgh(?X4S`EnbFezUYpv~(4q;!Ewf4vT}Tgl+>>pDbFouiB2SigGi6IEZYn z^`taHYp`VEFAb(|m|k+&{cAd>FHjvno;E&~q*FF^@#4=+r^(x+#~IHt$Gu9*8-~1T zJQT!sTj@qqs~3`v{bm7NW_Q^4k58OMZ*%e{-EI%7N-R(sL2(}*Y$W*(?Fe(gUotyL z2i(aH$95$`eKsU3**JwTi#DsPAgde<4`2ts#=z-T_;b!Khc&MHpSu0+XLsBI=b68%--5oHZ9RQurXCDf_`#3%-9- z%s1Ai+I(9zt97k@H$Q`%Tw2;sXEhr+`20145ZUzRN01!R9JEBs6-{uM?e@}}hut87 z_E(nf!ZAAd`FN1Kd-~u7c6RobymjCIZ=x_g)Jv$~%2~9k5JT+nQsh9=LsREIaxMlA zQUANmkG!k8^(9l-BX);wY<@n?Sx%nK@-`r1q6v_N+%@u1^j3m;ONEDo&A&EV98qA%i(W(9DLgiql)C_{_w@;2u{qs8jdTIN1rFj2GyAw@6 zp626Q=XFvmYF#*#(P+39LoZSyo(W8C(373hA6e5Kn>vv1s*n)&eg#XBveZ6A#p@r`^9lny9}mvn0i^qNYZS z_IOn9=uFWpFG*h-L!a8cXU{PqV>2@uA~NKjw-IEx_p9<9>8gpAVGyb@u~gza`*C4G zr1RBzGy#(B!(>MgAp_Oh8h2lpc>4<2C`mfNVU|E&Mxh8>w|P&a9t$z6!Q3M;^N4TB z6C?7U`}bv1G)0Ltfb0*kxZxBK(O)XK=KXu)gb0q&QZ#;&^Mrf>t{w&$9|-|xpgApu zzR>91_Bz_UVrow7d#{3ODc>ySHsSgtdyG zjt-1GB93-+bgZ;4ImAgsI$h}a;<0;321pL2YZ4xI3__iNg;KZ~D4}5xd3?539pEyJ zjItkFeDdFncHlw*CZfB)zY&TMV?49hrAf}%tnQ|RgZa{)FYveGP@JzI_L*YP_BIM_ zN(m4ut3MkFSy<`8gt)M;Qo_o7`0!yAKm`{%0imNPHz^mXcz!s-JPSvK^leTSHdYwV zBYqm*jRaY~puf4p^2{>n)fxGkCGTtn1*E(!;&?O(_+n6qqF9;)+Fl1*dG??~XW_M@RgO+kd641^M5zA3rloveohDYEf2IAeVh8M()nvTqn#m#?d`1# ziyr&t%ie&E4e>*g7!dxPCaDg~_AncZ8ye&=;9md>;vuE$0=J)2y$%+?^&nShe@%og zcqf-p#{-0Pn4}|Llez%w(*x!$hT@2jv9YnMmsf*wRsz7aHWH}K2nzRLmtk0lv}q^va7Kpg_J zHSbNRbEn&EV3!1t-$sERK;je3TNc@CV&iSw_L|_G3m0y}6fSRJZQDwX%Vp~|NVEW? zmPVyx2n(3;R;eUhPX4-(5K%gjnYU2JeS%_>`24Ni*n?cw6OsLP*i&chp68u-l5eND z*Uin0mq8%V*_lZy)|cjPwxoW0?0tZ$1mDCE!A zH9Y?Q*JeJHA+&p!>%lM@JyTcR>qsVFRqfw0*EE^te%W)AK@Ri7=Shimt=8$to2b5S zp{t!)^doKiueZAK3EHCoi6eo|NJBC7U{zIdC9weX2yIvp!U;oj^@@g!r%xxI_Hz1< zU{Y?aL+ZI~x)DW+XrG$;a`8%4;7F;r-v1*~wC~ULFK9R=Aqd##^*&rY`tQ+{o0mZv ze)87CM?st>e3}#k$QbeHbWA)vO5h>&XqjF8{ZY?$pBz9DuO$&f2;GgFPCn-S?`?Lm zq0rQkjDXswCm&QcjTrq74TVFdLqPZBSm*teATDHk-qo%dedP-)1v$A27@%QhJ9H{^J=kjEvO-b&~T_ z*izDI(WtJ?%hpyxmoHcQa%e9OeMKEXfALV741fyucMoA$ur5SLkw76aoxLYCvyqh` zWi@|kF6Nk+ev-Pr(5nk`nOt0udBd)s8S|cK6 z`t9ASTqM84?TO3SUFtPXLsz`D)irV zenYy<*JHWMFuT8IIG%&Wxv`_O#+;&9 z)10PlH2eT!Dwq<35CR4_q@~@PCMQDgVP7CrDc;R#ubJaeLyqELsknwh(Ci17D=}H% zCNUs{-ngJE(0_)c1s{_2p3*llF{^_weSM=5%^QHdK-vl%HyRom5?BSX6h>1!Yj@yR zl-^MZo9oQ}xC1qJ-A}2w^YFwT$k;|w+_)P_9A1Es89~7NN_7SR@}3JFtuK$meUa>* zD?NlL;-UwOTFdAqP#NdfL zQ2auP!Et%EmkupZ3=+W{Xp2ZeVv1y*tra?-C`obI8@Mw^Ae2Wufp0N7~5OABB71MlPR>&t{( z=$3t_4^_jJrO>U?xe#QXJQTI*{r7w000SBFXO@m}x<1=rS|o9HKQ{dy`|{}{IE zf8N^L{5q}o@??5**kHf5U*^LTxp||IbVRw0d&_)|GRBGBd$?)$PnxspvyUgv?6g3V zkr2hj0B#aXK6id3XZG2;Ep$FjS>m3g^7cqDE*ZIavSc(X z1LJCIr2{S){Uy1y)q&e)DmKdY0e}L;OE-;ng!k_*EzG)ByB6l!Ojocip{fMKTIsS< zc1-KaTAv7T2NQ;9;Y6rpk_vzB@9$5}I1GQyk|GBhF~ntsG~DJQn0^vQlP)Zz(UFtGLm;d1piGm2ti_wVo>7U^Qgg!2%{Vlx+_6!aq@a{e;;j z2I{VZ&saT!vC4s3ZX0*lZU{2eI0tQ}qOk}i1I!jDWTcUlG~S&k9VJO}B{;LW1)#2E zs2Sca@tHUf)N+W)-As)CTklspO)c!&wqfO?i_^@9=^Y&Uog-Yw!z3Ai?*A!b3?_jT z5C(1R+VJ!RcZWtS5a{FdVZ2XUaUhYV2+gm*eR(MZX7EQGw0ap5q8`}0e#Db`=Q~Ug z)CNB|RK5xCz@TeE=SkWiWeQ|_Z~xjKU<9Th;VJ0^9ph6TrXE?jlzXc8Ox+7#xUJv9 zWEq>JUenQ(MA9IIHQQP`tl)mk~f8vBs}EqSo~e0y14CgkM1aA{zjNy6|Y{IWOe z?;M6w-}S`15?cy~G~_SPf=}GEtERqM{6*Q_Z}0xLa5%j3f!~&P(lBp1Ae*@F|3+1Jm8Ljy}2n?bBWH+S>E+Ua%&!@9Ip z^>@a_A3#`gI(Pp3c|~zQR(FS$H=_s$-b*y?c#vwHR-2c5=d`!#`F)|U4{4YCrrJ+m zZrY#=+~R^7BL zs#MUyR~J!j+Ej9;5F~Tct^N=vVkvH_hODpInaGL zxw#cJ{&mo&S^erLZAt2nJy}%^>U%mmf`R^;bV_U$aeNM^WXqe0F<|5v5C>_0&_hl| z0wn_OWmFE=`Ck)4nOAo^_zr0I22Lpo9CU9`u@MF2%P4SPcLu>+r*pb=OFcM&f)e!^ z_Xx}dK~3^4qoV1*S%B~jT|(6$G;grxbU=iOhWU4I8_uIR+u_90jc-=JKWP`sIUx#3 zp%Y3duL!WqVZUIhC?a(y`Yz?`ptD0ZYi;xbc$c98kcE-+y;F5RYdA zko-K67nhrI#t%i6ny7vgKl`A7`lYD!bH{C~yPm9;kY_L166u)v$aaZTeZff0*i9i#4H9M5>&y2|Gh&jT?mR9CxG6at>~!iG)B!o2e4KU8 z#F7ZcxfXElU0zDYLZm=2F1(moc>WzW-??~@kDEYt&uKW%Xe8hg3Xv>7$+1#jFDZ;t z0=dj|lpGc(87CDDkWq$wk2a+u^Y-nXTRO!OQExWH(oe9kh(=Q#`6Tn7%0nn>Cq@GP^*(FW<7g3sg) z9eq!*T)o5$>#Blx`YRC4RY^M(Og6+(OjC=WBy@f^+--(anODWc#3c2h=ZxWCh)fMX zdF>@pnQqDq0$fi(Hwxj7x($G;I}x{& z#YLi_?-im~MQg9Lg4f~El9ac$vp+Au+)>A}6`I7>DL@Q17($!O{!?y&)&o(Ez-^Lo zkX4MjUR{-~;a_ft=HM%-2-S{5WaWVgwRb$WIzj`W1^{t}(R#cNx4Io#qh2k#Sjk6? zY8=J$my8+dq{~Z;*k(-xnA0mI;f9+G6Ga8@G%?c3y=l`X*MauM5erZ*>Q`P~UY_62 zbi?F*f`WLw4vlU{&-1-3^h38kO zc-i$oYLtMA?Fb7C6H3G3u^C6sWHl%^jA^iJWIodW8dBLe6ibX^6+$SMh@iR+VB@*q zW3Q4_DVI_>O>q$)KR>f#I&+wL@7r>u?p@{`Z_L)5t;xH>+q+p9`5d+RN>0GlT+QQTWZK9P&nkXR(})cTV$``885pD z4Nx){G9#PC$XBwr&YV#?#se#dF>Ou%NITTYP@bC!fM-T!Y(>)lu8XvGN@il>X&l0$ zL(E7lIs?a=aD@5*biR_td;PM~(!0cY#`q=UFu7zU>-e5%+CXQ!?R=}Ll<*=B949=| zCYR#qYY?>R9zd?Y%}CZ*^>tQ;I=}OVv`}-O0v&4VB_6)=i2ul|Yje#tO}V?-;6*kf zOCmXp=KzSctf?oDyTEBkp|JXR`IKYiYDj=mG8ZP!7}zk+!OoR_y}>7U{X58L&w=y` zzy@3gFm^A5@nnQwR6I2e4_g0EW zA2j;3y$Zs7>J;P2lTKiE1?WAbe~>3n^ud85H3+n37rf{v@ZRCHT_M|+3@gh080~a6 zYPouCq=a_BN~ySDImAIh-S4Fx!~th|~PG``u-;%X=q)ZUv`=AaL{vkL(2(IZF51t9G$ffJ*~aR+&=P01bG zEHES2vXyt@3vqZ%N85N$)~f53`yABWyrtVyA!KqMf=89OCH!y&psWt38J43Ph?ScNpEC|pKH9}1ho{K8a5{)@8} z7mkuJPQu%t!ekdgMNext1MzT{660jBU+APOlGh5@ou+eeR~9*um`DfJ2T}g#nP5|$ zu$RT>27CCAY$uftV3i-oGg_~Cb{D$P*vUM<9pEiiIp-X3 z?;c{z9X-+^?l30>VY5I=oL6S{4d)?D60%;`(%KHsBRyS2%9AI2x&aU4g)7HsaHfgu zk9|Cr_xSnA$rIVwo7-WvJS9yBcczXbQW8K+cQNlIhkz9GKAaGKf=w|tyE1v5IDq?{ zv>~jt+@i|Tk`guWPcrm(A%T3g9WQ4y?fa5oC7ibvXYkpO0e&*GkWd8P+K1Dqd)0tm zli+dOMd5xpHHbdv5BASEi7;UyveX^0JzcPrW=d6;c924Mwvy*8OZ$ep&exf1GP6k_ z8aaVoFbtzdB*^vb4^B;Gx1XyCD#VnO=4wKEVAE?%wCsFwo-Dbg>MY(3{#lEY2&k$exga$*qeLITD14`zj@fLgpc?~`9`0~}Z?RvzhNr5*5O?wF8a*n-r@pEX%mUPQCp6wuWW4Y|5t2dag98s0nxUID z--|_Y&r!kWPhb#yI{cVs2i(J_@WMag=2990kpOLLHNiXX4rF!9yRdW^?~0ARAMu>$ zcyNhka~kC23Jw+aK@QMNMy6A`=(_ zmdyr=N@_P!=7r$o9gx1BAaq`s)}WHZz1AK!3i&OgO5W*DaBvR7>2d+8EkecW0P%c* zG*FgrzTY#e-T;dZLx*`qetv)B62>YlzT(nSC%UB{kGF46!g}}SG|^PBp+)=1Q6;%d z?N+~pAPR|KeWT!EFFP{YtaTNpvWL@Ks_o_Onpr_F==`vm^*NeGp^TjJZqUCc&_@fz z?SHyOA|{NwXE)tC)~N16R`qW5R40tXOux9peh}5?$nLP?ITzXUhpjSN&0Fk8fAGGv zsVpBXR!CrTeuv@HSh2|kEywL8P7;0oa{cA zlnSnsEb}rET7g!_oUur~d2P&X=Udv_l=HFWIxyrtOdqBIJhLs6pMqK&~3JD-wx#9f@Uzh6pP!dg5Y!$K^UI- zp_C*LkkHXACY+jSYE9s6iS9AkKpt}SZq>Iyn-R{}(=lSO!>>us%s+$$STv0q_2dbG zih8Zt9D%k!Kl84KJh=4*x|bmTC-`6L;GaGRxwarPK#R2IZOj=isVedI$JQW*9Zxfd zl1q;qQ3DERGwS%1I$?`b{+&2F(YUzu&*oFtO7o=YR*}!Y#DV>(hz)c!&IUdmFW%p? zo;T(SUN~))F*2Puo!gqQ;m>`E++D2=X-I@WL5eh7zfi;q=by~;mwt{>*+k29?Rx^U zQKY)`)2mfgDqQ60^3v$CGXZy4-`Vp#-6@q9xd|#@vfV)Q2hGYup>C9u0?TcB-3w*l zCafEB^vSF}LD7YlcWQQa`&F8xc{5b#Qe@4b`<%P^h&-u))So9$?jnhf?8NbIUtDh? zV}$<>pdvL=l@ZD6UR?U~$Prq!He#<&Ta~ZdtF(=jfbK`VjvXtHVRF>*jN&#!w!-(7 zUA`Egb4zb8NOoLp8gxdP1I!;Wn~C$@&#s@!x-)%cC@(tMVwHnDkSseg+hkQB)aimJ zW-*daxzP3U3R4>0hCROrw6s<^8@;x;I8QYKu!T-lrmJ~PD?ni8{N!G(#gWgro<#1* z03Iu2Y}gTtQ39k;rqbt$ub+etZb>!{mc>(Ox+qK!wdXs$;9H&^oapX6d=ZP(P9+D=#CcvJ*%U$(o$Wc)b$G=(-{6Qd4%X9G z@~hM6x*H%;wk8nqqf!?~u)LEv(+yhpJHRA3+A*GDW%zci(Dn*p}F&8MJaC@Zt9;YAfyXl;LvvJhA~PooEs5oo3Kwo`Y;@ z>N%ry3}3ANjzbruFQq9Bl55UHdK#ZRe&1m_r(Hu&P-oB8OJt~MDDYo9kQo;%Rau@5 zTBasPGnxi(8C44%7l0&vCh*-Ri?Xj z>3}^N(To*(gL`(Y3?R)R)TI4Tt75BZ@&C`UEyJ~g?~?~q5D ztiFXCa$Hjkd6wzmY8SjO*o9lq)2+1mGX<<20IkkXo&dxY(Jjvuk(RGyJ62#+bkO1x zN_fZeLeTO~zNImjv(?L`7R%&W5v22Pid+7v{El{g(cZQ1@b;7qFCnlMC|k7dM)2DO zd(%r-6k9@lVP?#zLD|A%@bBA0P3QB*UaYiivY-6To3*R393nwSN&1z5H%kOkIv*V{ zD84pIf*J%!w~n&n2b)HXss#25prNBI;qoP*38c?PX6?|xpE};Pb*wmMf@~u7_8`8` z$&gL!c(zmC{hff)3N=TzRo!+NJ-1Iu=#Z|vr)MGhSnfPVYnUpMl7`qkL8b1_Cb%^UmIHWh%`lq(6M?2L9$$HtGW-ek_B#L7}7}d*b6%f>hBItzLU4+{X zLH#Ce9jz~BWc%N1{8yIj>-G44=gjKe=HC`Xe;FRy-M=2`cI|%tLN}|2icRt1$DgRR z{9hGne=}K`GRn34bPL}$c&N0X6Ih}V)tvuxf$G=#q}*Y&SXob(_Pcv{$V~t7^25QE zd7#J(Q&ygY_%iI*#QY!sfhHA|z|4hGyNzRV`r*oDUWl~gtYu_ji7OOxT=Ut>fsTI1 z#$RPg)a@F5FjinrJ5F55b+W(vyQ?&xDsRCiIDGrcb!;Om_ZLt(S`+wYyLMWvS|b7AkCVfnN2WPADe+m;r^uj$UdFM19RA{mGD2nv8d@-R zEzwM73eV?Bw05pi4IyZNAW)FboJvZ?=g+_1zE&C&GFEPAe-<*wPAm!uAPU%6PoR@a zPv5=7ah-mL5jp@76wF*CwVfUDft0P*k7|L2ztrtZ&5Xysc09kDOfIbZKRx68ARk|6|n#Dy@}a#JsKyIOUS(uX^$S$$yAe zu387VAqj(HIT)AGfwuD;3OYY{craQ-6^2bg0BaRJoMHQGkTA&O0j82@d|X%DeyIreHwCTo$L>TKH5!PD z5Jc4t!84UeLjPulfihD1MJAQJd%?1VbP0_E1bPawnV+PU&e;l(WB=s%%iH+mt3qU0 zA5qcK;!1=j0j5bept1OBRE5WD5G-2uOC}65Z6$jXidYiP@f4Sr$JMUXoOkczzOK55 z%U6d?U<4W`h+R5uSsp17LKG(>u&qLbA%iBGV6&)o6~7|9FIrSdh)5Fz4(s-(;nHUS z(cO0};Y<%7q89r=gM^}&e|qIV->YJIc>PuyZ_|t)$jx?U55_y$V8C>JR*pXvpR(ay z-LYBA-$?K+PL+@0JXrx!GE@7P?BC!#ECCgn;}zUe7jb^t7{elG-@IQ9xr!ug?ob6t z3mss8VjCUu?=@>j6d=tbIWm>Iyfm+lXJ1hJtwdIfRcy96`mt;8z_Z1kU>yho1TwuH zGiy-Z%Qy3$N^-!3ck1TD>1ZK5%iyK)vCsAO0fN9dty7I5RcO@hWqp(#${=sX2F) zy!hU|#?kHDWU3&xTT!9#{@wQN*qkEPstO9e6R%VBl7S&_zO^)x9M0@?b^=6}y&Ht5Ch&!wg8;@< zzVZkf8rw6pl)VT7*P>De^{3aV;aH;t-awigXz1kIO5lgR*u+9fpu2fxkKZ!X(J~(2Kx=s@%)ElL_fB%RN-O4)F%6@4ft)9>#MV=T z`n-M2>ef7w?#Rax!1B=AcG95tN$uH}rMlvSICPUMJiOxh)A*k;-|zz(x;p$7p)~CG zLS!G#)}3LIg*;4vKhb+2iYUKHBdTEaJi$$`uF}d!apujI8-~}SxyePXFxw;WIs>byNWl3|18p7LG30gRU#~ivX>P?IpfLE0?)VjWra&i{(~8c{Ee#Lkb$2 zUbhtfv@cNP^8oy#Sdr3lbMHf-zI&R^DgtZr{I{$~G20$B=$^iq`K&&Z9@18JOwgx! zoICh$h?22#oJuLcGDV(-10JTN^##s{B?@Czr8ngRpbL8ytdRY@VaJLak#7daj*hWc zN)}Nw?^xz3NPsNa8d@5r48Pf!yRFL`V80LTOET;);EYr7$Z~5tbWJ?bwQxZ{+|?9u0SMQjHtR-=}H0{dX=D0 z{m&2ydWV0!fK+T%hb!>wFr)Wsta0`Pv)6~hil+7RpUvPxT=7EjyoNnC*u_H;OZmF? z0y+l{$PMI$YD52m%ECCfi(DMPxZyYxvRCx0)Dm3B!}S*N=^raSdLc_pKTGa_!o(Nw z_SUMIKrILiR~9^Cv1}_uLuwR}s@naj?CfwgF)>-VaG`qi6d?CU4S!!#*|dIWXF`a& zAdtfe_4@~KJzhkLIi_^lfN}{hM>u^{Dv4`85Y;0lQ6I1^PPXlifp8LI3vOW%t5-8E{f~I%Fqs2Ae1emGv8I+B_o!Jq#&VPphVF4D;!iA(SGXN^MXOPy^ zsn>zLkkJ@dUx+z?3UXf*+VM^Yo29|uPSqJTib!obss=sRLAFo5(h^(s^TP}c#Hq*q zlLs<8gtPQT?HB}F z(x>6TM5e|@&3{9z#5!$1g8X=VFu{F)6d~|qI+b`RBfa+70qRG=I-K|Z{SJsgNEBa~;uvqsDqA1D-xS!Z-{0GCO)S@D{Yjygu2H@YFFIm{vK$i7; z>j6R!z(;m98yevy3gb=liZj2_jf&FK8$kzr1PHJm5{9UHtjs&I_U4q+8RTkQ1mL)g z_(7jhplAB=gMd3s%3;qIWe4cI0Gigr@q_r2KCsByLYc$%lLRNRan*O)FmfCT89*mRVwZoPBG(-R3}*l+Vv_(4+? z4I%-$f}}$X`s$1VNlF_i{u557F1Y3NVZ11;Hj~+&St`zF1+f7a3}AzYm0JUU0P_^5 z`i{=0132=8dmf7+G23*e`sp2XWz*fHFpq-h8WP@}FcqUlxI>2zFQ&Q&0@4?F!p%Uc z>znmJ(Vo1@CmH?Q1SkwXwCq>_v6Lp*C|w@!N8JTX)n98_uoE%G0HD?;+<`k%XZ4EY z8zzU6o9DTY?0AvIu=pNRk1JUYh_BAE0Al1@rr_Y~P zDj;T>xqrG9oJa5j+n$aF_o==qFSGd6H9|ks13s+9P8rjkqS}q>aH^cunLz3>A^$_~ zF<4gz&;dixH9#5R%u+OQFToic_htaC*%9~bvgjp@XC7oP+oI1b z0vq}8Utx^HVc9-2ScP_kM`YC)m_0(4v5USVZVG#w@~ZilXpz#=N>gH%7U%RM_TO8; zf*1UMsLuR(~7ni9rp*=uA2~k(jT*^>J!9Zb~n1xst zt~0G4gb^sTSDw<=ZF$fmET$-$k%f4*$@tCvls11e%J58hpFX7hMM-Qn+}U7Z>H0_$Xtf2Rb;>TeWYA;;2wKf#b#!J#R`t0-5Ny9s>4YN<4A= z(wRqvGHqSRygr%vGgbo2#BqWkn;^Q+05R3KJ_AQ-FK9o)JI1^8r=q{ea}S^amtir% z2St5ZN)R;yH`S^@h}L_(V{Vm;tFX%~3*@*+1YbaJ!bcy4^H2%Iu>sIxaOQ%bV0-|_w0K7%VJK96Q@-*= zfLOq}yqiPIx|rJ_Y>=R|-KFWO_-jviR!PInDQWSh6M4W^#K;|h;1S}|ij1H#uW!Eh ztm8ITAD!tZaGyvqLCT(Cf&g$mkHP$qKA^}5hh53?0UepQ};lqRNMk9*Ux91kMYYTd?q#yDcKg&}D~oxqoxn!0C@*ekRGy^~%; zZ@4`lNsN4}k6QH8uTYN$s^ZAi_8qDXhCPy2M_>~nRoq%SH&jc%e6t+sc-F9TSu_cr zA;wTz#U=z3i5Dv4lPHq+Mp2K}ce&8^){_#fYo2somyMN`mA!|%X?Tt1OD&^oo^+&q zR|Kgz^3L=48D^HIfTc@qYJ{UMi8ED%i^i@Qjd&eFW4GuZy^$`RdUD1W{cD@UhS(wN z=^L;(ZIZ-OzoH;g?G4}7^yh-jRhu`E5(+}Hwjc#}w+z%t10Yx^ky}in2w+9Vz%B&9 zcUXejEuaNUNia?(&65xbqVlTS%*Rsb&zT{Vgv?{@tqn1!v7!dhQ@@r?ASzn;BEJNI zd%Eum^fv_rSutv|8uRqHBIinM7%J8CDVi9+3onr`{nZUX!9%Pt3M#_G z-!_gOuk`d2Fp8tZVl5jIOkN6P;%`MaK3Hh>vEG`#Txp4B((56zBd6!WDl8uvJ} z#$g8~4+!m!I`yW)mV7yMl-GOhObC7_RFUA;sL8Wn%?1J*#>1bF)d9D$M1e!HuVKf! zsA}RXwox;Q7fGN)X_;IB53c%1M-n}36!jG=m(l*H z)OUAPo_e|20D+CEY9`_yMZ;ZK=OP*HrEWus2+8`IXv)NM;y;1W z6qNDHkF_gI-JKuFEMXs|>Rwh564SX$<+dvC-FvH(nC$@bG$GwHWxW7m4>%sy1yOVY zR!46EoFv%ZrsxV1k`G8GbcO&qHyIXQSMGyz)$<9xL?lWnozXGEbT+IdtAqRiafn34KNB-fL zNn}H5YM4A~2-7=EiW~Xz-xc44PWfIa_Mu|U5^CXya;%?TBJ`t=KQxR8axzsugY5pF z@B0i@Fz4i?%#E!b3;xv&ZU?@b4m4{$z>`^^P|KncoxDU{`a-dG7g`;-KfBQI(tC zVR}#^U;eMF@VyZT&@Z4)paU{$5~`ogZi6xU8t>GdpW)8?z+|E%`Z&`|a(_*X3M&Ip z0-*sJ;PmzkqA#ETjBp5WO_L>}x)jLhevl+6N*+zsBMnny?pk=SWYp+B)yFR`(d4*A z%a}BYGa7*x?u38#iLakp_Y9(YC6AOZV5bj`S#)d!nogRl69B#U45In9fb=e={-zC} zC~m0A0z-`X`?^H5SmQvL^I?U@3+3MaXnfpe($Nuuu#w5Ki%y_ho#;6B#QW^R4%)m$ zM}y>-mVh=D0S2j(A65e~ve;A6CQmZQ5PX|~DDID%hnRyvqQ!S@-rF{Jhvi0 zAP!zR8sFQFNHc6OD*EK4BhC)V~LfkY)Ef{9Pkc0JykRDw3vDu+OPbJ zF;|fnh=Ap1C^*%L*u>YDF@A=UA@PbasH~ldPA2{%A98sj2T_=V0Yp}C4XrbIKmt_d zv*9s0?|m>cV$9-LjTzr4B*A%r8vIo0YDg=ryk8Ic1EY@CF08On|a}R6qj) z1Sw$&Gx`R(nuAb)#5J{G6o8ij!k~s}8g8<1T!UX`NhXxZ!aeDb!Tyv`1sMUEWD>2R z;m`w|W-(c;eO$r}V%u(4{OWj$dNp(}TvXlf3zCy2`qi1iSntoWb~fQdqmJ-31aT_r zi4~$e9Fm;(eQBiWfNltB*D5+!z%qR03ug|oC%Qyh#-?2?)I<(=nJ_Iv?-8BmeSqG{ zi(~`D>N7$>@SHeVc@TRqgZebRC;2xg&xJ;%tC$6$-UVr+a*;d%x+~SWkQyzMA!)zhL<3|J;xN zaXF~>Toy&2f)~=B7f}0flg5pRd&)FPbPL3ACqi}z{{8M9$qjJp{Q$Y+6^t?zr#(xm zY*IiW{W<%BIA}6*IowB5Ga#%e1SOFE@Q|JjTW2ev=ntW{4qRS&ZR-jH2FwG^05Lng z8;$`k+OkBlQW1NqY_qWjdHD{cH%y2U-3hF+s+q=~krscX zs?==}crK@Er?Uv3kf$sleGO!?#@>|#^kCbL7r2ir&E=C=cjo(NSL%8H?=si>(m-_5 zwi}=`!kNQ;rF^!m0}2t#d|soxojke=p>c_^>Ld9hy59srZ=VIRy357Q-onkzO~>M| znFAAj?g~U+wboNa&-v?2!ZZs^biu}#Aq`GP2}HmjK$Up`YtE-sSh-J)JA0I!@Bv&= zti_KsE2DrUgG45TIeYUQ@Wbk4KWI95Lg${FOGBx#)xs3pDDcnH+DT%J= zCHO7m%w|NhuR!oY_L2$;Us*d5@We+n(5*lGXc@WOK5H6oM^<#DVZ2RBXb>_hMoCLx z9SRu-P|6=rz+6V|x~(J49olS5*fLWJv2yL&h~F}e@JuNoCM~-Y4rEG1DX%Z zs0B!9i7G9^#SY4+7a-uvHV#cvZ|z&S$E_0;J;3zfOaiIs-K0+4!Oc&KMXw+ruVsVm z96|}~cBr==eGAtp|3R5|vlD%X-Vnp}4*Y6OI`z2%TQ|0vH^s!K2@^zNH5?xcRNx~@ z9&~!>q-+FBabq9|5nC4#+jsIrJUIjyoQD@8YwI0>-A8J$&PJX?v&4mtTPr%8P?>wW z5~hMLeuYwEm>=K$RE0KD0)jui)64NkIquKF4pjr#_#Rg=^ha@&WRaV>(y?h}>n zJ)g(x6Zn9hE05FwUv@yt?eOBsU5a$VQ<3gdMSufs#MEyK!R0ts8bo;~;B-I*7?t?v zrLz884Nr3i@&WwbQl~b2eCDZavxBldPZwi;m1-OsM+gS78mvcRTU1v{yeiCH6-+DZ zhcEGyx*e*qZBd#axm9O?%+`1svu-k}M}J`Gc5<_R%_R5E^vgrpKZ0VcK=uTbKTJ6Q z!%s_u;0YD3VN&{Ov6Q)va*tp3_(^2NzGf2%NMQ*pR_!6JJTR{w`yNoBYS*p<;ZUUd zp|vwJ!VJJJA9x#oX0${)_p)Ax+g&yYz|sM|JL+ATPveeTss@iC?0i1Y$a zzg>9^^5aK+e0*H1q|IM-5$)m4)n2ml1PGu7O5hlf~uOMhJ!Cp zmJWNH@#yi3#XD~*TJe=@>B&QjewNq%rE-17no)%Yg&?P?C{zE1P$3=y{^03}c(5i@ z41HvdZ;r^oJa`qJn4daaz7N7Z_x^8Vf#3mzl1OM{T>|+31e`GUBsE`?6{UvX0mK(W zzp^J~BRw}8@=Frx1ZM7>*{ZFkqW+6iww?93-OIBfPh%x=7fffVEHIR#{CHm!8*I73 zgdUWQKGkqm(P?rWdU^`$WlSd#Rp7b}`zO8aPC5yqLKG^{=uW^!t!lj{)$6I$;QCb6 zOwe`sZA!D3Y#CIAEJ^wf{|!TlZHLiMkZKnK^7&yCw8{xszuL4X2^D$o=aI`cgHWnn zT5wQqQ`9qv9;iSh&hUPlW9LMK@RCWlrnmNjwgM=I?s9k-mH7Kw&F-JGHt_n(+k_rO zlnXokkjq2u?q9M{{F8iOL+0=^1zcrVXzZ$9UAwbT&Y!JvT{?F*%i?;mF>5?$#=Ow- zNkQjfzOa+Jz4ONTE;L*GviOHzcTSsmMCgx)e+WE(BX{G%#oeD5nj6|Zt9dGSzoK4N zgxl#{oC_!F6 zGR(ax-0=12UE3F3A6hxYj6wm`4!)cAvxh#2@jIZ}m0==z$`UZ)(#RWJTqgP~I0gG5 z$2{f!D&(3>blGHZGVY>J13&tLuo~spB~D}Qz7R1vTE4t)9?N4iY~XieZD1VenV^m% zpHa|3Js?Gje_zbY#YG(qkjeN|XX%G)E@{07G_}huxB*mDQ6HuE-QC^iHm9#ZjTZOi zF3MTH!C9ZJs@h=k-DHUpld9hZ`lQuKLVTleKaltq&DGY~6`isLsNT6EG^;V=jG z%u%~DmjX4XA7go3Sl6tzotUu!?7|36lk#;WhNVWQ@Pe@SiAD#t zY-`-tL4C_TC6gE3bphNqzVUl2MGJ|W>8hBxs4#w<&X`*v(d$J-L_&;)Gb=u*+?#Nu zex$Hc@bY;G?PleI7^JgRrBWhgavJM?Q_*48IQkay(K5`7u?YL4z(~muOMTLG-+598 zXp)@BYs}aF8Dbpw>nT7vorZQhp-ed3ybY&>gH=HLE=|LeU-&#@3oqBUrSf*oW^JFi zc|&9wA-O5=mr;9O>gic5n!er*jY>u*6n!xrA-n1kh+4j35wSlvoXww=qXBCUJYKNVsUCZF>;@t_4GYfXvRs1!^17=ph$#fx! zvhw@k15|HLv+xWM$*Ga#>UymOXzx;vnSgE}?ofhjsU#|T=oz%vCJtBPskiVtb{D2} zro@=Co1>fKFW)G*_Ug?p7OPx~&B;g_DB-~-Ix93tQH*5ZTe~0SZhoe-KM>tMCgl6C zkzR_sUH031;v9OeHO<(R4u}OTu$n0ypJ+mTQq9}}^A791UOO6NuB8jpA1_ED63Rzw zvNCW8EtYq2fFRm^Pt-7`?t;*;*zK~X>i(}C_JNsD^|5=^>hJz_PGoXd8xn_IA-kg7 z!zAzOLJmF@<^)_K$`1O8&V*e@yiSb2Y;L|7F}d;DtElQLETuL9UIn?qi<>4}2HviV zsc0CU%i2C&{cHA5;5wMT+E_gCFof^nk$1t9Hia&~9swit&hE&gW51$G4bgT*UgxVR z3rs{r4*tme->@{;(d~s&sqFCH=s!R~B34T`#;G>r0J6h|E0Uy0Q(O}dsO~*RHjHG5)?L!)ftgHWen*TCvQBs4;4T1XS1jEqnU>3I;7q{A=1Vk#=4+(+SwQ-z;xr{$P!9|pFSxa9wOA&iUXCr zOyUoq)M}jsJ|hiFElPCnKPMRKy1brn#2Ebv)6?jWtrbVd@->hb5p^0aXy8!-BNi?9 zO_riImiexc1P$YufN(GdjynaAK2H^HrZ}7KwwE>yDq|+eF!}Su9{@9X46wG2{`AhA^=aKVM$Fwr9uWG zb?YQACEljr6rdyJ(5-=B^f}sqAV%_J%^kz8#e>_w5?_FrMN;PQa$ubEkqbnBaUlp5 z&PNoNd#b3-QGfgc4@rW<|IDFE8h1|JX%bS`%RoDK0>6y@ru z3tvXn`x)p!H$~cGB5l2lrn<5x&4?oDk?|~Y8MvZ<6$Ta?hAw8YP)c^)fQK;?V_ zc|U#RE>yF_V>)(rc7f=q8$g#~9xN59IXEe3f}P+dSr5@6)UUE6sTgw=#R{7>ckwU8 zTBDGEtZmQvjfz+s)BSmPfdmU|-D6;N4sa|W>=8m(KB#Ig0rJX&ADQW3{@Ihz|Dy=y z9-z~TSThv&*WgI|f?D;7_PKW<3kio8o}BoK6(kU(mZEz-$YJ$~GC?7%R%s?+gYXpp zRuYZN94{XDB=rn)Hilxni6xOnxI&9JMn)%3?!?-8i1TT-E2F!8(=XvEvW&S8d@H_p z7yR}eNSpt6w}=Xo4*Yoh`CXW>>TiVY!S^s<^bSXqyWulI|DIXu>)0~S4B-G9Ary>1WCseF)J09Y&y zO%s+*g8-OuB9<$o3qbid6X36W26>a^^EqqFBlVGY5xc{dufz$&SHf&g&&ZvuT6_iS zR-_(=0gx3&RuS4Tu(<-%PJ3{%w3Xqjplz~YLy(>&=1+jQQOLt~JQ{P4`Q+#r zkB4APf+bo4T!*ajX^J>)PXOMysLs+kO6UqC1EJ;6%W~l#qC>oxmzsu`u^eFENKg$> zp_hNXk9fTw{js>4w^Y-?$xx`Veadh++e_5>Sc0hbXB&9$$j6;5GfhfG`i-Ca@e-!Bi2REW5d)6fg5@*o9V;YzG05XlnM0oP!k>u zEk_0P0jxpX-xsIE8b1i{T^DLt3?peR0VYe%Fif0^tgqV~ogJ3Tvd0m@Oa?IXET5V+ zAPOXH8};J@$)dgoMjt~RaENf5H!~FHvfo$&TwH{;l4LHd0(Ud%U?e}|0U_@HZ4|qUV z=-CJP0FWVf+dKyaV9Z3kXF3;M*z>Xt#DN z#2F_b9i@h_N~a+Za!0xtq3rgFca7OUhypsSht9*N8m|H7IEr zn+~Wvy>NNG!>K4dNyqvHjW6cV$uJZ+urZ<13|Qn7nOgwZ#WdrfVjkw%sCI~dS1xIn zFpGh61BVQ25+zvKZKM)X!5qcOkgPb2n?seXFEw_1_3!}duja7gkZ5lTV%@*TCy|~YSlrSK2G6wQG_x1W?K!rv^q@~602a0=y6IHE1_&)>0QSbFuy5phTnwP z%wIF6xJyv}Y=aaId#p3{*#Y$LtidDa<}%0v;jL<>)ISvn3fT7Pp=d~PLfH_D{qwD^ zPwQv4;KiaEz?j(I2V!iIpK@+tZgFSgEFMN7{7npl#O4Ek!^o~BXMAYP+n$&uP$t_x z`ey7CESbV01f7;&L^*-GWCwy@HN_qpfKDO2oZ2@~m3@yI9;4BJ&CH=be(fHWw8z56w9C;Tb@wo{ zevOZDR!H4ru7V>wSy_Y>1M69{`a+f3#NQz@17WRX!ThPK;sK_=*j3Tyn#U`FW;Yk9ztG!Hcme7HT7K#(j zFH24E8u(<=W7w75ea0Q7JfpQCWh2*sx0H7SgnsLw41mT9c!ewlzqc?3{vN>diPXZw zQfN$P7B_lHr1}qo{Ao6-a-Cyv)qa8^W0z5=rK1H8sycV;7=Z9-EX(f?!z=aF|El}M=?pa0R zsM*f!3)r&ZmaJwm^*KS~QM5aOIzjNRS}{uzNxXu`Thh?eXgr>&&na!8T5}09qYNdjwCqE$bF-SQUU%5Q;~Q$#o{#)i$j=#f9J0fi*1${ezdKxcMkA?;QJsHy`tHD3 zcl)0U4tP@ffWxVCC(C7Hoz1)bk8$sPs)1{exy_(ksg7OMNzz6a_+@SdfB zhAvukh0DJ3X?$ryC*kVxxC@`^KheBH%IY*^&`<5IKy0omB{CuCky!an6w0yp{Irc4 zTAG@R2(VN$MR)5}BoI%EwjsaZ@zb?CqI?FA=P`(%tKCdrxy1VEjdPDc2Iqoz5=tV! z8PLhPaq{HCs7+#%Ai&cfIVG{x7~Q(=0BKveYDL z+KgH1=?4*cL!b&3N&<@jIYQjP_ctj|iRan6n9vszcg7xmyn<8*#7m$vXcs7DjMCb0 zVJ`1{qkFcRUejw167Or01U#WUQVV%Kb*cqVWZ|idpx1Q~0(ruK8{Mt#x$l-uZ$u3y z9!HS;drWsDSd&y{TwFMCy+FFsN(W{ZqfJ%`w>~*j7UQ|{TIAa-06zO;;`B1LzgbAA zUlCa*Zv@bS2*5m296_59RZ-=d&58$B@iy{M$)uCFOlPF>7;`YHhyV3M4to4A10!6M z)qh?rj~Xb!$v5;Rl8&D`pC(Cbr_q^-Yk`h*Pk>f{?l5M9RqzdeJ6pr^^rkT@i~63) z{fU%qn+gPOeR8BYgL^vwbzD9{iBCO}z}fD)x|j>|*DjIrU~3E}P{(N=%F(&|cV=f+ zd-m@dL8W;T7`YrgdN7dhHW>74P$^MOi~pqQ{mk;%q5ffdBLSU2xVZ>2l{iyvlU<60 zmU;k~7FaCad=9BvLV|WXwn5!}6)Gxe4D3*CdWB3olx@0z~H#n4u7fJL0M-f*dOtL(c|49(E7wU}2P*B6P$KEN#6P_wh_y z5$V2}dg~X!uyF$@HaDB0_8tIWE&(eky;gDb_fYUGz`y;bfzam zE6EZR|L+@v^FvPS`(Y07*r?()9NJ)-wEwFsjy*~~`AWpZPWNIpdO1yFsbsG|^29J( ze?(Ik)z=kz_WyVXMB{Ii;B)bRGBa<-|H;gR=+SpLSaQd5H#Wz8H!hYRS(KV2p@36& zX!B7!uqOtgEw(z5hB7T;1>2PEF|nUZC_k<7Rk>%oMfIM9miZyl?-reAAzcra>}fTQ z5WS|mkVJ>EO+S_P6v>K{6Xr1ZzDXc8dr=#ld}@SdbCOGiYy$wV@I%fR)qxq9qr#Ym z`Z~YJZ6EBZk?OfpO&uqweIqNz0e^?F2_`ZfM27EH?db7G^$a!-wpB38K@gVE?mncqkbCOQ93?8LY^jm^x$$ht$>8!#;yCweLm?XV?~}FUG@D(^(R~T$DP)cZ9e1 z?qF#aizTt|q9IETDRp5{k@D9g(0PZo6RiAHOeH27QJUBT?ZY)_wpk1XimwxO)gZ*& zP(2FaQ7w)_-ymHCeC?6ITelVf6p1N2jm4S0C^gm6?Six3FI*+SC2F~`cs^X8>tO~# zYS3k}ltse_7hx{l@y``(Nm*e4H(*9wg)`}$d^XO3hbEHscm5lbFf`Uv{BL*!Jevk( zE9;eFx!XRkc&Lt`{pOg4Q}T9{MZ;r99H({Ru4pyg1=xiatS{~rlfft_NtI1DA0(HG z2((iEg6EiK-?#MQ61&5c{-bDGO8uiiC&(!G1Zt|*p)~SFf?o&QzX5^i4h)S+o+LDg zGKB;+|7)(nvgS;(h8YpmHT8jki#NkkB++os_=Xu1*StJ29XJp30O#6Zh08}vFk18^ zKJ%Jq8*manYbb>Qw@RE_62UDF7_R&QYUJpORA7Jw-l)s?WrPm1g;j-otm zEK{{hKY0j(x~1l89b2{r)y0r3n7U_B2N&f{4j2w*K*uQ*O-6>ncrHvw5$@z$eAx+k zzkBzVkijn*Pm+!ay(Rm1was9u%sXjRke`upXYrxtUq%{Mo;aa+T0nNo^K9W6EaNxA znbV=s?LO9h;{+m#q)a7vwG`yz&7)mY1M}Ko;>OrcqFI}4@=#E&M7J0nnIxuXy5`2&GbZOTP7`gazA>$cVTM`9Foi~oepj}N`e(%N<0(}r7Pga*@MEQl3t8q;UF&V z$7><@EPZcLyn%~rlM@8>TUNB~%oAIA!d%g1lG`iRGiBL|EN(6UhIZpC$0xoZ$>%uw zaKB)SOmpPEq#0PB)Y4#DaY)Z4WJg(U7>FLGwc-snXCB*_yE3diC*|#8 zr9dc-TqUt6=W#(V0bW6HUr(LBwie#QhS+dqew~8-{-Z}UHC^Nkcb{G&*(s<$()Jn( z4|yfZh%TmeWAK8Fara^w2|jKfrJ>s!Zs_U=gh@*u@(mSJ4h!W{{vM1@+PN2tX6Y6IQN$A~=tZk?BgbXc!H?F~p{61A} zNUog^pTz?%O+V{L4lD&TYQ;Zs)M0K6IT_1&_^Nt!)jCwCb+bU2qodAWCmiE&PVqt=U1)ctlD4hK}cni1mB*@zt%9fFKH#K zUI{4TJ5wTfmYilTQbl%pqbm)}W8=;r`VP34Uqix&8K=K$_fTDVZa?#S(+JuCk<<`W zW(p;8f@L-iyDcPZqm@m~nUllrQ&M!!;KcQ&_HinKNhV-`>WAv105*eGs{ZJq&>oju zf0?X~!f0a8Vi_A_FXsdP5<+p$P|A>Fe+CroRN{Mjq8VF>48s|FK(sGwH#;&{6l^s! zubr%@O_IwSCqt%_&$xFn;)U z+0;`;F0-&VJ06If5SQz1T>f$D$q;aR(iAZ5=W^(seGD0x&u0o7XoJn8mPVzej)sF% z+s6p=W^{bzPMq{<7RDz1)B1tzFc#(LeP z(|lN(lB3WS^6f?|W^kBXB0i83;p(F=CCLi2B8}-TRhg3bD6-71x0aXGBcyo`bAwS& zJ{8V*Gj?Ysx_5}a5}xZm%m$%yN5VvP98cH2+KBKrH2Z6qG4JGYQ1ZQ$2YjnZTyrpe z=>ueaG(P}bN%OCD?co9D%tHM0mu@^iK zDsTQu9qawr7Hh-m0eDk08FkFrKB*+Z5~b46?v|QTOA>Gs!s*Ov?GYruvmB8|e6`%a zkk1NQqa2VLs&$f>9kqC6hifV&K*ULe(JX<4%pvXXv}w5!hbU_)1m64Z$zVkyeInU< zGoXt2khsZG)b8)7-29sxYLJX%jUdu_Gu~sjk@q28^`_lu`&1(uQmP2{estYMS)`drph9G~&1M`0f@09ddc2}vYv(qA)q z@*qS|?ZokUi5wmme6t(ic(a_BRas896m(#sxpA7j132P&87ps9Uy_Rkdn&UNi~GtLD~_<(3I0hP!l8wa2GP{qA&y? zn{j>aNvb3hKEk#pCXaBw5Q}CIwN7s!yq$VxkFc>&#n-qgGz|Nn+gCkY(r}O_uP1dP zoYa^GQ-2{fHeuwvc28o%*VpzZ;6cciXLf17qwlO70Xgg!Z>kQ+(y20ro;7REGT@=0 znxwKI+AN^^MvdKAtFol2>qted@d5^T2Dn>{A!Nv|OKGG#3wYh@hsStsSAaI-R)bAMXEd)j@VKss>=R&VPmEhYz&5M*1kPk)o+ zZPXB9v=9(ODWP|c5^W6bT8j7H@7M;Nju(LYlU4=VnBJv9o(*J1hfUrp{|*P~NRd|7 zd};xtQ^+6@`4~UVP5A(k0ZD@+YmI<-7*I4d|<`prjtA7ZCgkdd&B%P?$HRdM6%JDekf$u3$&0E zH4eDWht zYSrwm&eq4QxAawN$4a&j$dwNN-ttXSF^bAg^c82WICo11&{@#jC#V2ZgVYRWGG z!HB(l^~wiy!=CNiJ)%aD4BSL8e%+q|%xC*%aq*MLzsrz2swFW=AEHEFekChN+B&?r z?X00;D4f~0Ss^T4#*}UWIR_Q_k;WNcaqA^ZYcOPfU*Oia7Bh}08bWd`8juYi#m#Qx z4jpepF8(lk_FhfR+ennOG1fEAu^xBX5G4n!R@V#+4od1kw9fn}?%U!4zw^y|cJICp zCZZ4tj9g}f%oy4OTH%^e?p5k9xfkLSp}Mdo$caqQn1^P2M@3AY6DeqL9oFUDa{5j! zzOi|wyhHzeIXL>H4PZ#>krayuy}PUr%6|LGezyJPwS-Sn%yBMKD8mA{`8|1$t?zf_yJ(xzNa6DGp;iLKqqPi=p%Hor_ zGcSPzHh)UX!UR0u27L_}OWwgOu5?{@Wb|q62jSui<1-H3&%;{CoYQ0Vv-MnDo=(|Q zL8xb6ck=rk@KW;PXheSa5(<|VWVko!&mdaYYU$eg#viJ>gIsRy&7h!o-Y(1sKiU_X zi6=<+(*H5^&nc(prhlrlZ+MB5Lc#!g3m+84l`@pyrP*_$H=+mya&0uesYm#O-9plu zdZKqvp0tY1(77C)F+dMJMcwOOEodaazB^}L>A6qX*1d;LyVhJgJIY()*I{Ft4_?S*JJo8^>z>m=7(9k;4)#YYcg)HvabNHtt15>1!HF#>_1rzYcK40wsYswBW9L|xTG%NOB#PT{f;HNVS{gApg_rc zVE4;8FXomzp^N2>oT!+XADArDV0X;AEirI+cQ>hwzo%q+WxULTzWju1lTDgyNkesD zWaM=*GlvC~hIN;2;b=sTec=!jM zm}_#=Je#8iO_Ytn^5x6JE3G9V*RO1~{`~oKSZwU8o7KJVvs|6yN?#ThZp@^0Cl|6? z=yWl3*j{>+5Mla^9!dF0w=Jr5NJ+(7rbL&-0EpB@d1tpZ~!qVAvIZowE#Ao2!$dBD!wf#>}7?{&dXA zOm{KIq}LG*$3t~0bQ&BJo2RJgV3%3A+dH0e;=U6Bvn&9^*;c;Z<~E+vF{o1#*D-32 zdg84ddOdHTG?*1d_hKw%wVaO3tREZ<;|~1(`={CSvO`G9SN{Sl!o!0FSK7=|-7qZ) zKO2NXFwU_XHw6nVa_B2M+sowaWbRpgYT4smzKHA6wQF0F7U8uSR}ylUAJlL>V^VQz ziR|UGOUw_@4eK+)4fEU$)t-bmD(V)L%NHsUm~H_!Gs!=3;)G6pcU)TaiWTs9-l9{( z&dABh;R`6mD3X7&FTPK!}ZjzT4NZ zCR?2nDsDpJm^(9Ixz+G5U#%kky0kqJIop%lY<`;SBb8=*Yo?Z-ki5<)#p4r+v--if z-%sC{3#N=if3^d9IMN=2c2CWhra`3qNx0{GP#GRzuV+{*V9oWBQRSm(-dhU}8pl_U~t3g}hi92>^&R;BEYiViq zz};QCJi@y>wT+MdtMjozU;f&aTMwF=YWwL+%ix|~@vMc3O4?(9y~@JE!nOX?IGL6d zE<%jES0?Bm)x(EBR*VBD)DzXqh~(XS;6U4GHeMaM5G#07NkDPmj^9>=J6g|aN?L)x zHhr^>KL#U!7mltcJ=3q5p7P(TW2Wo21`I(CF_0-c#};;exsyad%Wm)%>P6axoueVCF( z^XjMBL{Tz^ZZ9!FI@cQ;kG(7^x`_g`5ZYv$F0fMDp=U6Uq!mR!I?)xgES#Lu9?Zma z+EtLLR=X=WehPgs_{tw6Edw!`9L5&gO0bO!PNK&v>9wGo!y}m7yi)H0{-T1MoJrrV z2FuzX0A;SyHI6oJFy>w(qoe-OjJy_~vSLfd4|xeLE-o!dVSE8O@uyw##|@{qke~RX zHfQc!30-%*KX}{~0KYD@c`euk_>L>BXP3B3r_mAjU$Rs;#)TxW~LT zu}8#HF<`0rct7Y$tMr1+rN&E7C|3j2;~1J2Gl=z@WA#T zsUc^W&l9Hw9APObhqER}&8o89v(XN4SydVE?{YvGzIl0yIJ~2ht5MlMv2H(5g*IE{ zPrHzyu9lEc$05A_(xpqcvzzU46=lh1^|`n(e=z_t{YcvPBsk}&WVl|ySmmxqzvtv^ zCo9Glv^SXbSEE?EdFReLyq-gk!a07nzccLGyPf$X9VolL`2^wrpT0bcag@d%-!J4i z_Wd^=3GwB8|Kl+=36JkM#4_e5;Ndiis`RsE=l|I^_6cV5Z*NvP zeE9I!Z1K&T*Vi(Va^y*MqCE+^)%Jp6kBfjT?u)at>m1?mc}v_J!##UVHZF+xxRFQL9z#&%S@&gfS7&Lzv z4@;OUYDfet0P*=C>f7gXB)nYqTOYD)~9&~Ei*gUPq zICJ(%vNE*%XL)Tyo#?rS(f;vC+xl5gZzBUReH4J2AL>VylXx})3z z0NtbPmS1=-??swgKDMb?6aqelm!<3EJC#^uciXAPDdwKiydYz7#hsLA3^blrm;vu#l<%$rlit@8(Ug&*Dht` zMWLagieMAhK>B$DizfY5E##wy5Mh02&ULlT^h$2aFEXe^p?4C@Oxk)N9mP1jHlV_q zzi81KnqL9GEoGSIn0uj;Ee5x-dh6ErDzpk(-p}m1vEy~?8^y!#U1lAdfys6i6O!Us zov8QiMT6ZjE*u1;SY052QW5W}j*U$MY|%g^V=nme<;&>%_j6hUF;Oxa8An$e$!3<; z9W^(PH$`F7I*NlU8lc)Zdodf^p}oJ%{t%9~XfRXJARAR6<9eL$*x){uNh55E?JdZ_ z=t8#r;ZlBjdLmL%T5w&^PJRu#BqsBjF}^~vclLoGxvKtQPUjUD1=5dgvnos#@So+@ z#k%th{bqH)ug7qc3bXOn_VyUkil?Q5WjcNTo`~d$ydQNZ;9<#@A=jI)BO}IbGiT3^ z!91~-2F~fAvL(ABLPH~AY4GXcG|?M745W3Q7+(4`JgfxALB$vHN!J+GW}{HZ~T6 zWHv2xR`+=UtL{H={Iy#dYo~O|veXFXtGg2upjMv8{)`pl`p((v;&(J=Y_LtT*R<+M z7&$}xKZbma&-XOJ zh8DBU_B&i)KG`AqSwcbrX>PtfWjw372{Ze4aZ20$<SpOj^@_5Y&8U%wg3DKI~*ohk6oAXtujV4mhWU|V)+KR4e!t$ z*3;2hkJ#w%T@fA{`cZzx&ndrgy1#wnEG8s$1ID9DQu6RqT`n!7m=55n^ZeonF+1)(a&1lAPx3H z&ueNbX6#hhB*y2|2O_|aFtfutI)NDI7E^Ef+?vAFsqoIyR|N%1VCx!|B^^K5a@~L@ zR*6&EZ^yeGGZuRs2N{~SDbc;dMp6tgSGji5%hFPs?5o|C9wX}9kZK)~f!xX0n+`c} zu;IghgkKcUR7lPm$^tNrHkWJW<7g^ba549gm}JwD`aAqF;%b9N70Akfub;VI{b;RK z;p3l?*CONScra~l&PFYJE>6@_Nw;It=kaiJ-_?%U5>%V)`88Aa-hn*_4ph_{9>cKh zGOU<)&cD9fft#q}EVgdlbqrbbdPwTWHfcu`tf+FxMu z%I(irY`HL>s3bX!Y*A~onlUN|sh!0|0G3Zz`hogZWM6pw;1FaGw@_=F&vi$P5aX@ecb2i)2F6Wbqx*rQZQTDsg|Tu z0@>5us3gEuPetvtcte&(bR6^ByL{twN~``I%U z3!4%;4f>*@qHYET#-?-DqWxABwSDxv>PNSk(4{_+eEITEhzchE!$xSLhiTW}_-jmZ zqbg1d8v~>o;T2YrVlpz-<=VZV;%~L(u{&&vK>M#=vEq5Z_O78x82_3q1<9rfy9V)O zv(!;ti@}G@_*==r%==C_bz_Sj$U+jeG8M9MTd7Hs`WXVX2(R4P+{nZ=Ae%SwB|9oS zFJF!x{_mUf5n!l}e3YH1O*d$L)`{yA!b$(`Ug1)Cm-pqrKkKZYf%*t1m3hfFi$;$o zCylU(h^~CfVKPKBW=M~psSmr_@+caaXA$)75>mszaNXT%`EVRF*CdkG@bR22!O<4g zYgB=7BvTo0?)skppV{aai#b2CE&zkNlH2s=YR~(}xfBFfuUd6SyLbr{XGuq$BTEo+ zY{d9Z5cnB3z4K@3FQ+-*m6aJnBk%7$e903Hc?TdJj~zRbE9+=x9{cKQgei7GF)U$2 zc;PKdGB z=Himk`(YAw!Dg4)RVc$c@}npBi6$A9EIp+y%y$?srn4{GHg~YnB zJ9(y9lNX)**o>;6VEt2JNT>ocVDl39LAI7{QeR3l=l?8a4hs+OFY%r6uAqiH+Oi?{F)tOwb1P87#WC&zP^4*2IkNvAN-@_12X#^ zoL=qy0EH2pl(o_!TM|}KXy}>9bw1+Df41bRs`3Qnz7_1HAeyaY?n%Bbe)UQn6qUat z9*Qd}3iHZ;$;f7B+p;=aFu=TW$t#R2dx$RB_D^3CW;!8tV3(v~^1|GSq?C9uKJf1v zD7nqOkXc1PfBu`FwfuPh4(^2uLjyiTNSCHtxn57={u-)Rg8;bhR8s0{(?`10IsWyt zdEb)y(#y3D2B+L?F@=JA>C)aOa{>bbx~yIUM309~s>doDHyvpQ-;8fno5C~?84_2n zUcUTSRHa(d6bCPPdHF(GSqM*)RV!Bf27&Erc({6@L-RKz5I+(4wfp^o1Ki7o`7trABjyDg^QDmW99Ow{1 zPiWP-4jMRRd?`GmxOXHS*Z*f~wcxnzY(9_S8bB#O{a@qdz4|xw^4#^n1syAax0~K5 zIJ@iL)gR$N=8l!M-5tO)FoJ>S*Bi%N=J}V^b8CY0=jv})#P|3+KR+gI9DH^E|G)Xb z*$|(reO+BapxL8XP?dc4?aX9xn@*W)`oN4K@q>fmN+56>aSCue=@RgOO6SkO<0&+N zn>LMryRE8jMZN`YLIrLx)D#jCNy)eeY!0UadjP;Of-rw;<{riNhC*-|^%=PJ@C0xR zwu+6-oeO(_wd*P1Da^VTFJ4@heR$ppMPQekms3351 zc9t%f?(i09@*Hqg*&|~a1WbreflFa00N2HZ{kCa8tOy)&{sdeb2^{>2UILsu0S<=) z`~RQ;(u91zrFuI%#2G3)fXh38`_6)aBmGNPtndJi->Cxg53qs;C5N#5^-;i%GVby4 zKT{>*T4k7yff{#bfLRRKc~=H50GJ9~WA2%mxw56D#RFI%ECC)wWKx^RWyu0;Ix|)S tTd~klUbCY}1HOZ8EPLpUz7J*>f3274kG$4WC=06QlS6< diff --git a/Examples/Example07/graphs/Posterior_Example_two_response_1.png b/Examples/Example07/graphs/Posterior_Example_two_response_1.png index 7adde74e348f4e27f7c0827d442e4a0c1b73f9b2..bfcfb4f4b26732c4fd0d6f5fd323b4a68d00922e 100644 GIT binary patch literal 43398 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 literal 47884 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�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 diff --git a/Examples/Example07/graphs/scatter_matrix_posterior.png b/Examples/Example07/graphs/scatter_matrix_posterior.png index bd7a4d986bbd946fc9c5d1a884607444e36f7cbf..423138862c76963e610a86744c56243d854554a8 100644 GIT binary patch literal 265936 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 z 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%0D4_{fi?D}!*L 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 z

4>Sh)ET*Ja2D&JDJ_u=2^YB7YA_95d%O4hT;2oo}*|*0=lk|0i*eK{{|?| zJwEl%P3%>O=i6)iT!;|HEbN6zfxv83j_c2R^*-;E@XUO3V?GsU|A1>L%^-yQj9r;w zk|SPfiy`Kp*dPIyUGOo3LjxQ}n=l1dW6F51M8Q7g~Qz7Q5eqUECXw zZYMGv32S`azTumTKXEB=&g2nZ3jRr7i%ex&v#n6W!2<$@xsf&&x$Uy7 zPZ5p*tN)Z4EpC`<{GOSPDOG6^+fVw8QBR^&C5^yN3altPttxlnN4vyQNft2ERBw<7 zE$Mgnsw(Q1-pp@txF4RS35M6PSY87={yA&YKKsd?WAb8IbF;@<&DX4?Kt@DqQA`v= zoY;4v6uck0cX`?Q+xM?W&O={w@NaN4|7iS8&r0u4OKbfORa8{;vJSF${IA_rea>h0 zDrR2|J6=CtA7?Ct0Y7PoZ^t#KRMq_E@%Zi$Nlf5&ho|Jr!N+9k@=VTXmJ0pgX~nRg zhUwN8yyC2cF!5TP40^-QXBxxyt7-P0S zf)Tlclc1@qWbJ*bp~|I5z96p!Wo3%($KPRs+E??}=9s}#wzNtorb@9?2nDuX3*X|Tq&7u@Cc66H-)~VT3&)VH zbgmy4e^INwQJ*TYJt}Cfi(px6H_{sUCa(OEL|is-@sgsnNOfis%2@IrQ8>G~E{F-Q zpy@vPqh*DR!pbF_qE{C+!otu@JwAso3X(im?#@9dDM353;S}eBXKNgS`Y3(6f~7vK z=4ke}VM9~vPg;>sW<&fFU~effsL*d~9ye8dy1F=+!_bi{b_92Te+TPh*1BNISgN-% z2E!^yg2^GAtzu;KFdorT5CT-*a>|1#LDJe9 zHKI!H2gDQ+C!)BzKyHc}Pcu|JA)iD$d_gt*{lKMRf<#X?vYp6_j=8YBU4mc{m8MEZ zkgpTTGG?~DDe3_Kp6&B(kJqubHy@9_-k4q)Gi)D~5lV6}?HcUnbEj_v4XQsz$%-R5 zTBl#r5&oCJ16A*49d(+`n1F?ns!yY?ZvU(HvTZSIXw8}lYW_Y!y6H_&1z%rJ)B{=&oPIIG7Jx z>SdXex4qw1{CW|R>L+%ox~(@hGIGZ%pHMomM16rW8kS#6`vJO-RZ6vVx4cbi8gV_i z(Xq25D>N!B*Fx69S*zXsl}qjX>q+ZS`z7rM|D#q7oxx(B2P{2d_2{;iy0FI5%DVR8 zOYy{L@yJWJL|CT+rA&NXe>A$qPkU{+$F))nHa@xx%AA;QQ-cMW)|v5g^x5Bq2q;VT zYNZrNVF#-aIbG!v+r5H%L1|gd)S)7mXf9{8y&YCHX~Db_>cX*ZmGPT-PWg>59<-RP~T6 z+8Ps>4z95GqN7}R@$lL1u1*v?^c(FAbB4Efc2qy5mo{1g9pJBDHd@A>dxa^_l3F;s zCf#MHDfw>xRWS^~9-uOC+e*@$gn@O-X-pY_t>R7J0fOxQ8a!PXSjL^rbv$x~V32PE zWj={gPH^s@e zBIb_d%#YnxTo4iO_3=BU;WHT5?H32^Fj^6Bj5aJ}k>xvCbKU$+#sh&=*czfgchal? zmBd68sLtY6!HHxZ43^!8pnfQ*jr)%(uukEHzYK%RgoHS1yk!TgYMHJkU)gZB_(Z-m z@6t~f09qjqm-{QW_X`3mOR&15npX0CS08Cy*i%Kr#Pj88F~QV33_y3-ki9?b zu6BzVw5N61?~H{v5Wx3+MB3UDH8Rk(?|r+&)iaS_OnXNwxBHas*cJF{dS<3@ZgjNG zj$hF8b^Y8XO)b{-@==ZpV8K?yMv7JS#ndSIga+ z9k=R2S54zsD2Tz%x~LITgdFfRzhN=LW9!`^fECjFRPY@2k}B*g1Vk?s2G?Eqsr=6S zl~LqTl2ddfpT#{tgJo)JqHQutit2vb@uHA5?V#sG{*{X6Sk^~+BJ=P>gm0s? zj-&U3mYrP(4y;xx@9tuF;`f~2g~PjKjQH=Fw*(rz&K#MC2-**_LQz${*OQM%{^En6 zW3miV?N~b*_Vb#%$DfCJI2pSiajDT%``vVi;w`%0--b@2`-h7C zTTf*EDbeXm<`&n%c_hxGiqYp8z;(X@QT#i3#*#DV(mX?5np@1#H%*3o-6!qpkw#e& z6F%nBcZU!d{|dBZmKw$$IZ=gCPE|XMS;+yf%ByQ__T0o-yTApB8~Wzxx%JN~ws>$? z?+q=yY`@)JQV6946qLptoKr+lszx9^QE-!hBvl>eoX*+qnMP8VRs~2zaU%BLChe9J z6o>Im$KNoct=h0|y#6>P9O4X&;;|HXlGof0Himqv9An(N1PpTYBkO6tO&R?L^Wr-6 zqT2f3o@%!Fmyg#O8o1?fR#+7-B9HkV-%Ra#)1abKV5w?dwb+O^!)m#ZuuS9fCK(_9 zEj3*C`*zsWcGnO{0!A8W-CWz#<~#qCK(8`0A1lfh7K#J^PR)^`8Qe~$Oa^xr1Bhr& z*YORY6X-!Z>Q-#z3_h5x5P$DE<&}PTe)suUP6L<^A0OXCy&C{?cvjtv=V7&twS=nh zh1AgJu!28;UotvctlNu+0u$>Ni|?SSqG0bEp5@V zTE)Y|V|8^QG+-DtJMrT;ff_w7+c&NltM;(uX#MWlux{?M_ac+Z*`_s)0?MM@af944 zh$Lg~=Ll%){kD&nEwZbg>q2NByRRtQ)N4n+#pz(38qgmH>Yv)nf`!nb@z>*?nyOQa zP*u&;G*fqz#$cfY+Npz$@}zSM3)I{_B$_6l%##DpdXrgR2L%0noq%~8>@67TK&v>2 z0ggBuIBRB;3pjQwRhzYGU@La|>>XYHK2xTsTSC1NA%mU`QWFa$^p4On&30&>#tYX| z{ZIZ)%P!@(cCZfFZKSnwEWPu1F>Q60=$ss8;6G3Nt}-Ui$qnjMg49}ul|zdP6GMeH zK^aB!aN&?!JCqP=(6X+dL8^?~nD?ErZ6q@je!p2Yi6q!k>Fr_HSJ#aiNNS3~K*JaKAVGBxaJ2A`bz*j){{Qqt?o)hf_b`g`?ccVdqm4gO1|5=ovL zwLvw{zIbel*q*?Srg-5lbP{W>$lWX2I;9~7?!3~Ca5>h+w2OW(kD7*t<~ge36xNS%z)J^k8`V$9d^f&&b9`Rcb{z-l zMefl0mTCg`zQm8ON~Skb^gY6!*}mrj=e>XxPI#A@3r4&q9YcfC!-^W$sJRoggT?U1{N<{luV80Xwe_rnahPv99j9?po~! zNXZ}#pByt^2U=YO7Fbu?A;LZRz6+uB;=p~vNAuFl^y2prL_*}VhzlWVHL{N!;^EE6 zurAcQ6@F9+WgeB@S+V6mz1)$(cJ5Rey87 zK@Z*^ll^|bv23aqyolvN(k8C_C;Po)+OBX?8t7?lkV{vPW$Xgg7+9)rKN%~_v=S!n zpey|S@alSsaB`>X!0GQrONH@Qd7NA=|FcQ2v*39Gs{%|3Khchgr#!MnpzFc9c zzZI3q+}7gZ3ig+c$9m~!%N5jv-rwjvX4w%X*?GM^8|9CNCX;PR(`vKr+W z%GmaInLT+>apj(^D%kkHe;w7mFR5aiH>3I*>DCyx}F9(p>;DL>a>4BdpN(Ja1 zhFLmBTs!Xc+Ar%Wz_V2Rd$;!FBd*&$p5*uC0=b?5+Ls9)xKQjf6xamNm}e&Y+26cY zn|bdiPKl-Ow*K<@^=+Y9_kXnj-+WdiJz={O`CfNRYui9VEHYKgVH*v)epf|~!-9f> zdT(+w)g3a@Gua|1-h0<9(LB1({7p&HLKBoK)p0w$XtQV@vtcmfaJ_9RgD-l!ecGZ} zkxPRMQmBJz94{VB7S9K2a~5PvR4qGYzt3HM0Q51rFY0J0$EqVK_tI}V3icxjlf{Tz zgG%z&>V)q^d=~|@1wBIocQ>y-!=*%+3)cqE?Z-?JVbs)qCQ0BJ$Lo11^8Gg~|2KyK zyp91d+neG(sgo$<1;_B^uu1qT^$DY9fUEOlOsUQOmZi6mvO!jBqplzYLDM3p` z2wk4Xj?X%o*OHB*mCzQ?fFsLQUpTP;KpYp*q-Dg}m671+KgQs+=VA`ov)H+V!ZL;= zzYJ;WzaDqlkrDl{y*Z(^{|qt&$uOSNi&k6Ry$+4ZVIUWz2xwe&zP2SjL-)XSh<=kw zNBGP9&GU^T0e%bm9O?R8w+!I?>(dxtIcjV^7}B;A*Hb~Gn*;akx}A~=(EHf4flMzG zGc!;C0uBZ@0R>rERAdY?;D7tj_G?NtU9((wux?HtQVp>-G(7b)ziAB}tE4 zYuSRPb0!E}QwK*zH6KmA9Gl|c z93BElU7C5Y9SbA)LJFQc*f_sp-lLaO_r<ARe? zU#`6$a0FOS6HiCBlPlsmyHW**ON#n*m<*)46fOI1>V*D7dn(*&6W8cg)4@$r`sX4XHjp=PRAXN0*7di}u5p^+WYo-86DNVgVHb1= zI^Ng~awl&l$62~^tY$>%wEra==-{o5A}7DsSyU=wpYNOa40-atI1+2X!NbER%%iWi z=yk&T)yVq^T|3gINIpXn#A>_%AJoI8r$E!;pmRtD=(KqM-~pnNx`ncXdMz9$rZa)R z<@DEA?}(xz+Goqmb9|jOw@x$97F5AZIr|==AjSPDXDS79vl>q$>juPFAmch!jwP zjwhqZ@0H2?vfOARuWYVwt22=E-{P$bDvv{E>by)>tnMw>awpIa@(lf1GH9A$gU%jl ziE*;Y-Q7{WTa2R_a_(jm-+Q3n%s;G&O*rQ@%gAX$_ldr8X-*JD{OdS-0V;0x%bC#| z>L#+}&rNDDx9G!av}6?~FiWH&YHhfZB@k{bp(q*W+m#;dP1u;pTe$vf zp*bG;1ccmQfr((KaG_@7>a@fmmHRiwSCN{sGiH?GmiVdaEfg~?Te)j_seZj*jI5iE8B7>Mf3J-oDI&B5F zDiVID(6KQEHTA8M;%uS`0!AS>-D$-%@b#?scz%8SqG1RyJQ6;Kz@Z_TXi`WYxYq6M z?^DJ}$I3lt;$~)&$jHjRXJB~NzyAR+xcN|`U(44|UaS_S2b;U?pZGx`l*Jw`2i*m$ zk^pnasp>DZrHD6EoO`>`Ko{k}(Z<_XIiQi4;Kvwl;+EMH|Dl?C!+v4#GUli3*7`O# zx26V;0yXpt|3rbPEBoM)<4}L%ch`235=+B_)zW{|>QH^!IhO2b#;B-}&4RpmHMQmz z7(o#nKWJZDE_cl6&y3KiNb5Z(cA>gBOrSvVvKUm$9IJ9(Hqfy{ZfUMBkZpxSM5J{$ z&#Kamc0^)2^)@$A4xhK5=P-QHZ={QXqtSv=%H&j5BB!QZIgu_fQT(waga7S1(PDzg za(sd%Ar3fHl6OY;owFi>w(Strr=X>uZW}N)aTkr1OZoZV5B@Xm_=wPjL8LGktV(oi z77iDZ5m=skP%`+Th29XKX4~Y=BiUwFGykW2tY}vkEKT)3WcXHP=ge1ra+zm;xq><6 z6G-1WAC`Opt>??=#0)zMMVzi~o=w_XT3VSAfS*uRQu^rV$N@a1MswwQz|QdWbIVC@ zCq($(@b(0dvV?KhK9@B)g$4%hTLY;YE>2E=2dHBHg2$U%JPJ{rDL%ocCkO6_XE7Og zmVCfy8`@)TZ^==gt%d|OGovlj_+Z{5zQP8!%tszHIbPaCflH+k?WF(MskRfD~U4h-@6r)mq^S?zWZYg z??*8zU54S%x;Gblry9?j-NmqT@(wr=#Y~#?u95eyvrNZ#lJk(St)`y7r$Z6NWpopo ze7o?+wQNlvuiR?3WNSf5kP!tc8EA};LnP*lexxG^BE#RB;@}R-e)8z%l;>_ZE})rE zm{h6?W2ZBU(lxN7(ZAUccvLLror;+<>o%QJLL+4r!DW4^<+)1_3cr`k6zD3*yI(~3 zou>?mS@YUQ%C#gYj%p8FkF-~a7-aY|87$Z1RqeE^<01+P9XYh3?|e75j27QjptU?1 z{BFH_+_zIXg%_o~e}&<3*QUHMKjzs_w2Rh{(vP!gdh2GY`SPl~5iONVL_l|Rr4JAE&y!H z;O>Rp7TiR`x(6{5CF&$X>J(Dm1qkHF_(ED@%9yR@wcvLpVA9 zd7K7^^MiMGglo8nqny#aR*aao! zH>0he$bOz$VBl_pjPfBpCps$;{b3eN0lR6EL|i4TFr@oO`YHHT$Iw8hTu{h0O;Tq+3$HOA2bru@Z4s zMRI=_<`~8JrHWQ^qw(rF)f0}K932;&bT1vvzcG)t`4u+tU@CXb+h?w?dShpd_Fd4d zQI$I@zg?Aa{zpOT0goSay_x3&a|tJ7KWY-(D0%~}T~BPq<)yo9R7NcEqQj922 z)Ndhe7!B5oS8^iln2Pi9T8&;M;suyl3#I93MZ)#T5AOWU{sexb zOZ%@9Vj>`fk7Ev6RxJ=Dr{1`n{3?Wy6gL;WQN~Oa;LFkT{35IbZz|>)Dy^H_be<>@ zx@1_)M38F&{6wQ!YCX%)hX@uiKf`nq3+vo>1YMRjYz>Xy!WQ88^V#}LP2-ig!r3_n z?Dz*xqpeGBlr~%n$lBYOk*fmz<&&$HsF%mqz3GJwWWsA2AGU9%XI&}7;bAg0b}h)} zjci)`{_ombwrujCK|k_7r%>xdJTmS5UR*KpazM`M?$*|?-g-{foIE)?@hCEPWWj$u zSyQh%-t=krX z*w_g^Reu0!tBNXA1#DOde$#wc#3$C9EUwFIJIyq!a*yNw2f+eGLA|}x!Tuvm^xt)$ z*fVcUGFW4yUj=m0LVPJqY99cO(Q$=NbD3i$;Lj__7zs4oAU41GDC{w`wnP zREu$T$AdxR=byjp-PUXE-t)$_jsL2Sd6^hJI?Ym=9><3HYVQzpqfy%Bc(ziay4}gV z|40(kl;oB2uiL>-A+B(SNhSnRg-xK_h}$pP@LFTXQ|BE>Hb;(FK7CG30NsFb+uYdc zlI|ix3N0gLAq*wfM-(NNV3L_gb`cVAMT#qkucv+0sP{9SjYiMbjSZ;H^XdCzEJf?r zqCf#-?NX|s<)OU5wU>g~7y+T52SuwxEjB3np~2n_77?ARgi=;$lI$3t?-bP>?sth~ z|5_Gnz^2Rl5bFO?SJmBXj@GC0a8{(ZGT#yMYfxh`;fVSlqW*&H+kQT5A-SfG6J(^8 zU6bUe(prl}1C7u1RO;L5CnH5P6MmX5Fw7&9rMv8DX$$Bq*D*~IZBvySGv8R%ii)v| zvQSOLnfsSJPtKrjM4Xa?pmD=~X4(0lLWu!pp2nm_mPIxH$$#W>T7*$qdAaZh36Z;w zr;pykr1(~+p~2nJ{$o!hi`_P=L+>x%D5hQgn-us!v`CL~ZSgAjl-JrVle-MLFsN6{ zoRghi3NvTCACxiRKTE)}eQqsX4(COztQdrHVxS4M_8^n_?|)(#>*W4;1mH}18hvI# zwnsCbO${Kbptimq8^pA`34p344$xO<+qjN&+AooTf(XtXk%Om%(22~<{LWTzVX#WoHmc^xg0w!o;Dttn0tna zV}}AU{+hhPC30Eud?qw#y6$BfpHNOgDa?7{{oqAHmi_5f9K?X1lI_v48!ug~B;G8h zyVF~CTV-KU#JDo!_A^QdBS#Huj^Ks-&ks36NjUwv`}~9o{izHW_m6!IZg*}>Ld6N= z6|MdYz22x%KvD5!(CL!Qs-TG~a>>$oY%>pwhoYH)Z-sSh(@{ou#$x|?yGih_$-R%$ zO92_8b0BR&gr(j~k@OyK3iq;}=M8`GtO-MNNpTGU)u%u?&u_`%vK;`jLGnPmvk}@h zQ!xMf7sW?sKQnD-#4NqSwf{I=2`A?8mb~lBhxRqKuj@6c6+4&JK?p>SoZ4#Otn4oZ zd*-)SyryYEg}wL}f#L?BwQ0$@j^yM}6i;FsZ-4lbViU;ZujJJddV!2K!gfE_Al&SPO=;p32Q zf0t3E7Ccx|5`9&r8a_Aw@Qm1AeoJ}!vZG3F(6<@pZqCFI4zH=t78I3%!C~`7rqQ0y zW@lyi*r=Gde_USHtn$PS$6lh47ZPxzD%+Pi&y9V*|0|0VNsJSz8~h~ZuJyC5Ee@31vdf@lv_ zILlfH6+J23i~$UnEsf-|^n(jYQB;mb`&g8Oquo%xYM#Lysgb8DDL2%}eb9|PYloXV zT~F&9a9~MWL1<}J9UW5BGX%RPqDd;qAd;q1$a-PC+{$?zWZj&G`i5%>B*ZbK=CGOS`VCH_}^8-X~`7oWP7UrVsW6^K>|2jF;M#;ip58`6!tuBX*^ ztlp4;=~+%rnSSW+Y0}m({rEU}>B^rY7#GQxFA`IV>DQ^L!Gpf7)lCL|lN((Fm(4e` z`v=!!eZQy|xnA5e)5X(Il0*Zl4=N8kyH`2W)hEh(_n$l>A`l1byI_TvW5^unXSStM z#dW_RAdvPCR2&nZ5>yK&PWv+`g?GmcopsJSQ5WiO|6?yFCoZxX>@VTvwA{o&$bKZm zj{F}v&UZd6QMNj#V9QCRIHx#4y*kFhqcs~Z*5#UGzEvxm9!~k{EL$JvhojoQjeDcD z=-R3o*|#Cr4GbEre0H|$_6`c%367E)iPk6~^J+Ts!7H6_aEi0zN+7!8xIsf>=tSLy zU&KTZ5r@tl7Um|Gi$69!O1~UGToec=70>txo=6nir->J`}Bso7O^y1;2 z^kdUAF)~vEbWF!H^)tN!dm1R5$tB>{ri@dvyEOW@?gB~WFZ@g`Mp{!FlGm!Kt;m~9 zLDxOpwO8oYmnt%3w^2Q8PN2_g@=80g(QF^lWrmBrh1WTA(?gJv$kz~KoP|tapkj4N zLS;(HDJ!t(toNegZwI*^2SvzyXx?{1kBT(?7fYoFtZd^JVJ4}xxn%1zMsAHi8$;K; z4^OUd>Pb0+sMPA~5K3UuxT<~lFJea8(hW#gp*97mP)w~b6_rRqPYL?LZrV&N(BEGDdNQcznz3hh z&E>;eFLxg27|)TCp0hv+i4~7y&&esi?C6ILmkXb;VW$sm-xBRNi-8^f<&DJ1fDpv- z$?Lj%BH-R)2Vx=l!Se*))AbB?V4FKF+?q2tc#13NOv=Tk?2I6B0=Y95lb}(SD6D4) zeYNSa+^S)ZCO^T7X*Ym9L#nsTX1=XWSqQS-kIxFdq6@pL74dxe#2$TnwaGSYoCX(_5OG&iDD|H!*^-dYrcs+>ckhBgfH!*g?NIYj`MJi{FxDOX7wzsM&tOIuYsK zvZ{nf4RA5C45U>A3${EQ=jWABY^xX&366hcHE$9M%Bfyc9>i$a%^hmD*|HST-+x}> zzO3UkPN&6TNAU95Q#orhj}VikO+3r6X_-P2dXY!*$2Gcq>H--~1T$4fO}e^1oAAax zwJ2-eUakE#7dh*1D zd5=z~&FspLutY0k(xfYgf_SUTlB@=`_;QUnJI0AL$i&$Ra2ZBr%tFE z;!J)EK$U2xI%O*6w8`%@QQ0Y6EP6!;QrKcX*`uOE!Jn%wg0uc-T3 zrUU(B2;;g7f1`b8ts(JLSC>(2YGgDtI!S~t@40No`|k1-U|!E`0BTCvQ&>J&e3gdX zNWhf{oc&ZlZ(A5$XaS~O@zA`1|3lMPg+FBa65hQ!rwu6zSzec79?olo#TC-Pe&ap%R{37J z+e13HeoxXjwl6^Zj~e}XU!<_orIcx^iow}+{Z>$%rvI9yR#+Qy)DNY`iVg#(Gv*$9 z94G7-DH6aA%Pq|ivPu9D10g3*tf_kRwEGx9#?9F zxU3cZv)dK>7rQzxM|RdGkQi4Fnk#FQ^&6!W*V zrYvDPb>}AsG|a602AWZYXa*$30&lU_AP$2gESB1yqW1==^0p+VG%2j&F@=niIV(Or zUai2vQr5_?DqEwkiWkgRMtRjx#Ekzu1)hAkT3mFegT%k)yj|-rW;pRnNzRbgmB-Q1 znwpoJeK)mtzHO#4uIRS%GiXij~Pb} zX+}giw|syCQ|H*YFKbEkgOT44`>eDy!jX4k>=nFd|MDgRIQ$#7Xm3p51+~7u{>??c z*bq<+FIqLl0K-<%v)GtVL`a@Z8LIwkxYR_YU3uaEN+3h?lGZ@pFQ3ygnrvU_vO5VY z5(ZWH9hJ_z{=786daGJM1QmDlOD;Pi%4%2-=Soy$BxyALRltzLyre;!rFl;<%*s>7 zl-1#}8IWWuT<<5gk3~UKR`f~2LFcC$b339U!3*b_(u_p8crZD+yA*iCdtvuFDL(Pz z;%xA=r6dQ2zo(EV;BU;(VpaR{z|IEB^fsS`0P$l7lpd`{nrb7HI^qo0X5zNQx&$Ux z=JHCWORCB(xMuFaFxYcLooVS@&+s;< z!&0Y(PXQRXy^cIG46XHgA9YO3P;)qo0Ic=X+uB$H2rvdygmy|zfXe7>R6~&N#!g1# z?R>2JYk{7cT6M&8X&@Vm3Ifq*%hZR99qqsrq0H^*W7;BybQCYsPk;;L3L70(RiizU zBkZ{jMfxZ*(?bIVFbH4J5sjI)D?XVcNBOJ_X|U5j)*EcexgaW_7s(rg+MG>yqX{Mu zRlTD^IT?i}c|U}cHn=PlD)CQn`@rtr0FjqGj7UWuO8r)nKpL%?coa9zb_X!lHiDeY z$wFma>*j|7+_uLOImieqNnZTqUUHsBZ6)FG%9W4 zSDj=c{pqbsAE$@Wd*Nu!=OwD3?jHy6djW!jPY#oB*HXLv94_e_WyVMQTpQ^}`oVsR zMr|E!HmTfQP4dtrp0?W{WMG18hFkk|JII1u@{=I-~528Ja63;4bG=yWb! z9oTjBK7s~b6m&R><1?u^ZvnWLCwUQgXzz7{>OPxZ`u?_@5tGI3%dfHgw=XHbzUZ1w z^cmhI3TY?B*K+TP4}wjTCzYEGV#IBYLjAAFxIb+@LCd)@#6mi z-7P2@j%!;SY!Jsks~N4{+mytulo%{v%;1#GYeJ3s1S_P;$~CU?;?vA#J-FuwZ@74ZIjoHh}}jx z`E!$YGT*ZE8T4a@hO{UVXWjl6rfQ7AO>jja3}N!`i0?8xCXTN{!=Xa=kAgmTTJ!o; z5d0{Y=`H;5(Bz%(5tL`)V%%w0DK{{tivBeCwa!@~EFw8IW1va-az-j_zeo9(@b$w` z(V2*`FfZvkCui*I*ow?t>iB+l704W4%qy|E>v}FgmDcQUg8%jE}yrA%LB3bLFtWiZ8A7k|T;amOzgg}CLf(#up z$*!iMODU~{76)Z+nI^zEJvArJv>sO-|5wrY_MN;D*x^uo?{^`yb{f4)0I&vDhPuRU z03wLytJd1%m(_f+M+QKV-F~S#gtwck=&8?)+G#{R7rhWba!BNGS02ML5iaQmpXG1|4IJf+`HVkEX z+W~+D64k#d?wO1>3Hu=>S&i`TKQcEZThNy$9p$lcNrRS2CChoGOTLw z4PJbkmLF@V2G|mKKz}NOGb1fANmAYtiDebVF)hPC%W8(K;-30fu2gT_qpF4Y2Z*`9 zC!K%_UvOsYK!I1y|s@>d6k^V|D?kYBWFH?fW0v znXCgcsxJXl}$e9Y57aWeha_mW}tk zL?H#rlX#2tW2R%)t2>uI-l}v~oW>9k%FUrlc=KaK)vtG)T{@k3%cB-0j}!4}4CfnF zzpD}Se(D)Dd}eYTA>cypmomWuE?kffqJk=I-j6?%K5;OwGqV>I>5V^~j{V~Lo;0DU z0HM%*-2dS0HXus}Kc;Pk|Ni&r{yJ_o;TxrHy(y7s*agWP(gj0h@J{m zs`K-Rnc0Ou=?e%C(dZ+duamWsRki%+RQwntruHlH%gAy4Mz$_z4wVK)=Ra?`1Neq{ zHb={zF<&y?uzMZW6=>JyxA4nHJU^}-ZJdn;5q@*xuD=x#IMr2Wea`%_y4+)4(#x@T zz*li&p6sb*9S^3PP_d(uNU3*1e2)%%A`}q;@%DcZuB4z_!c4#sz0Q7CLRlHJ{nMNB zX+?Q?RA5B$X(*Kk4?jw!3qTVM%=kcnNo+;KhodHsw_rd*Up7qIkt> z=I{r2hx7y7=GVqmh<`IdVCNBT=*Y$j7Uf^gAF0Y zXsR$_RqT!PtO!R-w+R<@s}b5+i3f@brKP!Cq+1&Cl0JK_ z)><*MMNrkNB)2!F{+^*Bewmz-pb8eA1jM>Idd8Fx5#tIxEs?fhH+CMc=^DSe)2>PV z1$nBkS?dVBrl8C*r(#i~*xy-E4aElFPMiWvX-!suOf8uhVU}L&_wXst=$e|B@4^u5 zwni-U1D8ICLEX;6j-S6!UzYBMh0136Wkk!R--lKZ0_LKpHC?~uB=!^mw9dd88pG)= z!zDln46v&5v-c!}VCvzGVIY>XXw@CnRnf69i;kjL?u}SS+Hv@9Y;B#*jszx-07#AB z8#+6C7ImYRwbLKt{$_)FJ}h+JyQZXo7}$EhN-8k30Mu=Rto_?g zJheL^?PF7(KtLc;Wv?&ztdw88e2{~_I+752(*ecYk?A+itrO}U-jZ1|JinF{ol+a8 zi2Mi~46wlu=#}F^)nH`U?Lo2iMrv?N8t&rdYA|Sx5jmRs6A^7!@JrFtN~U|}wAr&G z4&zzZAI{w3RE5861jT$T(M_I{44mgeulOo1oq0m{3{ZRG02dw&_DJadAT!I3M+PZW zX=~A!knXEESygBAR|(pTbzMC@!7zptf#&&-p_1{iM(>AguGMZdm}lQIl*0CBfGDC(Z|bxKRtU!#7WV$1&ZG02w8 z?@BqfGYez5qZvV zr!U{xSxHM<0+kifH>vHA7G+e6`S-OXGd&9w#NHs09~ zKQ|fz&8kx10gi1)#$X?#1cy7o!3rau zH5c;D(*5@e{QD3wme6_sdr1(~@lrS{y>iSO_~-uiL&I%34Y9OGGDDt)6;gWyJ@vM# zAXFF=xvfl6VD`vgdEZf$xH4E6ur!)#om#7jhxi}AP^f%wym8xn@0h_^lNT!~&z-rK zM-&aMYR6-lq`us^Z&|Gv@IPB0kOSdq4*l6aG|8T?JbooF{To(Fsw79tW3IRMXH14Q zYtc`B?-m$tV@=nOlY~3}Dn)Q2%QU*s@$!jxH|0`n%2q>AE zzl;Mp!5YHt;r#Kb*!e@lg1t))E zINJ?*D5o^yqpxplH$G3xR-)4YX#XR*GBA$ebo#uT0;424-Gc31k18X!Z0p!SIJpJ!>>INW7e#z1rW2KN zpiL2GPDsH=PkzyY7Nl`p)f^lyayX{a?JV;Rjo!i$Xo}+l!4P>!WAv1U1ci=9kAq*# z*pQst=3tor^Je`U%$-wA37prQ3%}E7N{EqSj*L|UY9f-$*4|iPdGeedpKEh0@m=X- z0Dv@IT@1F;(o*}mny`O3b3lShP)O)y@9;1!A72t+Xjlzsp1QjEIh}${If(xMN(Vex z^t{iUYd~CNZwOrCe%kG>_8aq%F?)DgYynz|&QxLaKZv01K`nO#&yQmUvhVj+R~K@EKS}qkkcEYkmJhTi zoYS7wFKU@9DWSf(eHQccqF9^?SoV1iU}L=se)r-?NLoG@WP43zP`5!-2NsI1Zjg_= zBF?wTpMVYxx!ybf`+g-M;KfUce6tUj}Pu6DSPoY}IA zOVTYOo<$dxbT~*(zHM4SbR34{%trsB^Ks$$_#V@Hw$AjHH0*d`ykkY~`yL}9%nUVa zI&8ocJP;CMu^2OL+H>sraonAI@k3?rObNlTjG3^9^^4E8^>Lw|mn$waY>iIx(|v_B z3%sP^d7Lk|VtZfN)b^h4XbR{~a)Ur0ZQo`M1Ws&Z1r9 zQRmncFl}%9Bx6Q@SZl~Rs=&f`vIqlFe^o!iy0_@O5nrVtGdLydQ_#8y$7&k5%olKZP&Kx#~-e zpdkL{`}GZ_YU|*%i9a$JI=JbS6%;}J4g4^~Ch9tNxI~WmdlzZe3>D7Jp_I{F#E~dh z+HG2%?98a#SiqUlhp?GLXt2NUT~Hrd_c=)V`Z2-acq=I@$gBcn-gb+3SGcvnX+(I(87N2nUy55jzeb4JU<2uzPpL-|$k+fqhj)dM{ zx-7{!CC5e5##`^yAfTh!y3Av8;V)X10C&+UAN;8UJ0_!>YQUXuYQ;;SA*d%fD66$n z-dKd^d(rMpDS_kiXnS`^0(KZTJo_T^>IIEt)@<2`pP13KkLLzP+$?uJZ{3&{dFo@3 zlL}_sgl2SCM?s@XDBGXd9sVYXp&R>YnYO{(hl9KMnyt6r2AlI#CFR-`hji z|JVvQ>oMp5esA*7Wn#EWjaNoTm5ujG+&jjp*_CLq;bcIMPiaY1XxLm>(x}$T(@!xQ zO&(IgK)^lu0l_}}b=G-*QS}rffIpik`c$o}=0Sd}Z$LSgQKD)H&e~avmt;}`PM2PLWvVoFnT2WaTk_FqAdEgp(zu|GdJ733@ z(GSs4e7LQ4a<-+C;57MwfYkk`NY@gvKTIl>@NNXsPx!;){JSt~rchvNc8_##QK@rYySa0sUNJMdsoTq<*G4kqs4t$1j$equOi9~n0*mo@FgRVU3w#6?b(Y zDjVD+EH!PlEZaKI+WTJ~H3@KYh=Y>AZVrbdRLkj@=3Fwk) z7#T&`q;{^mAR#0BJYG)k?(YL57puR~0q}fLR#ggJ%?(cR#Q0QNazgd!;jJ$T> zQvL>)1TPr0xOmPt&b^yAAm!)gj-Dubr??qcp4DjMM}zIvb!h9bX2>k=q#;6M)MHaS zu7wNQ@zk<>##Hvdr_L(tZPkW*Wr;{I##xzDsTAho0?tO=IpRmnK8VVgNtEtyRTKR7 zq;d4jftm2I#yAE};lr<(O-d8d&Vc|cc}sNb#xF%S54&;YXK7gtZ$9Xmr}(xdDdot4 z5~TSsT)S{^)DAhqa@j6!NYkTDQ)%;Qe*@qT;WV(U0q(bnQ+#ZCCkI;^gO9P63Oip_ z2(djK)9Xz(D4QQS;f1eG%_xT0Pjnsp*EilC*%_$nc>EB|Pb%~ev2BWI*8bJLDIIH$ zaMj;Tm^fig+unwCnZTr|>}_ZJ{a&B9YRp9F_|fybzV}vZ@j6H<(ZZ95W#ng?omLZH zFTAwH-|L26tIpNCtz8G+Gsl)m`}~-L>%V`X&J5{Pb(m>CjLJaweURcE;R?u4R@JiITI!uLnH|0YwCQC+~ziD~Oa z9^2_goT^zWZQGSyTQ`8SlJvTsgT0_LY?1oFfb#W(!m~?4rG-B?o+jnc;aF_!k&P0T z^n5!fL`Fu^V^e+BTV{M!V$j;xXD6O94W|~Wb2evI%F+DQcMP@zZ|3Kj6jN1V+)AKo zv9O7#SfOd^z=$%GnCY`G{04F)3g(77-NPBnaf_+euUP_9ALjGB2SL zisaTIUq&q34%pK)!sw-q(n^00#%mgCGnEI+?i68F=9fjC8sg|NvZ*KioLQa;)_}P? zb=QLO2pEV3Cq3z^K&RuKdYpMwJ?n8hQ2F|{#3b6`s@5W;TS4MG>iB?WFtVSm(2if4Ut{$K6JQ+P~x;dGqZvOlT0Xfdj_>P?&oih`li+RmQ zIUD4~R8`puJ02}HIM!mXr)uI}aFRrWs~O@INQ_l|3Z2~+JMR2=r?kh$3^VHtD9?aL zaZ;2}BqIVl78Bmd&i4I$TZnw8`@T3lgO^EYjzrBog-e5jxk}0lj43q7hJi4rW&&@| zaq%Uwlix(YF;cM)55DwBNW(g)V{OL&GHu(#Xz&w+I>D`OdG~p$ssA`2W^y>c(bJU| zKQG&^#{0pp)%WA1M<#_}dy2UanpG{l@7v*GXSl#x*MmI~DU123?to+=!8w<~@VY;P ze|S2ys@zm0aDENZ)70^`GMsk6?W)ef_1?xcNz4snV&fi8$Dfki&5rSOdhym>QkDnv zLk9!XgYvUM5+*%$3Uip@msRVpy-L{NP_5MqP0jySvDn_%H;w z0G_-Y02c|Ms0z0OKjPdZG(;r}Uc#$$p#PtL1m9m(N$#)4d8c-{Hp#)-KO#N@WwKE4GInaPHJ@Ooq9o%gYcC z<*H$35d03O8^Kg_@Pe=u&aj|0+Tgf1I5X6R>wL2fX`j9`UZF%<7N6uPsggLkiMgpQ z^>WjR(`BsF%m=GK9USrztLD4Vqg{KHZpWo2b+aSZi!a)W0<@Lm4YoZl_m9l^GH z=8BAfI5)jpmP~qir$}46LF%k0Ou-U(mEOfo5<{pHy~~pU-O#Te3%>(m0mH`+!}wyu zfXv0@Y>)51mf4_{XmzA4gJI179wG42Tw`Wa-LS}e&r(J6GcsW=8AhFVJ8soY#l-n7 zuI+GlT1Dn0x*bm(*K+&vc1j&icOW;CLKFDvNtcFrIm2Ritph}_7?bBNKcCw_#2OCA8!>(qWUrk9$ic!Zmu8mIJ^dno84`y{(RGY5NVByGq7|^v&G#?qRzF7zD*^b51eYv97p5IgdFt>$V@wjXI`&>VZULrm7 zd;c_)m+r~6-q{Hm4m$RWo!^@V8+^$M5H#6Hz}-fn8}}yT_4MMMP$$*BdMv3+FFLy~ zfBNAqs>+=Ox2Qc^{1S+OMR#42c7JWapCrMDDZ{yGsxJ3QTq2D)^HUsiLus84T>dkV zr$miJITG=gYLjWdu3wZjPeIya?Mm(xGYaB*$pJJ94x@%Btx-I z0r~JBpFiqW)%s1*qD*H?QT1SFiO2{i<`u$Hg^riL4zVtUbezd=NBD1Fg3ZwxeQGiU6D;oOyyWYc1AeUK_Nd%Nm#!fxS4{G#B~>4n4UIy@D_mY_>*~4X8pBH(lBK znJ!De$@)Avi)lx6upKnTl9Y$i#ry;L&^nuQ4`z@G%`WJAb=~X!+oJ;q+w$I4g8g7O ztJ|b6q5!-&WDVB?&yxt zB)y8LOxjS}3hv6Bu$%a1UhB&5V>~u0U+jZ~V_Ju_P3ej|vMsxr);IB7rho^7d7c(vVn-u%M>h?tvo{2#8{4YDf|B+f4i`&#sQTDWp1X zovjvTK<;($5O4>VgLDD{s?8fca{wD0pkZ$SzZ-Bi@3>R}QGZo?A0`$3e2TnGozS0S zhZN8wBM|5xIr7|t{fnMSj9a2Xl#DVHWWqcq#wjh%vg#$oq3nHdoJDh$i8@eznYBJ0 zv^H#k$uJ@Xz6j1o$>&nCs{ZS~aM|I@$l3)w4y%T#6MZPL5_Jodqu7sO z@^!CC*`8k@ykM2J@O=}wYOuVX@-&gmm7s_G>=@b9IIX^Y?(F}IEZw01{d6zoedE4e z#h`khkI2o|>F-jT~oUenFj^8`h7kdZ2ydCbpm{tpYF8(Osg zicCeY7~#f#6VO|otTS@I7Zbgr#*&ihP0(bn8VuXOla^c`?oKGApT-32-c6c+g2H}+ zpH_r2N6uqpV<1ck^m`=RYc3&i@}hM%=jjRAzbip~hF_{RIDj1_(6h9&6A7S>n^yWD zkkNM%+>>SbPEZ*_C5Xh^^;KGb=H5y%JJaho?uF*GIyW~NL9m>tB7aglqruJJkVEv$ zH9-BiA!xokPZ;2xPa#xx-luYLaJ>AWsyYIp+<&+@I*(yMQG5@?n}VO)nF0!oDPVVQ znM&P`eHI-$a#8-?BT^mD7xIi6E2^zeRFYs0gh|Jz#r&)BDNrhrNyJ$fPKeD%HN_X^ z5sZ==93lB@x#!X!VN?`W0-x_zV>K3n;Nxw{>3p%npUgP%Vi28Kjekw8n^Gl|$$dys zJAWaCzWI(}pRtM&D(PSfL7TJN_OeEs>R2b2cZ_n%*rzbGDPb zr*RU>7&-AY|Gw)VvMYh42eCfaJpX%gijPj;RJ=#j*G)Wt>Ck$n_1Zkz^5+^Dqm;R0KLFe;9% zz*-wok5wnS?ykt09<9EvX2>rn-)u9^Xx_)lH$GSY-Hvl*G1N!7z8}cS-Vo3wD7;+B zTEE^jOAm_t-$t}LphyIFf{D3@vUQn}Wnt-Pe>OJy1Ct5SNW`Ago=HBlqC}&{DpNoE*#Hd0%^N5J=clD8=k;R*PZYW}O!F z*&?di&}DMt>g}*aflFg7C@j?nA-yn7L zlB(eQRK8PEgJal1Ks61%)-;3lru;^snTw^L&G0?<>!J#MX7|5H{{mWu=Ye)`bn2$h zGqV(Lx$DjiN~KgHV|m=6$dIN_l9TOi;VwO~mNW}-Z)2EE(oY)H^2K4KpdW6l{N)4i zgWcq&>C$;y1LuU?cPP`Ms6VxHQq?2>>I-bcrOKz9HhRvy`n)|)J*RwZ?Z-CvKR6lqxyXwvwVXC zFQ6-DKr-+pRXVW&4BkEft?X-k>k(>-pJgA&X_HjnDKc(dWj)NaT?mgN2}K^_Rs*Fl zrp2i&_Z#(|%^Uh#Y$GadX(ZGB6%=;Evbb}>q+qi$;~;4fg>)edwK9T0d%|vPm|n9b z3-u0&BjiF+6PD76pt?HV(M7;6I%zXEkvr3Wm8j1>)6lqUw}O-N?KU;#Ovrq#@Wf$4 zigE0Vs`u;Tr47tztdspfhU-g1j=A|qLtsv@LzM)?|8#ej-W@6&CxHp^fMB<~H zcpB^z{r|n0*b5T_r>&I{0K;&sA3Ai7{Zh9m*4YPV`xYM{hxR913pf3`$4|_%NhK5I zkzq7gxsZGHc^LXmRwb%BK$5G98K{Qt>&w7)vWUBev7bkR7j0LwO!yyz-#Y5|#F^1y8}N=OO{Xv&&z6e_rCSn~1%YK_=Z1Acy972zac zbYE2rL%p|vwix&GskRPKQu>g?nJLe)hch-JnjE*=hmQn~spWC7Ydqap$?5ca)eoJ= zS23AwI9=)rKGNH0Hj$xYsc3&>js^R3_UZDsYl5Pf6)#H4^N%+=AqWb}d^b<4xIm84 zy;e9IE}b>e9%aNb;Biw;@~CyNYrQ#HE!oROH%g$lWp#bD6~|}4KIo1I=iWs@I$`^y zJ2Gj`nXx*Q^A-|J#p6g=?_RU!Huy}|=6r4(czK&&IoO=YLXeU*UrCzpa9d>PKoFdD zJPXev55f=q_;g+F=6iF{otEf8=~n2*+WNeH6@nzAv7H~61n--lpGV=}E|;;#yuIbC zKL#bRt<@ytE3zTO0Xx4Qc?+~x4~`_Z{>MVMq-0@`VFG?3VP!^xPMiAi>ays#ZRkv; zjn9%5@P*DE`ncYGu>q_Lc!8?^+v%%5i7&sPtC}UvJe>U+h;%;I=V!IIZ>FLpj5ni_ zR5^Lcq}7@27Zy6Fj1H$CyC}rpyfSsbeVO-8^T$xx$#Kx8C{_!XoVlQ~oxzWxmLVnz zUwi%KKQT+fQC(Cy`?L^EEQCZm`2uI3Rk`riYSZu{8L%>b%RXtD^-8FXg!*JJp<*&u z2K>AWhenwVJMAZ%X2+{$R)i(=_hz&Sl2h&RmWjJWpUlqao*&TK9;>fST!Yq6xl_I> zh_jfyjj}qwN%st)4pT&me?b9IpoHeP`2*vcp{5BICFh!l0GZn4x<%QT=`Gt<>}T7i zxHkT~t>%|B@sj;mCZDmE#~BASmDkyfeIvX=x&h5k!K~1cMOf(7%3iBeI9H1_de>Q7 zm}znWO~$Xrn&PQg_e6Vf3s5R3k>UEpeYP|`Exc6j1L_H(*d=?=(;BJpd=N?6uM@8N zqpeJ3qZjsej=He{Wp&=HBlXK7Dk@ricv@7m%(%N4S#vOtrFTJo0f@^tJE|ucUjj9a z)-#7M-CrlRRh@>UYCn0avV?-y8<@50UZ<%|eP9n_2xmTDJ)-EIuo<_F1)_Ev*i13uKctKa4e0n z7~faZWP6(e8XZO#b77^xt#fJ}##N6Q0bv4ymzzAj+{(tjbulO2Uv)uIleXeoJj~%r z$I-WbKhZj9!rlu^Gpif1l<)xk=5qXcgS&zFIjD_2IFp|GR+U#>IIMW5NWYQW<~B-0oJK1W!Yw_Y8r<*(7A6~ zDM2Zj-y`jJj_1op&JWpETyRu$D|OA?;eYlkfam1$sq4BpY{T_oY6<7o$`bL&Le zL@BM;@`o1hhX+$#dF?MY;ou@0AZe$!B@qqH$ZXUfmIB)srM2OUkM3?+c^w#^f-mOC7PNyr zE-2$cVNe0aKTNwDD|q15SHD+ZooYrme!AtV`Yj-J?zfbN$+HP|a44}9Ow4KQ4`v?V z{yVtr2<8B~P;D;PPZ4#GM{aCqN1Y%7*n?i+6M|mG_1xYFQ@q9aYiNgj$GQvD>Mp(9 zfX(g7T=!o?#&BabRJw`H)Zr~~Ne$Nl!y-GAJEG^i1NG>P)NEKzxT=91pZfKpjV?FD zb);=1;HFOC_WdFdr<=iA(N`i_864&&`<&wMq3p z;62cOoix;+I5mK+1H%C#{9vI*`VT3fexw}GCFRs>V*;LtDYvm?+FeaojQfQ6- zvSu;{)J|Z2n+T&1Gy6i4l!j$;>7kwhye?xN-wLgLK78;Nly(?ZGqwBG9>UUVOpe<$Hqnlrwu>N?p7CT$ zAD@j8VefT&>5)8lzR5EK%9aSqW5OMxq(sias}#K%~pB}-Mb zCe4~E0`8b`?s0MO1!%4ZQ&*b^n+Ut7js)1VrOho<3MxQ4ABA|&=K9`;P@|G*2Rk@m z+FR?+e5MA{Sz8i{GzW1LO*$@O6)CF7{BaCATp+9Bot`=yzTv+YT6!j#!1z|FiG~|T zTkf<(@X}7tt~LvdtKp7R9JYP-*GEJSr{*rH{OgfIVdL;=?_c|d8FCbsB7Et-(c7zC z(QdB7S%<|h`oLr%Xeg`MTf~!@05z*eoKfS?F;g2|%h5IRk9oh;UEAXKvHh#({3kvH z*M2Li&zD-Q_j?>@G?+2)?%zO^$GzWvUR=`E>dFed5Pw>$tw*t{s?of?$!qZ|XjN(( z-psWT%nyai=b>xf8@bngw`8k99T?bmdxPOK=7HEn1+LXQ(GsvRsXzJRBAHL;vuA+( zL$><6ZGity9N+j%l`CTPEAfKnJfygRNB*xb{u}k_s$Ysz#(F2F+G5|Dg?0bLF4lUl z>#<7_jcyuiK|%-vjXKt!cLv=GKs6Y;JLG-mY%AHaKbF#LY+D^SpDJJj!>1h~N>4ei z)hvt5(KRdHW6KP&KN{cYe$s?tdpVk^O726V!5mj5c3{qgoW5hpNp}QCI^{_%_Yzm^ z{&T!82_x$xXIQqa@KZm>IE)H+46llL?Bn`&nwW4$Qqb18R;*`n2YK2w%O1bd#708S zdo0!OfV?MT=(qc+^86*Cpah31wM>j4(Td?B#@EW!u_JBAb(Q{^#}|}zM$D>&*E5I0 z3yYGy9-GHGlU1xlpL7(dk!5>OVT<%tgRNzr2uG6vtVLz#BZ#so!xkLMxbhHw;)s*g zOA&MmP7h|zK5yEt6sbt-_p)*M4|fNse@BlDNRQJJ#uxQ^`q~*9=OnCCzx>iI!1l38 z`^`DNUbPPUTDYj%>XIJhyNi+s39%&FX>89DI~5cu^{_wmf9}e>-a|pUVWVtx8oO@> z-VRRkk$7YzE!ZjSQ1}uK2KvrQxFFPFEa{s+4kBjO186|IBjDP8YmyMDLf70}?^kit zm!%AJgC!B3*p>396C2lAs$2Wm9nJ95XOd08YyE9ek+i`J@dg5-5SLq0)DFfszzdCn z&%;5my|Ze1CXkRSNGasF^JmwvRldeO%mz?o(058aeQQLOmSnM|7YS3owR@iEtLkU+9@nxonTWZ$9Vq?ij9u9!V zo{HuLx{*Iw@d`Z!%B}k!U4;lz%mtG+&6y=ie&)ApU?q>xnz?JSmDn;uMt%_^Y22RK z*;A!K`_`!;BSz;h^A;^PbDDew0(~Kxw5p@W(5C96@Q|FL?J&M*Fj2R?-HXLhV8vT6 z&&CFj;uC=B8yh+Q(C+H)tV3W-oH=I?ES4UKv2!18FL}5L@_t*GYRz@5HHcsx-Hv)H z(6soAJHMTL26l+QOCqc?hdvbwuC}n*Em$2&QgI%E3+bE`1oJ3j^u2wRBcc6lPze;p zQH6b=5wU=Hi5#i-<&Ym%VKUQHuW>w9Bs=s~;-n$if7kSm$cRHRL@J>so~%h@Aol|B%NrRS*Px-ifJRN%_mRcQ?MIy6=sN1 z?V@~hGTjDq+tkC={_o|=MN5kw=$6)OePu}EbOv#lv#)omGe`@I`kS!~tr;-RTI+M| za_5fCD{NQgtUZ}da<(X$>I#w}aNT_Gf2Z`OZ0I3n1V8C=2Iv^QTI~t@{PE5AZ~+&8 zAX#*={Y0kBSAf+JYaRxqqR_-HOw@+>`X$kUKVhg zM_d=vfc~P`lEj`lz>lgq0$G=-2TD_ zUV8k2o#bt|wEITO=I_k}#2<#*(qq^(VI-023O<^>y-w`&alY&r7RlX-oEY5edPmjDQxr~)3 zJh>fsRuP$JoVJt(8gUJx|65dsLXt+yL99sih)vX?JV@O|59@9^KQS%I06QlRB5I?c z-R?f6$>rxW+w0D>o?TKbu7ts#Y_{M1S)ZPQCGBlXsW+O`Y^?r+;Yd{r6s2P|+I|~o z?NrxoxOY5))-H|AKT_-Bqt`nf=N5Jc_02yWG9lkQoyP6Rz;F~NJzCv1_=OBeZ+3=Z zbdQc@rJIJr!&`IuRe3n?lOk;M<3a{5vW3gXwtu^1CL%&WE?^B@whW=3x;xinrO;o_ zk{S~{V%`=U!!qFX_2RNs4NzgvzqLn?8%|`cU{+x zmZp_2dTpET$otxsZ~^|Yp*hrXcJLE_Kduv5zV5ioZ0SRqpVKGV={-$H<8Z+5G?B(o zg%s8tKJ7ra;|1oh_>=1aWwWvaf1Z+gYg{fZsG*lKvS!>o$i0?mf2Zz&;$?4-jXae(1iG6Hm9JD|bYjm@ z`%6!dL=k9wj3kraN2u62vAOB35r*Ly3be;)XWMGY)KZ~+6Fn-fmV&%~ZD4SmzxO@# zwKA~@`qODG-2eFmHJm0xd8qcG|FM1@)_?!o(YCy8e)QwE?4w%4PFqb)F@_0xPSHTuLqr2cTv5*6hLf$pXVpW8_h`7RW$P`j)wKfz!lSjCK6;5jihSv}Um_iMy6aguumd>vN_TJ3!ZL_=P+P5+?fK4;FM%2WA=e-bpL<*8pZl0MQG zJWRNS?oy_9LUkJ)4Cp8uV6H68c+z@tt02G$W*zQzady<_@-fAg2<8E%#!5@LJY>2S zP`3#&J?oD_A|h*M$FQE*vh-XYbs5t1LY6Q_$O+bhqfhhx*Ty}a^QJ@nT0!(Lr_3=k z*E1V&Af0Xe9p$f*S2PzOjk&-k4FO#(*2Qic^GAEoen3YOIe^)$2H*rMHd*x`0SDB& zxD={3ej@1b_qN4;zkz)el*)oFhLX<-sAvLnW4lqYrhrnvGc~ay=-Uy37r0sz0{GF+ zX8z$(Q3)c2!+?%Z23p)e(ciy!I|n6tr?^Y12S=OOnE@7_VSMq+8e##}$uo_K2^inL zLSq^6IN002yI20usRa*Sd@+;{u{rZzegW>oyZwlo*46Px^Si3!aSMI!!_wHxr`^Nf z)o??7guuY_Z}%?q<-=&3V$WB07#PYx|4W^jGp>@m(bRRBMWi^u8a;8S_s8OX0*qA}rLkvce6lcbIpgT2#z>z;EvQSJrO`WdIn~tJQE|UJHaJ zH$SolkpZ#U$z!k6*icWL2#bFF_?Oo_8hsV1bv4uH=-3CVe#l62+YvRBH@AI{LhAA8 zbTxrVxSxOa44E@3*A9e9CtB6(e1sO94et=08fIqCca?3?8rI#?2J1K8!`V zX8qNLR%uvP&r&V>?Xl0=zlF0`VnlL@5`d2#NOdl1A9h%p1bBHp#(t*9IPR}f3-OlD zhz7$%JSws%$wb3UQx}#d`cxNOcWusiBZ9LBfIdYoy7bTN?se$YdYRnwbgUGl(mdR) zl0R-2L!~%@1=E9!BJ0y~qw5ErjNubN^nqHBo-?6;rGgQFpNq9VvSzh-T!&MxyQW3v z5fi1F3ueC09HxG$T&vaWzj2_2tCmR`b+(q4KWcR+ejlJB+Tg@hR@|H?O{1)u&*2_- zB8Bid?3BO#XK1gc!hd*?ug<~$?sNxFmsxCKAd<<6W(qW(xRq6+Wr?C_ZWEB5nl=uPml~pb zVlF2%OajYcCE7=GYAOAvO6srQ>Cq!>US}2UR?ok@gHHfV5qH6eqWyx#=;hsp0+Yi@ zP!gM1JwzMpdN8GpaB}j{%btjqcFW@1?nn7;S!9*CVLT#=7;wFwwH=!4%HsR0#hO+L zS)n%Iue~|%J8)4Cu$a<#`NsY>*CFjS81b6xbsW~k4H2Ar4`k`F)<1Gy<9#pwNd%z= zhHU>%>?>0&I%Hb!)8O?DSH}J6>GLo5zLm3`JzIIbRh{1qngrfP52~CVm6fL)>gX{% z#!UdtfIGVUKD-D`0W$aLNoQ9<2`BhM3wztmifHS}wd#;IgJ22T^HZwpJto*|v>eB94mG38S$n(_@VTyt!s;`m%6Sd#$*yJECa&b?q}^=!=i;6b%RSaq(g_n^;6-Z3 zOiq*$G(Kk;fhwvp410pKw7e0o)6Ckp8w9_lCpOwXP|)S2wA+VEcW--Ev|4!h=I#OH z=HtxuP8b6QJU1^Vb>6E4zT4nF=}ndJTXQ@mGPf6B)Ae;hSw9!PqRve(+Yrzv^=^#; z&UT9X+cYCnGvVPyK(uY9reXJj$>y;eNhKYnx~v#WYqDat^c4cd++5cSHsC=K|9>=H z1yGe;*9B1lNhtv-k?!tJ=`QIG0qG8D0Rg#m3kXO{H%R9N0qKrQcQ^mx{pWLr8JS@i z;5pAed#%0pTJ@@{@<6(_f^~Bvb-m<&iq)M1ngdh}NqmCvlS3i*OB>SJRP$JKE{%G_ zwV1&oN)XMZ#t_C|m?B(dW4(Agq3(GF9B3UE35ecjFguBBu?tzkk_xo6njEJ~)ioOW z%w7dsi1qK-Xm!WrVHu!h!Q|OGJeXv}plhnO$;kpjF7a6({W~F~kI)sBMM9E{(ycUk zOTc7u*VHgvS0tG*K$epp&lV6v0{^E4Xj+e?bXg!v960H2^MbV9VUSYmGHAWaWF}VO zjDq9?sYYRyeq-fC8IA3)QXdv9m!|r>mV~KcG;D_i!(7G(x>`=I@3c7AEz}0&iNi)a zR1jn=ECoMOP=CT|^@#_w{nK;$d@ee@uXYccx#kY*Ti*RCIMmJXEB$;K<#1=43|J_SenHh7nvKc zNU!s7BVluTcIcy@K3jG1Ts+D z`LV78-NwnTlirC$C>{+S=eHDN+7PjZXY?e45nr5Mo6Ha)tXR8r{;Z-BiSzfo33@2_ z>>snKm@dkWI?qLK=()^vFjpPx+773?v-<^QP|2Nx^Y2di#}gs6&UHj#zF~Ecd#Cot zxQ-21!TGRNfn$PkMEQBs!Tz2%l(ux;4~yQr9(VxwiTpWk87!gpBR&)$Wl3A);$ ze9T!mpbcyCON#?jg*hAPSjK9P#D{d(afu1nlRT7(st{FV4dzP%4b5X`CRTQz?UwF$ z`PPsj+$#)>JsADti9m#2Syv?;p5OMOpf zH5hDniVCRePZ%li$nj5}<{2E%Oub@ZQBR~2DP_hGE3V?I(;NYh&1$LBSc|!xx@t-OMk3j`n)SRre;!1U zY*|!=!NsL)0eh^*f+KVN`2GD>V*oM{L5k614|**JbOFWbo!=!Q^U?hp^(fS-IgSqJ zdeuEEzpgbp|4SDCl>6A6vNULqWL*p7)Nd#)558AYlq!#(m6ccgn z9oWPE^sC@R2A8GvRRS&L-j0olyB7Q7t#i!LKmL3CKY}g#9M74Ef0GiDP{-0cun8y> z{TRbzXhY}bo>XC16KwwI=E8B(mF>54ZvajxNf=r;c~z;a^`ZZYi9RFe`YXD9G*J%m zf}X?d!pWFHR(EC{AObPalD=$gd_}U|0dxm-hld-|%;?L>p6F0U_*(n4wnpCuaA_Of z=902-CZx|e1&W6aAJ2>&V86?ASbz+j_!n0giei>AKh5BF|GDr0SZU${0^1U(`7(O8 zE7_g6$e+nBuf!af_%I0RhL}|J`K+5ZSyH>cO1hj)c?UH60Q+p^w}&=jmS+&;H?`t* zJHe>Elt}mkj18_PZB)y~ZgP_h)-Z&egyA?zxH&UnXjZc9a`q!iyPT-l3R5a_HR_t|NfN+rW- z_aeWCtIc=zLK-wh(p$nt2Zr(QNljDbYsaktGa_uuPEMCM1M>BmBLxT3?P=3Pm za{ztd+u1a2!@A!FNyMD+Bn=HopW7zFdX2>sDeQL-mM;#X!Le{?KY%iVUhU5^MX2%E ztTNP&U-OZ(6-NOIFZ2+e_EnO7ns`7yGGV~up}|yMkrGLXqJLAPs7R0K@NI7S=lI3N zn$re)AQnWLA_w@t!*w7hUTJ!S+a-w-Ia0F21Q+)ioKRLI^W7%m_U>ECB--B^Ix}CTLI|*Pn-*MYpdwVRR4IV)iOUSLN23L)BIAT+li>Xm?=CT;&NCwIlb3 ztg&)O=j`R|=~1gSeD!UGNz&Z&^?SXVFqflk{kh};Gx%TU^|4cZBm1ASyp!u*hVnXD zd{eMHpKmljZrA?NXa$gz8O6Ld!BwGE4{I3fpLHu9!g!%0#Gf9bNTH zJWW=g$69-!skY=v{Mmj;xz)fGCRj=p$>2O#i*A2l*W1TG6rc zJk=te`4xPjdZy9e&aDsf|BnxTcRb;PL9*9ShocEKiX4Jwzc>8$+vMt6*UXcVD!PUt z!pl8>(FBAL(F@Sh76xuIdjM0$DXwBxt6`-xQ$w@m7)x8kV@Kf931Cl;v4+D86G>0} z(5B~h7g;4kh5s6#z(qq6)iW>zht*Vd;vddX^_&aXVVxfBbSKU62@`B@aY6>pBU+lkU2 z8{TG8eeClnWF@pF4K-lMKn6;^c8*VN zU)7Rdm@S_YUrO(qGggND@gM5X9lM526M#~6oc!^K=c?Va%FVl<74XE? zOtek~AQERL@Do*YQ)zLA_6AQ2yC5~CjLBoqa3r12A`#IBy;6&aU;fQ;xq;B1L!T=I zTf0pDv)fZ?p)PU%`%6@6NOEX6!{A+4G<5#&VrAgS?~=md5o(foN%D+d}MW!i_H%>-X>h52U2)-lPLHK0)wa>d@pG&C1dpCr3QA21p zXmA`uV`?x7t~y23IMmuCnX1uog@H4HnT14Y?KfTZ^I|-`7Vg&y$C{5Ug?h2d32B09 zb4Merc|Noc7jMf??%za1L+i?0d_y0vJ|C|3?0?#Hr7B@`Uua2jUm_M2>tF#*Qhsi3 z=>FWC=I!7AF56VFv>sf$zPV-{7%XPZKuA|8;3LYiAXU1SeB zt#<`9cw!R?GfRtUjUEp$pb-!b`mqEBpV3twhCnF7=Lq>`@NB_G5E74GeSAZ)kwz|& z)UE~Z6&owq#Dio5u3dJVBjd1TbVP!Kv&l|Z>pk~pd&8EX)S!i;-=*f)#U5!z#lPwC z_{88l`Z>Ur8m5t*o3BUUZQ_$kdXbT`kNEba(ZgzrDqUFf-Tj(LA(2wcqEgu}NdFrd za})`P4#`X#TA1B+Yhn*XC)2Yq%coU>N=pLr=g|4s{qbay^R@CuB&BR>^pv?F`#wq8 z3s9jS&q8iJkGuU$Mo~fSzu4b>jo=i#oBAJ~&inesDXM-gn!nGYD(TK&O-)T+LE(5z zj`_H$?Y7AW#5-(&n5ijxpWqI?>J)ea04xbU%JgzTXZ8af7}*u#05K!V6KgDx*neom9eHvcDGXrlTui%WUFDQP0dPhb`^@7~X8y zl4x#fjXt=k;SO=*^%O)G@>y~Nqm?UNeb~n;Ytr#;t ziuuzXJ|R9e-+6T&r{9I7ZKON&A`dO}BbsKUyqqiUJ$AvU3qn)Q@2b*R1vIc0gT+iD zEJvrctVa<&Xwl7~u*k>W(V98zN$PIo5dq0(XW@{PnL6g#cd46nVj{|Is&Si%_P3&l zu;0Roq-0T$$BwYEzG!i&8RN)ELeE$kdNe;AURx_V6hHJIPG`UUCY5VmeP}>A*n~FS z&V_GVEAl}M526Z5{QjMz`jRT1!*h0VJ-@-zDb72NS}8G~`<;lKwRk|~^JhH_Toq{3 zJxvUQi6y>izFAfC!cur#)03?;ZI`<*NTP;$+t|lEd^Y%(^4RB+xPVQ}4JXRc#?WF! zR6`G}(s7WH-r|PizxTHC{j>P0uOpkLARLi{gF{(QPab5ng&O~zogD!2J-x#j{4#l} zchIFfv=sT!w)?rZjCfZNwrIF|s(+`@4xuC;JP?yDe&yk=g_3aUb9MWEeWQUTgk~uSPy;4WT3>!~}D$nLi0EKy&GtvG*uQA%` zWIy^WePA*$ouz!CH^uUK^5s^31c+c%Si_m?XG#8clEO_w9TSw#wq2uE7{lKuQ$>Lt#)w*Bm9|9%n1$<1XBhUO^iX2#eB+jbWI zu;G(#yxofF>8sGuQT^z$SkjvmlfEpGMVd7j9uP2YlK(F*h(ZQcY7J~%Ymv#5XS|CY zR$g`+<3BrXyt*N5H2#5}@ZC~Q+(4%gk>F=M=#gp2luYKWwZzk`W3&(OXD<&q@^NvPQ5RJ22`0IK4)_HSo+N@e!;Cq_kH-(QFW1OuTk)-)5kt?19f6V90Rx(hau z;kykIakCG}Nk)>wB9A=rMeQU@88WJ%>9k{eE{cyBlmfQcWSd{C{P%WsS+U_9HtsU{ zT{bNp53!H@D57I-K6;k*c(+-wvKJgXRLq=fWAJ*^;aS04XgA-z4r?F_@fbmZxSb%X z)ap9lK0_f>e&gRrV|;DsD~oQ4=mjb9>n+)G()mXCthxT^M6PEQ&qEZcuN9@ac&s4= z-+CNrEcou;MF=o?1-^d$BORg9WJY8@SG>C1QTScU7p+$Q-VC7G}Pnbu|~q}}lF7Dl1>{goQ36H9vuQ`O{g z!eqozFfv-ku#^kG&&JOa!uU*T*K1t&cb4-j)WpI-68+I=3(17TH5# z=If@ietK`JByO{FGeY@XfKKep?-DoJ(Dl2Sf~l(dG7n9KW5r@RZ{5bPRB9aRcq*$< zg7Jq+TSA*RWbiLHvj3#ze1)5z@$wein;w@|}KXa1JCvxA;z8hq_)N4ufE;Ep0%RRXZplS>>CbD492w<7GZs<}Y0Lv4VW*xi{ zsEo!NoL+J>?9&n7fh0WZa&S3qN2 zSruqK#r01memBRIB^X-rS6fA1ba?CI>k>U>MR5hz3JJox&Ip~9=B0((QeEBN#+oWq zBYl>{b$@~50SA868MDj)H)`@sI6Kmc15 zlZl&gA?Pg3Bz^CAEvCzHu9Sh{(y`L=d(?T2ZAsge!?#l~;GKy_Gng5ARaaipODgxh z&&*?gi}u+lPye@wiIU|?okHe}=68f0|E^E3cc&M<)8k?TR&ED~8s^(PPLre8DyFSs zUiNR@@E)qEi(9e~^w3$#m1Xg}#?Ngk*q57yK|6LN6HFJ&YjeINUhJ(gF%MYi-JC3( zJtxN(;YsYW(R7$)^vEasbY${MZw6~wRS8``o5diExQan-nUDLoRib$<$IxcCcyGlU zOLj^*rv*Ko+r^PiGl*3QO@4)m&lI_4Rp5lcC6l=8!VmD$e4L=^A8F?bjR^PmH6?9n zN6H8?9!r&q?d@*c_es)lHTTeepJdq!v3}*0QDUGce?3M0N6=iB~@Z zo{b=?wpMiY80Q}0_0H~~mEZ*Pv!@mDK$b{o3w`I{^i%k@|6Q*?oKfA}Q?xEMto|t| z-pa-%r>^cz@r103%4;n>#}^=qr?&xg_>$wUqL^?%?L4EEt<5z@2l17(Y>C{sAKK@b~R`OsP)CLoL(G97iW&E=~1>O!wq47B-D3&!(!l z@pdvzNn=kLWQ_*X-RruhO%8vn&s2GZ42(1@xixab+nj_Sx_NQ7-sKglH#7@0J}6!5 z-}<2=Hl`dNAE)e0&AYxMKmtmaW2k!DP1aPTUuM zUp;aCc(}stg46Z;ZmlVVq69BQBeKBWsUhFmB`jyXX>U4Ac6rdrSz9#~YQi|+=)2rn zrLnQ;G}V}J7MiP#lafO;W$rKd{e!uO-{$L=;;e8uIvb5OD8CpkqHP{0Tj55{Qnl%H z`Ghf}SE_ZawvVg47DEu?LydpmZdotdZ4X?e$1B)cm6(f4t^|{g=k;-@U-(h2=|Ctb z!d1*gz=AD!D9+&E<9PuWjpN&UxS!+JvvYHxdw=7(otFg1k_Nq76Mk6x8doR1JLCwj zT8IP8aW^(BNPN#!5}6H$+a7k?DjiljkV}tyg&!Qd?7+S*Pc~=pOkUN(NUI=qxCCVV zO}%!Nz0hKF182B4k5;xN&5zhD@y{%>t#bh~Y${s>bB7vJXqmp7G(oXEzAH3tktubG z)oZ_LIMNfM%-QMnct7tE*mfYcI5el=J(9($6Gk$O;~_ciu1czVOTW?fEZwCL7Os!1 z&d=H5gSLazt9K7J*ApVOIJenAo~ zPul05?-5~<)m8eU{xPp|dho(M^?GPhgC>_o?UKh9R6{BmF>cg7@tLIeEuoovBxe3{ zZ-TP%+pV5uO+kwfYnM+O^MAT;>S<|iblcY{YiNkD;CF6UXVb8qZp4&!2LlI&2EC43 zCE+8x|TD{W3H!7`1A3H z+f(7An$*qFGBTQjzWfO|+b%SoS3Wu@*EfHKgE5@_LBRO!eR+T}&n$yArRR+H6p5|V z=64@F<;a)uU_ArZP+O)o^Eiaj(o#Ra`|z0 zvNY}J`jvC9G;lnAl@Ix`tPVmibW0hB zO+~k-D?M(+RK$)c3J{;6N>vJ85zC4dPT&ZAUTAUj_!7b zsg!3$f(j5qrA&tf*Xdcnd-V;N(`|$opit&_v*-DFKUXqQ3kJOw8(nvJX?`h!-!vgl z2Kn)Km(cMMqr7kvV3gDx0S^6M8%=Fh9eItF?kwzr+rVF`QlDZ-gZ40UDLE-!&cYh^f7OVP_wYUVcXoMM^=XRf zDfsXR_#Y`<`R+eCv$tMDKZEBYeAM!RLQG8!8w9HgobC+3Ec2+M^(3ME2t?`OB<%*h`Db`NpvB{PLh)3eXX-wa28ev&Kd27^ zp4mo?B8een>7_6ajG`jvoI*s62_#ghl)7KR7nATC%!CU^IK~%XHxy0IMn_rmt1wpY zTD3~zVM?`6u{s(u7XMyf zYPe=>evGN8E043H3bEKq{{FR?0JYPIjG*Ap0Y$tbmYP~8Z2G|^U92h6fr>L54i*up zswn+TJyx0_A?NP_#nQ@Z=vc^E-fGE3LJU7oie^>J5?fE@>5P@XG&dr@*H)CoHoA1E zx0{8_hfjQ(k`}kec=m=W!s7*e1-!NvdtB@h{lP`M^lVs5}`Xk1VC z3UTRaXsfGtJvrX^`U?8BWj%SVWbnI>jgGd1jrk#9e*jPz{-sxM3@ItPVq#KKmFKC2 zX1Rfau`yVi4_s(+Ki$fW!HSadT#MqKuC~T*a@$X>-jNYahHgA)TvJ+sq}9$k(+Yej z6e@6kHhy;$CcLh@bb}`hg6^)KOkr#77x)f1!MF4sJ)D}HJOSS4m1g~5tbW7ebH$=0 zaQxhT-m$lS()$$3Ej_=n+#WO!0uR^tT3MQ`QlpLWts2qI5VO-84Ds6@9#}pf2#M0= zRhCo)hM?pNPt(g_QF`*mufx7IAHTQ~U=l!ooAAQG7LVO6k{}Ft8jl6a2#jAgJ6C7i zD-b__j||4+DXKE&>RjdeER?%Yt`~~bT$0%xYwawkwh;s|6H*PEt8L=?Q`ZmtbQ$H{gSHK^SeL}vXGndT-l`tJW2bA?}< zYJGm&2$d(>-PI`NJ*?gUdU+Zfq2BIDwVorbNS?j`5CH|)h~Lm=w++P9$6IW zFeCjqucLlos&YNOXf~;J&Eo}^s?72~EkI*Zw}xaF#M+5SbKZ@fv)j|u7hK48kZ_KI zRBstdHk>3+TBfYKJxAkIy;Zel|MOx)G(_s%-Ca*uf))*(S2<-@Qrn$*>qQON)FplR zZp6~pa=ADN&Pz{ACYS>QSYGbC{|S`nYXoEwU~$NeA#_EiTW6nFSQxHWpm@9-gmD6R zQLp(=uR8SJ0mPp^zHJ7wEg1}3(?@{0>r-WLad&qHN#m84BP5B8X^l!@z)`s2@!|G* zgS!p+4=6eO2XHVAEq%_E0;(aWgozLi(*6AWNogJ&>heEP3~4lP#@TyIVP?#2cLh@) z3aWGrKR+Bl=U({Rm$*x4c{S8CYzC<}pD;1t{TE1{78yr3pffN`6}ZQ z*o#7CARo$=!`Ne)%)z#3=nE8&)@`2X4%>V!o#-%ndM2SCun#|C5D)~eK{&Jdm!#N#Vi81v?W1JYHYC7$nSoTjogwJ-M>mwfx6}F-N&AS7|a;kJi)t$cU zKOxQb_|0A?IAPx2fY%iW3wry8;m04(hwS%l)3s>`1x;adC`2|>*Vl4QS2tnYid%Xk z7Wgkgbzd#ykTkgbd66oRRn%;|UDRv;KBNDKEEZLz|J1xD{nNH#-rDDJHkD9gc{z;I zL^WR!BN1UH+ilP84BPo=Lq~lW6ca(tT<7yEpp)9W?-w1eq`}Uo{8q*gK&N$TO`N)^ zA;x+@p2ft`?=WXEI2a#_95e;nE1;*q++E-VBDbg+srj=H^KMKk6D9-A_4|AQ~6`KcDDr zCI5&{$CUt^KnL3Tv!xV$F+lHJEnc?vF1Rl#@MUa}KCF;FePw|Q^ix@b#nr`Vu5^J5 zm@D!WPv&FH~sdJQT&^wKPd%7WXFFwz*LRW znzOZe@!kT0NO)vvdvD!H38Q5cUxris^Mrk;wI$n z@h^mo>{BFv7<&`B@;kY|Lg%`xNUBVS=RP1Hzs%2#yAE3}|HxC%*7jH4AHjysF#z}b zj_p5wyyf+%MkrVi6UgjI+g+~Vj)_Y%?M>r9=G0K=CH-bxM`LTi?mrubhvT_0?*kip zk@CWr0ljrxmLq+6{g?!D%mJHtK{P)nyO4vW$D8wcNAG3E;@`iZ9?`C~C5XghT%E2k1>Sm!={)UYd2+oq z`D8=5Po%}X&ndLC&JdIYTEp@m%Pm7eMl3wAUF4+bn><{GU(A##eMauu-(iEf%??GV z=u+X`YQJo1dkuLYK(aC_jF}P#KfoSu?P2gQ9u_KO#NkfDD$O~}_p83JCrG`o-Zbx?0I5v$mjog~b9X{TiBQOeF4EV8$`!6M`zj0oY zo{TCogf&4kT+YL+4pFe=e$vnn!J^!iR1M#Av?DqX$BD{Y2($qr` z{aHJY9A47sUW#n|8f@o0aZwYdWKIhEPXEyhx+jM2~_ zWy%*MWjgHsvQuZ$YXU8oNXP1KB2hZA4UXH-=uUbc_y`sAuAqzVG=q+($D!Nw+vTV0 zRe4TA{yYl;MBmS5^yhi~-Ow_X<*_RJgM)(uSkpN@TQeggOiX0VU*GCh1xR;(@u|xQ zJ;_;FUK61iXtSM@=E*c6i-#uj|C{Y(|4ah3^HRflTLj;}f5_X$kbv7FM2cOj9wYs# zsPhG@QgonrbIRfTE|pf-lp)$3{rf0KYU9mc*B}vw_Ek1gyL(YQdDXU=gGEgJ7E!*& zplVlih`c$-7W5#G8qY)X3U&*_n+mA&V9Wa zAGf=b7sj>69>mkcczcQ{{T_s${oH5@__g8-UR4c(@ZYe{{<_n;T;(bKp%EI{;-uKHe)GA!@Ce zWJ8*v#zz}(d#$Yxh+7Y*SD0$&t8pUD@0j!E4265fM-IC2=`v=ndo3RJl*%oRJI0)A zo6ZwqcRN$%Dry=$^CNbroafGb-cF6$L$9U`8@`+I1(m(!u~o~`xbPaM1#pVm3lZFO z9}P+7qN^RIZW2siCEtx?l%Ec|FN(hP3cR~7E3 zqE6BNZI4ALRnK3SAog;*P~-H|O|!3*m2uneM}etKh_*n~lxeR8CwqBMSWa@!M3B?e zVjSx89GCN#;XUJ4kN{}W-&xkL%))bO)w$eo^7>yYxiMk4j~A~>Ti}N(!#^cX9CzzZ zD$IBVvZN4dP5qrXu=MlQxsVirSZS+-=$a`FD4U;nu$Vg&{5rXn_^*NY|iKbZ9tP?g31w=Sfa|)P)!2#4< zg%w&}_>ze<7#Xk{-VVN`?I3Ry+?q=kSm!%c~;6!%d9qyxE~c zzc_=aYS4jnd381Cc9H<}w2-#uZE;ZenG18$)2uzIepqRmsS=>Y$%w@&@JP*I8ExOG zer&q`H-!_c!nvo(4tQE0gQ;YHyzx9i%+>86X=F;sKiu`>So3pibcqpqre%*QxKlZl zuU%?5>pT_7=5(*9$_aDHm~Yt`k3F{zP*(aYazF81Hz>+R2{Zi&PA@HuAYcfv z+@068o|n?<%3)ey1MvL9?>N%%x5J7Um))#OJGXjj{&5iL-IuKUJp7{`lhDNH168+GpJ&M?&5;hDuD>vJDX z+tE~7%eP#T2)Z1B4uhbb_CWNfHDMdy377XRzhf%nU4I8|$ytKJcBtDAJkI)GZ7sfiaSf?rDCzoPmN$VvdBAg` z{p~d?C1HQ}HBQpxWFfo>A!gE#deBVlec)Okp!jx*sqn4q4|k4c62#&p&EtyzE+@g6 zp%SdDuw8D3Oy%3CYmJcR>NR}N21T*h=bCYWGbPIUiAr|n@NUH^l&1wuR{qQC7%dM- z+1ilmqGwoCGOINR)RKT~Vz)&{IUnr3gfC+m9127o03g`irRf{1oG@V&`cmzT)Pu;N zy+1Pw4_5d$>(Wu#g7M8}jK@A{p^p8!B_YaB$Q`y%Gw?rPu=?b$Dj_NPV#?585G09T z`3M1*3Xn4TWNmmhu9Sssdk3=T+d@9hh8EnwX>05Hw3ChBcCXT+bGu_l7SIg2SN$sUkVQPx z)6wcjsh~>KNCZhg7CIIRcDx&`&C!XCBUz5_ts+`dQ-9GAiUp4SCm)@9tM>K}#U?oA zA>l3e89tX0j6T0?cW(Es8;6a^hm8aj$#b8veE(|7oz}m_2R!fmExG%@4YX$(aOf9M z^hO1Di7+T;e_9<+#qI7w$Z8Jltv$>u<^BTVg7a%obW{az#)^Dm;uPpN6|VI1J0Cr^ zITyFL$OSnt`&i?xo6B?4G!n2;S%J0`9C;Dphl-ZNUvY#>{K2{MvT2{&HxeLNH%~&inp+@vR+*66mwKkswKYqT>ev&Aci6=(*^z zh6eY9xpNNFZn;!sqM_SPx7y_a%Da;0nLJG-Kx&FX|CFx+6%fYLAT*taiQK z-od~Qr=+DFGTwYpi@y;FelO$qF!C9bkgn})gXiib%l1c?`!VF)ilN)T)#r;gc}USt zx`3dFwELIRw>t$4#if%;z0#W84kcBj(7%PJFty#mx8tlrGxgs-w>=OdYY1*WNM(J# zsx8{JJ+xi<+J>>f^2@<{`eOxLow<)rf%Hr7nYkrNnhc6e8DLWNf(sE8r^)K)H0E*P zM8yfoP$?~rZ^j~J(9llX9)WmhlDdX!YG}S?5a+SH#nnUqs^iSnY8dmqpFiV$(4PIi z$VByuM1lvOxFLnCzl)OrwLBH_+>4tto5o@K!^~xgOS138w$;|w#HYPH61}^Q%jfb3 zM^Pj5wTZ6upR9M!*61Coe$`raeH*)2g!8{y@PEh3K~!8=8pDlIcXGJY`bl1NVB(bC zah4IVyA-ifiIjVIr^$iqUZIRHJUA0qJwjr@ z5BSaHNW(kw$Gee7R1tG?O2DSD8I-%LPQ4DEkp~AOAnW0*z~^Q>YXjgtQ^5DRxVnx` zO-WN=wQswq0(KEVxtT^+dO+hLl8kiS^!ncK8d{$3Ozh3pMEc%djE;|YE-#Z+Xn#vj zCwk(3S0m`3bXxTXjk^|hI;mveq;I!H4g6s=v%m^|-;Q0^UQf2{ay3N@*b1+tc2{Ta z4JsbH%_MWTAw{~HFz2R~7Z#KZ4Ys-~nQEF%8uG?KApP5;wZ9sX;L;@DWe$-IV&O^l zByl^(wP9~_w0W#5L|0#!)Fof{^-$`0Yi`@R`zM=y%=0Fj!)eat{-9VIwb)J*BYcV% z6hPC0@R~wo+{N#fw8`@*QkSW5V`YQMBpgS9+FOQ#{pzGDrmdJ+LT7aSywkgFY@SHg z*_q1aTY=EAwb1E5?B`g>@(_vKk={cg&&{LDr9JDlzedb0$4CUg)W{|CGk*{D1|#v* zCwDoTw=}Y!Ec5l={^X1@qT|i(WyRCd(meHX#x9l}U_nLbHe1~p*jedSi`~tp#>(cP z4)dTAmn@^cZO#nd>mP(h_NK;CBJY<(@E{{msxll!`PKuejc0j!{=2<7mTre3~ZU7G|)lg+W_o%kAcpGb; zk~%APv1emE7$qk?zhnmam7yiE-;C0>(wZ#61}z*9`c)*QBg1qpF3yg}NMk%22yrAn zHAx(yH-)agTI8D*y0ci?|Lt^G%AQ1U!TtE?oW4awmY@mDW*_gbc7L+baT{o0m?6e> zt#`vZ|L; z@efCMHayKx+ha6cJZVDM5T=rP`3vI4$ z`IJvLfwQNlC)Z};?-ha&@Lw|YjTHR5H~8VMAW3jvfsZxwB~K%^!Fcpp$vBJtovNt@ zPP!(0thx+uo;rc=Tpc zf9iBKlM21sWer;4+}mTm?rA|azIW7bujqn~8BHaV&rT-evEY{JwT}s&&WH%vK=`DP zqB~-2pP$pgY2y*Bp^&a$*uC#tJY#HKDy~%Ono9C!PO0hl4uLl-R!;R4%|>`i8YGO! z$k>PGvYGvC0?vkHxYXH2IMeCcQlpQR9T|hfr-ava8wfl@cyI!EZ!t=U3`f?E>D(G< zTSb)rfobf=HY9%mQS!L#zc8Hke#gcd$Ja`G!t&XJG88FdTrxbRc&&}rdpdLoqdW`Q zNCk*NV9pNO8Av5Ly6c$%i-P^kjx#*FjUoF zIn?oLsqgKu*mm^*Hpb!l-$gDL1x-{=f>2K$=5b`zMuhp06JF_ zfeveIoN2ExezzIhipz{cL%{>u_}uLr=uZcCh!aGx7czg(i2s#IaAt&Wrk)|e7G;dzT)X+)Myi)ihGLwsfdnzs-eK*gTYHF2 ztL&F??;Ioe-v^^Q9qqazx2{$Pv{SjQE%bEfrIXNCC(<;#StvWF5l97U41J7bxu34~ zn2P2brg7OvGKIwCXy(HH->=) z2*j2A)ODN7uwQ>+t4(!!BagGKaf=^NlO{SWH5u1ZU(}ciO{Qf2*!i0kYW!p8=4fhj zTw7mW?vm_0L6TyeK+la{C?;}@H%yxvCP5fK^swmfxFvvD1E=<#~JsZAgxim<|l+vD@NdtoQj$Ke0A{f zBH5@mq{HWuGFA}TK~m*KWA^ER2u4x1N>bd&#tGlz!RG=>4iRYv2|We1gCW@EzV!8c zM@??(Sxe)u^a)AW_z_ZYN^MR~eAr>5Y1e+L*Ug7QLNrRD^;5Goyv7XRxI%a8q#{pc zYrzh@`5HS=k|N%C>CJmd3f?NZy_U_f;}6xg6$ObYD0okc=iLp=+D{|me?cBlvymj_bxNj;DP9j<5V9p86%cb}b|9qkmC zSGpe>0Mg_-U>}StsD-clkEXJ2{uNL)UjTQfgq3A8pbVa?`)t`B_~QK@B~lXCYhb&u zQaSclJDPf`eY+OkY^JOET5|o3ysy7t%$(w%*S#hx%It&&F$gmhE2$kPCmw9j=+1&I zd?e$lWE}%7Szp+{#CSt_Ah%rLE?>#syf7lBTVWV-b$Tq|%IRYR-H3S|naqqRv0@W$ z6O@gp-b(JH1gLAjlXX;7WL1XqUVq3O^b%8PeIOkfCm4E} zdXkRb>b>jAz#vq2rp=X7Z@n#MAmBn&MgAT>Qr4&B7hTKNab&Z-y*4MWZ?i=Z7!y72 z7T1lOSr735bLkO6JePdon-q9g;Id9!W&B}S9o)W8(rH-h?E%7aS<}HPxX{}-`7f91 z5lMZ%-``#${Pw%QK^cyI0u5L5n?i_YL0RRkH#?qnw~=jEC}8fF1%LR0n!30kk8H@C z{K;Uzyr7vp<|Lv5?Mw164Y}g2w_pGM{_%XF@8ystho(u5qJjmeF9LO&G(esC@PP<) zctmn0iRK$gQRSqwX7zUB@3lD8D{q01S2`CLLpkwq&qo!*;R6Iajv;zc$RArxZ583m z$}0~2&55`Ip84@GcpN_B`QHxkotC{BO0~%Y)||8$=_&BtS)Xu zuOZ!mEkrW0Lbr0H={<2v`rfG;WYtgcXnfhkvMPOt)R70v^gdVt$a_66$zb(prISIo_M7)XL)guY7g$08gB5&! zw>`K&YsW`}h7V3+yS}@+ORG;o&)@BIoFDHmo%g0$!K~J8^!|xGG&hF@PvQm7*k81$ zy#}l8&vDnA>i0vxij}k@Jk*}mWokRp;WT5eG!u&d}wbd9unEYw3&fUwp4g2Xm%g_67Tp9o! zRSh87w2a|8o=F&FQBa|R-7*d`=W*^7u$Bk^Ol&u;P}?|Lu7Z{sEulz9pSq7U12w~k zPlWfQJo^EdQItZ7T8Tgk75SD>qG4R#X8SEgqHLV123$wKZLOIWi-h$7qPL_hB)B(o zf46v-uWi0IY=K%4!{6Un=AB`i`TGd)tkl3*|ANG3b0L=)2z40J>YXIfB6lJR&IN>y z8;WHL)T2ocx>!)@Y<%a>^H4Cdo1A}2O z$y5{rpEEmuX9Pp-qRa-eR9nI&7)`QzVX4^x9cYj1^hy><*Eo zvIo)Q)73Ri|A|PUlEJFMeeo~ad3E24LXDtyUqDL9zgCZP%FgmM3@ZX3o31ViLyPmb`;VaD)a?0`K@CX_HBB2KgSOdYJOYLH ztT=apw$^td0-_%U{<+`&PYW>dHIJR$!|mA@^1;pLljdjpO zU7U0-l$!3itXQ6;y;<*wry+~)I}QbD#sS!bFv(^u;~*8|(T`;LzA^6^;}d1xVgaam zDd&NJ&3xR{09k^p<3e0p-g~^42zq$zF}C+SgOLM0zC%`QQTbW7=n@c$p-SX}3HcPu zo!idg7b_l+_Zhw*yJ%K2%k96T*dkM?vwVoGs9!0^ z7<9B{EtMQTBE(zrbQ1T3zgN#a__jq0mFvi}ZK5``p}<9MoM zbM++;o}?6;%s(x>it2o`d?h=n8h1pb;MFrU2{_R2N0^Yu4uQ2pD)XpNa#G(>{7B!B zpXyQ13WCOnxD9UShshdOw!?Ud(a`*f6$`G{PambmHy>=~drSIGSui7GM>$;nP?#e$ z$PLQ=I@+i#vTtsQaz%o;h@`=HgY;_q3TM}68`E1~w_N@qBS?Bv80_oz{K`z07 zEW|o{kywSh<8`q8Z)B~5jIsFpxOpygRYvg)$k>$EPE}drS#8{67jA3|CoBq zs4BlNS{MV75D+P)lrHH`1wr!ANOyO4iF8WW0i>n7k?xe{&~WIKZg@Ap|9kJaA9Oed zALKb_KWncw=Uj90u`*r(@4$DosHvvPq0ydM3{OPQ&BddCQZfIURM7x4(ca;~hnxbg zk473Cs69w8KzJvY>8@05jo8++3kvo)V;RErc-PP#$H51$fwS8_>xb~xzxKjUIR;Bt z1_(;Cse9N9Hl=8@jsy9n9bOrXjF?uI8SV>tEcT5wPdNT?p$%U!ON$SiF=6Sl*7gpR z{|>y4*~?sdqlXQD_!0pn~3?O`RZ-k4$Z29L+E4ckELvT5annc)k+hW&nE` zK(UXLMA(>0kT7x}o)e&J5I9IKza>1LH-ZN3`#o#(*P263Wf#5`Y=t{<8ALT!2UUhT z(M_%=IG;BG@bCT0%B8(O?O4xOqFJ^gk1v+I15D_}d2&`SdM>@aZ=XKwr;zAsg~)uo6IaLYW5BAr(k{eyC_{-h&8?_^zYy`2AMJG`^b zN%y09Azimam}cPI)*i+vjD)<{EcV9E^=jWppxU)7+o&ORhtQzsJ_eLYdLw^2f31rb$JUWCJU%Iz@-T8sOD%6*|D7=MH;;Gx%BjNn^^~)yDqx z@hR`uZG5!Vle#*~Nxh~lYK(O8XmYvOL&_|(FM8q*Kr~4@ZP=q1Z+v~qK-*)vnQNX< zb|K3fCHB<1BxX{w(8y6%30w}C&!2pGw3#wJo+m;78I#%V-=LL+imWei*RDRz z+x77Z|$;iP8kED7@j#XEzeD36Q6!?a!PPc77MJm;}dOSTW-9BBF zDC90ImxY)&FHuFY zEZldw%3VU*WT6_hsnZu}@24&EsJ+du4VveshT6vY0Z+>GK5IMC5E&%ZRY4%UzI|(v zlrOunvIAcbUuD^XIt=tiRNqPyS1Jh_3lpY~Z->bS3kRFEVDv^D#mSs>ENx%qmmSO3 zca99%fdt&6)sTt&E2bap^K%fEn1~xChJv7P@;*SFdo4BS#;3A`~W?{`!QMG7HyK^OqCWLD}Q@K3(J| z3y#zJ)e!4|gK=xZwG876v;?dagJ8ON1FBepfbaWKBY(s#O#e>p_xydO#`8klSn^U=tH zbwW)qvxysB!1fM>=SB!0KNi>J3vT9ruVOnk);BfZ_fnzkbcHUKJepR?!RT8H zrdmF#z#q;FBlnAt7tzQi3?+%@%h`h1@Qlqx(s-#i;dx+0;o3JsXLGhy(r16G)U#j4 zQrd)&XL($KHWC|>ex<-7E+(eHK`%1tFjgSSmXtZOZ@|QXz2!V}x$5|>40sIuu`1D4 z>^gBzQPI*2(Zx?B561XdkT&_uP*hLZpg{8Ef4iGTX}w0+&voBv@JN?|{%dloq+tEp zoWO>Qer=t{hS#!4O>XF;dcyE&K5`5-q4ZBNgI1=WhR7n!D^4mjABVfllztZy*Ecoh zQ$x&D+|4CDTEc$d_VfUdg`~P2-?Rm1Rb_yG?~H^Y28n(beI> z>-Olf7b%%id+Cg@(QPisNWOEDO|zUy+YR2g64uWej~8dFIoV{20eRZwo{6e732twb z28bwVZJ%kf{$}XQYaowQLLGqBc`Rm^s4K)r!itz$GJl5XF`^cF^j4VG-8xq!;k->D zJ=rK%j&L{~CkVm{&4FnMM$&Bz4Y%pxT-AHnEyzzz#8p-m_%--?T;Iv9_8nbN<2+Uy z01A+h{&*}n_9N+5%kjmM+_Uolw-sQ|dZ~&M%qUAD+E45^Eeo~jBF#eN$XbGv{oajMtP}_N+xlF%)@RN? zr`TCUYaG<3SrX-uYn;>9u0vpQ(OR(ycic1;$V%g%qL~IL!C|(#`5R56K5bZQH-6o9 zd-RD8y%8~Tpc_ZBpm(6&Wez9|8@cTY5(x9c&m;?Nxh=A^PP*=Tkkk1^c#>A@og?f< z9L=dtRdVG^#v$cBLl4&ryMAzS1VUxhiv>5FP})$V%f0_S_UG=fpo5QE3 zFBJ?7^(huSKWwD4CwWeeNyJYjM7q^|v9$a^l?g0SX;}cCTBIS?}JBEgIU3@gO zFMS4VC@2~#Ms?cr+d4r8q9XF2l_?z1sUepYJN?VJpouN0(KpCYBCr zpnbh{Ek`6w$~z(cE<_fLXXN6EMprrNJ)aUku>m8nR~|_1M|+BAE?A}JcDV&D+I&eH zQA9Ufv#>y=D42@&fHWN?ho;tlckSmyt;!qPZ{XjF_F%oq|0Ja6PYby?y(x8GMl+fw z=g;-1%98T~%bYw;sc*)Q%P&O}1Lmciwmm)5VP+5c%M~hhMqaNN*{gM;3_+uioo6#w zWZ*zlNDo+En$(Qr153>zC5JEp z_1QK~2geZHP@dn+at;$vol6r^T{wDxnOsjCLa$mwE|Ezgr}sK^2K8k$!e@jpJ-8N( zto9EoFR>`(EKuqDuXcV!Iw7&1KoRAPhSN5=SMZaqeo;K42iG2WwGjm{i`LPxRyYQ@N%z zzMWl3rcG*B3I-`TY^mJP6x_u*JaRTHeH-fMKH^Gcu%XMl*CCz+ll@3DkuH=UVQmv8mOGXxO^cqAL|S{2IdbHj-Vn(6aH9Pnbfde|kHXYTu3W0lN3hF9(J*rD3*95odyn5n68!yX zwTM;?p*e}9?7M)rjVvl|m|&RI*6)!1(aO7d?@3Z<&5-<}#rsWLtyuLdRb`bBH92j#Sj3SU`D=0HDPw{I zl^Ng}aRc2o`+Iw9TdfF)=t!I#Y|Aw=9wN|8>fa&0+nT$+$)dIEbA&Doc7Oi%<$CM* zC1`;p=p0>qn_C0MffVD>rr$ZESmdH1UI|54tXtovJ ziD|7b7nt+Ge)=zI z|KT$=PG0BAYL-22Rs;C2PnbS_^@}>mb`?a^k{JoznYpF>>D+Tp z>FYtw!lZBNfG8D&1crxyV~=qB(1NW%!F**k%}}yA+jaJaMOjnsNg5w-U)2jg<`l(w zbnqZcrV}{$`_ux25l=BgsKm0z_2>LCg`nwr`1-paWKQdZf|3k(G|#}7YxwdxD`##; zvy?DaI-`)Z(#nhzbM@pDwk^EdzpCo=r-Z4Z5>A>n* z!K!dU%^G5#t3~+|n)Jl%F&AWiJ-;ku`FtsMO&ju%Y54nh(o!J&RY|EteX7-Q;2ovI zd{VcC^3}Yw`BmPKwH}dWHhXPTVqmGJK#k0iiG3PNZ772_W@JaekVUQuH2M7TOArc@ zr26mJEuR@!eF+Uce)|qxPGwn0F1CDMZ>O+?A-lnCb(#Q5OY9C$y0GYTz+M`24WY8W zGhh(vZ)g|7Bg^0#<|D|D6}8Pk1=_Cg&T_RuuGAWhKrU107V+8=$6*d5Ch3wcyo4RK zPIvnzPY(mJ{kae`%DgMKD}&dop&HX&@;bXdB~J`jlHfICZyQ<FJkZLzX7&MCO4v9YTx}WXl z*^xxq!U(X1S+d3A>MHgF6NUF$d z)vmIvdfS9Vi9a3e6-(41IP;m^L%U{@rB3cIxP~(*8 zn4Uk*^l+(ZCS!MxY*O*esOOfJci1?amEPJ&>+8f4k_+|d?0HVLPFRw;T)f!iQDgrC z^#)6*4Q`?$%Ac=q6O$AZ-JRYDUHZyNplA?sPfALwKAALJBy91O%%etO_t!E*$%E_> zR=SJxcE0y7l?#)m;D5j+$d=sM$Q8M`_-P6&7Aex{IEHGelO#xfc?iCO zG*w|?YxVBECW`bxcEQqtpibC*-k-vLCmk+7D|{%?OP~qRyn7Pz2XgJ10i~dpxxhHN zVBFKOA(!$r{h(dH>(&IHcu9vDJUYhPTcn2(r#0e_(Obc~|IEU39lzWp+JIEVgswNFQmw5%MLy7y>Dt$E_Yk* zT}p%-O}>Bfix?Ny!5=JO%=o3VI@N2=y&&@*JFD3JrBAZM6BLwhoM1kbY8EW@Zt~#g zm>gUpT8IevF3f(?$SWx6b$^=w%Y(CV$T!nx$cmC!GF<89oCWNvc6;aiD3zp1iaw1z zP3#Ry&t;0YN3iunWTfmj1!x>|_khw#!PU^Pz9MepQJ@~zzVaaDo5IbJcXL!Dx*~wl zN2gmcdHPLjV>iKgL^|he`(9VzuH_*HXqzHFySGICFm}6)d^i{1JKwu+y0hrf@;ci1 z07ORx)J3W41Dpr5KBiCe{A!80B}vm(4J0uFbY(R*MCGt=J9JS(^EO9{9`vO?Qb`4+wA-wE62}p4U6A8VE+2L~m_jTX!(AC@kOUg1(tM;-I~uF#vXK zHlV^j6VYa&O4Il4E%Ez{{)o4(zo@o3Qv# zTIk&bv+~v7Fr}+BvYEp*#CVFMBuw$MT4dz=qyP+L66p5dTeU6vSj$Y?@X$|!1+U(= z$)fpa1IgK|!p-C2k)N`|PPK+f^oYbV@vuaezu^y+>E>h|1i>V{Xd5u#fKjTqD-N_DOOvS7nj}4FI zywe;OI`N)?0eQgmuEF-0nuV%b2V(!0MI>4Xe*Vd022UeyBLNJ|kL(4br?2 z0rRk`n7695xi|~ub~xTs!8_dOE`WNrphx(PGIw9IZDnEb1p2BH8B3ZI01y2TDzKsu zn+q>fnVDSV&Oq)jm?aHB5>`~iiw>foDLmD4R-vJd+7bWI`JA;^I)*T5^KU55ox$An~2IDigkTebgClFVViye_=V);-Wve)QzrV)|8weGAQ z3Aa&^Rf;>?eOGT~sb3Z!RLo_5yaxKoyx z_A7$_>ngOR4o`agFI$;fp0eR^0lWRoaX&LIeZkY#?1CaSR^xWK4G+US8~IYwHrw8i zGo~at@U&L>xFJQ6lUPA~x8^wS++#O8j5fwp=$F~v*W$FRxb6tM8e#N~_J&mi4zD0c z8pWNoCU+%PYQR*s`r!{ZGsU+H19Mv>$ncuE%e7gZ!wKp8{rcj+gf)kd~}q_9s;`p-L#*zxeZc=EfDt_{xr z;4rB{OJ^ge9c9WOzvBol$TiqU`c#EDcyDJMEvi6@T`5(Qg7$j z<-|mbhi+O|<7X!Iyo(Z9aq6=y&8A|u$+#6eF~poit`(K&77shtuRPbxXg>n_^_q`@ zQ>X{ip~0S@+{E}PvZ8#T^dYDA#~klY5Ul^s=xrxl(t*hx4>8}Hn`?tHkQjybH(kXI zTGFTg99|?5Rl-T$={G5$8!#o*+qgcDX@R%q6Sp6czp%+P_bGkYqwxB76}iS!6^a|y z%{?Z@cIARwZq2-(+_jJe`;ENn~$}(R}8HZ=4Z_{9+YdVB@#jQ zX1gk)z^LJCXt48|lpqKuFdEJ^TPF|z+{Hr5`vl!9lybh)68>rN6Zl`1nz1g5ISPp4#^?rH#Ev6w*Gu4(u zNU$t)G;ts;rLD-skdTB+Qyg?dd5sHF6bZ zM=+H(c2>vRecjs+ zr_aL&R21agAD9Fen^Gz}$k3j*J76GQt%Npm@e)2?uGY8QJKS0s{F%-w>{Ua2xZIkw zC`oMWWl6)(h!Z&E+hO)$NmpOlwXLq`Gi(yRS^R_O^7b{)$n_BtsfFvw^9-BYijlVv zacDPFL5^evAbQbc0?Zqkes4gUT%d?j`ZX=zBpMa=_@NFtH>Y6 zv3MN_pg}0ag`lCQxo15et5&WcO+MRf8qWyEe>J;iQ7) zD;x^K?Hzqp&2@_K6Fdy7H3Gposa@D-CLLwfCrg)|L-6Bd@JzrGA+Iq2ycjm*!@k`p z4Q{veCQVId8+I}R`*sK>~na7Em@C)8(B#SA-o8-E>%G`|*fbxj!kOfeJ9|AnpB z9rakyBzR%Wt-FmfuVu2ua@Yf&y%ue^8bTlDFQdC+AIFq(;twyY*80X4rX!yBK zw_{HTTVurz|5r(d^s*C<_N8NHC`rzFu zAvDlM|3ogcoZN6-OW?i_sJBt}qXOq$PnAM}5;0RF5a@u4;%5jfZlb(_tFFJEM-3{q-boofU-j6$j| zP9`d?nXy8c-IbX!1Z~(|;jv$MShzl^O>ajAh-Z&?j+^pv@D?{`6h$Z~|CDho$J3ma zQ$ma>ShbxswW_PyY1y_oYf`JJc92zCqr{e8?yJ<7S5h8H@gFzJ;S!9jD#_Y@fg2-{ z!5XRBg_yv<=t4=k#Nq7pwrB1-iL)`xhV47m()R_Uj1nG&A&=ETgt_zDH^G!*xoo86 z&sR)*=SnqQ7VVRzX`M?FWg@-(Z0N;*O12(hbHdZ-N5ebn1!A(}X{q zM3(-mesCpmy19I~MFuraA?mTT#>{STMxN}M2aby7{TeQ$gWI<_znU5~D+K{Cq)A3q z2*HTS7+=W6|%{zM*OMqp1wAP{bvI z2vKG%>@liD_&c^J!xo=it&iYS@kJmc6BDiL-&%T0R$V4F7||)$*rgoR)X0b>bw?^A zluAN^%bmXwuovMbsXlgCOvuBY*5knU3Ry8&k^H<;arrdGdHEtu3II$!tne%sM2+&rE2vRmH zylkJ5m6KZq;wX7iWvn^!T>hyZx+E)?LNr^PxP%qZU)VWcAvsS&^4Q0cy@u_Vp_Z%1 z)zznE&b!Fb!Pv?v{&CYId0tws0M-Gy5iZ90FBVm6bfMQj9}mg6@BD|CA1I6U_knMI z+b=;W+TzzTxwega&^-@hl%0Nx%9jE9)FDqlrFHZNRG-KyQGC-K;mWXqwp{fj93hcq z%fBnmlOikN|1pH5olhNPpq#k z`b*z-HJshvj6Q=NW5ifj+m6grCJ!)_e(&qDF(|(pUYE!jOO)E-MsDpBQc`Lf#()UW zhOiXpvQ8`Gu3~ikrak#7Wfq%IXUn^fT}O4!{x0A%A3&Sr%M&ZL^P#B1cb}b_?ZRZ4 zME~M-t3yX3hQ9v8<))z?9&vPG6*>uVo0U0JP}}%`E4lj7Vbw-ObwVR%_wOV8Brf^i zd7xWLN-{I6P6YK-s=ybPz3MT2ZOT!YG*_w}7`oT7?`U_YIY3?9a9fSAR9sW=vxJxgH#Dg# z7j9!f8;~&AQc?X5p3m083ln7`&g&p))h!20Ue;;bdL2+0U$cc0M|=9I5E-*mlU>;N z=J%8_{kL6{^qTzc@|3j3zU$KLep$igo5TsJ;pW|&LloN75`1yFo%?)L$Zx|sUDsR1 zUp&>t7RkuZjdeubWs*KR3@$nU?6B|){)MC=_YHnTnN1gc!z>cTXYS7>%_XlNY=Vfa ztD>cHY3Ln}jsmAwVv`W{Xj#JM*=k~p+=K?X{u>a~1~#Yv39ZPXJp=tcN8#JT$-!{* zjnvBYOloX5fx4ZI&R{J_Erz_xngOiBZEz#s6VCk>@oAJ4jyx&iC%&j{OuoI)HI|~H zamQ2=?;Gyf2*((R>2DCQ-UvCWw_cPHkskGzv3Zhy#W-zqe7dZ{&eVEszEP>O7)L=J znE6`1VHg&L8D$VH#v*R3MeLdJH!c9}6KMJDxqM&-nI$v4GKqFlrvwZ z;}KJ96w@D|6kepJIB<}aiiSj1RdrErWP9!6Ysr^48ex|kdZ@M-pd*bF=y5e_=&S?Anb$VEI;g}VA(GCsMIHuMPn%q0%wMTI*!cYt z6tb?xSkl2qC>$Exe&eaY@cC^}m&(pP z9c=+AM#@F{^2IbG6}IFuM$Z;83KRBVQ<7d~qUkPC+A(r}L$_VT0dL1%E=qeF{?#Ji zATFz8xM4lIWjAw*(qJ?cTLCH*k-R2#`%@^0Fy^tTlDFsG_qbkUPw>!CR~NKyb`1fh zbFCzAB_*0qS9K5SokeOops(-GI2$jISb0ak#>f%z3q;ghoct-B9~gxjKcS}Smm<;N zYQd_VZc9Oe!22slRlbD`@l-#op`E`#2ohcWWc0D)3!jJ%HME+!Ncl~zrAln|$rBeM zr(_9M@w=yi&qBq!%vfxd94B#7zl}R;nVRa86X$uh2Ewvg@~RR!)nx21D*D)~ANDg9 z*P(MnhzmZRjdR@NY55wdye&{fNweX6y;O_)m9x~-aKC>&df9BLe1-nSmc}k84pip5 zjEu1B(*rU;I5N+RyKKi)y@Z$rOU-%qi7(PeNSyV30SjMwxTh9-z@5NENTS{hkJF^8 zvs{St#&EVtWT}m8}sZ7Ls;@3_8H?FTl)eU6Uwb`#6@pk z^Z7%RHFz-+-0l9@zJHu9kE|4KtmIyP7>1v2e@1wEF9naX;exPiXWtYF_C!f*%2><> z=5Cv~ZCE;pFwZQFiL@|wk_g!G2dcYm?PJI*tz;Ox_*ve}f*@-pB`&Xq^u{U1cB|^O zOC^owhHj}7e3=Z?2c4HG3%>j#5?w`f>5Ke}R?xXmNdqFr?|l|5a_cLg@(H^k!(fyM zrcgi&`w~RSI(~B(Mg1(MOsM`>uZV6Gs^)n4?8lisqhk$@)nM$e=nhyY-Li`QQ99Vt zXNlQI#HiQdIFGb$O?f`)Jdl7WWid~;QMHUBV;je92v$$Sm@)6H| zEY4ciZugd#kp?<}G<%NfTi)sZ0+hP_?@8s&|6!cDNaC_6A98b6M@11L_~ItvBD>`-p$IK5k6@*OU6?kpWHN_9)%2_BW;nOuQ<(` z{{EPoQ=D!n{Y}7-`&+?|q>8gS>zp=UP~KnUPqy_5bN2%|-!36+N^&M8^m+9aeCC@D zD)fm;I3SH&huT+MuD5osw^sXV;>bb)+n>NnyM6d$4|9?dJua&~p0eHPKh=OhA&2z0 zFMfGJ-u6VEOYJ;23?AsqZ_`y&5}9_S&y^ZanDrfyd9RFH$IVOFX~iBRWlD_#_G|ha zlC89V;-Oa^k4}bC+iI)I-~5q4W!)UGS3&;zhRXt1szAu}d+5VmVKHCr8Ge41sAGP@ zp~n#<1a&^a;l9fe$Kllr6|TZC(C#*Oh&o0EX5R9FF#9Q-lNq;cqTOG}g|NZZ20PqI z!$adQFF)iW>YtL~!BIXKVgK)=rI0lHT|A^%gM+)K%aUTly+7|@@02$(Oz!GLmmkZa z{5hXCNfcq|WJI&nk{p`!bRSjp?Ym%`0^`J~gU@QirwZyTIlUDll(qFr6y09Sn~Od+LTCA|Y8Zl z#_`Y<4(xRAeX5BBn~jhyJv)9E2$4sTV+O;kRNoQ?gIZ~lrqp(n)>Z^?NiDUJsb~91 z`0PY6;yJzW>_5hdd9{Q>;|^#YzpCwhzBXTxkKC1lklx#B3N0&bSZCWg@oGM{l8Bb_ za4~U8_kNjbooiPUDpce@;6v*9f1e)(u;#nPvsztGz!;xg&uUHS=_bIFm$x&;;aVk1 zznkH?KQ}Jb!%s5(MTyN(V&FRt5&W0WN1U$D~9AOnrTXT!IKX?>|aUN`O|Mzyl? z8-4WZzqY}{>qdp{hzl6DWMl_+<8~x+X>cljyb4N0jvqQsg7#V_XY|#xXWfg5y_Db-rSnxq zE$y4-Gzxw))fM0@HC_8&dVdOCCqJ!<5X4^Z+V815!Le0w`IBysiJ2 z%t@>%Qf75ttf!yWl_EHK*I##ZO^Hr;NLjp1Z}xjR6hrHx`Hog%elSU?efMUzOnvA% znJoZ<$+3)ENiwVTeR5$e;dZocMoV&{ddMD8_@9 zYc!uiJvE&OYCoooG+a6ImEXN*XpGB{#kNi(iYXYARpw$S?XqIG->gO*fyGOi<9FY@ z$>bMqvkm?nbi{%cWS8rS(BU%+qi{im)}xC*Vm4L(0b{Ga@}}XIfxI>|#j$a&Wy#Wt z@vbf>GjFZ57aWG0Lo#jdl?65eClLU2{ zU)tulHF#LKZZpkpEj4xA@YEgTicC!4Y;v)HaZ1nb5o8t$LPZgI18~y}9X~}ivbZVy zVDf+AkQFaLpQ!vXzy<7XK>_eyqB-a38>wV1^>TCQOAVeH%3rw>?y-ege2EbU`(ueF96> zKhr0*8!_v1Nbg0XEnTfHcwDQ?Fk$r-83UmfhJ{6LF8xhvr*X2ecXgm~`l2LXd}dL5 z$G2uTDy2!d0uk@{KFrHkj0wdHiY?fy;w&WDmn&rC&0dq8tY z`u1E06=F`QTU%A*D^qf{Y}S--q@&|kqi~0Y7V&qEpf%MxucX9JzsC(YsVSFqG#aF9 zG{+`DYF3z1#LeCrfkhDM`C6M5#7HG2MB|8epOmoOFNc=A0+yO={l0%ni_Pl=kaMoQ|@2vVJu<_EfQS5U3+uc3-YqK8n#80l#UnBSIfzTpONYKDDDE8+dT z-Z?pmZYaluiW`l=UD0UaU#OjABD*otMk7u|M6OQHuWi?P%hU#4=JD{Ul`Q*352BV^?pZtL$}&QJ8ZI(s8Cyf zOx941{Kwz&U*yRC@}zLyUr}oaJO5Cm*6a}2nN=PtY}`5llT|)VQk~ITJ-gtZalV#A z{J_R*nzK3tmt93pf`q}0@(S{vQO)`>dCpg_lGx=XB~IjI|G5y-tEd3xqXbG$)dh83 zM|$fpmGX%6Bs;_devFq)K;z6IvY}z+j zfGH&P8YHV6qP`C6q_NwS+xv4#kh% zf~G(NZ{QQAB*laKUZue_R?m3TM2jXwNPJ1rh$Fs`#@h~;yfwGX9vq=TYP+tF0N(Q{ zA!s_DLWW$RMOvz}IEfUzX1h60%dMRoDPXUpp@|8(%%@Bp z+Y(^?0_sFnyRfdUSBdZ=O;{lWkdl|oh|oRaHHQ%7-s7MAVYQVA=)@uWEqpYa3TJ#Jr8+YRJKej2 zo|~K?nyq~!v5@28FuIsbo!UfO-aQTe7OQ@lLtLStzJq`Ftd{{D4r#>XxZ<*^>YewR zmJ>q^T}gsxbTeJ#aaokyy=c}Sj0pdG$*=*zDW`;!w;)QM*1A79A5=$(r(J#C!RQrc z!zJER7P;!d+p@Ue%ZP1gLmoE0t#c8~5V8O7$XDBxy~b=5pY6ar0eLFO-7 zl){Y(o2BHgSj~2~->bL48WmKNmtXY3KBpp{TX~`)csa+eE?7*GA>Q6U9n^qHNcfOZ zpQD(N#_J{7L>0ErHdVfMWsE^RDS_5p^#8G53TcmsupSDa(6Vx}(z{hD0IbOongnV< zLw}|uPvn51VN@aXN1i(fa6crWOq%-VujgVk$IZH&@I2@8)5GS`&DCMcOy~9!LEM=B zSE$A(lQ$e|JVmBtQ4%MGf4=_vn)wBbhR4GTA(>W!#*w#P|H$Kbzh;2PS%#^X7N+YNY8AY4E3RM+(6qE@yeFHQ?q~JxlMj*3g^(p#tWT(kK zL8fPKV5Uz&fk{J~P*&_xHFTA109WhSRUsdn``a)$R5s=q?+hhVVG)L(V>Psf;StRQI+oWFB#4`)SZvy<%H`?8U*s?PfW43h&kF1OL@hNc zMog(hkz=YNm2ghkZr=mJ4C)qd`Qx&+^`LFS9aZ^!Jwt(ikAG2wwm8bT*6yz2g;{@v zdObfAQ@a>bh~Up86yCoiomRC>ELd5<$hQryeLJb%NhPx(8ad$n&2-SyB9NjH#4wS{IqwlJ91(^7eL9(0C+`A6PlUof=I|OqRiZ zHN3osxC37Qui+3+c$`g5P0a;3CC@ZEGd}w7BVm9SF!ag4e;pVnz&o9dP9K>$?orM5 z!RUSC{GH#vuGkx)(gT<(9^fclBRxtJgUepc^X42ZDp5F zz7$;W8x%pbfUKE)qt$IT4Ql}A`okv>9gQvyDJ;^C8g z9>XUS3Np55z}fD|1%vM&0th2G#Yz7f^q)NEC9|+=D!P@r0OPc75VDg|>qzdO9`Wok zfbOKNy!Obz2b2Mzz~5SGsUicC7y;nER9wD*k!ooD(W7f@s{}Koh&t3{OZT2_Kn08M zqJ>mSA{jNUDU+9s%3nvAOr`Vo_b>y1UZz`BMH}+X+b6f7qA0x5!1h&#@Q37N+EF&5 z#swjLeZ+`R3wmWm;7uTn`7StP_l1=;@i`yeB59HY9pDwjc~Up-Zw`%5Hii%$U2cG} zdWBBgQx5@>M;CP9NRZdqnDS_MZ#h>}ZnKiZSbuDloSS;mR95ygGm{jO#^)-siKAEW z2*-ho=Et5nuOxlahKjLZa*2XMw76oiS!_=d-CL*u_z_>2 zeYz|3lqZxmr(6g4tcbO1qe%{CSe4mTw+7+q0&d2*SuHLF1(`p^qs;=oyRvO3?>kbP zn}ybGZ*)}=9|92dcRoY5tyY%^$wQP($-4IafuWhPar_@yX%uHq4;*lB^8lrW!*LeL zoe4d6J$NoH&oia|{zcc0y+=3TM`!=b1LqdW_n6B^JtW3+HJ0DlHVTvqK{ktCR|rm# zO1UrCZubH{Q^)x-o;xAKbe)P+-&7wVU^F0_45Csnaidhl38w0)(U$UMiJM|dVUdpe z;zSc7WEqt(OUgLJj+ZXg_;Wu&hYaAZ61NSB-i5TNRw)gUnVlj z@rlh0{UGhg!Mj)l92_lLT82`22Pb_*?W?J~y+x;|(&MIDsxpSsa`9x?LP0dGIu>`U z$Ry5C)8uZ>maCz1;GuRkG9nIX-Yx{kJfITz$?HMA%j#D9A9D z*MTo;HHYXU@C*oes(YO3R6}CY6K9;|L`b_tSy)mj@B&GAVhUScBi4KIj>rA3sVd9= z3#~Lu4m0*kI7zVGz@+pW{QWhhZ*pRmNeN5)7KVqT3~Flbs`W0ooJG(dv_r{Y~JJb>Tew93LNFM@Pp8 z*d?Y~d*94?zzLR?3$^cda3Yhymh_&n;6SAJE!@7Q2W|`87j7;NH*c061c0%KOdY6I zB`$oA&uUzoTyMQkdVTvL+BE#w*TW(nqlIv52jiz$F82bf6j$;uYp%}K`nW2`S3^P1 zb4qq^cU$(Cmop#;*h(wiXVUYwb7SS6Si#ukUqU?cQi0>D7&!n|4!%x1(uOP`07-V! z6^T|pkHW3l$!D!OM_(5f#MUHY5X13|K!FDi`YkZ{XO31O+WEkh+bngX&+@wn=a0zM;%3)jpxzBbF;HN=XK4^_r5pN)6?UVlk84Kpxx_b z5SN8u@j4$EfG6IxJ|6sp!%3tf*;TZ3|BwiFJs*M^!N7T~1|7N@?&+n|D+XPEK`ct1zOe}@hqcK&OZi6`ve@zMAQk<^dWRw8r(v{NXd znz1>Lx+=Eqia)oS~d z|Nat==iE!daf1B(seWW=XeeWyx7;Z2(Ac795hf|`8kSA83b1cP5)c}Dm_fP0)UE^fzQg$?(33;AiMux=|GG|nO`3j`e-un~ z?Ct2yGw>38W8bI}A2x_Ku9a7dmHEy)-o`s(mC?HYE3@+lj6NY3luJrcE<$2=i`qHH zx|WWkVU~{>vL+h;y|^g-G)CZSyFIUMLHyOy@=!56y0|#3Zv6+*pnpQ}I4TnAyu=8C zJ@w)IN1bo*?hfKGSK9$pKo|j(jpb_V)8&ctA%7SS=E|OHa>`C7v9%Fc)maJLoTq2h zGz0$jWg0SSs?K$d2t*vnr*E_R6 zoUTokmxj(6Zmzg1Z*tLsBY2qe6AVI!ZnuxY8C{`xG9CauL8fr-R2a-x$m=FfNJ!A0 z;$GBrbpJ~rQ@!0`wA07!fr)3j!;up<6O_VB~?(50=UmJMF79e zvFjT*A+$CtB?);No8WqRYs`7v9*P9SU;rt+?A06qB0QGTjIeXoAA{!9WbY(bZFy}r z=kg1vTP>o^T2Jx|X;)LUn_~2-+!0jRO0f!686*L=)3gMi^x`eae;F z^FOfHFQ1u#-`?I9^^kQ+QGN4O=q>fWGf(rnHhr(4<<&#vtTE-vkfWXivoL~H7=mag z9L;G{Q`7ooW}zSqyl_evPf64aS!hNZW{C%HAiCqq(FU`-lW9rE8zB!L)oPJj;JUt8 z`=@E5quV@%%O*QijQ+D}dCKI#4h1(iZSi(h%^54h9B7FC*LC4q5#pM#J?~e(iK<*dc0#3HA znOg_?5u)&TJNz7Q=!Mbze;~d8XFssG|+(5Rurq(Mi9AkBlmMId7Sv(XjnLN ze8_D8>O`=c1h7-E6OzstHei@lH~>VGQTENB{1j4uZ1D`1&}3GL(LQI$217T6)NEQuJ=^qcVXep-@B#7i~axmEHV$LGB6N~byGtZ(tdrm`xuwf z2P_mBZf@(hl${>C%1m4HU^X5E;NWZIi6o`5fEln_Kf@#44X5|(^W?9nY%HyDj0Tj z8CNr&W@S8tig!sOb9f*m*%j*vgedI^)8j$NURjTd1=y`Jk zJY9F5{;H~qjmE0yz#^SnvvNTJ0Z>LA0k7~pj5md{)srymfpfjjfT6y!CUbSQ$Y82^ z1gwaq_UL#j4rg4F>z%%~Ip?!xd+()Oc^cw}VaBT&?OVTx>pSDip1j(l`G~CSakZ)L zMb9m?D3$1rVtzs%uXr1_wvr!2TlK%8mArMB4BXlOKi0lFEUK^V8bv{+B&16~Lg{WqxsT#^cRWHvI|Q@%(^JM?>TV1HWMWUi*+xM2 z_P01m*T-xizdj(@_jZ;=Cdp!XCsZof6yau zdp_Z6l^yd+IA-vvrc2jnmLuU?%pA^e38K8VL{J-lxiScIHisKoSXkPB^Gm_W;fS$$ zsqmQ>8#|$oSF3d9HXwW^aGit9W6$LAxRIK-w-At(N459?>aA6NX9vjbA_)2X%{8(o z`(|$UYVH)1=?6B$8>U25Pahx{&1%r_asK9NetpWe@-yhu2DFeeK<6m<%#2^(x*u|> zb$3VFLwxd&7C*JY`1{oUgF`C2iF!^Dttk{7D@)v5j~LSJGgL`GDDC=DD^--H`8t|s zSaE)@R|v+10QiS72M0qw30p2ApR6B=kkH%s0H_1*3~th86A!!Vj40_Bk7SAvelch_$eHQ~m3Mg~y#v;GEMYySh6v-X*j}TqS`+FcF zJpj#Pzk(iMvD9Kf+mh%8w7NYbe4*^oP{BhGx$H8DoS2ksi6PxHRDEwM-IUBg5t2MhUWL`aL zLwx;OkV|LF^^v3zdXxM)bBDV7C(cF*mUAN|iMSKN^p(#u`yStW*kL?L=7475;Pm@@ z3;?#ssuP9ub8{qF9AK<>DKfmY^I4?LRgbpjjp#I4wTsJX+|do~1lgp+FD3n3=P#34 zahw4e;B)_AtwQs14SMy%l!X!(%X4OIfbWf3^9r2GHsiE) zYu3|G|2S*+W<0HsOd(&RGP%qWy6Aw;kC9=c`{f-20|PDvaWw?FV_CD}!0+pcT#L8w zTa%l3|Nahvd`C6Ki+gvZnE8!^+ZX2Sb*e2&Jt5}uis8cxe1#niL)hy#CU8&LcDI`l^`YY&o4l4J?@gr9lE7G-Puo)5{(Qt&Tc*i84scuNhf%Fx6V=4~I`Je1faSJ!bOeEjCTQ5FA~5^Iz;hO8Uw;)T>3v^_u`1}g z&<1+t-o1O*$}ProSL+1Wa8sSJuoeYhU<1NDuUh`(MfLXf3g)NN(dFkZI$;87V8)SLwdvf=+e`U$0nd=^2NQ@w}Coh4pagwLxn_3r((jQXE%` zj~lfcSJAxRVFTIoxHq-G2_w77u;uQ{ECIX+vc5+)Kls!B!y1L#G@=rxYRevca_i5I4^P{hw z$;7r)rh&$f({caOk!n@n{vy&{(R%FzzRr2X1A!iQnPKyJK~K3plmM1oSuAe@7fE$S zC8TIt0^9GBWd7nSDJ|8hHou?2Z=aW&`;G~u2c*KHZhAmN-97(pEk?THwe7*MD&?rL zF+*jzDJSXYhLKLa47|8Tj3;eJ#WH?39FEsN;{wgk?8K}6tZjZho8C}hP&uK7FhSDY z@ZP5y8urH58WyVb(UkVG46b^-6y~FWfBVWx*vZ+;wx_9~`Q=w)LUm*my4^g6X5q@O zSuuH4RSZC7R8Q@iO7Vb?j*9u&si-_AVXeIQxog$QS-%$~T&T73Ym!givM^<%|MrZ- zy0*VC9XN{2{n$tO+Ghf9u28|?`#>25#>C4*i5ni2IBRH*uT@=@CuoU56>0*2rAbLi zG(OF!kdCzFri&vWJ{S|PWj7U=usHBaKLE+^5<=CxB=}Xq%UJ@eJvSFat${-dU+>G& zK}>Xs*Y?Ys2^9`c0~0;E6@_5zSu#2n;xeCwh?31U4Gnss&%R}Yd}~62-P#ZvlYl_* z)D+#p0e6~MW3)D_q^70-8(Z_%lz;TeNx;VDw2;rYi}&L^*ulk*&RBKT`;H)8HmZ@m z5H8jW2Rd%3^&N``6F}}X2ee&h0g~DWFb=DsOd%p-;-!7BKik_D>qA+hXDf-k{QS5% zhd|*!>(MimZ`IY5;#b8MqGzL8K0X+I zLwyV9pox2=z~<{G&`gp1%t6f9_+{jxlB?@}kS@1B#6wO=VGcfVrOoi@^h*44cj~Br z7rDfVU0v;WgbcfHj^oeDqbYG%TmprL4LS;Nb3S~`#1!m0T*@dQ0N>FDOO8bWr=Q4a z-XFOiq2?EqVib@TLm@CSGouVTHKC)Uo12@f1GW4asH@I*n@4psF0k-z>NOYWDQJn; z5B$p^l%v6KH}PCa3CplDrN3XXqH#xfr{%&yQSsY{hVX(4Z`Y@(0!1A=q_x`W0wJy? zO5s123Vg)`sdS+-=6NOMY^FCY#3dzI@(jxQ?3ia~0Z*R|+rg#D3}$D8n@&5}J90^b zgYkpf?=?3|RWlvk2VHO@eiA#B`*Vnc*xp|`B`7;i@^!5D*{pO}d+gkhwy=K@8e?MAGy<@u*D|d`Jt?(m} zQt+oDT|7hcvzUek(^$$K({t>reIu|O)F59%!oz#RS%x<{PExq2E~5Pqx68}F^A;F@ zu_x;pT3<79bU2@WuSyG0nEQCFF$Z;cpw_i#}=(`$qwU7kRVL8q~1ZpWIQ zohY(u=lj*=bqE!u!-nwoVMeU`A ze2QBX%(4pgkRudg3$>W^AdK&m(QJ~DmKK+GWX5i5G@{o_mN5;Ad5hR0U-6X)c-QhS zcNhu%-dKMU3DvJM9b?G~+%u+-@G)kq(!LGnorG?ZhT(bc7pt*T3{KF|ucOalGA;F0 z4LcKnE$zi3>Au(Px7RJ4-q1AAU9Y$Ir=?JF!8hKpC+lNhEtKfN>pIfpkj$PTtChUF z!W0!AuKdDAJu*DpFFa}e)#2=Xv*HME#1BG2Z1lKk83Tw-xr%2k_084v(a~Lq!!~`k z{L2sP>uKwrPCG%0)ion(KG*41b%eM*f<9##<|7Oo0*Q5Xye?;}H7rjl(_&_&WtHq- zKNdk!c79vZCNA*SKjrZs5VMM${WZrVF|VfP`Js%JCSE=>=(dDvQSjDQ;!S4%L}6S;I<3bUtc4C;lY_Z}DVls5J5$kVegAQulCoP{YF zR1%}z@X$iebc);pG)#!8vaYb-?#-tC(Fra=ECVyk zP_4*FSbwkla>FLcuhCH%*7Q#W3>j}_)xf0n-ud)*ohx`XvnLOiREu-qAxkboI=r4wW$qS@eQMedm7x?Hi|ORzebLK_tz{4pTbR{fpOBTMuu;o+)4S~f zx^r85V&kVVU}Nd=mvQlS>6wpc1izG)Hcu!mWnT)sI{VzzWFnC(AC36_MBgo7n0|dX#iF6R@u6 za>%nC%ScDZoh!J7OABlfx7O6uIj2hEnwi-9AdOh+O=_Q(=J_>qLM2-z4zbzbBhb^s zuPiKijk=)$LvZG&!kcy4O~a`ei_StUx}wcMYVWLBk@P=1l%Hz+-*!t;U2e(QZpS|1 z_F#pzWP~d}C6{CYS4j*VUT=3I_420%TLT#a(v#ykooQ#f?=vf9WZOwguC%aUe-Bp{ zfxrce!l^Oy2pMwUy2w+(+1HaQzfwTjbDS29m>4%q(sTWjtOi(H(X@Qbz)YEsq-wnx zm}_QJE@h)5h*&=M?(IK-jPK*~TLs)jzcMKte%e`88REnc+lgpf~WHtDzXa7Pqg)uJzoRQ&QXWTmz1-pl6t)rtU;GqH^*mXU5S*ylQ`nM`a`?j;Q zu_IPCFNuLc@ac%yk7dSpb~LM+hk(pnBU0F_kj2v)q|W(3n<0^SQi$x;Z(_(%r7}5& z@dW3zu3mA3viM(f)?1K}hOn5dhIsU(?iFf1;{0BM2CJTEtqW;x%urxd>F;;dsju(f z@uDkQS({D<(>Fcmz>vn9#-IOQ&2Q~RqZt^mvfw}GO10S}TXE78_-=8wa?bYvk_TKm z1dmdhc+KbzGhNZ(s>|N~Fzfnqj*f#T5x(!lcas?YKKwK{)Jlt2u-eY{$)0S9^9#iA ztki!&YoJnHbwJbV9YRt^*~ZJ338Jq|k>JKk14~aWJORx|99O>5Kca zX3_v83vtMvst<#{e!`j|cAy!+23vZr$uzj#4D9eg*;B^pU5b5S?&>L#3-7aI^!FWH zh2uodz^+rqN;t?Lz>QkFD}vdu@6gw0;_8ZE$}_4|G&v>56oXYEy<+zTwd@kRlRJB~ z>yQs4qzMjBUE8grThDU%F4vUmrqk`Yz5G4t3oW=vV{Z|oKTdRu%Q$W%m-{RUHPJ)& z#r;m8mM%zzaX~%}J;|F~v9gNwVk0Ayi*?_>$|-w75MiRbH#R1V%je-VJ-B`gbVM~p zwi65cVjy;~ZmDaLE+o}${szyN42O|)tq+ePrU7`={~A+N<0co|rdXx73Ouho@Mo=Z zV#N4z2WJ~+XmYZTm3pSY;8ly6FNTyG_MNl@6582ip>5r(_IqGVBfofhmf2`K28Bp!%MisrGZ$Y)WyaWO;&^ zE-sbC?~YXFu$FxA(6m^~EZU=4PW-u1)92Fv&w4P^)tI};b|u9SAHD#cCk`A8#lyyt zl#d1AasXVl>AbvOU+;|AS~OFJuPox|d3hrrE5kaLUG}RE*PSMXit08`jF}%ipEthq zR$Ek3kbok<@TKM(B<&*D+DyOP5+aRGppq~8+?GIY0X(aEVtMX3*`KvV0ZinAoKW~58~{(-mM#MJZo=c%1+Vw4U$ zjFd5lGq%2V*U{$Rx|Z)_Ty&-ut_7nEnAKm)nAq>wdJ4Hdr~-ZK#z5EQrJ+Yk^#O}p zi8;*lrjuJGgcSnND<`ao0wLb*xgcv%N!j$UL7bj1y)f}r;W=IbEKAiz#Bt+2^Rr$> zWWutV)qdGQ{3);b#~H7|7qOI^-ou50DXck?0dq7Iu}l!AhGfk<^tIy zr-h`y&vRxC<(GdTw~QUiXX=qx%^J1s$oJJ1hCfiC;A2TnqR$<*RGpca!wS|3i`?JW z+{tj>GZp88qVK5C`4GCU{_xbym40?}?Rt2|+Dup|o)`I3I7zjW7NS!hD^Sw31J4MZ z=Xq%AD~0v$ZQOPHJ?GB6Jk~I`T|}kTS!`jqD(;SbJFm*qk_TV1G=fY>t^CBiTfqw1 zIXg&dszp3(SO2Kv{$!x+nfJUibxKs)@2<``ESF33!lL+$BvsaIFc%Mdk6vm$B!!)F zhmzxdtGX(e^=S;ggGskSVo|j-Nj2j%edgtFb?wSd7ueB}Jvo-X$i|KM`$`h_HxJt_ zAO-_7$IfQPt}YLmD$RW$xiQ5<`n<$eoJ5^D@u59gRYyWEhe^l`y1ihv}wj zYASY<@v>|p>kg)-#D19GSBB?7i!NP=x*Hui2i9+n1Fbj7e(&Sh_DrA9m<@)C zVTb0uB3gIaTs`a)50UlZhE%%`YvA&^gPcI&YhrFIAH>n?U$dsto&YEAwh)>5dGkl*zV9OGz(i)=YR)6ZkH4Q^ zD2NBrB(5R~(khe~1<W44MNKL>IKfzICBcpw&H zO%*%HV3nbFZV<-!W4)c<==vv)#W07WPL2bvR#49x7F8h_W}iWRFD!3`#IkCoLs;LT zX!aLsjbr~wibKusZyE1QiSnRvBn_k3V9Yx}z+H-s>ItA~*tveF<~TEGEZBV@lr&Jz zE>?ax>%bIx%ONGvT2!d%x?tL3w{j=FT6Av4|4x{Ru`Y2a7jI;B)1Oh#32Ll&*c>zl zTq);k?0HppEbiWlbiK0jYj)*G?SAe^y1uXCiwatexHUKL6n-U{n^5D;UXb5ZuaW3n zZ#N;e6LI<|!}Co1s7ZRnd^eZB!3RTVW(NH^P*-lmtBqC+9$9q(Gc5|~5eVXLOI+(- z7HW>kWz3JJrTi*A~&vZ>6tC)MiPbaFOW-XFK z*ZJF*+rh&G(Ld0<)&|99s!geLpi83^pWT!0ZVCT8Yg7=jxt-EZFKx-{dhv!?mpEJK0eohLn-n$s_ zx=h;E_n*Ulpz2(=S*A<_^x(VnL}GsmkUkdpFa&iiS~{E(De2$#*l)WzBb7LtmBppn z%qyd9+kV4V$SD9D(>DW+Bh^cex4UB+`d@%w(g{4va^h7rq@_xMx0h`Y3Y5b|*&`3G z7!nyH3L;EMS1hd54HI~5bV!WUqc~+OL2m&Vlnp$oeeKU9v1F*g!*@iydYVWvy%Mec z7NThYT~`EV7`3uWl{>i%BXzbWF9Iv+C1CF$I>31v$}&{- zUi_ni|0o_$%kZO=_b zy}ar9F!G1?%Qr)8&$jdkHNn%8mS#vQ2Cn$QEoC?ZFKO4ZyKT`N-opp75%10JRKuMc zGCg_}SPCJ(MkeJf)5BU@ELQIqeQY`NK*uDX`ocVHHo0Vzsp`+BmI6tqwBGFCX0wSp zaE4NP$Ps{O89yFg;5kc27noNL4a4EsVHAAWzUanjYk2o?xOD8?44W@_&dZwy6Nzgt zyr_iydO0#lr1opn;;k25Uk$~{hgx1AfmN+2&J zwifhm)_wR`)TDgpY3KddUhDc|qV@J2?YCCw4~^dTmq593_h94=lNxWN86V;BJjC}- zv1S-*0MR~za$zE#y+H(H0t$_ny3mzdITxv=T)enB$G$la420c?R=<;H;HMj>dgfcp z=j`N&m1XZwDKx6;==mWfXIhdq`KySo;zR?Iv^?vI60&WgCPm?oj?Zr=Ce2CYKkUrW zQk??E2{f@sCaDSnIbZmjiL?gTz`m?0F(fb$df0Ud2~&F^RAP^hoXd)G@@M_sjxeD& zT>_kg5r;xx;J{pBpghn6cKboGA9?rF$wls;$o;X|WfC)cAh$7HoTlNTH9pq@jhCbL zO0#B=6wUrr{yAmMtl1A?`vz=majhg&A|o<_q@T~^1<)eu6^@Tgh4n6&%X@2tW-+J7 zM~8xk9rLVcmAxh3a`>&>cDc&0*_Y8nqJa#}P_`smy2$ySRl%=c6b$rY_NVo;7h$rW zWa*s0vgY9v^3cazg-yvmc_T<<*7@whT6`*Ik@HKM)_}K?t#e_U+n+h()Y|J?B?kw4 zUaF2q)>3i;V!#fvV5xnPtqQQKs{NU3Fc(v)kP- zy}Xl?lQI?`veIK5-(}{I@Jj3ioCnVhsekly8;yBb1rocee);OIw`&({h zA}lK%o`A>ic_4r%CdEKbpUnxe*)_TOr5bShIiv5$TeitCbU3(YyJOh{$drM*!;!dg z@D?IN1JM>i1OsjndYB2egv5xUL0#BdzL=ZG(XyLxl`>Y{bYH@ut?cKyVtK|yzs+KI zJHemwBj4na^=Fq|>#n~q5k-DDb+C}0)!XP_+m_vy+ywU;jt(pt7zh+_`M<%(Nf?<# zveHXB76a)~HcDDH!LU6lyh+Jf2ltwlMziE#AJgxYd&H?RYjo(T*rsh*kjB#fokF1_ zl0|J^+_tvor)8C5T7@}0A^BmAU$R~+@=`KA6Ul12EpfN&R%5>ZC!>~cA@aPc%%NP<+)Tqu&@h{)rXk#`4XpZ~ zG6AB6*Ws);4}X{lx69go=W}y;Ty3&AS|&Rt&hd6FKQqnT*N`_Sd=I0gBc7<3?lT}; z_Q(&5h&2;jZRXWT2EVL8?Jt~#Z)+2q`-o-g>BYXG(98NR4c=sqoq~K0WK96-E2n%uOzN!WX^&k^X!gD2MTZtNuB;PBFKBl(cI z7a8aG#Z$5M8E9-ean`!U#L?2HX6T*hBq}*l&4~??7@`hL!@I)0MJYMD`6p)U!(Hpn zHT!M&$}m$&3zoV}5zmisHC#-JDa0Sjg*{+le1likar_d$j zhW-=Z958X$`04u%HsQDK$cZ<+A2So{1X8<9G*>I!+%?_fy56g=?|ys}6A+vSEl)9$ zXijUn=Hw}Q-^+pD)F4K>H~d{5Ll(ut)P9lr@=FrZE^Q{jbwPQe+T1*R_4n7IxCibY;G(h zecHc&+(nRb=BpP!=x8tYK!K^QrG*ph1+x@)J~di>IH;yPm;D5tpC(xf3_$W1TDTnk zKI|J-8^oVLB`ml-P}?CHJpw`9awPD^^^Y+{@D;wzree2&t4kTB@Jye;&6Ov>5U|2c zr?d0zrd^{0&o?(!H-$a*1E@tPrUgew_%3Jqp?s_v27Dv&no|c!JQMYcZF}dr@WK>M zN0Zgm^*_{<=ACo0c@cN|7^Es+MCah zp6;~dey4ASu%A#`FK%zkY4g@CeXLvteP(WUT4He;@!+GsI%i5=uDw!esSMOj&v=wF z&>`GHUud9tKr!vBkWQ=s|8XnzejDF6ve&OA*#q5=Wz5g~YRwaoCB;uy)XkXCRxO0k zlv!XF8#?Ts`@0f;+19M8+(Jjq*1E(JUe;OUA3=2A|F!L_iJZL@C;~B3p+?HE>UMl5 zqAM}AFIOhcbU(MR4M$E`wN&!{f}1eZTJ<>GiZX7?@Y%NtUYa^sga`uEv6k-m;gW>B zQw}(X#!aQG%)vk<_pGbN+HNDSl0#b6149#b=p;CF=?joU0D=*gkq9beG7JRk+Ddp9 zPlV|44Nx|$`|&@QCn7lorJZ(!OM-HGXCwFc>$n`8kd-U$W{bg`KQ=s*5=--w5~rkfKj+tU6z|c{m}2LqGxLk;GL|i)RvYBsGY4ck7gAt z3aYE+$Ms~+!VPYiq8ov$`MWZp+>tb|zd5vznz|nck=Kh_*?tZbVq%hO15cL|uq-F2 zlw^B5Hdt88vQ0g)tJ+&HX9q72n}_#6meN>fAnSFvz%}x>N6%l+CIjU)(Xp^BAome* z*^Z#_L1u#V)4@@|k9S5*&OiGZ%9G9;6K_oK$XM>BRgI$p>(KPCc);Ze4dwRgoUo#w`0_dao+|c1_0^h8J4&a zMU#<{L4n@~()prxb{wevk2FBly$w)aplj*2+N}X%0FOoO$tTl|jvA`D@{>fyzV{K+ z%b-ojcqT5!q)J6k0z-cl_~A4F=+{u-de;fGe$5e>k6OSt1?>Ue_?pe zOhiwtWSmA!Mg{?e8IXJ10+pe}5bsM%xmm6~z^uR)cwjY{-lfFREUlsOYpT3<}QC;2he5T2~GA;WKBt*8dX0fD%+$;VK+dmTpC2o8&BtTEz0C{u4%TwUidaLE{QQaJH+;m)?9p0Mw zYJxs2hMcJ{Vc|CX8)us>{d~t?+w%MQn{~AE!DcYU`%5*`3JeJzau@0pMk3Eag^aDo z2O>Tu<*O$_VL0pPSq4uwB5K<_R2SyUnYk@tk#tsIRiI%g#wBZV_YzUyJtLK`hZ78j zAJ!=;1F4w()jg1R_DDHLD_Vjl=5hx6z=gZFchBXbT*C z?kXX2j$ggjG3Z4Gd`+Le*`jl}T6uYW)uQISzq$_Wi?sO*ud~$@h`s$?V?cFd)vw<} zk8>5y`rAW2;1ZxNV@uQNmO~1?qQZMqt-m-jk;lNb=ii0M2vX*k6n+5ySbx7}WxRPh zv0O$2VuQS(+25K(CI$Yk6Y@cx!5Ny#&m`*3UYD3OKD7MX%5y=%)r6GO{)EVK;8~r> zRCxVW!xKN`x^3TZUt2Y(w`o@uBwuFs)yU?+5i2w;=lI$BH8IVYdVPZm>ua_o8Xwka z4p|E!`etzv-Rliu*9f{l(cHa;Ump>SSF!?||$ zm-q(|%I9dj0D)FR?LAhkz~ndxJjz+PXZ-;SZWwx?N5d?aY}dessihXlG?kRGm)pL` zpg%gOmM+_jR)vQ*MN!c+_W;DpMd?f%$x{WVxq44*A5d{{V!Zo%kg zH@lZT5_S$bOJ#A)@$rTHcd6aI=#)~j=Ne$3IeaJb@bFO0$IsAk4l_Gr<3AT17)Ukf zj-Is8PUd4TR1l%WI9yY+n7b?n6>qXP?Baps86K3m#h)?jV0~MVC(4xpH|(FmUc%%G z%uCjY^B5%dh!PwvyT?9iK25{x6fF{*oKCvmx61zWraFl7GRdqAc+ar2Yirws-4b6& zuaM8JCcgrdp#NqmP!X@Z;`y(*fFGGcuCkX6X=!PojW-&o4fYNUh%W9gI(eP8%A&%$;qb!yh$_lO@3@N^tnY8j>bfj_aP>AiZUYpurloTg+Rjt!2qUrrR5WI^Vw`LD{rbnUm-VWdwZe_wb_G ztlx6fo5kUyDJnJK6WBjIppmK?b~m^tJ$w68Z|{vMm^oeVN5MlP}0Ohd$KA7ES!Xf#ccN# z2nj&S8^oj|Bl?0$R81{s58vqX+Kz4lxKXqfdrDLfOY`!D^$YKh}oG6Go0DdM9W(WYZ?=3)5-9PjDn4Ijg16_BSwy&$Q z`TZ2TQ*hG+CJv?4238{{l`O-W8rYM`LEi-Lo=+W;O+tX_Qku=;36Gk{-E3 z3v#g!v3q2{SAgse!Qb`2L%M%)C3-xniGpg1UhZ|;O?`_vIq?AWQa(Pu88^7fjQhC3 zo!jr64Kx{k7fYtyZUG3*1K`=!NdwNRza6+k6gk6jUL3_fU~k%c5wIU+q^_Z1BJ~nK zKE7u0^Q`DuX$;6jd^H|V?sS{0PgSbSvhw`)@ln)|Kbz#{p9G{u#Ye-*|6s+hxf4eH z*z*$OXYy-JHWM4AvFoh<1h$>O2sH9Xtv(BnbTfSa*iq=-{8CQ8+<5oqbmRu=@oIDE z3ybAp1>=D$HyO6f{ZoImfr@8jzro|9BOC-ol40-_*u7q9*qr{m^i3Q@B|btLKn%YI z-dr!Pt$bwBtUnr2(rNPI0zmBdohEZ$%Q&c;;1m?>Ev;GI>2Tsx(^ML4lM zE@vuHFRK@8R<|(#DE%07sx7Ew>P2nSto&?r0=`ZK!)rl(Tzz&X_Bz*7p*on*QKqfi zO{*X!u0!j-Xoa?T;@D6C==$C}I7Iq8-72rVIVTLn9sp$YcyM{?(zO)2n0}Y#%>Nm9 z4@}df1VlC>dkgYB-?A*|&7TuPp-kBa{O%jCP)_~Ya1LIZS)5q6KXO*i$LCyI8pQq@ zpi&R2fTq6$bB*u7f}X1iUq2T{qybco5(M^U@NuhPn_lG>I?VJ}i2H!PI>fUK$)ysd z&Z+1`8w5J!6@w=c(3;{UDpZpHpeG%+YJQ#Ybj}B;tBtECa(C`pv_oH;jlF&Lv^UTC z<9MT}X2knGJQ{sDIV*|g=EtJcB%6k_VZ-Z-C9t*3y~Hu^ceooojyo;xR6@XfMF$$_ZtK_x`CzoLF3LwU97N%zbfb zG?+Op{!Fgn{=jme)VRB8)G%sdk+TwsJA=pFHTu|3Nw3 z+}uaUfBiwSfuMguUR3x!Vr_oAgkV%!U)4rEmM5S!@H9Y>vX(0%ymzuVOQ+xHrZr=- zsfrp_4XjjTQ^zRfE&gnsPVC_HjTimT4!R3Y&PbG(L)Jai_1<8=?O8UR z3~?v4@j;4!bt2%m&Zq}m) zQeVqD7_R9QJ_7q`d{qJ9QV_(*PPPW#>@5RsYizH3W%G${t=;4cIXO%+GBRLrtL-Ma z9U8a!*;`JR@QWYQ9Y}&gsJ>s4Y*1X`Y-8O1SRsaK)g4l&`l`gwFq>kEV1w+#gR7an zUr#7)H@d4om5Gv6j*D%$KlwhYMG{XX&y>cC*uhzHZUlg^0gTw`pk zC{XQMbvc+Sy{JD4m7)J=h??*2Ao7pPz4>wCibh5>Xjmld1@-k_(iIng#2;`P;ONK! zoTRO}=8T-n6()U`z9)eH-1@0tWoxdt<@$V+NzAe*mdfh2l(h65jF%0x*nDyGJT+8` z%J{j8`(wR2YO+L(C(l9VXJcw~Mnktd6yO6YM6~wyDh+!OlvC=~eH~9LT9&rPa@>S* z=EO*mS@F<{`}ObNhKJiLw|z5d_Fpkzt zz!K8b(h3F6`b3pk6EK=(IyD%m`1x~+c7q!Wg@A)-Y3QG73)qlwWq7YSNZufeGo zi~IGm=AMU9>}g$#p{kcU;vg-JKtNDyv&v=c9s}`zX8&PSSN+*q2JooS7D6c;7P=`M zMN4f1E~e)#f91(|iDo1Hw>UsBH`(OPg9^Z7Vqz%8{ZdgXCsx_sYh^Z(;l0HoujadL zH<5|TxG}oS%tx-1k6cx4k+yZy3LdJ$RbD~r%nv}N%K^jtEP#)xix`2}4V-l@tZ1?n zNB1`|^m4!i0Nsu})}8YXi&JjdicpkO8I8lotO+DLW}JJdn$9;$(MCr{_ZEWjvX9+U z*bRI-;yCo{QA#thP}g;^gmr2xaRBedv@hX_)vH}V$QD6xiFj-+pdk49zy(oe08aV% z7|kbuKRv9X_7lf5uJYf+C(h9W=~AHhgT?-3xr@X@Lz9Pha4KcT1b_(hKkA#?&ALp# zbbxOEsDuEgl~tR6d&wR)v`A;l1V)!?p)&*Q=H)?3>zz+|c|m|_`YtmwldIV1&6^&S zKnJzg!YwpFw?^nu}5jkd3dZOs~#0*I}-y4Y0Gl}`(7y%$z z`1&kMG;af_zO&gS7oDq=7&j{Hz4U#+IGA+-<}kJ@N(|6p*DW_O-h6nMwd;p?HJ1 z?*cPJ(z17Vr}ZWP4QM53H+rxE@5Lckl&7gw%tz#Z zB#Pc-)FHOXX$d0Z*N%U>eF-j=@SsNY$O!65?82Q1Bkmsk!ab{WHjb z&**V_eT0D9!yeOdPohe%X_`YquKnAwblfad#g6%vz8^X< zMQ6ssONve_`0y4jWwdEJ8SB6L%*X_6j9asf z$oK1P;C+dVjD%MpN0d1BlPdi}fVc>I;}-Xj&^qP80XSzCuYkZIQ2jtrNR87O(Lh#m zH8+e}_)1L~#2;Wf?EJ52K@Ah6=54IhOiuEO0odA;7r#ou1j6r{{Hn$b{@CS!=hl~O z9mUln(~LwA_Jk{o+Nc-4J>DG0o3CSy0{R1+MQ(Facw#?*V>Mjw;O{SXe0I#8#lk&b#24(=N_4=!R8|!+hjga5etIrUy^`(Hp$yXp|Ve$X7|r!Ie1__ zuj{g5U=4-AC1nf8cjRl&F6aHP27qs3&G1>`gM%mbw1G36Ah|5F&ymLGQ4y?NC9qaMpJ}+GJLSa5 zT8$@O9lHqD2X2YI#o^ZHNAv<$=UK-u=hH^)7*#+9I!!+N&$s)wimz|oAg_Om?$;cH zkmn^&%|{9?j!uNz6qSm!`6XBRe=ovF&(SjpBo1Hy25sa>kwNJAxZ9Aze0S?GuOgV_ z_7=BC^KZ^Poc@twZxCA)juDUi9*dI@p#nquxDkY3$~8x%*0*{%Uq7@%inFTBcs-#}c@sdduaJmZ4z{ z73`aKld15y-{mF#AlM1PE2}moR-4_mRu@uR=&*CTSt=)52|NbEE{3rtEE4(*ndd{*+K9)R3DA5x=d}!=G4nDZBt}S^Vd_Ufp*9bgax3h2% z`f_mKf~{PHXI-&3Rh zk-SLk`1e26BTNL$Cq!>PPzHyspy7ar@V}jjyE89rMf<=QwAM1c3m(tk1NPz5oqv8Z zCUe+FJqt9nB(hNRE_7QkRBNYy4-&17o8iAssn_)P?9VMiuckSkE#0-F!K^;M6<2> z*MEa2DF0tiq|U3;mgvzVp;|mDVRI8T)E|EGczV74a^I0WP~CbanYDhlLETf7n(*y+ zdG!ukAW}0`CFZ%KkLCOKsk*;Geb7l6vux+~Ta2K8-5?s8cDLo87pqqUEQP}smdut= zpqeGj!ocujiCSkD$Rou5E>KWV0Gm}xm)HvfuF#g4{X_fcoLw_)e~RVxY0}oIXHTEH zlw|^qttL8pdbS;nDAHUa3*Wjp^`7jHu&{@h77#OeL_~Hx!pf zybR=~)mkrCIZ%ILIhZaqWMpcZH*IQVX=!tQgxDA@PE6;wF98ncQ+|G}%GT?K3VrBO zZT&P2M-T?^z{16r%%s8bUF$OdB>nmEx)+9Xfsj}q5I7`7x*U-a4tn9 zr9>0b!X8W9G6}Uf8rM(IlbzYp)~jttMP=nzH`iB>2nq86v0GkJQql%q7!!(1Rbl~4 zMu0P-{^$eOpo2Ua%wT3Q+?$? zi({y=fjLNY*R(%;pCvCkd4eTQ=612 z+wgxr&K=jf>)yNWTGnFKx4(D#4bSg+-~GG^2?>v+EF&&bsd~D)NqDOzK7-wb2$a-3 z$;rtgyLSC)a zaiC{5W}26qfp10k-@_}zLqm14XQk*p`HQ|=`wf1!e@r&czmfR^+xk@HU;&hano3Id zI4c`Kz2`x=45OkaB`JXbdW2P-#uxTqm`z5p{Xlw>BdfS!E?Ua61^KSC)YYjUo*q8- zFUGmAw5~QhJ|WN3WNu_DE|w*5VsUY4wp`ldTXfG3?2SCNou9I(l;GS=CbwCMeR*Nk zF?6jM;;7ZW+>})OdJ4NUV8Bm`=c7aN$RGCU-=3bIVSY-DjEET0Ik*_EHyonyuCqRt zBdef5M!5qf?{>bFgIic;EYq~Og&{w8bW2!Se|6x_y!2V@HORhmeSYO_05n}A`wp@{ zdehW@bw}N8{WO`q&>wp@=txZ3m5;l~UcU0n3-+d^E_xw{FTMJys=8X==)kYP9xn&K z%r^)@&N*E*&#FQt(^z?TW3bDiLJprlXoU)&b2;Dj+s5s(FPz_2nCC&rNq-uymI#+q z2^sG$rK2z_{3UqS%HG*!;e4#0puG*VT`IEuJlrYDckQ0@f8^#Ku9*SXM9(ytWI@<; zHZ5w&&)&BveeMyD^O(fh#rKd~E8zkcgPrSs2ZY3BlgCh^ONp%3w`rt-h35 z@k>^3Zb^&M4f_3en=~%MJ02p}2+Q6axlb*|EqXzH$U#}J^!1xce-V3mdn!j;c&?F5>YtLTtq~q5q85jxQSo3fDt5JVlAz7C9r4q zAiGO7w*010TAmGIKgpx1V_{e0!t7xi2rDdVfn>azZw@;HP1mVoQ;Ra zxqW{IQ+Hs^Sh+)K)nz!=>G1Ur5?q4v6oV|v!9APmK5}LAL|ug>hpgvPiK?nU}XT!Ba;`qUX2RCqXGQg8Sx;Qy3?3eI}h%u0py7&mWhc5f|&x|2d;KDyk#y!i1=XC-KzT}1tT3TAXN3KU*ym)b}c~h$( zsX}eRk&Cp=KR7u1>*nVZe^po0Kn-u$upwlMS;>#Y^(k#UAtK#XhE!rep-{qKzn-`` z#!vx|Xw$jIdEnL0R-FZnI$hty9E(jQufEgO*N+fNgO;2Ngmd?gZ>7C4?XTe*ktdVM zhd33zFQn$=XciV05+c5YiS0Kn(k*qJZGkDO`Bot?r5@N4=H)B8^uPp-Q5XF*N;BpT zt62w+W|w@Yzr*$><0sv4aMrnTBdh&|6+K$o zn%4K1uk5WakIz~iVqZh5Q@XQ7q7iTU{9$P*+M1T(iHIi}JUs)b(NTZ-=2MEJ;p9LMm?xaxRMRp&IujC8d=$qwQC>WUm!R>~{68`$I?C#}`wg~J?hd8j^3S7lnEzX7 z;9FJ?!Ynk+q;VL3FDH_7m;Z>a4aW>-;r|+R=RJnEkJ?W|Sh_Ts()A zP@ZCnO@}IOv+1>n9XQYm{lme1%L98ACK32+qw5DJ`)j75waAb3K{Du zFHf?zHa)AN;(We~fQvy^SqeQNk&!8SbbWFy#ZxL;!Lw|4A@+(A5W5|i?afm%-3w*R zH*!)Qc~yMZ$|i1fL?)fMyS|XIp6HP7dXi42(evv2m(Cn=nHsr(@Rz9_YhdPFwSp5i zUl#)q(6WAYf0ux7TLY38!rSFbSFaj$q#z#bK!^%@f$*r863_9DdXQQjV9X!-;K4_k zC&0j)Gx8x`r(6mU!Mj%@E<<-10iT|z4hIel3E8sUGsOF~X+MDP1P>CP^k+vFTL;;F zKDRO3TtV3+_}EO8mcIVbON~aGx_E^i+cIE*fJEisBE}~B$5L`+0uH*cnE8P?yh7_~ zf<*-2)W?n^(Qj?lB_$=rnyE;xw~VQhp|PYS04A|Ldrm=tnDJn@G6RQF{tG~4c9)uj z{KCtdo|GgMA26CN=PusV)RYHNb%*gzqur+iG;v)37*DZvYuAoIeR&=NX1N$%8`Dum z8(Mr}F)@^h_@?++9H~K`vTvV-CMfxZy}fEB$yrfP9nngkDcX?5z|@w`gLQy=aT&?Wo65OR}Tn>B;Y5$7SUDa zZUUieeHtzOUEHxxGD8?$^Zi|ll%UrHUJGpI(XJ3293I|DSnEQ5L3(y-YAUY*7sGM- z_lE~RwoST1rZGKGXVP+Nq>%u6onN?Fk$!Y}8cVM^y`()$0Jj3~+rMAx%DWgNs{rIp zDny{izb7pIzPH92p))V2vE0)$(jY`iNYR@!?c1EnA>eW`*z|~VoPYufgtt)#6I+HQ z4Yb7jIVtOITvF-OGVnT73iUJ~ z%=}Gw{%iX}yFt}+Q4%MR6^K}yWnP|TUH1L-o;`auaB=CWsRi`)_fO*z2;E?Xr2-BG z{>}uTS7No|JeQn-C)L~9+KTK3{qEeoOVm<;Kq!`-ku5WuO;4@!-+n+Ji;kp^2u8=! zj3F3`ii&FcZ`)7Q2)EhTX;@m`gBR~zKN8(+TFoZGJ}-;`W}1~6<6LG8flvnr1_&!e z!J>2G#BCy1pyrt#?=pddv;e!P6$`9D+8mzKQo$x{f7i#-eIng||M~wewf`3d@oH25 zk@WeW>i7TSOMAaTIY04~|F%)wZ(x9;jgh3nop-JAB=*-BINX*CZGC$2kLXA557)gf z?9g`tWm2&f%j1H>q0>FfOZnAB+`?*_c6QH<^Js&&;|O*rbw5$zR}2GnjbdA}2_|#3 zdC=e?Q9rk4nQqv;*@-$qjE%95U?zHX{QUi;tlAG-wLMFIKg%mcOBxxuMqo88ke+}7 zjj<2);p;2U3ybN*r)an937$zlv804jFZWF?dEnCQc-J&k0qF<;U{;#p9;l#FP*3Qq zDq$}&rMg`|?FV%OBAKTtYm24=4amEV!MEm+ulGlWlsB!ws6p=CDD2G@Pqa69FO3ooJ(%cV*T-Wg0#` z3G{6r#Gycq2bM!LbcMMq zVOx194+WQr#q_{PV`4MBQ8vFBB}R&!nHj_w37)WmZ)G-G+e@6EfBp6?c7_;R*b7V6 z_i&=APXCpD8SgxD-A2^s-o25ulsLPz%)Y*hDRwqCId2vT+U>l+%4o&9iX6^De_NeZ z9mG!uZ&S!HgFot!_w9Q%SVoLeV)II$!e3bTWZ@cvqs*Pa8*i9hh4wXRozE_xjqD&^ z*IXrphu8M0D4o##*H>S@d|9vEAb#y2cH&}dO^a^Y7VgKRq#+BU<{**Mzb>x5eEhf< zTK;6`>NL^q@Smr_0rr{Gc9?=X1c}(Zr~z9g*|Iuq$|0CdUEP>^#O0Nf}5IBBbQ?TDtPB<4*_dNI>2$_+=wLalFgcUm8{;yNoIPq7Ssd}N(yRZ`j#hV(w^pqDU!{ftWj8MOydJ8#Mz4$x;gQ} zI%R@vy%jsd>^K@8j4Cyye-_ac)^?O>g31wmqw&P54R2pvCZxUCTB5eY7dI>&u4`#M zz}*aDl@fd`g6oJhb9v2>Cze%$ef4>O6J3iQ;_NJM@beDld|SN-feXnqIDKe=dK|WL zI4^jmFDF*}l4V+)?m9cJ&XS+&WwYuo!FKz=@USK5Pt|kh9NL$C6c$b(w%&#Q~z9*UQrf-$c@LavGkNBbX8lcWZXMwzhUm&_l3y9=J`zHL09vkwTRe z^*GLr*@^^!YUS3DONfbyQSGrrK>>Q?a(;)yWZx;h=}&6lVY{7&`C;me;saP^)iY;o z!s=JdILalTFiJ0iX0A9(AVct7+V~bu@&s@pu!Z_|aY|}f4CjwOHXs>HL!S9jNX$yK zG+T{9enCO{>gqw>Ts!sY^Bf!;?J#)a79W5$>Df)hyLos`x-eL;F{RU|$1uPqRA|#5 zeFSO1qeZtS{}}Hn&u(bY1k~39U)n-U!G{lq^kSl8kAqe=8sa7F2F`$oct3Un|45SH z!7dN+2Z{9Gr&KX-~V}+ot|kAgr~|P$hs_X;sKAqf8UcBS}s(4UR?T;bf0Kl<&?To*2(jC{s~W8 B+(`fc literal 187746 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൭i9s%2?X)e=ELBq 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 L_0Hv(3@I?w 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