Controller¶
-
class
Controller.
Controller
[source]¶ Bases:
object
The MonteCarloController class is used to run a monte carlo simulation. It is used to execute multiple runs of a simulation with varying initial parameters. Data from each run is retained in order to analyze differences in the simulation runs and the parameters used.
-
addDispersion
(disp)[source]¶ Add a dispersion to the simulation. :param disp: Dispersion
The dispersion to add to the simulation.
-
addRetentionPolicy
(policy)[source]¶ Add a retention policy to the simulation. :param disp: RetentionPolicy
The retention policy to add to the simulation. This defines variables to be logged and saved
-
executeCallbacks
(rng=None, retentionPolicies=[])[source]¶ Execute retention policy callbacks after running a monteCarlo sim. rng: A list of simulations to execute callbacks on retentionPolicies: the retention policies to execute
-
executeSimulations
()[source]¶ Execute simulations in parallel Args: None :returns:
- int[]
A list of the indices of all failed simulation runs.
- Return type
failed
-
generateICSims
(caseList)[source]¶ Generator function to clone a baseSimulation for IC run :param baseSimulation: SimulationParams
A base simulation to clone.
- Parameters
numSims – int[] The desired runs to generate.
- Returns
- generator<SimulationParams>
A generator that yields that number of cloned simulations
-
generateSims
(simNumList)[source]¶ Generator function to clone a baseSimulation :param baseSimulation: SimulationParams
A base simulation to clone.
- Parameters
numSims – int[] The desired runs to generate.
- Returns
- generator<SimulationParams>
A generator that yields that number of cloned simulations
-
getParameters
(caseNumber)[source]¶ Get the parameters used for a particular run of the montecarlo :param caseNumber: int
The number of the run to get the parameters used for.
- Returns
A dictionary of the parameters of the simulation For example: {
”keyForSim”: parameterValue, ‘TaskList[0].TaskModels[0].RNGSeed’: 1674764759
}
-
getRetainedData
(case)[source]¶ Get the data that was retained for a run, or list of runs. :param cases: int The desired case to get data from.
- Returns
The retained data for that run is returned.
-
getRetainedDatas
(cases)[source]¶ Get the data that was retained for a list of runs. :param cases: int[] The desired cases to get data from.
- Returns
A generator is returned, which will yield, in-order, the retained data for each of these cases
-
static
load
(runDirectory)[source]¶ Load a previously completed MonteCarlo simulation :param The path to the MonteCarlo.data file that contains the archived MonteCarlo run:
-
reRunCases
(caseList)[source]¶ Rerun some cases from a MonteCarlo run. Does not run in parallel :param caseList: int[]
The list of runs to repeat, a list of numbers.
- Returns
- int[]
The list of failed runs.
- Return type
failures
-
runInitialConditions
(caseList)[source]¶ Run initial conditions given in a file :param caseList: int[]
The list of runs to repeat, a list of numbers.
- Returns
- int[]
The list of failed runs.
- Return type
failures
-
setArchiveDir
(dirName)[source]¶ Set-up archives for this MonteCarlo run :param dirName: string
The name of the directory to archive runs in. None, if no archive desired.
-
setConfigureFunction
(newModule)[source]¶ Set an execution function that executes a simulation instance. :param executionFunction: (sim: SimulationBaseClass) => None
A function with one parameter, a simulation instance. The function will be called after the creationFunction and configurationFunction in each simulation run. It must execute the simulation. Its return value is not used.
-
setDispMagnitudeFile
(magnitudes)[source]¶ Save .txt with the magnitude of each dispersion in % or sigma away from mean :param magnitudes: bool
Whether to save extra files for analysis.
-
setExecutionCount
(newCount)[source]¶ Set the number of runs for the MonteCarlo simulation :param newCount: int
The number of runs to use for the simulation
-
setExecutionFunction
(newModule)[source]¶ Set an execution function that executes a simulation instance. :param executionFunction: (sim: SimulationBaseClass) => None
A function with one parameter, a simulation instance. The function will be called after the creationFunction and configurationFunction in each simulation run. It must execute the simulation. Its return value is not used.
-
setICDir
(dirName)[source]¶ Set-up archives containing IC data :param dirName: string
The name of the directory to archive runs in. None, if no archive desired.
-
setICRunFlag
(bool)[source]¶ Set the number of threads to use for the monte carlo simulation :param threads: int
Number of threads to execute the montecarlo run on.
-
setShouldDisperseSeeds
(seedDisp)[source]¶ Disperse the RNG seeds of each run in the MonteCarlo :param seedDisp: bool
Whether to disperse the RNG seeds in each run of the simulation
-
setSimulationFunction
(newObject)[source]¶ Set the function that creates the simulation instance. :param creationFunction: () => SimulationBaseClass
A function with no parameters, that returns a simulation instance.
-
setThreadCount
(threads)[source]¶ Set the number of threads to use for the monte carlo simulation :param threads: int
Number of threads to execute the montecarlo run on.
-
-
class
Controller.
SimulationExecutor
[source]¶ Bases:
object
This class is used to execute a simulation in a worker thread. To use, create an instance of this class, and then call the instance with the simulation parameters to run them in.
executor = SimulationExecutor() simParams = SimulationParameters() successFlag = executor(simParams)
This class can be used to execute a simulation on a different thread, by using this class as the processes target.
-
static
disperseSeeds
(simInstance)[source]¶ disperses the RNG seeds of all the tasks in the sim, and returns a statement that contains the seeds :param simInstance: SimulationBaseClass
A basilisk simulation to set random seeds on
- Returns
- string
A dictionary with the random seeds that should be applied to the sim: Example: “” {
’.TaskList[0].TaskModels[1]’: 1934586, ‘.TaskList[0].TaskModels[2]’: 3450093, ‘.TaskList[1].TaskModels[0]’: 2221934, ‘.TaskList[2].TaskModels[0]’: 1123244
- Return type
statement
-
static
populateSeeds
(simInstance, modifications)[source]¶ only populate the RNG seeds of all the tasks in the sim :param simInstance: SimulationBaseClass
A basilisk simulation to set random seeds on
- Parameters
modifications – A dictionary containing RNGSeeds to be populate for the sim, among other sim modifications.
-
static
-
class
Controller.
SimulationParameters
(creationFunction, executionFunction, configureFunction, retentionPolicies, dispersions, shouldDisperseSeeds, shouldArchiveParameters, filename, icfilename, index=None, verbose=False, modifications={})[source]¶ Bases:
object
- This class represents the run parameters for a simulation, with information including
a function that creates the simulation
a function that executes the simulation
the dispersions to use on that simulation
parameters describing the data to be retained for a simulation
whether randomized seeds should be applied to the simulation
whether data should be archived