https://github.com/marco-congedo/fourieranalysis.jl

A Julia package for the Fourier analysis of Multivariate Data in the Frequency and Time-Frequency Domain

https://github.com/marco-congedo/fourieranalysis.jl

Science Score: 36.0%

This score indicates how likely this project is to be science-related based on various indicators:

  • CITATION.cff file
  • codemeta.json file
    Found codemeta.json file
  • .zenodo.json file
    Found .zenodo.json file
  • DOI references
  • Academic publication links
  • Committers with academic emails
    1 of 9 committers (11.1%) from academic institutions
  • Institutional organization owner
  • JOSS paper metadata
  • Scientific vocabulary similarity
    Low similarity (12.0%) to scientific vocabulary

Keywords

coherence fft spectra synchronization time-frequency time-series

Keywords from Contributors

ode sde julia-package dde differential-equations normalizing-flow julialang sciml graphics dae
Last synced: 5 months ago · JSON representation

Repository

A Julia package for the Fourier analysis of Multivariate Data in the Frequency and Time-Frequency Domain

Basic Info
  • Host: GitHub
  • Owner: Marco-Congedo
  • License: other
  • Language: Julia
  • Default Branch: master
  • Homepage:
  • Size: 4.02 MB
Statistics
  • Stars: 60
  • Watchers: 6
  • Forks: 12
  • Open Issues: 2
  • Releases: 10
Topics
coherence fft spectra synchronization time-frequency time-series
Created over 6 years ago · Last pushed 8 months ago
Metadata Files
Readme License

README.md

| Documentation | |:---------------------------------------:| | |

Related Publications Technical report

FourierAnalysis is a signal-processing Julia package for performing the analysis of real multivariate data (e.g., multivariate time series) in the frequency domain and in the time-frequency domain. It is based upon the DSP.jl, FFTW.jl and AbstractFFTs.jl packages.

In the frequency domain FourierAnalysis computes spectra, linear and non-linear cross-spectral matrices and several linear and non-linear coherence matrices using the sliding-windows Welch method.

Time-frequency representations are obtained applying a filter-bank and the Hilbert transform. This way FourierAnalysis computes the analytic signal, from which the instantaneous amplitude (envelope) and instantaneous phase are obtained, along with several popular linear and non-linear, weighted, univariate and bivariate statistics, such as - mean amplitude - mean direction - phase concentration (the non-linear version of which is the directional statistic circular mean resultant length) - comodulation - coherence (the non-linear version of which is known as phase-locking values or phase coherence).

All these measures are provided in a simple and unified fashion, following the conceptual approach previously illustrated in in the context of electroencephalography (Congedo, 2018), for which all default settings have been tailored. The package has been written with the do-it-with-one-line spirit, but without sacrificing full control over relevant options.

Installation

Execute the following command in Julia's REPL:

]add FourierAnalysis

Disclaimer

Although fully functional, this package is still in a pre-release stage. It needs throughout testing. Independent reviewers are more then welcome.

About the Author

Marco Congedo is a Research Director of CNRS (Centre National de la Recherche Scientifique), working at UGA (University of Grenoble Alpes), in Grenoble (France), the city where Jean-Baptiste Joseph Fourier has served as a Prefect:).

Contact

first name dot last name at gmail dot com

Examples

``` using FourierAnalysis, Plots

Set sampling rate (sr) and FFT window length (wl):

sr, wl = 128, 128

Generate a sinusoidal wave at 10Hz with peak amplitude 0.5 and add some white noise:

v = sinusoidal(0.5, 10, sr, wl16) + randn(wl16)

Get the power spectrum with a rectangular tapering window:

S = spectra(v, sr, wl; tapering=rectangular)

Plot the power spectrum:

plot(S; fmax=24)

The same syntax applies in the case of multivariate data (e.g., 4 time-series):

V = randn(wl*16, 4) S = spectra(V, sr, wl; tapering=hamming) plot(S)

Get the analytic amplitude in the time-Frequency domain:

A = TFamplitude(v, sr, wl; fmax=24)

plot the analytic amplitude:

heatmap(A.y)

```

| Documentation | |:---------------------------------------:| | |

Owner

  • Name: Marco Congedo
  • Login: Marco-Congedo
  • Kind: user
  • Location: Grenoble
  • Company: CNRS

Research Director at the 'Centre National de la Recherche Scientifique' (CNRS), working at Grenoble Alpes University.

GitHub Events

Total
  • Create event: 3
  • Issues event: 2
  • Release event: 2
  • Watch event: 4
  • Delete event: 2
  • Issue comment event: 6
  • Push event: 24
  • Pull request event: 7
Last Year
  • Create event: 3
  • Issues event: 2
  • Release event: 2
  • Watch event: 4
  • Delete event: 2
  • Issue comment event: 6
  • Push event: 24
  • Pull request event: 7

Committers

Last synced: almost 3 years ago

All Time
  • Total Commits: 123
  • Total Committers: 9
  • Avg Commits per committer: 13.667
  • Development Distribution Score (DDS): 0.447
Top Committers
Name Email Commits
Marco-Congedo m****o@g****m 68
Marco Congedo 4****o@u****m 33
marco congedo m****o@g****m 12
CompatHelper Julia c****y@j****g 4
Páll Haraldsson P****n@g****m 2
Ben Arthur b****0@g****m 1
Grigory Starkov 3****q@u****m 1
Hongyang Zhou h****u@u****u 1
Julia TagBot 5****t@u****m 1
Committer Domains (Top 20 + Academic)

Issues and Pull Requests

Last synced: 6 months ago

All Time
  • Total issues: 15
  • Total pull requests: 64
  • Average time to close issues: 3 months
  • Average time to close pull requests: 9 days
  • Total issue authors: 10
  • Total pull request authors: 9
  • Average comments per issue: 3.27
  • Average comments per pull request: 0.08
  • Merged pull requests: 60
  • Bot issues: 0
  • Bot pull requests: 6
Past Year
  • Issues: 3
  • Pull requests: 4
  • Average time to close issues: about 15 hours
  • Average time to close pull requests: 3 days
  • Issue authors: 2
  • Pull request authors: 2
  • Average comments per issue: 1.67
  • Average comments per pull request: 0.25
  • Merged pull requests: 3
  • Bot issues: 0
  • Bot pull requests: 1
Top Authors
Issue Authors
  • Marco-Congedo (4)
  • henry2004y (3)
  • johtok (1)
  • olaayeko (1)
  • rafael-guerra-www (1)
  • Roh-codeur (1)
  • bjarthur (1)
  • SeverinBang (1)
  • Mattriks (1)
  • JuliaTagBot (1)
Pull Request Authors
  • Marco-Congedo (54)
  • github-actions[bot] (6)
  • dependabot[bot] (2)
  • laborg (1)
  • Gregstrq (1)
  • henry2004y (1)
  • bjarthur (1)
  • PallHaraldsson (1)
  • JuliaTagBot (1)
Top Labels
Issue Labels
Pull Request Labels
dependencies (2) github_actions (2)

Packages

  • Total packages: 1
  • Total downloads:
    • julia 41 total
  • Total dependent packages: 0
  • Total dependent repositories: 0
  • Total versions: 11
juliahub.com: FourierAnalysis

A Julia package for the Fourier analysis of Multivariate Data in the Frequency and Time-Frequency Domain

  • Versions: 11
  • Dependent Packages: 0
  • Dependent Repositories: 0
  • Downloads: 41 Total
Rankings
Dependent repos count: 9.9%
Forks count: 11.7%
Stargazers count: 13.7%
Average: 18.6%
Dependent packages count: 38.9%
Last synced: 6 months ago

Dependencies

.github/workflows/CompatHelper.yml actions
  • julia-actions/setup-julia v1 composite
.github/workflows/TagBot.yml actions
  • JuliaRegistries/TagBot v1 composite