Skip to content

Human Modules

Major human module

abses.human.human.BaseHuman

BaseHuman(model, name='human')

Bases: BaseSubSystem, _LinkContainer, HumanSystemProtocol

The Base Human Module.

Source code in abses/human/human.py
def __init__(self, model: MainModelProtocol, name: str = "human"):
    BaseSubSystem.__init__(self, model, name=name)
    _LinkContainer.__init__(self, model)

Human submodule

abses.human.human.HumanModule

HumanModule(name=None, *, model, **kwargs)

Bases: BaseModule

The Human sub-module base class.

Note

Look at this tutorial to understand the model structure.

Attributes:

Name Type Description
agents ActorsListProtocol

The agents container of this ABSESpy model.

collections Set[str]

Actor collections defined.

Source code in abses/human/human.py
def __init__(
    self,
    name: Optional[str] = None,
    *,
    model: MainModelProtocol,
    **kwargs,
):
    BaseModule.__init__(self, model, name=name)
    self._refers: Dict[str, Dict[str, Any]] = {}
    self.define(name, **kwargs)

agents property

agents

The agents container of this ABSESpy model.

collections property

collections

Actor collections defined.

actors property

actors

Different selections of agents

define

define(refer_name=None, **kwargs)

Define a query of actors and save it into collections.

Parameters:

Name Type Description Default
name

defined name of this group of actors.

required
selection

Selection query of Actor.

required

Raises:

Type Description
KeyError

If the name is already defined.

Returns:

Type Description
ActorsListProtocol

The list of actors who are satisfied the query condition.

Example
# Create 5 actors to query
model=MainModelProtocol()
model.agents.new(Actor, 5)

module = HumanModule(model=model)
actors = module.define(name='first', selection='ids=0')
>>> len(actors)
>>> 1

>>> module.actors('first') == actors
>>> True
Source code in abses/human/human.py
def define(
    self,
    refer_name: Optional[str] = None,
    **kwargs,
) -> ActorsListProtocol:
    """Define a query of actors and save it into collections.

    Parameters:
        name:
            defined name of this group of actors.
        selection:
            Selection query of `Actor`.

    Raises:
        KeyError:
            If the name is already defined.

    Returns:
        The list of actors who are satisfied the query condition.

    Example:
        ```
        # Create 5 actors to query
        model=MainModelProtocol()
        model.agents.new(Actor, 5)

        module = HumanModule(model=model)
        actors = module.define(name='first', selection='ids=0')
        >>> len(actors)
        >>> 1

        >>> module.actors('first') == actors
        >>> True
        ```
    """
    if refer_name is None:
        refer_name = self.name
    if refer_name in self._refers:
        raise KeyError(f"{refer_name} is already defined.")
    self._refers[refer_name] = kwargs.copy()
    selected = self.agents.select(**kwargs)
    return selected