swarm-contrastive-decomposition

Decomposition of Neurophysiological Time Series Signals with a Particle Swarm Optimised Independence Estimator

https://github.com/agnegris/swarm-contrastive-decomposition

Science Score: 57.0%

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

  • CITATION.cff file
    Found CITATION.cff file
  • codemeta.json file
    Found codemeta.json file
  • .zenodo.json file
    Found .zenodo.json file
  • DOI references
    Found 1 DOI reference(s) in README
  • Academic publication links
  • Academic email domains
  • Institutional organization owner
  • JOSS paper metadata
  • Scientific vocabulary similarity
    Low similarity (14.6%) to scientific vocabulary
Last synced: 6 months ago · JSON representation ·

Repository

Decomposition of Neurophysiological Time Series Signals with a Particle Swarm Optimised Independence Estimator

Basic Info
  • Host: GitHub
  • Owner: AgneGris
  • License: other
  • Language: Python
  • Default Branch: main
  • Size: 836 KB
Statistics
  • Stars: 14
  • Watchers: 4
  • Forks: 1
  • Open Issues: 0
  • Releases: 0
Created over 1 year ago · Last pushed about 1 year ago
Metadata Files
Readme License Citation

README.md

Swarm-Contrastive Decomposition 🧠

Overview 📝

Welcome to the Swarm-Contrastive Decomposition project! This repository contains the code of our research paper on decomposition of Neurophysiological Time Series signals. The primary goal of this project is to provide an open-source implementation for fostering further research in this area.

Pipeline

Table of Contents 📚

Installation 🛠️

Prerequisites

Make sure you have the following software and libraries installed: - Python 3.10 🐍 - NumPy 📦 - PyTorch 🔥

Steps

Follow these steps to set up the project locally:

  1. Clone the repository: sh git clone https://github.com/AgneGris/swarm-contrastive-decomposition
  2. Navigate to the project directory: sh cd swarm-contrastive-decomposition
  3. Create the conda environment from the decomposition.yml file: sh conda env create -f decomposition.yml
  4. Activate the environment: sh conda activate decomposition

How to use this repository 🚀

  1. Upload Your Input Data:

    • Place your input data files in the data/input folder.
  2. Modify Data Loading:

    • Depending on your data structure, you may need to adjust the data loading logic in main.py (lines 41-53).
  3. Configure the Parameters:

    • Customize the configuration settings in main.py according to your needs:
      • device: Set to "cuda" for GPU or "cpu" for CPU.
      • acceptance_silhouette: Define the acceptance threshold for source quality.
      • extension_factor: This factor typically equals 1000 / number of channels. A higher value may improve results.
      • low_pass_cutoff: Define the cutoff frequency for the low-pass filter.
      • high_pass_cutoff: Define the cutoff frequency for the high-pass filter.
      • start_time: Set the start time for signal trimming. Use 0 to include the entire signal from the beginning.
      • end_time: Set the end time for signal trimming. Use -1 to include the entire signal until the end.
      • max_iterations: Specify the maximum number of iterations for the decomposition process.
      • sampling_frequency: Indicate the sampling frequency of your signal.
      • peel_off_window_size: Define the size of the window (in ms) for the spike-triggered average of the source.
      • output_final_source_plot: Set to True to generate a plot of the final source, or False to skip plotting.
      • use_coeff_var_fitness: Set to True if consistent activity is expected in discharge times (recommended for most EMGs); set to False for other types of data (e.g., intracortical).
      • remove_bad_fr: Set to True to filter out sources with firing rates below 2 Hz or above 100 Hz. You can adjust these thresholds in models\scd.py if needed.
    • Other configuration parameters are found in config\structures.
  4. Run the Decomposition:

    • Once your data is properly loaded and configured, run the following command to start the decomposition process: bash python main.py
    • Once the decomposition process has terminated, the output data will be saved in the data/output folder.

Contributing 🤝

We welcome contributions! Here’s how you can contribute:

  1. Fork the repository.
  2. Create a feature branch (git checkout -b feature/newfeature).
  3. Commit your changes (git commit -m 'Add some newfeature').
  4. Push to the branch (git push origin feature/newfeature).
  5. Open a pull request.

License 📜

This project is licensed under the CC BY-NC 4.0 License.

Citation

If you use this code in your research, please cite our paper:

```sh @article{10643350, author={Grison, Agnese and Clarke, Alexander Kenneth and Muceli, Silvia and Ibáñez, Jaime and Kundu, Aritra and Farina, Dario}, journal={IEEE Transactions on Biomedical Engineering}, title={A Particle Swarm Optimised Independence Estimator for Blind Source Separation of Neurophysiological Time Series}, year={2024}, volume={}, number={}, pages={1-11}, keywords={Recording;Time series analysis;Sorting;Vectors;Measurement;Electrodes;Probes;Independent component analysis;particle swarm optimisation;blind source separation;intramuscular electromyography;intracortical recording}, doi={10.1109/TBME.2024.3446806}}

```

Contact

For any questions or inquiries, please contact us at: sh Agnese Grison agnese.grison16@imperial.ac.uk

Owner

  • Name: Agnese Grison
  • Login: AgneGris
  • Kind: user

Citation (CITATION.cff)

# Content: Citation File Format (CFF) file for the software 

cff-version: 1.2.0
message: "If you use this software, please cite it as below."
authors:
- family-names: "Agnese"
  given-names: "Grison"
  orcid: "https://orcid.org/0009-0001-5981-3589"
  email: agnese.grison@outlook.it
  affiliation: Imperial College London
- family-names: "Alexander Kenneth"
  given-names: "Clarke"
- family-names: "Silvia"
  given-names: "Muceli"
- family-names: "Jaime"
  given-names: "Ibanez"
- family-names: "Aritra"
  given-names: "Kundu"
- family-names: "Dario"
  given-names: "Farina"
title: "A Particle Swarm Optimised Independence Estimator for
  Blind Source Separation of Neurophysiological Time Series"
version: 
doi: 10.1109/TBME.2024.3446806
date-released: 
url: "https://github.com/AgneGris/swarm-contrastive-decomposition"
preferred-citation:
  type: article
  authors:
    - family-names: "Agnese"
      given-names: "Grison"
      orcid: "https://orcid.org/0009-0001-5981-3589"
      email: agnese.grison@outlook.it
      affiliation: Imperial College London
    - family-names: "Alexander Kenneth"
      given-names: "Clarke"
    - family-names: "Silvia"
      given-names: "Muceli"
    - family-names: "Jaime"
      given-names: "Ibanez"
    - family-names: "Aritra"
      given-names: "Kundu"
    - family-names: "Dario"
      given-names: "Farina"
  doi: 10.1109/TBME.2024.3446806
  journal: "IEEE Transactions on Biomedical Engineering"
  month: 
  start:  
  end:  
  title: "A Particle Swarm Optimised Independence Estimator for
  Blind Source Separation of Neurophysiological Time Series"
  issue: 
  volume: 
  year: 2024

GitHub Events

Total
  • Issues event: 2
  • Watch event: 12
  • Issue comment event: 1
  • Push event: 5
  • Pull request review event: 1
  • Pull request event: 2
  • Fork event: 2
Last Year
  • Issues event: 2
  • Watch event: 12
  • Issue comment event: 1
  • Push event: 5
  • Pull request review event: 1
  • Pull request event: 2
  • Fork event: 2

Issues and Pull Requests

Last synced: 6 months ago

All Time
  • Total issues: 0
  • Total pull requests: 1
  • Average time to close issues: N/A
  • Average time to close pull requests: about 1 hour
  • Total issue authors: 0
  • Total pull request authors: 1
  • Average comments per issue: 0
  • Average comments per pull request: 0.0
  • Merged pull requests: 1
  • Bot issues: 0
  • Bot pull requests: 0
Past Year
  • Issues: 0
  • Pull requests: 1
  • Average time to close issues: N/A
  • Average time to close pull requests: about 1 hour
  • Issue authors: 0
  • Pull request authors: 1
  • Average comments per issue: 0
  • Average comments per pull request: 0.0
  • Merged pull requests: 1
  • Bot issues: 0
  • Bot pull requests: 0
Top Authors
Issue Authors
  • haripen (1)
Pull Request Authors
  • imendezguerra (1)
  • innavoig23 (1)
Top Labels
Issue Labels
Pull Request Labels