Skip to content

Commit 53a189d

Browse files
authored
Update to DynamicalSystems.jl v3 (#299)
* get_state -> current_state * remove all files form include until update * `lyapunov` ported to v3.0 :) * finish lyapunov from data AND add new test file for lyapunovs * move code to TantentDynamicalSystem * delete all old useless stuff * lyapunovspectrum code works (add tests) * lyapunovspectrum tests pass * fully finish local growth rates * fully finish gali and its tests * polish and reorganize expansion entropy * hopefully update expansion entropy * add linreg (used by other unctions) * rename test files * update test suite * update testchaos01 * use readme as module docs * generalize orbit diagram * add progress meter in OD * finish OD for all systems! * rename * renames * upodate broomhead king * update tests * finish `fixedpoints` * finish estimate period * update periodicorbits * add preliminary doc files * copy docs over from DynamicalSystems.jl * remove delayembeddings from deps * finish lyapunovs docpage * finish orbitdiagram docs * fix yin algorithm * finish periodicity docs * finish updating chaos detection * finish chaostools.jl docs * hell yeah all tests pass * add error if distance isn't what its supposed to be * up changelog * update docstyle * fix docs * update readme * update CI files * all sysstems go * add delay embeddings to test suite * also add statistics * use a seed for the test,,...? * use simpler docbuild
1 parent e9576d6 commit 53a189d

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

70 files changed

+2301
-2162
lines changed

.github/ISSUE_TEMPLATE/bug_report.md

+11-2
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,15 @@ Please provide a piece of code that leads to the bug you encounter.
1515

1616
If the code is **runnable**, it will help us identify the problem faster.
1717

18-
**Agents.jl version**
18+
**Package versions**
1919

20-
Please provide the version you use (you can do `Pkg.status("Agents")`.
20+
Please provide the versions of packages you use. To do this, run the code:
21+
```julia
22+
import Pkg
23+
Pkg.status([
24+
"Package1", "Package2"]; # etc.
25+
mode = PKGMODE_MANIFEST
26+
)
27+
```
28+
29+
Please also include the Julia version you run.

.github/ISSUE_TEMPLATE/feature_request.md

+3-6
Original file line numberDiff line numberDiff line change
@@ -7,11 +7,8 @@ assignees: ''
77

88
---
99

10-
**Is your feature request related to a problem? Please describe.**
11-
A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]
10+
**Describe the feature you'd like to have**
1211

13-
**Describe the solution you'd like**
14-
A clear and concise description of what you want to happen.
12+
**Cite scientific papers related to the feature/algorithm**
1513

16-
**Describe alternatives you've considered**
17-
A clear and concise description of any alternative solutions or features you've considered.
14+
**If possible, sketch out an implementation strategy**

.github/dependabot.yml

+8
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
version: 2
2+
updates:
3+
# Maintain dependencies for GitHub Actions
4+
- package-ecosystem: "github-actions"
5+
directory: "/"
6+
schedule:
7+
# Check for updates to GitHub Actions every week
8+
interval: "weekly"

.github/workflows/TagBot.yml

+11
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,18 @@ on:
88
lookback:
99
default: 3
1010
permissions:
11+
actions: read
12+
checks: read
1113
contents: write
14+
deployments: read
15+
issues: read
16+
discussions: read
17+
packages: read
18+
pages: read
19+
pull-requests: read
20+
repository-projects: read
21+
security-events: read
22+
statuses: read
1223
jobs:
1324
TagBot:
1425
if: github.event_name == 'workflow_dispatch' || github.actor == 'JuliaTagBot'

.github/workflows/ci.yml

+11-6
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ on:
33
pull_request:
44
branches:
55
- main
6+
- '**' # matches every branch
67
push:
78
branches:
89
- main
@@ -16,24 +17,24 @@ jobs:
1617
matrix:
1718
version:
1819
- '1'
19-
os: [ubuntu-latest]
20+
os: [ubuntu-latest] # adjust according to need, e.g. os: [ubuntu-latest] if testing only on linux
2021
arch:
2122
- x64
2223
steps:
2324
# Cancel ongoing CI test runs if pushing to branch again before the previous tests
2425
# have finished
2526
- name: Cancel ongoing test runs for previous commits
26-
uses: styfle/cancel-workflow-action@0.6.0
27+
uses: styfle/cancel-workflow-action@0.11.0
2728
with:
2829
access_token: ${{ github.token }}
2930

3031
# Do tests
31-
- uses: actions/checkout@v2
32+
- uses: actions/checkout@v3
3233
- uses: julia-actions/setup-julia@v1
3334
with:
3435
version: ${{ matrix.version }}
3536
arch: ${{ matrix.arch }}
36-
- uses: actions/cache@v2
37+
- uses: actions/cache@v3
3738
env:
3839
cache-name: cache-artifacts
3940
with:
@@ -43,5 +44,9 @@ jobs:
4344
${{ runner.os }}-test-${{ env.cache-name }}-
4445
${{ runner.os }}-test-
4546
${{ runner.os }}-
46-
- uses: julia-actions/julia-buildpkg@latest
47-
- uses: julia-actions/julia-runtest@latest
47+
- uses: julia-actions/julia-buildpkg@v1
48+
- uses: julia-actions/julia-runtest@v1
49+
- uses: julia-actions/julia-processcoverage@v1
50+
- uses: codecov/codecov-action@v3
51+
with:
52+
file: lcov.info

.github/workflows/doccleanup.yml

+28
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
name: Doc Preview Cleanup
2+
3+
on:
4+
pull_request:
5+
types: [closed]
6+
7+
jobs:
8+
doc-preview-cleanup:
9+
runs-on: ubuntu-latest
10+
steps:
11+
- name: Checkout gh-pages branch
12+
uses: actions/checkout@v3
13+
with:
14+
ref: gh-pages
15+
16+
- name: Delete preview and history
17+
run: |
18+
git config user.name "Documenter.jl"
19+
git config user.email "[email protected]"
20+
git rm -rf "previews/PR$PRNUM"
21+
git commit -m "delete preview"
22+
git branch gh-pages-new $(echo "delete history" | git commit-tree HEAD^{tree})
23+
env:
24+
PRNUM: ${{ github.event.number }}
25+
26+
- name: Push changes
27+
run: |
28+
git push --force origin gh-pages-new:gh-pages

.github/workflows/documentation.yml

+26
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
name: Documentation
2+
3+
on:
4+
push:
5+
branches:
6+
- main
7+
tags: '*'
8+
pull_request:
9+
10+
jobs:
11+
build:
12+
permissions:
13+
contents: write
14+
runs-on: ubuntu-latest
15+
steps:
16+
- uses: actions/checkout@v3
17+
- uses: julia-actions/setup-julia@v1
18+
with:
19+
version: '1'
20+
- name: Install dependencies
21+
run: julia --project=docs/ -e 'using Pkg; Pkg.develop(PackageSpec(path=pwd())); Pkg.instantiate()'
22+
- name: Build and deploy
23+
env:
24+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} # If authenticating with GitHub Actions token
25+
DOCUMENTER_KEY: ${{ secrets.DOCUMENTER_KEY }} # If authenticating with SSH deploy key
26+
run: julia --project=docs/ docs/make.jl

.gitignore

+3
Original file line numberDiff line numberDiff line change
@@ -3,3 +3,6 @@
33
*.jl.mem
44
docs/build
55
Manifest.toml
6+
*.css
7+
*.scss
8+
*style.jl

CHANGELOG.md

+16-5
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,14 @@
11
# main
2-
**The following will become the 3.0 - Major release.**
2+
3+
# v3.0
4+
5+
Major release part of the DynamicalSystems.jl v3.
6+
The DynamicalSystems.jl v3 changelog summarizes the highlights. Here we will list all changes to _this specific package_.
7+
8+
## Breaking
9+
- All `diffeq` keywords to all functions have been removed as per update to DynamicalSystems v3.0. Arguments to DifferentialEquations.jl solvers are now given in system construction when making a `CoupledODEs` (previously `ContinuousDynamicalSystem`).
10+
- The dependency list of ChaosTools.jl has been reduced by half; many things that used to be exported from here are no longer (see refactoring).
11+
- Low-level call signatures have been adjusted to fit DynamicalSystems.jl v3.0
312

413
## Refactoring/removal
514
- All functionality related to attractors and basins of attraction (e.g., `AttractorMapper`, `basins_fractions`) has been moved to a new package Attractors.jl. Notice that functions such as `fixedpoints` and `periodicorbits` stay in ChaosTools.jl because they aren't only about attractors; they also find unstable fixed points and/or periodic orbits.
@@ -8,7 +17,7 @@
817
- All fractal dimension related functionality has been moved to a new package FractalDimensions.jl. This includes the functionality for finding linear regions and fitting them.
918

1019
## Rare events
11-
- New dedicated folder structure and functionality targeting rare events in ChaosTools.jl. If it becomes extensive, it can be split off to a different package.
20+
- New dedicated folder structure and functionality targeting rare events in ChaosTools.jl. If it becomes extensive, it can be split off to a new package.
1221
- Source code for `exit_entry_times` has been completely overhauled and is now
1322
much much clearer.
1423
- Algorithm for `exit_entry_times` for continuous systems has been re-written from
@@ -17,10 +26,12 @@
1726
- `mean_return_times` is now just a wrapper function.
1827
- New function `first_return_times` for efficiently computing only the first time to return to sets.
1928

20-
## Other
21-
- New method for fractal dimension: `higuchi`
22-
- Improved the documentation of chaos detection methods overall.
29+
## Other enhancements
30+
- `orbitdiagram` is a completely generic function that works for any kind of `DynamicalSystem`. `produce_orbitdiagram` is deprecated as it is now practically useless.
31+
- ChaosTools.jl now has its own documentation as per DynamicalSystems.jl v3.0.
32+
- More examples have been placed that also better highlight how to parallelize.
2333
- Increased the default amount of `c` in `testchaos01`.
34+
- Tests have been overhauled and never use predefined systems (which is a really bad practice when it comes to testing)
2435

2536
# 2.9
2637
* Improved the `AttractorsViaFeaturizing` algorithm by improving the method for finding the optimal radius used in the clustering. This consisted in (i) maximizing the average silhouette values, instead of minimum (slight improvement), (ii) min-max rescaling the features for the clustering (big improvement); (iii) adding an alternative method ,called elbow method, that is faster but worse at clustering.

CITATION.bib

+12-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
@article{Datseris2018,
1+
@article{DynamicalSystems.jl-2018,
22
doi = {10.21105/joss.00598},
33
url = {https://doi.org/10.21105/joss.00598},
44
year = {2018},
@@ -10,3 +10,14 @@ @article{Datseris2018
1010
title = {DynamicalSystems.jl: A Julia software library for chaos and nonlinear dynamics},
1111
journal = {Journal of Open Source Software}
1212
}
13+
14+
@book{DatserisParlitz2022,
15+
doi = {10.1007/978-3-030-91032-7},
16+
url = {https://doi.org/10.1007/978-3-030-91032-7},
17+
year = {2022},
18+
publisher = {Springer Nature},
19+
author = {George Datseris and Ulrich Parlitz},
20+
title = "Nonlinear dynamics: A concise introduction interlaced with code",
21+
address = "Cham, Switzerland",
22+
language = "en",
23+
}

Project.toml

+5-23
Original file line numberDiff line numberDiff line change
@@ -4,11 +4,8 @@ repo = "https://github.com/JuliaDynamics/ChaosTools.jl.git"
44
version = "3.0.0"
55

66
[deps]
7-
Clustering = "aaaa29a8-35af-508c-8bc3-b662a17a0fe5"
87
Combinatorics = "861a8166-3701-5b0c-9a16-15d98fcdc6aa"
9-
ComplexityMeasures = "ab4b797d-85ee-42ba-b621-05d793b346a2"
108
DSP = "717857b8-e6f2-59f4-9121-6e50c889abd2"
11-
DelayEmbeddings = "5732040d-69e3-5649-938a-b6b4f237613f"
129
Distances = "b4f34e82-e78d-54a5-968a-f98e89d6e8f7"
1310
Distributions = "31c24e10-a181-5473-b8eb-7969acd0382f"
1411
DynamicalSystemsBase = "6e36e845-645a-534a-86f2-f5d4aa5a06b4"
@@ -20,40 +17,25 @@ Neighborhood = "645ca80c-8b79-4109-87ea-e1f58159d116"
2017
Optim = "429524aa-4258-5aef-a3af-852621145aeb"
2118
ProgressMeter = "92933f4c-e287-5a05-a399-4b506db050ca"
2219
Random = "9a3f8284-a2c9-5f02-9a11-845980a1fd5c"
20+
Reexport = "189a3867-3050-52da-a836-e630ba90ab69"
2321
Roots = "f2b01f46-fcfa-551c-844a-d8ac1e96c665"
2422
SpecialFunctions = "276daf66-3868-5448-9aa4-cd146d93841b"
25-
StaticArrays = "90137ffa-7385-5640-81b9-e52037218182"
2623
Statistics = "10745b16-79ce-11e8-11f9-7d13ad32a3b2"
2724
StatsBase = "2913bbd2-ae8a-5f71-8c99-4fb6c76f3a91"
2825

2926
[compat]
30-
Clustering = "0.14"
3127
Combinatorics = "0.7, 1"
3228
DSP = "0.6, 0.7"
33-
# DelayEmbeddings = "2.5, 3"
3429
Distances = "0.7, 0.8, 0.9, 0.10"
3530
Distributions = "0.21, 0.22, 0.23, 0.24, 0.25"
36-
# DynamicalSystemsBase = "2.9.0, 3"
37-
# ComplexityMeasures = "2"
38-
ForwardDiff = "0.8, 0.9, 0.10"
31+
DynamicalSystemsBase = "3"
3932
IntervalRootFinding = "0.5.9"
4033
LombScargle = "1"
4134
Neighborhood = "0.2.2"
4235
Optim = "1.7"
4336
ProgressMeter = "1.7"
37+
Reexport = "1"
4438
Roots = "0.7, 0.8, 1.0, 2"
4539
SpecialFunctions = "0.10, 1, 2"
46-
StaticArrays = "0.11, 0.12.0, 1.0"
47-
StatsBase = "0.24.0, 0.32, 0.33"
48-
julia = "1.5"
49-
50-
[extras]
51-
DelimitedFiles = "8bb1440f-4735-579b-a4ab-409b98df4dab"
52-
Downloads = "f43a241f-c20a-4ad4-852c-f6b1247861c6"
53-
LinearAlgebra = "37e2e46d-f89d-539d-b4ee-838fcccc9c8e"
54-
OrdinaryDiffEq = "1dea7af3-3e70-54e6-95c3-0bf5283fa5ed"
55-
Random = "9a3f8284-a2c9-5f02-9a11-845980a1fd5c"
56-
Test = "8dfed614-e22c-5e08-85e1-65c5234f0b40"
57-
58-
[targets]
59-
test = ["LinearAlgebra", "Test", "OrdinaryDiffEq", "DelimitedFiles", "Downloads", "Random"]
40+
StatsBase = "0.33"
41+
julia = "1.5"

README.md

+13-8
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,16 @@
1-
![DynamicalSystems.jl logo: The Double Pendulum](https://i.imgur.com/nFQFdB0.gif)
1+
[![](https://img.shields.io/badge/docs-dev-lightblue.svg)](https://JuliaDynamics.github.io/ChaosTools.jl/dev)
2+
[![](https://img.shields.io/badge/docs-stable-blue.svg)](https://JuliaDynamics.github.io/ChaosTools.jl/stable)
3+
[![](https://img.shields.io/badge/DOI-10.1007%2F978--3--030--91032--7-purple)](https://link.springer.com/book/10.1007/978-3-030-91032-7)
4+
[![CI](https://github.com/JuliaDynamics/ChaosTools.jl/workflows/CI/badge.svg)](https://github.com/JuliaDynamics/ChaosTools.jl/actions?query=workflow%3ACI)
5+
[![codecov](https://codecov.io/gh/JuliaDynamics/ChaosTools.jl/branch/main/graph/badge.svg)](https://codecov.io/gh/JuliaDynamics/ChaosTools.jl)
6+
[![Package Downloads](https://shields.io/endpoint?url=https://pkgs.genieframework.com/api/v1/badge/ChaosTools)](https://pkgs.genieframework.com?packages=ChaosTools)
27

3-
Repository containing tools for the exploration of chaos and nonlinear dynamics. It
4-
is part of the library [DynamicalSystems.jl](https://juliadynamics.github.io/DynamicalSystems.jl/latest/).
8+
A Julia module that offers various tools for analysing nonlinear dynamics and chaotic behaviour.
9+
It can be used as a standalone package, or as part of
10+
[DynamicalSystems.jl](https://juliadynamics.github.io/DynamicalSystems.jl/dev/).
511

6-
| **Documentation** | **Tests** | Gitter |
7-
|:--------:|:-------------------:|:-----:|
8-
|[![](https://img.shields.io/badge/docs-latest-blue.svg)](https://JuliaDynamics.github.io/DynamicalSystems.jl/dev) | [![CI](https://github.com/juliadynamics/ChaosTools.jl/workflows/CI/badge.svg)](https://github.com/JuliaDynamics/ChaosTools.jl/actions) | [![Gitter](https://img.shields.io/gitter/room/nwjs/nw.js.svg)](https://gitter.im/JuliaDynamics/Lobby)
12+
To install it, run `import Pkg; Pkg.add("ChaosTools")`.
913

10-
The features of ChaosTools.jl are updated and expanded frequently and therefore we
11-
refer our users to the official documentation: https://juliadynamics.github.io/DynamicalSystems.jl/dev/contents/#ChaosTools
14+
All further information is provided in the documentation, which you can either find [online](https://juliadynamics.github.io/ChaosTools.jl/dev/) or build locally by running the `docs/make.jl` file.
15+
16+
_ChaosTools.jl is the jack-of-all-trades package of the DynamicalSystems.jl library: methods that are not extensive enough to be a standalone package are added here. You should see the full DynamicalSystems.jl library for other packages that may contain functionality you are looking for but did not find in ChaosTools.jl._

benchmark/default_alg.jl

-32
This file was deleted.

0 commit comments

Comments
 (0)