├── README.md ├── cross_recurrence.py ├── example_crp.ipynb ├── example_jrp.ipynb ├── example_rp.ipynb ├── joint_recurrence.py ├── recurrence.py └── recurrence_analysis.py /README.md: -------------------------------------------------------------------------------- 1 | # recurrence_python 2 | 3 | This scientific software written in Python 3 computes Recurrence Plot (RP), Cross Recurrence Plot (CRP), Joint Recurrence Plot (JRP) and Recurrence Quantification Analysis. 4 | 5 | ## Cross Recurrence Plot (CRP) 6 | 7 | *Cross Recurrence Plot (CRP)* is a graph which shows all those times at which a state in one dynamical system occurs simultaneously in a second dynamical system. With other words, the CRP reveals all the times when the phase space trajectory of the first system visits roughly the same area in the phase space where the phase space trajectory of the second system is. [3] 8 | 9 | cross_recurrence.py computes: 10 | * Distance matrix (Manhattan, Euclidean or Supremum distance) 11 | * Cross recurrence matrix 12 | 13 | 14 | ## Joint Recurrence Plot (JRP) 15 | 16 | *Joint Recurrence Plot (JRP)* is a graph which shows all those times at which a recurrence in one dynamical system occurs simultaneously with a recurrence in a second dynamical system. [3] 17 | 18 | joint_recurrence.py computes: 19 | * Distance matrix (Manhattan, Euclidean or Supremum distance) 20 | * Joint recurrence matrix 21 | 22 | 23 | ## Recurrence Plot (RP) 24 | 25 | *Recurrence Plot (RP) * is a visualisation of a square matrix, in which the matrix elements correspond to those times at which a state of a dynamical system recurs. The RP reveals all the times when the phase space trajectory of the dynamical system visits roughly the same area in the phase space. [1,3] 26 | 27 | recurrence.py computes: 28 | * Distance matrix (Manhattan, Euclidean or Supremum distance) 29 | * Recurrence matrix 30 | 31 | 32 | ## Recurrence Quantification Analysis (RQA) 33 | 34 | *Recurrence Quantification Analysis (RQA)* is a method which quantifies the number and duration of recurrences of a dynamical system presented by its state space trajectory. [2,3,4,5] 35 | 36 | recurrence_analysis.py computes: 37 | * Frequency distribution of diagonal lines (P(l)) 38 | * Frequency distribution of vertical lines (P(v)) 39 | * Frequency distribution of white vertical lines (P(w)) 40 | * Recurrence rate (RR) 41 | * Determinism (DET) 42 | * Average diagonal line length (L) 43 | * Longest diagonal line length (L_max) 44 | * Divergence (DIV) 45 | * Entropy diagonal lines (L_entr) 46 | * Laminarity (LAM) 47 | * Average diagonal line length (V) or Trapping time (TT) 48 | * Longest vertical line length (V_max) 49 | * Entropy vertical lines (V_entr) 50 | * Average white vertical line length (W) 51 | * Longest white vertical line length (W_max) 52 | * Entropy white vertical lines (W_entr) 53 | * Ratio determinism / recurrence rate (DET/RR) 54 | * Ratio laminarity / determinism (LAM/DET) 55 | 56 | 57 | ## References 58 | 59 | [1](https://www.doi.org/10.1209/0295-5075/4/9/004) J.-P. Eckmann, S. Oliffson Kamphorst, D. Ruelle: Recurrence Plots of Dynamical Systems, Europhysics Letters, 4(9), 973–977p. (1987) 60 | 61 | [2](https://www.doi.org/10.1103/PhysRevE.66.026702) N. Marwan, N. Wessel, U. Meyerfeldt, A. Schirdewan, J. Kurths: Recurrence Plot Based Measures of Complexity and its Application to Heart Rate Variability Data, Physical Review E, 66(2), 026702p. (2002) 62 | 63 | [3](http://www.recurrence-plot.tk) N. Marwan, M. C. Romano, M. Thiel, J. Kurths: Recurrence Plots for the Analysis of Complex Systems, Physics Reports, 438(5-6), 237-329p. (2007) 64 | 65 | [4](https://www.doi.org/10.1152/jappl.1994.76.2.965) C. L. Webber, Jr., J. P. Zbilut: Dynamical assessment of physiological systems and states using recurrence plot strategies, Journal of Applied Physiology, 76(2), 965-973p. (1994) 66 | 67 | [5](https://www.doi.org/10.1016/0375-9601(92)90426-M) J. P. Zbilut, C. L. Webber, Jr.: Embeddings and delays as derived from quantification of recurrence plots, Physics Letters A, 171(3–4), 199–203p. (1992) 68 | -------------------------------------------------------------------------------- /cross_recurrence.py: -------------------------------------------------------------------------------- 1 | import numpy as np 2 | 3 | def distance_matrix(data1, data2, dimension, delay1, delay2, norm): 4 | N1 = int(len(data1) - (dimension-1) * delay1) 5 | N2 = int(len(data2) - (dimension-1) * delay2) 6 | distance_matrix = np.zeros((N1, N2), dtype="float32") 7 | if norm == 'manhattan': 8 | for i in range(N1): 9 | for j in range(N2): 10 | temp = 0.0 11 | for k in range(dimension): 12 | temp += np.abs(data1[i+k*delay1] - data2[j+k*delay2]) 13 | distance_matrix[i,j] = temp 14 | elif norm == 'euclidean': 15 | for i in range(N1): 16 | for j in range(N2): 17 | temp = 0.0 18 | for k in range(dimension): 19 | temp += np.power(data1[i+k*delay1] - data2[j+k*delay2], 2) 20 | distance_matrix[i,j] = np.sqrt(temp) 21 | elif norm == 'supremum': 22 | temp = np.zeros(dimension) 23 | distance_matrix = np.zeros((N1, N2), dtype="float32") 24 | for i in range(N1): 25 | for j in range(N2): 26 | for k in range(dimension): 27 | temp[k] = np.abs(data1[i+k*delay1] - data2[j+k*delay2]) 28 | distance_matrix[i,j] = np.max(temp) 29 | return distance_matrix 30 | 31 | def cross_matrix(data1, data2, dimension, delay1, delay2, threshold, norm): 32 | cross_matrix = distance_matrix(data1, data2, dimension, delay1, delay2, norm) 33 | N1 = len(cross_matrix[:,0]) 34 | N2 = len(cross_matrix[0]) 35 | for i in range(N1): 36 | for j in range(N2): 37 | if cross_matrix[i,j] <= threshold: 38 | cross_matrix[i,j] = 1 39 | else: 40 | cross_matrix[i,j] = 0 41 | return cross_matrix.astype(int) 42 | -------------------------------------------------------------------------------- /example_rp.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "cells": [ 3 | { 4 | "cell_type": "markdown", 5 | "metadata": {}, 6 | "source": [ 7 | "# 1. Recurrence Plot\n", 8 | "\n", 9 | "\n", 10 | " - **Time series**\n", 11 | "\n", 12 | "The *time series* ($S$) is a set of observations. It can be defined as\n", 13 | "\n", 14 | "$$S = \\left\\lbrace s_{1}, s_{2}, \\cdots, s_{M} \\right\\rbrace,$$ \n", 15 | "\n", 16 | "where $s_{i}$ is the observation recorded at time $i = \\Delta t$ (where $\\Delta t$ is the sampling time) and $M$ is the number of observations.\n", 17 | "\n", 18 | "
\n", 19 | "\n", 20 | " - **Phase space trajectory**\n", 21 | "\n", 22 | "The phase space trajectory can be reconstructed from a time series $S$ using *time delay embedding method* [1]\n", 23 | "\n", 24 | "$$ \\vec{x}_{i} = \\left( s_{i}, s_{i+\\tau}, s_{i+2\\tau}, \\cdots, s_{i+(m-1)\\tau} \\right), $$\n", 25 | "\n", 26 | "where $m$ is an embedding dimension and $\\tau$ is a time delay. Usually, the embedding dimensiom and the time delay can be estimated from the time series $S$ using false nearest neighbor algorithm [2,3] and mutual information function [4].\n", 27 | "\n", 28 | " - **Distance matrix**\n", 29 | "\n", 30 | "\n", 31 | "The distance matrix ($D$) stores the distance between pairs of states. It can be mathematically expressed as\n", 32 | "\n", 33 | "$$D_{i,j}^{m} = \\left \\| \\vec{x}_{i}-\\vec{x}_{j} \\right \\|, \\;\\; \\vec{x}_{i}, \\vec{x}_{j} \\in \\mathbb{R}^{m} \\;\\; i, j = \\left\\lbrace 1, 2, \\cdots, N \\right\\rbrace,$$\n", 34 | "\n", 35 | "where $N = M - (m - 1) \\tau$ is the number of considered states $\\vec{x}$, $m$ is an embedding dimension, $\\tau$ is a time delay and $\\left \\| \\cdot \\right \\|$ is a norm. \n", 36 | "\n", 37 | " - **Recurrence matrix**\n", 38 | "\n", 39 | "A recurrence is defined when the distance between two states $\\vec{x}_{i}$ and $\\vec{x}_{j}$ is smaller than a threshold $\\rho$. Thus, the recurrence matrix (*R*) is defined by\n", 40 | "\n", 41 | "$$R_{i,j}^{m,\\rho} = \\theta \\left( \\left \\| \\vec{x}_{i}-\\vec{x}_{j} \\right \\| - \\rho \\right), \\;\\; \\vec{x}_{i} \\in \\mathbb{R}^{m}, \\;\\; i, j = \\left\\lbrace 1, 2, \\cdots, N \\right\\rbrace,$$\n", 42 | "\n", 43 | "where $N = M - (m - 1) \\tau$ is the number of considered states $\\vec{x}$, $m$ is an embedding dimension, $\\tau$ is a time delay, $\\rho$ is a threshold distance, $\\left \\| \\cdot \\right \\|$ is a norm and $\\theta \\left( \\cdot \\right)$ is the Heaviside function that guarantees\n", 44 | "\n", 45 | "$$ R_{i,j}^{m\\rho} = \\begin{cases}\n", 46 | "1, & \\text{ if the distance between } \\vec{x}_{i} \\text{ and } \\vec{x}_{j} \\text{ is smaller than } \\rho \\\\ \n", 47 | "0, & \\text{ otherwise }\n", 48 | "\\end{cases} . $$\n", 49 | "\n", 50 | " - **Recurrence plot**\n", 51 | "\n", 52 | "The Recurrence Plot (RP) [5] is an advanced technique of nonlinear data analysis which reveals all the times when the phase space trajectory visits roughly the same area in the phase space. It is the visualization of a recurrence matrix. If $R_{i,j}^{m,\\tau} = 1$, a black dot is placed at position $(i,j)$ of the graph. If $R_{i,j}^{m,\\tau} = 0$, a white dot is marked at position $(i,j)$ of the plot. " 53 | ] 54 | }, 55 | { 56 | "cell_type": "markdown", 57 | "metadata": {}, 58 | "source": [ 59 | "## 1.1 Example" 60 | ] 61 | }, 62 | { 63 | "cell_type": "code", 64 | "execution_count": 1, 65 | "metadata": {}, 66 | "outputs": [], 67 | "source": [ 68 | "import numpy as np\n", 69 | "import matplotlib.pyplot as plt\n", 70 | "import matplotlib as mpl\n", 71 | "import locale\n", 72 | "import recurrence as rp" 73 | ] 74 | }, 75 | { 76 | "cell_type": "code", 77 | "execution_count": 2, 78 | "metadata": {}, 79 | "outputs": [], 80 | "source": [ 81 | "# For Brazil\n", 82 | "locale.setlocale(locale.LC_ALL, 'pt_BR.utf8')\n", 83 | "mpl.rcParams['axes.formatter.use_locale'] = True" 84 | ] 85 | }, 86 | { 87 | "cell_type": "code", 88 | "execution_count": 3, 89 | "metadata": {}, 90 | "outputs": [ 91 | { 92 | "data": { 93 | "image/png": "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2RURERGRwFKyKyIiIiKBpWRXRERERAJLya6IiIiIBJaSXREREREJLCW7IiIiIhJYSnZFREREJLCU7IqIiIhIYCnZFREREZHAUrIrIiIiIoGlZFdEREREAkvJrohIDDOzQWbmzGyimZ1tZkvNrNTMdpjZ42aWEjruAjN738z2mtk3ZvaQmbWIdPlFRPymZFdEJBj6A28DJcCfgU3AWOD/zGwk8BKwObRvNzAeuD0yRRURCR9zzkW6DCIicpzMbBCwNPTjcOfcy6HtLYE84HRgJ3CRc+7D0L52wAagBZDmnKsId7lFRMJFLbsiIsGwrDrRBXDOHQReAAx4tTrRDe0rBf4KnAikh7ugIiLhpGRXRCQYVjewrSj075oj7OvqT3FERKKDkl0RkWDY08C2ikbsa+lPcUREooOSXREREREJLCW7IiIiIhJYSnZFREREJLCU7IqIiIhIYCnZFREREZHA0kMlRERERCSw1LIrIiIiIoGlZFdEREREAkvJroiIiIgElpJdEREREQksJbsiIiIiElhKdkVEREQksJTsioiIiEhgKdkVERERkcBSsisiIiIigaVkV0REREQCS8muiIiIiASWkl0RERERCaz/DzWIfxzSIkO5AAAAAElFTkSuQmCC\n", 94 | "text/plain": [ 95 | "" 96 | ] 97 | }, 98 | "metadata": {}, 99 | "output_type": "display_data" 100 | } 101 | ], 102 | "source": [ 103 | "# Creating and plotting the time series\n", 104 | "data = [0.1382232581, 0.4764703560, 0.9977854234, 0.0088386889, 0.0350422661, 0.1352572226, 0.4678508254, 0.9958657223, 0.0164687418, \n", 105 | "0.0647900894, 0.2423693348, 0.7345057614, 0.7800281914, 0.6863368481, 0.8611143162, 0.4783858026, 0.9981313059, 0.0074608084, 0.0296205790, 0.1149728010]\n", 106 | "\n", 107 | "plt.figure(num= None, figsize=((8,4)), dpi=100)\n", 108 | "plt.plot([x for x in range(1, len(data)+1)], data, '-*k')\n", 109 | "plt.xlabel('m', fontsize=14)\n", 110 | "plt.ylabel(r'$\\mathrm{s_{m}}$', fontsize = 14)\n", 111 | "plt.xticks([x for x in range(1, len(data)+1)], [x for x in range(1, len(data)+1)])\n", 112 | "plt.show()" 113 | ] 114 | }, 115 | { 116 | "cell_type": "code", 117 | "execution_count": 4, 118 | "metadata": {}, 119 | "outputs": [ 120 | { 121 | "data": { 122 | "image/png": "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\n", 123 | "text/plain": [ 124 | "" 125 | ] 126 | }, 127 | "metadata": {}, 128 | "output_type": "display_data" 129 | } 130 | ], 131 | "source": [ 132 | "# Creating and plotting the distance matrix and recurrence plot using Manhattan distance\n", 133 | "dimension, delay, threshold, norm = 3, 2, 0.7, \"manhattan\"\n", 134 | "distance_matrix = rp.distance_matrix(data, dimension, delay, norm)\n", 135 | "recurrence_matrix = rp.recurrence_matrix(data, dimension, delay, threshold, norm)\n", 136 | "LIN = len(distance_matrix[:,0])\n", 137 | "\n", 138 | "plt.figure(num=None, figsize=((12,6)), dpi= 100)\n", 139 | "plt.subplots_adjust(wspace = 0.3)\n", 140 | "plt.subplot(1,2,1)\n", 141 | "plt.imshow(distance_matrix, cmap = 'binary')\n", 142 | "plt.axis([-0.5, LIN-0.5, -0.5, LIN-0.5])\n", 143 | "plt.xlabel('i', fontsize=14)\n", 144 | "plt.ylabel('j', fontsize=14)\n", 145 | "plt.xticks([x for x in range(LIN)], [x+1 for x in range(LIN)])\n", 146 | "plt.yticks([x for x in range(LIN)], [x+1 for x in range(LIN)])\n", 147 | "plt.colorbar(fraction=0.046, pad=0.04)\n", 148 | "plt.subplot(1,2,2)\n", 149 | "cmap = plt.get_cmap('binary', 2)\n", 150 | "plt.imshow(recurrence_matrix, cmap = cmap, vmin = 0, vmax = 1)\n", 151 | "plt.axis([-0.5, LIN-0.5, -0.5, LIN-0.5])\n", 152 | "plt.xlabel('i', fontsize=14)\n", 153 | "plt.ylabel('j', fontsize=14)\n", 154 | "plt.xticks([x for x in range(LIN)], [x+1 for x in range(LIN)])\n", 155 | "plt.yticks([x for x in range(LIN)], [x+1 for x in range(LIN)])\n", 156 | "cbar = plt.colorbar(fraction=0.046, pad=0.04, ticks=[0.25,0.75])\n", 157 | "cbar.ax.set_yticklabels(['0', '1'])\n", 158 | "plt.show()" 159 | ] 160 | }, 161 | { 162 | "cell_type": "code", 163 | "execution_count": 5, 164 | "metadata": {}, 165 | "outputs": [ 166 | { 167 | "data": { 168 | "image/png": "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\n", 169 | "text/plain": [ 170 | "" 171 | ] 172 | }, 173 | "metadata": {}, 174 | "output_type": "display_data" 175 | } 176 | ], 177 | "source": [ 178 | "# Creating and plotting the distance matrix and recurrence plot using Euclidean distance\n", 179 | "dimension, delay, threshold, norm = 3, 2, 0.7, \"euclidean\"\n", 180 | "distance_matrix = rp.distance_matrix(data, dimension, delay, norm)\n", 181 | "recurrence_matrix = rp.recurrence_matrix(data, dimension, delay, threshold, norm)\n", 182 | "LIN = len(distance_matrix[:,0])\n", 183 | "\n", 184 | "plt.figure(num=None, figsize=((12,6)), dpi= 100)\n", 185 | "plt.subplots_adjust(wspace = 0.3)\n", 186 | "plt.subplot(1,2,1)\n", 187 | "plt.imshow(distance_matrix, cmap = 'binary')\n", 188 | "plt.axis([-0.5, LIN-0.5, -0.5, LIN-0.5])\n", 189 | "plt.xlabel('i', fontsize=14)\n", 190 | "plt.ylabel('j', fontsize=14)\n", 191 | "plt.xticks([x for x in range(LIN)], [x+1 for x in range(LIN)])\n", 192 | "plt.yticks([x for x in range(LIN)], [x+1 for x in range(LIN)])\n", 193 | "plt.colorbar(fraction=0.046, pad=0.04)\n", 194 | "plt.subplot(1,2,2)\n", 195 | "cmap = plt.get_cmap('binary', 2)\n", 196 | "plt.imshow(recurrence_matrix, cmap = cmap, vmin = 0, vmax = 1)\n", 197 | "plt.axis([-0.5, LIN-0.5, -0.5, LIN-0.5])\n", 198 | "plt.xlabel('i', fontsize=14)\n", 199 | "plt.ylabel('j', fontsize=14)\n", 200 | "plt.xticks([x for x in range(LIN)], [x+1 for x in range(LIN)])\n", 201 | "plt.yticks([x for x in range(LIN)], [x+1 for x in range(LIN)])\n", 202 | "cbar = plt.colorbar(fraction=0.046, pad=0.04, ticks=[0.25,0.75])\n", 203 | "cbar.ax.set_yticklabels(['0', '1'])\n", 204 | "plt.show()" 205 | ] 206 | }, 207 | { 208 | "cell_type": "code", 209 | "execution_count": 6, 210 | "metadata": {}, 211 | "outputs": [ 212 | { 213 | "data": { 214 | "image/png": "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\n", 215 | "text/plain": [ 216 | "" 217 | ] 218 | }, 219 | "metadata": {}, 220 | "output_type": "display_data" 221 | } 222 | ], 223 | "source": [ 224 | "# Creating and plotting the distance matrix and recurrence plot using Supremum distance\n", 225 | "dimension, delay, threshold, norm = 3, 2, 0.7, \"supremum\"\n", 226 | "distance_matrix = rp.distance_matrix(data, dimension, delay, norm)\n", 227 | "recurrence_matrix = rp.recurrence_matrix(data, dimension, delay, threshold, norm)\n", 228 | "LIN = len(distance_matrix[:,0])\n", 229 | "\n", 230 | "plt.figure(num=None, figsize=((12,6)), dpi= 100)\n", 231 | "plt.subplots_adjust(wspace = 0.3)\n", 232 | "plt.subplot(1,2,1)\n", 233 | "plt.imshow(distance_matrix, cmap = 'binary')\n", 234 | "plt.axis([-0.5, LIN-0.5, -0.5, LIN-0.5])\n", 235 | "plt.xlabel('i', fontsize=14)\n", 236 | "plt.ylabel('j', fontsize=14)\n", 237 | "plt.xticks([x for x in range(LIN)], [x+1 for x in range(LIN)])\n", 238 | "plt.yticks([x for x in range(LIN)], [x+1 for x in range(LIN)])\n", 239 | "plt.colorbar(fraction=0.046, pad=0.04)\n", 240 | "plt.subplot(1,2,2)\n", 241 | "cmap = plt.get_cmap('binary', 2)\n", 242 | "plt.imshow(recurrence_matrix, cmap = cmap, vmin = 0, vmax = 1)\n", 243 | "plt.axis([-0.5, LIN-0.5, -0.5, LIN-0.5])\n", 244 | "plt.xlabel('i', fontsize=14)\n", 245 | "plt.ylabel('j', fontsize=14)\n", 246 | "plt.xticks([x for x in range(LIN)], [x+1 for x in range(LIN)])\n", 247 | "plt.yticks([x for x in range(LIN)], [x+1 for x in range(LIN)])\n", 248 | "cbar = plt.colorbar(fraction=0.046, pad=0.04, ticks=[0.25,0.75])\n", 249 | "cbar.ax.set_yticklabels(['0', '1'])\n", 250 | "plt.show()" 251 | ] 252 | }, 253 | { 254 | "cell_type": "markdown", 255 | "metadata": {}, 256 | "source": [ 257 | "## 1.2 References\n", 258 | "\n", 259 | "[1] Takens F., Detecting strange attractors in turbulence, In: Rand D., Young LS. (eds) Dynamical Systems and Turbulence, Warwick 1980. Lecture Notes in Mathematics, vol 898. Springer, Berlin, Heidelberg (1981). DOI: [10.1007/BFb0091924](https://doi.org/10.1007/BFb0091924)\n", 260 | "\n", 261 | "[2] M. B. Kennel, R. Brown, H. D. I. Abarbanel, Determining embedding dimension for phase-space reconstruction using a geometrical construction, Physical Review A, 45(6), 3403-3411p (1992). DOI: [10.1103/PhysRevA.45.3403](https://doi.org/10.1103/PhysRevA.45.3403)\n", 262 | "\n", 263 | "[3] L. Cao, Practical method for determining the minimum embedding dimension of a scalar time series, Physica D: Nonlinear Phenomena, 110(12), 43-50p (1997). DOI: [10.1016/S0167-2789(97)00118-8](https://doi.org/10.1016/S0167-2789(97)00118-8)\n", 264 | "\n", 265 | "[4] A. Fraser, H. Swinney, Independent coordinates for strange attractors from mutual information, Physical Review A, 33(2), 1134-1140p (1986). DOI: [10.1103/PhysRevA.33.1134](https://doi.org/10.1103/PhysRevA.33.1134)\n", 266 | "\n", 267 | "[5] J.-P. Eckmann, S. Oliffson Kamphorst and D. Ruelle, Recurrence Plots of Dynamical Systems, Europhysics Letters, 4(9), 973-977p (1987). DOI: [10.1209/0295-5075/4/9/004](https://doi.org/10.1209/0295-5075/4/9/004)" 268 | ] 269 | } 270 | ], 271 | "metadata": { 272 | "kernelspec": { 273 | "display_name": "Python 3", 274 | "language": "python", 275 | "name": "python3" 276 | }, 277 | "language_info": { 278 | "codemirror_mode": { 279 | "name": "ipython", 280 | "version": 3 281 | }, 282 | "file_extension": ".py", 283 | "mimetype": "text/x-python", 284 | "name": "python", 285 | "nbconvert_exporter": "python", 286 | "pygments_lexer": "ipython3", 287 | "version": "3.6.9" 288 | } 289 | }, 290 | "nbformat": 4, 291 | "nbformat_minor": 2 292 | } 293 | -------------------------------------------------------------------------------- /joint_recurrence.py: -------------------------------------------------------------------------------- 1 | import numpy as np 2 | 3 | def distance_matrix(data, dimension, delay, norm): 4 | N = int(len(data) - (dimension-1) * delay) 5 | distance_matrix = np.zeros((N, N), dtype="float32") 6 | if norm == 'manhattan': 7 | for i in range(N): 8 | for j in range(i, N, 1): 9 | temp = 0.0 10 | for k in range(dimension): 11 | temp += np.abs(data[i+k*delay] - data[j+k*delay]) 12 | distance_matrix[i,j] = distance_matrix[j,i] = temp 13 | elif norm == 'euclidean': 14 | for i in range(N): 15 | for j in range(i, N, 1): 16 | temp = 0.0 17 | for k in range(dimension): 18 | temp += np.power(data[i+k*delay] - data[j+k*delay], 2) 19 | distance_matrix[i,j] = distance_matrix[j,i] = np.sqrt(temp) 20 | elif norm == 'supremum': 21 | temp = np.zeros(dimension) 22 | for i in range(N): 23 | for j in range(i, N, 1): 24 | for k in range(dimension): 25 | temp[k] = np.abs(data[i+k*delay] - data[j+k*delay]) 26 | distance_matrix[i,j] = distance_matrix[j,i] = np.max(temp) 27 | return distance_matrix 28 | 29 | def recurrence_matrix(data, dimension, delay, threshold, norm): 30 | N = int(len(data) - (dimension-1) * delay) 31 | distance_matrix_1 = distance_matrix(data, dimension, delay, norm) 32 | for i in range(N): 33 | for j in range(i, N, 1): 34 | if distance_matrix_1[i,j] <= threshold: 35 | distance_matrix_1[i,j] = distance_matrix_1[j,i] = 1 36 | else: 37 | distance_matrix_1[i,j] = distance_matrix_1[j,i] = 0 38 | return distance_matrix_1.astype(int) 39 | 40 | def joint_matrix(data1, data2, dimension1, dimension2, delay1, delay2, threshold1, threshold2, norm1, norm2): 41 | N1 = int(len(data1) - (dimension1-1) * delay1) 42 | N2 = int(len(data2) - (dimension2-1) * delay2) 43 | assert N1 == N2, "Space phase must have the same size" 44 | recurrence_matrix_1 = recurrence_matrix(data1, dimension1, delay1, threshold1, norm1) 45 | recurrence_matrix_2 = recurrence_matrix(data2, dimension2, delay2, threshold2, norm2) 46 | for i in range(N1): 47 | for j in range(i, N1, 1): 48 | if recurrence_matrix_1[i,j] == 1 and recurrence_matrix_2[i,j] == 1: 49 | recurrence_matrix_1[i,j] = recurrence_matrix_1[j,i] = 1 50 | else: 51 | recurrence_matrix_1[i,j] = recurrence_matrix_1[j,i] = 0 52 | return recurrence_matrix_1.astype(int) 53 | -------------------------------------------------------------------------------- /recurrence.py: -------------------------------------------------------------------------------- 1 | import numpy as np 2 | 3 | def distance_matrix(data, dimension, delay, norm): 4 | N = int(len(data) - (dimension-1) * delay) 5 | distance_matrix = np.zeros((N, N), dtype="float32") 6 | if norm == 'manhattan': 7 | for i in range(N): 8 | for j in range(i, N, 1): 9 | temp = 0.0 10 | for k in range(dimension): 11 | temp += np.abs(data[i+k*delay] - data[j+k*delay]) 12 | distance_matrix[i,j] = distance_matrix[j,i] = temp 13 | elif norm == 'euclidean': 14 | for i in range(N): 15 | for j in range(i, N, 1): 16 | temp = 0.0 17 | for k in range(dimension): 18 | temp += np.power(data[i+k*delay] - data[j+k*delay], 2) 19 | distance_matrix[i,j] = distance_matrix[j,i] = np.sqrt(temp) 20 | elif norm == 'supremum': 21 | temp = np.zeros(dimension) 22 | for i in range(N): 23 | for j in range(i, N, 1): 24 | for k in range(dimension): 25 | temp[k] = np.abs(data[i+k*delay] - data[j+k*delay]) 26 | distance_matrix[i,j] = distance_matrix[j,i] = np.max(temp) 27 | return distance_matrix 28 | 29 | def recurrence_matrix(data, dimension, delay, threshold, norm): 30 | recurrence_matrix = distance_matrix(data, dimension, delay, norm) 31 | N = len(recurrence_matrix[:,0]) 32 | for i in range(N): 33 | for j in range(i, N, 1): 34 | if recurrence_matrix[i,j] <= threshold: 35 | recurrence_matrix[i,j] = recurrence_matrix[j,i] = 1 36 | else: 37 | recurrence_matrix[i,j] = recurrence_matrix[j,i] = 0 38 | return recurrence_matrix.astype(int) 39 | -------------------------------------------------------------------------------- /recurrence_analysis.py: -------------------------------------------------------------------------------- 1 | import numpy as np 2 | 3 | def recurrence_quantification_analysis(recurrence_matrix, minimum_diagonal_line_length, minimum_vertical_line_length, minimum_white_vertical_line_length): 4 | # Calculating the number of states - N 5 | number_of_vectors = recurrence_matrix.shape[0] 6 | 7 | # Calculating the diagonal frequency distribution - P(l) 8 | diagonal_frequency_distribution = np.zeros(number_of_vectors+1) 9 | for i in range(number_of_vectors-1, -1, -1): 10 | diagonal_line_length = 0 11 | for j in range(0, number_of_vectors-i): 12 | if recurrence_matrix[i+j,j] == 1: 13 | diagonal_line_length += 1 14 | if j == (number_of_vectors-i-1): 15 | diagonal_frequency_distribution[diagonal_line_length] += 1.0 16 | else: 17 | if diagonal_line_length != 0: 18 | diagonal_frequency_distribution[diagonal_line_length] += 1.0 19 | diagonal_line_length = 0 20 | for k in range(1,number_of_vectors): 21 | diagonal_line_length = 0 22 | for i in range(number_of_vectors-k): 23 | j = i + k 24 | if recurrence_matrix[i,j] == 1: 25 | diagonal_line_length += 1 26 | if j == (number_of_vectors-1): 27 | diagonal_frequency_distribution[diagonal_line_length] += 1.0 28 | else: 29 | if diagonal_line_length != 0: 30 | diagonal_frequency_distribution[diagonal_line_length] += 1.0 31 | diagonal_line_length = 0 32 | 33 | # Calculating the vertical frequency distribution - P(v) 34 | vertical_frequency_distribution = np.zeros(number_of_vectors+1) 35 | for i in range(number_of_vectors): 36 | vertical_line_length = 0 37 | for j in range(number_of_vectors): 38 | if recurrence_matrix[i,j] == 1: 39 | vertical_line_length += 1 40 | if j == (number_of_vectors-1): 41 | vertical_frequency_distribution[vertical_line_length] += 1.0 42 | else: 43 | if vertical_line_length != 0: 44 | vertical_frequency_distribution[vertical_line_length] += 1.0 45 | vertical_line_length = 0 46 | 47 | # Calculating the white vertical frequency distribution - P(w) 48 | white_vertical_frequency_distribution = np.zeros(number_of_vectors+1) 49 | for i in range(number_of_vectors): 50 | white_vertical_line_length = 0 51 | for j in range(number_of_vectors): 52 | if recurrence_matrix[i,j] == 0: 53 | white_vertical_line_length += 1 54 | if j == (number_of_vectors-1): 55 | white_vertical_frequency_distribution[white_vertical_line_length] += 1.0 56 | else: 57 | if white_vertical_line_length != 0: 58 | white_vertical_frequency_distribution[white_vertical_line_length] += 1.0 59 | white_vertical_line_length = 0 60 | 61 | # Calculating the recurrence rate - RR 62 | recurrence_rate = np.float(np.sum(recurrence_matrix))/np.power(number_of_vectors, 2) 63 | 64 | # Calculating the determinism - DET 65 | numerator = np.sum([l * diagonal_frequency_distribution[l] for l in range(minimum_diagonal_line_length, number_of_vectors)]) 66 | denominator = np.sum([l * diagonal_frequency_distribution[l] for l in range(1, number_of_vectors)]) 67 | determinism = numerator / denominator 68 | 69 | # Calculating the average diagonal line length - L 70 | numerator = np.sum([l * diagonal_frequency_distribution[l] for l in range(minimum_diagonal_line_length, number_of_vectors)]) 71 | denominator = np.sum([diagonal_frequency_distribution[l] for l in range(minimum_diagonal_line_length, number_of_vectors)]) 72 | average_diagonal_line_length = numerator / denominator 73 | 74 | # Calculating the longest diagonal line length - Lmax 75 | for l in range(number_of_vectors-1, 0, -1): 76 | if diagonal_frequency_distribution[l] != 0: 77 | longest_diagonal_line_length = l 78 | break 79 | 80 | # Calculating the divergence - DIV 81 | divergence = 1. / longest_diagonal_line_length 82 | 83 | # Calculating the entropy diagonal lines - Lentr 84 | sum_diagonal_frequency_distribution = np.float(np.sum(diagonal_frequency_distribution[minimum_diagonal_line_length:-1])) 85 | entropy_diagonal_lines = 0 86 | for l in range(minimum_diagonal_line_length, number_of_vectors): 87 | if diagonal_frequency_distribution[l] != 0: 88 | entropy_diagonal_lines += (diagonal_frequency_distribution[l]/sum_diagonal_frequency_distribution) * np.log(diagonal_frequency_distribution[l]/sum_diagonal_frequency_distribution) 89 | entropy_diagonal_lines *= -1 90 | 91 | # Calculating the ratio determinism_recurrence - DET/RR 92 | ratio_determinism_recurrence_rate = determinism / recurrence_rate 93 | 94 | # Calculating the laminarity - LAM 95 | numerator = np.sum([v * vertical_frequency_distribution[v] for v in range(minimum_vertical_line_length, number_of_vectors+1)]) 96 | denominator = np.sum([v * vertical_frequency_distribution[v] for v in range(1, number_of_vectors+1)]) 97 | laminarity = numerator / denominator 98 | 99 | # Calculating the average vertical line length - V 100 | numerator = np.sum([v * vertical_frequency_distribution[v] for v in range(minimum_vertical_line_length, number_of_vectors+1)]) 101 | denominator = np.sum([vertical_frequency_distribution[v] for v in range(minimum_vertical_line_length, number_of_vectors+1)]) 102 | average_vertical_line_length = numerator / denominator 103 | 104 | # Calculating the longest vertical line length - Vmax 105 | for v in range(number_of_vectors, 0, -1): 106 | if vertical_frequency_distribution[v] != 0: 107 | longest_vertical_line_length = v 108 | break 109 | 110 | # Calculating the entropy vertical lines - Ventr 111 | sum_vertical_frequency_distribution = np.float(np.sum(vertical_frequency_distribution[minimum_vertical_line_length:])) 112 | entropy_vertical_lines = 0 113 | for v in range(minimum_vertical_line_length, number_of_vectors+1): 114 | if vertical_frequency_distribution[v] != 0: 115 | entropy_vertical_lines += (vertical_frequency_distribution[v]/sum_vertical_frequency_distribution) * np.log(vertical_frequency_distribution[v]/sum_vertical_frequency_distribution) 116 | entropy_vertical_lines *= -1 117 | 118 | # Calculatint the ratio laminarity_determinism - LAM/DET 119 | ratio_laminarity_determinism = laminarity / determinism 120 | 121 | # Calculating the average white vertical line length - W 122 | numerator = np.sum([w * white_vertical_frequency_distribution[w] for w in range(minimum_white_vertical_line_length, number_of_vectors+1)]) 123 | denominator = np.sum([white_vertical_frequency_distribution[w] for w in range(minimum_white_vertical_line_length, number_of_vectors+1)]) 124 | average_white_vertical_line_length = numerator / denominator 125 | 126 | # Calculating the longest white vertical line length - Wmax 127 | for w in range(number_of_vectors, 0, -1): 128 | if white_vertical_frequency_distribution[w] != 0: 129 | longest_white_vertical_line_length = w 130 | break 131 | 132 | # Calculating the entropy white vertical lines - Wentr 133 | sum_white_vertical_frequency_distribution = np.float(np.sum(white_vertical_frequency_distribution[minimum_white_vertical_line_length:])) 134 | entropy_white_vertical_lines = 0 135 | for w in range(minimum_white_vertical_line_length, number_of_vectors+1): 136 | if white_vertical_frequency_distribution[w] != 0: 137 | entropy_white_vertical_lines += (white_vertical_frequency_distribution[w]/sum_white_vertical_frequency_distribution) * np.log(white_vertical_frequency_distribution[w]/sum_white_vertical_frequency_distribution) 138 | entropy_white_vertical_lines *= -1 139 | 140 | return diagonal_frequency_distribution, vertical_frequency_distribution, white_vertical_frequency_distribution, recurrence_rate, determinism, average_diagonal_line_length, longest_diagonal_line_length, divergence, entropy_diagonal_lines, laminarity, average_vertical_line_length, longest_vertical_line_length, entropy_vertical_lines, average_white_vertical_line_length, longest_white_vertical_line_length, entropy_white_vertical_lines, ratio_determinism_recurrence_rate, ratio_laminarity_determinism 141 | --------------------------------------------------------------------------------