{"id":37084463,"url":"https://github.com/mne-tools/mne-hfo","last_synced_at":"2026-01-14T10:20:14.227Z","repository":{"id":45435231,"uuid":"322719123","full_name":"mne-tools/mne-hfo","owner":"mne-tools","description":"Estimate/compute high-frequency oscillations (HFOs) from iEEG data that are BIDS and MNE compatible using a scikit-learn-style API.","archived":false,"fork":false,"pushed_at":"2023-12-26T18:38:26.000Z","size":8571,"stargazers_count":14,"open_issues_count":27,"forks_count":16,"subscribers_count":8,"default_branch":"main","last_synced_at":"2025-10-27T12:36:32.342Z","etag":null,"topics":["bids","hfo-detection","ieeg","ieeg-data","mne-hfo","mne-python"],"latest_commit_sha":null,"homepage":"http://mne.tools/mne-hfo/","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"bsd-3-clause","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/mne-tools.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","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":".zenodo.json"}},"created_at":"2020-12-18T22:34:06.000Z","updated_at":"2025-01-25T05:18:15.000Z","dependencies_parsed_at":"2025-07-15T00:30:07.717Z","dependency_job_id":"727c37ed-4bdd-4225-a000-e8fe4d4c3fc9","html_url":"https://github.com/mne-tools/mne-hfo","commit_stats":{"total_commits":51,"total_committers":4,"mean_commits":12.75,"dds":"0.13725490196078427","last_synced_commit":"f81fe037d6e4779354926c72bde98bd10f4c0479"},"previous_names":[],"tags_count":2,"template":false,"template_full_name":null,"purl":"pkg:github/mne-tools/mne-hfo","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mne-tools%2Fmne-hfo","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mne-tools%2Fmne-hfo/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mne-tools%2Fmne-hfo/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mne-tools%2Fmne-hfo/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/mne-tools","download_url":"https://codeload.github.com/mne-tools/mne-hfo/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mne-tools%2Fmne-hfo/sbom","scorecard":{"id":654855,"data":{"date":"2025-08-11","repo":{"name":"github.com/mne-tools/mne-hfo","commit":"e8acafc90435276d3958c65da5ad71c4abc5ec08"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":3,"checks":[{"name":"Code-Review","score":2,"reason":"Found 7/30 approved changesets -- score normalized to 2","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#code-review"}},{"name":"Maintained","score":0,"reason":"0 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"Binary-Artifacts","score":10,"reason":"no binaries found in the repo","details":null,"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#binary-artifacts"}},{"name":"Dangerous-Workflow","score":10,"reason":"no dangerous workflow patterns detected","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#dangerous-workflow"}},{"name":"Packaging","score":-1,"reason":"packaging workflow not detected","details":["Warn: no GitHub/GitLab publishing workflow detected."],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#packaging"}},{"name":"Token-Permissions","score":0,"reason":"detected GitHub workflow tokens with excessive permissions","details":["Warn: no topLevel permission defined: .github/workflows/cffconvert.yml:1","Warn: no topLevel permission defined: .github/workflows/circle_artifacts.yml:1","Warn: no topLevel permission defined: .github/workflows/unit_tests.yml:1","Info: no jobLevel write permissions found"],"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#token-permissions"}},{"name":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#cii-best-practices"}},{"name":"Pinned-Dependencies","score":0,"reason":"dependency not pinned by hash detected -- score normalized to 0","details":["Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/cffconvert.yml:17: update your workflow using https://app.stepsecurity.io/secureworkflow/mne-tools/mne-hfo/cffconvert.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/cffconvert.yml:20: update your workflow using https://app.stepsecurity.io/secureworkflow/mne-tools/mne-hfo/cffconvert.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/circle_artifacts.yml:9: update your workflow using https://app.stepsecurity.io/secureworkflow/mne-tools/mne-hfo/circle_artifacts.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/unit_tests.yml:28: update your workflow using https://app.stepsecurity.io/secureworkflow/mne-tools/mne-hfo/unit_tests.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/unit_tests.yml:30: update your workflow using https://app.stepsecurity.io/secureworkflow/mne-tools/mne-hfo/unit_tests.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/unit_tests.yml:39: update your workflow using https://app.stepsecurity.io/secureworkflow/mne-tools/mne-hfo/unit_tests.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/unit_tests.yml:43: update your workflow using https://app.stepsecurity.io/secureworkflow/mne-tools/mne-hfo/unit_tests.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/unit_tests.yml:45: update your workflow using https://app.stepsecurity.io/secureworkflow/mne-tools/mne-hfo/unit_tests.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/unit_tests.yml:49: update your workflow using https://app.stepsecurity.io/secureworkflow/mne-tools/mne-hfo/unit_tests.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/unit_tests.yml:58: update your workflow using https://app.stepsecurity.io/secureworkflow/mne-tools/mne-hfo/unit_tests.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/unit_tests.yml:82: update your workflow using https://app.stepsecurity.io/secureworkflow/mne-tools/mne-hfo/unit_tests.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/unit_tests.yml:84: update your workflow using https://app.stepsecurity.io/secureworkflow/mne-tools/mne-hfo/unit_tests.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/unit_tests.yml:100: update your workflow using https://app.stepsecurity.io/secureworkflow/mne-tools/mne-hfo/unit_tests.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/unit_tests.yml:132: update your workflow using https://app.stepsecurity.io/secureworkflow/mne-tools/mne-hfo/unit_tests.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/unit_tests.yml:136: update your workflow using https://app.stepsecurity.io/secureworkflow/mne-tools/mne-hfo/unit_tests.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/unit_tests.yml:141: update your workflow using https://app.stepsecurity.io/secureworkflow/mne-tools/mne-hfo/unit_tests.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/unit_tests.yml:162: update your workflow using https://app.stepsecurity.io/secureworkflow/mne-tools/mne-hfo/unit_tests.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/unit_tests.yml:173: update your workflow using https://app.stepsecurity.io/secureworkflow/mne-tools/mne-hfo/unit_tests.yml/main?enable=pin","Warn: pipCommand not pinned by hash: .github/workflows/unit_tests.yml:146","Warn: pipCommand not pinned by hash: .github/workflows/unit_tests.yml:147","Warn: pipCommand not pinned by hash: .github/workflows/unit_tests.yml:153","Warn: pipCommand not pinned by hash: .github/workflows/unit_tests.yml:154","Warn: pipCommand not pinned by hash: .github/workflows/unit_tests.yml:36","Warn: pipCommand not pinned by hash: .github/workflows/unit_tests.yml:37","Warn: pipCommand not pinned by hash: .github/workflows/unit_tests.yml:90","Warn: pipCommand not pinned by hash: .github/workflows/unit_tests.yml:91","Warn: pipCommand not pinned by hash: .github/workflows/unit_tests.yml:106","Info:   0 out of   9 GitHub-owned GitHubAction dependencies pinned","Info:   0 out of   9 third-party GitHubAction dependencies pinned","Info:   1 out of  10 pipCommand dependencies pinned"],"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#pinned-dependencies"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#fuzzing"}},{"name":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE:0","Info: FSF or OSI recognized license: BSD 3-Clause \"New\" or \"Revised\" License: LICENSE:0"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"Signed-Releases","score":-1,"reason":"no releases found","details":null,"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"Branch-Protection","score":-1,"reason":"internal error: error during branchesHandler.setup: internal error: githubv4.Query: Resource not accessible by integration","details":null,"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#branch-protection"}},{"name":"Security-Policy","score":0,"reason":"security policy file not detected","details":["Warn: no security policy file detected","Warn: no security file to analyze","Warn: no security file to analyze","Warn: no security file to analyze"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#security-policy"}},{"name":"Vulnerabilities","score":0,"reason":"11 existing vulnerabilities detected","details":["Warn: Project is vulnerable to: PYSEC-2022-42986 / GHSA-43fp-rhv2-5gv8","Warn: Project is vulnerable to: PYSEC-2023-135 / GHSA-xqr8-7jwr-rhp7","Warn: Project is vulnerable to: PYSEC-2022-288 / GHSA-6hrg-qmvc-2xh8","Warn: Project is vulnerable to: GHSA-6p56-wp2h-9hxr","Warn: Project is vulnerable to: GHSA-fpfv-jqm9-f5jm","Warn: Project is vulnerable to: PYSEC-2024-110 / GHSA-jw8x-6495-233v","Warn: Project is vulnerable to: GHSA-jxfp-4rvq-9h9m","Warn: Project is vulnerable to: PYSEC-2023-102","Warn: Project is vulnerable to: PYSEC-2023-114","Warn: Project is vulnerable to: GHSA-g7vv-2v7x-gj9p","Warn: Project is vulnerable to: GHSA-jfmj-5v4g-7637"],"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}},{"name":"SAST","score":0,"reason":"SAST tool is not run on all commits -- score normalized to 0","details":["Warn: 0 commits out of 12 are checked with a SAST tool"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}}]},"last_synced_at":"2025-08-21T14:23:12.677Z","repository_id":45435231,"created_at":"2025-08-21T14:23:12.677Z","updated_at":"2025-08-21T14:23:12.677Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28416925,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-14T10:18:03.274Z","status":"ssl_error","status_checked_at":"2026-01-14T10:16:11.865Z","response_time":107,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6: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":["bids","hfo-detection","ieeg","ieeg-data","mne-hfo","mne-python"],"created_at":"2026-01-14T10:20:13.434Z","updated_at":"2026-01-14T10:20:14.219Z","avatar_url":"https://github.com/mne-tools.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"[![Codecov](https://codecov.io/gh/mne-tools/mne-hfo/branch/master/graph/badge.svg)](https://codecov.io/gh/adam2392/mne-hfo)\n[![test_suite](https://github.com/mne-tools/mne-hfo/actions/workflows/unit_tests.yml/badge.svg?branch=main)](https://github.com/mne-tools/mne-hfo/actions/workflows/unit_tests.yml)\n[![CircleCI](https://circleci.com/gh/mne-tools/mne-hfo.svg?style=svg)](https://circleci.com/gh/mne-tools/mne-hfo)\n![License](https://img.shields.io/pypi/l/mne-hfo)\n[![Code style: black](https://img.shields.io/badge/code%20style-black-000000.svg)](https://github.com/psf/black)\n![PyPI - Python Version](https://img.shields.io/pypi/pyversions/mne-hfo)\n[![Documentation Status](https://readthedocs.org/projects/mne-hfo/badge/?version=latest)](https://mne-hfo.readthedocs.io/en/latest/?badge=latest)\n[![PyPI Download count](https://pepy.tech/badge/mne-hfo)](https://pepy.tech/project/mne-hfo)\n\nMNE-HFO\n=======\n\nMNE-HFO is a Python package that computes estimates of high-frequency oscillations in iEEG data stored in\nthe [BIDS-compatible](https://bids.neuroimaging.io/) datasets with the help of\n[MNE-Python](https://mne.tools/stable/index.html).\n\nNOTE: This is currently in ALPHA stage, and we are looking for contributors. Please get in touch via Issues tab if you\nwould like to contribute.\n\nHigh frequency oscillations in epilepsy\n---------------------------------------\nA few notes that are worthy of reading. The initial papers on HFOs (Staba et al.)\nactually only observed HFOs on Hippocampus. In addition, the papers cited that are implemented all selected data before\ndeveloping their algorithm (i.e. selected channels with HFOs).\n\nIt is also noted that the Hilbert detector was used to show HFOs exist in normal brain function, possibly unassociated\nwith the epileptogenic zone.\n\nWhy?\n----\nCurrently HFO detection and algorithms are segmented in Matlab files, which are sometimes not open-source, or possibly\ndifficult to use. In addition, validation of HFO algorithms depend on i) sharing the algorithms ii) sharing the results\nwith others in a readable format and iii) comparing algorithms against each other on the same dataset.\n\nMNE-HFO links BIDS, MNE-Python and iEEG HFO event detection with the goal to make HFO detection more transparent, more\nrobust, and facilitate data and code sharing with co-workers and collaborators.\n\nInstallation\n------------\nInstallation can be done via a python virtual environment, using ``pipenv``. The package is hosted on ``pypi``, which\ncan be installed via pip, or pipenv. For additional installation instructions, see [CONTRIBUTING.md](https://github.com/mne-tools/mne-hfo/blob/master/CONTRIBUTING.md) document.\n\n    pip install mne-hfo\n\nor\n\n    pipenv install mne-hfo\n\nNote: Installation has been tested on MacOSX and Ubuntu, but should \nprobably work on Windows too.\n\nDocumentation and Usage\n-----------------------\n\nThe documentation can be found under the following links:\n\n- for the [stable release](https://mne.tools/mne-hfo/)\n- for the [latest (development) version](https://mne.tools/mne-hfo/dev/index.html)\n\nNote: Functionality has been tested on MacOSX and Ubuntu.\n\nBasic Working Example\n---------------------\n\nA basic working example is listed here, assuming one has loaded in a mne-Python ``Raw`` object already.\n    \n    from mne_hfo import RMSDetector\n    detector = RMSDetector()\n\n    # assume user has loaded in raw iEEG data using mne-python\n    detector.fit(raw)\n\n    # get the HFO events as an *events.tsv style dataframe\n    hfo_event_df = detector.hfo_event_df\n\n    # get the HFO events as an *events.tsv style dataframe\n    hfo_annot_df = detector.hfo_df\n\n\nAll output to ``*events.tsv`` BIDS-compliant files will look like the following:\n\n| onset      | duration | sample | trial_type |\n| ---------- | -------- | ------ | ---------- |\n| 1     | 3    | 1000   | hfo_A2-A1  |\n\nwhich will imply that there is an HFO detected using a bipolar referencing at channel ``A2-A1``\nat 1 second with duration of 3 seconds. The onset sample occurs at sample 1000 (thus ``sfreq`` is 1000 Hz). If a\nmonopolar referencing is used, then the ``trial_type`` might be ``hfo_A2`` to imply that an HFO was detected at\nchannel ``A2``.\n\nAlternatively, one can output the data in the form of a derivatives ``Annotations`` \nDataFrame, which is the RECOMMENDED way. Outputting data according to BIDS Extension Proposal 21, instead would result in \nan ``*annotations.tsv`` file. \n\n| onset      | duration | label | channels |\n| ---------- | -------- | ------ | ---------- |\n| 1     |  3  | hfo  | A2-A1 | \n\nwith a corresponding ``*annotations.json`` file.\n\n    {\n        'IntendedFor': sub-01/ses-01/eeg/sub-01_ses-01_task-01_eeg.\u003cext\u003e,\n        'Description': 'Automatic annotations of HFO events using mne-hfo.',\n    }\n\nOptimizing Hyperparameters\n--------------------------\n\nIn all ``MNE-HFO`` HFO detectors, we assume that there are hyper-parameters \nspecified by the proposed algorithm. These hyper-parameters can be tuned automatically \nusing the ``scikit-learn`` API for [GridSearchCV](https://scikit-learn.org/stable/modules/grid_search.html#grid-search).\n\n\n    from sklearn.metrics import make_scorer\n    from sklearn.model_selection import GridSearchCV\n    from mne_hfo.score import accuracy\n    from mne_hfo.sklearn import make_Xy_sklearn, DisabledCV\n    \n    # define hyperparameter grid to search over\n    parameters = {'threshold': [1, 2, 3], 'win_size': [50, 100, 250]}\n    \n    # define HFO detector\n    detector = LineLengthDetector()\n\n    # define a scoring function \n    scorer = make_scorer(accuracy)\n\n    # we don't use cross-validation since the\n    # HFO algorithm is deterministic\n    cv = DisabledCV()\n\n    # instantiate the GridSearch object\n    gs = GridSearchCV(detector, param_grid=parameters, scoring=scorer,\n                      cv=cv, refit=False, verbose=True)\n\n    # load in raw data\n    # raw = \u003cload_in_raw_data\u003e\n\n    # load in HFO annotations\n    # annot_df = \u003cload_in_annotations\u003e\n\n    # make sklearn compatible\n    raw_df, y = make_Xy_sklearn(raw, annot_df)\n\n    # run hyperparameter tuning based on accuracy score\n    gs.fit(raw_df, y, groups=None)\n\n    # show the results\n    print(gs.cv_results_[\"mean_test_score\"])\n\nIn the above example, to load in raw data, one can use [``mne-bids``](https://github.com/mne-tools/mne-bids)\nand to load in the annotations dataframe, one can check out our API \nfor different ways of doing so.\n\nCiting\n------\nFor testing and demo purposes, we use the dataset in [1]. If you use the demo/testing dataset, please cite that paper.\nIf you use ``mne-hfo`` itself in your research, please cite the paper (TBD).\n\n    Adam Li. (2021, February 1). MNE-HFO: An open-source Python implementation of HFO detection algorithms (Version 0.0.1). Zenodo. http://doi.org/10.5281/zenodo.4485036\n\nHistory and state of development\n--------------------------------\n\nThe initial code was adapted and taken from: https://gitlab.com/icrc-bme/epycom\nto turn into a sklearn-compatible API that works with ``mne-python``. Additional algorithms \nand functionality were added.\n\nReferences\n----------\n[1] Fedele T, Burnos S, Boran E, Krayenbühl N, Hilfiker P, Grunwald T, Sarnthein J. Resection of high frequency\noscillations predicts seizure outcome in the individual patient. Scientific Reports. 2017;7(1):13836.\nhttps://www.nature.com/articles/s41598-017-13064-1\ndoi:10.1038/s41598-017-13064-1\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmne-tools%2Fmne-hfo","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmne-tools%2Fmne-hfo","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmne-tools%2Fmne-hfo/lists"}