funman package¶
Subpackages¶
- funman.api package
- funman.model package
- Subpackages
- Submodules
- funman.model.bilayer module
- funman.model.decapode module
- funman.model.encoded module
- funman.model.ensemble module
- funman.model.gromet module
- funman.model.model module
- funman.model.petrinet module
AbstractPetriNetModel
GeneratedPetriNetModel
GeneratedPetriNetModel.petrinet
GeneratedPetriNetModel.abstract()
GeneratedPetriNetModel.contract_parameters()
GeneratedPetriNetModel.default_encoder()
GeneratedPetriNetModel.formulate_bounds()
GeneratedPetriNetModel.is_timed_observable()
GeneratedPetriNetModel.model_post_init()
GeneratedPetriNetModel.observable_expression()
GeneratedPetriNetModel.observables()
GeneratedPetriNetModel.stratified_parameter_id()
GeneratedPetriNetModel.stratified_state_id()
GeneratedPetriNetModel.stratified_trans_id()
GeneratedPetriNetModel.stratify()
GeneratedPetriNetModel.stratify_transition()
PetrinetDynamics
PetrinetModel
- funman.model.query module
- funman.model.regnet module
- funman.model.simulator module
- Module contents
- funman.representation package
- Submodules
- funman.representation.assumption module
- funman.representation.box module
Box
Box.bounds
Box.corner_points
Box.explanation
Box.label
Box.points
Box.schedule
Box.type
Box.add_point()
Box.advance()
Box.contains()
Box.contains_point()
Box.corners()
Box.current_step()
Box.equal()
Box.explain()
Box.false_points()
Box.finite()
Box.from_point()
Box.intersection()
Box.intersects()
Box.model_post_init()
Box.normalized_volume()
Box.normalized_width()
Box.point_entropy()
Box.project()
Box.split()
Box.symm_diff()
Box.timestep()
Box.true_points()
Box.variance()
Box.volume()
Box.width()
- funman.representation.constraint module
- funman.representation.encoding_schedule module
- funman.representation.explanation module
- funman.representation.interval module
Interval
Interval.closed_upper_bound
Interval.lb
Interval.normalized
Interval.original_width
Interval.ub
Interval.unnormalized_lb
Interval.unnormalized_ub
Interval.contains()
Interval.contains_value()
Interval.disjoint()
Interval.finite()
Interval.from_value()
Interval.intersection()
Interval.intersects()
Interval.is_point()
Interval.is_unbound()
Interval.meets()
Interval.midpoint()
Interval.normalize()
Interval.normalize_bounds()
Interval.normalized_width()
Interval.ser_wrap()
Interval.subtract()
Interval.union()
Interval.width()
- funman.representation.parameter module
- funman.representation.parameter_space module
ParameterSpace
ParameterSpace.false_boxes
ParameterSpace.num_dimensions
ParameterSpace.true_boxes
ParameterSpace.unknown_points
ParameterSpace.append_result()
ParameterSpace.boxes()
ParameterSpace.compare()
ParameterSpace.consistent()
ParameterSpace.construct_all_equal()
ParameterSpace.decode_labeled_object()
ParameterSpace.explain()
ParameterSpace.false_points()
ParameterSpace.intersection()
ParameterSpace.labeled_volume()
ParameterSpace.last_boxes()
ParameterSpace.max_true_volume()
ParameterSpace.outer_interval()
ParameterSpace.plot()
ParameterSpace.points()
ParameterSpace.project()
ParameterSpace.symmetric_difference()
ParameterSpace.true_points()
- funman.representation.representation module
- funman.representation.symbol module
- Module contents
- funman.scenario package
- Submodules
- funman.scenario.consistency module
- funman.scenario.parameter_synthesis module
- funman.scenario.scenario module
AnalysisScenario
AnalysisScenario.constraints
AnalysisScenario.empty_volume_ok
AnalysisScenario.model
AnalysisScenario.normalization_constant
AnalysisScenario.parameters
AnalysisScenario.query
AnalysisScenario.check_simulation()
AnalysisScenario.compute_observables()
AnalysisScenario.encode_timeseries_verification()
AnalysisScenario.get_kind()
AnalysisScenario.get_search()
AnalysisScenario.initialize()
AnalysisScenario.model_parameters()
AnalysisScenario.model_post_init()
AnalysisScenario.num_dimensions()
AnalysisScenario.num_timepoints()
AnalysisScenario.parameters_of_type()
AnalysisScenario.representable_space_volume()
AnalysisScenario.run_point_simulation()
AnalysisScenario.run_scenario_simulation()
AnalysisScenario.search_space_volume()
AnalysisScenario.simulate_scenario()
AnalysisScenario.simulation_tvects()
AnalysisScenario.solve()
AnalysisScenario.structure_parameter()
AnalysisScenario.structure_parameters()
AnalysisScenario.synthesized_model_parameters()
AnalysisScenario.synthesized_parameters()
AnalysisScenarioResult
AnalysisScenarioResultException
- funman.scenario.simulation module
- Module contents
- funman.search package
- Submodules
- funman.search.box_search module
- funman.search.search module
- funman.search.simulate module
- funman.search.simulator_check module
- funman.search.smt_check module
- Module contents
- funman.server package
- Submodules
- funman.server.exception module
- funman.server.query module
FunmanProgress
FunmanResults
FunmanResults.contracted_model
FunmanResults.done
FunmanResults.error
FunmanResults.error_message
FunmanResults.id
FunmanResults.model
FunmanResults.parameter_space
FunmanResults.progress
FunmanResults.request
FunmanResults.timing
FunmanResults.contract_model()
FunmanResults.dataframe()
FunmanResults.explain()
FunmanResults.finalize_result()
FunmanResults.finalize_result_as_error()
FunmanResults.is_final()
FunmanResults.model_post_init()
FunmanResults.plot()
FunmanResults.plot_trajectories()
FunmanResults.point_parameters()
FunmanResults.points()
FunmanResults.start()
FunmanResults.stop()
FunmanResults.symbol_timeseries()
FunmanResults.symbol_values()
FunmanResults.update_parameter_space()
FunmanResultsTiming
FunmanResultsTiming.additional_time
FunmanResultsTiming.encoding_time
FunmanResultsTiming.end_time
FunmanResultsTiming.progress_timeseries
FunmanResultsTiming.solver_time
FunmanResultsTiming.start_time
FunmanResultsTiming.total_time
FunmanResultsTiming.finalize()
FunmanResultsTiming.update_progress()
FunmanWorkRequest
FunmanWorkUnit
- funman.server.storage module
- funman.server.worker module
- Module contents
- funman.translate package
- Submodules
- funman.translate.bilayer module
- funman.translate.decapode module
- funman.translate.encoded module
- funman.translate.encoding module
- funman.translate.ensemble module
- funman.translate.gromet module
- funman.translate.petrinet module
- funman.translate.regnet module
- funman.translate.simplifier module
- funman.translate.translate module
DefaultEncoder
Encoder
Encoder.config
Encoder.box_to_smt()
Encoder.can_encode()
Encoder.encode_assumed_constraint()
Encoder.encode_assumption()
Encoder.encode_assumptions()
Encoder.encode_constraint()
Encoder.encode_init_layer()
Encoder.encode_linear_constraint()
Encoder.encode_model_layer()
Encoder.encode_model_timed()
Encoder.encode_parameter()
Encoder.encode_query_layer()
Encoder.encode_timeseries()
Encoder.encode_transition_layer()
Encoder.initialize_encodings()
Encoder.interval_to_smt()
Encoder.model_post_init()
Encoder.parameter_values()
Encoder.point_to_smt()
Encoder.set_step_substitutions()
Encoder.set_time_step_constraints()
Encoder.state_timepoint()
Encoder.step_size_index()
Encoder.substitutions()
Encoder.symbol_timeseries()
Encoder.symbol_values()
Encoder.time_step_constraints()
LayeredEncoding
- Module contents
- funman.utils package
- Submodules
- funman.utils.handlers module
- funman.utils.logging module
- funman.utils.math_utils module
- funman.utils.smtlib_utils module
- funman.utils.sympy_utils module
FUNMANFormulaManager
SympyBoundedSubstituter
SympySerializer
has_reserved()
rate_expr_to_pysmt()
replace_reserved()
series_approx()
substitute()
sympy_subs()
sympy_to_pysmt()
sympy_to_pysmt_abs()
sympy_to_pysmt_op()
sympy_to_pysmt_piecewise()
sympy_to_pysmt_pow()
sympy_to_pysmt_real()
sympy_to_pysmt_symbol()
to_sympy()
- Module contents
Submodules¶
funman.config module¶
This module defines the Funman class, the primary entry point for FUNMAN analysis.
- pydantic model funman.config.FUNMANConfig¶
Bases:
BaseModel
Base definition of a configuration object
Show JSON schema
{ "title": "FUNMANConfig", "description": "Base definition of a configuration object", "type": "object", "properties": { "tolerance": { "default": 0.001, "title": "Tolerance", "type": "number" }, "queue_timeout": { "default": 1, "title": "Queue Timeout", "type": "integer" }, "number_of_processes": { "default": 1, "title": "Number Of Processes", "type": "integer" }, "wait_timeout": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": null, "title": "Wait Timeout" }, "wait_action_timeout": { "default": 0.05, "title": "Wait Action Timeout", "type": "number" }, "solver": { "default": "dreal", "title": "Solver", "type": "string" }, "num_steps": { "default": 2, "title": "Num Steps", "type": "integer" }, "step_size": { "default": 1, "title": "Step Size", "type": "integer" }, "num_initial_boxes": { "default": 1, "title": "Num Initial Boxes", "type": "integer" }, "solver_timeout": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": null, "title": "Solver Timeout" }, "initial_state_tolerance": { "default": 0.0, "title": "Initial State Tolerance", "type": "number" }, "save_smtlib": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "title": "Save Smtlib" }, "dreal_precision": { "default": 0.1, "title": "Dreal Precision", "type": "number" }, "dreal_log_level": { "default": "off", "title": "Dreal Log Level", "type": "string" }, "constraint_noise": { "default": 0.0, "title": "Constraint Noise", "type": "number" }, "dreal_mcts": { "default": true, "title": "Dreal Mcts", "type": "boolean" }, "substitute_subformulas": { "default": false, "title": "Substitute Subformulas", "type": "boolean" }, "normalization_constant": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": null, "title": "Normalization Constant" }, "use_compartmental_constraints": { "default": false, "title": "Use Compartmental Constraints", "type": "boolean" }, "compartmental_constraint_noise": { "default": 0.01, "title": "Compartmental Constraint Noise", "type": "number" }, "normalize": { "default": false, "title": "Normalize", "type": "boolean" }, "simplify_query": { "default": false, "title": "Simplify Query", "type": "boolean" }, "series_approximation_threshold": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": null, "title": "Series Approximation Threshold" }, "profile": { "default": false, "title": "Profile", "type": "boolean" }, "taylor_series_order": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": null, "title": "Taylor Series Order" }, "corner_points": { "default": false, "title": "Corner Points", "type": "boolean" }, "verbosity": { "default": 40, "title": "Verbosity", "type": "integer" }, "use_transition_symbols": { "default": false, "title": "Use Transition Symbols", "type": "boolean" }, "uniform_box_splits": { "default": false, "title": "Uniform Box Splits", "type": "boolean" }, "dreal_prefer_parameters": { "default": [], "items": { "type": "string" }, "title": "Dreal Prefer Parameters", "type": "array" }, "point_based_evaluation": { "default": false, "title": "Point Based Evaluation", "type": "boolean" }, "prioritize_box_entropy": { "default": true, "title": "Prioritize Box Entropy", "type": "boolean" }, "mode": { "default": "mode_smt", "enum": [ "mode_smt", "mode_odeint" ], "title": "Mode", "type": "string" }, "random_seed": { "default": 0, "title": "Random Seed", "type": "integer" } } }
- Config:
arbitrary_types_allowed: bool = True
validate_default: bool = True
- Fields:
- Validators:
check_use_compartmental_constraints
»all fields
- field compartmental_constraint_noise: float = 0.01¶
Additional factor used to relax compartmental constraint (needed due to floating point imprecision)
- Validated by:
- field constraint_noise: float = 0.0¶
Use MCTS in dreal
- Validated by:
- field corner_points: bool = False¶
Compute Corner points of each box
- Validated by:
- field dreal_log_level: str = 'off'¶
Constraint noise term to relax constraints
- Validated by:
- field dreal_mcts: bool = True¶
Substitute subformulas to simplify overall encoding
- Validated by:
- field dreal_precision: float = 0.1¶
Precision delta for dreal solver
- Validated by:
- field dreal_prefer_parameters: List[str] = []¶
Prefer to split the listed parameters in dreal
- Validated by:
- field initial_state_tolerance: float = 0.0¶
Factor used to relax initial state values bounds
- Validated by:
- field mode: Literal['mode_smt', 'mode_odeint'] = 'mode_smt'¶
Mode to run FUNMAN, either funman.constants.MODE_ODEINT or funman.constants.MODE_SMT
- Validated by:
- field normalization_constant: float | None = None¶
Simplify query by propagating substutions
- Validated by:
- field normalize: bool = False¶
Normalization constant to use for normalization (attempt to compute if None)
- Validated by:
- field num_initial_boxes: int = 1¶
Number of initial boxes for BoxSearch
- Validated by:
- field num_steps: int = 2¶
Number of timesteps to encode
- Validated by:
- field number_of_processes: int = 1¶
Number of BoxSearch processes
- Validated by:
- field point_based_evaluation: bool = False¶
Evaluate parameters using point-based simulation over interval-based SMT encoding
- Validated by:
- field prioritize_box_entropy: bool = True¶
When comparing boxes, prefer those with low entropy
- Validated by:
- field profile: bool = False¶
Generate profiling output
- Validated by:
- field queue_timeout: int = 1¶
Multiprocessing queue timeout, used by BoxSearch
- Validated by:
- field random_seed: int = 0¶
Random seed
- Validated by:
- field save_smtlib: str | None = None¶
Whether to save each smt invocation as an SMTLib file
- Validated by:
- field series_approximation_threshold: float | None = None¶
Series approximation threshold for dropping series terms
- Validated by:
- field simplify_query: bool = False¶
Convert query object to a single formula based only on the parameters (deprecated)
- Validated by:
- field solver: str = 'dreal'¶
Name of pysmt solver to use
- Validated by:
- field solver_timeout: int | None = None¶
Number of seconds to allow each call to SMT solver
- Validated by:
- field step_size: int = 1¶
Step size for encoding
- Validated by:
- field substitute_subformulas: bool = False¶
Enforce compartmental variable constraints
- Validated by:
- field taylor_series_order: int | None = None¶
Use Taylor series of given order to approximate transition function, if None, then do not compute series
- Validated by:
- field tolerance: float = 0.001¶
Algorithm-specific tolerance for approximation, used by BoxSearch
- Validated by:
- field uniform_box_splits: bool = False¶
Uniformly split boxes in box search, instead of separating points in boxes
- Validated by:
- field use_compartmental_constraints: bool = False¶
Normalize scenarios prior to solving
- Validated by:
- field use_transition_symbols: bool = False¶
Use transition symbols in encoding transition functions
- Validated by:
- field verbosity: int = 40¶
Verbosity (INFO, DEBUG, TRACE, WARN, ERROR)
- Validated by:
- field wait_action_timeout: float = 0.05¶
Time to sleep proceses waiting for work
- Validated by:
- field wait_timeout: int | None = None¶
Timeout for BoxSearch procesess to wait for boxes to evaluate
- Validated by:
- validator check_use_compartmental_constraints » all fields¶
- model_post_init(context: Any, /) None ¶
This function is meant to behave like a BaseModel method to initialise private attributes.
It takes context as an argument since that’s what pydantic-core passes when calling it.
- Parameters:
self – The BaseModel instance.
context – The context.
funman.constants module¶
This module contains defintions of constants used within FUNMAN
funman.funman module¶
This module defines the Funman class, the primary entry point for FUNMAN analysis.
- class funman.funman.Funman¶
Bases:
object
The Funman FUNctional Model ANalysis class is the main entry point for performing analysis on models. The main entry point Funman.solve() performs analysis of an funman.scenario.AnalysisScenario, subject to a set of configuration options in the funman.search.SearchConfig class.
- solve(problem: AnalysisScenario, config: FUNMANConfig = None, haltEvent: Event | None = None, resultsCallback: Callable[[ParameterSpace], None] | None = None) AnalysisScenarioResult ¶
This method is the main entry point for Funman analysis. Its inputs describe an AnalysisScenario and SearchConfig that setup the problem and analysis technique. The return value is an AnalysisScenarioResult, which comprises all relevant output pertaining to the AnalysisScenario.
- Parameters:
problem (AnalysisScenario) – The problem is a description of the analysis to be performed, and typically describes a Model and a Query.
config (SearchConfig, optional) – The configuration for the search algorithm applied to analyze the problem, by default SearchConfig()
- Returns:
The resulting data, statistics, and other relevant information produced by the analysis.
- Return type:
Module contents¶
The funman package implements multiple simulator model analysis methods. Current methods include:
Simulation: running original simulator and querying the results.
Parameter Synthesis: Generating feasible values for model parameters.
Consistency: Check that a parameterized model is self-consistent.