JuliaDynamics / RecurrenceAnalysis.jl

Recurrence Quantification Analysis in Julia
https://juliadynamics.github.io/RecurrenceAnalysis.jl/stable/
MIT License
45 stars 12 forks source link

Joining DynamicalSystems.jl ! #9

Closed Datseris closed 5 years ago

Datseris commented 5 years ago

Following from here: https://gist.github.com/Datseris/3ca61b32dea2033aeae5c4dfe3e0b78c and from the discussion in #8

Here is what I believe are the best steps forward to make this really nice package an "official" part of JuliaDynamics:

Once these are done, and if you agree of course, we make RA an official part of DS by

  1. Make sure the source code is clear. I will read the source and wherever there is something unclear I'll either clarify myself or ask for your help in claryfying.
  2. re-export RA from DS.
  3. adding it to its documentation page as a set of dedicated pages (much like ChaosTools). For this to happen we will also have to write a proper documentation (i.e. separate / expand the current README to documenter acceptable files that expand the docstrings. I will take care of that).
  4. Change metadata links and tag a new release!!!

You might think number 1 is irrelevant or useless or unecessary but the philoshopy of JuliaDynamics is that the source code is clear and understandable.

heliosdrm commented 5 years ago

Thanks! I need some time to do all these things, but everything seems reasonable, so I'll do it.

Datseris commented 5 years ago

As a heads up: I decided I will make a minimal and dedicated package DelayEmbedding. TimeseriesPrediction and RA can depend on that one, since they don't need OrdinaryDiffEq which is a very heavy dependency. I will finish all of this this weekend, and then you can put it in your depdencies and move the estimate_dimension methods there!

Datseris commented 5 years ago

Alright, delay embedding moved here: https://github.com/JuliaDynamics/DelayEmbeddings.jl (it's not registered yet of course!).

I will now start porting the methods that estimate embedding dimension and delay time. I will also open up issues to discuss stuffs.

Datseris commented 5 years ago

Alright, I've moved everything. You will find our old mutual information code in the file old_mutual_info.jl, which I no longer include in DelayEmbeddings until we compare with yours.

Datseris commented 5 years ago

I've made the list a checklist for easier development.

heliosdrm commented 5 years ago

Put ~DynamicalSystemsBase~ DelayEmbeddings to the dependencies of RA.

This is done, but if the methods to estimate the optimal dimension is eventually moved to DelayEmbeddings, then this dependency should be removed, because RecurrenceAnalysis will not use any of its methods. (RQA is done after the time series are embedded, so there is no need of the functions related to embedding.)

Datseris commented 5 years ago

In general I plus one this. I have moved all methods that we had for estimating delay and dimension to DelayEmbeddings so I guess we are waiting for the 2 remaining from this repo FNN and FFNN, if you want to move them.

We also have to compare the mutual information code which is another method for delay time.

One note: having DelayEmbeddings as a dependency allows you to re-export it, which means that upon using RecurrenceAnalysis all names from DelayEmbeddings come into scope. This is convenient but of course may not be worth a full dependency :P