Project is created as part of subject: Team student projects Faculty of Physics
Programs in Python that simulate dynamical systems that have a critical point as an attractor. So called self-organized criticality(SOC)
Self-organized criticality wiki:
In physics, self-organized criticality (SOC) is a property of dynamical systems that have a critical point as an attractor. Their macroscopic behavior thus displays the spatial or temporal scale-invariance characteristic of the critical point of a phase transition, but without the need to tune control parameters to a precise value, because the system, effectively, tunes itself as it evolves towards criticality.
The concept was put forward by Per Bak, Chao Tang and Kurt Wiesenfeld ("BTW") in a paper published in 1987 in Physical Review Letters, and is considered to be one of the mechanisms by which complexity arises in nature. Its concepts have been enthusiastically applied across fields as diverse as geophysics, physical cosmology, evolutionary biology and ecology, bio-inspired computing and optimization (mathematics), economics, quantum gravity, sociology, solar physics, plasma physics, neurobiology and others.
SOC is typically observed in slowly driven non-equilibrium systems with a large number of degrees of freedom and strongly nonlinear dynamics. Many individual examples have been identified since BTW's original paper, but to date there is no known set of general characteristics that guarantee a system will display SOC.
Project folder structure is inspired by these sources: sources1 source2 and Kwant project.
- docsrc - holds Sphinx scripts used for documentation generation.
- docs - GitHub configuration folder, which holds web-page of project.
- resource - Non executable files.
- results - folder used for holding results of simulation, Jupiter notebooks and different use cases.
- SOC - main project folder, which holds all source code.
- models - contains different SOC models, like: Abelian sandpile model, forest-fire model, etc..
- common - common code between all models
- tests - unit tests of code
Mostly numerical libraries, visualsation, web page generation etc. For whole list take a look at requirements.txt
Program is designed in next way:
- Framework part - placed under
SOC
folder. - Research part - consists of jupyter notebooks(which can be easily deployed to web-page) and is placed under
research folder
use python setup.py develop
to install a basic set of dependencies and link the package to be importable in your current Python environment.
To make folder SOC an import package, run only once:
python setup.py develop
After that, simply use pytest SOC
to automatically find and execute all existing test cases.
Web page is generated using Sphinx library.
Under terminal enter into docsrc
folder and type:
make html
Web-page will be generated into ./docsrc/build/html
folder.
If you want to update web-page, copy generated web-page into /docs
folder.
Click the model's name for more examples:
- Make wide coverage of all self-organized criticality models.
- Figuring out the best algorithms.
- Using some best practice of programming:
- Coding conventions
- Unit Tests.
- Creation of common modules.
- Automatic documentation generation.
- Readability of code and easy of use(between clarity and speed, we should choose clarity).
Here are described code formatting style and other conventions, to make code more uniform. Also this section is for newcomers and contributors.
SocSim uses the lovely PyTest for its unit testing needs. Tests are run automatically on every commit using TravisCI.
Most popular documentation generator for Python - Sphinx. Good tutorial about using Sphinx here. Here is example of good Google style docstring standardized by PEP-484.
pip install -U sphinx
pip install sphinx_rtd_theme
pip install nbsphinx
Dependencies of sphinx: recommonmark
.
- How we can apply Keras? Predictions, finding hidden parameters, etc.
- More tests for the batch processes running (Dask)
- Convenient selection of different boundary conditions of a system (lattice)
- Parametrization of the earthquake model for the coverage of wider selection of submodels (by including eg.: drive with random loading, toppling to the neighbours in a specific state (crack model), delay of the fracture initiation, threshold for the fracture propagation) like in Lomnitz-Adler (1993)
- Database of the simulations
- Bak, P., Tang, C. and Wiesenfeld, K. (1987). "Self-organized criticality: an explanation of 1/f noise". Physical Review Letters. 59 (4): 381–384. Bibcode:1987PhRvL..59..381B. doi:10.1103/PhysRevLett.59.381. PMID 10035754. Papercore summary: http://papercore.org/Bak1987.
- Abelian sandpile model
- Forest-fire model
- Theoretical Models of Self-Organized Criticality (SOC) Systems
- Pink noise
- Introduction to Self-Organized Criticality & Earthquakes
- 25 Years of Self-Organized Criticality: Solar and Astrophysics
- SOC computer simulations
- Theoretical Models of SOC Systems