---
# System prepended metadata

title: MGpredictability
tags: [Entregable 8]

---

# MGpredictability

https://github.com/jTarigo/MGpredictability

###### tags: `Entregable 8`

En construcción.

## Deps

* DynamicalSystems

* Plots

* SparseArrays

* Peaks

* Statistics

## Implementado

* definir type: **AbstractSystem**. Definir type: **MackeyGlass_System <: AbstractSystem**. Definir struct: **MG**. Toma 4 parametros $\alpha$, $\Gamma$, $N$ y $n$ que definen totalmente el sistema de Mackey-Glass.

* definir type: **AbstractSolver**. Definir struct: **Solver <: AbstractSolver**. Toma 1 parametro $alg$ que define de que manera se va a resolver numericamente el sistema definido por **abstractSystem**.

* definir type: **AbstractTrajectory**. Definir struct: **Trajectory <: AbstractTrajectory**. Contiene dos vectores, uno codifica el tiempo y el otro la variable $x$ del sistema de Mackey-Glass.

Actual:

```julia
struct Trajectory <: AbstractTrajectory
  t::AbstractVector
  x::AbstractVector
 end
```


* definir funciones: **eom!** y **jacobian!** que definen la ecuacion de movimiento y el jacobiano de Mackey-Glass

* definir funcion: **DynSys(S::abstractSystem, init_cond::AbstractVector, algoirithm = Solver("discrete"))**. Devuelve el sistema dinamico como variable del tipo DynamicalSystem del paquete 'DynamicalSystems.jl'.

* definir funcion: **TimeSeries(S::abstractSystem, $\Delta t$ = 200., Transient = 1000.)**. Evoluciona el sistema un tiempo *Transient* y luego guarda los valores de *t* y *x* desde *Transient* hasta *Transient $+ \; \Delta t$* en una variable del tipo **abstractTrajectory**.

* definir type: **AbstractAttractor**. Definir struct: **Attractor <: AbstractAttractor**. Contiene el numero de picos de un atractor como **Int64**, el periodo del mismo como **Float64** y el orden de los picos como **Vector{Int64}**.

* definir funcion: **defineAttractor(X::Trajectory)**. Devuelve el **Atractor** de la trayectoria **X**. Si la trayectoria es caotica devuelve **Attractor(-1, -1, [-1])**. Si la trayectoria es un punto fijo devuelve **Attractor(0, 0, [])**.

## Pendientes

* Integrar isospike digrams

* Explorar los distintos algoritmos de cuatificacion de la predictibilidad de sistemas de 'DynamicalSystems.jl', principalmente *'Entropies.permentropy'*, *'ChaosTools.lyapunovspectrum'*, *'ChaosTools.lyapunov'*, *'ChaosTools.lyapunov_from_data'* y *'ChaosTools.basin_entropy'*.

* Implementar **basin_entropy** ya que el de *DynamicalSystems* como esta no funciona para MG.

* Calcular exponentes de Lyapunov

## Preguntas