{"id":28468504,"url":"https://github.com/falseywinchnet/pyitd","last_synced_at":"2026-03-01T02:02:51.279Z","repository":{"id":52488531,"uuid":"480127901","full_name":"falseywinchnet/PyITD","owner":"falseywinchnet","description":"Intrinsic Time-Scale Decomposition","archived":false,"fork":false,"pushed_at":"2026-01-12T01:28:01.000Z","size":232521,"stargazers_count":17,"open_issues_count":0,"forks_count":6,"subscribers_count":2,"default_branch":"main","last_synced_at":"2026-01-12T05:55:16.049Z","etag":null,"topics":["decomposition","emperical-analysis","knot","numba","numpy","peak-detection","python3","signal-processing","trend-analysis"],"latest_commit_sha":null,"homepage":"","language":"Jupyter Notebook","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/falseywinchnet.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"license.txt","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"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-04-10T20:08:48.000Z","updated_at":"2026-01-12T01:28:05.000Z","dependencies_parsed_at":"2025-07-25T00:32:32.199Z","dependency_job_id":"e9d0f6c2-54d6-469c-b2df-d257ecf0ae9f","html_url":"https://github.com/falseywinchnet/PyITD","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/falseywinchnet/PyITD","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/falseywinchnet%2FPyITD","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/falseywinchnet%2FPyITD/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/falseywinchnet%2FPyITD/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/falseywinchnet%2FPyITD/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/falseywinchnet","download_url":"https://codeload.github.com/falseywinchnet/PyITD/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/falseywinchnet%2FPyITD/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29958400,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-01T01:47:18.291Z","status":"online","status_checked_at":"2026-03-01T02:00:07.437Z","response_time":124,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"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":["decomposition","emperical-analysis","knot","numba","numpy","peak-detection","python3","signal-processing","trend-analysis"],"created_at":"2025-06-07T08:07:44.863Z","updated_at":"2026-03-01T02:02:51.271Z","avatar_url":"https://github.com/falseywinchnet.png","language":"Jupyter Notebook","funding_links":[],"categories":[],"sub_categories":[],"readme":"# PyITD Intrinsic Time-Scale Decomposition\n## Introduction\n\nThis is a Python implementation of Intrinsic Time-Scale Decomposition (ITD).\nITD is a patented decomposition method developed under grant.\nNIH/NINDS grants nos. 1R01NS046602-01 and 1R43NS39240-01.\nThis algorithm is patented US7966156B1 by Frei And Osorio, 2024-10-06 Adjusted expiration\n\n\"We introduce a new algorithm, the intrinsic time-scale decomposition (ITD), for efficient\nand precise time–frequency–energy (TFE) analysis of signals. The ITD method\novercomes many of the limitations of both classical (e.g. Fourier transform or wavelet\ntransform based) and more recent (empirical mode decomposition based) approaches to\nTFE analysis of signals that are nonlinear and/or non-stationary in nature. The ITD\nmethod decomposes a signal into (i) a sum of proper rotation components, for which\ninstantaneous frequency and amplitude are well defined, and (ii) a monotonic trend. The\ndecomposition preserves precise temporal information regarding signal critical points\nand riding waves, with a temporal resolution equal to the time-scale of extrema\noccurrence in the input signal. We also demonstrate how the ITD enables application of\nsingle-wave analysis and how this, in turn, leads to a powerful new class of real-time\nsignal filters, which extract and utilize the inherent instantaneous amplitude and\nfrequency/phase information in combination with other relevant morphological features.\"\nAuthors: Mark Frei, Ivan Osorio (2007).\n\nThe Intrinsic Time-Scale Decomposition (ITD) is a purely algorithmic, non-lossy\niterative decomposition of a time series {Y (i)}N i=1. At the first stage, the signal is\ndecomposed into a proper rotation R1(i), an oscillating mode in which maxima and\nminima are positive and negative, respectively, and a residual B1(i) called baseline .\nThe baseline B1 is now decomposed in the same fashion, producing a proper rotation\nR2 and a baseline B2 , and so on. The process stops when the resulting baseline has\nonly two extrema, or is a constant.\n\nB2 = B1 - R1, and so on. The decomposition mode is fully reversable with typically perfect reconstitution.\nThe final output for the decomposition is a monotonic upward trend.\n\nITD avoids a priori assumptions about the content/morphology of the signal\nbeing analysed (e.g. make the decomposition ‘basis free’)\nITD also performs the analysis in an efficient and rapid manner with O(n) computations\n\n ITD provides:\n efficient signal decomposition into ‘proper rotation’ components, for which\ninstantaneous frequency and amplitude are well defined, along with the\nunderlying monotonic signal trend, without the need for laborious and\nineffective sifting or splines,\nprecise temporal information regarding instantaneous frequency and\namplitude of component signals with a temporal resolution equal to the\ntime-scale of occurrence of extrema in the input signal, \na new class of real-time signal filters that utilize the newly available\ninstantaneous amplitude and frequency/phase information together with\nadditional features and morphology information obtained via single-wave\nanalysis. Moreover, the resulting feature extraction and feature-based\nfiltering can be performed in real-time and is easily adapted to extract\nfeature signals of interest at the time-scales on which they naturally occur,\nwhile preserving their morphology and relative phases.\n\nITD overcomes certain limitations of Empirical Mode Decomposition(EMD) including:\novershooting and and undershooting of the interpolating cubic splines generating spurious extrema\ndistortion and relocation of existing extrema\nsmearing of time-frequency-energy information\ninability or extreme difficulty in producing a correct rotation\n\nhttps://arxiv.org/pdf/1404.3827v1.pdf good summary of the approach\nhttps://sci-hub.hkvisa.net/10.1098/rspa.2006.1761 original publication\nSee these articles for more information.\n\n### Available splines\n\n- knot estimation\n\n### Available stopping criteria\n\n-  knot count\n-  Fixed number of iterations\n\n### Extrema detection\n\n-  matplotlib findpeaks\n\n\n## Installation\nNo package available yet. Work in progress.\n\n## Notes\nThe repo contains a working ITD implementation in a ipython notebook, and an in progress numba optimized version\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffalseywinchnet%2Fpyitd","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ffalseywinchnet%2Fpyitd","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffalseywinchnet%2Fpyitd/lists"}