A document-based SwiftUI application for viewing and editing EEG data, aimed at making software for viewing brain imaging data more accessible.

Overview

Trace

A document-based SwiftUI application for viewing and editing EEG data, aimed at making software for viewing brain imaging data more accessible.

Overview

Trace Preview

View EEG data conveniently on your phone, with the same powerful functions as desktop alternatives. Use a 2-dimensional scalp map visualisation and effortlessly scrub through samples, or plot potentials over time for a graphic solution. Import multi-stream data from CSV or from text, and save and share your EEG data with the new minimal, space-efficient Trace document type, .trace.

Electrode support

Trace supports the International 10-20 system for labelling electrodes. Each electrode label is governed by a prefix and a suffix.

Trace supports the following prefixes: prefrontal (Fp), frontal (F), temporal (T), parietal (P), occipital (O), central (C) and mastoid (A). The suffixes are integer values above 0, with even numbers corresponding to the right lobe of the brain, and odd numbers the left lobe. The number 0 refers to the central line on the scalp between the lobes, and is often written as the letter ‘z’. Examples of electrode labels include ‘Fp1’ or Cz’.

Electrode locations are used to construct the 2-dimensional scalp map visualisation, and the following indexes are supported:

  • prefrontal: 1, 2.
  • frontal: 0 (z), 3, 4, 7, 8.
  • temporal: 3, 4, 5, 6.
  • parietal: 0 (z), 3, 4.
  • occipital: 1, 2.
  • central: 0 (z), 3, 4.
  • mastoid: 1, 2.

Data import

Trace supports data import from .csv files and from text pasted into the app, and the file parsers have the following requirements:

  • CSV files: each column represents a stream, with the first cell corresponding to the electrode label, and the rest of the cells form the array of samples. Each column (i.e., each stream) must have the same number of samples, and the electrode label must satisfy the format specified above.
  • text files: newline-separated values.

Compatability

iOS

Requires Xcode 14 (beta) or later and iOS 16 (beta) or later to install and run

Contact

Want to submit feedback or request a feature? Email me at [email protected], find me on Instagram with the tag @tahmid.az or on LinkedIn.


Copyright (C) 2022 Tahmid Azam

This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or any later version.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with this program. If not, see https://www.gnu.org/licenses/.

You might also like...
Provenance is a native macOS application that interacts with the Up Banking Developer API to display information about your bank accounts, transactions, categories, tags and more.

Provenance Provenance is a native macOS application that interacts with the Up Banking Developer API to display information about your bank accounts,

UDF (Unidirectional Data Flow) is a library based on Unidirectional Data Flow pattern.
UDF (Unidirectional Data Flow) is a library based on Unidirectional Data Flow pattern.

UDF (Unidirectional Data Flow) is a library based on Unidirectional Data Flow pattern. It lets you build maintainable, testable, and scalable apps.

SwiftUI sample app using Clean Architecture. Examples of working with CoreData persistence, networking, dependency injection, unit testing, and more.
SwiftUI sample app using Clean Architecture. Examples of working with CoreData persistence, networking, dependency injection, unit testing, and more.

Articles related to this project Clean Architecture for SwiftUI Programmatic navigation in SwiftUI project Separation of Concerns in Software Design C

An iOS app that visually clones Spotify's app and consumes the official Spotify's Web API to show(and play) songs, podcasts, artists and more.
An iOS app that visually clones Spotify's app and consumes the official Spotify's Web API to show(and play) songs, podcasts, artists and more.

SpotifyClone An iOS app that visually clones Spotify's app and consumes the official Spotify's Web API to show(and play) songs, podcasts, artists and

macOS application written in SwiftUI that downloads installer pkgs for the Install macOS Big Sur application.
macOS application written in SwiftUI that downloads installer pkgs for the Install macOS Big Sur application.

Download Full Installer This is a Swift UI implementation of my fetch-installer-pkg script. It will list the full macOS Big Sur (and later) installer

KHabit an open source, pure and minimalistic app which helps you maintain productive habits, and nothing more.

an open source, pure and minimalistic app which helps you maintain productive habits, and nothing more. The app is completely open source, it does not contain in-app or ads, and does not track the user in any way.

an open source, pure and minimalistic app which helps you maintain productive habits, and nothing more.

KHabit an open source, pure and minimalistic app which helps you maintain productive habits, and nothing more. The app is completely open source, it d

Basic Todo list application built using the new SwiftUI framework and Core Data
Basic Todo list application built using the new SwiftUI framework and Core Data

Dub Dub Do - A sample TODO List Application in SwiftUI Updated for Xcode 11.5 This is a basic app that lets you create a list of todos, mark them as i

A SwiftUI Application using MVVM, Core Data and Combine
A SwiftUI Application using MVVM, Core Data and Combine

SwiftUI | Breaking Bad App Application that shows the characters of Breaking Bad.

Comments
  • No verification of sample count for new streams being added.

    No verification of sample count for new streams being added.

    Any new streams with more samples than the first stream in the stream array of the document contents will be inaccessible. To solve this, new streams can only be added if the number of samples is equal to the existing streams.

    bug 
    opened by tahmidazam 0
  • No method to edit document preferences.

    No method to edit document preferences.

    Currently no way of modifying the default document preferences (e.g., sample rate, subject name, subject information) from the document preferences sheet.

    enhancement 
    opened by tahmidazam 0
Releases(v3.0.0-alpha)
  • v3.0.0-alpha(Dec 25, 2022)

    Trace now supports the macOS platform, from version 13.0 Ventura onwards. Major updates include:

    • New stacked plot: view plots of your streams vertically stacked. Complete with event stamping to view epochs, and filtering to view specific streams and events.
    • Import events from CSV: import event stamps to your Trace document with automatic typing.
    • New minimap and playback controls: find the period of time currently plotted quickly and easily with a new visual interface.
    Source code(tar.gz)
    Source code(zip)
  • v2.0.0-alpha(Aug 6, 2022)

    Note that this version is not backwards compatible with previous versions of Trace due to changes in the decoding and encoding of .trace files as a result of new file compression logic.

    New features include:

    • New file compression logic to reduce file sizes.
    • New sectioning and icon rules to simplify stream identification.

    Bug fixes include:

    • New document onboarding to guide data import for new Trace projects (https://github.com/tahmidazam/Trace/issues/5).
    • Enabled deletion of streams (https://github.com/tahmidazam/Trace/issues/3).
    Source code(tar.gz)
    Source code(zip)
  • v1.0.0-alpha(Aug 4, 2022)

    The first major release of Trace. Features include:

    • 2-dimensional scalp map visualisation
    • Potential plots
    • Support for multi-stream data import from CSV
    • Debut of new minimal file format, .trace.

    Full Changelog: https://github.com/tahmidazam/Trace/commits/v0.1.0-alpha

    Source code(tar.gz)
    Source code(zip)
Owner
Tahmid Azam
17 year old SwiftUI and Firebase developer from Oxford, UK.
Tahmid Azam
This is a brain teaser app I created as part of my course with Paul Hudson.

RockPaperScissorBrainTeaser This is a brain teaser app I created as part of my course with Paul Hudson. In this app my challenges were: Each turn of t

Alex Diaz 1 Nov 30, 2021
Giphy is an open source iOS app based on MVVM (Model–view–viewmodel) software architectural pattern.

Giphy(Search and display gifs) - MVVM Description Giphy is an open source iOS app based on MVVM (Model–view–viewmodel) software architectural pattern.

Tirupati Balan 8 Jun 14, 2022
OutRun is an iOS app for recording and viewing your outdoor workouts

OutRun is an iOS app for recording and viewing your outdoor workouts. Despite the name it supports not just running, but also walking, hiking, cycling and skating.

Tim Fraedrich 195 Dec 28, 2022
An iOS template project using SwiftUI, Combine and MVVM-C software architecture

SwiftUI-MVVM-C A template project that uses SwiftUI for UI, Combine for event handling, MVVM-C for software architecture. I have done some small proje

Huy Nguyen 107 Jan 2, 2023
A simple sticker editing iOS app

StickerMator StickerMator is a SwiftUI based iOS app that runs with iPhone and iPad. using this app you can add stickers to your photos, image manipul

MA 3 Dec 29, 2022
OONI Probe is free and open source software designed to measure internet censorship and other forms of network interference.

OONI Probe iOS OONI Probe is free and open source software designed to measure internet censorship and other forms of network interference. Click here

Open Observatory of Network Interference (OONI) 59 Nov 2, 2022
iOS On-Device Game Cheat Creation/Sharing Platform and Software

CheatManager CheatManager is a mobile platform, used for installation/distribution/creation of mobile game cheats/hacks. This platform is completely d

Project Manticore 49 Jan 2, 2023
Client library for making in-app purchases on iOS and macOS Automattic apps

MobilePayKit Client library for making in-app purchases on iOS and macOS Automattic apps Introduction MobilePayKit is a client library for making in-a

Automattic 8 Oct 20, 2022
iOS framework for making Turbo native apps

Turbo Native for iOS Note: The Hotwire frameworks are presented in beta form. We're using them all in production with HEY, but expect that significant

Hotwire 493 Jan 1, 2023
Add a software notch to your outdated Macbook! Deceive strangers!

The Notch Draws a persistent little cutout out at the top of the screen, on top of everything else. Purpose Each year when Apple releases a new Macboo

vgmoose 15 Nov 18, 2022