Expand description
A framework for building discrete-event simulations
Ixa is a framework designed to support the creation of large-scale discrete event simulations. The primary use case is the construction of agent-based models for disease transmission, but the approach is applicable in a wide array of circumstances.
The central object of an Ixa simulation is the Context
that is
responsible for managing all the behavior of the simulation. All of the
simulation-specific logic is embedded in modules that rely on the Context
for core services such as:
- Maintaining a notion of time for the simulation
- Scheduling events to occur at some point in the future and executing them at that time
- Holding module-specific data so that the module and other modules can access it
In practice, a simulation usually consists of a set of modules that work together to provide all of the functions of the simulation. For instance, For instance, a simple disease transmission model might consist of the following modules:
- A population loader that initializes the set of people represented by the simulation.
- An infection seeder that introduces the pathogen into the population.
- A disease progression manager that transitions infected people through stages of disease until recovery.
- A transmission manager that models the process of an infected person trying to infect susceptible people in the population.
Re-exports§
pub use context::Context;
pub use context::ExecutionPhase;
pub use context::IxaEvent;
pub use error::IxaError;
pub use global_properties::ContextGlobalPropertiesExt;
pub use global_properties::GlobalProperty;
pub use network::ContextNetworkExt;
pub use network::Edge;
pub use network::EdgeType;
pub use people::ContextPeopleExt;
pub use people::PersonCreatedEvent;
pub use people::PersonId;
pub use people::PersonProperty;
pub use people::PersonPropertyChangeEvent;
pub use random::ContextRandomExt;
pub use random::RngId;
pub use tabulator::Tabulator;
pub use report::ConfigReportOptions;
pub use report::ContextReportExt;
pub use report::Report;
pub use runner::run_with_args;
pub use runner::run_with_custom_args;
pub use runner::BaseArgs;
pub use log::disable_logging;
pub use log::enable_logging;
pub use log::set_log_level;
pub use log::set_module_filter;
pub use log::set_module_filters;
pub use ctor;
pub use paste;
pub use rand;
Modules§
- A manager for the state of a discrete-event simulation
- Provides
IxaError
and wraps other errors. - A generic mechanism for storing context-wide data.
- The
log
module defines an interface to Ixa’s internal logging facilities. Logging messages about internal behavior of Ixa. This is not to be confused with reporting, which is model-level concept for Ixa users to record data about running models. - A module for modeling contact networks.
- A generic mechanism for representing people and associated data.
- A priority queue that stores arbitrary data sorted by time and priority
Macros§
- Use this macro to define a unique report type
- Logs a message at the debug level.
- Defines a new type for storing data in Context.
- Defines a derived person property with the following parameters:
- Define a new edge type for use with
network
. - Defines a global property with the following parameters:
- Defines a person property with the following parameters:
- Defines a person property with the following parameters:
- Use this to define a unique type which will be used as a key to retrieve an independent rng instance when calling
.get_rng
. - Logs a message at the error level.
- Logs a message at the info level.
- Logs a message at the trace level.
- Logs a message at the warn level.
Enums§
- An enum representing the available verbosity level filters of the logger.
Traits§
- Provides API parity with
std::collections::HashMap
. - Provides API parity with
std::collections::HashSet
.
Type Aliases§
- Type alias for a hash map that uses the Fx hashing algorithm.
- Type alias for a hash set that uses the Fx hashing algorithm.