You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
soil/examples/tutorial/soil_tutorial.ipynb

5004 lines
2.4 MiB
Plaintext

{
"cells": [
{
"cell_type": "markdown",
"metadata": {
"ExecuteTime": {
"end_time": "2017-10-19T12:41:48.007238Z",
"start_time": "2017-10-19T14:41:47.980725+02:00"
}
},
"source": [
"# Soil Tutorial"
]
},
{
"cell_type": "markdown",
"metadata": {
"ExecuteTime": {
"end_time": "2017-07-02T16:44:14.120953Z",
"start_time": "2017-07-02T18:44:14.117152+02:00"
}
},
"source": [
"## Introduction"
]
},
{
"cell_type": "markdown",
"metadata": {
"cell_style": "center",
"collapsed": true
},
"source": [
"This notebook is an introduction to the soil agent-based social network simulation framework.\n",
"In particular, we will focus on a specific use case: studying the propagation of news in a social network.\n",
"\n",
"The steps we will follow are:\n",
"\n",
"* Modelling the behavior of agents\n",
"* Running the simulation using different configurations\n",
"* Analysing the results of each simulation"
]
},
{
"cell_type": "markdown",
"metadata": {
"ExecuteTime": {
"end_time": "2017-07-03T13:38:48.052876Z",
"start_time": "2017-07-03T15:38:48.044762+02:00"
}
},
"source": [
"But before that, let's import the soil module and networkx."
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {
"ExecuteTime": {
"end_time": "2017-11-03T10:58:13.451481Z",
"start_time": "2017-11-03T11:58:12.643469+01:00"
}
},
"outputs": [],
"source": [
"import soil\n",
"import networkx as nx\n",
" \n",
"%load_ext autoreload\n",
"%autoreload 2\n",
"\n",
"%matplotlib inline\n",
"# To display plots in the notebooed_"
]
},
{
"cell_type": "markdown",
"metadata": {
"ExecuteTime": {
"end_time": "2017-07-03T13:41:19.788717Z",
"start_time": "2017-07-03T15:41:19.785448+02:00"
}
},
"source": [
"## Basic concepts"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"There are three main elements in a soil simulation:\n",
" \n",
"* The network topology. A simulation may use an existing NetworkX topology, or generate one on the fly\n",
"* Agents. There are two types: 1) network agents, which are linked to a node in the topology, and 2) environment agents, which are freely assigned to the environment.\n",
"* The environment. It assigns agents to nodes in the network, and stores the environment parameters (shared state for all agents).\n",
"\n",
"Soil is based on ``simpy``, which is an event-based network simulation library.\n",
"Soil provides several abstractions over events to make developing agents easier.\n",
"This means you can use events (timeouts, delays) in soil, but for the most part we will assume your models will be step-based.\n"
]
},
{
"cell_type": "markdown",
"metadata": {
"ExecuteTime": {
"end_time": "2017-07-02T15:55:12.933978Z",
"start_time": "2017-07-02T17:55:12.930860+02:00"
}
},
"source": [
"## Modeling behaviour"
]
},
{
"cell_type": "markdown",
"metadata": {
"ExecuteTime": {
"end_time": "2017-07-03T13:49:31.269687Z",
"start_time": "2017-07-03T15:49:31.257850+02:00"
}
},
"source": [
"Our first step will be to model how every person in the social network reacts when it comes to news.\n",
"We will follow a very simple model (a finite state machine).\n",
"\n",
"There are two types of people, those who have heard about a newsworthy event (infected) or those who have not (neutral).\n",
"A neutral person may heard about the news either on the TV (with probability **prob_tv_spread**) or through their friends.\n",
"Once a person has heard the news, they will spread it to their friends (with a probability **prob_neighbor_spread**).\n",
"Some users do not have a TV, so they only rely on their friends.\n",
"\n",
"The spreading probabilities will change over time due to different factors.\n",
"We will represent this variance using an environment agent."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Network Agents"
]
},
{
"cell_type": "markdown",
"metadata": {
"ExecuteTime": {
"end_time": "2017-07-03T14:03:07.171127Z",
"start_time": "2017-07-03T16:03:07.165779+02:00"
}
},
"source": [
"A basic network agent in Soil would typically inherit from ``soil.agents.NetworkAgent``, and define its behaviour in every step of the simulation by implementing a ``run(self)`` method.\n",
"The most important attributes of the agent are:\n",
"\n",
"* ``agent.state``, a dictionary with the state of the agent. This tate will be saved in every step of the simulation. It can be accessed from the agent as well:\n",
"```py\n",
"a = soil.agents.NetworkAgent(env=env)\n",
"agent.state['hours_of_sleep'] = 10\n",
"# is the same as\n",
"a['hours_of_sleep'] = 10\n",
"```\n",
" The state of the agent is stored in every step of the simulation:\n",
" ```py\n",
" print(a['hours_of_sleep', 10]) # hours of sleep before step #10\n",
" print(a[None, 0]) # whole state of the agent before step #0\n",
" ```\n",
"\n",
"* ``agent.env``, a reference to the environment. Most commonly used to get access to the environment parameters and the topology:\n",
" ```py\n",
" a.env.G.nodes() # Get all nodes ids in the topology\n",
" a.env['minimum_hours_of_sleep']\n",
"\n",
" ```\n",
"\n",
"Since our model is a finite state machine, we will be basing it on ``soil.agents.FSM``.\n",
"\n",
"Agents that inherit from ``soil.agents.FSM`` do not need to specify a ``step`` method.\n",
"Instead, we describe each finite state with a function.\n",
"To change to another state, a function may return the new state, or the ``id`` of a state.\n",
"If no state is returned, the state remains unchanged.\n",
"\n",
"The current state of the agent can be checked with ``agent.state['id']``. That state id can be used to look for other networks in that specific state\n",
"\n",
"\n",
"Our agent will have of two states, ``neutral`` (default) and ``infected``.\n",
"\n",
"Here's the code:"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {
"ExecuteTime": {
"end_time": "2017-11-03T10:58:16.051690Z",
"start_time": "2017-11-03T11:58:16.006044+01:00"
}
},
"outputs": [],
"source": [
"import random\n",
"\n",
"class NewsSpread(soil.agents.FSM):\n",
" @soil.agents.default_state\n",
" @soil.agents.state\n",
" def neutral(self):\n",
" r = random.random()\n",
" if self['has_tv'] and r <= self.env['prob_tv_spread']:\n",
" return self.infected\n",
" return\n",
" \n",
" @soil.agents.state\n",
" def infected(self):\n",
" prob_infect = self.env['prob_neighbor_spread']\n",
" for neighbor in self.get_neighboring_agents(state_id=self.neutral.id):\n",
" r = random.random()\n",
" if r < prob_infect:\n",
" neighbor.set_state(self.infected.id)\n",
" return\n",
" "
]
},
{
"cell_type": "markdown",
"metadata": {
"ExecuteTime": {
"end_time": "2017-07-02T12:22:53.931963Z",
"start_time": "2017-07-02T14:22:53.928340+02:00"
}
},
"source": [
"### Environment agents"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Environment agents allow us to control the state of the environment.\n",
"In this case, we will use an environment agent to simulate a very viral event.\n",
"\n",
"When the event happens, the agent will modify the probability of spreading the rumor."
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {
"ExecuteTime": {
"end_time": "2017-11-03T10:58:17.653736Z",
"start_time": "2017-11-03T11:58:17.612944+01:00"
}
},
"outputs": [],
"source": [
"NEIGHBOR_FACTOR = 0.9\n",
"TV_FACTOR = 0.5\n",
"\n",
"\n",
"class NewsEnvironmentAgent(soil.agents.NetworkAgent):\n",
" def step(self):\n",
" if self.now == self['event_time']:\n",
" self.env['prob_tv_spread'] = 1\n",
" self.env['prob_neighbor_spread'] = 1\n",
" elif self.now > self['event_time']:\n",
" self.env['prob_tv_spread'] = self.env['prob_tv_spread'] * TV_FACTOR\n",
" self.env['prob_neighbor_spread'] = self.env['prob_neighbor_spread'] * NEIGHBOR_FACTOR"
]
},
{
"cell_type": "markdown",
"metadata": {
"ExecuteTime": {
"end_time": "2017-07-02T11:23:18.052235Z",
"start_time": "2017-07-02T13:23:18.047452+02:00"
}
},
"source": [
"### Testing the agents"
]
},
{
"cell_type": "markdown",
"metadata": {
"ExecuteTime": {
"end_time": "2017-07-02T16:14:54.572431Z",
"start_time": "2017-07-02T18:14:54.564095+02:00"
}
},
"source": [
"Feel free to skip this section if this is your first time with soil."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Testing agents is not easy, and this is not a thorough testing process for agents.\n",
"Rather, this section is aimed to show you how to access internal pats of soil so you can test your agents."
]
},
{
"cell_type": "markdown",
"metadata": {
"cell_style": "split"
},
"source": [
"First of all, let's check if our network agent has the states we would expect:"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {
"ExecuteTime": {
"end_time": "2017-11-03T10:58:19.781155Z",
"start_time": "2017-11-03T11:58:19.754362+01:00"
},
"cell_style": "split"
},
"outputs": [
{
"data": {
"text/plain": [
"{'neutral': <function __main__.NewsSpread.neutral(self)>,\n",
" 'infected': <function __main__.NewsSpread.infected(self)>}"
]
},
"execution_count": 4,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"NewsSpread.states"
]
},
{
"cell_type": "markdown",
"metadata": {
"cell_style": "split"
},
"source": [
"Now, let's run a simulation on a simple network. It is comprised of three nodes:\n"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {
"ExecuteTime": {
"end_time": "2017-11-03T10:58:20.791777Z",
"start_time": "2017-11-03T11:58:20.565173+01:00"
},
"cell_style": "split",
"scrolled": false
},
"outputs": [
{
"data": {
"image/png": "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
"text/plain": [
"<Figure size 640x480 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"G = nx.Graph()\n",
"G.add_edge(0, 1)\n",
"G.add_edge(0, 2)\n",
"G.add_edge(2, 3)\n",
"G.add_node(4)\n",
"pos = nx.spring_layout(G)\n",
"nx.draw_networkx(G, pos, node_color='red')\n",
"nx.draw_networkx(G, pos, nodelist=[0], node_color='blue')"
]
},
{
"cell_type": "markdown",
"metadata": {
"ExecuteTime": {
"end_time": "2017-07-03T11:53:30.997756Z",
"start_time": "2017-07-03T13:53:30.989609+02:00"
},
"cell_style": "split"
},
"source": [
"Let's run a simple simulation that assigns a NewsSpread agent to all the nodes in that network.\n",
"Notice how node 0 is the only one with a TV."
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"<module 'soil.agents' from '/mnt/data/home/j/git/lab.gsi/soil/soil/soil/agents/__init__.py'>"
]
},
"execution_count": 6,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"import importlib\n",
"importlib.reload(soil.agents)"
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {
"ExecuteTime": {
"end_time": "2017-11-03T10:58:55.517768Z",
"start_time": "2017-11-03T11:58:55.424083+01:00"
},
"cell_style": "split"
},
"outputs": [],
"source": [
"env_params = {\n",
" 'prob_tv_spread': 0,\n",
" 'prob_neighbor_spread': 0\n",
"}\n",
"\n",
"MAX_TIME = 100\n",
"EVENT_TIME = 10\n",
"\n",
6 years ago
"sim = soil.Simulation(topology=G,\n",
" num_trials=1,\n",
" max_time=MAX_TIME,\n",
" environment_agents=[{'agent_type': NewsEnvironmentAgent,\n",
" 'state': {\n",
" 'event_time': EVENT_TIME\n",
" }}],\n",
" network_agents=[{'agent_type': NewsSpread,\n",
" 'weight': 1}],\n",
" states={0: {'has_tv': True}},\n",
" default_state={'has_tv': False},\n",
" environment_params=env_params)\n",
"env = sim.run_simulation(dry_run=True)[0]"
]
},
{
"cell_type": "markdown",
"metadata": {
"cell_style": "split"
},
"source": [
"Now we can access the results of the simulation and compare them to our expected results"
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {
"ExecuteTime": {
"end_time": "2017-11-03T10:59:01.577474Z",
"start_time": "2017-11-03T11:59:01.414215+01:00"
},
"cell_style": "split",
"scrolled": false
},
"outputs": [],
"source": [
"agents = list(env.network_agents)\n",
"\n",
"# Until the event, all agents are neutral\n",
"for t in range(10):\n",
" for a in agents:\n",
" assert a['state_id', t] == a.neutral.id\n",
" \n",
"# After the event, the node with a TV is infected, the rest are not\n",
"assert agents[0]['has_tv']\n",
"assert agents[0]['state_id', 11] == NewsSpread.infected.id\n",
"assert not agents[2]['has_tv']\n",
"assert agents[2]['state_id', 11] == NewsSpread.neutral.id\n",
"\n",
"\n",
"# At the end, the agents connected to the infected one will probably be infected, too.\n",
"assert agents[1]['state_id', MAX_TIME] == NewsSpread.infected.id\n",
"assert agents[2]['state_id', MAX_TIME] == NewsSpread.infected.id\n",
"\n",
"# But the node with no friends should not be affected\n",
"assert agents[4]['state_id', MAX_TIME] == NewsSpread.neutral.id\n",
" "
]
},
{
"cell_type": "markdown",
"metadata": {
"ExecuteTime": {
"end_time": "2017-07-02T16:41:09.110652Z",
"start_time": "2017-07-02T18:41:09.106966+02:00"
},
"cell_style": "split"
},
"source": [
"Lastly, let's see if the probabilities have decreased as expected:"
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {
"ExecuteTime": {
"end_time": "2017-11-01T14:07:55.288616Z",
"start_time": "2017-11-01T15:07:55.241116+01:00"
},
"cell_style": "split"
},
"outputs": [],
"source": [
"assert abs(env.environment_params['prob_neighbor_spread'] - (NEIGHBOR_FACTOR**(MAX_TIME-1-10))) < 10e-4\n",
"assert abs(env.environment_params['prob_tv_spread'] - (TV_FACTOR**(MAX_TIME-1-10))) < 10e-6"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Running the simulation"
]
},
{
"cell_type": "markdown",
"metadata": {
"ExecuteTime": {
"end_time": "2017-07-03T11:20:28.566944Z",
"start_time": "2017-07-03T13:20:28.561052+02:00"
},
"cell_style": "split"
},
"source": [
"To run a simulation, we need a configuration.\n",
"Soil can load configurations from python dictionaries as well as JSON and YAML files.\n",
"For this demo, we will use a python dictionary:"
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {
"ExecuteTime": {
"end_time": "2017-11-01T14:07:57.008940Z",
"start_time": "2017-11-01T15:07:56.966433+01:00"
},
"cell_style": "split"
},
"outputs": [],
"source": [
"config = {\n",
" 'name': 'ExampleSimulation',\n",
" 'max_time': 20,\n",
" 'interval': 1,\n",
" 'num_trials': 1,\n",
" 'network_params': {\n",
" 'generator': 'complete_graph',\n",
" 'n': 500,\n",
" },\n",
" 'network_agents': [\n",
" {\n",
" 'agent_type': NewsSpread,\n",
" 'weight': 1,\n",
" 'state': {\n",
" 'has_tv': False\n",
" }\n",
" },\n",
" {\n",
" 'agent_type': NewsSpread,\n",
" 'weight': 2,\n",
" 'state': {\n",
" 'has_tv': True\n",
" }\n",
" }\n",
" ],\n",
" 'environment_agents':[\n",
" {'agent_type': NewsEnvironmentAgent,\n",
" 'state': {\n",
" 'event_time': 10\n",
" }\n",
" }\n",
" ],\n",
" 'states': [ {'has_tv': True} ],\n",
" 'environment_params':{\n",
" 'prob_tv_spread': 0.01,\n",
" 'prob_neighbor_spread': 0.5\n",
" }\n",
"}"
]
},
{
"cell_type": "markdown",
"metadata": {
"ExecuteTime": {
"end_time": "2017-07-03T11:57:34.219618Z",
"start_time": "2017-07-03T13:57:34.213817+02:00"
},
"cell_style": "split"
},
"source": [
"Let's run our simulation:"
]
},
{
"cell_type": "code",
"execution_count": 11,
"metadata": {
"ExecuteTime": {
"end_time": "2017-11-01T14:08:34.312637Z",
"start_time": "2017-11-01T15:07:57.774458+01:00"
},
"cell_style": "split"
},
"outputs": [],
"source": [
"soil.simulation.run_from_config(config, dry_run=True)"
]
},
{
"cell_type": "markdown",
"metadata": {
"ExecuteTime": {
"end_time": "2017-07-03T12:03:32.183588Z",
"start_time": "2017-07-03T14:03:32.167797+02:00"
},
"cell_style": "split",
"collapsed": true
},
"source": [
"In real life, you probably want to run several simulations, varying some of the parameters so that you can compare and answer your research questions.\n",
"\n",
"For instance:\n",
" \n",
"* Does the outcome depend on the structure of our network? We will use different generation algorithms to compare them (Barabasi-Albert and Erdos-Renyi)\n",
"* How does neighbor spreading probability affect my simulation? We will try probability values in the range of [0, 0.4], in intervals of 0.1."
]
},
{
"cell_type": "code",
"execution_count": 12,
"metadata": {
"ExecuteTime": {
"end_time": "2017-11-01T14:10:38.099667Z",
"start_time": "2017-11-01T15:10:06.008314+01:00"
},
"cell_style": "split",
"scrolled": true
},
"outputs": [],
"source": [
"network_1 = {\n",
" 'generator': 'erdos_renyi_graph',\n",
" 'n': 500,\n",
" 'p': 0.1\n",
"}\n",
"network_2 = {\n",
" 'generator': 'barabasi_albert_graph',\n",
" 'n': 500,\n",
" 'm': 2\n",
"}\n",
"\n",
"\n",
"for net in [network_1, network_2]:\n",
" for i in range(5):\n",
" prob = i / 10\n",
" config['environment_params']['prob_neighbor_spread'] = prob\n",
" config['network_params'] = net\n",
" config['name'] = 'Spread_{}_prob_{}'.format(net['generator'], prob)\n",
" s = soil.simulation.run_from_config(config, exporters=['default', 'csv'])"
]
},
{
"cell_type": "markdown",
"metadata": {
"ExecuteTime": {
"end_time": "2017-07-03T11:05:18.043194Z",
"start_time": "2017-07-03T13:05:18.034699+02:00"
},
"cell_style": "center"
},
"source": [
"The results are conveniently stored in sqlite (history of agent and environment state) and the configuration is saved in a YAML file.\n",
"\n",
"You can also export the results to GEXF format (dynamic network) and CSV using .`run_from_config(config, dump=['gexf', 'csv'])` or the command line flags `--graph --csv`."
]
},
{
"cell_type": "code",
"execution_count": 13,
"metadata": {
"ExecuteTime": {
"end_time": "2017-11-01T14:05:56.404540Z",
"start_time": "2017-11-01T15:05:56.122876+01:00"
},
"cell_style": "split",
"scrolled": true
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"\u001b[01;34msoil_output\u001b[00m\r\n",
"├── \u001b[01;34mSpread_barabasi_albert_graph_prob_0.0\u001b[00m\r\n",
"│   ├── \u001b[01;34mbackup\u001b[00m\r\n",
"│   │   ├── Spread_barabasi_albert_graph_prob_0.0.dumped.yml@2023-03-23_12.57.35\r\n",
"│   │   ├── Spread_barabasi_albert_graph_prob_0.0.dumped.yml@2023-03-23_14.06.30\r\n",
"│   │   ├── Spread_barabasi_albert_graph_prob_0.0.dumped.yml@2023-03-23_14.19.33\r\n",
"│   │   ├── Spread_barabasi_albert_graph_prob_0.0.dumped.yml@2023-03-23_14.30.56\r\n",
"│   │   ├── Spread_barabasi_albert_graph_prob_0.0.sqlite@2023-03-23_12.57.35\r\n",
"│   │   ├── Spread_barabasi_albert_graph_prob_0.0.sqlite@2023-03-23_14.06.31\r\n",
"│   │   ├── Spread_barabasi_albert_graph_prob_0.0.sqlite@2023-03-23_14.19.33\r\n",
"│   │   ├── Spread_barabasi_albert_graph_prob_0.0.sqlite@2023-03-23_14.30.56\r\n",
"│   │   ├── Spread_barabasi_albert_graph_prob_0.0_trial_0.csv@2023-03-23_12.57.35\r\n",
"│   │   ├── Spread_barabasi_albert_graph_prob_0.0_trial_0.csv@2023-03-23_14.06.31\r\n",
"│   │   ├── Spread_barabasi_albert_graph_prob_0.0_trial_0.csv@2023-03-23_14.19.33\r\n",
"│   │   ├── Spread_barabasi_albert_graph_prob_0.0_trial_0.csv@2023-03-23_14.30.56\r\n",
"│   │   ├── Spread_barabasi_albert_graph_prob_0.0_trial_0.sqlite@2023-03-23_12.57.35\r\n",
"│   │   ├── Spread_barabasi_albert_graph_prob_0.0_trial_0.sqlite@2023-03-23_14.06.31\r\n",
"│   │   ├── Spread_barabasi_albert_graph_prob_0.0_trial_0.sqlite@2023-03-23_14.19.33\r\n",
"│   │   ├── Spread_barabasi_albert_graph_prob_0.0_trial_0.sqlite@2023-03-23_14.30.56\r\n",
"│   │   ├── Spread_barabasi_albert_graph_prob_0.0_trial_0.stats.csv@2023-03-23_12.57.35\r\n",
"│   │   ├── Spread_barabasi_albert_graph_prob_0.0_trial_0.stats.csv@2023-03-23_14.06.31\r\n",
"│   │   ├── Spread_barabasi_albert_graph_prob_0.0_trial_0.stats.csv@2023-03-23_14.19.33\r\n",
"│   │   └── Spread_barabasi_albert_graph_prob_0.0_trial_0.stats.csv@2023-03-23_14.30.56\r\n",
"│   ├── Spread_barabasi_albert_graph_prob_0.0.dumped.yml\r\n",
"│   ├── Spread_barabasi_albert_graph_prob_0.0.sqlite\r\n",
"│   ├── Spread_barabasi_albert_graph_prob_0.0_trial_0.csv\r\n",
"│   ├── Spread_barabasi_albert_graph_prob_0.0_trial_0.sqlite\r\n",
"│   └── Spread_barabasi_albert_graph_prob_0.0_trial_0.stats.csv\r\n",
"├── \u001b[01;34mSpread_barabasi_albert_graph_prob_0.1\u001b[00m\r\n",
"│   ├── \u001b[01;34mbackup\u001b[00m\r\n",
"│   │   ├── Spread_barabasi_albert_graph_prob_0.1.dumped.yml@2023-03-23_12.57.35\r\n",
"│   │   ├── Spread_barabasi_albert_graph_prob_0.1.dumped.yml@2023-03-23_14.06.31\r\n",
"│   │   ├── Spread_barabasi_albert_graph_prob_0.1.dumped.yml@2023-03-23_14.19.34\r\n",
"│   │   ├── Spread_barabasi_albert_graph_prob_0.1.dumped.yml@2023-03-23_14.30.56\r\n",
"│   │   ├── Spread_barabasi_albert_graph_prob_0.1.sqlite@2023-03-23_12.57.35\r\n",
"│   │   ├── Spread_barabasi_albert_graph_prob_0.1.sqlite@2023-03-23_14.06.31\r\n",
"│   │   ├── Spread_barabasi_albert_graph_prob_0.1.sqlite@2023-03-23_14.19.34\r\n",
"│   │   ├── Spread_barabasi_albert_graph_prob_0.1.sqlite@2023-03-23_14.30.56\r\n",
"│   │   ├── Spread_barabasi_albert_graph_prob_0.1_trial_0.csv@2023-03-23_12.57.35\r\n",
"│   │   ├── Spread_barabasi_albert_graph_prob_0.1_trial_0.csv@2023-03-23_14.06.31\r\n",
"│   │   ├── Spread_barabasi_albert_graph_prob_0.1_trial_0.csv@2023-03-23_14.19.34\r\n",
"│   │   ├── Spread_barabasi_albert_graph_prob_0.1_trial_0.csv@2023-03-23_14.30.56\r\n",
"│   │   ├── Spread_barabasi_albert_graph_prob_0.1_trial_0.sqlite@2023-03-23_12.57.35\r\n",
"│   │   ├── Spread_barabasi_albert_graph_prob_0.1_trial_0.sqlite@2023-03-23_14.06.31\r\n",
"│   │   ├── Spread_barabasi_albert_graph_prob_0.1_trial_0.sqlite@2023-03-23_14.19.34\r\n",
"│   │   ├── Spread_barabasi_albert_graph_prob_0.1_trial_0.sqlite@2023-03-23_14.30.56\r\n",
"│   │   ├── Spread_barabasi_albert_graph_prob_0.1_trial_0.stats.csv@2023-03-23_12.57.35\r\n",
"│   │   ├── Spread_barabasi_albert_graph_prob_0.1_trial_0.stats.csv@2023-03-23_14.06.31\r\n",
"│   │   ├── Spread_barabasi_albert_graph_prob_0.1_trial_0.stats.csv@2023-03-23_14.19.34\r\n",
"│   │   └── Spread_barabasi_albert_graph_prob_0.1_trial_0.stats.csv@2023-03-23_14.30.56\r\n",
"│   ├── Spread_barabasi_albert_graph_prob_0.1.dumped.yml\r\n",
"│   ├── Spread_barabasi_albert_graph_prob_0.1.sqlite\r\n",
"│   ├── Spread_barabasi_albert_graph_prob_0.1_trial_0.csv\r\n",
"│   ├── Spread_barabasi_albert_graph_prob_0.1_trial_0.sqlite\r\n",
"│   └── Spread_barabasi_albert_graph_prob_0.1_trial_0.stats.csv\r\n",
"├── \u001b[01;34mSpread_barabasi_albert_graph_prob_0.2\u001b[00m\r\n",
"│   ├── \u001b[01;34mbackup\u001b[00m\r\n",
"│   │   ├── Spread_barabasi_albert_graph_prob_0.2.dumped.yml@2023-03-23_12.57.36\r\n",
"│   │   ├── Spread_barabasi_albert_graph_prob_0.2.dumped.yml@2023-03-23_14.06.31\r\n",
"│   │   ├── Spread_barabasi_albert_graph_prob_0.2.dumped.yml@2023-03-23_14.19.34\r\n",
"│   │   ├── Spread_barabasi_albert_graph_prob_0.2.dumped.yml@2023-03-23_14.30.56\r\n",
"│   │   ├── Spread_barabasi_albert_graph_prob_0.2.sqlite@2023-03-23_12.57.36\r\n",
"│   │   ├── Spread_barabasi_albert_graph_prob_0.2.sqlite@2023-03-23_14.06.31\r\n",
"│   │   ├── Spread_barabasi_albert_graph_prob_0.2.sqlite@2023-03-23_14.19.34\r\n",
"│   │   ├── Spread_barabasi_albert_graph_prob_0.2.sqlite@2023-03-23_14.30.57\r\n",
"│   │   ├── Spread_barabasi_albert_graph_prob_0.2_trial_0.csv@2023-03-23_12.57.36\r\n",
"│   │   ├── Spread_barabasi_albert_graph_prob_0.2_trial_0.csv@2023-03-23_14.06.31\r\n",
"│   │   ├── Spread_barabasi_albert_graph_prob_0.2_trial_0.csv@2023-03-23_14.19.34\r\n",
"│   │   ├── Spread_barabasi_albert_graph_prob_0.2_trial_0.csv@2023-03-23_14.30.57\r\n",
"│   │   ├── Spread_barabasi_albert_graph_prob_0.2_trial_0.sqlite@2023-03-23_12.57.36\r\n",
"│   │   ├── Spread_barabasi_albert_graph_prob_0.2_trial_0.sqlite@2023-03-23_14.06.31\r\n",
"│   │   ├── Spread_barabasi_albert_graph_prob_0.2_trial_0.sqlite@2023-03-23_14.19.34\r\n",
"│   │   ├── Spread_barabasi_albert_graph_prob_0.2_trial_0.sqlite@2023-03-23_14.30.57\r\n",
"│   │   ├── Spread_barabasi_albert_graph_prob_0.2_trial_0.stats.csv@2023-03-23_12.57.36\r\n",
"│   │   ├── Spread_barabasi_albert_graph_prob_0.2_trial_0.stats.csv@2023-03-23_14.06.31\r\n",
"│   │   ├── Spread_barabasi_albert_graph_prob_0.2_trial_0.stats.csv@2023-03-23_14.19.34\r\n",
"│   │   └── Spread_barabasi_albert_graph_prob_0.2_trial_0.stats.csv@2023-03-23_14.30.57\r\n",
"│   ├── Spread_barabasi_albert_graph_prob_0.2.dumped.yml\r\n",
"│   ├── Spread_barabasi_albert_graph_prob_0.2.sqlite\r\n",
"│   ├── Spread_barabasi_albert_graph_prob_0.2_trial_0.csv\r\n",
"│   ├── Spread_barabasi_albert_graph_prob_0.2_trial_0.sqlite\r\n",
"│   └── Spread_barabasi_albert_graph_prob_0.2_trial_0.stats.csv\r\n",
"├── \u001b[01;34mSpread_barabasi_albert_graph_prob_0.3\u001b[00m\r\n",
"│   ├── \u001b[01;34mbackup\u001b[00m\r\n",
"│   │   ├── Spread_barabasi_albert_graph_prob_0.3.dumped.yml@2023-03-23_12.57.36\r\n",
"│   │   ├── Spread_barabasi_albert_graph_prob_0.3.dumped.yml@2023-03-23_14.06.31\r\n",
"│   │   ├── Spread_barabasi_albert_graph_prob_0.3.dumped.yml@2023-03-23_14.19.34\r\n",
"│   │   ├── Spread_barabasi_albert_graph_prob_0.3.dumped.yml@2023-03-23_14.30.57\r\n",
"│   │   ├── Spread_barabasi_albert_graph_prob_0.3.sqlite@2023-03-23_12.57.36\r\n",
"│   │   ├── Spread_barabasi_albert_graph_prob_0.3.sqlite@2023-03-23_14.06.32\r\n",
"│   │   ├── Spread_barabasi_albert_graph_prob_0.3.sqlite@2023-03-23_14.19.34\r\n",
"│   │   ├── Spread_barabasi_albert_graph_prob_0.3.sqlite@2023-03-23_14.30.57\r\n",
"│   │   ├── Spread_barabasi_albert_graph_prob_0.3_trial_0.csv@2023-03-23_12.57.36\r\n",
"│   │   ├── Spread_barabasi_albert_graph_prob_0.3_trial_0.csv@2023-03-23_14.06.32\r\n",
"│   │   ├── Spread_barabasi_albert_graph_prob_0.3_trial_0.csv@2023-03-23_14.19.34\r\n",
"│   │   ├── Spread_barabasi_albert_graph_prob_0.3_trial_0.csv@2023-03-23_14.30.57\r\n",
"│   │   ├── Spread_barabasi_albert_graph_prob_0.3_trial_0.sqlite@2023-03-23_12.57.36\r\n",
"│   │   ├── Spread_barabasi_albert_graph_prob_0.3_trial_0.sqlite@2023-03-23_14.06.31\r\n",
"│   │   ├── Spread_barabasi_albert_graph_prob_0.3_trial_0.sqlite@2023-03-23_14.19.34\r\n",
"│   │   ├── Spread_barabasi_albert_graph_prob_0.3_trial_0.sqlite@2023-03-23_14.30.57\r\n",
"│   │   ├── Spread_barabasi_albert_graph_prob_0.3_trial_0.stats.csv@2023-03-23_12.57.36\r\n",
"│   │   ├── Spread_barabasi_albert_graph_prob_0.3_trial_0.stats.csv@2023-03-23_14.06.32\r\n",
"│   │   ├── Spread_barabasi_albert_graph_prob_0.3_trial_0.stats.csv@2023-03-23_14.19.34\r\n",
"│   │   └── Spread_barabasi_albert_graph_prob_0.3_trial_0.stats.csv@2023-03-23_14.30.57\r\n",
"│   ├── Spread_barabasi_albert_graph_prob_0.3.dumped.yml\r\n",
"│   ├── Spread_barabasi_albert_graph_prob_0.3.sqlite\r\n",
"│   ├── Spread_barabasi_albert_graph_prob_0.3_trial_0.csv\r\n",
"│   ├── Spread_barabasi_albert_graph_prob_0.3_trial_0.sqlite\r\n",
"│   └── Spread_barabasi_albert_graph_prob_0.3_trial_0.stats.csv\r\n",
"├── \u001b[01;34mSpread_barabasi_albert_graph_prob_0.4\u001b[00m\r\n",
"│   ├── \u001b[01;34mbackup\u001b[00m\r\n",
"│   │   ├── Spread_barabasi_albert_graph_prob_0.4.dumped.yml@2023-03-23_12.57.36\r\n",
"│   │   ├── Spread_barabasi_albert_graph_prob_0.4.dumped.yml@2023-03-23_14.06.32\r\n",
"│   │   ├── Spread_barabasi_albert_graph_prob_0.4.dumped.yml@2023-03-23_14.19.35\r\n",
"│   │   ├── Spread_barabasi_albert_graph_prob_0.4.dumped.yml@2023-03-23_14.30.57\r\n",
"│   │   ├── Spread_barabasi_albert_graph_prob_0.4.sqlite@2023-03-23_12.57.36\r\n",
"│   │   ├── Spread_barabasi_albert_graph_prob_0.4.sqlite@2023-03-23_14.06.32\r\n",
"│   │   ├── Spread_barabasi_albert_graph_prob_0.4.sqlite@2023-03-23_14.19.35\r\n",
"│   │   ├── Spread_barabasi_albert_graph_prob_0.4.sqlite@2023-03-23_14.30.57\r\n",
"│   │   ├── Spread_barabasi_albert_graph_prob_0.4_trial_0.csv@2023-03-23_12.57.36\r\n",
"│   │   ├── Spread_barabasi_albert_graph_prob_0.4_trial_0.csv@2023-03-23_14.06.32\r\n",
"│   │   ├── Spread_barabasi_albert_graph_prob_0.4_trial_0.csv@2023-03-23_14.19.35\r\n",
"│   │   ├── Spread_barabasi_albert_graph_prob_0.4_trial_0.csv@2023-03-23_14.30.57\r\n",
"│   │   ├── Spread_barabasi_albert_graph_prob_0.4_trial_0.sqlite@2023-03-23_12.57.36\r\n",
"│   │   ├── Spread_barabasi_albert_graph_prob_0.4_trial_0.sqlite@2023-03-23_14.06.32\r\n",
"│   │   ├── Spread_barabasi_albert_graph_prob_0.4_trial_0.sqlite@2023-03-23_14.19.35\r\n",
"│   │   ├── Spread_barabasi_albert_graph_prob_0.4_trial_0.sqlite@2023-03-23_14.30.57\r\n",
"│   │   ├── Spread_barabasi_albert_graph_prob_0.4_trial_0.stats.csv@2023-03-23_12.57.36\r\n",
"│   │   ├── Spread_barabasi_albert_graph_prob_0.4_trial_0.stats.csv@2023-03-23_14.06.32\r\n",
"│   │   ├── Spread_barabasi_albert_graph_prob_0.4_trial_0.stats.csv@2023-03-23_14.19.35\r\n",
"│   │   └── Spread_barabasi_albert_graph_prob_0.4_trial_0.stats.csv@2023-03-23_14.30.57\r\n",
"│   ├── Spread_barabasi_albert_graph_prob_0.4.dumped.yml\r\n",
"│   ├── Spread_barabasi_albert_graph_prob_0.4.sqlite\r\n",
"│   ├── Spread_barabasi_albert_graph_prob_0.4_trial_0.csv\r\n",
"│   ├── Spread_barabasi_albert_graph_prob_0.4_trial_0.sqlite\r\n",
"│   └── Spread_barabasi_albert_graph_prob_0.4_trial_0.stats.csv\r\n",
"├── \u001b[01;34mSpread_erdos_renyi_graph_prob_0.0\u001b[00m\r\n",
"│   ├── \u001b[01;34mbackup\u001b[00m\r\n",
"│   │   ├── Spread_erdos_renyi_graph_prob_0.0.dumped.yml@2023-03-23_12.57.26\r\n",
"│   │   ├── Spread_erdos_renyi_graph_prob_0.0.dumped.yml@2023-03-23_14.06.21\r\n",
"│   │   ├── Spread_erdos_renyi_graph_prob_0.0.dumped.yml@2023-03-23_14.19.24\r\n",
"│   │   ├── Spread_erdos_renyi_graph_prob_0.0.dumped.yml@2023-03-23_14.30.47\r\n",
"│   │   ├── Spread_erdos_renyi_graph_prob_0.0.sqlite@2023-03-23_12.57.26\r\n",
"│   │   ├── Spread_erdos_renyi_graph_prob_0.0.sqlite@2023-03-23_14.06.22\r\n",
"│   │   ├── Spread_erdos_renyi_graph_prob_0.0.sqlite@2023-03-23_14.19.25\r\n",
"│   │   ├── Spread_erdos_renyi_graph_prob_0.0.sqlite@2023-03-23_14.30.47\r\n",
"│   │   ├── Spread_erdos_renyi_graph_prob_0.0_trial_0.csv@2023-03-23_12.57.26\r\n",
"│   │   ├── Spread_erdos_renyi_graph_prob_0.0_trial_0.csv@2023-03-23_14.06.22\r\n",
"│   │   ├── Spread_erdos_renyi_graph_prob_0.0_trial_0.csv@2023-03-23_14.19.25\r\n",
"│   │   ├── Spread_erdos_renyi_graph_prob_0.0_trial_0.csv@2023-03-23_14.30.47\r\n",
"│   │   ├── Spread_erdos_renyi_graph_prob_0.0_trial_0.sqlite@2023-03-23_12.57.26\r\n",
"│   │   ├── Spread_erdos_renyi_graph_prob_0.0_trial_0.sqlite@2023-03-23_14.06.22\r\n",
"│   │   ├── Spread_erdos_renyi_graph_prob_0.0_trial_0.sqlite@2023-03-23_14.19.25\r\n",
"│   │   ├── Spread_erdos_renyi_graph_prob_0.0_trial_0.sqlite@2023-03-23_14.30.47\r\n",
"│   │   ├── Spread_erdos_renyi_graph_prob_0.0_trial_0.stats.csv@2023-03-23_12.57.26\r\n",
"│   │   ├── Spread_erdos_renyi_graph_prob_0.0_trial_0.stats.csv@2023-03-23_14.06.22\r\n",
"│   │   ├── Spread_erdos_renyi_graph_prob_0.0_trial_0.stats.csv@2023-03-23_14.19.25\r\n",
"│   │   └── Spread_erdos_renyi_graph_prob_0.0_trial_0.stats.csv@2023-03-23_14.30.47\r\n",
"│   ├── Spread_erdos_renyi_graph_prob_0.0.dumped.yml\r\n",
"│   ├── Spread_erdos_renyi_graph_prob_0.0.sqlite\r\n",
"│   ├── Spread_erdos_renyi_graph_prob_0.0_trial_0.csv\r\n",
"│   ├── Spread_erdos_renyi_graph_prob_0.0_trial_0.sqlite\r\n",
"│   └── Spread_erdos_renyi_graph_prob_0.0_trial_0.stats.csv\r\n",
"├── \u001b[01;34mSpread_erdos_renyi_graph_prob_0.1\u001b[00m\r\n",
"│   ├── \u001b[01;34mbackup\u001b[00m\r\n",
"│   │   ├── Spread_erdos_renyi_graph_prob_0.1.dumped.yml@2023-03-23_12.57.28\r\n",
"│   │   ├── Spread_erdos_renyi_graph_prob_0.1.dumped.yml@2023-03-23_14.06.24\r\n",
"│   │   ├── Spread_erdos_renyi_graph_prob_0.1.dumped.yml@2023-03-23_14.19.26\r\n",
"│   │   ├── Spread_erdos_renyi_graph_prob_0.1.dumped.yml@2023-03-23_14.30.49\r\n",
"│   │   ├── Spread_erdos_renyi_graph_prob_0.1.sqlite@2023-03-23_12.57.28\r\n",
"│   │   ├── Spread_erdos_renyi_graph_prob_0.1.sqlite@2023-03-23_14.06.24\r\n",
"│   │   ├── Spread_erdos_renyi_graph_prob_0.1.sqlite@2023-03-23_14.19.27\r\n",
"│   │   ├── Spread_erdos_renyi_graph_prob_0.1.sqlite@2023-03-23_14.30.49\r\n",
"│   │   ├── Spread_erdos_renyi_graph_prob_0.1_trial_0.csv@2023-03-23_12.57.28\r\n",
"│   │   ├── Spread_erdos_renyi_graph_prob_0.1_trial_0.csv@2023-03-23_14.06.24\r\n",
"│   │   ├── Spread_erdos_renyi_graph_prob_0.1_trial_0.csv@2023-03-23_14.19.27\r\n",
"│   │   ├── Spread_erdos_renyi_graph_prob_0.1_trial_0.csv@2023-03-23_14.30.49\r\n",
"│   │   ├── Spread_erdos_renyi_graph_prob_0.1_trial_0.sqlite@2023-03-23_12.57.28\r\n",
"│   │   ├── Spread_erdos_renyi_graph_prob_0.1_trial_0.sqlite@2023-03-23_14.06.24\r\n",
"│   │   ├── Spread_erdos_renyi_graph_prob_0.1_trial_0.sqlite@2023-03-23_14.19.27\r\n",
"│   │   ├── Spread_erdos_renyi_graph_prob_0.1_trial_0.sqlite@2023-03-23_14.30.49\r\n",
"│   │   ├── Spread_erdos_renyi_graph_prob_0.1_trial_0.stats.csv@2023-03-23_12.57.28\r\n",
"│   │   ├── Spread_erdos_renyi_graph_prob_0.1_trial_0.stats.csv@2023-03-23_14.06.24\r\n",
"│   │   ├── Spread_erdos_renyi_graph_prob_0.1_trial_0.stats.csv@2023-03-23_14.19.27\r\n",
"│   │   └── Spread_erdos_renyi_graph_prob_0.1_trial_0.stats.csv@2023-03-23_14.30.49\r\n",
"│   ├── Spread_erdos_renyi_graph_prob_0.1.dumped.yml\r\n",
"│   ├── Spread_erdos_renyi_graph_prob_0.1.sqlite\r\n",
"│   ├── Spread_erdos_renyi_graph_prob_0.1_trial_0.csv\r\n",
"│   ├── Spread_erdos_renyi_graph_prob_0.1_trial_0.sqlite\r\n",
"│   └── Spread_erdos_renyi_graph_prob_0.1_trial_0.stats.csv\r\n",
"├── \u001b[01;34mSpread_erdos_renyi_graph_prob_0.2\u001b[00m\r\n",
"│   ├── \u001b[01;34mbackup\u001b[00m\r\n",
"│   │   ├── Spread_erdos_renyi_graph_prob_0.2.dumped.yml@2023-03-23_12.57.30\r\n",
"│   │   ├── Spread_erdos_renyi_graph_prob_0.2.dumped.yml@2023-03-23_14.06.26\r\n",
"│   │   ├── Spread_erdos_renyi_graph_prob_0.2.dumped.yml@2023-03-23_14.19.28\r\n",
"│   │   ├── Spread_erdos_renyi_graph_prob_0.2.dumped.yml@2023-03-23_14.30.51\r\n",
"│   │   ├── Spread_erdos_renyi_graph_prob_0.2.sqlite@2023-03-23_12.57.31\r\n",
"│   │   ├── Spread_erdos_renyi_graph_prob_0.2.sqlite@2023-03-23_14.06.26\r\n",
"│   │   ├── Spread_erdos_renyi_graph_prob_0.2.sqlite@2023-03-23_14.19.29\r\n",
"│   │   ├── Spread_erdos_renyi_graph_prob_0.2.sqlite@2023-03-23_14.30.51\r\n",
"│   │   ├── Spread_erdos_renyi_graph_prob_0.2_trial_0.csv@2023-03-23_12.57.31\r\n",
"│   │   ├── Spread_erdos_renyi_graph_prob_0.2_trial_0.csv@2023-03-23_14.06.26\r\n",
"│   │   ├── Spread_erdos_renyi_graph_prob_0.2_trial_0.csv@2023-03-23_14.19.29\r\n",
"│   │   ├── Spread_erdos_renyi_graph_prob_0.2_trial_0.csv@2023-03-23_14.30.51\r\n",
"│   │   ├── Spread_erdos_renyi_graph_prob_0.2_trial_0.sqlite@2023-03-23_12.57.31\r\n",
"│   │   ├── Spread_erdos_renyi_graph_prob_0.2_trial_0.sqlite@2023-03-23_14.06.26\r\n",
"│   │   ├── Spread_erdos_renyi_graph_prob_0.2_trial_0.sqlite@2023-03-23_14.19.29\r\n",
"│   │   ├── Spread_erdos_renyi_graph_prob_0.2_trial_0.sqlite@2023-03-23_14.30.51\r\n",
"│   │   ├── Spread_erdos_renyi_graph_prob_0.2_trial_0.stats.csv@2023-03-23_12.57.31\r\n",
"│   │   ├── Spread_erdos_renyi_graph_prob_0.2_trial_0.stats.csv@2023-03-23_14.06.26\r\n",
"│   │   ├── Spread_erdos_renyi_graph_prob_0.2_trial_0.stats.csv@2023-03-23_14.19.29\r\n",
"│   │   └── Spread_erdos_renyi_graph_prob_0.2_trial_0.stats.csv@2023-03-23_14.30.51\r\n",
"│   ├── Spread_erdos_renyi_graph_prob_0.2.dumped.yml\r\n",
"│   ├── Spread_erdos_renyi_graph_prob_0.2.sqlite\r\n",
"│   ├── Spread_erdos_renyi_graph_prob_0.2_trial_0.csv\r\n",
"│   ├── Spread_erdos_renyi_graph_prob_0.2_trial_0.sqlite\r\n",
"│   └── Spread_erdos_renyi_graph_prob_0.2_trial_0.stats.csv\r\n",
"├── \u001b[01;34mSpread_erdos_renyi_graph_prob_0.3\u001b[00m\r\n",
"│   ├── \u001b[01;34mbackup\u001b[00m\r\n",
"│   │   ├── Spread_erdos_renyi_graph_prob_0.3.dumped.yml@2023-03-23_12.57.32\r\n",
"│   │   ├── Spread_erdos_renyi_graph_prob_0.3.dumped.yml@2023-03-23_14.06.28\r\n",
"│   │   ├── Spread_erdos_renyi_graph_prob_0.3.dumped.yml@2023-03-23_14.19.31\r\n",
"│   │   ├── Spread_erdos_renyi_graph_prob_0.3.dumped.yml@2023-03-23_14.30.53\r\n",
"│   │   ├── Spread_erdos_renyi_graph_prob_0.3.sqlite@2023-03-23_12.57.33\r\n",
"│   │   ├── Spread_erdos_renyi_graph_prob_0.3.sqlite@2023-03-23_14.06.28\r\n",
"│   │   ├── Spread_erdos_renyi_graph_prob_0.3.sqlite@2023-03-23_14.19.31\r\n",
"│   │   ├── Spread_erdos_renyi_graph_prob_0.3.sqlite@2023-03-23_14.30.53\r\n",
"│   │   ├── Spread_erdos_renyi_graph_prob_0.3_trial_0.csv@2023-03-23_12.57.33\r\n",
"│   │   ├── Spread_erdos_renyi_graph_prob_0.3_trial_0.csv@2023-03-23_14.06.28\r\n",
"│   │   ├── Spread_erdos_renyi_graph_prob_0.3_trial_0.csv@2023-03-23_14.19.31\r\n",
"│   │   ├── Spread_erdos_renyi_graph_prob_0.3_trial_0.csv@2023-03-23_14.30.53\r\n",
"│   │   ├── Spread_erdos_renyi_graph_prob_0.3_trial_0.sqlite@2023-03-23_12.57.33\r\n",
"│   │   ├── Spread_erdos_renyi_graph_prob_0.3_trial_0.sqlite@2023-03-23_14.06.28\r\n",
"│   │   ├── Spread_erdos_renyi_graph_prob_0.3_trial_0.sqlite@2023-03-23_14.19.31\r\n",
"│   │   ├── Spread_erdos_renyi_graph_prob_0.3_trial_0.sqlite@2023-03-23_14.30.53\r\n",
"│   │   ├── Spread_erdos_renyi_graph_prob_0.3_trial_0.stats.csv@2023-03-23_12.57.33\r\n",
"│   │   ├── Spread_erdos_renyi_graph_prob_0.3_trial_0.stats.csv@2023-03-23_14.06.28\r\n",
"│   │   ├── Spread_erdos_renyi_graph_prob_0.3_trial_0.stats.csv@2023-03-23_14.19.31\r\n",
"│   │   └── Spread_erdos_renyi_graph_prob_0.3_trial_0.stats.csv@2023-03-23_14.30.53\r\n",
"│   ├── Spread_erdos_renyi_graph_prob_0.3.dumped.yml\r\n",
"│   ├── Spread_erdos_renyi_graph_prob_0.3.sqlite\r\n",
"│   ├── Spread_erdos_renyi_graph_prob_0.3_trial_0.csv\r\n",
"│   ├── Spread_erdos_renyi_graph_prob_0.3_trial_0.sqlite\r\n",
"│   └── Spread_erdos_renyi_graph_prob_0.3_trial_0.stats.csv\r\n",
"└── \u001b[01;34mSpread_erdos_renyi_graph_prob_0.4\u001b[00m\r\n",
" ├── \u001b[01;34mbackup\u001b[00m\r\n",
" │   ├── Spread_erdos_renyi_graph_prob_0.4.dumped.yml@2023-03-23_12.57.34\r\n",
" │   ├── Spread_erdos_renyi_graph_prob_0.4.dumped.yml@2023-03-23_14.06.30\r\n",
" │   ├── Spread_erdos_renyi_graph_prob_0.4.dumped.yml@2023-03-23_14.19.33\r\n",
" │   ├── Spread_erdos_renyi_graph_prob_0.4.dumped.yml@2023-03-23_14.30.55\r\n",
" │   ├── Spread_erdos_renyi_graph_prob_0.4.sqlite@2023-03-23_12.57.35\r\n",
" │   ├── Spread_erdos_renyi_graph_prob_0.4.sqlite@2023-03-23_14.06.30\r\n",
" │   ├── Spread_erdos_renyi_graph_prob_0.4.sqlite@2023-03-23_14.19.33\r\n",
" │   ├── Spread_erdos_renyi_graph_prob_0.4.sqlite@2023-03-23_14.30.56\r\n",
" │   ├── Spread_erdos_renyi_graph_prob_0.4_trial_0.csv@2023-03-23_12.57.35\r\n",
" │   ├── Spread_erdos_renyi_graph_prob_0.4_trial_0.csv@2023-03-23_14.06.30\r\n",
" │   ├── Spread_erdos_renyi_graph_prob_0.4_trial_0.csv@2023-03-23_14.19.33\r\n",
" │   ├── Spread_erdos_renyi_graph_prob_0.4_trial_0.csv@2023-03-23_14.30.56\r\n",
" │   ├── Spread_erdos_renyi_graph_prob_0.4_trial_0.sqlite@2023-03-23_12.57.35\r\n",
" │   ├── Spread_erdos_renyi_graph_prob_0.4_trial_0.sqlite@2023-03-23_14.06.30\r\n",
" │   ├── Spread_erdos_renyi_graph_prob_0.4_trial_0.sqlite@2023-03-23_14.19.33\r\n",
" │   ├── Spread_erdos_renyi_graph_prob_0.4_trial_0.sqlite@2023-03-23_14.30.56\r\n",
" │   ├── Spread_erdos_renyi_graph_prob_0.4_trial_0.stats.csv@2023-03-23_12.57.35\r\n",
" │   ├── Spread_erdos_renyi_graph_prob_0.4_trial_0.stats.csv@2023-03-23_14.06.30\r\n",
" │   ├── Spread_erdos_renyi_graph_prob_0.4_trial_0.stats.csv@2023-03-23_14.19.33\r\n",
" │   └── Spread_erdos_renyi_graph_prob_0.4_trial_0.stats.csv@2023-03-23_14.30.56\r\n",
" ├── Spread_erdos_renyi_graph_prob_0.4.dumped.yml\r\n",
" ├── Spread_erdos_renyi_graph_prob_0.4.sqlite\r\n",
" ├── Spread_erdos_renyi_graph_prob_0.4_trial_0.csv\r\n",
" ├── Spread_erdos_renyi_graph_prob_0.4_trial_0.sqlite\r\n",
" └── Spread_erdos_renyi_graph_prob_0.4_trial_0.stats.csv\r\n",
"\r\n",
"20 directories, 250 files\r\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"1.3M\tsoil_output/Spread_barabasi_albert_graph_prob_0.0/backup\r\n",
"1.7M\tsoil_output/Spread_barabasi_albert_graph_prob_0.0\r\n",
"1.3M\tsoil_output/Spread_barabasi_albert_graph_prob_0.1/backup\r\n",
"1.7M\tsoil_output/Spread_barabasi_albert_graph_prob_0.1\r\n",
"1.3M\tsoil_output/Spread_barabasi_albert_graph_prob_0.2/backup\r\n",
"1.6M\tsoil_output/Spread_barabasi_albert_graph_prob_0.2\r\n",
"1.3M\tsoil_output/Spread_barabasi_albert_graph_prob_0.3/backup\r\n",
"1.7M\tsoil_output/Spread_barabasi_albert_graph_prob_0.3\r\n",
"1.3M\tsoil_output/Spread_barabasi_albert_graph_prob_0.4/backup\r\n",
"1.7M\tsoil_output/Spread_barabasi_albert_graph_prob_0.4\r\n",
"2.7M\tsoil_output/Spread_erdos_renyi_graph_prob_0.0/backup\r\n",
"3.4M\tsoil_output/Spread_erdos_renyi_graph_prob_0.0\r\n",
"2.7M\tsoil_output/Spread_erdos_renyi_graph_prob_0.1/backup\r\n",
"3.4M\tsoil_output/Spread_erdos_renyi_graph_prob_0.1\r\n",
"2.7M\tsoil_output/Spread_erdos_renyi_graph_prob_0.2/backup\r\n",
"3.4M\tsoil_output/Spread_erdos_renyi_graph_prob_0.2\r\n",
"2.7M\tsoil_output/Spread_erdos_renyi_graph_prob_0.3/backup\r\n",
"3.4M\tsoil_output/Spread_erdos_renyi_graph_prob_0.3\r\n",
"2.7M\tsoil_output/Spread_erdos_renyi_graph_prob_0.4/backup\r\n",
"3.4M\tsoil_output/Spread_erdos_renyi_graph_prob_0.4\r\n"
]
}
],
"source": [
"!tree soil_output\n",
"!du -xh soil_output/*"
]
},
{
"cell_type": "markdown",
"metadata": {
"ExecuteTime": {
"end_time": "2017-07-02T10:40:14.384177Z",
"start_time": "2017-07-02T12:40:14.381885+02:00"
}
},
"source": [
"## Analysing the results"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Loading data"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Once the simulations are over, we can use soil to analyse the results.\n",
"\n",
"Soil allows you to load results for specific trials, or for a set of trials if you specify a pattern. The specific methods are:\n",
"\n",
"* `analysis.read_data(<directory pattern>)` to load all the results from a directory. e.g. `read_data('my_simulation/')`. For each trial it finds in each folder matching the pattern, it will return the dumped configuration for the simulation, the results of the trial, and the configuration itself. By default, it will try to load data from the sqlite database. \n",
"* `analysis.read_csv(<csv_file>)` to load all the results from a CSV file. e.g. `read_csv('my_simulation/my_simulation_trial0.environment.csv')`\n",
"* `analysis.read_sql(<sqlite_file>)` to load all the results from a sqlite database . e.g. `read_sql('my_simulation/my_simulation_trial0.db.sqlite')`"
]
},
{
"cell_type": "markdown",
"metadata": {
"ExecuteTime": {
"end_time": "2017-07-03T14:44:30.978223Z",
"start_time": "2017-07-03T16:44:30.971952+02:00"
}
},
"source": [
"Let's see it in action by loading the stored results into a pandas dataframe:"
]
},
{
"cell_type": "code",
"execution_count": 14,
"metadata": {
"ExecuteTime": {
"end_time": "2017-10-19T15:57:43.662893Z",
"start_time": "2017-10-19T17:57:43.632252+02:00"
},
"cell_style": "center"
},
"outputs": [],
"source": [
"from soil import analysis\n",
"import pandas as pd"
]
},
{
"cell_type": "code",
"execution_count": 15,
"metadata": {
"ExecuteTime": {
"end_time": "2017-10-19T15:57:44.101253Z",
"start_time": "2017-10-19T17:57:44.039710+02:00"
},
"scrolled": true
},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead tr th {\n",
" text-align: left;\n",
" }\n",
"\n",
" .dataframe thead tr:last-of-type th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr>\n",
" <th>key</th>\n",
" <th>SEED</th>\n",
" <th colspan=\"9\" halign=\"left\">alive</th>\n",
" <th>...</th>\n",
" <th colspan=\"10\" halign=\"left\">state_id</th>\n",
" </tr>\n",
" <tr>\n",
" <th>agent_id</th>\n",
" <th>env</th>\n",
" <th>0</th>\n",
" <th>1</th>\n",
" <th>10</th>\n",
" <th>100</th>\n",
" <th>101</th>\n",
" <th>102</th>\n",
" <th>103</th>\n",
" <th>104</th>\n",
" <th>105</th>\n",
" <th>...</th>\n",
" <th>90</th>\n",
" <th>91</th>\n",
" <th>92</th>\n",
" <th>93</th>\n",
" <th>94</th>\n",
" <th>95</th>\n",
" <th>96</th>\n",
" <th>97</th>\n",
" <th>98</th>\n",
" <th>99</th>\n",
" </tr>\n",
" <tr>\n",
" <th>t_step</th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0.0</th>\n",
" <td>Spread_barabasi_albert_graph_prob_0.0_trial_0</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>...</td>\n",
" <td>neutral</td>\n",
" <td>neutral</td>\n",
" <td>neutral</td>\n",
" <td>neutral</td>\n",
" <td>neutral</td>\n",
" <td>neutral</td>\n",
" <td>neutral</td>\n",
" <td>neutral</td>\n",
" <td>neutral</td>\n",
" <td>neutral</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1.0</th>\n",
" <td>Spread_barabasi_albert_graph_prob_0.0_trial_0</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>...</td>\n",
" <td>neutral</td>\n",
" <td>neutral</td>\n",
" <td>neutral</td>\n",
" <td>neutral</td>\n",
" <td>neutral</td>\n",
" <td>neutral</td>\n",
" <td>neutral</td>\n",
" <td>neutral</td>\n",
" <td>neutral</td>\n",
" <td>neutral</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2.0</th>\n",
" <td>Spread_barabasi_albert_graph_prob_0.0_trial_0</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>...</td>\n",
" <td>neutral</td>\n",
" <td>neutral</td>\n",
" <td>neutral</td>\n",
" <td>neutral</td>\n",
" <td>neutral</td>\n",
" <td>neutral</td>\n",
" <td>neutral</td>\n",
" <td>neutral</td>\n",
" <td>neutral</td>\n",
" <td>neutral</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3.0</th>\n",
" <td>Spread_barabasi_albert_graph_prob_0.0_trial_0</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>...</td>\n",
" <td>neutral</td>\n",
" <td>neutral</td>\n",
" <td>neutral</td>\n",
" <td>neutral</td>\n",
" <td>neutral</td>\n",
" <td>neutral</td>\n",
" <td>neutral</td>\n",
" <td>neutral</td>\n",
" <td>neutral</td>\n",
" <td>neutral</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4.0</th>\n",
" <td>Spread_barabasi_albert_graph_prob_0.0_trial_0</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>...</td>\n",
" <td>neutral</td>\n",
" <td>neutral</td>\n",
" <td>neutral</td>\n",
" <td>neutral</td>\n",
" <td>neutral</td>\n",
" <td>neutral</td>\n",
" <td>neutral</td>\n",
" <td>neutral</td>\n",
" <td>neutral</td>\n",
" <td>neutral</td>\n",
" </tr>\n",
" <tr>\n",
" <th>5.0</th>\n",
" <td>Spread_barabasi_albert_graph_prob_0.0_trial_0</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>...</td>\n",
" <td>neutral</td>\n",
" <td>neutral</td>\n",
" <td>neutral</td>\n",
" <td>neutral</td>\n",
" <td>neutral</td>\n",
" <td>neutral</td>\n",
" <td>neutral</td>\n",
" <td>infected</td>\n",
" <td>neutral</td>\n",
" <td>neutral</td>\n",
" </tr>\n",
" <tr>\n",
" <th>6.0</th>\n",
" <td>Spread_barabasi_albert_graph_prob_0.0_trial_0</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>...</td>\n",
" <td>neutral</td>\n",
" <td>neutral</td>\n",
" <td>neutral</td>\n",
" <td>neutral</td>\n",
" <td>neutral</td>\n",
" <td>neutral</td>\n",
" <td>neutral</td>\n",
" <td>infected</td>\n",
" <td>neutral</td>\n",
" <td>neutral</td>\n",
" </tr>\n",
" <tr>\n",
" <th>7.0</th>\n",
" <td>Spread_barabasi_albert_graph_prob_0.0_trial_0</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>...</td>\n",
" <td>neutral</td>\n",
" <td>neutral</td>\n",
" <td>neutral</td>\n",
" <td>neutral</td>\n",
" <td>neutral</td>\n",
" <td>neutral</td>\n",
" <td>neutral</td>\n",
" <td>infected</td>\n",
" <td>neutral</td>\n",
" <td>neutral</td>\n",
" </tr>\n",
" <tr>\n",
" <th>8.0</th>\n",
" <td>Spread_barabasi_albert_graph_prob_0.0_trial_0</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>...</td>\n",
" <td>neutral</td>\n",
" <td>neutral</td>\n",
" <td>neutral</td>\n",
" <td>neutral</td>\n",
" <td>neutral</td>\n",
" <td>neutral</td>\n",
" <td>neutral</td>\n",
" <td>infected</td>\n",
" <td>neutral</td>\n",
" <td>neutral</td>\n",
" </tr>\n",
" <tr>\n",
" <th>9.0</th>\n",
" <td>Spread_barabasi_albert_graph_prob_0.0_trial_0</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>...</td>\n",
" <td>neutral</td>\n",
" <td>neutral</td>\n",
" <td>neutral</td>\n",
" <td>neutral</td>\n",
" <td>neutral</td>\n",
" <td>neutral</td>\n",
" <td>neutral</td>\n",
" <td>infected</td>\n",
" <td>neutral</td>\n",
" <td>neutral</td>\n",
" </tr>\n",
" <tr>\n",
" <th>10.0</th>\n",
" <td>Spread_barabasi_albert_graph_prob_0.0_trial_0</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>...</td>\n",
" <td>neutral</td>\n",
" <td>neutral</td>\n",
" <td>neutral</td>\n",
" <td>neutral</td>\n",
" <td>neutral</td>\n",
" <td>neutral</td>\n",
" <td>neutral</td>\n",
" <td>infected</td>\n",
" <td>neutral</td>\n",
" <td>neutral</td>\n",
" </tr>\n",
" <tr>\n",
" <th>11.0</th>\n",
" <td>Spread_barabasi_albert_graph_prob_0.0_trial_0</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>...</td>\n",
" <td>infected</td>\n",
" <td>infected</td>\n",
" <td>infected</td>\n",
" <td>infected</td>\n",
" <td>infected</td>\n",
" <td>neutral</td>\n",
" <td>infected</td>\n",
" <td>infected</td>\n",
" <td>infected</td>\n",
" <td>infected</td>\n",
" </tr>\n",
" <tr>\n",
" <th>12.0</th>\n",
" <td>Spread_barabasi_albert_graph_prob_0.0_trial_0</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>...</td>\n",
" <td>infected</td>\n",
" <td>infected</td>\n",
" <td>infected</td>\n",
" <td>infected</td>\n",
" <td>infected</td>\n",
" <td>infected</td>\n",
" <td>infected</td>\n",
" <td>infected</td>\n",
" <td>infected</td>\n",
" <td>infected</td>\n",
" </tr>\n",
" <tr>\n",
" <th>13.0</th>\n",
" <td>Spread_barabasi_albert_graph_prob_0.0_trial_0</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>...</td>\n",
" <td>infected</td>\n",
" <td>infected</td>\n",
" <td>infected</td>\n",
" <td>infected</td>\n",
" <td>infected</td>\n",
" <td>infected</td>\n",
" <td>infected</td>\n",
" <td>infected</td>\n",
" <td>infected</td>\n",
" <td>infected</td>\n",
" </tr>\n",
" <tr>\n",
" <th>14.0</th>\n",
" <td>Spread_barabasi_albert_graph_prob_0.0_trial_0</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>...</td>\n",
" <td>infected</td>\n",
" <td>infected</td>\n",
" <td>infected</td>\n",
" <td>infected</td>\n",
" <td>infected</td>\n",
" <td>infected</td>\n",
" <td>infected</td>\n",
" <td>infected</td>\n",
" <td>infected</td>\n",
" <td>infected</td>\n",
" </tr>\n",
" <tr>\n",
" <th>15.0</th>\n",
" <td>Spread_barabasi_albert_graph_prob_0.0_trial_0</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>...</td>\n",
" <td>infected</td>\n",
" <td>infected</td>\n",
" <td>infected</td>\n",
" <td>infected</td>\n",
" <td>infected</td>\n",
" <td>infected</td>\n",
" <td>infected</td>\n",
" <td>infected</td>\n",
" <td>infected</td>\n",
" <td>infected</td>\n",
" </tr>\n",
" <tr>\n",
" <th>16.0</th>\n",
" <td>Spread_barabasi_albert_graph_prob_0.0_trial_0</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>...</td>\n",
" <td>infected</td>\n",
" <td>infected</td>\n",
" <td>infected</td>\n",
" <td>infected</td>\n",
" <td>infected</td>\n",
" <td>infected</td>\n",
" <td>infected</td>\n",
" <td>infected</td>\n",
" <td>infected</td>\n",
" <td>infected</td>\n",
" </tr>\n",
" <tr>\n",
" <th>17.0</th>\n",
" <td>Spread_barabasi_albert_graph_prob_0.0_trial_0</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>...</td>\n",
" <td>infected</td>\n",
" <td>infected</td>\n",
" <td>infected</td>\n",
" <td>infected</td>\n",
" <td>infected</td>\n",
" <td>infected</td>\n",
" <td>infected</td>\n",
" <td>infected</td>\n",
" <td>infected</td>\n",
" <td>infected</td>\n",
" </tr>\n",
" <tr>\n",
" <th>18.0</th>\n",
" <td>Spread_barabasi_albert_graph_prob_0.0_trial_0</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>...</td>\n",
" <td>infected</td>\n",
" <td>infected</td>\n",
" <td>infected</td>\n",
" <td>infected</td>\n",
" <td>infected</td>\n",
" <td>infected</td>\n",
" <td>infected</td>\n",
" <td>infected</td>\n",
" <td>infected</td>\n",
" <td>infected</td>\n",
" </tr>\n",
" <tr>\n",
" <th>19.0</th>\n",
" <td>Spread_barabasi_albert_graph_prob_0.0_trial_0</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>...</td>\n",
" <td>infected</td>\n",
" <td>infected</td>\n",
" <td>infected</td>\n",
" <td>infected</td>\n",
" <td>infected</td>\n",
" <td>infected</td>\n",
" <td>infected</td>\n",
" <td>infected</td>\n",
" <td>infected</td>\n",
" <td>infected</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"<p>20 rows × 2507 columns</p>\n",
"</div>"
],
"text/plain": [
"key SEED alive \\\n",
"agent_id env 0 1 10 \n",
"t_step \n",
"0.0 Spread_barabasi_albert_graph_prob_0.0_trial_0 True True True \n",
"1.0 Spread_barabasi_albert_graph_prob_0.0_trial_0 True True True \n",
"2.0 Spread_barabasi_albert_graph_prob_0.0_trial_0 True True True \n",
"3.0 Spread_barabasi_albert_graph_prob_0.0_trial_0 True True True \n",
"4.0 Spread_barabasi_albert_graph_prob_0.0_trial_0 True True True \n",
"5.0 Spread_barabasi_albert_graph_prob_0.0_trial_0 True True True \n",
"6.0 Spread_barabasi_albert_graph_prob_0.0_trial_0 True True True \n",
"7.0 Spread_barabasi_albert_graph_prob_0.0_trial_0 True True True \n",
"8.0 Spread_barabasi_albert_graph_prob_0.0_trial_0 True True True \n",
"9.0 Spread_barabasi_albert_graph_prob_0.0_trial_0 True True True \n",
"10.0 Spread_barabasi_albert_graph_prob_0.0_trial_0 True True True \n",
"11.0 Spread_barabasi_albert_graph_prob_0.0_trial_0 True True True \n",
"12.0 Spread_barabasi_albert_graph_prob_0.0_trial_0 True True True \n",
"13.0 Spread_barabasi_albert_graph_prob_0.0_trial_0 True True True \n",
"14.0 Spread_barabasi_albert_graph_prob_0.0_trial_0 True True True \n",
"15.0 Spread_barabasi_albert_graph_prob_0.0_trial_0 True True True \n",
"16.0 Spread_barabasi_albert_graph_prob_0.0_trial_0 True True True \n",
"17.0 Spread_barabasi_albert_graph_prob_0.0_trial_0 True True True \n",
"18.0 Spread_barabasi_albert_graph_prob_0.0_trial_0 True True True \n",
"19.0 Spread_barabasi_albert_graph_prob_0.0_trial_0 True True True \n",
"\n",
"key ... state_id \\\n",
"agent_id 100 101 102 103 104 105 ... 90 91 \n",
"t_step ... \n",
"0.0 True True True True True True ... neutral neutral \n",
"1.0 True True True True True True ... neutral neutral \n",
"2.0 True True True True True True ... neutral neutral \n",
"3.0 True True True True True True ... neutral neutral \n",
"4.0 True True True True True True ... neutral neutral \n",
"5.0 True True True True True True ... neutral neutral \n",
"6.0 True True True True True True ... neutral neutral \n",
"7.0 True True True True True True ... neutral neutral \n",
"8.0 True True True True True True ... neutral neutral \n",
"9.0 True True True True True True ... neutral neutral \n",
"10.0 True True True True True True ... neutral neutral \n",
"11.0 True True True True True True ... infected infected \n",
"12.0 True True True True True True ... infected infected \n",
"13.0 True True True True True True ... infected infected \n",
"14.0 True True True True True True ... infected infected \n",
"15.0 True True True True True True ... infected infected \n",
"16.0 True True True True True True ... infected infected \n",
"17.0 True True True True True True ... infected infected \n",
"18.0 True True True True True True ... infected infected \n",
"19.0 True True True True True True ... infected infected \n",
"\n",
"key \\\n",
"agent_id 92 93 94 95 96 97 \n",
"t_step \n",
"0.0 neutral neutral neutral neutral neutral neutral \n",
"1.0 neutral neutral neutral neutral neutral neutral \n",
"2.0 neutral neutral neutral neutral neutral neutral \n",
"3.0 neutral neutral neutral neutral neutral neutral \n",
"4.0 neutral neutral neutral neutral neutral neutral \n",
"5.0 neutral neutral neutral neutral neutral infected \n",
"6.0 neutral neutral neutral neutral neutral infected \n",
"7.0 neutral neutral neutral neutral neutral infected \n",
"8.0 neutral neutral neutral neutral neutral infected \n",
"9.0 neutral neutral neutral neutral neutral infected \n",
"10.0 neutral neutral neutral neutral neutral infected \n",
"11.0 infected infected infected neutral infected infected \n",
"12.0 infected infected infected infected infected infected \n",
"13.0 infected infected infected infected infected infected \n",
"14.0 infected infected infected infected infected infected \n",
"15.0 infected infected infected infected infected infected \n",
"16.0 infected infected infected infected infected infected \n",
"17.0 infected infected infected infected infected infected \n",
"18.0 infected infected infected infected infected infected \n",
"19.0 infected infected infected infected infected infected \n",
"\n",
"key \n",
"agent_id 98 99 \n",
"t_step \n",
"0.0 neutral neutral \n",
"1.0 neutral neutral \n",
"2.0 neutral neutral \n",
"3.0 neutral neutral \n",
"4.0 neutral neutral \n",
"5.0 neutral neutral \n",
"6.0 neutral neutral \n",
"7.0 neutral neutral \n",
"8.0 neutral neutral \n",
"9.0 neutral neutral \n",
"10.0 neutral neutral \n",
"11.0 infected infected \n",
"12.0 infected infected \n",
"13.0 infected infected \n",
"14.0 infected infected \n",
"15.0 infected infected \n",
"16.0 infected infected \n",
"17.0 infected infected \n",
"18.0 infected infected \n",
"19.0 infected infected \n",
"\n",
"[20 rows x 2507 columns]"
]
},
"execution_count": 15,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df = analysis.read_csv('soil_output/Spread_barabasi_albert_graph_prob_0.0/Spread_barabasi_albert_graph_prob_0.0_trial_0.csv')\n",
"df"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Soil can also process the data for us and split the results into environment attributes and agent attributes:"
]
},
{
"cell_type": "code",
"execution_count": 16,
"metadata": {},
"outputs": [],
"source": [
"env, agents = analysis.split_processed(df)"
]
},
{
"cell_type": "code",
"execution_count": 17,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead tr th {\n",
" text-align: left;\n",
" }\n",
"\n",
" .dataframe thead tr:last-of-type th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr>\n",
" <th>key</th>\n",
" <th colspan=\"10\" halign=\"left\">alive</th>\n",
" <th>...</th>\n",
" <th colspan=\"10\" halign=\"left\">state_id</th>\n",
" </tr>\n",
" <tr>\n",
" <th>agent_id</th>\n",
" <th>0</th>\n",
" <th>1</th>\n",
" <th>10</th>\n",
" <th>100</th>\n",
" <th>101</th>\n",
" <th>102</th>\n",
" <th>103</th>\n",
" <th>104</th>\n",
" <th>105</th>\n",
" <th>106</th>\n",
" <th>...</th>\n",
" <th>90</th>\n",
" <th>91</th>\n",
" <th>92</th>\n",
" <th>93</th>\n",
" <th>94</th>\n",
" <th>95</th>\n",
" <th>96</th>\n",
" <th>97</th>\n",
" <th>98</th>\n",
" <th>99</th>\n",
" </tr>\n",
" <tr>\n",
" <th>t_step</th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0.0</th>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>...</td>\n",
" <td>neutral</td>\n",
" <td>neutral</td>\n",
" <td>neutral</td>\n",
" <td>neutral</td>\n",
" <td>neutral</td>\n",
" <td>neutral</td>\n",
" <td>neutral</td>\n",
" <td>neutral</td>\n",
" <td>neutral</td>\n",
" <td>neutral</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1.0</th>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>...</td>\n",
" <td>neutral</td>\n",
" <td>neutral</td>\n",
" <td>neutral</td>\n",
" <td>neutral</td>\n",
" <td>neutral</td>\n",
" <td>neutral</td>\n",
" <td>neutral</td>\n",
" <td>neutral</td>\n",
" <td>neutral</td>\n",
" <td>neutral</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2.0</th>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>...</td>\n",
" <td>neutral</td>\n",
" <td>neutral</td>\n",
" <td>neutral</td>\n",
" <td>neutral</td>\n",
" <td>neutral</td>\n",
" <td>neutral</td>\n",
" <td>neutral</td>\n",
" <td>neutral</td>\n",
" <td>neutral</td>\n",
" <td>neutral</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3.0</th>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>...</td>\n",
" <td>neutral</td>\n",
" <td>neutral</td>\n",
" <td>neutral</td>\n",
" <td>neutral</td>\n",
" <td>neutral</td>\n",
" <td>neutral</td>\n",
" <td>neutral</td>\n",
" <td>neutral</td>\n",
" <td>neutral</td>\n",
" <td>neutral</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4.0</th>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>...</td>\n",
" <td>neutral</td>\n",
" <td>neutral</td>\n",
" <td>neutral</td>\n",
" <td>neutral</td>\n",
" <td>neutral</td>\n",
" <td>neutral</td>\n",
" <td>neutral</td>\n",
" <td>neutral</td>\n",
" <td>neutral</td>\n",
" <td>neutral</td>\n",
" </tr>\n",
" <tr>\n",
" <th>5.0</th>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>...</td>\n",
" <td>neutral</td>\n",
" <td>neutral</td>\n",
" <td>neutral</td>\n",
" <td>neutral</td>\n",
" <td>neutral</td>\n",
" <td>neutral</td>\n",
" <td>neutral</td>\n",
" <td>infected</td>\n",
" <td>neutral</td>\n",
" <td>neutral</td>\n",
" </tr>\n",
" <tr>\n",
" <th>6.0</th>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>...</td>\n",
" <td>neutral</td>\n",
" <td>neutral</td>\n",
" <td>neutral</td>\n",
" <td>neutral</td>\n",
" <td>neutral</td>\n",
" <td>neutral</td>\n",
" <td>neutral</td>\n",
" <td>infected</td>\n",
" <td>neutral</td>\n",
" <td>neutral</td>\n",
" </tr>\n",
" <tr>\n",
" <th>7.0</th>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>...</td>\n",
" <td>neutral</td>\n",
" <td>neutral</td>\n",
" <td>neutral</td>\n",
" <td>neutral</td>\n",
" <td>neutral</td>\n",
" <td>neutral</td>\n",
" <td>neutral</td>\n",
" <td>infected</td>\n",
" <td>neutral</td>\n",
" <td>neutral</td>\n",
" </tr>\n",
" <tr>\n",
" <th>8.0</th>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>...</td>\n",
" <td>neutral</td>\n",
" <td>neutral</td>\n",
" <td>neutral</td>\n",
" <td>neutral</td>\n",
" <td>neutral</td>\n",
" <td>neutral</td>\n",
" <td>neutral</td>\n",
" <td>infected</td>\n",
" <td>neutral</td>\n",
" <td>neutral</td>\n",
" </tr>\n",
" <tr>\n",
" <th>9.0</th>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>...</td>\n",
" <td>neutral</td>\n",
" <td>neutral</td>\n",
" <td>neutral</td>\n",
" <td>neutral</td>\n",
" <td>neutral</td>\n",
" <td>neutral</td>\n",
" <td>neutral</td>\n",
" <td>infected</td>\n",
" <td>neutral</td>\n",
" <td>neutral</td>\n",
" </tr>\n",
" <tr>\n",
" <th>10.0</th>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>...</td>\n",
" <td>neutral</td>\n",
" <td>neutral</td>\n",
" <td>neutral</td>\n",
" <td>neutral</td>\n",
" <td>neutral</td>\n",
" <td>neutral</td>\n",
" <td>neutral</td>\n",
" <td>infected</td>\n",
" <td>neutral</td>\n",
" <td>neutral</td>\n",
" </tr>\n",
" <tr>\n",
" <th>11.0</th>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>...</td>\n",
" <td>infected</td>\n",
" <td>infected</td>\n",
" <td>infected</td>\n",
" <td>infected</td>\n",
" <td>infected</td>\n",
" <td>neutral</td>\n",
" <td>infected</td>\n",
" <td>infected</td>\n",
" <td>infected</td>\n",
" <td>infected</td>\n",
" </tr>\n",
" <tr>\n",
" <th>12.0</th>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>...</td>\n",
" <td>infected</td>\n",
" <td>infected</td>\n",
" <td>infected</td>\n",
" <td>infected</td>\n",
" <td>infected</td>\n",
" <td>infected</td>\n",
" <td>infected</td>\n",
" <td>infected</td>\n",
" <td>infected</td>\n",
" <td>infected</td>\n",
" </tr>\n",
" <tr>\n",
" <th>13.0</th>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>...</td>\n",
" <td>infected</td>\n",
" <td>infected</td>\n",
" <td>infected</td>\n",
" <td>infected</td>\n",
" <td>infected</td>\n",
" <td>infected</td>\n",
" <td>infected</td>\n",
" <td>infected</td>\n",
" <td>infected</td>\n",
" <td>infected</td>\n",
" </tr>\n",
" <tr>\n",
" <th>14.0</th>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>...</td>\n",
" <td>infected</td>\n",
" <td>infected</td>\n",
" <td>infected</td>\n",
" <td>infected</td>\n",
" <td>infected</td>\n",
" <td>infected</td>\n",
" <td>infected</td>\n",
" <td>infected</td>\n",
" <td>infected</td>\n",
" <td>infected</td>\n",
" </tr>\n",
" <tr>\n",
" <th>15.0</th>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>...</td>\n",
" <td>infected</td>\n",
" <td>infected</td>\n",
" <td>infected</td>\n",
" <td>infected</td>\n",
" <td>infected</td>\n",
" <td>infected</td>\n",
" <td>infected</td>\n",
" <td>infected</td>\n",
" <td>infected</td>\n",
" <td>infected</td>\n",
" </tr>\n",
" <tr>\n",
" <th>16.0</th>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>...</td>\n",
" <td>infected</td>\n",
" <td>infected</td>\n",
" <td>infected</td>\n",
" <td>infected</td>\n",
" <td>infected</td>\n",
" <td>infected</td>\n",
" <td>infected</td>\n",
" <td>infected</td>\n",
" <td>infected</td>\n",
" <td>infected</td>\n",
" </tr>\n",
" <tr>\n",
" <th>17.0</th>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>...</td>\n",
" <td>infected</td>\n",
" <td>infected</td>\n",
" <td>infected</td>\n",
" <td>infected</td>\n",
" <td>infected</td>\n",
" <td>infected</td>\n",
" <td>infected</td>\n",
" <td>infected</td>\n",
" <td>infected</td>\n",
" <td>infected</td>\n",
" </tr>\n",
" <tr>\n",
" <th>18.0</th>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>...</td>\n",
" <td>infected</td>\n",
" <td>infected</td>\n",
" <td>infected</td>\n",
" <td>infected</td>\n",
" <td>infected</td>\n",
" <td>infected</td>\n",
" <td>infected</td>\n",
" <td>infected</td>\n",
" <td>infected</td>\n",
" <td>infected</td>\n",
" </tr>\n",
" <tr>\n",
" <th>19.0</th>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>...</td>\n",
" <td>infected</td>\n",
" <td>infected</td>\n",
" <td>infected</td>\n",
" <td>infected</td>\n",
" <td>infected</td>\n",
" <td>infected</td>\n",
" <td>infected</td>\n",
" <td>infected</td>\n",
" <td>infected</td>\n",
" <td>infected</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"<p>20 rows × 2504 columns</p>\n",
"</div>"
],
"text/plain": [
"key alive ... \\\n",
"agent_id 0 1 10 100 101 102 103 104 105 106 ... \n",
"t_step ... \n",
"0.0 True True True True True True True True True True ... \n",
"1.0 True True True True True True True True True True ... \n",
"2.0 True True True True True True True True True True ... \n",
"3.0 True True True True True True True True True True ... \n",
"4.0 True True True True True True True True True True ... \n",
"5.0 True True True True True True True True True True ... \n",
"6.0 True True True True True True True True True True ... \n",
"7.0 True True True True True True True True True True ... \n",
"8.0 True True True True True True True True True True ... \n",
"9.0 True True True True True True True True True True ... \n",
"10.0 True True True True True True True True True True ... \n",
"11.0 True True True True True True True True True True ... \n",
"12.0 True True True True True True True True True True ... \n",
"13.0 True True True True True True True True True True ... \n",
"14.0 True True True True True True True True True True ... \n",
"15.0 True True True True True True True True True True ... \n",
"16.0 True True True True True True True True True True ... \n",
"17.0 True True True True True True True True True True ... \n",
"18.0 True True True True True True True True True True ... \n",
"19.0 True True True True True True True True True True ... \n",
"\n",
"key state_id \\\n",
"agent_id 90 91 92 93 94 95 \n",
"t_step \n",
"0.0 neutral neutral neutral neutral neutral neutral \n",
"1.0 neutral neutral neutral neutral neutral neutral \n",
"2.0 neutral neutral neutral neutral neutral neutral \n",
"3.0 neutral neutral neutral neutral neutral neutral \n",
"4.0 neutral neutral neutral neutral neutral neutral \n",
"5.0 neutral neutral neutral neutral neutral neutral \n",
"6.0 neutral neutral neutral neutral neutral neutral \n",
"7.0 neutral neutral neutral neutral neutral neutral \n",
"8.0 neutral neutral neutral neutral neutral neutral \n",
"9.0 neutral neutral neutral neutral neutral neutral \n",
"10.0 neutral neutral neutral neutral neutral neutral \n",
"11.0 infected infected infected infected infected neutral \n",
"12.0 infected infected infected infected infected infected \n",
"13.0 infected infected infected infected infected infected \n",
"14.0 infected infected infected infected infected infected \n",
"15.0 infected infected infected infected infected infected \n",
"16.0 infected infected infected infected infected infected \n",
"17.0 infected infected infected infected infected infected \n",
"18.0 infected infected infected infected infected infected \n",
"19.0 infected infected infected infected infected infected \n",
"\n",
"key \n",
"agent_id 96 97 98 99 \n",
"t_step \n",
"0.0 neutral neutral neutral neutral \n",
"1.0 neutral neutral neutral neutral \n",
"2.0 neutral neutral neutral neutral \n",
"3.0 neutral neutral neutral neutral \n",
"4.0 neutral neutral neutral neutral \n",
"5.0 neutral infected neutral neutral \n",
"6.0 neutral infected neutral neutral \n",
"7.0 neutral infected neutral neutral \n",
"8.0 neutral infected neutral neutral \n",
"9.0 neutral infected neutral neutral \n",
"10.0 neutral infected neutral neutral \n",
"11.0 infected infected infected infected \n",
"12.0 infected infected infected infected \n",
"13.0 infected infected infected infected \n",
"14.0 infected infected infected infected \n",
"15.0 infected infected infected infected \n",
"16.0 infected infected infected infected \n",
"17.0 infected infected infected infected \n",
"18.0 infected infected infected infected \n",
"19.0 infected infected infected infected \n",
"\n",
"[20 rows x 2504 columns]"
]
},
"execution_count": 17,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"agents"
]
},
{
"cell_type": "markdown",
"metadata": {
"ExecuteTime": {
"end_time": "2017-10-18T14:01:00.669671Z",
"start_time": "2017-10-18T16:01:00.635624+02:00"
}
},
"source": [
"The index of the results are the simulation step. Hence, we can access the state of the simulation at a given step (e.g., 13): "
]
},
{
"cell_type": "code",
"execution_count": 18,
"metadata": {
"ExecuteTime": {
"end_time": "2017-10-19T15:57:47.132212Z",
"start_time": "2017-10-19T17:57:47.084737+02:00"
},
"scrolled": true
},
"outputs": [
{
"data": {
"text/plain": [
"agent_id\n",
"0 infected\n",
"1 infected\n",
"10 infected\n",
"100 infected\n",
"101 infected\n",
" ... \n",
"95 infected\n",
"96 infected\n",
"97 infected\n",
"98 infected\n",
"99 infected\n",
"Name: 13.0, Length: 500, dtype: object"
]
},
"execution_count": 18,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"agents.loc[13, 'state_id']"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Or, we can perform more complex tasks such as showing the agents that have changed their state between two simulation steps (2 and 1):"
]
},
{
"cell_type": "code",
"execution_count": 19,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"2"
]
},
"execution_count": 19,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"(agents.loc[2]['state_id'] != agents.loc[1]['state_id']).sum()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"To focus on specific agents, we can swap the levels of the index:"
]
},
{
"cell_type": "code",
"execution_count": 20,
"metadata": {
"ExecuteTime": {
"end_time": "2017-10-19T15:57:49.046261Z",
"start_time": "2017-10-19T17:57:49.019721+02:00"
},
"scrolled": true
},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead tr th {\n",
" text-align: left;\n",
" }\n",
"\n",
" .dataframe thead tr:last-of-type th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr>\n",
" <th>agent_id</th>\n",
" <th>0</th>\n",
" <th>1</th>\n",
" <th>10</th>\n",
" <th>100</th>\n",
" <th>101</th>\n",
" <th>102</th>\n",
" <th>103</th>\n",
" <th>104</th>\n",
" <th>105</th>\n",
" <th>106</th>\n",
" <th>...</th>\n",
" <th>90</th>\n",
" <th>91</th>\n",
" <th>92</th>\n",
" <th>93</th>\n",
" <th>94</th>\n",
" <th>95</th>\n",
" <th>96</th>\n",
" <th>97</th>\n",
" <th>98</th>\n",
" <th>99</th>\n",
" </tr>\n",
" <tr>\n",
" <th>key</th>\n",
" <th>alive</th>\n",
" <th>alive</th>\n",
" <th>alive</th>\n",
" <th>alive</th>\n",
" <th>alive</th>\n",
" <th>alive</th>\n",
" <th>alive</th>\n",
" <th>alive</th>\n",
" <th>alive</th>\n",
" <th>alive</th>\n",
" <th>...</th>\n",
" <th>state_id</th>\n",
" <th>state_id</th>\n",
" <th>state_id</th>\n",
" <th>state_id</th>\n",
" <th>state_id</th>\n",
" <th>state_id</th>\n",
" <th>state_id</th>\n",
" <th>state_id</th>\n",
" <th>state_id</th>\n",
" <th>state_id</th>\n",
" </tr>\n",
" <tr>\n",
" <th>t_step</th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0.0</th>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>...</td>\n",
" <td>neutral</td>\n",
" <td>neutral</td>\n",
" <td>neutral</td>\n",
" <td>neutral</td>\n",
" <td>neutral</td>\n",
" <td>neutral</td>\n",
" <td>neutral</td>\n",
" <td>neutral</td>\n",
" <td>neutral</td>\n",
" <td>neutral</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1.0</th>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>...</td>\n",
" <td>neutral</td>\n",
" <td>neutral</td>\n",
" <td>neutral</td>\n",
" <td>neutral</td>\n",
" <td>neutral</td>\n",
" <td>neutral</td>\n",
" <td>neutral</td>\n",
" <td>neutral</td>\n",
" <td>neutral</td>\n",
" <td>neutral</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2.0</th>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>...</td>\n",
" <td>neutral</td>\n",
" <td>neutral</td>\n",
" <td>neutral</td>\n",
" <td>neutral</td>\n",
" <td>neutral</td>\n",
" <td>neutral</td>\n",
" <td>neutral</td>\n",
" <td>neutral</td>\n",
" <td>neutral</td>\n",
" <td>neutral</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3.0</th>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>...</td>\n",
" <td>neutral</td>\n",
" <td>neutral</td>\n",
" <td>neutral</td>\n",
" <td>neutral</td>\n",
" <td>neutral</td>\n",
" <td>neutral</td>\n",
" <td>neutral</td>\n",
" <td>neutral</td>\n",
" <td>neutral</td>\n",
" <td>neutral</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4.0</th>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>...</td>\n",
" <td>neutral</td>\n",
" <td>neutral</td>\n",
" <td>neutral</td>\n",
" <td>neutral</td>\n",
" <td>neutral</td>\n",
" <td>neutral</td>\n",
" <td>neutral</td>\n",
" <td>neutral</td>\n",
" <td>neutral</td>\n",
" <td>neutral</td>\n",
" </tr>\n",
" <tr>\n",
" <th>5.0</th>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>...</td>\n",
" <td>neutral</td>\n",
" <td>neutral</td>\n",
" <td>neutral</td>\n",
" <td>neutral</td>\n",
" <td>neutral</td>\n",
" <td>neutral</td>\n",
" <td>neutral</td>\n",
" <td>infected</td>\n",
" <td>neutral</td>\n",
" <td>neutral</td>\n",
" </tr>\n",
" <tr>\n",
" <th>6.0</th>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>...</td>\n",
" <td>neutral</td>\n",
" <td>neutral</td>\n",
" <td>neutral</td>\n",
" <td>neutral</td>\n",
" <td>neutral</td>\n",
" <td>neutral</td>\n",
" <td>neutral</td>\n",
" <td>infected</td>\n",
" <td>neutral</td>\n",
" <td>neutral</td>\n",
" </tr>\n",
" <tr>\n",
" <th>7.0</th>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>...</td>\n",
" <td>neutral</td>\n",
" <td>neutral</td>\n",
" <td>neutral</td>\n",
" <td>neutral</td>\n",
" <td>neutral</td>\n",
" <td>neutral</td>\n",
" <td>neutral</td>\n",
" <td>infected</td>\n",
" <td>neutral</td>\n",
" <td>neutral</td>\n",
" </tr>\n",
" <tr>\n",
" <th>8.0</th>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>...</td>\n",
" <td>neutral</td>\n",
" <td>neutral</td>\n",
" <td>neutral</td>\n",
" <td>neutral</td>\n",
" <td>neutral</td>\n",
" <td>neutral</td>\n",
" <td>neutral</td>\n",
" <td>infected</td>\n",
" <td>neutral</td>\n",
" <td>neutral</td>\n",
" </tr>\n",
" <tr>\n",
" <th>9.0</th>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>...</td>\n",
" <td>neutral</td>\n",
" <td>neutral</td>\n",
" <td>neutral</td>\n",
" <td>neutral</td>\n",
" <td>neutral</td>\n",
" <td>neutral</td>\n",
" <td>neutral</td>\n",
" <td>infected</td>\n",
" <td>neutral</td>\n",
" <td>neutral</td>\n",
" </tr>\n",
" <tr>\n",
" <th>10.0</th>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>...</td>\n",
" <td>neutral</td>\n",
" <td>neutral</td>\n",
" <td>neutral</td>\n",
" <td>neutral</td>\n",
" <td>neutral</td>\n",
" <td>neutral</td>\n",
" <td>neutral</td>\n",
" <td>infected</td>\n",
" <td>neutral</td>\n",
" <td>neutral</td>\n",
" </tr>\n",
" <tr>\n",
" <th>11.0</th>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>...</td>\n",
" <td>infected</td>\n",
" <td>infected</td>\n",
" <td>infected</td>\n",
" <td>infected</td>\n",
" <td>infected</td>\n",
" <td>neutral</td>\n",
" <td>infected</td>\n",
" <td>infected</td>\n",
" <td>infected</td>\n",
" <td>infected</td>\n",
" </tr>\n",
" <tr>\n",
" <th>12.0</th>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>...</td>\n",
" <td>infected</td>\n",
" <td>infected</td>\n",
" <td>infected</td>\n",
" <td>infected</td>\n",
" <td>infected</td>\n",
" <td>infected</td>\n",
" <td>infected</td>\n",
" <td>infected</td>\n",
" <td>infected</td>\n",
" <td>infected</td>\n",
" </tr>\n",
" <tr>\n",
" <th>13.0</th>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>...</td>\n",
" <td>infected</td>\n",
" <td>infected</td>\n",
" <td>infected</td>\n",
" <td>infected</td>\n",
" <td>infected</td>\n",
" <td>infected</td>\n",
" <td>infected</td>\n",
" <td>infected</td>\n",
" <td>infected</td>\n",
" <td>infected</td>\n",
" </tr>\n",
" <tr>\n",
" <th>14.0</th>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>...</td>\n",
" <td>infected</td>\n",
" <td>infected</td>\n",
" <td>infected</td>\n",
" <td>infected</td>\n",
" <td>infected</td>\n",
" <td>infected</td>\n",
" <td>infected</td>\n",
" <td>infected</td>\n",
" <td>infected</td>\n",
" <td>infected</td>\n",
" </tr>\n",
" <tr>\n",
" <th>15.0</th>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>...</td>\n",
" <td>infected</td>\n",
" <td>infected</td>\n",
" <td>infected</td>\n",
" <td>infected</td>\n",
" <td>infected</td>\n",
" <td>infected</td>\n",
" <td>infected</td>\n",
" <td>infected</td>\n",
" <td>infected</td>\n",
" <td>infected</td>\n",
" </tr>\n",
" <tr>\n",
" <th>16.0</th>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>...</td>\n",
" <td>infected</td>\n",
" <td>infected</td>\n",
" <td>infected</td>\n",
" <td>infected</td>\n",
" <td>infected</td>\n",
" <td>infected</td>\n",
" <td>infected</td>\n",
" <td>infected</td>\n",
" <td>infected</td>\n",
" <td>infected</td>\n",
" </tr>\n",
" <tr>\n",
" <th>17.0</th>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>...</td>\n",
" <td>infected</td>\n",
" <td>infected</td>\n",
" <td>infected</td>\n",
" <td>infected</td>\n",
" <td>infected</td>\n",
" <td>infected</td>\n",
" <td>infected</td>\n",
" <td>infected</td>\n",
" <td>infected</td>\n",
" <td>infected</td>\n",
" </tr>\n",
" <tr>\n",
" <th>18.0</th>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>...</td>\n",
" <td>infected</td>\n",
" <td>infected</td>\n",
" <td>infected</td>\n",
" <td>infected</td>\n",
" <td>infected</td>\n",
" <td>infected</td>\n",
" <td>infected</td>\n",
" <td>infected</td>\n",
" <td>infected</td>\n",
" <td>infected</td>\n",
" </tr>\n",
" <tr>\n",
" <th>19.0</th>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>...</td>\n",
" <td>infected</td>\n",
" <td>infected</td>\n",
" <td>infected</td>\n",
" <td>infected</td>\n",
" <td>infected</td>\n",
" <td>infected</td>\n",
" <td>infected</td>\n",
" <td>infected</td>\n",
" <td>infected</td>\n",
" <td>infected</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"<p>20 rows × 2504 columns</p>\n",
"</div>"
],
"text/plain": [
"agent_id 0 1 10 100 101 102 103 104 105 106 ... \\\n",
"key alive alive alive alive alive alive alive alive alive alive ... \n",
"t_step ... \n",
"0.0 True True True True True True True True True True ... \n",
"1.0 True True True True True True True True True True ... \n",
"2.0 True True True True True True True True True True ... \n",
"3.0 True True True True True True True True True True ... \n",
"4.0 True True True True True True True True True True ... \n",
"5.0 True True True True True True True True True True ... \n",
"6.0 True True True True True True True True True True ... \n",
"7.0 True True True True True True True True True True ... \n",
"8.0 True True True True True True True True True True ... \n",
"9.0 True True True True True True True True True True ... \n",
"10.0 True True True True True True True True True True ... \n",
"11.0 True True True True True True True True True True ... \n",
"12.0 True True True True True True True True True True ... \n",
"13.0 True True True True True True True True True True ... \n",
"14.0 True True True True True True True True True True ... \n",
"15.0 True True True True True True True True True True ... \n",
"16.0 True True True True True True True True True True ... \n",
"17.0 True True True True True True True True True True ... \n",
"18.0 True True True True True True True True True True ... \n",
"19.0 True True True True True True True True True True ... \n",
"\n",
"agent_id 90 91 92 93 94 95 \\\n",
"key state_id state_id state_id state_id state_id state_id \n",
"t_step \n",
"0.0 neutral neutral neutral neutral neutral neutral \n",
"1.0 neutral neutral neutral neutral neutral neutral \n",
"2.0 neutral neutral neutral neutral neutral neutral \n",
"3.0 neutral neutral neutral neutral neutral neutral \n",
"4.0 neutral neutral neutral neutral neutral neutral \n",
"5.0 neutral neutral neutral neutral neutral neutral \n",
"6.0 neutral neutral neutral neutral neutral neutral \n",
"7.0 neutral neutral neutral neutral neutral neutral \n",
"8.0 neutral neutral neutral neutral neutral neutral \n",
"9.0 neutral neutral neutral neutral neutral neutral \n",
"10.0 neutral neutral neutral neutral neutral neutral \n",
"11.0 infected infected infected infected infected neutral \n",
"12.0 infected infected infected infected infected infected \n",
"13.0 infected infected infected infected infected infected \n",
"14.0 infected infected infected infected infected infected \n",
"15.0 infected infected infected infected infected infected \n",
"16.0 infected infected infected infected infected infected \n",
"17.0 infected infected infected infected infected infected \n",
"18.0 infected infected infected infected infected infected \n",
"19.0 infected infected infected infected infected infected \n",
"\n",
"agent_id 96 97 98 99 \n",
"key state_id state_id state_id state_id \n",
"t_step \n",
"0.0 neutral neutral neutral neutral \n",
"1.0 neutral neutral neutral neutral \n",
"2.0 neutral neutral neutral neutral \n",
"3.0 neutral neutral neutral neutral \n",
"4.0 neutral neutral neutral neutral \n",
"5.0 neutral infected neutral neutral \n",
"6.0 neutral infected neutral neutral \n",
"7.0 neutral infected neutral neutral \n",
"8.0 neutral infected neutral neutral \n",
"9.0 neutral infected neutral neutral \n",
"10.0 neutral infected neutral neutral \n",
"11.0 infected infected infected infected \n",
"12.0 infected infected infected infected \n",
"13.0 infected infected infected infected \n",
"14.0 infected infected infected infected \n",
"15.0 infected infected infected infected \n",
"16.0 infected infected infected infected \n",
"17.0 infected infected infected infected \n",
"18.0 infected infected infected infected \n",
"19.0 infected infected infected infected \n",
"\n",
"[20 rows x 2504 columns]"
]
},
"execution_count": 20,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"agents.swaplevel(axis=1)"
]
},
{
"cell_type": "markdown",
"metadata": {
"ExecuteTime": {
"end_time": "2017-10-19T10:35:40.140920Z",
"start_time": "2017-10-19T12:35:40.106265+02:00"
}
},
"source": [
"### Plotting data"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"If you don't want to work with pandas, you can also use some pre-defined functions from soil to conveniently plot the results:"
]
},
{
"cell_type": "code",
"execution_count": 21,
"metadata": {
"ExecuteTime": {
"end_time": "2017-10-19T15:57:52.271094Z",
"start_time": "2017-10-19T17:57:51.102434+02:00"
}
},
"outputs": [
{
"data": {
"image/png": "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
"text/plain": [
"<Figure size 640x480 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"analysis.plot_all('soil_output/Spread_barabasi_albert_graph_prob_0.0/', analysis.get_count, 'state_id');"
]
},
{
"cell_type": "code",
"execution_count": 22,
"metadata": {
"ExecuteTime": {
"end_time": "2017-10-19T15:57:57.982007Z",
"start_time": "2017-10-19T17:57:52.273160+02:00"
},
"scrolled": false
},
"outputs": [
{
"data": {
"image/png": "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
"text/plain": [
"<Figure size 640x480 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"analysis.plot_all('soil_output/Spread_barabasi_albert_graph_prob_0.3/', analysis.get_count, 'state_id');"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"You can use wildcards in the results path:"
]
},
{
"cell_type": "code",
"execution_count": 23,
"metadata": {
"scrolled": false
},
"outputs": [
{
"data": {
"image/png": "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
"text/plain": [
"<Figure size 640x480 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAigAAAHHCAYAAACV96NPAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/bCgiHAAAACXBIWXMAAA9hAAAPYQGoP6dpAAB/uElEQVR4nO3dd3gU5drH8e9m0zsJqRASOgk19FAEASkigqBYUEIRjxhU5IjKeZWiB7BhoSrKAY7IQbGgIh3pvQuEGgKhJYEkpJK2O+8fS5YsSSCbNpvk/lzXXtmdmZ25d1P2l2ee5xmNoigKQgghhBAWxErtAoQQQggh7iUBRQghhBAWRwKKEEIIISyOBBQhhBBCWBwJKEIIIYSwOBJQhBBCCGFxJKAIIYQQwuJIQBFCCCGExZGAIoQQQgiLIwFFVEkjRowgKCjIrOd0796dZs2alU9BJXTx4kU0Gg2ffvpphR63JO9fcU2dOhWNRmOyTKPRMG7cuHI5XnWQ957evHlT7VLMUlnrFhVDAooA4Pjx4zz55JMEBgZib29PrVq1eOSRR5gzZ47apQlRpiIjI5k6dSoXL15UuxRRxm7dusVLL72El5cXTk5OPPzwwxw+fNjs/eTk5BASEqLKPwfiLgkogt27d9O2bVuOHTvGmDFjmDt3Li+++CJWVlZ8+eWXapcnVPDNN99w5swZtcsoF5GRkUybNk0CShWj1+vp378/y5cvZ9y4cXz88cfEx8fTvXt3zp07Z9a+5syZQ0xMTDlVKorLWu0ChPqmT5+Om5sbBw4cwN3d3WRdfHx8mRwjPT0dJyenMtlXZZabm4ter8fW1lbtUu7LxsZG7RLKXGZmpqrvu16vJzs7G3t7e9VqKG9q/nz/9NNP7N69m5UrV/Lkk08CMHToUBo1asSUKVNYvnx5sfYTHx/P+++/z9tvv83kyZPLs2TxANKCIoiKiqJp06YFwgmAt7e38X5eP4Hvv/+exo0bY29vT5s2bdi+fbvJc/LOK0dGRvLcc89Ro0YNunTpYly/bNky2rRpg4ODAx4eHjzzzDNcvnzZZB87duzgqaeeok6dOtjZ2REQEMAbb7zB7du3C9S4atUqmjVrhr29Pc2aNePXX38t1ftx6NAhOnXqhIODA3Xr1uWrr74yWZ+dnc3kyZNp06YNbm5uODk50bVrV7Zs2WKyXf7+I1988QX169fHzs6OyMjIYu8jv88//5zAwEAcHBzo1q0bJ06cMFn/999/M2LECOrVq4e9vT2+vr6MGjWKhIQEk+1SU1MZP348QUFB2NnZ4e3tzSOPPGLSFF6SPijmfM+K8qCfLYCrV68yatQofHx8sLOzo2nTpvznP/8x2Wbr1q1oNBpWrFjBu+++S61atXB0dGT27Nk89dRTADz88MNoNBo0Gg1bt24tdo1bt26lbdu22NvbU79+fb7++uv79qv5/vvvadq0KXZ2dqxbtw6ATz/9lE6dOuHp6YmDgwNt2rThp59+KnCs4v7O5bl16xYjRozA3d0dNzc3Ro4cSUZGRrFfGxi+987Ozly4cIE+ffrg5OSEv78/77//PoqiGLe73883wF9//UXXrl1xcnLC3d2dgQMHcurUqUKPefPmTYYOHYqrqyuenp68/vrrZGZmmlX3Tz/9hI+PD4MHDzYu8/LyYujQofz2229kZWUVaz/vvPMOjRs35vnnnzfr+KLsSQuKIDAwkD179nDixIkHdhLdtm0bP/zwA6+99hp2dnbMnz+fvn37sn///gLPfeqpp2jYsCEzZsww/mGbPn067733HkOHDuXFF1/kxo0bzJkzh4ceeogjR44YQ9LKlSvJyMhg7NixeHp6sn//fubMmcOVK1dYuXKl8RgbNmxgyJAhhISEMHPmTBISEhg5ciS1a9cu0XuRlJTEo48+ytChQ3n22Wf58ccfGTt2LLa2towaNQqAlJQUvv32W5599lnGjBlDamoqixYtok+fPuzfv59WrVqZ7HPx4sVkZmby0ksvYWdnh4eHh9n7+O9//0tqaioRERFkZmby5Zdf0qNHD44fP46Pjw8AGzdu5MKFC4wcORJfX19OnjzJwoULOXnyJHv37jV+gL788sv89NNPjBs3jpCQEBISEti5cyenTp2idevWJXrfoPjfs6IU52crLi6Ojh07Gj+4vby8WLt2LaNHjyYlJYXx48eb7PODDz7A1taWN998k6ysLHr37s1rr73G7Nmz+de//kVwcDCA8euDHDlyhL59++Ln58e0adPQ6XS8//77eHl5Fbr9X3/9xY8//si4ceOoWbOmMfR9+eWXPP744wwbNozs7GxWrFjBU089xerVq+nfv7/Z70ueoUOHUrduXWbOnMnhw4f59ttv8fb25qOPPirW68uj0+no27cvHTt25OOPP2bdunVMmTKF3Nxc3n//fZNtC/v53rRpE/369aNevXpMnTqV27dvM2fOHDp37szhw4cLhN+hQ4cSFBTEzJkz2bt3L7NnzyYpKYn//ve/xa75yJEjtG7dGisr0/+727dvz8KFCzl79izNmze/7z7279/P0qVL2blzZ4HAKVSgiGpvw4YNilarVbRarRIWFqa89dZbyvr165Xs7GyT7QAFUA4ePGhcdunSJcXe3l554oknjMumTJmiAMqzzz5r8vyLFy8qWq1WmT59usny48ePK9bW1ibLMzIyCtQ5c+ZMRaPRKJcuXTIua9WqleLn56fcunXL5PUASmBgoFnvQ7du3RRAmTVrlnFZVlaW0qpVK8Xb29v4fuTm5ipZWVkmz01KSlJ8fHyUUaNGGZdFR0crgOLq6qrEx8ebbG/uPhwcHJQrV64Yl+/bt08BlDfeeMO4rLD37H//+58CKNu3bzcuc3NzUyIiIu77XoSHh5v9/hX3e5b385FfcX+2Ro8erfj5+Sk3b940ef4zzzyjuLm5GWvYsmWLAij16tUrUNfKlSsVQNmyZYtZr09RFGXAgAGKo6OjcvXqVeOyc+fOKdbW1oW+JisrK+XkyZMF9nNvTdnZ2UqzZs2UHj16FNiHOb9z+X92FEVRnnjiCcXT09Os1xgeHq4Ayquvvmpcptfrlf79+yu2trbKjRs3FEW5/8933u9MQkKCcdmxY8cUKysrZfjw4QXqfvzxx02e/8orryiAcuzYsWLX7eTkVOD1K4qi/PnnnwqgrFu37r7P1+v1Svv27Y1/t/Je3yeffFLsGkTZklM8gkceeYQ9e/bw+OOPc+zYMT7++GP69OlDrVq1+P333022DQsLo02bNsbHderUYeDAgaxfvx6dTmey7csvv2zy+JdffkGv1zN06FBu3rxpvPn6+tKwYUOT0xsODg7G++np6dy8eZNOnTqhKApHjhwB4Pr16xw9epTw8HDc3NxMXk9ISEiJ3gtra2v+8Y9/GB/b2tryj3/8g/j4eA4dOgSAVqs1nmPX6/UkJiaSm5tL27ZtCx0xMGTIkAL/YZu7j0GDBlGrVi3j4/bt29OhQwfWrFljXJb/PcvMzOTmzZt07NgRwGSf7u7u7Nu3j2vXrhX/jSmG4nzP7udBP1uKovDzzz8zYMAAFEUx+Rnq06cPycnJBd678PBwk7pKQ6fTsWnTJgYNGoS/v79xeYMGDejXr1+hz+nWrVuhP4v5a0pKSiI5OZmuXbsW+r0vze9c165dSUhIICUlpXgvMp/8w77zWqyys7PZtGmTyXb3/nzn/V6OGDECDw8P4/IWLVrwyCOPmPzM5omIiDB5/OqrrwIUum1Rbt++jZ2dXYHleX1+HnSqccmSJRw/ftzs1iZRfiSgCADatWvHL7/8QlJSEvv372fSpEmkpqby5JNPGs8pAzRs2LDAcxs1akRGRgY3btwwWV63bl2Tx+fOnUNRFBo2bIiXl5fJ7dSpUyYdcmNiYox/4JydnfHy8qJbt24AJCcnA3Dp0qUia2rcuHGJ3gd/f/8CnXkbNWoEYDLqY+nSpbRo0QJ7e3s8PT3x8vLizz//NNaW373vQ0n2UdT7nr+mxMREXn/9dXx8fHBwcMDLy8t47Pz7/Pjjjzlx4gQBAQG0b9+eqVOncuHChaLflGIqzvfsfh7
"text/plain": [
"<Figure size 640x480 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"image/png": "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
"text/plain": [
"<Figure size 640x480 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"image/png": "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
"text/plain": [
"<Figure size 640x480 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"image/png": "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
"text/plain": [
"<Figure size 640x480 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"analysis.plot_all('soil_output/Spread_barabasi*/', analysis.get_count, 'state_id');"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"If we compare these results to those of the other graph model (a fully-connected graph), we can see a stark difference:"
]
},
{
"cell_type": "code",
"execution_count": 24,
"metadata": {
"ExecuteTime": {
"end_time": "2017-10-19T15:58:26.903783Z",
"start_time": "2017-10-19T17:57:57.983957+02:00"
},
"scrolled": false
},
"outputs": [
{
"data": {
"image/png": "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
"text/plain": [
"<Figure size 640x480 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"image/png": "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
"text/plain": [
"<Figure size 640x480 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"image/png": "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
"text/plain": [
"<Figure size 640x480 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"image/png": "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
"text/plain": [
"<Figure size 640x480 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAigAAAHHCAYAAACV96NPAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/bCgiHAAAACXBIWXMAAA9hAAAPYQGoP6dpAACSfElEQVR4nOzddVyV9///8cehGwQJsbA7sFGwE7trit2x0G3u45xuUxe62TmnbtbsxJ4Bit3YgViISUifc/3+OD/Pd8cERS/idb/duOnVz+tw4Ly43u/3dWkURVEQQgghhMhATNQOIIQQQgjxIilQhBBCCJHhSIEihBBCiAxHChQhhBBCZDhSoAghhBAiw5ECRQghhBAZjhQoQgghhMhwpEARQgghRIYjBYoQQgghMhwpUIR4hR49euDl5aV2DAMvLy969OihdowMJSu9JhqNhiFDhqgdI80ya26ROUiBItLF2bNnadeuHfnz58fKyorcuXPToEEDpk+frnY0IUQmsXHjRipUqICVlRX58uXju+++IyUl5a3b3b17l08++YRixYphb2+Pk5MTVapUYfHixcjTXDIvM7UDiMzv4MGD1KlTh3z58tG3b188PDy4desWhw4dYurUqQwdOlTtiCILunTpEiYm8jdWVrF161ZatWpF7dq1mT59OmfPnuXHH38kMjKS2bNnv3Hbhw8fcvv2bdq1a0e+fPlITk5m586d9OjRg0uXLjFhwoSPdBYiPUmBIt7b+PHjcXR05OjRozg5ORkti4yMTJdjPHv2DFtb23TZV0aU2c4vJSUFnU6HhYWFahksLS0/6vEy2/foXah5jiNGjKBs2bLs2LEDMzP9R5ODgwMTJkxg+PDhFC9e/LXbli1blr179xrNGzJkCM2bN2fatGn88MMPmJqafsj44gOQPz/Ee7t27RqlSpV6qTgBcHNzM/z/eXv10qVLKVasGFZWVlSsWJH9+/cbbTN27Fg0Gg3nz5+nS5cu5MiRA19fX8PyJUuWULFiRaytrXF2dqZTp07cunXLaB9BQUG0b9+efPnyYWlpSd68efnss8+Ij49/KeP69espXbo0VlZWlC5dmnXr1r3za3H48GEaN26Mo6MjNjY21KpViwMHDqT6/BRF4ccffyRPnjzY2NhQp04dQkNDX3ms69ev0759e5ydnbGxsaFatWps2bLlpfWmT59OqVKl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
"text/plain": [
"<Figure size 640x480 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"analysis.plot_all('soil_output/Spread_erdos*', analysis.get_count, 'state_id');"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"The previous cells were using the `count_value` function for aggregation. There's another function to plot numeral values:"
]
},
{
"cell_type": "code",
"execution_count": 25,
"metadata": {
"scrolled": false
},
"outputs": [
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAiMAAAHHCAYAAABtF1i4AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/bCgiHAAAACXBIWXMAAA9hAAAPYQGoP6dpAABwFElEQVR4nO3dd3hTZfsH8G+SNulu6R6UtpSyoa1lDwFFpgzZyE+Gg1dEGRUZvgLiAmUIIg5QUF9UpoDKFtmUIbRsCoUuRhd00d3k+f1RGgkdNKXtSdLv57pyQU+ec859cpLm7nOe+zkyIYQAERERkUTkUgdAREREtRuTESIiIpIUkxEiIiKSFJMRIiIikhSTESIiIpIUkxEiIiKSFJMRIiIikhSTESIiIpIUkxEiIiKSFJMRIgBjx46Fr6+v1GFo+fr6YuzYsVKHYVBM6TWRyWR48803pQ5Db8YaNxk+JiNUKefPn8eQIUPg4+MDCwsLeHl54bnnnsPy5culDo2IjMTvv/+Op556ChYWFqhXrx7mzp2LwsLCCq2r0Wjw2Wefwc/PDxYWFmjZsiV+/fXXao6YqouZ1AGQ8Tl27Bi6deuGevXq4bXXXoO7uzvi4+Nx/PhxLFu2DG+99ZbUIZIJioyMhFzOv59Mxc6dOzFw4EB07doVy5cvx/nz5/HRRx8hKSkJX3/99WPX/+9//4sFCxbgtddeQ+vWrbFt2za8+OKLkMlkGDFiRA0cAVUlJiOkt48//hj29vY4deoUHBwcdJ5LSkqqkn1kZWXB2tq6SrZliIzt+AoLC6HRaKBUKiWLQaVS1ej+jO0cVYaUxzht2jS0bNkSe/bsgZlZ0VeRnZ0dPvnkE0yePBmNGzcuc91bt25h8eLFmDhxIr788ksAwKuvvoouXbrgnXfewdChQ6FQKGrkOKhq8M8M0tv169fRrFmzEokIALi6umr/X3x9+eeff0ajRo1gYWGBkJAQHDp0SGed999/HzKZDJcuXcKLL76IOnXqoFOnTtrn165di5CQEFhaWsLR0REjRoxAfHy8zjYOHz6MoUOHol69elCpVPD29sbUqVORk5NTIsatW7eiefPmsLCwQPPmzbFly5ZKvxYnTpxAr169YG9vDysrK3Tp0gVHjx6t8PEJIfDRRx+hbt26sLKyQrdu3XDx4sVS93Xjxg0MHToUjo6OsLKyQrt27bB9+/YS7ZYvX45mzZrBysoKderUQatWrfDLL79U+JhiYmIgk8mwaNEiLF26FP7+/lCpVLh06RIA4MqVKxgyZAgcHR1hYWGBVq1a4ffff9fZxg8//ACZTIajR48iNDQULi4usLa2xgsvvIDk5GRtuzFjxsDZ2RkFBQUl4ujRowcaNWqk/bkyY0ZycnIwadIkODs7w9bWFv3798etW7cgk8nw/vvva9uVd47OnTuHsWPHon79+rCwsIC7uztefvll3L17V2dfxdu4cuUKhg0bBjs7Ozg5OWHy5MnIzc0tNb7i96JKpUKzZs2wa9cuvY7v4XP1+eefw8fHB5aWlujSpQsuXLig03bs2LGwsbHB9evX0adPH9ja2mLUqFEAipKSt99+G97e3lCpVGjUqBEWLVqEsm7q/rjP9ONcunQJly5dwvjx47WJCAC88cYbEEJg06ZN5a6/bds2FBQU4I033tAuk8lkmDBhAm7evImwsDC94iHpsWeE9Obj44OwsDBcuHABzZs3L7ftwYMHsX79ekyaNAkqlQpfffUVevXqhZMnT5ZYd+jQoQgICMAnn3yi/SX48ccfY/bs2Rg2bBheffVVJCcnY/ny5Xj66acRHh6uTYg2btyI7OxsTJgwAU5OTjh58iSWL1+OmzdvYuPGjdp97NmzB4MHD0bTpk0xf/583L17F+PGjUPdunX1fh3+/vtv9O7dGyEhIZg7dy7kcjnWrFmDZ555BocPH0abNm0ee3xz5szBRx99hD59+qBPnz44c+YMevTogfz8fJ11ExMT0aFDB2RnZ2PSpElwcnLCjz/+iP79+2PTpk144YUXAACrVq3CpEmTMGTIEO2X4Llz53DixAm8+OKLeh3fmjVrkJubi/Hjx0OlUsHR0REXL15Ex44d4eXlhZkzZ8La2hobNmzAwIEDsXnzZm0cxd566y3UqVMHc+fORUxMDJYuXYo333wT69evBwC89NJL+Omnn7B79248//zz2vUSEhLw999/Y+7cuXrF/KixY8diw4YNeOmll9CuXTscPHgQffv2LbN9aedo7969uHHjBsaNGwd3d3dcvHgRK1euxMWLF3H8+HHIZDKdbQwbNgy+vr6YP38+jh8/ji+++AKpqan46aefdNodOXIEv/32G9544w3Y2triiy++wODBgxEXFwcnJye9jvOnn35CZmYmJk6ciNzcXCxbtgzPPPMMzp8/Dzc3N227wsJC9OzZE506dcKiRYtgZWUFIQT69++P/fv345VXXkFQUBB2796Nd955B7du3cLnn3+usy99PtNlCQ8PBwC0atVKZ7mnpyfq1q2rfb689a2trdGkSROd5cWfufDwcJ0/aMgICCI97dmzRygUCqFQKET79u3F9OnTxe7du0V+fr5OOwACgPjnn3+0y2JjY4WFhYV44YUXtMvmzp0rAIiRI0fqrB8TEyMUCoX4+OOPdZafP39emJmZ6SzPzs4uEef8+fOFTCYTsbGx2mVBQUHCw8NDpKWl6RwPAOHj41Ph10Cj0YiAgADRs2dPodFodOLw8/MTzz333GOPLykpSSiVStG3b1+dbbz77rsCgBgzZox22ZQpUwQAcfjwYe2yzMxM4efnJ3x9fYVarRZCCDFgwADRrFmzCh9HaaKjowUAYWdnJ5KSknSee/bZZ0WLFi1Ebm6uzmvRoUMHERAQoF22Zs0aAUB0795d59imTp0qFAqF9vVXq9Wibt26Yvjw4Tr7WbJkiZDJZOLGjRvaZT4+PjqvyeOcPn1aABBTpkzRWT527FgBQMydO1e7rKxzJETp761ff/1VABCHDh0qsY3+/fvrtH3jjTcEAHH27FntMgBCqVSKqKgo7bKzZ88KAGL58uUVPsbic2VpaSlu3rypXX7ixAkBQEydOlW7bMyYMQKAmDlzps42tm7dKgCIjz76SGf5kCFDhEwm04mxop/px1m4cKEAIOLi4ko817p1a9GuXbty1+/bt6+oX79+ieVZWVmlHiMZPl6mIb0999xzCAsLQ//+/XH27Fl89tln6NmzJ7y8vEp017dv3x4hISHan+vVq4cBAwZg9+7dUKvVOm1ff/11nZ9/++03aDQaDBs2DCkpKdqHu7s7AgICsH//fm1bS0tL7f+zsrKQkpKCDh06QAih/Svrzp07iIiIwJgxY2Bvb69zPE2bNtXrNYiIiMC1a9fw4osv4u7du9rYsrKy8Oyzz+LQoUPQaDTlHt9ff/2F/Px8vPXWWzp/XU+ZMqXE/nbs2IE2bdro/LVnY2OD8ePHIyYmRnsJxcHBATdv3sSpU6f0Op7SDB48GC4uLtqf7927h7///hvDhg1DZmam9pjv3r2Lnj174tq1a7h165bONsaPH69zbJ07d4ZarUZsbCwAQC6XY9SoUfj999+RmZmpbffzzz+jQ4cO8PPzq3T8xZc8Hu7KB1DuAOtHzxGg+97Kzc1FSkoK2rVrBwA4c+ZMifYTJ04sdX87duzQWd69e3f4+/trf27ZsiXs7Oxw48aNMuMry8CBA+Hl5aX9uU2bNmjbtm2JfQLAhAkTdH7esWMHFAoFJk2apLP87bffhhACO3fu1Fmuz2e6LMWXT0sbB2RhYVHq5dVH1y9r3Ye3T8aDyQhVSuvWrfHbb78hNTUVJ0+exKxZs5CZmYkhQ4ZovxgBICAgoMS6DRs2RHZ2ts7YAQAlvniuXbsGIQQCAgLg4uKi87h8+bLOYNm4uDiMHTsWjo6OsLGxgYuLC7p06QIASE9PBwDtF2BpMT08NqEirl27BqBozMOjsX333XfIy8vT7res4ysrHhcXF9SpU6dE29JiLO6mLt7WjBkzYGNjgzZt2iAgIAATJ04sMYaloh6NNyoqCkIIzJ49u8QxF19OeXQ
"text/plain": [
"<Figure size 640x480 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"image/png": "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
"text/plain": [
"<Figure size 640x480 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"image/png": "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
"text/plain": [
"<Figure size 640x480 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"image/png": "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
"text/plain": [
"<Figure size 640x480 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"image/png": "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
"text/plain": [
"<Figure size 640x480 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"analysis.plot_all('soil_output/Spread_erdos*', analysis.get_value, 'prob_tv_spread');"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Manually plotting with pandas"
]
},
{
"cell_type": "markdown",
"metadata": {
"ExecuteTime": {
"end_time": "2017-10-19T11:00:37.003972Z",
"start_time": "2017-10-19T13:00:36.983128+02:00"
}
},
"source": [
"Although the simplest way to visualize the results of a simulation is to use the built-in methods in the analysis module, sometimes the setup is more complicated and we need to explore the data a little further.\n",
"\n",
"For that, we can use native pandas over the results.\n",
"\n",
"Soil provides some convenience methods to simplify common operations:\n",
"\n",
"* `analysis.split_df` to separate a history dataframe into environment and agent parameters.\n",
"* `analysis.get_count` to get a dataframe with the value counts for different attributes during the simulation.\n",
"* `analysis.get_value` to get the evolution of the value of an attribute during the simulation.\n",
"\n",
"And, as we saw earlier, `analysis.process` can turn a dataframe in canonical form into a dataframe with a column per attribute.\n"
]
},
{
"cell_type": "code",
"execution_count": 26,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"soil_output/Spread_barabasi_albert_graph_prob_0.0/Spread_barabasi_albert_graph_prob_0.0.dumped.yml\r\n",
"soil_output/Spread_barabasi_albert_graph_prob_0.0/Spread_barabasi_albert_graph_prob_0.0.sqlite\r\n",
"soil_output/Spread_barabasi_albert_graph_prob_0.0/Spread_barabasi_albert_graph_prob_0.0_trial_0.csv\r\n",
"soil_output/Spread_barabasi_albert_graph_prob_0.0/Spread_barabasi_albert_graph_prob_0.0_trial_0.sqlite\r\n",
"soil_output/Spread_barabasi_albert_graph_prob_0.0/Spread_barabasi_albert_graph_prob_0.0_trial_0.stats.csv\r\n"
]
}
],
"source": [
"!ls soil_output/Spread_barabasi_albert_graph_prob_0.0/Spread_barabasi_albert_graph_prob_0*"
]
},
{
"cell_type": "code",
"execution_count": 27,
"metadata": {
"ExecuteTime": {
"end_time": "2017-10-19T15:59:15.791793Z",
"start_time": "2017-10-19T17:59:15.604960+02:00"
},
"scrolled": true
},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead tr th {\n",
" text-align: left;\n",
" }\n",
"\n",
" .dataframe thead tr:last-of-type th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr>\n",
" <th>key</th>\n",
" <th>SEED</th>\n",
" <th colspan=\"9\" halign=\"left\">alive</th>\n",
" <th>...</th>\n",
" <th colspan=\"10\" halign=\"left\">state_id</th>\n",
" </tr>\n",
" <tr>\n",
" <th>dict_id</th>\n",
" <th>env</th>\n",
" <th>0</th>\n",
" <th>1</th>\n",
" <th>10</th>\n",
" <th>100</th>\n",
" <th>101</th>\n",
" <th>102</th>\n",
" <th>103</th>\n",
" <th>104</th>\n",
" <th>105</th>\n",
" <th>...</th>\n",
" <th>90</th>\n",
" <th>91</th>\n",
" <th>92</th>\n",
" <th>93</th>\n",
" <th>94</th>\n",
" <th>95</th>\n",
" <th>96</th>\n",
" <th>97</th>\n",
" <th>98</th>\n",
" <th>99</th>\n",
" </tr>\n",
" <tr>\n",
" <th>t_step</th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0.0</th>\n",
" <td>Spread_barabasi_albert_graph_prob_0.0_trial_0</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>...</td>\n",
" <td>neutral</td>\n",
" <td>neutral</td>\n",
" <td>neutral</td>\n",
" <td>neutral</td>\n",
" <td>neutral</td>\n",
" <td>neutral</td>\n",
" <td>neutral</td>\n",
" <td>neutral</td>\n",
" <td>neutral</td>\n",
" <td>neutral</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1.0</th>\n",
" <td>Spread_barabasi_albert_graph_prob_0.0_trial_0</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>...</td>\n",
" <td>neutral</td>\n",
" <td>neutral</td>\n",
" <td>neutral</td>\n",
" <td>neutral</td>\n",
" <td>neutral</td>\n",
" <td>neutral</td>\n",
" <td>neutral</td>\n",
" <td>neutral</td>\n",
" <td>neutral</td>\n",
" <td>neutral</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2.0</th>\n",
" <td>Spread_barabasi_albert_graph_prob_0.0_trial_0</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>...</td>\n",
" <td>neutral</td>\n",
" <td>neutral</td>\n",
" <td>neutral</td>\n",
" <td>neutral</td>\n",
" <td>neutral</td>\n",
" <td>neutral</td>\n",
" <td>neutral</td>\n",
" <td>neutral</td>\n",
" <td>neutral</td>\n",
" <td>neutral</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3.0</th>\n",
" <td>Spread_barabasi_albert_graph_prob_0.0_trial_0</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>...</td>\n",
" <td>neutral</td>\n",
" <td>neutral</td>\n",
" <td>neutral</td>\n",
" <td>neutral</td>\n",
" <td>neutral</td>\n",
" <td>neutral</td>\n",
" <td>neutral</td>\n",
" <td>neutral</td>\n",
" <td>neutral</td>\n",
" <td>neutral</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4.0</th>\n",
" <td>Spread_barabasi_albert_graph_prob_0.0_trial_0</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>...</td>\n",
" <td>neutral</td>\n",
" <td>neutral</td>\n",
" <td>neutral</td>\n",
" <td>neutral</td>\n",
" <td>neutral</td>\n",
" <td>neutral</td>\n",
" <td>neutral</td>\n",
" <td>neutral</td>\n",
" <td>neutral</td>\n",
" <td>neutral</td>\n",
" </tr>\n",
" <tr>\n",
" <th>5.0</th>\n",
" <td>Spread_barabasi_albert_graph_prob_0.0_trial_0</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>...</td>\n",
" <td>neutral</td>\n",
" <td>neutral</td>\n",
" <td>neutral</td>\n",
" <td>neutral</td>\n",
" <td>neutral</td>\n",
" <td>neutral</td>\n",
" <td>neutral</td>\n",
" <td>infected</td>\n",
" <td>neutral</td>\n",
" <td>neutral</td>\n",
" </tr>\n",
" <tr>\n",
" <th>6.0</th>\n",
" <td>Spread_barabasi_albert_graph_prob_0.0_trial_0</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>...</td>\n",
" <td>neutral</td>\n",
" <td>neutral</td>\n",
" <td>neutral</td>\n",
" <td>neutral</td>\n",
" <td>neutral</td>\n",
" <td>neutral</td>\n",
" <td>neutral</td>\n",
" <td>infected</td>\n",
" <td>neutral</td>\n",
" <td>neutral</td>\n",
" </tr>\n",
" <tr>\n",
" <th>7.0</th>\n",
" <td>Spread_barabasi_albert_graph_prob_0.0_trial_0</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>...</td>\n",
" <td>neutral</td>\n",
" <td>neutral</td>\n",
" <td>neutral</td>\n",
" <td>neutral</td>\n",
" <td>neutral</td>\n",
" <td>neutral</td>\n",
" <td>neutral</td>\n",
" <td>infected</td>\n",
" <td>neutral</td>\n",
" <td>neutral</td>\n",
" </tr>\n",
" <tr>\n",
" <th>8.0</th>\n",
" <td>Spread_barabasi_albert_graph_prob_0.0_trial_0</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>...</td>\n",
" <td>neutral</td>\n",
" <td>neutral</td>\n",
" <td>neutral</td>\n",
" <td>neutral</td>\n",
" <td>neutral</td>\n",
" <td>neutral</td>\n",
" <td>neutral</td>\n",
" <td>infected</td>\n",
" <td>neutral</td>\n",
" <td>neutral</td>\n",
" </tr>\n",
" <tr>\n",
" <th>9.0</th>\n",
" <td>Spread_barabasi_albert_graph_prob_0.0_trial_0</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>...</td>\n",
" <td>neutral</td>\n",
" <td>neutral</td>\n",
" <td>neutral</td>\n",
" <td>neutral</td>\n",
" <td>neutral</td>\n",
" <td>neutral</td>\n",
" <td>neutral</td>\n",
" <td>infected</td>\n",
" <td>neutral</td>\n",
" <td>neutral</td>\n",
" </tr>\n",
" <tr>\n",
" <th>10.0</th>\n",
" <td>Spread_barabasi_albert_graph_prob_0.0_trial_0</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>...</td>\n",
" <td>neutral</td>\n",
" <td>neutral</td>\n",
" <td>neutral</td>\n",
" <td>neutral</td>\n",
" <td>neutral</td>\n",
" <td>neutral</td>\n",
" <td>neutral</td>\n",
" <td>infected</td>\n",
" <td>neutral</td>\n",
" <td>neutral</td>\n",
" </tr>\n",
" <tr>\n",
" <th>11.0</th>\n",
" <td>Spread_barabasi_albert_graph_prob_0.0_trial_0</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>...</td>\n",
" <td>infected</td>\n",
" <td>infected</td>\n",
" <td>infected</td>\n",
" <td>infected</td>\n",
" <td>infected</td>\n",
" <td>neutral</td>\n",
" <td>infected</td>\n",
" <td>infected</td>\n",
" <td>infected</td>\n",
" <td>infected</td>\n",
" </tr>\n",
" <tr>\n",
" <th>12.0</th>\n",
" <td>Spread_barabasi_albert_graph_prob_0.0_trial_0</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>...</td>\n",
" <td>infected</td>\n",
" <td>infected</td>\n",
" <td>infected</td>\n",
" <td>infected</td>\n",
" <td>infected</td>\n",
" <td>infected</td>\n",
" <td>infected</td>\n",
" <td>infected</td>\n",
" <td>infected</td>\n",
" <td>infected</td>\n",
" </tr>\n",
" <tr>\n",
" <th>13.0</th>\n",
" <td>Spread_barabasi_albert_graph_prob_0.0_trial_0</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>...</td>\n",
" <td>infected</td>\n",
" <td>infected</td>\n",
" <td>infected</td>\n",
" <td>infected</td>\n",
" <td>infected</td>\n",
" <td>infected</td>\n",
" <td>infected</td>\n",
" <td>infected</td>\n",
" <td>infected</td>\n",
" <td>infected</td>\n",
" </tr>\n",
" <tr>\n",
" <th>14.0</th>\n",
" <td>Spread_barabasi_albert_graph_prob_0.0_trial_0</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>...</td>\n",
" <td>infected</td>\n",
" <td>infected</td>\n",
" <td>infected</td>\n",
" <td>infected</td>\n",
" <td>infected</td>\n",
" <td>infected</td>\n",
" <td>infected</td>\n",
" <td>infected</td>\n",
" <td>infected</td>\n",
" <td>infected</td>\n",
" </tr>\n",
" <tr>\n",
" <th>15.0</th>\n",
" <td>Spread_barabasi_albert_graph_prob_0.0_trial_0</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>...</td>\n",
" <td>infected</td>\n",
" <td>infected</td>\n",
" <td>infected</td>\n",
" <td>infected</td>\n",
" <td>infected</td>\n",
" <td>infected</td>\n",
" <td>infected</td>\n",
" <td>infected</td>\n",
" <td>infected</td>\n",
" <td>infected</td>\n",
" </tr>\n",
" <tr>\n",
" <th>16.0</th>\n",
" <td>Spread_barabasi_albert_graph_prob_0.0_trial_0</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>...</td>\n",
" <td>infected</td>\n",
" <td>infected</td>\n",
" <td>infected</td>\n",
" <td>infected</td>\n",
" <td>infected</td>\n",
" <td>infected</td>\n",
" <td>infected</td>\n",
" <td>infected</td>\n",
" <td>infected</td>\n",
" <td>infected</td>\n",
" </tr>\n",
" <tr>\n",
" <th>17.0</th>\n",
" <td>Spread_barabasi_albert_graph_prob_0.0_trial_0</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>...</td>\n",
" <td>infected</td>\n",
" <td>infected</td>\n",
" <td>infected</td>\n",
" <td>infected</td>\n",
" <td>infected</td>\n",
" <td>infected</td>\n",
" <td>infected</td>\n",
" <td>infected</td>\n",
" <td>infected</td>\n",
" <td>infected</td>\n",
" </tr>\n",
" <tr>\n",
" <th>18.0</th>\n",
" <td>Spread_barabasi_albert_graph_prob_0.0_trial_0</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>...</td>\n",
" <td>infected</td>\n",
" <td>infected</td>\n",
" <td>infected</td>\n",
" <td>infected</td>\n",
" <td>infected</td>\n",
" <td>infected</td>\n",
" <td>infected</td>\n",
" <td>infected</td>\n",
" <td>infected</td>\n",
" <td>infected</td>\n",
" </tr>\n",
" <tr>\n",
" <th>19.0</th>\n",
" <td>Spread_barabasi_albert_graph_prob_0.0_trial_0</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>...</td>\n",
" <td>infected</td>\n",
" <td>infected</td>\n",
" <td>infected</td>\n",
" <td>infected</td>\n",
" <td>infected</td>\n",
" <td>infected</td>\n",
" <td>infected</td>\n",
" <td>infected</td>\n",
" <td>infected</td>\n",
" <td>infected</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"<p>20 rows × 3008 columns</p>\n",
"</div>"
],
"text/plain": [
"key SEED alive \\\n",
"dict_id env 0 1 10 \n",
"t_step \n",
"0.0 Spread_barabasi_albert_graph_prob_0.0_trial_0 True True True \n",
"1.0 Spread_barabasi_albert_graph_prob_0.0_trial_0 True True True \n",
"2.0 Spread_barabasi_albert_graph_prob_0.0_trial_0 True True True \n",
"3.0 Spread_barabasi_albert_graph_prob_0.0_trial_0 True True True \n",
"4.0 Spread_barabasi_albert_graph_prob_0.0_trial_0 True True True \n",
"5.0 Spread_barabasi_albert_graph_prob_0.0_trial_0 True True True \n",
"6.0 Spread_barabasi_albert_graph_prob_0.0_trial_0 True True True \n",
"7.0 Spread_barabasi_albert_graph_prob_0.0_trial_0 True True True \n",
"8.0 Spread_barabasi_albert_graph_prob_0.0_trial_0 True True True \n",
"9.0 Spread_barabasi_albert_graph_prob_0.0_trial_0 True True True \n",
"10.0 Spread_barabasi_albert_graph_prob_0.0_trial_0 True True True \n",
"11.0 Spread_barabasi_albert_graph_prob_0.0_trial_0 True True True \n",
"12.0 Spread_barabasi_albert_graph_prob_0.0_trial_0 True True True \n",
"13.0 Spread_barabasi_albert_graph_prob_0.0_trial_0 True True True \n",
"14.0 Spread_barabasi_albert_graph_prob_0.0_trial_0 True True True \n",
"15.0 Spread_barabasi_albert_graph_prob_0.0_trial_0 True True True \n",
"16.0 Spread_barabasi_albert_graph_prob_0.0_trial_0 True True True \n",
"17.0 Spread_barabasi_albert_graph_prob_0.0_trial_0 True True True \n",
"18.0 Spread_barabasi_albert_graph_prob_0.0_trial_0 True True True \n",
"19.0 Spread_barabasi_albert_graph_prob_0.0_trial_0 True True True \n",
"\n",
"key ... state_id \\\n",
"dict_id 100 101 102 103 104 105 ... 90 91 \n",
"t_step ... \n",
"0.0 True True True True True True ... neutral neutral \n",
"1.0 True True True True True True ... neutral neutral \n",
"2.0 True True True True True True ... neutral neutral \n",
"3.0 True True True True True True ... neutral neutral \n",
"4.0 True True True True True True ... neutral neutral \n",
"5.0 True True True True True True ... neutral neutral \n",
"6.0 True True True True True True ... neutral neutral \n",
"7.0 True True True True True True ... neutral neutral \n",
"8.0 True True True True True True ... neutral neutral \n",
"9.0 True True True True True True ... neutral neutral \n",
"10.0 True True True True True True ... neutral neutral \n",
"11.0 True True True True True True ... infected infected \n",
"12.0 True True True True True True ... infected infected \n",
"13.0 True True True True True True ... infected infected \n",
"14.0 True True True True True True ... infected infected \n",
"15.0 True True True True True True ... infected infected \n",
"16.0 True True True True True True ... infected infected \n",
"17.0 True True True True True True ... infected infected \n",
"18.0 True True True True True True ... infected infected \n",
"19.0 True True True True True True ... infected infected \n",
"\n",
"key \\\n",
"dict_id 92 93 94 95 96 97 98 \n",
"t_step \n",
"0.0 neutral neutral neutral neutral neutral neutral neutral \n",
"1.0 neutral neutral neutral neutral neutral neutral neutral \n",
"2.0 neutral neutral neutral neutral neutral neutral neutral \n",
"3.0 neutral neutral neutral neutral neutral neutral neutral \n",
"4.0 neutral neutral neutral neutral neutral neutral neutral \n",
"5.0 neutral neutral neutral neutral neutral infected neutral \n",
"6.0 neutral neutral neutral neutral neutral infected neutral \n",
"7.0 neutral neutral neutral neutral neutral infected neutral \n",
"8.0 neutral neutral neutral neutral neutral infected neutral \n",
"9.0 neutral neutral neutral neutral neutral infected neutral \n",
"10.0 neutral neutral neutral neutral neutral infected neutral \n",
"11.0 infected infected infected neutral infected infected infected \n",
"12.0 infected infected infected infected infected infected infected \n",
"13.0 infected infected infected infected infected infected infected \n",
"14.0 infected infected infected infected infected infected infected \n",
"15.0 infected infected infected infected infected infected infected \n",
"16.0 infected infected infected infected infected infected infected \n",
"17.0 infected infected infected infected infected infected infected \n",
"18.0 infected infected infected infected infected infected infected \n",
"19.0 infected infected infected infected infected infected infected \n",
"\n",
"key \n",
"dict_id 99 \n",
"t_step \n",
"0.0 neutral \n",
"1.0 neutral \n",
"2.0 neutral \n",
"3.0 neutral \n",
"4.0 neutral \n",
"5.0 neutral \n",
"6.0 neutral \n",
"7.0 neutral \n",
"8.0 neutral \n",
"9.0 neutral \n",
"10.0 neutral \n",
"11.0 infected \n",
"12.0 infected \n",
"13.0 infected \n",
"14.0 infected \n",
"15.0 infected \n",
"16.0 infected \n",
"17.0 infected \n",
"18.0 infected \n",
"19.0 infected \n",
"\n",
"[20 rows x 3008 columns]"
]
},
"execution_count": 27,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df = analysis.read_sql('soil_output/Spread_barabasi_albert_graph_prob_0.0/Spread_barabasi_albert_graph_prob_0.0_trial_0.sqlite')\n",
"df"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Let's look at the evolution of agent parameters in the simulation"
]
},
{
"cell_type": "code",
"execution_count": 28,
"metadata": {
"ExecuteTime": {
"end_time": "2017-10-19T15:59:17.153282Z",
"start_time": "2017-10-19T17:59:16.830872+02:00"
}
},
"outputs": [
{
"data": {
"text/plain": [
"<Axes: xlabel='t_step'>"
]
},
"execution_count": 28,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAh8AAClwCAYAAADkRW44AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/bCgiHAAAACXBIWXMAAA9hAAAPYQGoP6dpAAEAAElEQVR4nOz9e1xU1734/782lyHDbSaEm1QFooSQhFLAipimGKtiMPmQeqzGTCKkhvzSbyw1KcbUE3PUhuS01Vqbc5RaDHgEvJ2caBNNKbUZHam3hINENEYNKlrEiMhFZgCH/fuD424mEIHITXk/H495hNlr7bXfe1qcN++19t6KqqoqQgghhBD9xGmgAxBCCCHE0CLJhxBCCCH6lSQfQgghhOhXknwIIYQQol9J8iGEEEKIfiXJhxBCCCH6lSQfQgghhOhXLgMdwFe1tbXxj3/8Ay8vLxRFGehwhBBCCNENqqrS0NBAUFAQTk43rm0MuuTjH//4ByNGjBjoMIQQQgjxDVRWVjJ8+PAb9hl0yYeXlxfQHry3t/cARyOEEEKI7qivr2fEiBHa9/iNDLrk4/pUi7e3tyQfQgghxC2mO0smZMGpEEIIIfqVJB9CCCGE6FeSfAghhBCiXw26NR9CiFuf3W6ntbV1oMMQQvQynU7X5WW03SHJhxCi16iqyoULF7hy5cpAhyKE6ANOTk6Ehoai0+luahxJPoQQveZ64uHv74+7u7vcKFCI28j1m4BWVVUxcuTIm/r9luRDCNEr7Ha7lnjcddddAx2OEKIP+Pn58Y9//INr167h6ur6jceRBadCiF5xfY2Hu7v7AEcihOgr16db7Hb7TY0jyYcQolfJVIsQt6/e+v2W5EMIIYQQ/arHyceePXt47LHHCAoKQlEUtm3b5tCuqiqvvfYaw4YNQ6/XM2nSJE6cONFb8QohhBDiFtfj5OPq1atERUXxn//5n522//rXv+b3v/89WVlZHDhwAA8PDxITE7HZbDcdrBBCDHUTJkxg/vz5AxrDl//wPH36NIqiUFpa2ifH6s74ZrMZRVHkEu9bSI+vdnnkkUd45JFHOm1TVZXf/e53vPrqqyQnJwPwX//1XwQEBLBt2zaeeOKJm4v2JqiqirX15hbICCG+XnPLNdpUFXtb+0v0DZX2f88G+jNu+7//nYO+NZxz5/+Br69vt2L68TPPcOXKFf7n3Xe7dZzujH99u/x/r2eclIFbo9Wrl9pWVFRw4cIFJk2apG0zGAzExcWxb9++TpOP5uZmmpubtff19fW9GZLG2mrnvtcK+2RsIQR8y8uZJQ/7c+1iA4pLc9c7iG+kqfkaNVdbKP9H3YDGcfZy05di0FNz8Wq39rvS1EKDrbWH8d94/NM17W3HqurxbpIFz911f5AB5wH6uHp1wemFCxcACAgIcNgeEBCgtX3Vm2++icFg0F4jRozozZCEEOK2tmdXIQ/eN5Id727hwj/OseAnz/C9+4N56IFQfvbjJzlfeRaAj/cXExvqx6WL1Q77/3rJL0id3nk1G+BMxSme+Zckvjs6kB9OHMe+PR86tJ+vPEvUiDv5tPwTbdvJ48eYlzqL8REjib93BKnTH6HydAVrfvvv/Om/N/LhX3YSNeJOokbcyaF9e294fp2Nb/nbX3js+2MYO3oYc2c+xj/+7xzFrWPAbzL2i1/8gpdeekl7X19f3ycJiN7VmaPLEnt9XCFEu2abjX+cO0uIvxd33HHHQIdz23J3c+EuDx33BxnYWFDAop/+hLy8fBITE4mJ/g7jxo1jzx4LLi4uvJGZyYvPzOR/Sw9z//Qk/v3uuzn01+1kZCwA2u/NUrj9v/n3f/8V9wcZOhyrra0N0yOp+AcEsG/ffurq6vj5Sy8CMNLHnfuDDHi0eAEwys+T+4MMnD9/nrSZj5KQMIFdu3bh7e3N34uLCb1Lz78v+VdqzlVQX1/PurffBsDHx+eGt+r+6viVlZX8/Lk5/OT/+/9IS3uOjz/6iAULMgCIGOaN0djxPETnnAawSNSryUdgYCAA1dXVDBs2TNteXV3Nd77znU73cXNzw83NrTfD6JSiKLjrBjzXEuK25dTmgpOi4OzU/hJ9Q6H937OsNav513/9V9577z0SEhLIy8ujra2NdevWafP4ubk5GI1GLHt2M2XKFObOnUtubi4LX34ZgO073sdms/HEE7M6/d9s11938emnn1JYWEhQUBAAb7zxBo888ghOTo7/W1//OWvNagwGA5s3b9LugBlxb7g2pru7npaWZr4VNKzD8Trz1fHX/iGLUaNGsfK3vwXgvoh7KS8/wq9+9Sv5/94tpFenXUJDQwkMDGTXrl3atvr6eg4cOEB8fHxvHkoIIYas//7v/+bFF1+kqKiIhIQEAA4fPszJkyfx8vLC09MTT09PfHx8sNlsnDp1CoDU1FROnjzJ/v37AcjNzWXmzJl4eHh0epxjx44xYsQILfEAuvy3vLS0lIceeuimbr19I8eOHSMuLs5hm3y/3Hp6XApobGzk5MmT2vuKigpKS0vx8fFh5MiRzJ8/n9dff52wsDBCQ0NZvHgxQUFBPP74470ZtxBCDFnR0dGUlJTw9ttvM2bMGBRFobGxkdjYWPLz8zv09/PzA8Df35/HHnuMnJwcQkND+eCDDzCbzb0am16v79XxxO2px8nHRx99xMMPP6y9v75eIyUlhdzcXF5++WWuXr3Kc889x5UrV/je977Hn//8Z5kDFkKIXjJq1ChWrFjBhAkTcHZ25j/+4z+IiYlh8+bN+Pv74+3t/bX7Pvvss8yePZvhw4czatQoHnzwwa/tGxERQWVlJVVVVdpU+vWqydf59re/zfr162ltbe20+qHT6W7quSARERH86U9/ctjWVUxi8OnxtMuECRNQVbXDKzc3F2ifi1y2bBkXLlzAZrPx17/+lXvuuae34xZCiCHtnnvu4cMPP+Sdd95h/vz5mEwmfH19SU5OxmKxUFFRgdlsJj09nXPnzmn7JSYm4u3tzeuvv84zzzxzw2NMmjSJe+65h5SUFA4fPozFYuFf//Vfb7jPvHnzqK+v54knnuCjjz7ixIkTbNiwgePHjwMQEhJCWVkZx48f59KlS9oDCbvr+eef58SJEyxYsIDjx49TUFCgff+IW4c820UIIW5R4eHh/O1vf2Pjxo0sXryYPXv2MHLkSKZPn05ERARz587FZrM5VEKcnJxITU3FbrczZ86cDmMqiqJ9mTs5OfHuu+9itVoZO3Yszz77LJmZmTeM6a677uJvf/sbjY2NJCQkEBsbyx//+EetCpKWlkZ4eDhjxozBz8+P4uLiHp3zyJEjeeedd9i2bRtRUVFkZWXxxhtv9GgMMfAUVVUH1e3g6uvrMRgM1NXV3bB0KIQYXGw2GxUVFYSGhso06yA3d+5cvvjiiw7TFxUVFdxzzz0cPXqUsLCwAYpODGY3+j3vyfe3XHsqhBBDRF1dHZ988gkFBQUdEg+AnTt38txzz0niIfqcJB9CCDFEJCcnc/DgQZ5//nkmT57cof2FF17o95jeeOONr502eeihh/jggw/6OSLRHyT5EEKIIaK3L6vtDc8//zwzZ87stE0u2719SfIhhBBiwPj4+ODj4zPQYYh+Jle7CCGEEKJfSfIhhBBCiH4lyYcQQggh+pUkH0IIIYToV5J8CCGEEKJfSfIhhBBATU0N/v7+nD59eqBD6RNmsxlFUbhy5cpAh9Jv/vznP/Od73yHtra2gQ5FfIUkH0IIAWRmZpKcnExISMhAh+LgmyQNEyZMYP78+Q7bxo8fT1VVFQaDoXcD/AZyc3NRFMXh9dVbdauqymuvvcawYcPQ6/VMmjSJEydOOPS5fPkyJpMJb29vjEYjc+fOpbGxUWufOnUqrq6u5Ofn98t5ie6T5EMIMeQ1NTWxbt065s6dO9Ch9BmdTkdgYCCKogx0KAB4e3tTVVWlvc6cOePQ/utf/5rf//73ZGVlceDAATw8PEhMTMRms2l9TCYT5eXlFBUV8f7777Nnzx6ee+45h3FSU1P5/e9/3y/nJHpAHWTq6upUQK2rqxvoUIQQPWC1WtWjR4+qVqtV29b
"text/plain": [
"<Figure size 640x480 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"df.plot()"
]
},
{
"cell_type": "markdown",
"metadata": {
"ExecuteTime": {
"end_time": "2017-10-19T11:10:36.086913Z",
"start_time": "2017-10-19T13:10:36.058547+02:00"
}
},
"source": [
"As we can see, `event_time` and `interval` are cluttering our results, "
]
},
{
"cell_type": "code",
"execution_count": 29,
"metadata": {
"ExecuteTime": {
"end_time": "2017-10-19T15:59:18.418348Z",
"start_time": "2017-10-19T17:59:18.143443+02:00"
}
},
"outputs": [
{
"data": {
"text/plain": [
"<Axes: xlabel='t_step'>"
]
},
"execution_count": 29,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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
"text/plain": [
"<Figure size 640x480 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"del df['interval']\n",
"del df['event_time']\n",
"df.plot()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"The `soil.analysis` module also provides convenient functions to count the number of agents in a given state:"
]
},
{
"cell_type": "code",
"execution_count": 30,
"metadata": {
"ExecuteTime": {
"end_time": "2017-10-19T15:59:51.165806Z",
"start_time": "2017-10-19T17:59:50.886780+02:00"
}
},
"outputs": [
{
"data": {
"image/png": "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
"text/plain": [
"<Figure size 640x480 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"analysis.get_count(agents, 'state_id').plot();"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Dealing with bigger data"
]
},
{
"cell_type": "code",
"execution_count": 31,
"metadata": {
"ExecuteTime": {
"end_time": "2017-10-19T16:00:18.148006Z",
"start_time": "2017-10-19T18:00:18.117654+02:00"
}
},
"outputs": [],
"source": [
"from soil import analysis"
]
},
{
"cell_type": "code",
"execution_count": 32,
"metadata": {
"ExecuteTime": {
"end_time": "2017-10-19T16:00:18.636440Z",
"start_time": "2017-10-19T18:00:18.504421+02:00"
}
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"1.1M\t../rabbits/soil_output/rabbits_example/\r\n"
]
}
],
"source": [
"!du -xsh ../rabbits/soil_output/rabbits_example/"
]
},
{
"cell_type": "markdown",
"metadata": {
"ExecuteTime": {
"end_time": "2017-10-19T11:22:22.301765Z",
"start_time": "2017-10-19T13:22:22.281986+02:00"
}
},
"source": [
"If we tried to load the entire history, we would probably run out of memory. Hence, it is recommended that you also specify the attributes you are interested in."
]
},
{
"cell_type": "code",
"execution_count": 33,
"metadata": {
"ExecuteTime": {
"end_time": "2017-10-19T16:00:25.080582Z",
"start_time": "2017-10-19T18:00:19.594165+02:00"
},
"scrolled": false
},
"outputs": [
{
"data": {
"image/png": "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
"text/plain": [
"<Figure size 640x480 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"p = analysis.plot_all('../rabbits/soil_output/rabbits_example/', analysis.get_count, 'state_id')"
]
},
{
"cell_type": "code",
"execution_count": 34,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"backup\t\t\t rabbits_example.sqlite\r\n",
"rabbits_example.dumped.yml rabbits_example_trial_0.sqlite\r\n"
]
}
],
"source": [
"!ls ../rabbits/soil_output/rabbits_example"
]
},
{
"cell_type": "code",
"execution_count": 35,
"metadata": {
"ExecuteTime": {
"end_time": "2017-10-19T16:00:38.434367Z",
"start_time": "2017-10-19T18:00:33.645762+02:00"
},
"scrolled": true
},
"outputs": [],
"source": [
"df = analysis.read_sql('../rabbits/soil_output/rabbits_example/rabbits_example_trial_0.sqlite', keys=['state_id', 'rabbits_alive'])"
]
},
{
"cell_type": "code",
"execution_count": 36,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead tr th {\n",
" text-align: left;\n",
" }\n",
"\n",
" .dataframe thead tr:last-of-type th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr>\n",
" <th>key</th>\n",
" <th>rabbits_alive</th>\n",
" <th colspan=\"20\" halign=\"left\">state_id</th>\n",
" </tr>\n",
" <tr>\n",
" <th>dict_id</th>\n",
" <th>env</th>\n",
" <th>0</th>\n",
" <th>1</th>\n",
" <th>10</th>\n",
" <th>100</th>\n",
" <th>101</th>\n",
" <th>102</th>\n",
" <th>103</th>\n",
" <th>104</th>\n",
" <th>105</th>\n",
" <th>...</th>\n",
" <th>90</th>\n",
" <th>91</th>\n",
" <th>92</th>\n",
" <th>93</th>\n",
" <th>94</th>\n",
" <th>95</th>\n",
" <th>96</th>\n",
" <th>97</th>\n",
" <th>98</th>\n",
" <th>99</th>\n",
" </tr>\n",
" <tr>\n",
" <th>t_step</th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0.0</th>\n",
" <td>0</td>\n",
" <td>newborn</td>\n",
" <td>newborn</td>\n",
" <td>nan</td>\n",
" <td>nan</td>\n",
" <td>nan</td>\n",
" <td>nan</td>\n",
" <td>nan</td>\n",
" <td>nan</td>\n",
" <td>nan</td>\n",
" <td>...</td>\n",
" <td>nan</td>\n",
" <td>nan</td>\n",
" <td>nan</td>\n",
" <td>nan</td>\n",
" <td>nan</td>\n",
" <td>nan</td>\n",
" <td>nan</td>\n",
" <td>nan</td>\n",
" <td>nan</td>\n",
" <td>nan</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2.0</th>\n",
" <td>0</td>\n",
" <td>fertile</td>\n",
" <td>fertile</td>\n",
" <td>nan</td>\n",
" <td>nan</td>\n",
" <td>nan</td>\n",
" <td>nan</td>\n",
" <td>nan</td>\n",
" <td>nan</td>\n",
" <td>nan</td>\n",
" <td>...</td>\n",
" <td>nan</td>\n",
" <td>nan</td>\n",
" <td>nan</td>\n",
" <td>nan</td>\n",
" <td>nan</td>\n",
" <td>nan</td>\n",
" <td>nan</td>\n",
" <td>nan</td>\n",
" <td>nan</td>\n",
" <td>nan</td>\n",
" </tr>\n",
" <tr>\n",
" <th>16.0</th>\n",
" <td>0</td>\n",
" <td>pregnant</td>\n",
" <td>fertile</td>\n",
" <td>nan</td>\n",
" <td>nan</td>\n",
" <td>nan</td>\n",
" <td>nan</td>\n",
" <td>nan</td>\n",
" <td>nan</td>\n",
" <td>nan</td>\n",
" <td>...</td>\n",
" <td>nan</td>\n",
" <td>nan</td>\n",
" <td>nan</td>\n",
" <td>nan</td>\n",
" <td>nan</td>\n",
" <td>nan</td>\n",
" <td>nan</td>\n",
" <td>nan</td>\n",
" <td>nan</td>\n",
" <td>nan</td>\n",
" </tr>\n",
" <tr>\n",
" <th>49.0</th>\n",
" <td>8</td>\n",
" <td>fertile</td>\n",
" <td>fertile</td>\n",
" <td>nan</td>\n",
" <td>nan</td>\n",
" <td>nan</td>\n",
" <td>nan</td>\n",
" <td>nan</td>\n",
" <td>nan</td>\n",
" <td>nan</td>\n",
" <td>...</td>\n",
" <td>nan</td>\n",
" <td>nan</td>\n",
" <td>nan</td>\n",
" <td>nan</td>\n",
" <td>nan</td>\n",
" <td>nan</td>\n",
" <td>nan</td>\n",
" <td>nan</td>\n",
" <td>nan</td>\n",
" <td>nan</td>\n",
" </tr>\n",
" <tr>\n",
" <th>51.0</th>\n",
" <td>8</td>\n",
" <td>fertile</td>\n",
" <td>fertile</td>\n",
" <td>nan</td>\n",
" <td>nan</td>\n",
" <td>nan</td>\n",
" <td>nan</td>\n",
" <td>nan</td>\n",
" <td>nan</td>\n",
" <td>nan</td>\n",
" <td>...</td>\n",
" <td>nan</td>\n",
" <td>nan</td>\n",
" <td>nan</td>\n",
" <td>nan</td>\n",
" <td>nan</td>\n",
" <td>nan</td>\n",
" <td>nan</td>\n",
" <td>nan</td>\n",
" <td>nan</td>\n",
" <td>nan</td>\n",
" </tr>\n",
" <tr>\n",
" <th>...</th>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" </tr>\n",
" <tr>\n",
" <th>739.0</th>\n",
" <td>15</td>\n",
" <td>fertile</td>\n",
" <td>dead</td>\n",
" <td>dead</td>\n",
" <td>dead</td>\n",
" <td>fertile</td>\n",
" <td>dead</td>\n",
" <td>fertile</td>\n",
" <td>dead</td>\n",
" <td>dead</td>\n",
" <td>...</td>\n",
" <td>dead</td>\n",
" <td>fertile</td>\n",
" <td>dead</td>\n",
" <td>dead</td>\n",
" <td>dead</td>\n",
" <td>fertile</td>\n",
" <td>dead</td>\n",
" <td>dead</td>\n",
" <td>dead</td>\n",
" <td>dead</td>\n",
" </tr>\n",
" <tr>\n",
" <th>742.0</th>\n",
" <td>14</td>\n",
" <td>fertile</td>\n",
" <td>dead</td>\n",
" <td>dead</td>\n",
" <td>dead</td>\n",
" <td>fertile</td>\n",
" <td>dead</td>\n",
" <td>fertile</td>\n",
" <td>dead</td>\n",
" <td>dead</td>\n",
" <td>...</td>\n",
" <td>dead</td>\n",
" <td>fertile</td>\n",
" <td>dead</td>\n",
" <td>dead</td>\n",
" <td>dead</td>\n",
" <td>fertile</td>\n",
" <td>dead</td>\n",
" <td>dead</td>\n",
" <td>dead</td>\n",
" <td>dead</td>\n",
" </tr>\n",
" <tr>\n",
" <th>743.0</th>\n",
" <td>12</td>\n",
" <td>fertile</td>\n",
" <td>dead</td>\n",
" <td>dead</td>\n",
" <td>dead</td>\n",
" <td>fertile</td>\n",
" <td>dead</td>\n",
" <td>fertile</td>\n",
" <td>dead</td>\n",
" <td>dead</td>\n",
" <td>...</td>\n",
" <td>dead</td>\n",
" <td>fertile</td>\n",
" <td>dead</td>\n",
" <td>dead</td>\n",
" <td>dead</td>\n",
" <td>fertile</td>\n",
" <td>dead</td>\n",
" <td>dead</td>\n",
" <td>dead</td>\n",
" <td>dead</td>\n",
" </tr>\n",
" <tr>\n",
" <th>744.0</th>\n",
" <td>10</td>\n",
" <td>fertile</td>\n",
" <td>dead</td>\n",
" <td>dead</td>\n",
" <td>dead</td>\n",
" <td>fertile</td>\n",
" <td>dead</td>\n",
" <td>fertile</td>\n",
" <td>dead</td>\n",
" <td>dead</td>\n",
" <td>...</td>\n",
" <td>dead</td>\n",
" <td>fertile</td>\n",
" <td>dead</td>\n",
" <td>dead</td>\n",
" <td>dead</td>\n",
" <td>fertile</td>\n",
" <td>dead</td>\n",
" <td>dead</td>\n",
" <td>dead</td>\n",
" <td>dead</td>\n",
" </tr>\n",
" <tr>\n",
" <th>751.0</th>\n",
" <td>9</td>\n",
" <td>fertile</td>\n",
" <td>dead</td>\n",
" <td>dead</td>\n",
" <td>dead</td>\n",
" <td>fertile</td>\n",
" <td>dead</td>\n",
" <td>fertile</td>\n",
" <td>dead</td>\n",
" <td>dead</td>\n",
" <td>...</td>\n",
" <td>dead</td>\n",
" <td>fertile</td>\n",
" <td>dead</td>\n",
" <td>dead</td>\n",
" <td>dead</td>\n",
" <td>fertile</td>\n",
" <td>dead</td>\n",
" <td>dead</td>\n",
" <td>dead</td>\n",
" <td>dead</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"<p>326 rows × 349 columns</p>\n",
"</div>"
],
"text/plain": [
"key rabbits_alive state_id \\\n",
"dict_id env 0 1 10 100 101 102 103 \n",
"t_step \n",
"0.0 0 newborn newborn nan nan nan nan nan \n",
"2.0 0 fertile fertile nan nan nan nan nan \n",
"16.0 0 pregnant fertile nan nan nan nan nan \n",
"49.0 8 fertile fertile nan nan nan nan nan \n",
"51.0 8 fertile fertile nan nan nan nan nan \n",
"... ... ... ... ... ... ... ... ... \n",
"739.0 15 fertile dead dead dead fertile dead fertile \n",
"742.0 14 fertile dead dead dead fertile dead fertile \n",
"743.0 12 fertile dead dead dead fertile dead fertile \n",
"744.0 10 fertile dead dead dead fertile dead fertile \n",
"751.0 9 fertile dead dead dead fertile dead fertile \n",
"\n",
"key ... \\\n",
"dict_id 104 105 ... 90 91 92 93 94 95 96 \n",
"t_step ... \n",
"0.0 nan nan ... nan nan nan nan nan nan nan \n",
"2.0 nan nan ... nan nan nan nan nan nan nan \n",
"16.0 nan nan ... nan nan nan nan nan nan nan \n",
"49.0 nan nan ... nan nan nan nan nan nan nan \n",
"51.0 nan nan ... nan nan nan nan nan nan nan \n",
"... ... ... ... ... ... ... ... ... ... ... \n",
"739.0 dead dead ... dead fertile dead dead dead fertile dead \n",
"742.0 dead dead ... dead fertile dead dead dead fertile dead \n",
"743.0 dead dead ... dead fertile dead dead dead fertile dead \n",
"744.0 dead dead ... dead fertile dead dead dead fertile dead \n",
"751.0 dead dead ... dead fertile dead dead dead fertile dead \n",
"\n",
"key \n",
"dict_id 97 98 99 \n",
"t_step \n",
"0.0 nan nan nan \n",
"2.0 nan nan nan \n",
"16.0 nan nan nan \n",
"49.0 nan nan nan \n",
"51.0 nan nan nan \n",
"... ... ... ... \n",
"739.0 dead dead dead \n",
"742.0 dead dead dead \n",
"743.0 dead dead dead \n",
"744.0 dead dead dead \n",
"751.0 dead dead dead \n",
"\n",
"[326 rows x 349 columns]"
]
},
"execution_count": 36,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df"
]
},
{
"cell_type": "code",
"execution_count": 37,
"metadata": {
"ExecuteTime": {
"end_time": "2017-10-19T16:00:39.160418Z",
"start_time": "2017-10-19T18:00:38.436153+02:00"
},
"scrolled": true
},
"outputs": [
{
"data": {
"image/png": "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
"text/plain": [
"<Figure size 640x480 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"states = analysis.get_count(df, 'state_id')\n",
"states.plot();"
]
},
{
"cell_type": "code",
"execution_count": 38,
"metadata": {
"ExecuteTime": {
"end_time": "2017-10-19T16:00:39.515032Z",
"start_time": "2017-10-19T18:00:39.162240+02:00"
}
},
"outputs": [
{
"data": {
"text/plain": [
"<Axes: xlabel='t_step'>"
]
},
"execution_count": 38,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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
"text/plain": [
"<Figure size 640x480 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"alive = analysis.get_value(df, 'rabbits_alive', aggfunc='sum').apply(pd.to_numeric)\n",
"alive.plot()"
]
},
{
"cell_type": "code",
"execution_count": 39,
"metadata": {
"ExecuteTime": {
"end_time": "2017-10-19T16:00:58.815038Z",
"start_time": "2017-10-19T18:00:58.566807+02:00"
}
},
"outputs": [
{
"data": {
"image/png": "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
"text/plain": [
"<Figure size 640x480 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"h = pd.concat([alive, states]);\n",
"h.plot();"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "venv-soil",
"language": "python",
"name": "venv-soil"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.8.10"
},
"toc": {
"colors": {
"hover_highlight": "#DAA520",
"navigate_num": "#000000",
"navigate_text": "#333333",
"running_highlight": "#FF0000",
"selected_highlight": "#FFD700",
"sidebar_border": "#EEEEEE",
"wrapper_background": "#FFFFFF"
},
"moveMenuLeft": true,
"nav_menu": {
"height": "31px",
"width": "252px"
},
"navigate_menu": true,
"number_sections": true,
"sideBar": true,
"threshold": 4,
"toc_cell": false,
"toc_position": {
"height": "867px",
"left": "0px",
"right": "1670px",
"top": "106px",
"width": "250px"
},
"toc_section_display": "block",
"toc_window_display": false,
"widenNotebook": false
}
},
"nbformat": 4,
"nbformat_minor": 2
}