1
0
mirror of https://github.com/gsi-upm/soil synced 2024-11-22 19:22:29 +00:00
soil/examples/tutorial/soil_tutorial.ipynb

5237 lines
1.2 MiB
Plaintext
Raw Normal View History

{
"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": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"The autoreload extension is already loaded. To reload it, use:\n",
" %reload_ext autoreload\n",
"Populating the interactive namespace from numpy and matplotlib\n"
]
}
],
"source": [
"import soil\n",
"import networkx as nx\n",
" \n",
"%load_ext autoreload\n",
"%autoreload 2\n",
"\n",
"%pylab 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.model['prob_tv_spread']:\n",
" return self.infected\n",
" return\n",
" \n",
" @soil.agents.state\n",
" def infected(self):\n",
" prob_infect = self.model['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.next_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.model['prob_tv_spread'] = 1\n",
" self.model['prob_neighbor_spread'] = 1\n",
" elif self.now > self['event_time']:\n",
" self.model['prob_tv_spread'] = self.model['prob_tv_spread'] * TV_FACTOR\n",
" self.model['prob_neighbor_spread'] = self.model['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 432x288 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 '/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": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"INFO:soil:Using exporters: [<class 'soil.exporters.default'>]\n",
"INFO:soil:Output directory: None\n",
"INFO:soil:Starting simulation Unnamed at 21:51:19.\n",
"INFO:soil:NOT dumping results\n",
"INFO:soil:Starting Simulation Unnamed trial Unnamed_trial_1605822679-0170248 at 21:51:19.\n",
"INFO:soil:Finished Simulation Unnamed trial Unnamed_trial_1605822679-0170248 at 21:51:19 in 0.006684064865112305 seconds\n",
"INFO:soil:Finished simulation Unnamed at 21:51:19 in 0.011702775955200195 seconds\n"
]
}
],
"source": [
"env_params = {'prob_tv_spread': 0,\n",
" 'prob_neighbor_spread': 0}\n",
"\n",
"MAX_TIME = 100\n",
"EVENT_TIME = 10\n",
"\n",
2018-12-04 08:54:29 +00:00
"sim = soil.Simulation(topology=G,\n",
" num_trials=1,\n",
" max_time=MAX_TIME,\n",
2022-10-06 13:49:10 +00:00
" environment_agents=[{'agent_class': NewsEnvironmentAgent,\n",
" 'state': {\n",
" 'event_time': EVENT_TIME\n",
" }}],\n",
2022-10-06 13:49:10 +00:00
" network_agents=[{'agent_class': 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(dump=False)[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['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]['id', 11] == NewsSpread.infected.id\n",
"assert agents[2]['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]['id', MAX_TIME] == NewsSpread.infected.id\n",
"assert agents[2]['id', MAX_TIME] == NewsSpread.infected.id\n",
"\n",
"# But the node with no friends should not be affected\n",
"assert agents[4]['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",
2022-10-06 13:49:10 +00:00
" 'agent_class': NewsSpread,\n",
" 'weight': 1,\n",
" 'state': {\n",
" 'has_tv': False\n",
" }\n",
" },\n",
" {\n",
2022-10-06 13:49:10 +00:00
" 'agent_class': NewsSpread,\n",
" 'weight': 2,\n",
" 'state': {\n",
" 'has_tv': True\n",
" }\n",
" }\n",
" ],\n",
" 'environment_agents':[\n",
2022-10-06 13:49:10 +00:00
" {'agent_class': 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": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"INFO:soil:Using config(s): ExampleSimulation\n",
"INFO:soil:Using exporters: [<class 'soil.exporters.default'>]\n",
"INFO:soil:Output directory: None\n",
"INFO:soil:Starting simulation ExampleSimulation at 21:51:20.\n",
"INFO:soil:NOT dumping results\n",
"INFO:soil:Starting Simulation ExampleSimulation trial ExampleSimulation_trial_1605822680-0185008 at 21:51:20.\n",
"INFO:soil:Finished Simulation ExampleSimulation trial ExampleSimulation_trial_1605822680-0185008 at 21:51:22 in 1.9917693138122559 seconds\n",
"INFO:soil:Finished simulation ExampleSimulation at 21:51:22 in 2.4902079105377197 seconds\n"
]
}
],
"source": [
"soil.simulation.run_from_config(config, dump=False)"
]
},
{
"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": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"INFO:soil:Using config(s): Spread_erdos_renyi_graph_prob_0.0\n",
"INFO:soil:Using exporters: ['default', 'csv']\n",
"INFO:soil:Output directory: None\n",
"INFO:soil:Starting simulation Spread_erdos_renyi_graph_prob_0.0 at 21:51:22.\n",
"INFO:soil:Dumping results to /home/j/git/lab.gsi/soil/soil/examples/tutorial/soil_output/Spread_erdos_renyi_graph_prob_0.0\n",
"INFO:soil:Starting Simulation Spread_erdos_renyi_graph_prob_0.0 trial Spread_erdos_renyi_graph_prob_0-0_trial_1605822684-0959892 at 21:51:24.\n",
"INFO:soil:Finished Simulation Spread_erdos_renyi_graph_prob_0.0 trial Spread_erdos_renyi_graph_prob_0-0_trial_1605822684-0959892 at 21:51:24 in 0.2903263568878174 seconds\n",
"INFO:soil:Starting Dumping simulation Spread_erdos_renyi_graph_prob_0.0 trial Spread_erdos_renyi_graph_prob_0-0_trial_1605822684-0959892 at 21:51:24.\n",
"INFO:soil:Finished Dumping simulation Spread_erdos_renyi_graph_prob_0.0 trial Spread_erdos_renyi_graph_prob_0-0_trial_1605822684-0959892 at 21:51:24 in 0.0013904571533203125 seconds\n",
"INFO:soil:Starting [CSV] Dumping simulation Spread_erdos_renyi_graph_prob_0.0 trial Spread_erdos_renyi_graph_prob_0-0_trial_1605822684-0959892 @ dir /home/j/git/lab.gsi/soil/soil/examples/tutorial/soil_output/Spread_erdos_renyi_graph_prob_0.0 at 21:51:24.\n",
"INFO:soil:Finished [CSV] Dumping simulation Spread_erdos_renyi_graph_prob_0.0 trial Spread_erdos_renyi_graph_prob_0-0_trial_1605822684-0959892 @ dir /home/j/git/lab.gsi/soil/soil/examples/tutorial/soil_output/Spread_erdos_renyi_graph_prob_0.0 at 21:51:24 in 0.00780940055847168 seconds\n",
"INFO:soil:Finished simulation Spread_erdos_renyi_graph_prob_0.0 at 21:51:24 in 1.8845770359039307 seconds\n",
"INFO:soil:Using config(s): Spread_erdos_renyi_graph_prob_0.1\n",
"INFO:soil:Using exporters: ['default', 'csv']\n",
"INFO:soil:Output directory: None\n",
"INFO:soil:Starting simulation Spread_erdos_renyi_graph_prob_0.1 at 21:51:24.\n",
"INFO:soil:Dumping results to /home/j/git/lab.gsi/soil/soil/examples/tutorial/soil_output/Spread_erdos_renyi_graph_prob_0.1\n",
"INFO:soil:Starting Simulation Spread_erdos_renyi_graph_prob_0.1 trial Spread_erdos_renyi_graph_prob_0-1_trial_1605822686-1504185 at 21:51:26.\n",
"INFO:soil:Finished Simulation Spread_erdos_renyi_graph_prob_0.1 trial Spread_erdos_renyi_graph_prob_0-1_trial_1605822686-1504185 at 21:51:26 in 0.4628722667694092 seconds\n",
"INFO:soil:Starting Dumping simulation Spread_erdos_renyi_graph_prob_0.1 trial Spread_erdos_renyi_graph_prob_0-1_trial_1605822686-1504185 at 21:51:26.\n",
"INFO:soil:Finished Dumping simulation Spread_erdos_renyi_graph_prob_0.1 trial Spread_erdos_renyi_graph_prob_0-1_trial_1605822686-1504185 at 21:51:26 in 0.0014166831970214844 seconds\n",
"INFO:soil:Starting [CSV] Dumping simulation Spread_erdos_renyi_graph_prob_0.1 trial Spread_erdos_renyi_graph_prob_0-1_trial_1605822686-1504185 @ dir /home/j/git/lab.gsi/soil/soil/examples/tutorial/soil_output/Spread_erdos_renyi_graph_prob_0.1 at 21:51:26.\n",
"INFO:soil:Finished [CSV] Dumping simulation Spread_erdos_renyi_graph_prob_0.1 trial Spread_erdos_renyi_graph_prob_0-1_trial_1605822686-1504185 @ dir /home/j/git/lab.gsi/soil/soil/examples/tutorial/soil_output/Spread_erdos_renyi_graph_prob_0.1 at 21:51:26 in 0.007503986358642578 seconds\n",
"INFO:soil:Finished simulation Spread_erdos_renyi_graph_prob_0.1 at 21:51:26 in 2.144615888595581 seconds\n",
"INFO:soil:Using config(s): Spread_erdos_renyi_graph_prob_0.2\n",
"INFO:soil:Using exporters: ['default', 'csv']\n",
"INFO:soil:Output directory: None\n",
"INFO:soil:Starting simulation Spread_erdos_renyi_graph_prob_0.2 at 21:51:26.\n",
"INFO:soil:Dumping results to /home/j/git/lab.gsi/soil/soil/examples/tutorial/soil_output/Spread_erdos_renyi_graph_prob_0.2\n",
"INFO:soil:Starting Simulation Spread_erdos_renyi_graph_prob_0.2 trial Spread_erdos_renyi_graph_prob_0-2_trial_1605822688-204787 at 21:51:28.\n",
"INFO:soil:Finished Simulation Spread_erdos_renyi_graph_prob_0.2 trial Spread_erdos_renyi_graph_prob_0-2_trial_1605822688-204787 at 21:51:28 in 0.37325096130371094 seconds\n",
"INFO:soil:Starting Dumping simulation Spread_erdos_renyi_graph_prob_0.2 trial Spread_erdos_renyi_graph_prob_0-2_trial_1605822688-204787 at 21:51:28.\n",
"INFO:soil:Finished Dumping simulation Spread_erdos_renyi_graph_prob_0.2 trial Spread_erdos_renyi_graph_prob_0-2_trial_1605822688-204787 at 21:51:28 in 0.0016696453094482422 seconds\n",
"INFO:soil:Starting [CSV] Dumping simulation Spread_erdos_renyi_graph_prob_0.2 trial Spread_erdos_renyi_graph_prob_0-2_trial_1605822688-204787 @ dir /home/j/git/lab.gsi/soil/soil/examples/tutorial/soil_output/Spread_erdos_renyi_graph_prob_0.2 at 21:51:28.\n",
"INFO:soil:Finished [CSV] Dumping simulation Spread_erdos_renyi_graph_prob_0.2 trial Spread_erdos_renyi_graph_prob_0-2_trial_1605822688-204787 @ dir /home/j/git/lab.gsi/soil/soil/examples/tutorial/soil_output/Spread_erdos_renyi_graph_prob_0.2 at 21:51:28 in 0.007451057434082031 seconds\n",
"INFO:soil:Finished simulation Spread_erdos_renyi_graph_prob_0.2 at 21:51:28 in 1.9053213596343994 seconds\n",
"INFO:soil:Using config(s): Spread_erdos_renyi_graph_prob_0.3\n",
"INFO:soil:Using exporters: ['default', 'csv']\n",
"INFO:soil:Output directory: None\n",
"INFO:soil:Starting simulation Spread_erdos_renyi_graph_prob_0.3 at 21:51:28.\n",
"INFO:soil:Dumping results to /home/j/git/lab.gsi/soil/soil/examples/tutorial/soil_output/Spread_erdos_renyi_graph_prob_0.3\n",
"INFO:soil:Starting Simulation Spread_erdos_renyi_graph_prob_0.3 trial Spread_erdos_renyi_graph_prob_0-3_trial_1605822690-3038263 at 21:51:30.\n",
"INFO:soil:Finished Simulation Spread_erdos_renyi_graph_prob_0.3 trial Spread_erdos_renyi_graph_prob_0-3_trial_1605822690-3038263 at 21:51:30 in 0.397489070892334 seconds\n",
"INFO:soil:Starting Dumping simulation Spread_erdos_renyi_graph_prob_0.3 trial Spread_erdos_renyi_graph_prob_0-3_trial_1605822690-3038263 at 21:51:30.\n",
"INFO:soil:Finished Dumping simulation Spread_erdos_renyi_graph_prob_0.3 trial Spread_erdos_renyi_graph_prob_0-3_trial_1605822690-3038263 at 21:51:30 in 0.0012001991271972656 seconds\n",
"INFO:soil:Starting [CSV] Dumping simulation Spread_erdos_renyi_graph_prob_0.3 trial Spread_erdos_renyi_graph_prob_0-3_trial_1605822690-3038263 @ dir /home/j/git/lab.gsi/soil/soil/examples/tutorial/soil_output/Spread_erdos_renyi_graph_prob_0.3 at 21:51:30.\n",
"INFO:soil:Finished [CSV] Dumping simulation Spread_erdos_renyi_graph_prob_0.3 trial Spread_erdos_renyi_graph_prob_0-3_trial_1605822690-3038263 @ dir /home/j/git/lab.gsi/soil/soil/examples/tutorial/soil_output/Spread_erdos_renyi_graph_prob_0.3 at 21:51:30 in 0.007926225662231445 seconds\n",
"INFO:soil:Finished simulation Spread_erdos_renyi_graph_prob_0.3 at 21:51:30 in 2.0851120948791504 seconds\n",
"INFO:soil:Using config(s): Spread_erdos_renyi_graph_prob_0.4\n",
"INFO:soil:Using exporters: ['default', 'csv']\n",
"INFO:soil:Output directory: None\n",
"INFO:soil:Starting simulation Spread_erdos_renyi_graph_prob_0.4 at 21:51:30.\n",
"INFO:soil:Dumping results to /home/j/git/lab.gsi/soil/soil/examples/tutorial/soil_output/Spread_erdos_renyi_graph_prob_0.4\n",
"INFO:soil:Starting Simulation Spread_erdos_renyi_graph_prob_0.4 trial Spread_erdos_renyi_graph_prob_0-4_trial_1605822692-3893287 at 21:51:32.\n",
"INFO:soil:Finished Simulation Spread_erdos_renyi_graph_prob_0.4 trial Spread_erdos_renyi_graph_prob_0-4_trial_1605822692-3893287 at 21:51:32 in 0.3599538803100586 seconds\n",
"INFO:soil:Starting Dumping simulation Spread_erdos_renyi_graph_prob_0.4 trial Spread_erdos_renyi_graph_prob_0-4_trial_1605822692-3893287 at 21:51:32.\n",
"INFO:soil:Finished Dumping simulation Spread_erdos_renyi_graph_prob_0.4 trial Spread_erdos_renyi_graph_prob_0-4_trial_1605822692-3893287 at 21:51:32 in 0.0013287067413330078 seconds\n",
"INFO:soil:Starting [CSV] Dumping simulation Spread_erdos_renyi_graph_prob_0.4 trial Spread_erdos_renyi_graph_prob_0-4_trial_1605822692-3893287 @ dir /home/j/git/lab.gsi/soil/soil/examples/tutorial/soil_output/Spread_erdos_renyi_graph_prob_0.4 at 21:51:32.\n",
"INFO:soil:Finished [CSV] Dumping simulation Spread_erdos_renyi_graph_prob_0.4 trial Spread_erdos_renyi_graph_prob_0-4_trial_1605822692-3893287 @ dir /home/j/git/lab.gsi/soil/soil/examples/tutorial/soil_output/Spread_erdos_renyi_graph_prob_0.4 at 21:51:32 in 0.007839202880859375 seconds\n",
"INFO:soil:Finished simulation Spread_erdos_renyi_graph_prob_0.4 at 21:51:32 in 2.00582218170166 seconds\n",
"INFO:soil:Using config(s): Spread_barabasi_albert_graph_prob_0.0\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"INFO:soil:Using exporters: ['default', 'csv']\n",
"INFO:soil:Output directory: None\n",
"INFO:soil:Starting simulation Spread_barabasi_albert_graph_prob_0.0 at 21:51:32.\n",
"INFO:soil:Dumping results to /home/j/git/lab.gsi/soil/soil/examples/tutorial/soil_output/Spread_barabasi_albert_graph_prob_0.0\n",
"INFO:soil:Starting Simulation Spread_barabasi_albert_graph_prob_0.0 trial Spread_barabasi_albert_graph_prob_0-0_trial_1605822693-02196 at 21:51:33.\n",
"INFO:soil:Finished Simulation Spread_barabasi_albert_graph_prob_0.0 trial Spread_barabasi_albert_graph_prob_0-0_trial_1605822693-02196 at 21:51:33 in 0.08920121192932129 seconds\n",
"INFO:soil:Starting Dumping simulation Spread_barabasi_albert_graph_prob_0.0 trial Spread_barabasi_albert_graph_prob_0-0_trial_1605822693-02196 at 21:51:33.\n",
"INFO:soil:Finished Dumping simulation Spread_barabasi_albert_graph_prob_0.0 trial Spread_barabasi_albert_graph_prob_0-0_trial_1605822693-02196 at 21:51:33 in 0.002248525619506836 seconds\n",
"INFO:soil:Starting [CSV] Dumping simulation Spread_barabasi_albert_graph_prob_0.0 trial Spread_barabasi_albert_graph_prob_0-0_trial_1605822693-02196 @ dir /home/j/git/lab.gsi/soil/soil/examples/tutorial/soil_output/Spread_barabasi_albert_graph_prob_0.0 at 21:51:33.\n",
"INFO:soil:Finished [CSV] Dumping simulation Spread_barabasi_albert_graph_prob_0.0 trial Spread_barabasi_albert_graph_prob_0-0_trial_1605822693-02196 @ dir /home/j/git/lab.gsi/soil/soil/examples/tutorial/soil_output/Spread_barabasi_albert_graph_prob_0.0 at 21:51:33 in 0.008725643157958984 seconds\n",
"INFO:soil:Finished simulation Spread_barabasi_albert_graph_prob_0.0 at 21:51:33 in 0.27675533294677734 seconds\n",
"INFO:soil:Using config(s): Spread_barabasi_albert_graph_prob_0.1\n",
"INFO:soil:Using exporters: ['default', 'csv']\n",
"INFO:soil:Output directory: None\n",
"INFO:soil:Starting simulation Spread_barabasi_albert_graph_prob_0.1 at 21:51:33.\n",
"INFO:soil:Dumping results to /home/j/git/lab.gsi/soil/soil/examples/tutorial/soil_output/Spread_barabasi_albert_graph_prob_0.1\n",
"INFO:soil:Starting Simulation Spread_barabasi_albert_graph_prob_0.1 trial Spread_barabasi_albert_graph_prob_0-1_trial_1605822693-3600936 at 21:51:33.\n",
"INFO:soil:Finished Simulation Spread_barabasi_albert_graph_prob_0.1 trial Spread_barabasi_albert_graph_prob_0-1_trial_1605822693-3600936 at 21:51:33 in 0.10021758079528809 seconds\n",
"INFO:soil:Starting Dumping simulation Spread_barabasi_albert_graph_prob_0.1 trial Spread_barabasi_albert_graph_prob_0-1_trial_1605822693-3600936 at 21:51:33.\n",
"INFO:soil:Finished Dumping simulation Spread_barabasi_albert_graph_prob_0.1 trial Spread_barabasi_albert_graph_prob_0-1_trial_1605822693-3600936 at 21:51:33 in 0.0017764568328857422 seconds\n",
"INFO:soil:Starting [CSV] Dumping simulation Spread_barabasi_albert_graph_prob_0.1 trial Spread_barabasi_albert_graph_prob_0-1_trial_1605822693-3600936 @ dir /home/j/git/lab.gsi/soil/soil/examples/tutorial/soil_output/Spread_barabasi_albert_graph_prob_0.1 at 21:51:33.\n",
"INFO:soil:Finished [CSV] Dumping simulation Spread_barabasi_albert_graph_prob_0.1 trial Spread_barabasi_albert_graph_prob_0-1_trial_1605822693-3600936 @ dir /home/j/git/lab.gsi/soil/soil/examples/tutorial/soil_output/Spread_barabasi_albert_graph_prob_0.1 at 21:51:33 in 0.009679555892944336 seconds\n",
"INFO:soil:Finished simulation Spread_barabasi_albert_graph_prob_0.1 at 21:51:33 in 0.34103941917419434 seconds\n",
"INFO:soil:Using config(s): Spread_barabasi_albert_graph_prob_0.2\n",
"INFO:soil:Using exporters: ['default', 'csv']\n",
"INFO:soil:Output directory: None\n",
"INFO:soil:Starting simulation Spread_barabasi_albert_graph_prob_0.2 at 21:51:33.\n",
"INFO:soil:Dumping results to /home/j/git/lab.gsi/soil/soil/examples/tutorial/soil_output/Spread_barabasi_albert_graph_prob_0.2\n",
"INFO:soil:Starting Simulation Spread_barabasi_albert_graph_prob_0.2 trial Spread_barabasi_albert_graph_prob_0-2_trial_1605822693-6736543 at 21:51:33.\n",
"INFO:soil:Finished Simulation Spread_barabasi_albert_graph_prob_0.2 trial Spread_barabasi_albert_graph_prob_0-2_trial_1605822693-6736543 at 21:51:33 in 0.10449576377868652 seconds\n",
"INFO:soil:Starting Dumping simulation Spread_barabasi_albert_graph_prob_0.2 trial Spread_barabasi_albert_graph_prob_0-2_trial_1605822693-6736543 at 21:51:33.\n",
"INFO:soil:Finished Dumping simulation Spread_barabasi_albert_graph_prob_0.2 trial Spread_barabasi_albert_graph_prob_0-2_trial_1605822693-6736543 at 21:51:33 in 0.0013310909271240234 seconds\n",
"INFO:soil:Starting [CSV] Dumping simulation Spread_barabasi_albert_graph_prob_0.2 trial Spread_barabasi_albert_graph_prob_0-2_trial_1605822693-6736543 @ dir /home/j/git/lab.gsi/soil/soil/examples/tutorial/soil_output/Spread_barabasi_albert_graph_prob_0.2 at 21:51:33.\n",
"INFO:soil:Finished [CSV] Dumping simulation Spread_barabasi_albert_graph_prob_0.2 trial Spread_barabasi_albert_graph_prob_0-2_trial_1605822693-6736543 @ dir /home/j/git/lab.gsi/soil/soil/examples/tutorial/soil_output/Spread_barabasi_albert_graph_prob_0.2 at 21:51:33 in 0.008279085159301758 seconds\n",
"INFO:soil:Finished simulation Spread_barabasi_albert_graph_prob_0.2 at 21:51:33 in 0.3049919605255127 seconds\n",
"INFO:soil:Using config(s): Spread_barabasi_albert_graph_prob_0.3\n",
"INFO:soil:Using exporters: ['default', 'csv']\n",
"INFO:soil:Output directory: None\n",
"INFO:soil:Starting simulation Spread_barabasi_albert_graph_prob_0.3 at 21:51:33.\n",
"INFO:soil:Dumping results to /home/j/git/lab.gsi/soil/soil/examples/tutorial/soil_output/Spread_barabasi_albert_graph_prob_0.3\n",
"INFO:soil:Starting Simulation Spread_barabasi_albert_graph_prob_0.3 trial Spread_barabasi_albert_graph_prob_0-3_trial_1605822693-98245 at 21:51:34.\n",
"INFO:soil:Finished Simulation Spread_barabasi_albert_graph_prob_0.3 trial Spread_barabasi_albert_graph_prob_0-3_trial_1605822693-98245 at 21:51:34 in 0.10204219818115234 seconds\n",
"INFO:soil:Starting Dumping simulation Spread_barabasi_albert_graph_prob_0.3 trial Spread_barabasi_albert_graph_prob_0-3_trial_1605822693-98245 at 21:51:34.\n",
"INFO:soil:Finished Dumping simulation Spread_barabasi_albert_graph_prob_0.3 trial Spread_barabasi_albert_graph_prob_0-3_trial_1605822693-98245 at 21:51:34 in 0.0013041496276855469 seconds\n",
"INFO:soil:Starting [CSV] Dumping simulation Spread_barabasi_albert_graph_prob_0.3 trial Spread_barabasi_albert_graph_prob_0-3_trial_1605822693-98245 @ dir /home/j/git/lab.gsi/soil/soil/examples/tutorial/soil_output/Spread_barabasi_albert_graph_prob_0.3 at 21:51:34.\n",
"INFO:soil:Finished [CSV] Dumping simulation Spread_barabasi_albert_graph_prob_0.3 trial Spread_barabasi_albert_graph_prob_0-3_trial_1605822693-98245 @ dir /home/j/git/lab.gsi/soil/soil/examples/tutorial/soil_output/Spread_barabasi_albert_graph_prob_0.3 at 21:51:34 in 0.007649898529052734 seconds\n",
"INFO:soil:Finished simulation Spread_barabasi_albert_graph_prob_0.3 at 21:51:34 in 0.33296704292297363 seconds\n",
"INFO:soil:Using config(s): Spread_barabasi_albert_graph_prob_0.4\n",
"INFO:soil:Using exporters: ['default', 'csv']\n",
"INFO:soil:Output directory: None\n",
"INFO:soil:Starting simulation Spread_barabasi_albert_graph_prob_0.4 at 21:51:34.\n",
"INFO:soil:Dumping results to /home/j/git/lab.gsi/soil/soil/examples/tutorial/soil_output/Spread_barabasi_albert_graph_prob_0.4\n",
"INFO:soil:Starting Simulation Spread_barabasi_albert_graph_prob_0.4 trial Spread_barabasi_albert_graph_prob_0-4_trial_1605822694-3096724 at 21:51:34.\n",
"INFO:soil:Finished Simulation Spread_barabasi_albert_graph_prob_0.4 trial Spread_barabasi_albert_graph_prob_0-4_trial_1605822694-3096724 at 21:51:34 in 0.10178518295288086 seconds\n",
"INFO:soil:Starting Dumping simulation Spread_barabasi_albert_graph_prob_0.4 trial Spread_barabasi_albert_graph_prob_0-4_trial_1605822694-3096724 at 21:51:34.\n",
"INFO:soil:Finished Dumping simulation Spread_barabasi_albert_graph_prob_0.4 trial Spread_barabasi_albert_graph_prob_0-4_trial_1605822694-3096724 at 21:51:34 in 0.0014145374298095703 seconds\n",
"INFO:soil:Starting [CSV] Dumping simulation Spread_barabasi_albert_graph_prob_0.4 trial Spread_barabasi_albert_graph_prob_0-4_trial_1605822694-3096724 @ dir /home/j/git/lab.gsi/soil/soil/examples/tutorial/soil_output/Spread_barabasi_albert_graph_prob_0.4 at 21:51:34.\n",
"INFO:soil:Finished [CSV] Dumping simulation Spread_barabasi_albert_graph_prob_0.4 trial Spread_barabasi_albert_graph_prob_0-4_trial_1605822694-3096724 @ dir /home/j/git/lab.gsi/soil/soil/examples/tutorial/soil_output/Spread_barabasi_albert_graph_prob_0.4 at 21:51:34 in 0.007404804229736328 seconds\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"INFO:soil:Finished simulation Spread_barabasi_albert_graph_prob_0.4 at 21:51:34 in 0.2759675979614258 seconds\n"
]
}
],
"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@2020-10-20_02.13.09\r\n",
"│   │   ├── Spread_barabasi_albert_graph_prob_0.0.dumped.yml@2020-11-19_17.07.59\r\n",
"│   │   ├── Spread_barabasi_albert_graph_prob_0.0.dumped.yml@2020-11-19_22.21.31\r\n",
"│   │   ├── Spread_barabasi_albert_graph_prob_0.0.dumped.yml@2020-11-19_22.27.50\r\n",
"│   │   ├── Spread_barabasi_albert_graph_prob_0.0.dumped.yml@2020-11-19_22.30.03\r\n",
"│   │   ├── Spread_barabasi_albert_graph_prob_0.0.dumped.yml@2020-11-19_22.37.58\r\n",
"│   │   ├── Spread_barabasi_albert_graph_prob_0.0_trial_0.csv@2020-10-20_02.13.09\r\n",
"│   │   ├── Spread_barabasi_albert_graph_prob_0.0_trial_0.sqlite@2020-10-20_02.13.09\r\n",
"│   │   └── Spread_barabasi_albert_graph_prob_0.0_trial_0.stats.csv@2020-10-20_02.13.09\r\n",
"│   ├── Spread_barabasi_albert_graph_prob_0.0.dumped.yml\r\n",
"│   ├── Spread_barabasi_albert_graph_prob_0.0_trial_0.csv\r\n",
"│   ├── Spread_barabasi_albert_graph_prob_0.0_trial_0.db.sqlite\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",
"│   ├── Spread_barabasi_albert_graph_prob_0-0_trial_1605820891-4782693.csv\r\n",
"│   ├── Spread_barabasi_albert_graph_prob_0-0_trial_1605820891-4782693.sqlite\r\n",
"│   ├── Spread_barabasi_albert_graph_prob_0-0_trial_1605820891-4782693.stats.csv\r\n",
"│   ├── Spread_barabasi_albert_graph_prob_0-0_trial_1605821270-8135355.csv\r\n",
"│   ├── Spread_barabasi_albert_graph_prob_0-0_trial_1605821270-8135355.sqlite\r\n",
"│   ├── Spread_barabasi_albert_graph_prob_0-0_trial_1605821270-8135355.stats.csv\r\n",
"│   ├── Spread_barabasi_albert_graph_prob_0-0_trial_1605821403-9184299.csv\r\n",
"│   ├── Spread_barabasi_albert_graph_prob_0-0_trial_1605821403-9184299.sqlite\r\n",
"│   ├── Spread_barabasi_albert_graph_prob_0-0_trial_1605821403-9184299.stats.csv\r\n",
"│   ├── Spread_barabasi_albert_graph_prob_0-0_trial_1605821878-07332.csv\r\n",
"│   ├── Spread_barabasi_albert_graph_prob_0-0_trial_1605821878-07332.sqlite\r\n",
"│   ├── Spread_barabasi_albert_graph_prob_0-0_trial_1605821878-07332.stats.csv\r\n",
"│   ├── Spread_barabasi_albert_graph_prob_0-0_trial_1605822693-02196.csv\r\n",
"│   ├── Spread_barabasi_albert_graph_prob_0-0_trial_1605822693-02196.sqlite\r\n",
"│   ├── Spread_barabasi_albert_graph_prob_0-0_trial_1605822693-02196.stats.csv\r\n",
"│   └── Spread_barabasi_albert_graph_prob_0-0_trial_1*.sqlite\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@2020-10-20_02.13.09\r\n",
"│   │   ├── Spread_barabasi_albert_graph_prob_0.1.dumped.yml@2020-11-19_17.07.59\r\n",
"│   │   ├── Spread_barabasi_albert_graph_prob_0.1.dumped.yml@2020-11-19_22.21.31\r\n",
"│   │   ├── Spread_barabasi_albert_graph_prob_0.1.dumped.yml@2020-11-19_22.27.51\r\n",
"│   │   ├── Spread_barabasi_albert_graph_prob_0.1.dumped.yml@2020-11-19_22.30.04\r\n",
"│   │   ├── Spread_barabasi_albert_graph_prob_0.1.dumped.yml@2020-11-19_22.37.58\r\n",
"│   │   ├── Spread_barabasi_albert_graph_prob_0.1_trial_0.csv@2020-10-20_02.13.10\r\n",
"│   │   ├── Spread_barabasi_albert_graph_prob_0.1_trial_0.sqlite@2020-10-20_02.13.10\r\n",
"│   │   └── Spread_barabasi_albert_graph_prob_0.1_trial_0.stats.csv@2020-10-20_02.13.10\r\n",
"│   ├── Spread_barabasi_albert_graph_prob_0.1.dumped.yml\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",
"│   ├── Spread_barabasi_albert_graph_prob_0-1_trial_1605820891-7942905.csv\r\n",
"│   ├── Spread_barabasi_albert_graph_prob_0-1_trial_1605820891-7942905.sqlite\r\n",
"│   ├── Spread_barabasi_albert_graph_prob_0-1_trial_1605820891-7942905.stats.csv\r\n",
"│   ├── Spread_barabasi_albert_graph_prob_0-1_trial_1605821271-1282487.csv\r\n",
"│   ├── Spread_barabasi_albert_graph_prob_0-1_trial_1605821271-1282487.sqlite\r\n",
"│   ├── Spread_barabasi_albert_graph_prob_0-1_trial_1605821271-1282487.stats.csv\r\n",
"│   ├── Spread_barabasi_albert_graph_prob_0-1_trial_1605821404-2597992.csv\r\n",
"│   ├── Spread_barabasi_albert_graph_prob_0-1_trial_1605821404-2597992.sqlite\r\n",
"│   ├── Spread_barabasi_albert_graph_prob_0-1_trial_1605821404-2597992.stats.csv\r\n",
"│   ├── Spread_barabasi_albert_graph_prob_0-1_trial_1605821878-3834527.csv\r\n",
"│   ├── Spread_barabasi_albert_graph_prob_0-1_trial_1605821878-3834527.sqlite\r\n",
"│   ├── Spread_barabasi_albert_graph_prob_0-1_trial_1605821878-3834527.stats.csv\r\n",
"│   ├── Spread_barabasi_albert_graph_prob_0-1_trial_1605822693-3600936.csv\r\n",
"│   ├── Spread_barabasi_albert_graph_prob_0-1_trial_1605822693-3600936.sqlite\r\n",
"│   └── Spread_barabasi_albert_graph_prob_0-1_trial_1605822693-3600936.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@2020-10-20_02.13.10\r\n",
"│   │   ├── Spread_barabasi_albert_graph_prob_0.2.dumped.yml@2020-11-19_17.07.59\r\n",
"│   │   ├── Spread_barabasi_albert_graph_prob_0.2.dumped.yml@2020-11-19_22.21.32\r\n",
"│   │   ├── Spread_barabasi_albert_graph_prob_0.2.dumped.yml@2020-11-19_22.27.51\r\n",
"│   │   ├── Spread_barabasi_albert_graph_prob_0.2.dumped.yml@2020-11-19_22.30.04\r\n",
"│   │   ├── Spread_barabasi_albert_graph_prob_0.2.dumped.yml@2020-11-19_22.37.58\r\n",
"│   │   ├── Spread_barabasi_albert_graph_prob_0.2_trial_0.csv@2020-10-20_02.13.10\r\n",
"│   │   ├── Spread_barabasi_albert_graph_prob_0.2_trial_0.sqlite@2020-10-20_02.13.10\r\n",
"│   │   └── Spread_barabasi_albert_graph_prob_0.2_trial_0.stats.csv@2020-10-20_02.13.10\r\n",
"│   ├── Spread_barabasi_albert_graph_prob_0.2.dumped.yml\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",
"│   ├── Spread_barabasi_albert_graph_prob_0-2_trial_1605820892-0839.csv\r\n",
"│   ├── Spread_barabasi_albert_graph_prob_0-2_trial_1605820892-0839.sqlite\r\n",
"│   ├── Spread_barabasi_albert_graph_prob_0-2_trial_1605820892-0839.stats.csv\r\n",
"│   ├── Spread_barabasi_albert_graph_prob_0-2_trial_1605821271-4662864.csv\r\n",
"│   ├── Spread_barabasi_albert_graph_prob_0-2_trial_1605821271-4662864.sqlite\r\n",
"│   ├── Spread_barabasi_albert_graph_prob_0-2_trial_1605821271-4662864.stats.csv\r\n",
"│   ├── Spread_barabasi_albert_graph_prob_0-2_trial_1605821404-5465293.csv\r\n",
"│   ├── Spread_barabasi_albert_graph_prob_0-2_trial_1605821404-5465293.sqlite\r\n",
"│   ├── Spread_barabasi_albert_graph_prob_0-2_trial_1605821404-5465293.stats.csv\r\n",
"│   ├── Spread_barabasi_albert_graph_prob_0-2_trial_1605821878-6511369.csv\r\n",
"│   ├── Spread_barabasi_albert_graph_prob_0-2_trial_1605821878-6511369.sqlite\r\n",
"│   ├── Spread_barabasi_albert_graph_prob_0-2_trial_1605821878-6511369.stats.csv\r\n",
"│   ├── Spread_barabasi_albert_graph_prob_0-2_trial_1605822693-6736543.csv\r\n",
"│   ├── Spread_barabasi_albert_graph_prob_0-2_trial_1605822693-6736543.sqlite\r\n",
"│   └── Spread_barabasi_albert_graph_prob_0-2_trial_1605822693-6736543.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@2020-10-20_02.13.10\r\n",
"│   │   ├── Spread_barabasi_albert_graph_prob_0.3.dumped.yml@2020-11-19_17.08.00\r\n",
"│   │   ├── Spread_barabasi_albert_graph_prob_0.3.dumped.yml@2020-11-19_22.21.32\r\n",
"│   │   ├── Spread_barabasi_albert_graph_prob_0.3.dumped.yml@2020-11-19_22.27.51\r\n",
"│   │   ├── Spread_barabasi_albert_graph_prob_0.3.dumped.yml@2020-11-19_22.30.04\r\n",
"│   │   ├── Spread_barabasi_albert_graph_prob_0.3.dumped.yml@2020-11-19_22.37.58\r\n",
"│   │   ├── Spread_barabasi_albert_graph_prob_0.3_trial_0.csv@2020-10-20_02.13.10\r\n",
"│   │   ├── Spread_barabasi_albert_graph_prob_0.3_trial_0.sqlite@2020-10-20_02.13.10\r\n",
"│   │   └── Spread_barabasi_albert_graph_prob_0.3_trial_0.stats.csv@2020-10-20_02.13.10\r\n",
"│   ├── Spread_barabasi_albert_graph_prob_0.3.dumped.yml\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",
"│   ├── Spread_barabasi_albert_graph_prob_0-3_trial_1605820892-4140177.csv\r\n",
"│   ├── Spread_barabasi_albert_graph_prob_0-3_trial_1605820892-4140177.sqlite\r\n",
"│   ├── Spread_barabasi_albert_graph_prob_0-3_trial_1605820892-4140177.stats.csv\r\n",
"│   ├── Spread_barabasi_albert_graph_prob_0-3_trial_1605821271-7566118.csv\r\n",
"│   ├── Spread_barabasi_albert_graph_prob_0-3_trial_1605821271-7566118.sqlite\r\n",
"│   ├── Spread_barabasi_albert_graph_prob_0-3_trial_1605821271-7566118.stats.csv\r\n",
"│   ├── Spread_barabasi_albert_graph_prob_0-3_trial_1605821404-8982599.csv\r\n",
"│   ├── Spread_barabasi_albert_graph_prob_0-3_trial_1605821404-8982599.sqlite\r\n",
"│   ├── Spread_barabasi_albert_graph_prob_0-3_trial_1605821404-8982599.stats.csv\r\n",
"│   ├── Spread_barabasi_albert_graph_prob_0-3_trial_1605821878-9966376.csv\r\n",
"│   ├── Spread_barabasi_albert_graph_prob_0-3_trial_1605821878-9966376.sqlite\r\n",
"│   ├── Spread_barabasi_albert_graph_prob_0-3_trial_1605821878-9966376.stats.csv\r\n",
"│   ├── Spread_barabasi_albert_graph_prob_0-3_trial_1605822693-98245.csv\r\n",
"│   ├── Spread_barabasi_albert_graph_prob_0-3_trial_1605822693-98245.sqlite\r\n",
"│   └── Spread_barabasi_albert_graph_prob_0-3_trial_1605822693-98245.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@2020-10-20_02.13.11\r\n",
"│   │   ├── Spread_barabasi_albert_graph_prob_0.4.dumped.yml@2020-11-19_17.08.00\r\n",
"│   │   ├── Spread_barabasi_albert_graph_prob_0.4.dumped.yml@2020-11-19_22.21.32\r\n",
"│   │   ├── Spread_barabasi_albert_graph_prob_0.4.dumped.yml@2020-11-19_22.27.52\r\n",
"│   │   ├── Spread_barabasi_albert_graph_prob_0.4.dumped.yml@2020-11-19_22.30.05\r\n",
"│   │   ├── Spread_barabasi_albert_graph_prob_0.4.dumped.yml@2020-11-19_22.37.59\r\n",
"│   │   ├── Spread_barabasi_albert_graph_prob_0.4_trial_0.csv@2020-10-20_02.13.11\r\n",
"│   │   ├── Spread_barabasi_albert_graph_prob_0.4_trial_0.sqlite@2020-10-20_02.13.11\r\n",
"│   │   └── Spread_barabasi_albert_graph_prob_0.4_trial_0.stats.csv@2020-10-20_02.13.11\r\n",
"│   ├── Spread_barabasi_albert_graph_prob_0.4.dumped.yml\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",
"│   ├── Spread_barabasi_albert_graph_prob_0-4_trial_1605820892-7289681.csv\r\n",
"│   ├── Spread_barabasi_albert_graph_prob_0-4_trial_1605820892-7289681.sqlite\r\n",
"│   ├── Spread_barabasi_albert_graph_prob_0-4_trial_1605820892-7289681.stats.csv\r\n",
"│   ├── Spread_barabasi_albert_graph_prob_0-4_trial_1605821272-094621.csv\r\n",
"│   ├── Spread_barabasi_albert_graph_prob_0-4_trial_1605821272-094621.sqlite\r\n",
"│   ├── Spread_barabasi_albert_graph_prob_0-4_trial_1605821272-094621.stats.csv\r\n",
"│   ├── Spread_barabasi_albert_graph_prob_0-4_trial_1605821405-182661.csv\r\n",
"│   ├── Spread_barabasi_albert_graph_prob_0-4_trial_1605821405-182661.sqlite\r\n",
"│   ├── Spread_barabasi_albert_graph_prob_0-4_trial_1605821405-182661.stats.csv\r\n",
"│   ├── Spread_barabasi_albert_graph_prob_0-4_trial_1605821879-2909274.csv\r\n",
"│   ├── Spread_barabasi_albert_graph_prob_0-4_trial_1605821879-2909274.sqlite\r\n",
"│   ├── Spread_barabasi_albert_graph_prob_0-4_trial_1605821879-2909274.stats.csv\r\n",
"│   ├── Spread_barabasi_albert_graph_prob_0-4_trial_1605822694-3096724.csv\r\n",
"│   ├── Spread_barabasi_albert_graph_prob_0-4_trial_1605822694-3096724.sqlite\r\n",
"│   └── Spread_barabasi_albert_graph_prob_0-4_trial_1605822694-3096724.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@2020-10-20_02.13.01\r\n",
"│   │   ├── Spread_erdos_renyi_graph_prob_0.0.dumped.yml@2020-11-19_17.07.50\r\n",
"│   │   ├── Spread_erdos_renyi_graph_prob_0.0.dumped.yml@2020-11-19_22.21.23\r\n",
"│   │   ├── Spread_erdos_renyi_graph_prob_0.0.dumped.yml@2020-11-19_22.27.42\r\n",
"│   │   ├── Spread_erdos_renyi_graph_prob_0.0.dumped.yml@2020-11-19_22.29.55\r\n",
"│   │   ├── Spread_erdos_renyi_graph_prob_0.0.dumped.yml@2020-11-19_22.37.49\r\n",
"│   │   ├── Spread_erdos_renyi_graph_prob_0.0_trial_0.csv@2020-10-20_02.13.01\r\n",
"│   │   ├── Spread_erdos_renyi_graph_prob_0.0_trial_0.sqlite@2020-10-20_02.13.01\r\n",
"│   │   └── Spread_erdos_renyi_graph_prob_0.0_trial_0.stats.csv@2020-10-20_02.13.01\r\n",
"│   ├── Spread_erdos_renyi_graph_prob_0.0.dumped.yml\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",
"│   ├── Spread_erdos_renyi_graph_prob_0-0_trial_1605820883-06455.csv\r\n",
"│   ├── Spread_erdos_renyi_graph_prob_0-0_trial_1605820883-06455.sqlite\r\n",
"│   ├── Spread_erdos_renyi_graph_prob_0-0_trial_1605820883-06455.stats.csv\r\n",
"│   ├── Spread_erdos_renyi_graph_prob_0-0_trial_1605821262-320959.csv\r\n",
"│   ├── Spread_erdos_renyi_graph_prob_0-0_trial_1605821262-320959.sqlite\r\n",
"│   ├── Spread_erdos_renyi_graph_prob_0-0_trial_1605821262-320959.stats.csv\r\n",
"│   ├── Spread_erdos_renyi_graph_prob_0-0_trial_1605821395-1533184.csv\r\n",
"│   ├── Spread_erdos_renyi_graph_prob_0-0_trial_1605821395-1533184.sqlite\r\n",
"│   ├── Spread_erdos_renyi_graph_prob_0-0_trial_1605821395-1533184.stats.csv\r\n",
"│   ├── Spread_erdos_renyi_graph_prob_0-0_trial_1605821869-3048918.csv\r\n",
"│   ├── Spread_erdos_renyi_graph_prob_0-0_trial_1605821869-3048918.sqlite\r\n",
"│   ├── Spread_erdos_renyi_graph_prob_0-0_trial_1605821869-3048918.stats.csv\r\n",
"│   ├── Spread_erdos_renyi_graph_prob_0-0_trial_1605822684-0959892.csv\r\n",
"│   ├── Spread_erdos_renyi_graph_prob_0-0_trial_1605822684-0959892.sqlite\r\n",
"│   └── Spread_erdos_renyi_graph_prob_0-0_trial_1605822684-0959892.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@2020-10-20_02.13.03\r\n",
"│   │   ├── Spread_erdos_renyi_graph_prob_0.1.dumped.yml@2020-11-19_17.07.52\r\n",
"│   │   ├── Spread_erdos_renyi_graph_prob_0.1.dumped.yml@2020-11-19_22.21.24\r\n",
"│   │   ├── Spread_erdos_renyi_graph_prob_0.1.dumped.yml@2020-11-19_22.27.44\r\n",
"│   │   ├── Spread_erdos_renyi_graph_prob_0.1.dumped.yml@2020-11-19_22.29.57\r\n",
"│   │   ├── Spread_erdos_renyi_graph_prob_0.1.dumped.yml@2020-11-19_22.37.51\r\n",
"│   │   ├── Spread_erdos_renyi_graph_prob_0.1_trial_0.csv@2020-10-20_02.13.03\r\n",
"│   │   ├── Spread_erdos_renyi_graph_prob_0.1_trial_0.sqlite@2020-10-20_02.13.03\r\n",
"│   │   └── Spread_erdos_renyi_graph_prob_0.1_trial_0.stats.csv@2020-10-20_02.13.03\r\n",
"│   ├── Spread_erdos_renyi_graph_prob_0.1.dumped.yml\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",
"│   ├── Spread_erdos_renyi_graph_prob_0-1_trial_1605820884-9897068.csv\r\n",
"│   ├── Spread_erdos_renyi_graph_prob_0-1_trial_1605820884-9897068.sqlite\r\n",
"│   ├── Spread_erdos_renyi_graph_prob_0-1_trial_1605820884-9897068.stats.csv\r\n",
"│   ├── Spread_erdos_renyi_graph_prob_0-1_trial_1605821264-2528372.csv\r\n",
"│   ├── Spread_erdos_renyi_graph_prob_0-1_trial_1605821264-2528372.sqlite\r\n",
"│   ├── Spread_erdos_renyi_graph_prob_0-1_trial_1605821264-2528372.stats.csv\r\n",
"│   ├── Spread_erdos_renyi_graph_prob_0-1_trial_1605821397-0991232.csv\r\n",
"│   ├── Spread_erdos_renyi_graph_prob_0-1_trial_1605821397-0991232.sqlite\r\n",
"│   ├── Spread_erdos_renyi_graph_prob_0-1_trial_1605821397-0991232.stats.csv\r\n",
"│   ├── Spread_erdos_renyi_graph_prob_0-1_trial_1605821871-3203213.csv\r\n",
"│   ├── Spread_erdos_renyi_graph_prob_0-1_trial_1605821871-3203213.sqlite\r\n",
"│   ├── Spread_erdos_renyi_graph_prob_0-1_trial_1605821871-3203213.stats.csv\r\n",
"│   ├── Spread_erdos_renyi_graph_prob_0-1_trial_1605822686-1504185.csv\r\n",
"│   ├── Spread_erdos_renyi_graph_prob_0-1_trial_1605822686-1504185.sqlite\r\n",
"│   └── Spread_erdos_renyi_graph_prob_0-1_trial_1605822686-1504185.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@2020-10-20_02.13.05\r\n",
"│   │   ├── Spread_erdos_renyi_graph_prob_0.2.dumped.yml@2020-11-19_17.07.54\r\n",
"│   │   ├── Spread_erdos_renyi_graph_prob_0.2.dumped.yml@2020-11-19_22.21.26\r\n",
"│   │   ├── Spread_erdos_renyi_graph_prob_0.2.dumped.yml@2020-11-19_22.27.46\r\n",
"│   │   ├── Spread_erdos_renyi_graph_prob_0.2.dumped.yml@2020-11-19_22.29.59\r\n",
"│   │   ├── Spread_erdos_renyi_graph_prob_0.2.dumped.yml@2020-11-19_22.37.53\r\n",
"│   │   ├── Spread_erdos_renyi_graph_prob_0.2_trial_0.csv@2020-10-20_02.13.05\r\n",
"│   │   ├── Spread_erdos_renyi_graph_prob_0.2_trial_0.sqlite@2020-10-20_02.13.05\r\n",
"│   │   └── Spread_erdos_renyi_graph_prob_0.2_trial_0.stats.csv@2020-10-20_02.13.05\r\n",
"│   ├── Spread_erdos_renyi_graph_prob_0.2.dumped.yml\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",
"│   ├── Spread_erdos_renyi_graph_prob_0-2_trial_1605820886-9976044.csv\r\n",
"│   ├── Spread_erdos_renyi_graph_prob_0-2_trial_1605820886-9976044.sqlite\r\n",
"│   ├── Spread_erdos_renyi_graph_prob_0-2_trial_1605820886-9976044.stats.csv\r\n",
"│   ├── Spread_erdos_renyi_graph_prob_0-2_trial_1605821266-2571487.csv\r\n",
"│   ├── Spread_erdos_renyi_graph_prob_0-2_trial_1605821266-2571487.sqlite\r\n",
"│   ├── Spread_erdos_renyi_graph_prob_0-2_trial_1605821266-2571487.stats.csv\r\n",
"│   ├── Spread_erdos_renyi_graph_prob_0-2_trial_1605821399-2090585.csv\r\n",
"│   ├── Spread_erdos_renyi_graph_prob_0-2_trial_1605821399-2090585.sqlite\r\n",
"│   ├── Spread_erdos_renyi_graph_prob_0-2_trial_1605821399-2090585.stats.csv\r\n",
"│   ├── Spread_erdos_renyi_graph_prob_0-2_trial_1605821873-299152.csv\r\n",
"│   ├── Spread_erdos_renyi_graph_prob_0-2_trial_1605821873-299152.sqlite\r\n",
"│   ├── Spread_erdos_renyi_graph_prob_0-2_trial_1605821873-299152.stats.csv\r\n",
"│   ├── Spread_erdos_renyi_graph_prob_0-2_trial_1605822688-204787.csv\r\n",
"│   ├── Spread_erdos_renyi_graph_prob_0-2_trial_1605822688-204787.sqlite\r\n",
"│   └── Spread_erdos_renyi_graph_prob_0-2_trial_1605822688-204787.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@2020-10-20_02.13.07\r\n",
"│   │   ├── Spread_erdos_renyi_graph_prob_0.3.dumped.yml@2020-11-19_17.07.56\r\n",
"│   │   ├── Spread_erdos_renyi_graph_prob_0.3.dumped.yml@2020-11-19_22.21.28\r\n",
"│   │   ├── Spread_erdos_renyi_graph_prob_0.3.dumped.yml@2020-11-19_22.27.48\r\n",
"│   │   ├── Spread_erdos_renyi_graph_prob_0.3.dumped.yml@2020-11-19_22.30.01\r\n",
"│   │   ├── Spread_erdos_renyi_graph_prob_0.3.dumped.yml@2020-11-19_22.37.55\r\n",
"│   │   ├── Spread_erdos_renyi_graph_prob_0.3_trial_0.csv@2020-10-20_02.13.07\r\n",
"│   │   ├── Spread_erdos_renyi_graph_prob_0.3_trial_0.sqlite@2020-10-20_02.13.07\r\n",
"│   │   └── Spread_erdos_renyi_graph_prob_0.3_trial_0.stats.csv@2020-10-20_02.13.07\r\n",
"│   ├── Spread_erdos_renyi_graph_prob_0.3.dumped.yml\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",
"│   ├── Spread_erdos_renyi_graph_prob_0-3_trial_1605820888-9462104.csv\r\n",
"│   ├── Spread_erdos_renyi_graph_prob_0-3_trial_1605820888-9462104.sqlite\r\n",
"│   ├── Spread_erdos_renyi_graph_prob_0-3_trial_1605820888-9462104.stats.csv\r\n",
"│   ├── Spread_erdos_renyi_graph_prob_0-3_trial_1605821268-2217143.csv\r\n",
"│   ├── Spread_erdos_renyi_graph_prob_0-3_trial_1605821268-2217143.sqlite\r\n",
"│   ├── Spread_erdos_renyi_graph_prob_0-3_trial_1605821268-2217143.stats.csv\r\n",
"│   ├── Spread_erdos_renyi_graph_prob_0-3_trial_1605821401-1938107.csv\r\n",
"│   ├── Spread_erdos_renyi_graph_prob_0-3_trial_1605821401-1938107.sqlite\r\n",
"│   ├── Spread_erdos_renyi_graph_prob_0-3_trial_1605821401-1938107.stats.csv\r\n",
"│   ├── Spread_erdos_renyi_graph_prob_0-3_trial_1605821875-4654636.csv\r\n",
"│   ├── Spread_erdos_renyi_graph_prob_0-3_trial_1605821875-4654636.sqlite\r\n",
"│   ├── Spread_erdos_renyi_graph_prob_0-3_trial_1605821875-4654636.stats.csv\r\n",
"│   ├── Spread_erdos_renyi_graph_prob_0-3_trial_1605822690-3038263.csv\r\n",
"│   ├── Spread_erdos_renyi_graph_prob_0-3_trial_1605822690-3038263.sqlite\r\n",
"│   └── Spread_erdos_renyi_graph_prob_0-3_trial_1605822690-3038263.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@2020-10-20_02.13.09\r\n",
" │   ├── Spread_erdos_renyi_graph_prob_0.4.dumped.yml@2020-11-19_17.07.58\r\n",
" │   ├── Spread_erdos_renyi_graph_prob_0.4.dumped.yml@2020-11-19_22.21.30\r\n",
" │   ├── Spread_erdos_renyi_graph_prob_0.4.dumped.yml@2020-11-19_22.27.50\r\n",
" │   ├── Spread_erdos_renyi_graph_prob_0.4.dumped.yml@2020-11-19_22.30.03\r\n",
" │   ├── Spread_erdos_renyi_graph_prob_0.4.dumped.yml@2020-11-19_22.37.57\r\n",
" │   ├── Spread_erdos_renyi_graph_prob_0.4_trial_0.csv@2020-10-20_02.13.09\r\n",
" │   ├── Spread_erdos_renyi_graph_prob_0.4_trial_0.sqlite@2020-10-20_02.13.09\r\n",
" │   └── Spread_erdos_renyi_graph_prob_0.4_trial_0.stats.csv@2020-10-20_02.13.09\r\n",
" ├── Spread_erdos_renyi_graph_prob_0.4.dumped.yml\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",
" ├── Spread_erdos_renyi_graph_prob_0-4_trial_1605820890-8584282.csv\r\n",
" ├── Spread_erdos_renyi_graph_prob_0-4_trial_1605820890-8584282.sqlite\r\n",
" ├── Spread_erdos_renyi_graph_prob_0-4_trial_1605820890-8584282.stats.csv\r\n",
" ├── Spread_erdos_renyi_graph_prob_0-4_trial_1605821270-1897953.csv\r\n",
" ├── Spread_erdos_renyi_graph_prob_0-4_trial_1605821270-1897953.sqlite\r\n",
" ├── Spread_erdos_renyi_graph_prob_0-4_trial_1605821270-1897953.stats.csv\r\n",
" ├── Spread_erdos_renyi_graph_prob_0-4_trial_1605821403-3238373.csv\r\n",
" ├── Spread_erdos_renyi_graph_prob_0-4_trial_1605821403-3238373.sqlite\r\n",
" ├── Spread_erdos_renyi_graph_prob_0-4_trial_1605821403-3238373.stats.csv\r\n",
" ├── Spread_erdos_renyi_graph_prob_0-4_trial_1605821877-5024807.csv\r\n",
" ├── Spread_erdos_renyi_graph_prob_0-4_trial_1605821877-5024807.sqlite\r\n",
" ├── Spread_erdos_renyi_graph_prob_0-4_trial_1605821877-5024807.stats.csv\r\n",
" ├── Spread_erdos_renyi_graph_prob_0-4_trial_1605822692-3893287.csv\r\n",
" ├── Spread_erdos_renyi_graph_prob_0-4_trial_1605822692-3893287.sqlite\r\n",
" └── Spread_erdos_renyi_graph_prob_0-4_trial_1605822692-3893287.stats.csv\r\n",
"\r\n",
"20 directories, 282 files\r\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"364K\tsoil_output/Spread_barabasi_albert_graph_prob_0.0/backup\r\n",
"1.2M\tsoil_output/Spread_barabasi_albert_graph_prob_0.0\r\n",
"368K\tsoil_output/Spread_barabasi_albert_graph_prob_0.1/backup\r\n",
"1.2M\tsoil_output/Spread_barabasi_albert_graph_prob_0.1\r\n",
"364K\tsoil_output/Spread_barabasi_albert_graph_prob_0.2/backup\r\n",
"1.2M\tsoil_output/Spread_barabasi_albert_graph_prob_0.2\r\n",
"368K\tsoil_output/Spread_barabasi_albert_graph_prob_0.3/backup\r\n",
"1.2M\tsoil_output/Spread_barabasi_albert_graph_prob_0.3\r\n",
"364K\tsoil_output/Spread_barabasi_albert_graph_prob_0.4/backup\r\n",
"1.2M\tsoil_output/Spread_barabasi_albert_graph_prob_0.4\r\n",
"2.5M\tsoil_output/Spread_erdos_renyi_graph_prob_0.0/backup\r\n",
"3.6M\tsoil_output/Spread_erdos_renyi_graph_prob_0.0\r\n",
"2.5M\tsoil_output/Spread_erdos_renyi_graph_prob_0.1/backup\r\n",
"3.6M\tsoil_output/Spread_erdos_renyi_graph_prob_0.1\r\n",
"2.5M\tsoil_output/Spread_erdos_renyi_graph_prob_0.2/backup\r\n",
"3.6M\tsoil_output/Spread_erdos_renyi_graph_prob_0.2\r\n",
"2.5M\tsoil_output/Spread_erdos_renyi_graph_prob_0.3/backup\r\n",
"3.6M\tsoil_output/Spread_erdos_renyi_graph_prob_0.3\r\n",
"2.5M\tsoil_output/Spread_erdos_renyi_graph_prob_0.4/backup\r\n",
"3.6M\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": 54,
"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": 3,
"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>agents.model_count.NewsSpread</th>\n",
" <th>agents.state_count.infected</th>\n",
" <th>agents.state_count.neutral</th>\n",
" <th>event_time</th>\n",
" <th colspan=\"5\" halign=\"left\">has_tv</th>\n",
" <th>...</th>\n",
" <th colspan=\"6\" halign=\"left\">id</th>\n",
" <th>network .n_edges</th>\n",
" <th>network .n_nodes</th>\n",
" <th>prob_neighbor_spread</th>\n",
" <th>prob_tv_spread</th>\n",
" </tr>\n",
" <tr>\n",
" <th>agent_id</th>\n",
" <th>env</th>\n",
" <th>stats</th>\n",
" <th>stats</th>\n",
" <th>stats</th>\n",
" <th>NewsEnvironmentAgent</th>\n",
" <th>0</th>\n",
" <th>1</th>\n",
" <th>10</th>\n",
" <th>100</th>\n",
" <th>101</th>\n",
" <th>...</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",
" <th>stats</th>\n",
" <th>stats</th>\n",
" <th>env</th>\n",
" <th>env</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</th>\n",
" <td>Spread_barabasi_albert_graph_prob_0.0_trial_0</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>10</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>NaN</td>\n",
" <td>NaN</td>\n",
" <td>0.0</td>\n",
" <td>0.01</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>Spread_barabasi_albert_graph_prob_0.0_trial_0</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>10</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>NaN</td>\n",
" <td>NaN</td>\n",
" <td>0.0</td>\n",
" <td>0.01</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>Spread_barabasi_albert_graph_prob_0.0_trial_0</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>10</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>NaN</td>\n",
" <td>NaN</td>\n",
" <td>0.0</td>\n",
" <td>0.01</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>Spread_barabasi_albert_graph_prob_0.0_trial_0</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>10</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>NaN</td>\n",
" <td>NaN</td>\n",
" <td>0.0</td>\n",
" <td>0.01</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>Spread_barabasi_albert_graph_prob_0.0_trial_0</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>10</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>NaN</td>\n",
" <td>NaN</td>\n",
" <td>0.0</td>\n",
" <td>0.01</td>\n",
" </tr>\n",
" <tr>\n",
" <th>5</th>\n",
" <td>Spread_barabasi_albert_graph_prob_0.0_trial_0</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>10</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>NaN</td>\n",
" <td>NaN</td>\n",
" <td>0.0</td>\n",
" <td>0.01</td>\n",
" </tr>\n",
" <tr>\n",
" <th>6</th>\n",
" <td>Spread_barabasi_albert_graph_prob_0.0_trial_0</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>10</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>NaN</td>\n",
" <td>NaN</td>\n",
" <td>0.0</td>\n",
" <td>0.01</td>\n",
" </tr>\n",
" <tr>\n",
" <th>7</th>\n",
" <td>Spread_barabasi_albert_graph_prob_0.0_trial_0</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>10</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>NaN</td>\n",
" <td>NaN</td>\n",
" <td>0.0</td>\n",
" <td>0.01</td>\n",
" </tr>\n",
" <tr>\n",
" <th>8</th>\n",
" <td>Spread_barabasi_albert_graph_prob_0.0_trial_0</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>10</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>NaN</td>\n",
" <td>NaN</td>\n",
" <td>0.0</td>\n",
" <td>0.01</td>\n",
" </tr>\n",
" <tr>\n",
" <th>9</th>\n",
" <td>Spread_barabasi_albert_graph_prob_0.0_trial_0</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>10</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>NaN</td>\n",
" <td>NaN</td>\n",
" <td>0.0</td>\n",
" <td>0.01</td>\n",
" </tr>\n",
" <tr>\n",
" <th>10</th>\n",
" <td>Spread_barabasi_albert_graph_prob_0.0_trial_0</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>10</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>infected</td>\n",
" <td>infected</td>\n",
" <td>infected</td>\n",
" <td>infected</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>11</th>\n",
" <td>Spread_barabasi_albert_graph_prob_0.0_trial_0</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>10</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>infected</td>\n",
" <td>infected</td>\n",
" <td>infected</td>\n",
" <td>infected</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>0.9</td>\n",
" <td>0.5</td>\n",
" </tr>\n",
" <tr>\n",
" <th>12</th>\n",
" <td>Spread_barabasi_albert_graph_prob_0.0_trial_0</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>10</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>infected</td>\n",
" <td>infected</td>\n",
" <td>infected</td>\n",
" <td>infected</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>0.81</td>\n",
" <td>0.25</td>\n",
" </tr>\n",
" <tr>\n",
" <th>13</th>\n",
" <td>Spread_barabasi_albert_graph_prob_0.0_trial_0</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>10</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>infected</td>\n",
" <td>infected</td>\n",
" <td>infected</td>\n",
" <td>infected</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>0.7290000000000001</td>\n",
" <td>0.125</td>\n",
" </tr>\n",
" <tr>\n",
" <th>14</th>\n",
" <td>Spread_barabasi_albert_graph_prob_0.0_trial_0</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>10</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>infected</td>\n",
" <td>infected</td>\n",
" <td>infected</td>\n",
" <td>infected</td>\n",
" <td>infected</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>0.6561000000000001</td>\n",
" <td>0.0625</td>\n",
" </tr>\n",
" <tr>\n",
" <th>15</th>\n",
" <td>Spread_barabasi_albert_graph_prob_0.0_trial_0</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>10</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>infected</td>\n",
" <td>infected</td>\n",
" <td>infected</td>\n",
" <td>infected</td>\n",
" <td>infected</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>0.5904900000000002</td>\n",
" <td>0.03125</td>\n",
" </tr>\n",
" <tr>\n",
" <th>16</th>\n",
" <td>Spread_barabasi_albert_graph_prob_0.0_trial_0</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>10</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>infected</td>\n",
" <td>infected</td>\n",
" <td>infected</td>\n",
" <td>infected</td>\n",
" <td>infected</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>0.5314410000000002</td>\n",
" <td>0.015625</td>\n",
" </tr>\n",
" <tr>\n",
" <th>17</th>\n",
" <td>Spread_barabasi_albert_graph_prob_0.0_trial_0</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>10</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>infected</td>\n",
" <td>infected</td>\n",
" <td>infected</td>\n",
" <td>infected</td>\n",
" <td>infected</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>0.47829690000000014</td>\n",
" <td>0.0078125</td>\n",
" </tr>\n",
" <tr>\n",
" <th>18</th>\n",
" <td>Spread_barabasi_albert_graph_prob_0.0_trial_0</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>10</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>NaN</td>\n",
" <td>NaN</td>\n",
" <td>0.43046721000000016</td>\n",
" <td>0.00390625</td>\n",
" </tr>\n",
" <tr>\n",
" <th>19</th>\n",
" <td>Spread_barabasi_albert_graph_prob_0.0_trial_0</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>10</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>NaN</td>\n",
" <td>NaN</td>\n",
" <td>0.38742048900000015</td>\n",
" <td>0.001953125</td>\n",
" </tr>\n",
" <tr>\n",
" <th>20</th>\n",
" <td>Spread_barabasi_albert_graph_prob_0.0_trial_0</td>\n",
" <td>500</td>\n",
" <td>480</td>\n",
" <td>20</td>\n",
" <td>10</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>500</td>\n",
" <td>500</td>\n",
" <td>0.38742048900000015</td>\n",
" <td>0.001953125</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"<p>21 rows × 1009 columns</p>\n",
"</div>"
],
"text/plain": [
"key SEED \\\n",
"agent_id env \n",
"t_step \n",
"0 Spread_barabasi_albert_graph_prob_0.0_trial_0 \n",
"1 Spread_barabasi_albert_graph_prob_0.0_trial_0 \n",
"2 Spread_barabasi_albert_graph_prob_0.0_trial_0 \n",
"3 Spread_barabasi_albert_graph_prob_0.0_trial_0 \n",
"4 Spread_barabasi_albert_graph_prob_0.0_trial_0 \n",
"5 Spread_barabasi_albert_graph_prob_0.0_trial_0 \n",
"6 Spread_barabasi_albert_graph_prob_0.0_trial_0 \n",
"7 Spread_barabasi_albert_graph_prob_0.0_trial_0 \n",
"8 Spread_barabasi_albert_graph_prob_0.0_trial_0 \n",
"9 Spread_barabasi_albert_graph_prob_0.0_trial_0 \n",
"10 Spread_barabasi_albert_graph_prob_0.0_trial_0 \n",
"11 Spread_barabasi_albert_graph_prob_0.0_trial_0 \n",
"12 Spread_barabasi_albert_graph_prob_0.0_trial_0 \n",
"13 Spread_barabasi_albert_graph_prob_0.0_trial_0 \n",
"14 Spread_barabasi_albert_graph_prob_0.0_trial_0 \n",
"15 Spread_barabasi_albert_graph_prob_0.0_trial_0 \n",
"16 Spread_barabasi_albert_graph_prob_0.0_trial_0 \n",
"17 Spread_barabasi_albert_graph_prob_0.0_trial_0 \n",
"18 Spread_barabasi_albert_graph_prob_0.0_trial_0 \n",
"19 Spread_barabasi_albert_graph_prob_0.0_trial_0 \n",
"20 Spread_barabasi_albert_graph_prob_0.0_trial_0 \n",
"\n",
"key agents.model_count.NewsSpread agents.state_count.infected \\\n",
"agent_id stats stats \n",
"t_step \n",
"0 NaN NaN \n",
"1 NaN NaN \n",
"2 NaN NaN \n",
"3 NaN NaN \n",
"4 NaN NaN \n",
"5 NaN NaN \n",
"6 NaN NaN \n",
"7 NaN NaN \n",
"8 NaN NaN \n",
"9 NaN NaN \n",
"10 NaN NaN \n",
"11 NaN NaN \n",
"12 NaN NaN \n",
"13 NaN NaN \n",
"14 NaN NaN \n",
"15 NaN NaN \n",
"16 NaN NaN \n",
"17 NaN NaN \n",
"18 NaN NaN \n",
"19 NaN NaN \n",
"20 500 480 \n",
"\n",
"key agents.state_count.neutral event_time has_tv \\\n",
"agent_id stats NewsEnvironmentAgent 0 1 10 \n",
"t_step \n",
"0 NaN 10 True True True \n",
"1 NaN 10 True True True \n",
"2 NaN 10 True True True \n",
"3 NaN 10 True True True \n",
"4 NaN 10 True True True \n",
"5 NaN 10 True True True \n",
"6 NaN 10 True True True \n",
"7 NaN 10 True True True \n",
"8 NaN 10 True True True \n",
"9 NaN 10 True True True \n",
"10 NaN 10 True True True \n",
"11 NaN 10 True True True \n",
"12 NaN 10 True True True \n",
"13 NaN 10 True True True \n",
"14 NaN 10 True True True \n",
"15 NaN 10 True True True \n",
"16 NaN 10 True True True \n",
"17 NaN 10 True True True \n",
"18 NaN 10 True True True \n",
"19 NaN 10 True True True \n",
"20 20 10 True True True \n",
"\n",
"key ... id \\\n",
"agent_id 100 101 ... 94 95 96 97 98 \n",
"t_step ... \n",
"0 True True ... neutral neutral neutral neutral neutral \n",
"1 True True ... neutral neutral neutral neutral neutral \n",
"2 True True ... neutral neutral neutral neutral neutral \n",
"3 True True ... neutral neutral neutral neutral neutral \n",
"4 True True ... neutral neutral neutral neutral neutral \n",
"5 True True ... neutral neutral neutral neutral neutral \n",
"6 True True ... neutral neutral neutral neutral neutral \n",
"7 True True ... neutral neutral neutral neutral neutral \n",
"8 True True ... neutral neutral neutral neutral neutral \n",
"9 True True ... neutral neutral neutral neutral neutral \n",
"10 True True ... neutral neutral infected infected infected \n",
"11 True True ... neutral neutral infected infected infected \n",
"12 True True ... neutral neutral infected infected infected \n",
"13 True True ... neutral neutral infected infected infected \n",
"14 True True ... neutral infected infected infected infected \n",
"15 True True ... neutral infected infected infected infected \n",
"16 True True ... neutral infected infected infected infected \n",
"17 True True ... neutral infected infected infected infected \n",
"18 True True ... infected infected infected infected infected \n",
"19 True True ... infected infected infected infected infected \n",
"20 True True ... infected infected infected infected infected \n",
"\n",
"key network .n_edges network .n_nodes prob_neighbor_spread \\\n",
"agent_id 99 stats stats env \n",
"t_step \n",
"0 neutral NaN NaN 0.0 \n",
"1 neutral NaN NaN 0.0 \n",
"2 neutral NaN NaN 0.0 \n",
"3 neutral NaN NaN 0.0 \n",
"4 neutral NaN NaN 0.0 \n",
"5 neutral NaN NaN 0.0 \n",
"6 neutral NaN NaN 0.0 \n",
"7 neutral NaN NaN 0.0 \n",
"8 neutral NaN NaN 0.0 \n",
"9 neutral NaN NaN 0.0 \n",
"10 infected NaN NaN 1 \n",
"11 infected NaN NaN 0.9 \n",
"12 infected NaN NaN 0.81 \n",
"13 infected NaN NaN 0.7290000000000001 \n",
"14 infected NaN NaN 0.6561000000000001 \n",
"15 infected NaN NaN 0.5904900000000002 \n",
"16 infected NaN NaN 0.5314410000000002 \n",
"17 infected NaN NaN 0.47829690000000014 \n",
"18 infected NaN NaN 0.43046721000000016 \n",
"19 infected NaN NaN 0.38742048900000015 \n",
"20 infected 500 500 0.38742048900000015 \n",
"\n",
"key prob_tv_spread \n",
"agent_id env \n",
"t_step \n",
"0 0.01 \n",
"1 0.01 \n",
"2 0.01 \n",
"3 0.01 \n",
"4 0.01 \n",
"5 0.01 \n",
"6 0.01 \n",
"7 0.01 \n",
"8 0.01 \n",
"9 0.01 \n",
"10 1 \n",
"11 0.5 \n",
"12 0.25 \n",
"13 0.125 \n",
"14 0.0625 \n",
"15 0.03125 \n",
"16 0.015625 \n",
"17 0.0078125 \n",
"18 0.00390625 \n",
"19 0.001953125 \n",
"20 0.001953125 \n",
"\n",
"[21 rows x 1009 columns]"
]
},
"execution_count": 3,
"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": 4,
"metadata": {},
"outputs": [],
"source": [
"env, agents = analysis.split_processed(df)"
]
},
{
"cell_type": "code",
"execution_count": 5,
"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>event_time</th>\n",
" <th colspan=\"9\" halign=\"left\">has_tv</th>\n",
" <th>...</th>\n",
" <th colspan=\"10\" halign=\"left\">id</th>\n",
" </tr>\n",
" <tr>\n",
" <th>agent_id</th>\n",
" <th>NewsEnvironmentAgent</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</th>\n",
" <td>10</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>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</th>\n",
" <td>10</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>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</th>\n",
" <td>10</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>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>infected</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</th>\n",
" <td>10</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>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>infected</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</th>\n",
" <td>10</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>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>infected</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</th>\n",
" <td>10</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>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>infected</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>6</th>\n",
" <td>10</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>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>infected</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>7</th>\n",
" <td>10</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>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>infected</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>8</th>\n",
" <td>10</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>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>infected</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>9</th>\n",
" <td>10</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>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>infected</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>10</th>\n",
" <td>10</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>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>neutral</td>\n",
" <td>infected</td>\n",
" <td>neutral</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>11</th>\n",
" <td>10</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>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>neutral</td>\n",
" <td>infected</td>\n",
" <td>neutral</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</th>\n",
" <td>10</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>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>neutral</td>\n",
" <td>infected</td>\n",
" <td>neutral</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>13</th>\n",
" <td>10</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>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>neutral</td>\n",
" <td>infected</td>\n",
" <td>neutral</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>14</th>\n",
" <td>10</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>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>neutral</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",
" <td>infected</td>\n",
" </tr>\n",
" <tr>\n",
" <th>15</th>\n",
" <td>10</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>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>neutral</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",
" <td>infected</td>\n",
" </tr>\n",
" <tr>\n",
" <th>16</th>\n",
" <td>10</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>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>neutral</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",
" <td>infected</td>\n",
" </tr>\n",
" <tr>\n",
" <th>17</th>\n",
" <td>10</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>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>neutral</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",
" <td>infected</td>\n",
" </tr>\n",
" <tr>\n",
" <th>18</th>\n",
" <td>10</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>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>neutral</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</th>\n",
" <td>10</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>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>neutral</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>20</th>\n",
" <td>10</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>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>neutral</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>21 rows × 1001 columns</p>\n",
"</div>"
],
"text/plain": [
"key event_time has_tv \\\n",
"agent_id NewsEnvironmentAgent 0 1 10 100 101 102 103 \n",
"t_step \n",
"0 10 True True True True True True True \n",
"1 10 True True True True True True True \n",
"2 10 True True True True True True True \n",
"3 10 True True True True True True True \n",
"4 10 True True True True True True True \n",
"5 10 True True True True True True True \n",
"6 10 True True True True True True True \n",
"7 10 True True True True True True True \n",
"8 10 True True True True True True True \n",
"9 10 True True True True True True True \n",
"10 10 True True True True True True True \n",
"11 10 True True True True True True True \n",
"12 10 True True True True True True True \n",
"13 10 True True True True True True True \n",
"14 10 True True True True True True True \n",
"15 10 True True True True True True True \n",
"16 10 True True True True True True True \n",
"17 10 True True True True True True True \n",
"18 10 True True True True True True True \n",
"19 10 True True True True True True True \n",
"20 10 True True True True True True True \n",
"\n",
"key ... id \\\n",
"agent_id 104 105 ... 90 91 92 93 94 \n",
"t_step ... \n",
"0 True True ... neutral neutral neutral neutral neutral \n",
"1 True True ... neutral neutral neutral neutral neutral \n",
"2 True True ... neutral infected neutral neutral neutral \n",
"3 True True ... neutral infected neutral neutral neutral \n",
"4 True True ... neutral infected neutral neutral neutral \n",
"5 True True ... neutral infected neutral neutral neutral \n",
"6 True True ... neutral infected neutral neutral neutral \n",
"7 True True ... neutral infected neutral neutral neutral \n",
"8 True True ... neutral infected neutral neutral neutral \n",
"9 True True ... neutral infected neutral neutral neutral \n",
"10 True True ... infected infected neutral infected neutral \n",
"11 True True ... infected infected neutral infected neutral \n",
"12 True True ... infected infected neutral infected neutral \n",
"13 True True ... infected infected neutral infected neutral \n",
"14 True True ... infected infected neutral infected neutral \n",
"15 True True ... infected infected neutral infected neutral \n",
"16 True True ... infected infected neutral infected neutral \n",
"17 True True ... infected infected neutral infected neutral \n",
"18 True True ... infected infected neutral infected infected \n",
"19 True True ... infected infected neutral infected infected \n",
"20 True True ... infected infected neutral infected infected \n",
"\n",
"key \n",
"agent_id 95 96 97 98 99 \n",
"t_step \n",
"0 neutral neutral neutral neutral neutral \n",
"1 neutral neutral neutral neutral neutral \n",
"2 neutral neutral neutral neutral neutral \n",
"3 neutral neutral neutral neutral neutral \n",
"4 neutral neutral neutral neutral neutral \n",
"5 neutral neutral neutral neutral neutral \n",
"6 neutral neutral neutral neutral neutral \n",
"7 neutral neutral neutral neutral neutral \n",
"8 neutral neutral neutral neutral neutral \n",
"9 neutral neutral neutral neutral neutral \n",
"10 neutral infected infected infected infected \n",
"11 neutral infected infected infected infected \n",
"12 neutral infected infected infected infected \n",
"13 neutral infected infected infected infected \n",
"14 infected infected infected infected infected \n",
"15 infected infected infected infected infected \n",
"16 infected infected infected infected infected \n",
"17 infected infected infected infected infected \n",
"18 infected infected infected infected infected \n",
"19 infected infected infected infected infected \n",
"20 infected infected infected infected infected \n",
"\n",
"[21 rows x 1001 columns]"
]
},
"execution_count": 5,
"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": 6,
"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 neutral\n",
"96 infected\n",
"97 infected\n",
"98 infected\n",
"99 infected\n",
"Name: 13, Length: 500, dtype: object"
]
},
"execution_count": 6,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"agents.loc[13, '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": 7,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"5"
]
},
"execution_count": 7,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"(agents.loc[2]['id'] != agents.loc[1]['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": 8,
"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>NewsEnvironmentAgent</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>key</th>\n",
" <th>event_time</th>\n",
" <th>has_tv</th>\n",
" <th>has_tv</th>\n",
" <th>has_tv</th>\n",
" <th>has_tv</th>\n",
" <th>has_tv</th>\n",
" <th>has_tv</th>\n",
" <th>has_tv</th>\n",
" <th>has_tv</th>\n",
" <th>has_tv</th>\n",
" <th>...</th>\n",
" <th>id</th>\n",
" <th>id</th>\n",
" <th>id</th>\n",
" <th>id</th>\n",
" <th>id</th>\n",
" <th>id</th>\n",
" <th>id</th>\n",
" <th>id</th>\n",
" <th>id</th>\n",
" <th>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</th>\n",
" <td>10</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>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</th>\n",
" <td>10</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>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</th>\n",
" <td>10</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>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>infected</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</th>\n",
" <td>10</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>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>infected</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</th>\n",
" <td>10</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>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>infected</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</th>\n",
" <td>10</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>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>infected</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>6</th>\n",
" <td>10</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>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>infected</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>7</th>\n",
" <td>10</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>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>infected</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>8</th>\n",
" <td>10</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>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>infected</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>9</th>\n",
" <td>10</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>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>infected</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>10</th>\n",
" <td>10</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>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>neutral</td>\n",
" <td>infected</td>\n",
" <td>neutral</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>11</th>\n",
" <td>10</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>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>neutral</td>\n",
" <td>infected</td>\n",
" <td>neutral</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</th>\n",
" <td>10</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>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>neutral</td>\n",
" <td>infected</td>\n",
" <td>neutral</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>13</th>\n",
" <td>10</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>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>neutral</td>\n",
" <td>infected</td>\n",
" <td>neutral</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>14</th>\n",
" <td>10</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>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>neutral</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",
" <td>infected</td>\n",
" </tr>\n",
" <tr>\n",
" <th>15</th>\n",
" <td>10</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>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>neutral</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",
" <td>infected</td>\n",
" </tr>\n",
" <tr>\n",
" <th>16</th>\n",
" <td>10</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>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>neutral</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",
" <td>infected</td>\n",
" </tr>\n",
" <tr>\n",
" <th>17</th>\n",
" <td>10</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>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>neutral</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",
" <td>infected</td>\n",
" </tr>\n",
" <tr>\n",
" <th>18</th>\n",
" <td>10</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>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>neutral</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</th>\n",
" <td>10</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>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>neutral</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>20</th>\n",
" <td>10</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>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>neutral</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>21 rows × 1001 columns</p>\n",
"</div>"
],
"text/plain": [
"agent_id NewsEnvironmentAgent 0 1 10 100 101 102 \\\n",
"key event_time has_tv has_tv has_tv has_tv has_tv has_tv \n",
"t_step \n",
"0 10 True True True True True True \n",
"1 10 True True True True True True \n",
"2 10 True True True True True True \n",
"3 10 True True True True True True \n",
"4 10 True True True True True True \n",
"5 10 True True True True True True \n",
"6 10 True True True True True True \n",
"7 10 True True True True True True \n",
"8 10 True True True True True True \n",
"9 10 True True True True True True \n",
"10 10 True True True True True True \n",
"11 10 True True True True True True \n",
"12 10 True True True True True True \n",
"13 10 True True True True True True \n",
"14 10 True True True True True True \n",
"15 10 True True True True True True \n",
"16 10 True True True True True True \n",
"17 10 True True True True True True \n",
"18 10 True True True True True True \n",
"19 10 True True True True True True \n",
"20 10 True True True True True True \n",
"\n",
"agent_id 103 104 105 ... 90 91 92 93 \\\n",
"key has_tv has_tv has_tv ... id id id id \n",
"t_step ... \n",
"0 True True True ... neutral neutral neutral neutral \n",
"1 True True True ... neutral neutral neutral neutral \n",
"2 True True True ... neutral infected neutral neutral \n",
"3 True True True ... neutral infected neutral neutral \n",
"4 True True True ... neutral infected neutral neutral \n",
"5 True True True ... neutral infected neutral neutral \n",
"6 True True True ... neutral infected neutral neutral \n",
"7 True True True ... neutral infected neutral neutral \n",
"8 True True True ... neutral infected neutral neutral \n",
"9 True True True ... neutral infected neutral neutral \n",
"10 True True True ... infected infected neutral infected \n",
"11 True True True ... infected infected neutral infected \n",
"12 True True True ... infected infected neutral infected \n",
"13 True True True ... infected infected neutral infected \n",
"14 True True True ... infected infected neutral infected \n",
"15 True True True ... infected infected neutral infected \n",
"16 True True True ... infected infected neutral infected \n",
"17 True True True ... infected infected neutral infected \n",
"18 True True True ... infected infected neutral infected \n",
"19 True True True ... infected infected neutral infected \n",
"20 True True True ... infected infected neutral infected \n",
"\n",
"agent_id 94 95 96 97 98 99 \n",
"key id id id id id id \n",
"t_step \n",
"0 neutral neutral neutral neutral neutral neutral \n",
"1 neutral neutral neutral neutral neutral neutral \n",
"2 neutral neutral neutral neutral neutral neutral \n",
"3 neutral neutral neutral neutral neutral neutral \n",
"4 neutral neutral neutral neutral neutral neutral \n",
"5 neutral neutral neutral neutral neutral neutral \n",
"6 neutral neutral neutral neutral neutral neutral \n",
"7 neutral neutral neutral neutral neutral neutral \n",
"8 neutral neutral neutral neutral neutral neutral \n",
"9 neutral neutral neutral neutral neutral neutral \n",
"10 neutral neutral infected infected infected infected \n",
"11 neutral neutral infected infected infected infected \n",
"12 neutral neutral infected infected infected infected \n",
"13 neutral neutral infected infected infected infected \n",
"14 neutral infected infected infected infected infected \n",
"15 neutral infected infected infected infected infected \n",
"16 neutral infected infected infected infected infected \n",
"17 neutral infected infected infected infected infected \n",
"18 infected infected infected infected infected infected \n",
"19 infected infected infected infected infected infected \n",
"20 infected infected infected infected infected infected \n",
"\n",
"[21 rows x 1001 columns]"
]
},
"execution_count": 8,
"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": 72,
"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 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
},
{
"data": {
"image/png": "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
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
},
{
"data": {
"image/png": "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
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
},
{
"data": {
"image/png": "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
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
},
{
"data": {
"image/png": "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
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
},
{
"data": {
"image/png": "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
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"analysis.plot_all('soil_output/Spread_barabasi_albert_graph_prob_0.0/', analysis.get_count, 'id');"
]
},
{
"cell_type": "code",
"execution_count": 71,
"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 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
},
{
"data": {
"image/png": "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
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
},
{
"data": {
"image/png": "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
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
},
{
"data": {
"image/png": "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
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
},
{
"data": {
"image/png": "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
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
},
{
"data": {
"image/png": "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
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"analysis.plot_all('soil_output/Spread_barabasi_albert_graph_prob_0.3/', analysis.get_count, 'id');"
]
},
{
"cell_type": "code",
"execution_count": 12,
"metadata": {
"ExecuteTime": {
"end_time": "2017-10-19T15:58:26.903783Z",
"start_time": "2017-10-19T17:57:57.983957+02:00"
},
"scrolled": true
},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"/home/j/.local/lib/python3.8/site-packages/pandas/plotting/_matplotlib/core.py:328: RuntimeWarning: More than 20 figures have been opened. Figures created through the pyplot interface (`matplotlib.pyplot.figure`) are retained until explicitly closed and may consume too much memory. (To control this warning, see the rcParam `figure.max_open_warning`).\n",
" fig = self.plt.figure(figsize=self.figsize)\n"
]
},
{
"data": {
"image/png": "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
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
},
{
"data": {
"image/png": "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
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
},
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAXQAAAEXCAYAAAC9A7+nAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjMuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8vihELAAAACXBIWXMAAAsTAAALEwEAmpwYAAA690lEQVR4nO3dd3wUZf7A8c83HZKQAEkIvQVpoUfwRBHrgSJYOAFB9CzY5fTuPE/vbKdn/XlnV7CCShEbItgOUVFBEgg1dAIktIQSQiD9+f0xE1xCQjawu7PZfN+v176yO/PMzHdnd7955pl5nhFjDEoppeq+IKcDUEop5Rma0JVSKkBoQldKqQChCV0ppQKEJnSllAoQmtCVUipAaEKv50QkU0Qu8PI22omIEZEQb27H20TkbBFZ53Qcrvxl3/rie6RqpgndR0TkLBH5WUTyRGSfiPwkIqc7HZdynzHmR2NMZ6fjCCQicr6IrBWRwyLynYi0PUHZ70QkR0QOishyERnhy1jrAk3oPiAijYA5wItAE6Al8AhQVMv1iIj49WfmBzXFOnUUUBfi9VaMIhIHfAz8E+t3kQrMOMEiE4HmxphGwATgPRFp7o3Y6iq/Tg4B5DQAY8w0Y0yZMeaIMeZrY8wKEbnOrq2/ZNfe14rI+RULisgCEXlcRH4CDgMdRKSLiHxj1/TXichVLuUvEZFldi1mu4g87BqIiFwjIltFZK+IPOBO8CISJCL3icgme7mZItLEnldxyH+DiGwD5otIsIg8KyK5IrIZuKTS+lqIyGw7/o0icpPLvP4ikmrHv1tEnqshtuO2b0+/XkQyRGS/iHzlWvOzy98iIhtE5ICIvGz/swyzY+rhUjbBrj3Gi8hgEclyY3/1tT+DfBH5UERmiMhj9rzBIpIlIn8TkV3A2yLSWETm2LXP/fbzVi7rWyAiT4jIr/Z++axi/7sYKyLb7H1e4+cqIg+LyCw7tnwRWSoivVzmZ9oxrgAKRCRERIaLyGp7ny0Qka6VVnu6iKyx38PbIhJRQxhXAKuNMR8aYwqBh4FeItKlqsLGmBXGmNKKl0Ao0Lqm91qvGGP04eUH0AjYC7wLDAUau8y7DigF7sb6go4C8oAm9vwFwDagOxACxADbgT/ar/sAuUA3u/xgoAfWP+uewG7gMnteN+AQMAgIB56zt31BDfFPBBYBrezlXgem2fPaYf24pgCRQAPgFmAt1o+tCfCdXSbEXuYH4BUgAugN5ADn2fN+Aa6xn0cBZ9QQW1XbHwFsBLra++gfwM8uyxisI6ZYoI29/SH2vFeApyq9989d9m1WDfGEAVvt5UKxklYx8JjLOkqBp+x92QBoClwJNASigQ+BT13WuQDIBpLt9/gR8F6l9z/ZXlcvrCO/rjXE+TBQAoy04/wLsAUItednAun2Z9gAq1JSAFxol7/X3sdhLuVXuXzmP1W85xPE8DzwaqVpq4ArT7DMHKDQfs9fAkFO/7796eF4APXlYSeXd4As+wc9G2iGldB3AOJS9ld+S2oLgEdd5o0Cfqy07teBh6rZ7n+B/9jPHwSmu8yLtJNNTQk9Azjf5XVzOxmEuCSUDi7z5wO3uLy+yC4TYv/gy4Bol/lPAO/Yz3/Aao6Kc3O/VrX9ecANLq+DsI5u2tqvDXCWy/yZwH328wFY/0DFfp0KXGU/H0zNCX0QVvJ1/TwXcmxCLwYiTrCO3sB+l9cLgCddXnez1xHs8v5bVfr+jK4hzoeBRZX20U7gbPt1JnC9y/x/AjMrlc8GBruUd/3MLwY21RDDm67vy572E3BdDcuFYlWM7vHEbzOQHtrk4iPGmAxjzHXGmFZYNa0WWMkWINvY31TbVnt+he0uz9sCA+zD3gMicgAYCyQCiMgA+e3kUR5WbTnOXraF67qMMQVYRw41aQt84rK9DKyk3KyaGFtUer210rx9xpj8SvNb2s9vwKoNrhWRJSIyzI34Km+/LfC8S7z7AHHZBsAul+eHsY4GMMYstl8Ptg/9k7D++bqrBcd/ntsrlckxVhMDACLSUERet5vCDmL9U4sVkeBq1rEVK6nFuUyr8v3UwPW7UI5V2ajue9cCl8/RLr+dY/dp5Rhd11WVQ1hHr64aAflVlD3KGFNijJkHXCQiw2vYRr2iCd0Bxpi1WLX1ZHtSSxERlyJtsGrtRxdxeb4d+N4YE+vyiDLG3GrP/wArAbU2xsQAr2ElM7BqYEfbHEWkIdbhfk22A0MrbTPCGJNdTYzHbMd+PxV2AE1EJLrS/GwAY8wGY8wYIAGrWWKWiES6EWPlfXRzpXgbGGN+dmM9YDWNjQOuAWa5Jl837OT4z7NyO2/lIU7/DHQGBhjrhN8ge3p162iDdYSUW4u4quL6XQjCalKr7nu3A+sfZUV5sZd3/Q5UjtF1XVVZjdVEVLHOSKCjPd0dIXZ5ZdOE7gNincT8c8WJLhFpDYzBapcGK3ndJSKhIvIHrOaZudWsbg5wmlgnN0Ptx+kuJ6iisWrAhSLSH7jaZdlZwDCxLqEMAx7Fve/Aa8DjFScW7ROEJ7pkbKb9flqJSGPgvooZxpjtwM/AEyISISI9sWrl79nrHici8XYN8IC9WLkbMVaO9+8i0t1eZ4y9X931HnA5VlKfUstt/4J19HKHfSJxBNC/hmWigSPAAftk50NVlBknIt3sf8KPYv2jKatlbJX1E5ErxLqK5U9Ybe+Lqik7E7hErMsMQ7H+CRVhfZYVbrc/8ybAA5z4ihWAT4BkEbnSPoH6ILDCrvAcw/4NDRWRBvZ3fhzWP77v3X+7gU8Tum/kY7XNLhaRAqwfzSqsHwXAYqATVo3rcWCkMabKphC7qeIiYDRWDWgXv51gA7gNeFRE8rF+IDNdll0N3I5Vi98J7Mc6zK7J81i1/q/t9S6y3091JgNfAcuBpViXprkag9X2uwPrR/2QMeZbe94QYLWIHLK3O9oYc8SNGI8yxnyCtU+m200Yq7DaXN1dfrsdtwF+rOW2i7FOhN6A9Q9pHNY/4RNdovpfrBOPuVj79ssqykzFOqrbhXUy+a7axFWNz7DOyezHOhq5whhTUlVBY8w6rPfyoh3npcCl9vut8AHwNbAZ2AQ8dqKNG2NysE4GP27HMADrew2AiLwmIq9VvMRq99+DdRJ7IjDKGLPU/bcb+CpO/CiHiMh1wI3GmLOcjkX9RkTeAnYYY/7hgXUtBl4zxrx9kssvwLqq5Y1TjcVlnQ8DScaYcZ5ap3Ke33dqUMrXRKQdVi27z0kufw6wDqsmOxbr8tGqat1KeZQ2uSgARGSeiByq4nG/H8Q2tprY3D15Vptt/QurieYZY8yWasq0qSaeQyLSBusE53KsJpc/YzWh7fR0rDXxh89URO6vJoZ5voqhPtEmF6WUChBaQ1dKqQChCV0ppQKEYydF4+LiTLt27ZzavFJK1UlpaWm5xpj4quY5ltDbtWtHamqqU5tXSqk6SUS2VjdPm1yUUipAaEJXSqkAoQldKaUChPYUVSqAlZSUkJWVRWFhbQaMVP4gIiKCVq1aERoa6vYyNSZ0e0yLYcAeY0xyFfMFaxCli7HGYb5OB8xRyj9kZWURHR1Nu3btOHZEX+XPjDHs3buXrKws2rdv7/Zy7jS5vIM1Al51hmKNFNgJ68atr7q9daWUVxUWFtK0aVNN5nWMiNC0adNaH1nVmNCNMT9g3fGlOiOAKcayCOtOK3onbqX8hCbzuulkPjdPnBRtybG3nsri2NtSKRUwlmTuY+jzP7LjQK2GaFcnKTMzk+Tk41p6VTV8epWLiEwQkVQRSc3JyfHlppU6ZVn7D3PL1DQydh5kSeaJDlqVcoYnEno2x95LsBXH3mfwKGPMJGNMijEmJT6+yp6rSvmlw8WlTJiSRnFpOcFBwobdh5wOqd7ZvHkzffr0YfHixQwZMoR+/fpx9tlns3btWvLz82nfvj0lJdYNlw4ePHjM6/rCEwl9NjBeLGcAeU6M/ayUtxhj+OuHK8jYdZAXxvShbZOGbNyjCd2X1q1bx5VXXsk777zD/fffz4svvkhaWhrPPvsst912G9HR0QwePJgvvvgCgOnTp3PFFVfU6pK
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
},
{
"data": {
"image/png": "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
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
},
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAXQAAAEXCAYAAAC9A7+nAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjMuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8vihELAAAACXBIWXMAAAsTAAALEwEAmpwYAAA690lEQVR4nO3dd3wUZf7A8c83HZKQAEkIvQVpoUfwRBHrgSJYOAFB9CzY5fTuPE/vbKdn/XlnV7CCShEbItgOUVFBEgg1dAIktIQSQiD9+f0xE1xCQjawu7PZfN+v176yO/PMzHdnd7955pl5nhFjDEoppeq+IKcDUEop5Rma0JVSKkBoQldKqQChCV0ppQKEJnSllAoQmtCVUipAaEKv50QkU0Qu8PI22omIEZEQb27H20TkbBFZ53Qcrvxl3/rie6RqpgndR0TkLBH5WUTyRGSfiPwkIqc7HZdynzHmR2NMZ6fjCCQicr6IrBWRwyLynYi0PUHZ70QkR0QOishyERnhy1jrAk3oPiAijYA5wItAE6Al8AhQVMv1iIj49WfmBzXFOnUUUBfi9VaMIhIHfAz8E+t3kQrMOMEiE4HmxphGwATgPRFp7o3Y6iq/Tg4B5DQAY8w0Y0yZMeaIMeZrY8wKEbnOrq2/ZNfe14rI+RULisgCEXlcRH4CDgMdRKSLiHxj1/TXichVLuUvEZFldi1mu4g87BqIiFwjIltFZK+IPOBO8CISJCL3icgme7mZItLEnldxyH+DiGwD5otIsIg8KyK5IrIZuKTS+lqIyGw7/o0icpPLvP4ikmrHv1tEnqshtuO2b0+/XkQyRGS/iHzlWvOzy98iIhtE5ICIvGz/swyzY+rhUjbBrj3Gi8hgEclyY3/1tT+DfBH5UERmiMhj9rzBIpIlIn8TkV3A2yLSWETm2LXP/fbzVi7rWyAiT4jIr/Z++axi/7sYKyLb7H1e4+cqIg+LyCw7tnwRWSoivVzmZ9oxrgAKRCRERIaLyGp7ny0Qka6VVnu6iKyx38PbIhJRQxhXAKuNMR8aYwqBh4FeItKlqsLGmBXGmNKKl0Ao0Lqm91qvGGP04eUH0AjYC7wLDAUau8y7DigF7sb6go4C8oAm9vwFwDagOxACxADbgT/ar/sAuUA3u/xgoAfWP+uewG7gMnteN+AQMAgIB56zt31BDfFPBBYBrezlXgem2fPaYf24pgCRQAPgFmAt1o+tCfCdXSbEXuYH4BUgAugN5ADn2fN+Aa6xn0cBZ9QQW1XbHwFsBLra++gfwM8uyxisI6ZYoI29/SH2vFeApyq9989d9m1WDfGEAVvt5UKxklYx8JjLOkqBp+x92QBoClwJNASigQ+BT13WuQDIBpLt9/gR8F6l9z/ZXlcvrCO/rjXE+TBQAoy04/wLsAUItednAun2Z9gAq1JSAFxol7/X3sdhLuVXuXzmP1W85xPE8DzwaqVpq4ArT7DMHKDQfs9fAkFO/7796eF4APXlYSeXd4As+wc9G2iGldB3AOJS9ld+S2oLgEdd5o0Cfqy07teBh6rZ7n+B/9jPHwSmu8yLtJNNTQk9Azjf5XVzOxmEuCSUDi7z5wO3uLy+yC4TYv/gy4Bol/lPAO/Yz3/Aao6Kc3O/VrX9ecANLq+DsI5u2tqvDXCWy/yZwH328wFY/0DFfp0KXGU/H0zNCX0QVvJ1/TwXcmxCLwYiTrCO3sB+l9cLgCddXnez1xHs8v5bVfr+jK4hzoeBRZX20U7gbPt1JnC9y/x/AjMrlc8GBruUd/3MLwY21RDDm67vy572E3BdDcuFYlWM7vHEbzOQHtrk4iPGmAxjzHXGmFZYNa0WWMkWINvY31TbVnt+he0uz9sCA+zD3gMicgAYCyQCiMgA+e3kUR5WbTnOXraF67qMMQVYRw41aQt84rK9DKyk3KyaGFtUer210rx9xpj8SvNb2s9vwKoNrhWRJSIyzI34Km+/LfC8S7z7AHHZBsAul+eHsY4GMMYstl8Ptg/9k7D++bqrBcd/ntsrlckxVhMDACLSUERet5vCDmL9U4sVkeBq1rEVK6nFuUyr8v3UwPW7UI5V2ajue9cCl8/RLr+dY/dp5Rhd11WVQ1hHr64aAflVlD3KGFNijJkHXCQiw2vYRr2iCd0Bxpi1WLX1ZHtSSxERlyJtsGrtRxdxeb4d+N4YE+vyiDLG3GrP/wArAbU2xsQAr2ElM7BqYEfbHEWkIdbhfk22A0MrbTPCGJNdTYzHbMd+PxV2AE1EJLrS/GwAY8wGY8wYIAGrWWKWiES6EWPlfXRzpXgbGGN+dmM9YDWNjQOuAWa5Jl837OT4z7NyO2/lIU7/DHQGBhjrhN8ge3p162iDdYSUW4u4quL6XQjCalKr7nu3A+sfZUV5sZd3/Q5UjtF1XVVZjdVEVLHOSKCjPd0dIXZ5ZdOE7gNincT8c8WJLhFpDYzBapcGK3ndJSKhIvIHrOaZudWsbg5wmlgnN0Ptx+kuJ6iisWrAhSLSH7jaZdlZwDCxLqEMAx7Fve/Aa8DjFScW7ROEJ7pkbKb9flqJSGPgvooZxpjtwM/AEyISISI9sWrl79nrHici8XYN8IC9WLkbMVaO9+8i0t1eZ4y9X931HnA5VlKfUstt/4J19HKHfSJxBNC/hmWigSPAAftk50NVlBknIt3sf8KPYv2jKatlbJX1E5ErxLqK5U9Ybe+Lqik7E7hErMsMQ7H+CRVhfZYVbrc/8ybAA5z4ihWAT4BkEbnSPoH6ILDCrvAcw/4NDRWRBvZ3fhzWP77v3X+7gU8Tum/kY7XNLhaRAqwfzSqsHwXAYqATVo3rcWCkMabKphC7qeIiYDRWDWgXv51gA7gNeFRE8rF+IDNdll0N3I5Vi98J7Mc6zK7J81i1/q/t9S6y3091JgNfAcuBpViXprkag9X2uwPrR/2QMeZbe94QYLWIHLK3O9oYc8SNGI8yxnyCtU+m200Yq7DaXN1dfrsdtwF+rOW2i7FOhN6A9Q9pHNY/4RNdovpfrBOPuVj79ssqykzFOqrbhXUy+a7axFWNz7DOyezHOhq5whhTUlVBY8w6rPfyoh3npcCl9vut8AHwNbAZ2AQ8dqKNG2NysE4GP27HMADrew2AiLwmIq9VvMRq99+DdRJ7IjDKGLPU/bcb+CpO/CiHiMh1wI3GmLOcjkX9RkTeAnYYY/7hgXUtBl4zxrx9kssvwLqq5Y1TjcVlnQ8DScaYcZ5ap3Ke33dqUMrXRKQdVi27z0kufw6wDqsmOxbr8tGqat1KeZQ2uSgARGSeiByq4nG/H8Q2tprY3D15Vptt/QurieYZY8yWasq0qSaeQyLSBusE53KsJpc/YzWh7fR0rDXxh89URO6vJoZ5voqhPtEmF6WUChBaQ1dKqQChCV0ppQKEYydF4+LiTLt27ZzavFJK1UlpaWm5xpj4quY5ltDbtWtHamqqU5tXSqk6SUS2VjdPm1yUUipAaEJXSqkAoQldKaUChPYUVSqAlZSUkJWVRWFhbQaMVP4gIiKCVq1aERoa6vYyNSZ0e0yLYcAeY0xyFfMFaxCli7HGYb5OB8xRyj9kZWURHR1Nu3btOHZEX+XPjDHs3buXrKws2rdv7/Zy7jS5vIM1Al51hmKNFNgJ68atr7q9daWUVxUWFtK0aVNN5nWMiNC0adNaH1nVmNCNMT9g3fGlOiOAKcayCOtOK3onbqX8hCbzuulkPjdPnBRtybG3nsri2NtSKRUwlmTuY+jzP7LjQK2GaFcnKTMzk+Tk41p6VTV8epWLiEwQkVQRSc3JyfHlppU6ZVn7D3PL1DQydh5kSeaJDlqVcoYnEno2x95LsBXH3mfwKGPMJGNMijEmJT6+yp6rSvmlw8WlTJiSRnFpOcFBwobdh5wOqd7ZvHkzffr0YfHixQwZMoR+/fpx9tlns3btWvLz82nfvj0lJdYNlw4ePHjM6/rCEwl9NjBeLGcAeU6M/ayUtxhj+OuHK8jYdZAXxvShbZOGbNyjCd2X1q1bx5VXXsk777zD/fffz4svvkhaWhrPPvsst912G9HR0QwePJgvvvgCgOnTp3PFFVfU6pK
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
},
{
"data": {
"image/png": "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
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
},
{
"data": {
"image/png": "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
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
},
{
"data": {
"image/png": "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
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
},
{
"data": {
"image/png": "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
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
},
{
"data": {
"image/png": "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
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
},
{
"data": {
"image/png": "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
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
},
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAXQAAAEXCAYAAAC9A7+nAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjMuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8vihELAAAACXBIWXMAAAsTAAALEwEAmpwYAAA6yElEQVR4nO3dd3wUZf7A8c83HVIpCaG3IC30CJ4oYj1QBAsKCKJnwS7nFc/TO9vpWX/e2RWsoFLEhgi2Q1RUkARCDZ0ACS2hhBBIf35/zASXkJAN7O5sNt/367Wv7M48M/Pd2dlvnn1mnmfEGINSSqm6L8jpAJRSSnmGJnSllAoQmtCVUipAaEJXSqkAoQldKaUChCZ0pZQKEJrQ6zkRyRSRC7y8jXYiYkQkxJvb8TYROVtE1jkdhyt/2be+OI5UzTSh+4iInCUiP4tInojsE5GfROR0p+NS7jPG/GiM6ex0HIFERM4XkbUiclhEvhORtico+y8RWSkipSLysA/DrDM0ofuAiMQAc4AXgcZAS+ARoKiW6xER8evPzA9qinXqV0BdiNdbMYpIU+Bj4J9Y34tUYMYJFtkI3At84Y14AoFfJ4cAchqAMWaaMabMGHPEGPO1MWaFiFxv19Zfsmvva0Xk/IoFRWSBiDwuIj8Bh4EOItJFRL6xa/rrRORql/KXiMgyETkoItsr12RE5FoR2Soie0XkAXeCF5EgEblPRDbZy80Ukcb2vIqf/DeKyDZgvogEi8izIpIrIpuBSyqtr4WIzLbj3ygiN7vM6y8iqXb8u0XkuRpiO2779vQbRCRDRPaLyFeuNT+7/K0iskFEDojIy/Y/yzA7ph4uZRPs2mO8iAwWkSw39ldf+zPIF5EPRWSGiDxmzxssIlki8jcR2QW8LSKNRGSOiOTY8c4RkVYu61sgIk+IyK/2fvmsYv+7GCsi2+x9XuPnKiIPi8gsO7Z8EVkqIr1c5mfaMa4ACkQkRESGi8hqe58tEJGulVZ7uoissd/D2yISUUMYVwCrjTEfGmMKgYeBXiLSparCxph3jTHzgPya3l+9ZYzRh5cfQAywF3gXGAo0cpl3PVAK3AOEAqOAPKCxPX8BsA3oDoQAscB24A/26z5ALtDNLj8Y6IH1z7onsBu4zJ7XDTgEDALCgefsbV9QQ/wTgUVAK3u514Fp9rx2gAGmAJFAA+BWYC3QGqvm9Z1dJsRe5gfgFSAC6A3kAOfZ834BrrWfRwFn1BBbVdsfgVWb62rvo38AP7ssY7B+McUBbeztD7HnvQI8Vem9f+6yb7NqiCcM2GovF4qVtIqBx1zWUQo8Ze/LBkAT4EqgIRANfAh86rLOBUA2kGy/x4+A9yq9/8n2unph/fLrWkOcDwMlwEg7zr8AW4BQe34mkG5/hg2wKiUFwIV2+XvtfRzmUn6Vy2f+U8V7PkEMzwOvVpq2CriyhuXeAx52+nvtjw/HA6gvDzu5vANk2V/o2UAzrIS+AxCXsr+6JLUFwKMu80YBP1Za9+vAQ9Vs97/Af+znDwLTXeZF2smmpoSeAZzv8rq5nQxCXBJKB5f584FbXV5fZJcJsb/wZUC0y/wngHfs5z9gNUc1dXO/VrX9ecCNLq+DsH7dtLVfG+Asl/kzgfvs5wOw/oGK/ToVuNp+PpiaE/ogrOTr+nku5NiEXgxEnGAdvYH9Lq8XAE+6vO5mryPY5f23qnT8jK4hzoeBRZX20U7gbPt1JnCDy/x/AjMrlc8GBruUd/3MLwY21RDDm67vy572E3B9DctpQq/moU0uPmKMyTDGXG+MaYVV02qBlWwBso19pNq22vMrbHd53hYYYP/sPSAiB4CxQCKAiAwQ6+RSjojkYdWWm9rLtnBdlzGmAOuXQ03aAp+4bC8DKyk3qybGFpVeb600b58xJr/S/Jb28xuxaoNrRWSJiAxzI77K228LPO8S7z5AXLYBsMvl+WGsXwMYYxbbrwfbP/2TsP75uqsFx3+e2yuVyTFWEwMAItJQRF63m8IOYv1TixOR4GrWsRWrltzUZVqV76cGrsdCOVZlo7rjrgUun6NdfjvH7tPKMbquqyqHsH69uopBm1ROmiZ0Bxhj1mLV1pPtSS1FRFyKtMGqtR9dxOX5duB7Y0ycyyPKGHObPf8DrATU2hgTC7yGlczAqoG1rliRiDTE+rlfk+3A0ErbjDDGZFcT4zHbsd9PhR1AYxGJrjQ/G8AYs8EYMwZIwGqWmCUikW7EWHkf3VIp3gbGmJ/dWA9YTWPjgGuBWa7J1w07Of7zbF2pTOUhTv8MdAYGGGNisGr58NvnVnkdbbB+IeXWIq6quB4LQVhNatUddzuw/lFWlBd7eddjoHKMruuqymqsJqKKdUYCHe3p6iRoQvcBsU5i/rniRJeItAbGYLVLg5W87haRUBG5Cqt5Zm41q5sDnCbWyc1Q+3G6ywmqaKwacKGI9AeucVl2FjBMrEsow4BHce8YeA14vOLEon2CcMQJys+0308rEWkE3FcxwxizHfgZeEJEIkSkJ1at/D173eNEJN6uAR6wFyt3I8bK8f5dRLrb64y196u73gMux0rqU2q57V+wfr3caZ9IHAH0r2GZaOAIcMA+2flQFWXGiUg3+5/wo1j/aMpqGVtl/UTkCrGuYvkjVtv7omrKzgQuEesyw1Csf0JFWJ9lhTvsz7wx8AAnvmIF4BMgWUSutE+gPgissCs8x7GP9QisYzbEPn6CqypbX2lC9418rLbZxSJSgPWlWYX1pQBYDHTCqnE9Dow0xlTZFGI3VVwEjMaqAe3itxNsALcDj4pIPtYXZKbLsquBO7Bq8TuB/Vg/s2vyPFat/2t7vYvs91OdycBXwHJgKdalaa7GYLX97sD6Uj9kjPnWnjcEWC0ih+ztjjbGHHEjxqOMMZ9g7ZPpdhPGKqyT0e4uv92O2wA/1nLbxVgnQm/E+oc0Duuf8IkuUf0v1onHXKx9+2UVZaZi/arbhXUy+e7axFWNz7DOyezH+jVyhTGmpKqCxph1WO/lRTvOS4FL7fdb4QPga2AzsAl47EQbN8bkYJ0MftyOYQDWcQ2AiLwmIq+5LDIZ6x/fGKx/GEfsuJWt4sSPcoiIXA/cZIw5y+lY1G9E5C1ghzHmHx5Y12LgNWPM2ye5/AKsq1reONVYXNb5MJBkjBnnqXUq5/l9pwalfE1E2mHVsvuc5PLnAOuwarJjsS4frarWrZRHaZOLAkBE5onIoSoe9/tBbGOric3jJ89E5F9YTTTPGGO2VFOmTTXxHBKRNlgnOJdjNbn8GasJbaenY62JP3ymInJ/NTHM81UM9Yk2uSilVIDQGrpSSgUITehKKRUgHDsp2rRpU9OuXTunNq+UUnVSWlparjEmvqp5jiX0du3akZqa6tTmlVKqThKRrdXN0yYXpZQKEJrQlVIqQGhCV0qpAKE9RZUKYCUlJWRlZVFYWJsBI5U/iIiIoFWrVoSGhrq9TI0J3R7TYhiwxxiTXMV8wRpE6WKscZivN8YsdTsCpZTXZGVlER0dTbt27Th2RF/lz4wx7N27l6ysLNq3b+/2cu40ubyDNQJedYZijRTYCZgAvOr21pVSXlVYWEiTJk00mdcxIkKTJk1q/cuqxoRujPkB644v1RkBTDGWRVh3WmleqyiUUl6jybxuOpnPzRMnRVty7K2nsjj2tlRKBYwlmfsY+vyP7DhQqyHa1UnKzMwkOfm4ll5VDZ9e5SIiE0QkVURSc3JyfLlppU5Z1v7D3Do1jYydB1mSeaIfrUo5wxMJPZtj7yXYimPvM3iUMWaSMSbFGJMSH19lz1Wl/NLh4lImTEmjuLSc4CBhw+5DTodU72zevJk+ffqwePFihgwZQr9+/Tj77LNZu3Yt+fn5tG/fnpIS64ZLBw8ePOZ1feGJhD4bGC+WM4A8J8Z+VspbjDH89cMVZOw6yAtj+tC2cUM27tGE7kvr1q3jyiuv5J133uH+++/nxRdfJC0tjWeffZbbb7+d6OhoBg8ezBdffAHA9OnTueKKK2p1yV8gcOeyxWnAYKCpiGRh3cA2FMAY8xrWzYwvBjZiXbb4B28Fq5QTXv5uI1+s3Ml
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
},
{
"data": {
"image/png": "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
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
},
{
"data": {
"image/png": "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
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
},
{
"data": {
"image/png": "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
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
},
{
"data": {
"image/png": "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
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
},
{
"data": {
"image/png": "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
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
},
{
"data": {
"image/png": "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
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
},
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAXQAAAEXCAYAAAC9A7+nAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjMuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8vihELAAAACXBIWXMAAAsTAAALEwEAmpwYAAA6vUlEQVR4nO3dd3wUZf7A8c83HVIpCb0HaaFH8MSC9UARLJyAIHoW7HJe8Sx3ttOz/ryzK1hBpYgNEWynqKggCYQaOgESWkIJIZD+/P6YCS4hIRvY3dnsft+v176yM/PMzHdnd7959pl5nhFjDEoppeq/EKcDUEop5Rma0JVSKkBoQldKqQChCV0ppQKEJnSllAoQmtCVUipAaEIPciKSJSLne3kf7UXEiEiYN/fjbSJypoisdToOV/5ybH3xOVK104TuIyJyhoj8LCL5IrJXRH4SkVOdjku5zxjzozGmi9NxBBIROU9E1ojIIRH5TkTa1VAuSUSmich2+zv0k4gM9HW8/k4Tug+ISBwwB3gBaAy0Ah4Giuu4HRERv37P/KCmWK9+BdSHeL0Vo4g0BT4C/on1vUgDZtRQPAZYDPS3y74DfC4iMd6Ird4yxujDyw8gFdhfw7JrgZ+AF4F8YA1wnsvy+cBjdpnDQDLQFfga2AusBa50KX8xsBQ4AGwDHqqyv6uBLcAe4H4gCzi/lvhDgHuAjfZ6M4HG9rL2gAGuB7YCPwChwDNAHrAJuM0uE2av0xKYbce/AbjRZV8DsL7YB4BdwLO1xHbM/u351wGZwD7gS6CdyzoGuBlYD+wHXgIEiLBj6ulSNgk4BCQCg4FsN97vfvZ7UAB8gJWkHrWXDQaygb8DO4GpQCOsf/i5drxzgNZVPgOPA7/ax+XTao7/NfbrzwPudyPGh4BZdmwFwBKgt8vyLDvG5VgVjzBgOLDKPmbzgW5Vyt8LrLZfw1tAVC0xTAB+dpmOxvqMd3Xze3UA6O/099ufHo4HEAwPIA4rEb4DDAUauSy7FigD7gLCgVFYib3yCzvf/qL2sL9U8ViJ+o/2dF/7S9zdLj8Y6ImVhHthJcVL7WXdgYPAWUAk8Ky979oS+kRgIdDaXu81YJq9rDKhTLG/kA2wkuUaoA1Wbeo7jk7oPwAvA1FAH6xEdq697Bfgavt5DHBaLbFVt/8RWP8outnH6B9VEofBSpoJQFt7/0PsZS8DT1Z57Z+5HNvjJnSsfwpb7PXCgcuBEo5O6GXAk/axbAA0Aa4AGgKxWP8EPnHZ5nwgB0ixX+OHwLtVXv9ke1u9sRJwt1rifAgoBUbacf4V2AyE28uzgAz7PWwAnAIUAhfY5e+2j3GES/mVLu/5T5Wv+TgxPAe8UmXeSuAKN75TfYAiIN7p77c/PRwPIFgednJ5G6t2VoZVQ22GldC3A+JS9ld+S2rzgUdclo0Cfqyy7deAB2vY73+B/9jPHwCmuyyLtpNNbQk9k6N/NbSwk0GYS0Lp6LL8W+Bml+kL7TJh9he+HIh1Wf448Lb9/Aes5qimbh7X6vY/D7jeZToEq5bdzp42wBkuy2cC99jPB2L9AxV7Og37FxDuJfSzsJKv6/u5gKMTegnHqb3ayWqfy/R84AmX6e72NkJdXr9rjf5XYHQtcT4ELKxyjHYAZ9rTWcB1Lsv/CcysUj4HGOxS3vU9vwjYWEsMb7i+LnveT8C1tawXB6wA7vXEdzOQHn7dHhtIjDGZxphrjTGtsWpaLbGSLUCOsT+pti328krbXJ63AwaKyP7KBzAWaA4gIgPtk0u5IpKPVVtuaq/b0nVbxphCrF8OtWkHfOyyv0yspNyshhhbVpneUmXZXmNMQZXlrezn12PVBteIyGIRGeZGfFX33w54ziXevVhNKq1cyux0eX4I69cAxphF9vRgEemK1cQ1280YwHp9Vd/PbVXK5BpjiionRKShiLwmIltE5ADWP7UEEQmtYRtbsGrJTV3mVft6auH6WajAqmzU9Llricv7aJffxtHHtGqMrtuqzkGs5OwqDqsJqFoi0gD4DOuf0eO1bD/oaEJ3gDFmDVZtPcWe1UpExKVIW6xa+5FVXJ5vA743xiS4PGKMMbfYy9/HSkBtjDHxwKtYyQysGlibyg2JSEOsn/u12QYMrbLPKGNMTg0xHrUf+/VU2g40FpHYKstzAIwx640xY7Darp8EZolItBsxVj1GN1WJt4Ex5mc3tgNW09g4rPMNs1yTrxt2cOz72aZKGVNl+i9AF2CgMSYOq5YPv71vVbfRFusXUl4d4qqO62chBKtJrabP3Xasf5SV5cVe3/UzUDVG121VZxVWE1HlNqOBTvb8Y4hIJPAJ1j+em2rZdlDShO4DItJVRP4iIq3t6TbAGKx2abCS150iEi4if8Bqnplbw+bmAKeIyNV2+XAROVVEutnLY7FqwEUiMgC4ymXdWcAw+xLKCOAR3PsMvAo8VnlJmYgkisiI45Sfab+e1iLSCOuEKgDGmG3Az8DjIhIlIr2wauXv2tseJyKJdg1wv71ahRsxVo33XhHpYW8z3j6u7noXuAwrqU+p475/wfr1cruIhNnHaUAt68RinQzcLyKNgQerKTNORLrb/4QfwfpHU17H2KrqLyKX21ex/Amr7X1hDWVnAhfblxmGY/0TKsZ6LyvdZr/njbFOuNd0xUqlj4EUEblCRKKwmgSX2xWeo9j7nIV1nK6xPx+qCk3ovlGA1Ta7SEQKsb40K7G+FACLgM5YNa7HgJHGmGqbQuymiguB0Vg1oJ38doIN4FbgEREpwPqCzHRZdxXWFSfvY9Uk92HVdmrzHFat/yt7uwvt11OTyVhXlizDunrioyrLx2C1/W7H+lI/aIz5xl42BFglIgft/Y42xhx2I8YjjDEfYx2T6XYTxkqsk9Hurr/NjtsAP9Zx3yVYJ0Kvx/qHNA7rn/DxLlH9L9aJxzysY/tFNWWmYv2q24l1MvnOusRVg0+xzsnsw/o1crkxprS6gsaYtViv5QU7zkuAS+zXW+l94CusK5s2Ao8eb+fGmFysk8GP2TEMxPpcAyAir4rIq/bk6cAwrM/+fhE5aD/OrNMrDnCVJ36UQ0TkWuAGY8wZTseifiMibwLbjTH/8MC2FgGvGmPeOsH152Nd1fL6ycbiss2HgGRjzDhPbVM5z+87NSjlayLSHquW3fcE1z8bq39AHtYJ615UX+tWyqO0yUUBICLzXH7Guj7u84PYxtYQW7Unz05yX//CaqJ52hizuYYybWuI56CItMU6wbkMq8nlL1hNaDs8HWtt/OE9FZH7aohhnq9iCCba5KKUUgFCa+hKKRUgNKErpVSAcOykaNOmTU379u2d2r1SStVL6enpecaYxOqWOZbQ27dvT1pamlO7V0qpeklEttS0TJtclFIqQGhCV0qpAKEJXSmlAoT2FFUqgJWWlpKdnU1RUV0GjFT+ICoqitatWxMeHu72OrUmdHtMi2HAbmNMSjXLBWsQpYuwxmG+1hizxO0IlFJek52dTWxsLO3bt+foEX2VPzPGsGfPHrKzs+nQoYPb67nT5PI21gh4NRmKNVJgZ6x7BL7i9t6VUl5VVFREkyZNNJnXMyJCkyZN6vzLqtaEboz5AeuOLzUZAUwxloVYd1ppUacolFJeo8m8fjqR980TJ0VbcfStp7I5+rZUSgWMxVl7Gfrcj2zfX6ch2tUJysrKIiXlmJZeVQOfXuUiIhNEJE1E0nJzc325a6VOWva+Q9w8NZ3MHQdYnHW8H61KOcMTCT2Ho+8l2Jqj7zN4hDFmkjEm1RiTmphYbc9VpfzSoZIyJkxJp6SsgtAQYf2ug06HFHQ2bdpE3759WbRoEUOGDKF///6ceeaZrFmzhoKCAjp06EBpqXXDpQMHDhw1HSw8kdBnA+PFchqQ78TYz0p5izGGv32wnMydB3h+TF/aNW7Iht2a0H1p7dq1XHHFFbz99tvcd999vPDCC6Snp/PMM89w6623Ehsby+DBg/n8888BmD59OpdffnmdLvkLBO5ctjgNGAw0FZFsrBvYhgMYY17FupnxRcAGrMsW/+itYJVywkvfbeDzFTu4Z2hXzumaxLRft7I
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
},
{
"data": {
"image/png": "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
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
},
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAXQAAAEXCAYAAAC9A7+nAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjMuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8vihELAAAACXBIWXMAAAsTAAALEwEAmpwYAAA6vUlEQVR4nO3dd3wUZf7A8c83HVIpCb0HaaFH8MSC9UARLJyAIHoW7HJe8Sx3ttOz/ryzK1hBpYgNEWynqKggCYQaOgESWkIJIZD+/P6YCS4hIRvY3dnsft+v176yM/PMzHdnd7959pl5nhFjDEoppeq/EKcDUEop5Rma0JVSKkBoQldKqQChCV0ppQKEJnSllAoQmtCVUipAaEIPciKSJSLne3kf7UXEiEiYN/fjbSJypoisdToOV/5ybH3xOVK104TuIyJyhoj8LCL5IrJXRH4SkVOdjku5zxjzozGmi9NxBBIROU9E1ojIIRH5TkTa1VAuSUSmich2+zv0k4gM9HW8/k4Tug+ISBwwB3gBaAy0Ah4Giuu4HRERv37P/KCmWK9+BdSHeL0Vo4g0BT4C/on1vUgDZtRQPAZYDPS3y74DfC4iMd6Ird4yxujDyw8gFdhfw7JrgZ+AF4F8YA1wnsvy+cBjdpnDQDLQFfga2AusBa50KX8xsBQ4AGwDHqqyv6uBLcAe4H4gCzi/lvhDgHuAjfZ6M4HG9rL2gAGuB7YCPwChwDNAHrAJuM0uE2av0xKYbce/AbjRZV8DsL7YB4BdwLO1xHbM/u351wGZwD7gS6CdyzoGuBlYD+wHXgIEiLBj6ulSNgk4BCQCg4FsN97vfvZ7UAB8gJWkHrWXDQaygb8DO4GpQCOsf/i5drxzgNZVPgOPA7/ax+XTao7/NfbrzwPudyPGh4BZdmwFwBKgt8vyLDvG5VgVjzBgOLDKPmbzgW5Vyt8LrLZfw1tAVC0xTAB+dpmOxvqMd3Xze3UA6O/099ufHo4HEAwPIA4rEb4DDAUauSy7FigD7gLCgVFYib3yCzvf/qL2sL9U8ViJ+o/2dF/7S9zdLj8Y6ImVhHthJcVL7WXdgYPAWUAk8Ky979oS+kRgIdDaXu81YJq9rDKhTLG/kA2wkuUaoA1Wbeo7jk7oPwAvA1FAH6xEdq697Bfgavt5DHBaLbFVt/8RWP8outnH6B9VEofBSpoJQFt7/0PsZS8DT1Z57Z+5HNvjJnSsfwpb7PXCgcuBEo5O6GXAk/axbAA0Aa4AGgKxWP8EPnHZ5nwgB0ixX+OHwLtVXv9ke1u9sRJwt1rifAgoBUbacf4V2AyE28uzgAz7PWwAnAIUAhfY5e+2j3GES/mVLu/5T5Wv+TgxPAe8UmXeSuAKN75TfYAiIN7p77c/PRwPIFgednJ5G6t2VoZVQ22GldC3A+JS9ld+S2rzgUdclo0Cfqyy7deAB2vY73+B/9jPHwCmuyyLtpNNbQk9k6N/NbSwk0GYS0Lp6LL8W+Bml+kL7TJh9he+HIh1Wf448Lb9/Aes5qimbh7X6vY/D7jeZToEq5bdzp42wBkuy2cC99jPB2L9AxV7Og37FxDuJfSzsJKv6/u5gKMTegnHqb3ayWqfy/R84AmX6e72NkJdXr9rjf5XYHQtcT4ELKxyjHYAZ9rTWcB1Lsv/CcysUj4HGOxS3vU9vwjYWEsMb7i+LnveT8C1tawXB6wA7vXEdzOQHn7dHhtIjDGZxphrjTGtsWpaLbGSLUCOsT+pti328krbXJ63AwaKyP7KBzAWaA4gIgPtk0u5IpKPVVtuaq/b0nVbxphCrF8OtWkHfOyyv0yspNyshhhbVpneUmXZXmNMQZXlrezn12PVBteIyGIRGeZGfFX33w54ziXevVhNKq1cyux0eX4I69cAxphF9vRgEemK1cQ1280YwHp9Vd/PbVXK5BpjiionRKShiLwmIltE5ADWP7UEEQmtYRtbsGrJTV3mVft6auH6WajAqmzU9Llricv7aJffxtHHtGqMrtuqzkGs5OwqDqsJqFoi0gD4DOuf0eO1bD/oaEJ3gDFmDVZtPcWe1UpExKVIW6xa+5FVXJ5vA743xiS4PGKMMbfYy9/HSkBtjDHxwKtYyQysGlibyg2JSEOsn/u12QYMrbLPKGNMTg0xHrUf+/VU2g40FpHYKstzAIwx640xY7Darp8EZolItBsxVj1GN1WJt4Ex5mc3tgNW09g4rPMNs1yTrxt2cOz72aZKGVNl+i9AF2CgMSYOq5YPv71vVbfRFusXUl4d4qqO62chBKtJrabP3Xasf5SV5cVe3/UzUDVG121VZxVWE1HlNqOBTvb8Y4hIJPAJ1j+em2rZdlDShO4DItJVRP4iIq3t6TbAGKx2abCS150iEi4if8Bqnplbw+bmAKeIyNV2+XAROVVEutnLY7FqwEUiMgC4ymXdWcAw+xLKCOAR3PsMvAo8VnlJmYgkisiI45Sfab+e1iLSCOuEKgDGmG3Az8DjIhIlIr2wauXv2tseJyKJdg1wv71ahRsxVo33XhHpYW8z3j6u7noXuAwrqU+p475/wfr1cruIhNnHaUAt68RinQzcLyKNgQerKTNORLrb/4QfwfpHU17H2KrqLyKX21ex/Amr7X1hDWVnAhfblxmGY/0TKsZ6LyvdZr/njbFOuNd0xUqlj4EUEblCRKKwmgSX2xWeo9j7nIV1nK6xPx+qCk3ovlGA1Ta7SEQKsb40K7G+FACLgM5YNa7HgJHGmGqbQuymiguB0Vg1oJ38doIN4FbgEREpwPqCzHRZdxXWFSfvY9Uk92HVdmrzHFat/yt7uwvt11OTyVhXlizDunrioyrLx2C1/W7H+lI/aIz5xl42BFglIgft/Y42xhx2I8YjjDEfYx2T6XYTxkqsk9Hurr/NjtsAP9Zx3yVYJ0Kvx/qHNA7rn/DxLlH9L9aJxzysY/tFNWWmYv2q24l1MvnOusRVg0+xzsnsw/o1crkxprS6gsaYtViv5QU7zkuAS+zXW+l94CusK5s2Ao8eb+fGmFysk8GP2TEMxPpcAyAir4rIq/bk6cAwrM/+fhE5aD/OrNMrDnCVJ36UQ0TkWuAGY8wZTseifiMibwLbjTH/8MC2FgGvGmPeOsH152Nd1fL6ycbiss2HgGRjzDhPbVM5z+87NSjlayLSHquW3fcE1z8bq39AHtYJ615UX+tWyqO0yUUBICLzXH7Guj7u84PYxtYQW7Unz05yX//CaqJ52hizuYYybWuI56CItMU6wbkMq8nlL1hNaDs8HWtt/OE9FZH7aohhnq9iCCba5KKUUgFCa+hKKRUgNKErpVSAcOykaNOmTU379u2d2r1SStVL6enpecaYxOqWOZbQ27dvT1pamlO7V0qpeklEttS0TJtclFIqQGhCV0qpAKEJXSmlAoT2FFUqgJWWlpKdnU1RUV0GjFT+ICoqitatWxMeHu72OrUmdHtMi2HAbmNMSjXLBWsQpYuwxmG+1hizxO0IlFJek52dTWxsLO3bt+foEX2VPzPGsGfPHrKzs+nQoYPb67nT5PI21gh4NRmKNVJgZ6x7BL7i9t6VUl5VVFREkyZNNJnXMyJCkyZN6vzLqtaEboz5AeuOLzUZAUwxloVYd1ppUacolFJeo8m8fjqR980TJ0VbcfStp7I5+rZUSgWMxVl7Gfrcj2zfX6ch2tUJysrKIiXlmJZeVQOfXuUiIhNEJE1E0nJzc325a6VOWva+Q9w8NZ3MHQdYnHW8H61KOcMTCT2Ho+8l2Jqj7zN4hDFmkjEm1RiTmphYbc9VpfzSoZIyJkxJp6SsgtAQYf2ug06HFHQ2bdpE3759WbRoEUOGDKF///6ceeaZrFmzhoKCAjp06EBpqXXDpQMHDhw1HSw8kdBnA+PFchqQ78TYz0p5izGGv32wnMydB3h+TF/aNW7Iht2a0H1p7dq1XHHFFbz99tvcd999vPDCC6Snp/PMM89w6623Ehsby+DBg/n8888BmD59OpdffnmdLvkLBO5ctjgNGAw0FZFsrBvYhgMYY17FupnxRcAGrMsW/+itYJVywkvfbeDzFTu4Z2hXzumaxLRft7I
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
},
{
"data": {
"image/png": "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
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
},
{
"data": {
"image/png": "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
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
},
{
"data": {
"image/png": "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
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
},
{
"data": {
"image/png": "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
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
},
{
"data": {
"image/png": "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
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
},
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAXQAAAEXCAYAAAC9A7+nAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjMuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8vihELAAAACXBIWXMAAAsTAAALEwEAmpwYAAA66klEQVR4nO3dd3hUVfrA8e+bDklIaKH3IC30CK4oYl1QBAsrIIiuBbvoFtfVXdvqWn/u2hWsoFLEhgi2RVRUkARCDZ0ACS2hhBBIP78/7g0OISETMjN3MvN+nmeezMw999537sy8OXPOPeeKMQallFJ1X4jTASillPIMTehKKRUgNKErpVSA0ISulFIBQhO6UkoFCE3oSikVIDShK0QkQ0Qu8PI+2ouIEZEwb+7H20TkbBFZ73Qcrvzl2Pric6ROThO6D4nIWSLys4jkish+EflJRE53Oi7lPmPMj8aYLk7HEUhE5HwRWSciR0TkOxFp58Y659j/xB7zRYx1hSZ0HxGRBsBc4EWgEdAKeAQorOF2RET8+n3zg5pinfoVUBfi9VaMItIE+Bj4J9b3IgWYWc064cDzwBJvxFSX+XViCDCnARhjphtjSo0xR40xXxtjVorIdXZt/SW79r5ORM4vX1FEForI4yLyE3AE6CgiXUXkG7umv15ErnIpf4mILBeRQyKyQ0Qedg1ERK4RkW0isk9EHnAneBEJEZH7RGSzvd4sEWlkLyv/yX+DiGwHFohIqIg8KyI5IrIFuKTC9lqKyBw7/k0icpPLsgEikmLHv0dEnqsmthP2bz9/vYiki8gBEfnKteZnl79FRDaKyEERedn+Zxlhx9TTpWyCXXtsKiJDRCTTjePVz34P8kTkQxGZWV6bLN+GiPxNRHYDb4tIQxGZKyLZdrxzRaS1y/YWisgTIvKrfVw+Kz/+LsaJyHb7mFf7vorIwyIy244tT0SWiUhvl+UZdowrgXwRCRORESKyxj5mC0WkW4XNni4ia+3X8LaIRFUTxhXAGmPMh8aYAuBhoLeIdD3JOn8GvgbWVfcag44xRm8+uAENgH3Au8AwoKHLsuuAEuAeIBwYDeQCjezlC4HtQA8gDIgDdgB/tB/3BXKA7nb5IUBPrH/YvYA9wGX2su7AYWAwEAk8Z+/7gmrinwQsBlrb670OTLeXtQcMMBWIBuoBt2B94dpg1by+s8uE2ev8ALwCRAF9gGzgPHvZL8A19v0Y4IxqYqts/yOBTUA3+xj9A/jZZR2D9YspHmhr73+ovewV4KkKr/1zl2ObWU08EcA2e71wrKRVBDzmso0S4Cn7WNYDGgNXAvWBWOBD4FOXbS4EsoAk+zV+BLxX4fVPsbfVG+uXX7dq4nwYKAZG2XH+BdgKhNvLM4A0+z2sh1UpyQcutMvfax/jCJfyq13e85/KX/NJYngeeLXCc6uBK6so3w7YYH8u3qlu+8F2czyAYLrZyeUdINP+Qs8BmmEl9J2AuJT9ld+S2kLgUZdlo4EfK2z7deChKvb7X+A/9v0HgRkuy6LtZFNdQk8Hznd53MJOBmEuCaWjy/IFwC0ujy+yy4TZX/hSINZl+RPAO/b9H7Cao5q4eVwr2/984AaXxyFYv27a2Y8NcJbL8lnAffb9gVj/QMV+nAJcZd8fQvUJfTBW8nV9PxdxfEIvAqJOso0+wAGXxwuBJ10ed7e3Eery+ltX+PyMqSbOh4HFFY7RLuBs+3EGcL3L8n8CsyqUzwKGuJR3fc8vBjZXE8Obrq/Lfu4n4Loqyn8GjLbvv4Mm9ONu2uTiQ8aYdGPMdcaY1lg1rZZYyRYgy9ifUts2e3m5HS732wED7Z+9B0XkIDAOaA4gIgPF6lzKFpFcrNpyE3vdlq7bMsbkY/1yqE474BOX/aVjJeVmVcTYssLjbRWW7TfG5FVY3sq+fwNWbXCdiCwVkeFuxFdx/+2A513i3Q+Iyz4AdrvcP4JV68MYs8R+PMT+6Z+I9c/XXS058f3cUaFMtrGaGAAQkfoi8rrdFHYI659avIiEVrGNbVi15CYuz1X6eqrh+lkow6psVPW5a4nL+2iX38Hxx7RijK7bqsxhrF+vrhoAeRULisilWJWAk7axBzNN6A4xxqzDqmEk2U+1EhFxKdIWq9Z+bBWX+zuA740x8S63GGPMrfbyD7ASUBtjTBzwGlYyA6sG1qZ8QyJSH+vnfnV2AMMq7DPKGJNVRYzH7cd+PeV2Ao1EJLbC8iwAY8xGY8xYIAGrWWK2iES7EWPFY3RzhXjrGWN+dmM7YDWNjQeuAWa7Jl837OLE97NNhTIVpzn9M9AFGGiMaYBVy4ff3reK22iL9QsppwZxVcb1sxCC1aRW1eduJ9Y/yvLyYq/v+hmoGKPrtiqzBquJqHyb0UAn+/mKzgeSRWS33fcwGrhbRD6rZh9BQxO6j4jVifnn8o4uEWkDjMVqlwYred0lIuEi8ges5pl5VWxuLnCaWJ2b4fbtdJcOqlisGnCBiAwArnZZdzYwXKxTKCOAR3Hvc/Aa8Hh5x6LdQTjyJOVn2a+ntYg0BO4rX2CM2QH8DDwhIlEi0gurVv6eve3xItLUrgEetFcrcyPGivH+XUR62NuMs4+ru94DLsdK6lNruO9fsH693GF3JI4EBlSzTixwFDhod3Y+VEmZ8SLS3f4n/CjWP5rSGsZWUX8RuUKss1juxmp7X1xF2VnAJWKdZhiO9U+oEOu9LHe7/Z43Ah6gmjNWgE+AJBG50u5AfRBYaVd4Kvon1i+3PvZtDla/wR+rfZVBQhO67+Rhtc0uEZF8rC/NaqwvBVinYHXGqnE9DowyxlTaFGI3VVwEjMGqAe3mtw42gNuAR0UkD+sLMstl3TXA7Vi1+F3AAayf2dV5HusL9LW93cX266nKFOArYAWwDOvUNFdjsdp+d2J9qR8yxnxrLxsKrBGRw/Z+xxhjjroR4zHGmE+wjskMuwljNVZntLvr77DjNsCPNdx3EVZH6A1Y/5DGY/0TPtkpqv/F6njMwTq2X1ZSZhrWr7rdWJ3Jd9Ukrip8hlXTPYD1a+QKY0xxZQWNMeuxXsuLdpyXApfar7fcB1hnoGwBNgMnPU/cGJON1Rn8uB3DQKzPNQAi8pqIvGaXzTPG7C6/Yf0DzDfG7K/xqw5Q5Z0+ykEich1wozHmLKdjUb8RkbeAncaYf3hgW0uA14wxb5/i+guxzmp5o7axuGzzYSDRGDPeU9tUzvL7AQ1KOUFE2mPVsvue4vrnAOuxarLjsE4frazWrZTHaJOLOkZE5ovI4Upu9/tBbOOqiK2yzrPa7utfWE00zxhjtlZRpm0V8RwWkbZYHZwrsJpc/ozVhLbL07FWxx/eUxG5v4oY5vsqhmChTS5KKRUgtIaulFIBQhO6UkoFCMc6RZs0aWLat2/v1O6VUqpOSk1NzTHGNK1smWMJvX379qSkpDi1e6WUqpNEZFtVy7TJRSmlAoQmdKWUChCa0JVSKkDoSFGlAlhxcTGZmZkUFNRkskjlD6KiomjdujXh4eFur1NtQrfnsxgO7DXGJFWyXLAmULoYaw7m64wxy9yOQCnlNZmZmcTGxtK+fXuOn81X+TNjDPv27SMzM5MOHTq4vZ47TS7vYM1+V5VhWLMEdgYmAq+6vXellFcVFBTQuHFjTeZ1jIjQuHHjGv+yqjahG2N+wLraS1VGAlONZTHWVVZa1CgKpZTXaDKvm07lffNEp2grjr/sVCbHX5JKqYCxNGM/w57/kZ0HazQ9uzpFGRkZJCWd0NKrquDTs1xEZKKIpIhISnZ2ti93rVStZR44wi3TUknfdYilGXpNBeV/PJHQszj+OoKtOf4ag8cYYyYbY5KNMclNm1Y6clUpv3SkqISJU1MpKikjNETYuOew0yEFnS1bttC3b1+WLFnC0KFD6d+/P2effTbr1q0jLy+PDh06UFxsXWzp0KFDxz0OFp5I6HOACWI5A8h1Yt5npbzFGMNfP1xJ+u5DvDC2L+0a1WfTXk3ovrR+/XquvPJK3nnnHe6//35efPFFUlNTefbZZ7ntttuIjY1lyJAhfPHFFwDMmDGDK664okan/AUCd05bnA4MAZq
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
},
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAXQAAAEXCAYAAAC9A7+nAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjMuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8vihELAAAACXBIWXMAAAsTAAALEwEAmpwYAAA66klEQVR4nO3dd3hUVfrA8e+bDklIaKH3IC30CK4oYl1QBAsrIIiuBbvoFtfVXdvqWn/u2hWsoFLEhgi2RVRUkARCDZ0ACS2hhBBIP78/7g0OISETMjN3MvN+nmeezMw999537sy8OXPOPeeKMQallFJ1X4jTASillPIMTehKKRUgNKErpVSA0ISulFIBQhO6UkoFCE3oSikVIDShK0QkQ0Qu8PI+2ouIEZEwb+7H20TkbBFZ73Qcrvzl2Pric6ROThO6D4nIWSLys4jkish+EflJRE53Oi7lPmPMj8aYLk7HEUhE5HwRWSciR0TkOxFp58Y659j/xB7zRYx1hSZ0HxGRBsBc4EWgEdAKeAQorOF2RET8+n3zg5pinfoVUBfi9VaMItIE+Bj4J9b3IgWYWc064cDzwBJvxFSX+XViCDCnARhjphtjSo0xR40xXxtjVorIdXZt/SW79r5ORM4vX1FEForI4yLyE3AE6CgiXUXkG7umv15ErnIpf4mILBeRQyKyQ0Qedg1ERK4RkW0isk9EHnAneBEJEZH7RGSzvd4sEWlkLyv/yX+DiGwHFohIqIg8KyI5IrIFuKTC9lqKyBw7/k0icpPLsgEikmLHv0dEnqsmthP2bz9/vYiki8gBEfnKteZnl79FRDaKyEERedn+Zxlhx9TTpWyCXXtsKiJDRCTTjePVz34P8kTkQxGZWV6bLN+GiPxNRHYDb4tIQxGZKyLZdrxzRaS1y/YWisgTIvKrfVw+Kz/+LsaJyHb7mFf7vorIwyIy244tT0SWiUhvl+UZdowrgXwRCRORESKyxj5mC0WkW4XNni4ia+3X8LaIRFUTxhXAGmPMh8aYAuBhoLeIdD3JOn8GvgbWVfcag44xRm8+uAENgH3Au8AwoKHLsuuAEuAeIBwYDeQCjezlC4HtQA8gDIgDdgB/tB/3BXKA7nb5IUBPrH/YvYA9wGX2su7AYWAwEAk8Z+/7gmrinwQsBlrb670OTLeXtQcMMBWIBuoBt2B94dpg1by+s8uE2ev8ALwCRAF9gGzgPHvZL8A19v0Y4IxqYqts/yOBTUA3+xj9A/jZZR2D9YspHmhr73+ovewV4KkKr/1zl2ObWU08EcA2e71wrKRVBDzmso0S4Cn7WNYDGgNXAvWBWOBD4FOXbS4EsoAk+zV+BLxX4fVPsbfVG+uXX7dq4nwYKAZG2XH+BdgKhNvLM4A0+z2sh1UpyQcutMvfax/jCJfyq13e85/KX/NJYngeeLXCc6uBK6so3w7YYH8u3qlu+8F2czyAYLrZyeUdINP+Qs8BmmEl9J2AuJT9ld+S2kLgUZdlo4EfK2z7deChKvb7X+A/9v0HgRkuy6LtZFNdQk8Hznd53MJOBmEuCaWjy/IFwC0ujy+yy4TZX/hSINZl+RPAO/b9H7Cao5q4eVwr2/984AaXxyFYv27a2Y8NcJbL8lnAffb9gVj/QMV+nAJcZd8fQvUJfTBW8nV9PxdxfEIvAqJOso0+wAGXxwuBJ10ed7e3Eery+ltX+PyMqSbOh4HFFY7RLuBs+3EGcL3L8n8CsyqUzwKGuJR3fc8vBjZXE8Obrq/Lfu4n4Loqyn8GjLbvv4Mm9ONu2uTiQ8aYdGPMdcaY1lg1rZZYyRYgy9ifUts2e3m5HS732wED7Z+9B0XkIDAOaA4gIgPF6lzKFpFcrNpyE3vdlq7bMsbkY/1yqE474BOX/aVjJeVmVcTYssLjbRWW7TfG5FVY3sq+fwNWbXCdiCwVkeFuxFdx/+2A513i3Q+Iyz4AdrvcP4JV68MYs8R+PMT+6Z+I9c/XXS058f3cUaFMtrGaGAAQkfoi8rrdFHYI659avIiEVrGNbVi15CYuz1X6eqrh+lkow6psVPW5a4nL+2iX38Hxx7RijK7bqsxhrF+vrhoAeRULisilWJWAk7axBzNN6A4xxqzDqmEk2U+1EhFxKdIWq9Z+bBWX+zuA740x8S63GGPMrfbyD7ASUBtjTBzwGlYyA6sG1qZ8QyJSH+vnfnV2AMMq7DPKGJNVRYzH7cd+PeV2Ao1EJLbC8iwAY8xGY8xYIAGrWWK2iES7EWPFY3RzhXjrGWN+dmM7YDWNjQeuAWa7Jl837OLE97NNhTIVpzn9M9AFGGiMaYBVy4ff3reK22iL9QsppwZxVcb1sxCC1aRW1eduJ9Y/yvLyYq/v+hmoGKPrtiqzBquJqHyb0UAn+/mKzgeSRWS33fcwGrhbRD6rZh9BQxO6j4jVifnn8o4uEWkDjMVqlwYred0lIuEi8ges5pl5VWxuLnCaWJ2b4fbtdJcOqlisGnCBiAwArnZZdzYwXKxTKCOAR3Hvc/Aa8Hh5x6LdQTjyJOVn2a+ntYg0BO4rX2CM2QH8DDwhIlEi0gurVv6eve3xItLUrgEetFcrcyPGivH+XUR62NuMs4+ru94DLsdK6lNruO9fsH693GF3JI4EBlSzTixwFDhod3Y+VEmZ8SLS3f4n/CjWP5rSGsZWUX8RuUKss1juxmp7X1xF2VnAJWKdZhiO9U+oEOu9LHe7/Z43Ah6gmjNWgE+AJBG50u5AfRBYaVd4Kvon1i+3PvZtDla/wR+rfZVBQhO67+Rhtc0uEZF8rC/NaqwvBVinYHXGqnE9DowyxlTaFGI3VVwEjMGqAe3mtw42gNuAR0UkD+sLMstl3TXA7Vi1+F3AAayf2dV5HusL9LW93cX266nKFOArYAWwDOvUNFdjsdp+d2J9qR8yxnxrLxsKrBGRw/Z+xxhjjroR4zHGmE+wjskMuwljNVZntLvr77DjNsCPNdx3EVZH6A1Y/5DGY/0TPtkpqv/F6njMwTq2X1ZSZhrWr7rdWJ3Jd9Ukrip8hlXTPYD1a+QKY0xxZQWNMeuxXsuLdpyXApfar7fcB1hnoGwBNgMnPU/cGJON1Rn8uB3DQKzPNQAi8pqIvGaXzTPG7C6/Yf0DzDfG7K/xqw5Q5Z0+ykEich1wozHmLKdjUb8RkbeAncaYf3hgW0uA14wxb5/i+guxzmp5o7axuGzzYSDRGDPeU9tUzvL7AQ1KOUFE2mPVsvue4vrnAOuxarLjsE4frazWrZTHaJOLOkZE5ovI4Upu9/tBbOOqiK2yzrPa7utfWE00zxhjtlZRpm0V8RwWkbZYHZwrsJpc/ozVhLbL07FWxx/eUxG5v4oY5vsqhmChTS5KKRUgtIaulFIBQhO6UkoFCMc6RZs0aWLat2/v1O6VUqpOSk1NzTHGNK1smWMJvX379qSkpDi1e6WUqpNEZFtVy7TJRSmlAoQmdKWUChCa0JVSKkDoSFGlAlhxcTGZmZkUFNRkskjlD6KiomjdujXh4eFur1NtQrfnsxgO7DXGJFWyXLAmULoYaw7m64wxy9yOQCnlNZmZmcTGxtK+fXuOn81X+TNjDPv27SMzM5MOHTq4vZ47TS7vYM1+V5VhWLMEdgYmAq+6vXellFcVFBTQuHFjTeZ1jIjQuHHjGv+yqjahG2N+wLraS1VGAlONZTHWVVZa1CgKpZTXaDKvm07lffNEp2grjr/sVCbHX5JKqYCxNGM/w57/kZ0HazQ9uzpFGRkZJCWd0NKrquDTs1xEZKKIpIhISnZ2ti93rVStZR44wi3TUknfdYilGXpNBeV/PJHQszj+OoKtOf4ag8cYYyYbY5KNMclNm1Y6clUpv3SkqISJU1MpKikjNETYuOew0yEFnS1bttC3b1+WLFnC0KFD6d+/P2effTbr1q0jLy+PDh06UFxsXWzp0KFDxz0OFp5I6HOACWI5A8h1Yt5npbzFGMNfP1xJ+u5DvDC2L+0a1WfTXk3ovrR+/XquvPJK3nnnHe6//35efPFFUlNTefbZZ7ntttuIjY1lyJAhfPHFFwDMmDGDK664okan/AUCd05bnA4MAZq
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
},
{
"data": {
"image/png": "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
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
},
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAXQAAAEXCAYAAAC9A7+nAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjMuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8vihELAAAACXBIWXMAAAsTAAALEwEAmpwYAAA66klEQVR4nO3dd3hUVfrA8e+bDklIaKH3IC30CK4oYl1QBAsrIIiuBbvoFtfVXdvqWn/u2hWsoFLEhgi2RVRUkARCDZ0ACS2hhBBIP78/7g0OISETMjN3MvN+nmeezMw999537sy8OXPOPeeKMQallFJ1X4jTASillPIMTehKKRUgNKErpVSA0ISulFIBQhO6UkoFCE3oSikVIDShK0QkQ0Qu8PI+2ouIEZEwb+7H20TkbBFZ73Qcrvzl2Pric6ROThO6D4nIWSLys4jkish+EflJRE53Oi7lPmPMj8aYLk7HEUhE5HwRWSciR0TkOxFp58Y659j/xB7zRYx1hSZ0HxGRBsBc4EWgEdAKeAQorOF2RET8+n3zg5pinfoVUBfi9VaMItIE+Bj4J9b3IgWYWc064cDzwBJvxFSX+XViCDCnARhjphtjSo0xR40xXxtjVorIdXZt/SW79r5ORM4vX1FEForI4yLyE3AE6CgiXUXkG7umv15ErnIpf4mILBeRQyKyQ0Qedg1ERK4RkW0isk9EHnAneBEJEZH7RGSzvd4sEWlkLyv/yX+DiGwHFohIqIg8KyI5IrIFuKTC9lqKyBw7/k0icpPLsgEikmLHv0dEnqsmthP2bz9/vYiki8gBEfnKteZnl79FRDaKyEERedn+Zxlhx9TTpWyCXXtsKiJDRCTTjePVz34P8kTkQxGZWV6bLN+GiPxNRHYDb4tIQxGZKyLZdrxzRaS1y/YWisgTIvKrfVw+Kz/+LsaJyHb7mFf7vorIwyIy244tT0SWiUhvl+UZdowrgXwRCRORESKyxj5mC0WkW4XNni4ia+3X8LaIRFUTxhXAGmPMh8aYAuBhoLeIdD3JOn8GvgbWVfcag44xRm8+uAENgH3Au8AwoKHLsuuAEuAeIBwYDeQCjezlC4HtQA8gDIgDdgB/tB/3BXKA7nb5IUBPrH/YvYA9wGX2su7AYWAwEAk8Z+/7gmrinwQsBlrb670OTLeXtQcMMBWIBuoBt2B94dpg1by+s8uE2ev8ALwCRAF9gGzgPHvZL8A19v0Y4IxqYqts/yOBTUA3+xj9A/jZZR2D9YspHmhr73+ovewV4KkKr/1zl2ObWU08EcA2e71wrKRVBDzmso0S4Cn7WNYDGgNXAvWBWOBD4FOXbS4EsoAk+zV+BLxX4fVPsbfVG+uXX7dq4nwYKAZG2XH+BdgKhNvLM4A0+z2sh1UpyQcutMvfax/jCJfyq13e85/KX/NJYngeeLXCc6uBK6so3w7YYH8u3qlu+8F2czyAYLrZyeUdINP+Qs8BmmEl9J2AuJT9ld+S2kLgUZdlo4EfK2z7deChKvb7X+A/9v0HgRkuy6LtZFNdQk8Hznd53MJOBmEuCaWjy/IFwC0ujy+yy4TZX/hSINZl+RPAO/b9H7Cao5q4eVwr2/984AaXxyFYv27a2Y8NcJbL8lnAffb9gVj/QMV+nAJcZd8fQvUJfTBW8nV9PxdxfEIvAqJOso0+wAGXxwuBJ10ed7e3Eery+ltX+PyMqSbOh4HFFY7RLuBs+3EGcL3L8n8CsyqUzwKGuJR3fc8vBjZXE8Obrq/Lfu4n4Loqyn8GjLbvv4Mm9ONu2uTiQ8aYdGPMdcaY1lg1rZZYyRYgy9ifUts2e3m5HS732wED7Z+9B0XkIDAOaA4gIgPF6lzKFpFcrNpyE3vdlq7bMsbkY/1yqE474BOX/aVjJeVmVcTYssLjbRWW7TfG5FVY3sq+fwNWbXCdiCwVkeFuxFdx/+2A513i3Q+Iyz4AdrvcP4JV68MYs8R+PMT+6Z+I9c/XXS058f3cUaFMtrGaGAAQkfoi8rrdFHYI659avIiEVrGNbVi15CYuz1X6eqrh+lkow6psVPW5a4nL+2iX38Hxx7RijK7bqsxhrF+vrhoAeRULisilWJWAk7axBzNN6A4xxqzDqmEk2U+1EhFxKdIWq9Z+bBWX+zuA740x8S63GGPMrfbyD7ASUBtjTBzwGlYyA6sG1qZ8QyJSH+vnfnV2AMMq7DPKGJNVRYzH7cd+PeV2Ao1EJLbC8iwAY8xGY8xYIAGrWWK2iES7EWPFY3RzhXjrGWN+dmM7YDWNjQeuAWa7Jl837OLE97NNhTIVpzn9M9AFGGiMaYBVy4ff3reK22iL9QsppwZxVcb1sxCC1aRW1eduJ9Y/yvLyYq/v+hmoGKPrtiqzBquJqHyb0UAn+/mKzgeSRWS33fcwGrhbRD6rZh9BQxO6j4jVifnn8o4uEWkDjMVqlwYred0lIuEi8ges5pl5VWxuLnCaWJ2b4fbtdJcOqlisGnCBiAwArnZZdzYwXKxTKCOAR3Hvc/Aa8Hh5x6LdQTjyJOVn2a+ntYg0BO4rX2CM2QH8DDwhIlEi0gurVv6eve3xItLUrgEetFcrcyPGivH+XUR62NuMs4+ru94DLsdK6lNruO9fsH693GF3JI4EBlSzTixwFDhod3Y+VEmZ8SLS3f4n/CjWP5rSGsZWUX8RuUKss1juxmp7X1xF2VnAJWKdZhiO9U+oEOu9LHe7/Z43Ah6gmjNWgE+AJBG50u5AfRBYaVd4Kvon1i+3PvZtDla/wR+rfZVBQhO67+Rhtc0uEZF8rC/NaqwvBVinYHXGqnE9DowyxlTaFGI3VVwEjMGqAe3mtw42gNuAR0UkD+sLMstl3TXA7Vi1+F3AAayf2dV5HusL9LW93cX266nKFOArYAWwDOvUNFdjsdp+d2J9qR8yxnxrLxsKrBGRw/Z+xxhjjroR4zHGmE+wjskMuwljNVZntLvr77DjNsCPNdx3EVZH6A1Y/5DGY/0TPtkpqv/F6njMwTq2X1ZSZhrWr7rdWJ3Jd9Ukrip8hlXTPYD1a+QKY0xxZQWNMeuxXsuLdpyXApfar7fcB1hnoGwBNgMnPU/cGJON1Rn8uB3DQKzPNQAi8pqIvGaXzTPG7C6/Yf0DzDfG7K/xqw5Q5Z0+ykEich1wozHmLKdjUb8RkbeAncaYf3hgW0uA14wxb5/i+guxzmp5o7axuGzzYSDRGDPeU9tUzvL7AQ1KOUFE2mPVsvue4vrnAOuxarLjsE4frazWrZTHaJOLOkZE5ovI4Upu9/tBbOOqiK2yzrPa7utfWE00zxhjtlZRpm0V8RwWkbZYHZwrsJpc/ozVhLbL07FWxx/eUxG5v4oY5vsqhmChTS5KKRUgtIaulFIBQhO6UkoFCMc6RZs0aWLat2/v1O6VUqpOSk1NzTHGNK1smWMJvX379qSkpDi1e6WUqpNEZFtVy7TJRSmlAoQmdKWUChCa0JVSKkDoSFGlAlhxcTGZmZkUFNRkskjlD6KiomjdujXh4eFur1NtQrfnsxgO7DXGJFWyXLAmULoYaw7m64wxy9yOQCnlNZmZmcTGxtK+fXuOn81X+TNjDPv27SMzM5MOHTq4vZ47TS7vYM1+V5VhWLMEdgYmAq+6vXellFcVFBTQuHFjTeZ1jIjQuHHjGv+yqjahG2N+wLraS1VGAlONZTHWVVZa1CgKpZTXaDKvm07lffNEp2grjr/sVCbHX5JKqYCxNGM/w57/kZ0HazQ9uzpFGRkZJCWd0NKrquDTs1xEZKKIpIhISnZ2ti93rVStZR44wi3TUknfdYilGXpNBeV/PJHQszj+OoKtOf4ag8cYYyYbY5KNMclNm1Y6clUpv3SkqISJU1MpKikjNETYuOew0yEFnS1bttC3b1+WLFnC0KFD6d+/P2effTbr1q0jLy+PDh06UFxsXWzp0KFDxz0OFp5I6HOACWI5A8h1Yt5npbzFGMNfP1xJ+u5DvDC2L+0a1WfTXk3ovrR+/XquvPJK3nnnHe6//35efPFFUlNTefbZZ7ntttuIjY1lyJAhfPHFFwDMmDGDK664okan/AUCd05bnA4MAZq
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"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": 14,
"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>event_time</th>\n",
" <th colspan=\"8\" halign=\"left\">has_tv</th>\n",
" <th>...</th>\n",
" <th colspan=\"8\" halign=\"left\">id</th>\n",
" <th>prob_neighbor_spread</th>\n",
" <th>prob_tv_spread</th>\n",
" </tr>\n",
" <tr>\n",
" <th>agent_id</th>\n",
" <th>env</th>\n",
" <th>NewsEnvironmentAgent</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>...</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",
" <th>env</th>\n",
" <th>env</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</th>\n",
" <td>Spread_barabasi_albert_graph_prob_0.0_trial_Sp...</td>\n",
" <td>10</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>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>0.000000</td>\n",
" <td>0.010000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>Spread_barabasi_albert_graph_prob_0.0_trial_Sp...</td>\n",
" <td>10</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>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>0.000000</td>\n",
" <td>0.010000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>Spread_barabasi_albert_graph_prob_0.0_trial_Sp...</td>\n",
" <td>10</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>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>0.000000</td>\n",
" <td>0.010000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>Spread_barabasi_albert_graph_prob_0.0_trial_Sp...</td>\n",
" <td>10</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>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>0.000000</td>\n",
" <td>0.010000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>Spread_barabasi_albert_graph_prob_0.0_trial_Sp...</td>\n",
" <td>10</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>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>0.000000</td>\n",
" <td>0.010000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>5</th>\n",
" <td>Spread_barabasi_albert_graph_prob_0.0_trial_Sp...</td>\n",
" <td>10</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>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>0.000000</td>\n",
" <td>0.010000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>6</th>\n",
" <td>Spread_barabasi_albert_graph_prob_0.0_trial_Sp...</td>\n",
" <td>10</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>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>0.000000</td>\n",
" <td>0.010000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>7</th>\n",
" <td>Spread_barabasi_albert_graph_prob_0.0_trial_Sp...</td>\n",
" <td>10</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>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>0.000000</td>\n",
" <td>0.010000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>8</th>\n",
" <td>Spread_barabasi_albert_graph_prob_0.0_trial_Sp...</td>\n",
" <td>10</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>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>0.000000</td>\n",
" <td>0.010000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>9</th>\n",
" <td>Spread_barabasi_albert_graph_prob_0.0_trial_Sp...</td>\n",
" <td>10</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>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>0.000000</td>\n",
" <td>0.010000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>10</th>\n",
" <td>Spread_barabasi_albert_graph_prob_0.0_trial_Sp...</td>\n",
" <td>10</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>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>neutral</td>\n",
" <td>infected</td>\n",
" <td>infected</td>\n",
" <td>neutral</td>\n",
" <td>neutral</td>\n",
" <td>neutral</td>\n",
" <td>infected</td>\n",
" <td>1.000000</td>\n",
" <td>1.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>11</th>\n",
" <td>Spread_barabasi_albert_graph_prob_0.0_trial_Sp...</td>\n",
" <td>10</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>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>neutral</td>\n",
" <td>infected</td>\n",
" <td>infected</td>\n",
" <td>neutral</td>\n",
" <td>neutral</td>\n",
" <td>neutral</td>\n",
" <td>infected</td>\n",
" <td>0.900000</td>\n",
" <td>0.500000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>12</th>\n",
" <td>Spread_barabasi_albert_graph_prob_0.0_trial_Sp...</td>\n",
" <td>10</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>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>neutral</td>\n",
" <td>infected</td>\n",
" <td>infected</td>\n",
" <td>neutral</td>\n",
" <td>neutral</td>\n",
" <td>neutral</td>\n",
" <td>infected</td>\n",
" <td>0.810000</td>\n",
" <td>0.250000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>13</th>\n",
" <td>Spread_barabasi_albert_graph_prob_0.0_trial_Sp...</td>\n",
" <td>10</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>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>neutral</td>\n",
" <td>infected</td>\n",
" <td>infected</td>\n",
" <td>neutral</td>\n",
" <td>neutral</td>\n",
" <td>neutral</td>\n",
" <td>infected</td>\n",
" <td>0.729000</td>\n",
" <td>0.125000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>14</th>\n",
" <td>Spread_barabasi_albert_graph_prob_0.0_trial_Sp...</td>\n",
" <td>10</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>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>neutral</td>\n",
" <td>infected</td>\n",
" <td>infected</td>\n",
" <td>neutral</td>\n",
" <td>neutral</td>\n",
" <td>neutral</td>\n",
" <td>infected</td>\n",
" <td>0.656100</td>\n",
" <td>0.062500</td>\n",
" </tr>\n",
" <tr>\n",
" <th>15</th>\n",
" <td>Spread_barabasi_albert_graph_prob_0.0_trial_Sp...</td>\n",
" <td>10</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>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>neutral</td>\n",
" <td>infected</td>\n",
" <td>infected</td>\n",
" <td>neutral</td>\n",
" <td>neutral</td>\n",
" <td>neutral</td>\n",
" <td>infected</td>\n",
" <td>0.590490</td>\n",
" <td>0.031250</td>\n",
" </tr>\n",
" <tr>\n",
" <th>16</th>\n",
" <td>Spread_barabasi_albert_graph_prob_0.0_trial_Sp...</td>\n",
" <td>10</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>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>neutral</td>\n",
" <td>infected</td>\n",
" <td>infected</td>\n",
" <td>neutral</td>\n",
" <td>neutral</td>\n",
" <td>infected</td>\n",
" <td>infected</td>\n",
" <td>0.531441</td>\n",
" <td>0.015625</td>\n",
" </tr>\n",
" <tr>\n",
" <th>17</th>\n",
" <td>Spread_barabasi_albert_graph_prob_0.0_trial_Sp...</td>\n",
" <td>10</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>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>neutral</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>0.478297</td>\n",
" <td>0.007812</td>\n",
" </tr>\n",
" <tr>\n",
" <th>18</th>\n",
" <td>Spread_barabasi_albert_graph_prob_0.0_trial_Sp...</td>\n",
" <td>10</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>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>neutral</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>0.430467</td>\n",
" <td>0.003906</td>\n",
" </tr>\n",
" <tr>\n",
" <th>19</th>\n",
" <td>Spread_barabasi_albert_graph_prob_0.0_trial_Sp...</td>\n",
" <td>10</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>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>neutral</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>0.387420</td>\n",
" <td>0.001953</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"<p>20 rows × 1004 columns</p>\n",
"</div>"
],
"text/plain": [
"key SEED \\\n",
"agent_id env \n",
"t_step \n",
"0 Spread_barabasi_albert_graph_prob_0.0_trial_Sp... \n",
"1 Spread_barabasi_albert_graph_prob_0.0_trial_Sp... \n",
"2 Spread_barabasi_albert_graph_prob_0.0_trial_Sp... \n",
"3 Spread_barabasi_albert_graph_prob_0.0_trial_Sp... \n",
"4 Spread_barabasi_albert_graph_prob_0.0_trial_Sp... \n",
"5 Spread_barabasi_albert_graph_prob_0.0_trial_Sp... \n",
"6 Spread_barabasi_albert_graph_prob_0.0_trial_Sp... \n",
"7 Spread_barabasi_albert_graph_prob_0.0_trial_Sp... \n",
"8 Spread_barabasi_albert_graph_prob_0.0_trial_Sp... \n",
"9 Spread_barabasi_albert_graph_prob_0.0_trial_Sp... \n",
"10 Spread_barabasi_albert_graph_prob_0.0_trial_Sp... \n",
"11 Spread_barabasi_albert_graph_prob_0.0_trial_Sp... \n",
"12 Spread_barabasi_albert_graph_prob_0.0_trial_Sp... \n",
"13 Spread_barabasi_albert_graph_prob_0.0_trial_Sp... \n",
"14 Spread_barabasi_albert_graph_prob_0.0_trial_Sp... \n",
"15 Spread_barabasi_albert_graph_prob_0.0_trial_Sp... \n",
"16 Spread_barabasi_albert_graph_prob_0.0_trial_Sp... \n",
"17 Spread_barabasi_albert_graph_prob_0.0_trial_Sp... \n",
"18 Spread_barabasi_albert_graph_prob_0.0_trial_Sp... \n",
"19 Spread_barabasi_albert_graph_prob_0.0_trial_Sp... \n",
"\n",
"key event_time has_tv \\\n",
"agent_id NewsEnvironmentAgent 0 1 10 100 101 102 103 \n",
"t_step \n",
"0 10 True True True True True True True \n",
"1 10 True True True True True True True \n",
"2 10 True True True True True True True \n",
"3 10 True True True True True True True \n",
"4 10 True True True True True True True \n",
"5 10 True True True True True True True \n",
"6 10 True True True True True True True \n",
"7 10 True True True True True True True \n",
"8 10 True True True True True True True \n",
"9 10 True True True True True True True \n",
"10 10 True True True True True True True \n",
"11 10 True True True True True True True \n",
"12 10 True True True True True True True \n",
"13 10 True True True True True True True \n",
"14 10 True True True True True True True \n",
"15 10 True True True True True True True \n",
"16 10 True True True True True True True \n",
"17 10 True True True True True True True \n",
"18 10 True True True True True True True \n",
"19 10 True True True True True True True \n",
"\n",
"key ... id \\\n",
"agent_id 104 ... 92 93 94 95 96 97 \n",
"t_step ... \n",
"0 True ... neutral neutral neutral neutral neutral neutral \n",
"1 True ... neutral neutral neutral neutral neutral neutral \n",
"2 True ... neutral neutral neutral neutral neutral neutral \n",
"3 True ... neutral neutral neutral neutral neutral neutral \n",
"4 True ... neutral neutral neutral neutral neutral neutral \n",
"5 True ... neutral neutral neutral neutral neutral neutral \n",
"6 True ... neutral neutral neutral neutral neutral neutral \n",
"7 True ... neutral neutral neutral neutral neutral neutral \n",
"8 True ... neutral neutral neutral neutral neutral neutral \n",
"9 True ... neutral neutral neutral neutral neutral neutral \n",
"10 True ... infected neutral infected infected neutral neutral \n",
"11 True ... infected neutral infected infected neutral neutral \n",
"12 True ... infected neutral infected infected neutral neutral \n",
"13 True ... infected neutral infected infected neutral neutral \n",
"14 True ... infected neutral infected infected neutral neutral \n",
"15 True ... infected neutral infected infected neutral neutral \n",
"16 True ... infected neutral infected infected neutral neutral \n",
"17 True ... infected neutral infected infected neutral infected \n",
"18 True ... infected neutral infected infected neutral infected \n",
"19 True ... infected neutral infected infected neutral infected \n",
"\n",
"key prob_neighbor_spread prob_tv_spread \n",
"agent_id 98 99 env env \n",
"t_step \n",
"0 neutral neutral 0.000000 0.010000 \n",
"1 neutral neutral 0.000000 0.010000 \n",
"2 neutral neutral 0.000000 0.010000 \n",
"3 neutral neutral 0.000000 0.010000 \n",
"4 neutral neutral 0.000000 0.010000 \n",
"5 neutral neutral 0.000000 0.010000 \n",
"6 neutral neutral 0.000000 0.010000 \n",
"7 neutral neutral 0.000000 0.010000 \n",
"8 neutral neutral 0.000000 0.010000 \n",
"9 neutral neutral 0.000000 0.010000 \n",
"10 neutral infected 1.000000 1.000000 \n",
"11 neutral infected 0.900000 0.500000 \n",
"12 neutral infected 0.810000 0.250000 \n",
"13 neutral infected 0.729000 0.125000 \n",
"14 neutral infected 0.656100 0.062500 \n",
"15 neutral infected 0.590490 0.031250 \n",
"16 infected infected 0.531441 0.015625 \n",
"17 infected infected 0.478297 0.007812 \n",
"18 infected infected 0.430467 0.003906 \n",
"19 infected infected 0.387420 0.001953 \n",
"\n",
"[20 rows x 1004 columns]"
]
},
"execution_count": 14,
"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_1605820891-4782693.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": 15,
"metadata": {
"ExecuteTime": {
"end_time": "2017-10-19T15:59:17.153282Z",
"start_time": "2017-10-19T17:59:16.830872+02:00"
}
},
"outputs": [
{
"data": {
"text/plain": [
"<AxesSubplot:xlabel='t_step'>"
]
},
"execution_count": 15,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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np7OFVdcAYC3t7fVXt2mTRu++uqrS35vu3btIiQkhKZNmwIwatQoZs+efcnrUaVX2jsxXwW+EJEhxhhvoIYHYlLK9vz9/WncuDEbNmxgxIgRBAQEkJCQUGi+jh07kpiYyLp168jOznb54+f48eN5+OGHGTBgAOvWrWPKlClFbltEGD16NM8991yhadWqVbOuNfby8iIrK6tE709VDiVuQjHG+ANdgLcBROSCiKR4KC6lbM3b25ulS5fy/vvvs2LFCkJCQli8eDHgSLA//fSTNe+tt97KTTfdxO23326Ne/3113n99dcBSE1NpUGDBgC899571jwdO3Zk0aJFAKxatYpTp04B0LNnT2JjYzl27BgAJ0+eZP/+/UXG6+fnx+nTp4v13lq0aEFiYqLVVj5//vxiLac8rzRt4CFAMvCOMeZHY8xbxpiaHopLKdurWbMmK1asYMaMGQwfPpy3336byMhIQkNDWb58uTXfzTffzKlTpxg5cqQ1bteuXQQGBgIwZcoUhg4dSps2bahXr541z+TJk1m1ahVhYWEsXryYq666Cj8/P6699lqeeeYZ+vTpQ0REBL179+bw4cNFxjpixAimTZtGq1at3P6ImcvHx4fZs2fTv39/WrdubTXPqAogIiV6ANFAFtDe+fpV4P+5mG8MEAfENW7cWFTltWPHjooO4U9p8eLFMmrUqHzj+vfvL+fPny9yuYyMDMnMzBQRkY0bN0pkZGRZhajKkav/h0CcuMjDpWkDTwKSRGSz83Us8ISLL4jZwGyA6OhoKcX2lLrsjB8/ns8//5yVK1fmG79ixYqLLnvgwAGGDRtGTk4O3t7eLn8AVZe3EidwETlijPndGNNcRHYDPYGi7wRQSuUzc+bMEi/btGlTfvzxRw9G43Dffffx7bff5hv34IMP5mujV5VDaa9CGQ/Mc16B8hugn7BSNvfGG29UdAiqmEqVwEUkAUdbuFJKqXKmd2IqpZRNaQJXSimb0gSuKo309HS6du1qFV4qa++++y6HDh0qcp5XXnmFc+fOWa+vu+46UlJSyjQuYwyPPPKI9Xr69OkXvfuypLy8vIiKirIezz//fInWM2vWLN5//30PR+dZCQkJha72AbjhhhuIiYkps+0WPM5GjBjBnj17PLJuTeCq0pg7dy6DBw/Gy8urXLZXkgS+cuVKAgICyjSu6tWrs2TJEquyYFny9fUlISHBejzxRKErgYtl7Nix3HrrrYXGV6Zb9V0l8JSUFOLj40lNTeW3334rk+0WPM7uvfdeqyBZaWkCV5XGvHnzGDhwoPV62rRptG3bloiICCZPngzAE088ke8qiSlTpjB9+nS38ycmJtKyZUvuvvtuQkND6dOnD+np6cTGxhIXF8fNN99MVFQU6enpheJ57bXXOHToEN27d6d79+4ABAcHc/z4cRITE2nRogW33XYbzZo14+abb2b16tV07NiRpk2b8v333wOO6n933HEH7dq1o1WrVvnuwHSnatWqjBkzhhkzZhSalpyczI033kjbtm1p27atdblfeHg4KSkpiAiBgYHW2fCtt97KV199xfbt263yshERERc9AwwODmby5Mm0bt2a8PBwdu3aRU5ODsHBwfn+AmnatClHjx7N9zl069aNhx56iOjoaF599VXWrFlDq1atCA8P54477rAKebn
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"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` is cluttering our results, "
]
},
{
"cell_type": "code",
"execution_count": 16,
"metadata": {
"ExecuteTime": {
"end_time": "2017-10-19T15:59:18.418348Z",
"start_time": "2017-10-19T17:59:18.143443+02:00"
}
},
"outputs": [
{
"data": {
"text/plain": [
"<AxesSubplot:xlabel='t_step'>"
]
},
"execution_count": 16,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"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": 19,
"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 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"analysis.get_count(agents, 'id').plot();"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Dealing with bigger data"
]
},
{
"cell_type": "code",
"execution_count": 20,
"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": 21,
"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": [
"215M\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": 31,
"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": "iVBORw0KGgoAAAANSUhEUgAAAXcAAAEXCAYAAABWNASkAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjMuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8vihELAAAACXBIWXMAAAsTAAALEwEAmpwYAABNEUlEQVR4nO3dd3hUZfbA8e+Zll5ISEInIC10IlWqoNh+thW7FBvqumtZddVd1rJr21UXu6su6KrYe18sIGBZmoC0CCItCS29Z8r7+2MmMYEkhDCTSSbn8zzzzMyt5w7hzDvvfe+5YoxBKaVUaLEEOwCllFL+p8ldKaVCkCZ3pZQKQZrclVIqBGlyV0qpEKTJXSmlQpAmd9ViiMgsEVnWwPzFInJFPfO6iUixiFgDF2HLIyJ3icjLwY5DtTya3FVIMMbsNMZEG2Pc0PAXgVJtgSZ31WxExBbsGJRqKzS5q4ASke0icquIrANKRGSOiPwsIkUislFEzj50FXlCRApEZLOITDlo/jEislxECkXkfRFJ8K2UKiJGRGwici8wHnjC11XzhHjNFZF9vnV/FJGBh4k9TEQeEpGdIrJXRP4lIhG+eZ+IyMM1ln1NROb7Xh8jIl+JSI6IHBCRBSISf9BncouIrBOREhGZJyIpIvKp73P5QkTaHXRcs0UkS0SyReTmBmIeLSLfiki+iKwVkUkN/wupkGWM0Yc+AvYAtgNrgK5ABHAu0Alvw+J8oATo6Ft2FuACbgTsvvkFQIJv/mIgExgIRAFvAy/75qUCBrDVWPaKGnGcBKwC4gEB0qr220Dsc4EPgAQgBvgQuN83rwOwD5gMXAxsA2J883oBJwJhQBKwBHjkoM/keyAF6OzbzmpgGBAOfAXcedBxveo75kHAfuAE3/y7anwGnYEc4FTf53ui731SsP8O9NH8D225q+bwmDFmlzGmzBjzpjEmyxjjMca8DmwBRtZYdh/eROj0zc8ATqsx/yVjzHpjTAnwF+C8Rp5EdeJN0P0AMcZsMsZk17ewiAgwG7jRGJNrjCkC7gMuADDG7AGuAf4DPArM8C2DMWarMeZzY0yFMWY/8E9g4kG7eNwYs9cYkwksBf5njPnBGFMOvIs30dd0tzGmxBjzI/A8cGEdYV8CfGKM+cT3+X4OrMSb7FUbo8ldNYddVS9EZIaIrPF1G+TjbYW3r7FspjGmZjW7HXhb+odsyzfPftD6dTLGfAU8ATwJ7BORZ0UktoFVkoBIYFWNWD/zTa/yIWAFMowx1aN8fF0sr4lIpogUAi/XEePeGq/L6ngffdDyBx93Jw7VHTi3Kl5fzOOAjg0cpwpRmtxVczAAItIdeA74HZBojIkH1uPtJqnS2ddqrtINyKrxvutB85zAgfr2WWuCMY8ZY44F+gN9gFsaiPkA3iQ7wBgT73vEGWNqJt17gU1ARxGp2ZK+z7f/QcaYWLwt6prH1BQHH3dWHcvswvvLJr7GI8oY88BR7lu1QprcVXOKwpv09gOIyKV4W+41JQPXiYhdRM7F2zf+SY35l4hIfxGJBP4KvGV8wx8PshfoWfVGREaIyCgRsePt5y8HPPUFaozx4P0imisiyb5tdBaRk3yvJwCXAjOAmcDjItLZt3oMUAwU+KY19CXSWH8RkUgRGeDb7+t1LPMycLqInCQiVhEJF5FJItLFD/tXrYwmd9VsjDEbgYeB7/Am30HANwct9j+gN96W873ANGNMTo35LwEvAHvwnny8rp7dPQpME5E8EXkMiMWbrPPwdmvkAA8eJuRbga3A977ulS+Avr7unBeB3xljMo0xS4F5wPO+Xx13A+l4TwZ/DLxzmP00xte+WL4EHjLGLDx4AWPMLuBM4E94v0B34f1i0f/nbZDU7t5USrUkIpIK/ALYjTGuIIejWhH9RldKqRCkyV21aSKywXeh08GPi4Mdm1JHQ7tllFIqBGnLXSmlQpAmd6WUCkEtokpf+/btTWpqarDDUEqpVmXVqlUHjDFJdc1rEck9NTWVlStXBjsMpZRqVURkR33ztFtGKaVCkCZ3pZQKQZrclVIqBGlyV0qpEKTJXSmlQpAmd6WUCkGa3JVSKgS1iHHuTbVo5yLu+u6uYIeh/GBI0hBmD57NwPYH37tDKdUUrTq5p0SlcGL3E4MdhjpKTo+TL3Z8wYUfX8jYTmO5cvCVHJtybLDDUqpVaxFVIYcPH270CtW2rcRZwusZr/OfDf8htzyXY1OO5arBVzG642hq31JVKVVFRFYZY4bXOU+Tu2pJylxlvLPlHeavn8++0n0Mbj+YKwdfycQuEzXJK3UQTe6q1al0V/L+z+8z78d5ZBZn0rddX2YPns0J3U/AIjoOQCnQ5K5aMafHyae/fMpz655je+F2esb15IpBV3BKj1OwWVr1KSOljpomd9XquT1uPt/5Oc+ue5YteVvoEt2FKwZdwRnHnIHdag92eEoFhSZ3FTI8xsPXu77m2XXPsj5nPSmRKVw28DJ+0/s3hNvCgx2eUs1Kk7sKOcYYvsv6jmfWPcPqfatJDE9k1oBZnNf3PCLtkcEOT6lmocldhbSVe1by7Lpn+S77O+LC4pieNp0p3aYE/cRr19iu2C3aZaQCR5O7ahPW7V/Hc+ueY/HuxcEOBYC0hDTmnzSfaEd0sENRIUqTu2pTtuRt4ef8n4Maw4GyAzy88mGO7XAsT095Wk/6qoBoKLnrWDIVcnq3603vdr2DHQYxjhjmfDOHOd/M4f7x9we9m0i1LZrclQqQM3udyf6y/Ty6+lGSI5O5afhNwQ5JtSGa3JUKoMsHXs7ekr28sOEFkiOTmd5/erBDUm2EJnelAkhEuG3kbeSU5/CPFf8gKSKJk3ucHOywVBugyV2pALNarNw//n5yynL407I/kRCewMiOI4Mdlgpxhz3DIyJdRWSRiGwUkQ0icr1veoKIfC4iW3zP7XzTRUQeE5GtIrJORNIDfRBKtXRh1jAem/wY3WO7c/2i68nIzQh2SCrEHXYopIh0BDoaY1aLSAywCjgLmAXkGmMeEJHbgHbGmFtF5FTg98CpwCjgUWPMqIb2oUMhVVuxp2QPF39yMcYY/jTqT369yMlusTO8w3AcVofftqlaNr+OcxeR94EnfI9Jxphs3xfAYmNMXxF5xvf6Vd/yGVXL1bdNTe6qLdmSt4WZn82kqLLI79vu064P9427j74Jff2+bdXy+G2cu4ikAsOA/wEpNRL2HiDF97ozsKvGart90+pN7kq1Jb3b9eaTsz8hszjTr9v9pfAXHl75MBd8fAG/HfJbLh14qZZFbsMa/S8vItHA28ANxpjCmnfFMcYYETminwAiMhuYDdCtW7cjWVWpVi8+PJ748Hi/bnNA+wGM6zSOe/53D4/98BiLdy/m3rH3khqX6tf9qNahUZfMiYgdb2JfYIx5xzd5r687pqpffp9veibQtcbqXXzTajHGPGuMGW6MGZ6UlNTU+JVSNcSHx/PQxIf4x4R/sL1gO+d+eC6vbHoFj/EEOzTVzBozWkaAecAmY8w/a8z6AJjpez0TeL/G9Bm+UTOjgYKG+tuVUv53So9TePfMdxneYTj3L7+f2Z/PJrtY/xu2JY1puY8FpgOTRWSN73Eq8ABwoohsAU7wvQf4BNgGbAWeA37r/7CVUoeTHJnMU1Oe4s4xd/Lj/h/5zQe/4f2t79MSigWqwNOqkEq1AbuKdjFn2RxW71vN8V2PZ+aAmYRZw/y6j3bh7egc3dmv21QN05K/SincHjcvb3qZx1Y/RqWn0u/bt1vsfH3+18Q4Yvy+bVU3LfmrlMJqsTJzwEymdJvCtoJtft32uv3reGbdM+wu2k1aYppft62aRpO7Um1Ml5gudInp4tdtto9ozzPrniGrOEuTewuhdw9QSh21qr52f1+YpZpOk7tS6qjFOmKJskeRVZIV7FCUjyZ3pdRRExE6RXfSlnsLosldKeUXnaM6k1WsLfeWQpO7UsovOkV3Iqs4Sy+SaiE0uSul/KJTdCeKncUUVhYGOxSFJnellJ9UjZjRrpmWQZO7UsovOkV3AmB38e4gR6JAk7tSyk+6xngrfe8q2nWYJVVz0OS
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"p = analysis.plot_all('../rabbits/soil_output/rabbits_example/', analysis.get_count, 'id')"
]
},
{
"cell_type": "code",
"execution_count": 60,
"metadata": {
"ExecuteTime": {
"end_time": "2017-10-19T16:00:38.434367Z",
"start_time": "2017-10-19T18:00:33.645762+02:00"
}
},
"outputs": [],
"source": [
"df = analysis.read_sql('../rabbits/soil_output/rabbits_example/rabbits_example_trial_1605825338-8931234.sqlite', keys=['id', 'rabbits_alive'])"
]
},
{
"cell_type": "code",
"execution_count": 61,
"metadata": {
"ExecuteTime": {
"end_time": "2017-10-19T16:00:39.160418Z",
"start_time": "2017-10-19T18:00:38.436153+02:00"
},
"scrolled": true
},
"outputs": [
{
"data": {
"text/plain": [
"<AxesSubplot:xlabel='t_step'>"
]
},
"execution_count": 61,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"states = analysis.get_count(df, 'id')\n",
"states.plot()"
]
},
{
"cell_type": "code",
"execution_count": 62,
"metadata": {
"ExecuteTime": {
"end_time": "2017-10-19T16:00:39.515032Z",
"start_time": "2017-10-19T18:00:39.162240+02:00"
}
},
"outputs": [
{
"data": {
"text/plain": [
"<AxesSubplot:xlabel='t_step'>"
]
},
"execution_count": 62,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"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": 63,
"metadata": {
"ExecuteTime": {
"end_time": "2017-10-19T16:00:58.815038Z",
"start_time": "2017-10-19T18:00:58.566807+02:00"
}
},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"/home/j/.local/lib/python3.8/site-packages/pandas/core/reshape/merge.py:643: UserWarning: merging between different levels can give an unintended result (1 levels on the left,2 on the right)\n",
" warnings.warn(msg, UserWarning)\n"
]
},
{
"data": {
"image/png": "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
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"h = alive.join(states);\n",
"h.plot();"
]
}
],
"metadata": {
"kernelspec": {
"display_name": ".venv",
"language": "python",
"name": "python3"
},
"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
},
"vscode": {
"interpreter": {
"hash": "3581132406f7320837865a422f37590c78ed7dabfbcb5bc7771b9d116b13a5cf"
}
}
},
"nbformat": 4,
"nbformat_minor": 2
}