Getting Started

    IntroductionInstallationCode your modelSubmitting a modelPython package referenceAdditional resources

    Python package reference

    Documentation for the Emergent Python package.


    AgentModel Class definition

    By default, each instance of the AgentModel class is initialized with the following attributes and parameters:

    class AgentModel:
        def __init__(self):
            self.__parameters = {
                "num_nodes": 3,
                "graph_type": "complete",
                "max_timesteps": 10000,
                "model_variation": "base"
            }
            self.__graph: nx.Graph = None
            self.initial_data_function = None
            self.timestep_function = None
    

    Note: you cannot remove any of the default parameters.

    Model Parameters

    Updating model parameters

    update_parameters(self, parameters: dict) -> None
    

    Description

    Updates the parameters dictionary.

    Example usage

    model.update_parameters({"num_nodes": 7, "default_bias": 0.11})
    

    You can also use Python subscript syntax to update or set individual parameter values. For example:

    model["num_nodes"] = 7
    model["default_bias"] = 0.11
    

    Deleting model parameters

    delete_parameters(self, parameters: list = None) -> None
    

    Description

    Takes a list of parameter keys and deletes each key from the parameters dictionary.
    If no parameters are passed in, then this method will reset the model's parameters to its defaults. If a default parameter or non-existent parameter is passed in, this method will raise an exception. Returns true if the deletion was successful.

    Example usage

    model.delete_parameters(["default_bias])
    

    Graph methods

    Getting and setting the model's graph attribute

    get_graph()
    set_graph(graph: nx.Graph)
    

    Example usage

    graph = model.get_graph()
    model.set_graph(graph)
    

    Initial data & graph functions

    Setting the model's initial data function

    set_initial_data_function(initial_data_function: Callable)
    

    Description

    The Emergent package enables users to write their own function to
    set the initial data of each node in the graph.
    Your function must:

    • take your AgentModel object as a parameter
    • return a dictionary representing the initial data of each node in the graph.

    Example usage

    # Define the function to generate each node's initial data
    def genInitialData(model):
        return {"x_location": random.randint(-10, 10), "y_location": random.randint(-10, 10)}
    
    # Set the initial_data function
    model.set_initial_data_function(genInitialData)
    

    Setting the model's timestep function

    set_timestep_function(timestep_function: Callable)
    

    Description

    The Emergent package also enables users to write their own function to
    set the data for each node during the model's timesteps.
    Your function must:

    • take your AgentModel object as a parameter
    • return a dictionary representing the node data of each node in the graph after it has been mutated

    Example usage

    # Define the function to mutate each node during the timestep.
    def genTimestepData(model: AgentModel, nodeData: dict):
        nodeData["x_location"] += random.randint(-1, 1)
        nodeData["y_location"] += random.randint(-1, 1)
        return nodeData
    

    Convergence

    The Emergent Python package also includes functionality for users to automatically run their model's timestep function until all of the values for a specified node data_key converge or until timestep t = 10000.

    Running to convergence

    Description

    This function timesteps the model until Timesteps the model until time = 10000. Returns the timestep t of convergence. If you plan to run your model to convergence, be sure to:

    Example usage

    model["convergence_data_key"] = "x_location"
    model["convergence_std_dev"] = 2
    t_convergence = model.run_to_convergence()
    print(f"X position of all nodes converges at {t_convergence}.")