Skip to content

Commit 9535617

Browse files
authored
better docs (#255)
* 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
1 parent b24bb81 commit 9535617

File tree

9 files changed

+158
-79
lines changed

9 files changed

+158
-79
lines changed

CHANGELOG.md

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,14 @@ The changelog here therefore lists either major changes to the overarching Dynam
77

88
The changelogs of individual sub-packages are self-contained for each package.
99

10+
11+
# v3.5
12+
13+
- Improved documentation regarding versions
14+
- Improved documentation regarding citing
15+
- Added SignalDecomposition.jl into DynamicalSystems.jl
16+
- Added PeriodicOrbits.jl into DynamicalSystems.jl
17+
1018
# v3.4
1119

1220
Some important fixes on the `interactive_trajectory` GUI:

Project.toml

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
name = "DynamicalSystems"
22
uuid = "61744808-ddfa-5f27-97ff-6e42cc95d634"
33
repo = "https://github.com/JuliaDynamics/DynamicalSystems.jl.git"
4-
version = "3.4.3"
4+
version = "3.5.0"
55

66
[deps]
77
Attractors = "f3fd9213-ca85-4dba-9dfd-7fc91308fec7"
@@ -16,6 +16,8 @@ RecurrenceAnalysis = "639c3291-70d9-5ea2-8c5b-839eba1ee399"
1616
Reexport = "189a3867-3050-52da-a836-e630ba90ab69"
1717
StateSpaceSets = "40b095a5-5852-4c12-98c7-d43bf788e795"
1818
TimeseriesSurrogates = "c804724b-8c18-5caa-8579-6025a0767c70"
19+
SignalDecomposition = "11a47235-7b84-4c7c-b885-fc3e2a9cf955"
20+
PeriodicOrbits = "41be5fce-5647-450b-ae37-a6739b881a1c"
1921

2022
[weakdeps]
2123
Makie = "ee78f7c6-11fb-53f2-987a-cfe4a2b5a57a"
@@ -24,7 +26,7 @@ Makie = "ee78f7c6-11fb-53f2-987a-cfe4a2b5a57a"
2426
DynamicalSystemsVisualizations = "Makie"
2527

2628
[compat]
27-
Attractors = "0.1, 0.2, 1"
29+
Attractors = "1"
2830
ChaosTools = "3"
2931
ComplexityMeasures = "2, 3"
3032
DataStructures = "0.18, 0.19"
@@ -37,6 +39,8 @@ RecurrenceAnalysis = "2"
3739
Reexport = "1"
3840
StateSpaceSets = "2"
3941
TimeseriesSurrogates = "2.1"
42+
SignalDecomposition = "1.2"
43+
PeriodicOrbits = "0.1"
4044
julia = "1.9"
4145

4246
[extras]

README.md

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ Aspects of **DynamicalSystems.jl** that make it stand out among other codebases
2323
- **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!
2424
- **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.
2525
- **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.
2727
- **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_.
2828

2929
## Goals
@@ -54,3 +54,14 @@ You see, it is unfortunately rarely the case that real, _runnable_ code is shown
5454

5555
**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.
5656
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!

docs/Project.toml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,3 +18,5 @@ RecurrenceAnalysis = "639c3291-70d9-5ea2-8c5b-839eba1ee399"
1818
StateSpaceSets = "40b095a5-5852-4c12-98c7-d43bf788e795"
1919
Statistics = "10745b16-79ce-11e8-11f9-7d13ad32a3b2"
2020
StochasticDiffEq = "789caeaf-c7a9-5a7d-9973-96adeb23e2a0"
21+
SignalDecomposition = "11a47235-7b84-4c7c-b885-fc3e2a9cf955"
22+
PeriodicOrbits = "41be5fce-5647-450b-ae37-a6739b881a1c"

docs/make.jl

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,9 @@ build_docs_with_style(pages, DynamicalSystems,
3838
Attractors,
3939
FractalDimensions,
4040
TimeseriesSurrogates,
41-
PredefinedDynamicalSystems;
41+
PredefinedDynamicalSystems,
42+
SignalDecomposition,
43+
PeriodicOrbits;
4244
authors = "George Datseris <datseris.george@gmail.com>",
4345
expandfirst = ["index.md"],
4446
# We need to remove the cross references because we don't list here

docs/src/contents.md

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,17 +13,19 @@ The submodules that compose **DynamicalSystems.jl** are the following packages,
1313
- [`StateSpaceSets`](@ref)
1414
- [`DynamicalSystemsBase`](@ref)
1515

16-
**For observed/measured data**
16+
**For observed/measured data and timeseries**
1717
- [`ComplexityMeasures`](@ref)
1818
- [`RecurrenceAnalysis`](@ref)
1919
- [`DelayEmbeddings`](@ref)
2020
- [`FractalDimensions`](@ref)
2121
- [`TimeseriesSurrogates`](@ref)
22+
- [`SignalDecomposition`](@ref)
2223

2324
**For dynamical system instances**
2425
- [`PredefinedDynamicalSystems`](@ref)
2526
- [`ChaosTools`](@ref)
2627
- [`Attractors`](@ref)
28+
- [`PeriodicOrbits`](@ref)
2729

2830
At the very end of this page, a full list of exported names is presented.
2931

@@ -43,6 +45,7 @@ RecurrenceAnalysis
4345
DelayEmbeddings
4446
FractalDimensions
4547
TimeseriesSurrogates
48+
SignalDecomposition
4649
```
4750

4851
## For dynamical system instances
@@ -51,6 +54,7 @@ TimeseriesSurrogates
5154
PredefinedDynamicalSystems
5255
ChaosTools
5356
Attractors
57+
PeriodicOrbits
5458
```
5559

5660
## All exported names

docs/src/index.md

Lines changed: 19 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -49,21 +49,25 @@ The materials of the course are on GitHub: <https://github.com/JuliaDynamics/Non
4949

5050
If using **DynamicalSystems.jl** resulted in a publication with references, we kindly ask that you give appropriate credit in three ways:
5151

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).
5454
3. Cite the specific algorithm(s) you used to also give credit to the originators of the methods.
5555

5656
For example, a typical citation that gives proper credit to using **DynamicalSystems.jl** could be:
5757

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}`.
5959
60-
or, one more example:
60+
or,
6161

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}`.
6367
6468
To find the specific references associated with the subpackages visit their respective dedicated documentation pages.
6569

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:
6771

6872
```
6973
@book{DatserisParlitz2022,
@@ -86,28 +90,19 @@ There are three options for asking questions:
8690
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.
8791
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.
8892

89-
## Contributing & Donating
93+
## Contributing
9094

9195
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!
9296

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-
10297
## Maintainers and Contributors
10398

10499
The **DynamicalSystems.jl** library is maintained by [George Datseris](https://github.com/Datseris), who is also curating and writing this documentation.
105100
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.
107102

108-
## Version numbers
103+
## Version numbers and SemVer
109104

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.
111106
For transparency, the packages and versions used to build the documentation you are reading now are:
112107

113108
```@setup MAIN
@@ -118,14 +113,16 @@ using CairoMakie, DynamicalSystems
118113
using Pkg
119114
Pkg.status([
120115
"DynamicalSystems",
121-
"StateSpaceSets", "DynamicalSystemsBase", "RecurrenceAnalysis", "FractalDimensions", "DelayEmbeddings", "ComplexityMeasures", "TimeseriesSurrogates", "PredefinedDynamicalSystems", "Attractors", "ChaosTools", "CairoMakie",
116+
"StateSpaceSets", "DynamicalSystemsBase", "RecurrenceAnalysis", "FractalDimensions", "DelayEmbeddings", "ComplexityMeasures", "TimeseriesSurrogates", "PredefinedDynamicalSystems", "Attractors", "TransitionsInTimeseries", "SignalDecomposition", "ChaosTools", "CairoMakie",
122117
];
123118
mode = PKGMODE_MANIFEST
124119
)
125120
```
126121

127122
!!! 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.
129126

130127

131128
## Other NLD-relevant packages
@@ -139,7 +136,6 @@ Besides DynamicalSystems.jl, the Julia programming language has a thriving ecosy
139136
* [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`).
140137
* [Agents.jl](https://github.com/JuliaDynamics/Agents.jl) - Agent based modelling.
141138
* [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.
143139
* [ARFIMA.jl](https://github.com/JuliaDynamics/ARFIMA.jl) - generate ARFIMA process timeseries.
144140
* [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

Comments
 (0)