repast4py.context module¶
Bases:
object
Encapsulates a population of agents on a single process rank.
A SharedContext may have one or more projections associated with it to impose a relational structure on the agents in the context. It also provides functionality for synchronizing agents across processes, moving agents from one process to another and managing any ghosting strategy.
- Parameters
comm (mpi4py.MPI.Intracomm) – the communicator used to communicate among SharedContexts in the distributed model
Adds the specified agent to this SharedContext.
The agent will also be added to any projections currently in this SharedContext
- Parameters
agent (_core.Agent) – the agent to add
Adds the specified projection to this SharedContext.
Any agents currently in this context will be added to the projection.
- Parameters
projection (repast4py.core.SharedProjection) – the projection add
Adds the specified value_layer to the this context.
- Parameters
value_layer (repast4py.value_layer.SharedValueLayer) – the value layer to add.
Gets the specified agent from the collection of local agents in this context.
- Parameters
agent_id – the unique id tuple of the agent to return
- Returns
The agent with the specified id or None if no such agent is found.
- Return type
_core.Agent
Examples
>>> ctx = SharedContext(comm) >>> # .. Agents Added >>> agent1 = ctx.agent((1, 0, 1))
Gets the agents in this SharedContext, optionally of the specified type, count or shuffled.
- Parameters
agent_type (int) – the type id of the agent, defaults to None.
count (int) – the number of agents to return, defaults to None, meaning return all the agents.
shuffle (bool) – whether or not the iteration order is shuffled. If true, the order is shuffled. If false, the iteration order is the order of insertion.
- Returns
An iterable over all the agents in the context. If the agent_type is not None then an iterable over agents of that type will be returned.
- Return type
iterable
Examples
>>> PERSON_AGENT_TYPE = 1 >>> for agent in ctx.agents(PERSON_AGENT_TYPE, shuffle=True): ...
Gets the named projection.
- Parameters
projection_name (str) – the name of the projection to get
- Returns
The named projection.
- Raises
KeyError – If the collection of projections in this SharedContext does not include the named projection.
- Return type
Gets the specified agent from the collection of ghost agents in this context.
- Parameters
agent_id – the unique id tuple of the agent to return
- Returns
The ghost agent with the specified id or None if no such agent is found.
- Return type
_core.Agent
Moves agents from this rank to another rank where it becomes a local agent.
The list of agents to move must be agents currently local to this rank. This performs a synchronize after moving the agents in order synchronize the new location of the agents. This is a collective operation and all ranks must call it, regardless of whether agents are being moved to or from that rank.
- Parameters
agents_to_move (List) – A list of tuples specifying agents to move and the rank to move the agent to. Each tuple must contain the agents unique id tuple and the rank, for example
((id, type, rank), rank_to_move_to)
.create_agent (Callable) – a Callable that can take the result of an agent :samp: save() and return an agent.
Removes the specified agent from this SharedContext
This agent is also removed from any projections associated with this SharedContext. If the agent is shared as a ghost on any other ranks it will be removed from those ranks during the next synchronization.
- Parameters
agent (_core.Agent) – the agent to remove.
Requests agents from other ranks to be copied to this rank as ghosts.
This is a collective operation and all ranks must call it, regardless of whether agents are being requested by that rank. The requested agents will be automatically added as ghosts to this rank.
- Parameters
requested_agents (List) – A list of tuples specifying requested agents and the rank to request from. Each tuple must contain the agents unique id tuple and the rank, for example
((id, type, rank), requested_rank)
.create_agent (Callable) – a Callable that can take the result of an agent
save()
and return an agent.
- Returns
The list of requested agents.
- Return type
List[_core.Agent]
Gets the number of local agents in this SharedContext, optionally by type.
- Parameters
agent_type_ids (List[int]) – a list of the agent type ids identifying the agent types to count. If this is None then the total size is returned with an agent type id of -1.
- Returns
A dictionary containing the counts (the dict values) by agent type (the dict keys).
- Return type
dict
Synchronizes the model state across processes by moving agents, filling projection buffers with ghosts, updating ghosted state and so forth.
- Parameters
restore_agent (Callable) – a callable that takes agent state data and returns an agent instance from that data. The data is a tuple whose first element is the agent’s unique id tuple, and the second element is the agent’s state, as returned by that agent’s type’s
save()
method.sync_ghosts (bool) – if True, the ghosts in any SharedProjections and value layers associated with this SharedContext are also synchronized. Defaults to True.