{"id":42109317,"url":"https://github.com/pucicu/rp_speed_test","last_synced_at":"2026-03-10T23:19:22.655Z","repository":{"id":94357500,"uuid":"460504154","full_name":"pucicu/RP_Speed_Test","owner":"pucicu","description":"Code to get the calculation speed for recurrence plots/ recurrence quantification analysis using MATLAB, R, Python, and Julia code.","archived":false,"fork":false,"pushed_at":"2026-02-27T06:50:38.000Z","size":948,"stargazers_count":8,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2026-02-27T12:55:28.048Z","etag":null,"topics":["nonlinear-dynamics","performance-testing","recurrence-plot","recurrence-quantification-analysis","time-series-analysis"],"latest_commit_sha":null,"homepage":"http://recurrence-plot.tk/","language":"Python","has_issues":false,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/pucicu.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":"CITATION.cff","codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2022-02-17T15:56:20.000Z","updated_at":"2026-01-06T11:49:09.000Z","dependencies_parsed_at":"2025-04-12T03:52:19.216Z","dependency_job_id":"c4b8bd22-cae4-44a6-a927-be7ea62a0f97","html_url":"https://github.com/pucicu/RP_Speed_Test","commit_stats":null,"previous_names":[],"tags_count":4,"template":false,"template_full_name":null,"purl":"pkg:github/pucicu/RP_Speed_Test","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pucicu%2FRP_Speed_Test","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pucicu%2FRP_Speed_Test/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pucicu%2FRP_Speed_Test/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pucicu%2FRP_Speed_Test/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/pucicu","download_url":"https://codeload.github.com/pucicu/RP_Speed_Test/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pucicu%2FRP_Speed_Test/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":30361457,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-10T21:41:54.280Z","status":"ssl_error","status_checked_at":"2026-03-10T21:40:59.357Z","response_time":106,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["nonlinear-dynamics","performance-testing","recurrence-plot","recurrence-quantification-analysis","time-series-analysis"],"created_at":"2026-01-26T13:31:27.515Z","updated_at":"2026-03-10T23:19:22.650Z","avatar_url":"https://github.com/pucicu.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Comparison of calculation speed for recurrence plots/ recurrence quantification analysis for MATLAB, R, Python, and Julia\n\n[![SWH](https://archive.softwareheritage.org/badge/origin/https://github.com/pucicu/RP_Speed_Test/)](https://archive.softwareheritage.org/browse/origin/?origin_url=https://github.com/pucicu/RP_Speed_Test)\n![file size](https://img.shields.io/github/repo-size/pucicu/RP_Speed_Test)\n![GitHub Release](https://img.shields.io/github/v/release/pucicu/RP_Speed_Test)\n\n\n## General\n\nMeasuring the calculation time for creating a recurrence plot (RP)\nand calculation of the standard recurrence quantification measures\nfor the Rössler system with the standard parameters (_a_ = 0.25, _b_ = 0.25, and _c_ = 4)\nand a sampling time of _Δt_ = 0.05.\nThe RPs were calculated using Euclidean norm and a threshold of _ε_ = 1.2.\nSelected RQA measures are calculated and compared for the used tools.\n\nOnly the _x_-component of the Rössler system is used, after removing the first 1,000\npoints as transients. A simple time delay embedding with _m_ = 3 and _τ_ = 6\nis applied.\nThe RP and RQA calculations are implemented for MATLAB, R,\nJulia, Python, and a C++-based tool using the following packages/ tools\n\nSoftware | Package/ URL\n---------|-------------\nMATLAB   | simple _rp.m_ v1.2 code \u003chttps://github.com/pucicu/rp\u003e\nMATLAB   | _CRP Toolbox_ v5.26(R36) code \u003chttps://tocsy.pik-potsdam.de/CRPtoolbox\u003e\nR        | _crqa_ v2.0.2 \u003chttps://github.com/morenococo/crqa\u003e\nJulia    | _DynamicalSystems.jl_ v1.4.0 \u003chttps://juliadynamics.github.io/DynamicalSystems.jl/dev/\u003e\nJulia    | _RecurrenceMicrostatesAnalysis.jl_ 0.2.24 \u003chttps://github.com/DynamicsUFPR/RecurrenceMicrostatesAnalysis.jl\u003e\nJulia    | _RQA_Samp_ \u003chttps://github.com/pucicu/RQA_Samp\u003e\nPython   | simple RP and RQA implementation (included)\nPython   | _pyunicorn_ v0.6.1 \u003chttps://pypi.org/project/pyunicorn/\u003e\nPython   | _PyRQA_ v8.0.0 \u003chttps://pypi.org/project/PyRQA/\u003e\nPython   | _AccRQA_ v0.9.1 \u003chttps://pypi.org/project/accrqa/\u003e\nC++      | _RQA_OpenMP_ v1.414 \u003chttps://github.com/pucicu/RQA_OpenMP\u003e\n\n## Requirements\n\nSoftware | Requirements\n---------|--------------\nMATLAB   | install the code from \u003chttps://github.com/pucicu/rp\u003e as a subfolder `rp`\nMATLAB   | install the code from \u003chttps://tocsy.pik-potsdam.de/CRPtoolbox\u003e by calling the installer file `install` from the MATLAB commandline\nR        | packages `nonlinearTseries`, `crqa`, `abind`, `tictoc`\nJulia    | packages `OrdinaryDiffEq`, `DelayEmbeddings`, `DynamicalSystems`, `DelimitedFiles`, `RecurrenceMicrostatesAnalysis`, and `RQA_Samp`\nPython   | packages `PyRQA`, `pyunicorn`, `accrqa`, `numpy`, `scipy`\nOpenMP   | download the code from \u003chttps://github.com/pucicu/RQA_OpenMP\u003e to a subfolder `Libs` and compile it as specified in the `README.md`\n\nFor Python, see file `requirements.txt` (you can use `pip install -r requirements.txt` to get the required Python packages).\n\n## Procedure\n\nThe recurrence analysis is performed on the time series obtained from the Rössler system with growing length, starting with _N_ = 200 (ending at max. _N_ = 500,000), increasing in steps to provide equidistant points along the _x_-axis in a log-log plot. The increase of length will be stopped when the calculation time exceeds 600 sec. For each selected length, the calculation time is measured 10 times and then averaged.\n\nNot all RQA measures are available across all implementations (e.g., in simple Python code or in RQA_Samp). Network measure calculations were disabled in all examples.\n\nThe calculation time is measured for:\n- Recurrence Plot (RP) computation (where applicable), and\n- Recurrence Quantification Analysis (RQA).\n\n__Note:__ If RQA calculations require a precomputed RP, the RQA time includes the RP calculation time.\n\nFor calculations using the different implementations, individual scripts are available. These scripts can be executed in batch via the shell script `run_software_test.sh`.\n\nFor high-performance computing (HPC), SLURM scripts are provided. To enable HPC submission, set the flag `SUBMIT_HPC=1` in the script `run_software_test.sh`.\n\n## Results\n\nThe results presented here were primarily computed on a single node of the \"Foote\" high-performance cluster at PIK. Each node is equipped with:\n\n- 1 × AMD EPYC 9554 Genoa processor (64 cores @ 3.1 GHz), \n- 768 GB RAM.\n\nFor GPU-based calculations (using the AccRQA and PyRQA packages), we utilised:\n\n- NVIDIA H100 HBM3 (80 GB, OpenCL 3.0, CUDA).\n\nMPI-based calculations for AccRQA were executed across 128 compute nodes.\n\nRecurrence plots (RPs) cannot be calculated using _RQA_OpenMP_, _RQA_Samp_, and _RecurrenceMicrostates_. Therefore, RP calculation times are not available for these implementations.\n\n![Computation speed for recurrence plots and recurrence quantification measures for the Rössler system.](https://raw.githubusercontent.com/pucicu/RP_Speed_Test/master/rp_rqa_speed-test.svg \"Computation speed\")\n\n![Relative deviations in selected RQA measures for the Rössler system.](https://raw.githubusercontent.com/pucicu/RP_Speed_Test/refs/heads/master/rp_rqa_value-test.svg \"RQA relative deviations\")\n\n## Copyright\n\nNorbert Marwan\\\nPotsdam Institute for Climate Impact Research\\\n3/2026\n\nLicense: GPLv3+\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpucicu%2Frp_speed_test","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fpucicu%2Frp_speed_test","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpucicu%2Frp_speed_test/lists"}