You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
* improve version docs
* remove outdated donation information
* add two more packages to the ecosystem
* update reinventing the wheel goal
* finish updatupdatee tuytorial
* add periodicorbits.jl part 1
* improve how to cite
* add periodic orbits
* update changelog
* use signal decomposition
* add new packages to the docs
* fix missing docs
* change parallelization to oh my threads
Copy file name to clipboardExpand all lines: README.md
+12-1Lines changed: 12 additions & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -23,7 +23,7 @@ Aspects of **DynamicalSystems.jl** that make it stand out among other codebases
23
23
-**Extensive content**. It aims to cover the entire field of nonlinear dynamics and nonlinear timeseries analysis. It has functionality for complexity measures, delay embeddings, periodic orbits, nonlocal stability analysis, continuation, chaos, fractal dimensions, surrogate testing, recurrence quantification analysis, and much more. Furthermore, all algorithms are "general" and work for any dynamical system applicable. Missing functionality that falls under this wide category of content is welcomed to be part of the library!
24
24
-**Well tested**. All implemented functionality is extensively tested. Each time any change in the code base is done, the extensive test suite is run and checked before merging the change in.
25
25
-**Extendable**. New contributions can become part of the library and be accessed by all users in the next release. Most importantly, all parts of the library follow professional standards in software design and implement extendable interfaces so that it is easy to contribute new functionality.
26
-
-**Active development**. It is a living, evolving project. Since its beginning in May 2017, **DynamicalSystems.jl** has had some activity every single month: new features, bugfixes. The developer team routinely answers users questions on official Julia language forums.
26
+
-**Active development**. It is a living, evolving project. Since its beginning in May 2017, **DynamicalSystems.jl** has had some activity every single month: new features, new packages, bugfixes. The developer team routinely answers users questions on official Julia language forums.
27
27
-**Performant**. Written entirely in Julia, heavily optimized and parallelized, and taking advantage of some of the best packages within the language, **DynamicalSystems.jl** is _really fast_.
28
28
29
29
## Goals
@@ -54,3 +54,14 @@ You see, it is unfortunately rarely the case that real, _runnable_ code is shown
54
54
55
55
**DynamicalSystems.jl** provides teachers with a framework capable of demonstrating actual, real-world nonlinear dynamics code and its output, without having to invest the weeks to code the internal infrastructure themselves.
56
56
Its high level syntax requires writing little code to get lots of meaningful analysis done, while its extensive functionality covers most typical classroom applications.
57
+
58
+
### Goal 4: Stopping the endless re-invention of wheel
59
+
60
+
Because Nonlinear Dynamics as a field lacks a general purpose and "widely accepted" software, almost every software implementation starts from scratch.
61
+
While doing so much of the code written actually implements functionality that already exists in some other codebase for nonlinear dynamics.
62
+
This is astonishingly, and shamefully, prevalent in nonlinear dynamics, where up to 90% of the functionality of a codebase may already exist somewhere else.
63
+
Needless to say this is just an absolute waste of time!
64
+
65
+
**DynamicalSystems.jl** hopes to establish itself as the central software for nonlinear dynamics, from which new algorithms can be implementing.
66
+
Re-using all the well-thought out interfaces and functionality means that one does not have to waste time writing code for functionality that already exists.
67
+
Rather, they can focus on coding only the _new_ stuff!
Copy file name to clipboardExpand all lines: docs/src/index.md
+19-23Lines changed: 19 additions & 23 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -49,21 +49,25 @@ The materials of the course are on GitHub: <https://github.com/JuliaDynamics/Non
49
49
50
50
If using **DynamicalSystems.jl** resulted in a publication with references, we kindly ask that you give appropriate credit in three ways:
51
51
52
-
1. Cite the whole **DyamicalSystems.jl** ecosystem by citing the associated DOI `10.21105/joss.00598` (and see below for a BiBTeX entry). Even if you did not use **DynamicalSystems.jl** directly, but only a subcomponent, we still strongly encourage to cite **DynamicalSystems.jl** as well. More citations enable us to obtain funding to maintain and further develop **DynamicalSystems.jl** and the central citation associated with this effort is that assigned to the top-level `DynamicalSystems` module.
53
-
2. Cite the submodule (or subpackage, or subcomponent) that you used directly, if it has an associated publication (see example below).
52
+
1. Cite the whole **DyamicalSystems.jl** ecosystem by citing the associated DOI `10.21105/joss.00598` (and see below for a BiBTeX entry). Even if you did not use **DynamicalSystems.jl** directly, but only a subpackage, we still strongly encourage to cite **DynamicalSystems.jl** as well. More citations enable us to obtain funding to maintain and further develop **DynamicalSystems.jl** and the central citation associated with this effort is that assigned to the top-level `DynamicalSystems` module.
53
+
2. Cite the subpackage that you used directly, if it has an associated publication (see example below).
54
54
3. Cite the specific algorithm(s) you used to also give credit to the originators of the methods.
55
55
56
56
For example, a typical citation that gives proper credit to using **DynamicalSystems.jl** could be:
57
57
58
-
> For our work we used the Sample Entropy `\cite{@SampleEntropy}` that is implemented in the ComplexityMeasures.jl component`\cite{ComplexityMeasures}` of the DynamicalSystems.jl library `\cite{DynamicalSystems}`.
58
+
> For our work we used the Sample Entropy `\cite{Richman2000}` that is implemented in the ComplexityMeasures.jl package`\cite{ComplexityMeasures}` of the DynamicalSystems.jl library `\cite{DynamicalSystems}`.
59
59
60
-
or, one more example:
60
+
or,
61
61
62
-
> For the surrogates for the atmospheric temperature timeseries we used the random cascade surrogates `\cite{Palus2008} that is implemented in the TimeseriesSurrogates.jl component `\cite{TimeseriesSurrogates}` of the DynamicalSystems.jl library `\cite{DynamicalSystems}`.
62
+
> For the surrogates for the atmospheric temperature timeseries we used the random cascade surrogates `\cite{Palus2008}` that is implemented in the TimeseriesSurrogates.jl package `\cite{TimeseriesSurrogates}` of the DynamicalSystems.jl library `\cite{DynamicalSystems}`.
63
+
64
+
or,
65
+
66
+
> We find the attractors of the dynamical systems using the recurrences algorithm `\cite{Datseris2022}` that is implemented in the Attractors.jl package `\cite{Attractors}` of the DynamicalSystems.jl library `\cite{DynamicalSystems}`.
63
67
64
68
To find the specific references associated with the subpackages visit their respective dedicated documentation pages.
65
69
66
-
Besides the library, you may find useful the Nonlinear Dynamics textbook that utilizes **DynamicalSystems.jl**, which you can cite as:
70
+
Besides the library, you may also find useful the Nonlinear Dynamics textbook that utilizes **DynamicalSystems.jl**, which you can cite as:
67
71
68
72
```
69
73
@book{DatserisParlitz2022,
@@ -86,28 +90,19 @@ There are three options for asking questions:
86
90
2. As a message in our channel `#dynamics-bridged` in the [Julia Slack](https://julialang.org/slack/) workplace. This option is preferred for a brief question with (expected) simple answer, or to get an opinion about something, or to chat about something.
87
91
3. By opening an issue directly on the [GitHub page of DynamicalSystems.jl](https://github.com/JuliaDynamics/DynamicalSystems.jl) while providing a Minimal Working Example. This option is preferred when you encounter unexpected behavior.
88
92
89
-
## Contributing & Donating
93
+
## Contributing
90
94
91
95
Be sure to visit the [Contributor Guide](@ref) page, because you can help make this package better without having to write a single line of code! Also, if you find this package helpful please consider staring it on [GitHub](https://github.com/JuliaDynamics/DynamicalSystems.jl)! This gives us an accurate lower bound of users that this package has already helped!
92
96
93
-
Finally, you can donate for the development of **DynamicalSystems.jl**. You can do that by adding bounties to existing issues on the GitHub repositories (you can open new issues as well). Every issue has an automatic way to create a bounty using [Bountysource](https://www.bountysource.com/), see the first comment of each issue.
94
-
95
-
### Issues with Bounties
96
-
97
-
Money that **DynamicalSystems.jl** obtains from awards, sponsors, or donators are converted into bounties for GitHub issues. The full list of issues that have a bounty is [available here](https://github.com/issues?utf8=%E2%9C%93&q=is%3Aopen+is%3Aissue+org%3AJuliaDynamics+label%3Abounty).
98
-
99
-
By solving these issues you not only contribute to open source, but you also get some pocket money to boot :)
100
-
101
-
102
97
## Maintainers and Contributors
103
98
104
99
The **DynamicalSystems.jl** library is maintained by [George Datseris](https://github.com/Datseris), who is also curating and writing this documentation.
105
100
The software code however is built from the contributions of several individuals.
106
-
The list is too long to write and constantly update, so the best way to find out these contributions is to visit the GitHub page of each of the subpackages and checkout the "contributors" pages there.
101
+
The list is too long to write and constantly update, so the best way to find out these contributions is to visit the GitHub page of each of the subpackages and checkout their respective "contributors" pages.
107
102
108
-
## Version numbers
103
+
## Version numbers and SemVer
109
104
110
-
The version of `DynamicalSystems` by itself is a bit meaningless, because the module does not have any source code, besides re-exporting other modules.
105
+
The version of `DynamicalSystems` by itself is a bit meaningless, because the module does not have any source code, besides re-exporting other modules and offering some visualization functionality.
111
106
For transparency, the packages and versions used to build the documentation you are reading now are:
112
107
113
108
```@setup MAIN
@@ -118,14 +113,16 @@ using CairoMakie, DynamicalSystems
!!! warn "Version numbers do not strictly follow SemVer2.0"
128
-
Because of the nature of the **DynamicalSystems.jl** library, the exported API contains hundreds of algorithm implementations, most of which are independent of each other. Our development approach is that breaking changes to these individual algorithms (due to e.g., better API design or better performance implementations or better default keyword arguments) can be done **without incrementing any major version numbers**. We increment major version numbers only for breaking changes that have wide impact over most of the **DynamicalSystems.jl** library.
123
+
Because of the nature of the **DynamicalSystems.jl** library, the exported API contains hundreds of algorithm implementations, most of which are independent of each other. Our development approach is that mildly breaking changes to these individual algorithms (due to e.g., better API design or better performance implementations or better default keyword arguments) can be done **without incrementing any major version numbers**. We increment major version numbers only for breaking changes that have wide impact over most of the **DynamicalSystems.jl** library.
124
+
125
+
Every single subpackage of DynamicalSystems.jl has a human-written CHANGELOG.md file that details all changes done in each version. You should consult this package if you want to know what changed from version to version.
129
126
130
127
131
128
## Other NLD-relevant packages
@@ -139,7 +136,6 @@ Besides DynamicalSystems.jl, the Julia programming language has a thriving ecosy
139
136
*[NetworkDynamics.jl](https://github.com/PIK-ICoNe/NetworkDynamics.jl) - Simulating dynamics on networks and transforming network systems into `ODEProblem` (that can be made directly into a `ContinuousDynamicalSystem`).
140
137
*[Agents.jl](https://github.com/JuliaDynamics/Agents.jl) - Agent based modelling.
141
138
*[EasyModelAnalysis.jl](https://github.com/SciML/EasyModelAnalysis.jl) - Analysis tools for conveniently analysing solutions of DiffEq systems.
142
-
*[SignalDecomposition.jl](https://github.com/JuliaDynamics/SignalDecomposition.jl) - Decompose a signal/timeseries into structure and noise or seasonal and residual components.
143
139
*[ARFIMA.jl](https://github.com/JuliaDynamics/ARFIMA.jl) - generate ARFIMA process timeseries.
144
140
*[ConcurrentSim.jl](https://github.com/JuliaDynamics/ConcurrentSim.jl) - discrete event process oriented simulation framework.
145
-
*[CausalityTools.jl](https://github.com/JuliaDynamics/CausalityTools.jl) - hundreds of algorithms for relational/causal timeseries analysis and causal graphs.
141
+
*[Associations.jl](https://github.com/JuliaDynamics/Associations.jl) - hundreds of algorithms for relational/causal timeseries analysis and causal graphs.
0 commit comments