Skip to content

Repository files navigation

#+options: num:nil
* Welcome to Plexsim!

Fast and general  toolbox for simulation of complex adaptive  systems written in
cython. It provides:

- *Fast* general modeling framework for many classical dynamics (see docs)
- Readable
  - Coding  for  humans.  Leverages  cython  readability  and  allows  for  free
    development in python
- *Extensability*
  - Extensions can be written in python or cython directly
- *Quick development time*
  + quickly implement an idea in python and slowly convert the problem to cython (compiled-based)
- *Graph-based*
  - Simulate your favorite dynamics on any networks structure
- *Graph-free*
  + For  spatio-temporal models  the  framework  allows for  using  agent-based
   simulation free of static structures


*N.b.*   this    is   a   work   in   progress.    Docs   are   hosted
[[https://cvanelteren.github.io/PlexSim/][here]],      please       see      the
[[https://cvanelteren.github.io/PlexSim/build/html/quickstart.html][quickstart]] in the docs.




* Showcase
#+attr_html: :alt  :align center :class img
[[file:./docs/src/figures/new_banner.gif]]
Example systems. Each subplot contains a lattice graph (64x64 = 4096 nodes) simulated for different dynamics. See the docs page the available models.


* Installation
- Clone the repo ~git clone git@github.com:cvanelteren/PlexSim.git && cd Plexsim~
- Install the requirements ~pip install --file requirements.txt~
  
Current  versions are  developed on  ~linux~.

* Troubleshooting
*** Mac
It is  known that compiling  with cython  on mac is  difficult due to  the ~gcc~
compiler being replaced with ~clang~ on  apple. This toolbox depends on ~openmp~
and this could cause problems on MacOS.


*** GCC versions
The codebase  is tested and  developed on ~gcc  = 10.2.0~; higher  versions give
symbol errors at the time of writing.

* License
PlexSim is released under the GNU-GPLv3 license

Powered by
#+attr_html: :alt  :align right :class img
[[file:./docs/src/figures/cython_logo.svg]]

* Notes
Cannot have static pyobjects, this causes a segfault in pybind11. 
Use atexit for cleaning them up.


About

A toolbox for complex adaptive systems

Resources

Stars

1 star

Watchers

2 watching

Forks

Releases

Packages

Contributors

Languages