# EEG.jl -\> Present and Future

**URL:** <https://discourse.julialang.org/t/eeg-jl-present-and-future/44936>\
**Category:** New to Julia\
**Tags:** question, package\
**Created:** [August 14, 2020, 2:36pm UTC](https://discourse.julialang.org/t/eeg-jl-present-and-future/44936 "2020-08-14T14:36:38Z")\
**Posts on this page:** 1\
**Showing post:** 8

<div class="post-metadata">

**Author:** ![jrevels](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/jrevels/32/10393_2.png) [@jrevels](https://discourse.julialang.org/u/jrevels)\
**Post date:** [August 14, 2020, 4:59pm UTC](https://discourse.julialang.org/t/eeg-jl-present-and-future/44936/8 "2020-08-14T16:59:52Z")

</div>

> [@Zach\_Christensen](#):
>
> If we treat EEG data conceptually as an array `channels × time × epochs` then pretty much all relevant file formats could be read into a common interface. Using NamedDims.jl and TimeAxes.jl should provide most of the internal machinery for indexing by dimension name or accessing indices based on time. Once that’s in place a lot of things are generically available throughout the Julia ecosystem. There are a ton of different formats out there, but as far as I’m aware most treat each channel as a separate set of time series data. Would it be accurate to say that the biggest problem with achieving the interface I’m proposing is that the literal data structure from file would be read more literally as `ChannelVector{TimeSeriesVector{EpochVector}}` ?
> 
> Of course file specific metadata is a whole other issue, but I think that’s going require more one on one maintenance for each file type.

Having a common interface for (de)serializing LPCM sample data from arbitrary domain-specific formats (living in arbitrary storage layers - local filesystems, S3, etc.) to a common matrix representation (that can be backed by any `<:AbstractMatrix`) is exactly the motivation behind [GitHub - beacon-biosignals/Onda.jl: A Julia package for high-throughput manipulation of structured signal data across arbitrary domain-specific encodings, file formats and storage layers](https://github.com/beacon-biosignals/Onda.jl) 🙂 The package currently implements a `TimeSpan` type and an `Annotation` type which wraps it - both can be used to index sample data. Onda’s Paths/Serialization API enables users to efficiently request discontiguous data chunks on per-`TimeSpan` basis as long as the underlying storage layer/file format support it (if not, a slower but still correct fallback path is used). In a similar vein, since `Onda.Samples` types just wrap `AbstractMatrix`s, you can also e.g. just use `mmap` on top of raw LPCM blobs.

We’re also highly interested in @shashi’s recent release of [FileTrees.jl](https://discourse.julialang.org/t/ann-filetrees-jl-easy-everyday-parallelism-on-trees-of-files/44891), which we believe will compose quite well as a compute framework on top of Onda Datasets.

---

_[View the full topic](https://discourse.julialang.org/t/eeg-jl-present-and-future/44936)._
