Skip to main content

ingesture

Ingest gesturally-structured data into models with multiple export

This package is not even close to usable, and is just a sketch at the moment. If for some reason you see it and would like to work on it with me, feel free to open an issue :)

Declare your data

Even the most disorganized data system has some structure. We want to be able to recover it without demanding that the entire acquisition process be reworked

To do that, we can use a family of specifiers to tell ingest where to get metadata

from datetime import datetime
from ingesture import Schema, spec
from pydantic import Field

class MyData(Schema):
    # parse metadata in a filename
    subject_id: str = Field(..., 
        description="The ID of a subject of course!",
        spec = spec.Path('electrophysiology_{subject_id}_*.csv')
    )
    # parse multiple values at once
    date: datetime
    experimenter: str
    date, experimenter = Field(...,
        spec = spec.Path('{date}_{experimenter}_optodata.h5')
    )
    
    
    # from inside a .mat file
    other_meta: int = Field(...
        spec = spec.Mat(
            path='**/notebook.mat', # 2 **s mean we can glob recursively
            field = ('nb', 1, 'user') # index recursively through the .mat
        )
    )
    # and so on

Then, parse your schema from a folder

data = MyData.make('/home/lab/my_data')

Or a bunch of them!

data = MyData.make('/home/lab/my_datas/*')

Multiple Strategies

todo

Hierarchical Modeling

Our data is rarely a single type, often there is a repeatable substructure that is paired with different macro-structures: eg. you have open-ephys data within a directory with behavioral data in one experiment and paired with optical data in another.

Make submodels and recombine them freely...

todo

Export Data

Once we have data in an abstract model, then we want to be able to export it to multiple formats! To do that we need an interface that describes the basic methods of interacting with that format (eg. .csv files are written differently than hdf5 files) and a mapping from our model fields to locations, attributes, and names in the target format.

Pydantic base export

json

From the Field specification

class MyData(Schema):
    subject_id: str = Field(
        spec = ...,
        nwb_field = "NWBFile:subject_id"
    )

From a Mapping object

class NWB_Map(Mapping):
    subject_id = 'NWBFile:subject_id'

class MyData(Schema):
    subject_id: str = Field(...)
    
    __mapping__ = NWB_Map

Release files for ingesture 0.1.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for ingesture 0.1.0
File Size Uploaded
ingesture-0.1.0.tar.gz 19.0 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for ingesture 0.1.0
File Interpreter ABI Platform
ingesture-0.1.0-py3-none-any.whl Python 3 none any Details

Total release size: 40.4 kB

Release files / ingesture-0.1.0.tar.gz

Download URL ingesture-0.1.0.tar.gz
Size 19.0 kB
Tags Source
SHA-256 checksum
How to use checksums
42020080b547533de244ef9da1da0a282c9f5d3e09ea64130e0193feaffb3ebb
BLAKE2b-256 checksum
How to use checksums
d70a6c6d2e7663760cd729ca9a11fca79342fd97ecba9c890cbaa1d6b321b49b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via poetry/1.1.13 CPython/3.9.1 Darwin/21.3.0

Release files / ingesture-0.1.0-py3-none-any.whl

Download URL ingesture-0.1.0-py3-none-any.whl
Size 21.4 kB
Tags Python 3
SHA-256 checksum
How to use checksums
e1a6a90ea80cce663ff819fc9375962a5535a7963d752dec68e40eba21ae471f
BLAKE2b-256 checksum
How to use checksums
564be67fc35762151d4c83d7703ef0d059752bd10b727f39c67b18fb25258573
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via poetry/1.1.13 CPython/3.9.1 Darwin/21.3.0

Release history Release notifications | RSS feed

This release

0.1.0 This release

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page