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
Copy file name to clipboardExpand all lines: README.md
+12-21Lines changed: 12 additions & 21 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -18,25 +18,26 @@ To learn how to use it and see its contents visit the documentation, which you c
18
18
Aspects of **DynamicalSystems.jl** that make it stand out among other codebases for nonlinear dynamics or nonlinear timeseries analysis are:
19
19
20
20
-**Exceptional documentation**. All implemented algorithms provide a high-level scientific description of their functionality in their documentation string as well as references to scientific papers. The documentation features hundreds of tutorials and examples ranging from introductory to expert usage.
21
-
-**Accessible source code**. One of the main priorities of the library is that the source code of (almost) all implementations is small, simple, easy to understand and modify. This increases confidence, reduces bugs, and allows users to become developers without unnecessary effort.
21
+
-**Accessible source code**. Key priority for the library is to keep source code of implementations small, simple, easy to understand and modify. This increases confidence, reduces bugs, and allows users to become developers without unnecessary effort.
22
22
-**Open source community project**. Built from the ground up entirely on GitHub, **DynamicalSystems.jl** is 100% open source and based on community contributions. Anyone can be a developer of the library. Everyone is welcomed.
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!
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, basins of attraction, 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
-
-**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, new packages, bugfixes. The developer team routinely answers users questions on official Julia language forums.
25
+
-**Extendable**. 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, new packages, bugfixes. The developer team routinely answers users questions on official Julia language forums or on GitHub.
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
30
30
31
-
The **DynamicalSystems.jl** library started as a vision with three main goals;
32
-
These same goals now are the core pillars guiding development, and are largely the source of where the aforementioned unique highlights stem from.
31
+
The **DynamicalSystems.jl** library started as an ambitious vision with three main goals;
32
+
These same goals are the core pillars guiding development, and are largely the source of where the aforementioned unique highlights stem from.
33
33
34
34
### Goal 1: Accessible and reproducible nonlinear dynamics
35
35
36
-
The first goal of the library is to make this beautiful field **accessible and reproducible**.
37
-
38
36
**Accessible** means that if you read on some sorts of fancy algorithm online in a scientific article, you should be able to use it instantly. You shouldn't have to put in the work to code it yourself. The authors of the paper already did that.
39
37
_So why should you do it again?!_ To resolve this problem we developed, and continue to develop, a library that has an incredibly low threshold of entry: contributing to **DynamicalSystems.jl** and making your code available to all is truly _easier_ than coding your own algorithms from scratch, due to the well thought out and generic interfaces it provides for dynamical systems.
38
+
With this aproach we also hope to stop the _endless reinviention of the wheel_ that is shockingly prevalent in nonlinear dynamics: where every time someone writes a new method/algorithm or even full software, they end up re-imlementing up to 90% of the functionality that may already exist somewhere else.
39
+
With **DynamicalSystems.jl** and its extendable interfaces, new algorithms can be implemented with minimal code, and their software imlementation can be published along with the paper!
40
+
We have done this already dozens of times and you can do too!
40
41
41
42
**Reproducible** means that given some sorts of dynamical systems analysis in a scientific article, you should be able to do _exactly the same analysis_ and get _exactly the same results_ (within some numeric precision) as the article.
42
43
After all, computers are deterministic constructs.
@@ -49,19 +50,9 @@ That is why the documentation is of exceptionally high quality: detailed descrip
49
50
50
51
### Goal 3: A general purpose software
51
52
52
-
The third goal is to fill the missing gap of a high quality _general purpose software_ for nonlinear dynamics which can be easily extended with new functionality. This can be particularly impactful in teaching.
53
+
The third goal is to fill the missing gap of a high quality _general purpose software_ for nonlinear dynamics which can be easily extended with new functionality.
54
+
This can be particularly impactful in teaching.
53
55
You see, it is unfortunately rarely the case that real, _runnable_ code is shown in the classroom, because it is often long and messy. This is especially hurtful for nonlinear dynamics, a field where computer-assisted exploration is critical.
54
56
55
57
**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
-
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!
58
+
Its high level syntax requires writing little code to get lots of meaningful analysis done, while its extensive functionality covers most typical classroom applications.
0 commit comments