Commit Graph

43 Commits (cc238d84ec481b4e5544efdbd69253977541aa57)

Author SHA1 Message Date
J. Fernando Sánchez cc238d84ec Pre-release version of v1.0 1 year ago
J. Fernando Sánchez feab0ba79e Large set of changes for v0.30
The examples weren't being properly tested in the last commit. When we fixed
that a lot of bugs in the new implementation of environment and agent were
found, which accounts for most of these changes.

The main difference is the mechanism to load simulations from a configuration
file. For that to work, we had to rework our module loading code in
`serialization` and add a `source_file` attribute to configurations (and
simulations, for that matter).
1 year ago
J. Fernando Sánchez 73282530fd Big refactor v0.30
All test pass, except for the TestConfig suite, which is not too critical as the
plan for this version onwards is to avoid configuration as much as possible.
1 year ago
J. Fernando Sánchez 2869b1e1e6 Clean-up
* Removed old/unnecessary models
* Added a `simulation.{iter_}from_py` method to load simulations from python
files
* Changed tests of examples to run programmatic simulations
* Fixed programmatic examples
2 years ago
J. Fernando Sánchez a1262edd2a Refactored time
Treating time and conditions as the same entity was getting confusing, and it
added a lot of unnecessary abstraction in a critical part (the scheduler).

The scheduling queue now has the time as a floating number (faster), the agent
id (for ties) and the condition, as well as the agent. The first three
elements (time, id, condition) can be considered as the "key" for the event.

To allow for agent execution to be "randomized" within every step, a new
parameter has been added to the scheduler, which makes it add a random number to
the key in order to change the ordering.

`EventedAgent.received` now checks the messages before returning control to the
user by default.
2 years ago
J. Fernando Sánchez 159c9a9077 Add events 2 years ago
J. Fernando Sánchez 880a9f2a1c black formatting 2 years ago
J. Fernando Sánchez 227fdf050e Fix conditionals 2 years ago
J. Fernando Sánchez 5d759d0072 Add conditional time values 2 years ago
J. Fernando Sánchez 0efcd24d90 Improve exporters 2 years ago
J. Fernando Sánchez 78833a9e08 Formatted with black 2 years ago
J. Fernando Sánchez d9947c2c52 WIP: all tests pass
Documentation needs some improvement

The API has been simplified to only allow for ONE topology per
NetworkEnvironment.
This covers the main use case, and simplifies the code.
2 years ago
J. Fernando Sánchez cd62c23cb9 WIP: all tests pass 2 years ago
J. Fernando Sánchez f811ee18c5 WIP 2 years ago
J. Fernando Sánchez 0a9c6d8b19 WIP: removed stats 2 years ago
J. Fernando Sánchez 3dc56892c1 WIP: working config 2 years ago
J. Fernando Sánchez e41dc3dae2 WIP 2 years ago
J. Fernando Sánchez bbaed636a8 WIP 2 years ago
J. Fernando Sánchez 6f7481769e WIP 2 years ago
J. Fernando Sánchez 1a8313e4f6 WIP 2 years ago
J. Fernando Sánchez 50cba751a6 Release 0.20.6 2 years ago
J. Fernando Sánchez 2116fe6f38 Bug fixes and minor improvements 2 years ago
J. Fernando Sánchez 6c4f44b4cb Partial MESA compatibility and several fixes
Documentation for the new APIs is still a work in progress :)
3 years ago
J. Fernando Sánchez 5d7e57675a WIP: mesa compatibility 3 years ago
J. Fernando Sánchez e860bdb922 v0.15.2
See CHANGELOG.md for a complete list of changes
3 years ago
J. Fernando Sánchez 05f7f49233 Refactoring v0.15.1
See CHANGELOG.md for a full list of changes

* Removed nxsim
* Refactored `agents.NetworkAgent` and `agents.BaseAgent`
* Refactored exporters
* Added stats to history
4 years ago
J. Fernando Sánchez 6118f917ee Fix Windows bug
Update URLs to gsi.upm.es
4 years ago
J. Fernando Sánchez 6adc8d36ba minor change in docs 4 years ago
J. Fernando Sánchez 97835b3d10 Clean up exporters 5 years ago
J. Fernando Sánchez d1006bd55c WIP: exporters 5 years ago
J. Fernando Sánchez 9bc036d185 WIP: exporters 5 years ago
J. Fernando Sánchez 09e14c6e84 Add generator and programmatic examples 5 years ago
J. Fernando Sánchez 9749f4ca14 Fix multithreading
Multithreading needs pickling to work.
Pickling/unpickling didn't work in some situations, like when the
environment_agents parameter was left blank.
This was due to two reasons:

1) agents and history didn't have a setstate method, and some of their
attributes cannot be pickled (generators, sqlite connection)
2) the environment was adding generators (agents) to its state.

This fixes the situation by restricting the keys that the environment exports
when it pickles, and by adding the set/getstate methods in agents.

The resulting pickles should contain enough information to inspect
them (history, state values, etc), but very limited.
6 years ago
J. Fernando Sánchez 2e28b36f6e Python3.7, testing and bug fixes
* Upgrade to python3.7 and pandas 0.3.4 because pandas has dropped support for
python 3.4 -> There are some API changes in pandas, and I've update the code
accordingly.
* Set pytest as the default test runner
6 years ago
J. Fernando Sánchez ff1df62eec All tests pass 6 years ago
J. Fernando Sánchez 9165979b49 merge visualization branch
The web server is included as a submodule.
The dependencies for the web (tornado) are not installed by default, but they
can be installed as an extra:

```
pip install soil[web]
```

Once installed, the soil web can be used like this:

```
soil-web

OR

python -m soil.web
```

There are other minor changes:

* History re-connects to the sqlite database if it is used from a different
thread.
* Environment accepts additional parameters (so it can run simulations with
`visualization_params` or any other in the future).
* The simulator class is no longer necessary
* Logging is done in the same thread, and the simulation is run in a separate
one. This had to be done because it was creating some problems with tornado not
being able to find the current thread during logs, which caused hundreds of
repeated lines in the web "console".
* The player is slightly modified in this version. I noticed that when the
  visualization was playing, if you clicked somewhere it would change for a
  second, and then go back to the previous place. The code for the playback
  seemed too complex, especially speed control, so I rewrote some parts. I
  might've introduced new bugs.
6 years ago
J. Fernando Sánchez fc48ed7e09 Added history class
Now the environment does not deal with history directly, it delegates it to a
specific class. The analysis also uses history instances instead of either
using the database directly or creating a proxy environment.

This should make it easier to change the implementation in the future.

In fact, the change was motivated by the large size of the csv files in previous
versions. This new implementation only stores results in deltas, and it fills
any necessary values when needed.
6 years ago
J. Fernando Sánchez 497c8a55db Add workaround for geometric models
Closes soil/soil#4
6 years ago
J. Fernando Sánchez 7d1c800490 Parallelism and granular exporting options
* Graphs are not saved by default (not backwards compatible)
* Modified newsspread examples
* More granular options to save results (exporting to CSV and GEXF are now
optional)
* Updated tutorial to include exporting options
* Removed references from environment to simulation
* Added parallelism to simulations (can be turned off with a flag or argument).
7 years ago
J. Fernando Sánchez a7c51742f6 Improved docs
Fixed several bugs
Added convenience methods in soil.analysis
7 years ago
J. Fernando Sánchez 78364d89d5 Fix gephi representation. Add sqlite 7 years ago
J. Fernando Sánchez af76f54a28 Added rabbits 7 years ago
J. Fernando Sánchez e1be3a730e WIP soil
* Pandas integration
* Improved environment
* Logging and data dumps
* Tests
* Added Finite State Machine models
* Rewritten ipython notebook and documentation
7 years ago