DynamicalSystems.jl

DynamicalSystems.jl: A Julia software library for chaos and nonlinear dynamics - Published in JOSS (2018)

https://github.com/juliadynamics/dynamicalsystems.jl

Science Score: 100.0%

This score indicates how likely this project is to be science-related based on various indicators:

  • CITATION.cff file
    Found CITATION.cff file
  • codemeta.json file
    Found codemeta.json file
  • .zenodo.json file
    Found .zenodo.json file
  • DOI references
    Found 5 DOI reference(s) in README and JOSS metadata
  • Academic publication links
    Links to: springer.com, joss.theoj.org
  • Committers with academic emails
    5 of 29 committers (17.2%) from academic institutions
  • Institutional organization owner
  • JOSS paper metadata
    Published in Journal of Open Source Software

Keywords

attractor chaos complexity delay-coordinates dynamical-systems entropy fractal-dimension hacktoberfest lyapunov mathematics nonlinear nonlinear-dynamics physics

Keywords from Contributors

graphics surrogate fluxes julialang the-human-brain lyapunov-spectrum particles project-assistant project-management geometry
Last synced: 6 months ago · JSON representation ·

Repository

Award winning software library for nonlinear dynamics and nonlinear timeseries analysis

Basic Info
Statistics
  • Stars: 895
  • Watchers: 25
  • Forks: 97
  • Open Issues: 14
  • Releases: 90
Topics
attractor chaos complexity delay-coordinates dynamical-systems entropy fractal-dimension hacktoberfest lyapunov mathematics nonlinear nonlinear-dynamics physics
Created over 8 years ago · Last pushed 7 months ago
Metadata Files
Readme Changelog Contributing License Citation

README.md

DynamicalSystems.jl logo: The Double Pendulum

DocBuild DOI Textbook Package Downloads

DynamicalSystems.jl is an award-winning Julia-based general-purpose software library for the whole of nonlinear dynamics and nonlinear timeseries analysis.

To install DynamicalSystems.jl, run import Pkg; Pkg.add("DynamicalSystems") as a Julia language command. To learn how to use it and see its contents visit the documentation, which you can either find online or build locally by running the docs/make.jl file.

DynamicalSystems.jl is part of JuliaDynamics, an organization dedicated to creating high quality scientific software.

Highlights

Aspects of DynamicalSystems.jl that make it stand out among other codebases for nonlinear dynamics or nonlinear timeseries analysis are:

  • 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.
  • 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.
  • 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.
  • 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!
  • 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.
  • 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.
  • 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.
  • 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.

Goals

The DynamicalSystems.jl library started as a vision with three main goals; These same goals now are the core pillars guiding development, and are largely the source of where the aforementioned unique highlights stem from.

Goal 1: Accessible and reproducible nonlinear dynamics

The first goal of the library is to make this beautiful field accessible and reproducible.

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. 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.

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. After all, computers are deterministic constructs. DynamicalSystems.jl allows this by (1) being written in a modern programming language with incredible environment and reproducibility support, (2) being well tested, and (3) by providing thousands of algorithms out of the box, allowing most dynamical systems analysis to be done instantly while implementing only as little new stuff as necessary.

Goal 2: Library in the literal sense

DynamicalSystems.jl is not just a software library. It is also a library in the literal sense: where people go to learn something new (here in particular for nonlinear dynamics). That is why the documentation is of exceptionally high quality: detailed descriptions and explanations of algorithms, with references to the scientific articles articles. It is also partly a reason for the source code to be written as clearly as possible, so that it is examinable by any user.

Goal 3: A general purpose software

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. 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.

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. Its high level syntax requires writing little code to get lots of meaningful analysis done, while its extensive functionality covers most typical classroom applications.

Owner

  • Name: JuliaDynamics
  • Login: JuliaDynamics
  • Kind: organization

A Julia-based software organization for dynamical systems, nonlinear dynamics, complex systems and the complexities of the scientific life

JOSS Publication

DynamicalSystems.jl: A Julia software library for chaos and nonlinear dynamics
Published
March 14, 2018
Volume 3, Issue 23, Page 598
Authors
George Datseris ORCID
Max Planck Institute for Dynamics and Self-Organization, Göttingen, Germany
Editor
Kyle Niemeyer ORCID
Tags
chaos physics nonlinear lyapunov entropy dimension

Citation (CITATION.bib)

@article{DynamicalSystems.jl-2018,
  doi = {10.21105/joss.00598},
  url = {https://doi.org/10.21105/joss.00598},
  year  = {2018},
  month = {mar},
  volume = {3},
  number = {23},
  pages = {598},
  author = {George Datseris},
  title = {DynamicalSystems.jl: A Julia software library for chaos and nonlinear dynamics},
  journal = {Journal of Open Source Software}
}

@book{DatserisParlitz2022,
  doi = {10.1007/978-3-030-91032-7},
  url = {https://doi.org/10.1007/978-3-030-91032-7},
  year = {2022},
  publisher = {Springer Nature},
  author = {George Datseris and Ulrich Parlitz},
  title     = "Nonlinear dynamics: A concise introduction interlaced with code",
  address   = "Cham, Switzerland",
  language  = "en",
}

GitHub Events

Total
  • Create event: 12
  • Issues event: 2
  • Release event: 7
  • Watch event: 56
  • Delete event: 5
  • Issue comment event: 10
  • Push event: 48
  • Pull request review comment event: 4
  • Pull request review event: 6
  • Pull request event: 13
  • Fork event: 3
Last Year
  • Create event: 12
  • Issues event: 2
  • Release event: 7
  • Watch event: 56
  • Delete event: 5
  • Issue comment event: 10
  • Push event: 48
  • Pull request review comment event: 4
  • Pull request review event: 6
  • Pull request event: 13
  • Fork event: 3

Committers

Last synced: 7 months ago

All Time
  • Total Commits: 720
  • Total Committers: 29
  • Avg Commits per committer: 24.828
  • Development Distribution Score (DDS): 0.088
Past Year
  • Commits: 14
  • Committers: 3
  • Avg Commits per committer: 4.667
  • Development Distribution Score (DDS): 0.143
Top Committers
Name Email Commits
Datseris d****e@g****m 657
Unknown m****5@g****m 10
Jonas Isensee j****e@w****e 7
Navid C. Constantinou n****y 5
imgbot[bot] 3****] 5
github-actions[bot] 4****] 4
Kai Hauke Krämer 3****r 3
Kalel Luiz Rossi 3****R 3
femtocleaner[bot] f****] 2
Rainer Engelken r****r@n****e 2
Helios De Rosario h****m 2
Felix Cremer f****r@u****e 2
Anshul Singhvi a****7@s****u 2
Max Rossner 1
cormullion c****n@m****m 1
Tony Kelman t****y@k****t 1
Shunsuke Hidaka g****c@g****m 1
Sergey Novak 7****7 1
Pietro Monticone 3****e 1
Philippe Roy b****r@y****a 1
Masala Man t****5@g****m 1
M. Arthus Schanner 4****1 1
KronosTheLate 6****e 1
Kristoffer Carlsson k****n@c****e 1
Julia TagBot 5****t 1
Jonathan Fischer j****7@j****u 1
Gabriel Majeri g****6@g****m 1
Christopher Rackauckas a****s@c****m 1
Benoît Legat b****t@g****m 1
Committer Domains (Top 20 + Academic)

Issues and Pull Requests

Last synced: 6 months ago

All Time
  • Total issues: 45
  • Total pull requests: 92
  • Average time to close issues: 4 months
  • Average time to close pull requests: 21 days
  • Total issue authors: 34
  • Total pull request authors: 18
  • Average comments per issue: 6.96
  • Average comments per pull request: 0.57
  • Merged pull requests: 69
  • Bot issues: 0
  • Bot pull requests: 23
Past Year
  • Issues: 2
  • Pull requests: 10
  • Average time to close issues: N/A
  • Average time to close pull requests: 1 day
  • Issue authors: 2
  • Pull request authors: 3
  • Average comments per issue: 4.5
  • Average comments per pull request: 0.4
  • Merged pull requests: 9
  • Bot issues: 0
  • Bot pull requests: 1
Top Authors
Issue Authors
  • Datseris (8)
  • navidcy (2)
  • pucicu (2)
  • Funkerfish (2)
  • oameye (1)
  • JuliaTagBot (1)
  • SebastianM-C (1)
  • ig-or (1)
  • vitusbenson (1)
  • wisp92 (1)
  • cormullion (1)
  • Lucalino (1)
  • LianGentleWind (1)
  • TorkelE (1)
  • Lucas-Froguel (1)
Pull Request Authors
  • Datseris (61)
  • github-actions[bot] (23)
  • navidcy (4)
  • GabrielMajeri (3)
  • imgbot[bot] (3)
  • hkraemer (3)
  • KalelR (2)
  • jonathanfischer97 (2)
  • heliosdrm (2)
  • SergeyNovak777 (1)
  • arthus701 (1)
  • pitmonticone (1)
  • awage (1)
  • onkyo14taro (1)
  • masala-man (1)
Top Labels
Issue Labels
question (5) documentation (5) good first issue (4) help wanted (4) design (4) bug (4) enhancement (3) basins-tipping (3) breaking (3) discussion (2) quality of life (2) installation (2) gui (1) external (1) pretty printing (1) diffeq (1) performance (1) rare-events (1) wanted_feature (1)
Pull Request Labels
documentation (2)

Packages

  • Total packages: 1
  • Total downloads:
    • julia 179 total
  • Total dependent packages: 6
  • Total dependent repositories: 7
  • Total versions: 73
juliahub.com: DynamicalSystems

Award winning software library for nonlinear dynamics and nonlinear timeseries analysis

  • Versions: 73
  • Dependent Packages: 6
  • Dependent Repositories: 7
  • Downloads: 179 Total
Rankings
Stargazers count: 0.6%
Forks count: 1.2%
Average: 3.6%
Dependent repos count: 4.1%
Dependent packages count: 8.6%
Last synced: 6 months ago

Dependencies

.github/workflows/CompatHelper.yml actions
  • julia-actions/setup-julia latest composite
.github/workflows/TagBot.yml actions
  • JuliaRegistries/TagBot v1 composite
.github/workflows/ci.yml actions
  • actions/cache v1 composite
  • actions/cache v2 composite
  • actions/checkout v2 composite
  • julia-actions/julia-buildpkg latest composite
  • julia-actions/julia-runtest latest composite
  • julia-actions/setup-julia v1 composite
  • styfle/cancel-workflow-action 0.6.0 composite
.github/workflows/doccleanup.yml actions
  • actions/checkout v2 composite
.github/workflows/pkg-update.yml actions
  • actions/checkout v2 composite
  • julia-actions/setup-julia v1 composite
  • peter-evans/create-pull-request v3 composite