Skip to main content

Seraph Dataset Management Tool

A hot new dataset management tool that's crazy easy!

Motivation

There is no generally accepted metadata standard for multimedia data, and no tooling for multimedia dataset (meta)data management. At the outset of TEAM-ML, creating a training dataset was an error-prone process that typically required 8-20 hours of work from an ML expert, at a total cost of $1,200-$3,000.

To expedite the creation and refinement of training datasets, we developed an absolute minimum metadata standard for our multimedia datasets and a management tool that covers all our common use cases.

In our experience, it requires 0.5-3 hours to prepare a component dataset for Seraph management with a bespoke script. This is a non-recurring cost that depends on the original dataset format and the delta between that format and the Seraph format. Once all component datasets are configured, a training dataset can be assembled in 5-30 minutes, depending on (1) the user’s understanding of the tooling and the desired end composition and (2) whether the component dataset(s) can be copied in as-is or if the data needs to be resampled/resized/etc. Seraph is particularly useful for creating special-purpose or exploratory datasets from existing components; we were able to create a “9mm Parabellum Cartridge Dataset” at a cost of <$10.

Seraph currently supports only audio datasets, as anything else is out of scope for TEAM-ML.

Installation

You can install from PyPI pip:

pip install libseraph

Local Installation

conda create --name seraph python=3.12
conda activate seraph

pip install .

conda deactivate

Usage

The most used features of the Seraph tool are:

  • Audio
    • Import audio data from other datasets, including allowing class selection and exclusion
    • Generate duration metadata
    • Clip audio data to a set length while preserving original track identity data
    • Resample audio
    • Prune empty audio files
  • Classes
    • Switch class columns
    • Rename, merge, regex merge, and drop classes by name
    • Check class balance, including by fold/split
    • Compose class metadata from existing column(s)
  • Metadata
    • Initialize a new seraph dataset
    • Verify all data items against the dataset contract specified in the metadata file
  • Provenance
    • Prototype OpenIRIS integration for showing and submitting provenance
  • Prune
    • Remove records with no corresponding files and vice versa
    • Drop data by row value
    • Drop metadata columns
  • Splits
    • Automatically generate train/test/validate splits or cross-validation folds with respect to class balance and optionally avoid pseudoreplication
  • Version
  • Integrations -Prototype Fuel AI metadata format export

Examples

# Activate environment
conda activate seraph

# Initialize new dataset
seraph meta init

# Import audio datasets
seraph audio import --import_dir ~/Desktop/Kaggle_Gunshots/
seraph audio import --import_dir ~/Desktop/Cadre_Forensics/ --channel_merge_strat mix_down --sample_rate_merge_strat mix_down

# Switch classes from `gun_type` to `caliber`
seraph classes switch --new_class_col caliber --new_name_for_current_class_col gun_type

# Merge degenerate classes
seraph classes merge --target_class_name 9x19 --classes_to_merge "9mm Luger" --classes_to_merge "9mm"

# Add durations to columns and clip to 1 sec
seraph audio duration --metadata_column_conflict_strat replace
seraph audio clip --clip_duration_secs 1 --dry_run

# Show provenance data (WIP)
seraph prov show
seraph prov submit --activity_label "Make new gunshot dataset"

# Show verioning data (WIP)
seraph version show

# Cleanup
conda deactivate

Testing

# If needed, install test dependencies
# pip install .[coverage]

python3 -m coverage run -m unittest discover -s test -p "*_test.py" && python -m coverage report --skip-covered
python -m coverage html

Tests to Write

  • No Coverage
    • integrations
    • provenance
  • Partial Coverage
    • meta
    • version

Feature Wish-List

  • IDEMPOTENCE
    • Prevent a dataset from being "double-tapped"
  • Pipe dreams
    • Undo

Versioning

We use SemVer for versioning. For the versions available, see the tags on this repository.

Authors

  • Ryan Quinn - Initial work

License

MIT.

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

libseraph-0.3.2.tar.gz (50.0 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

libseraph-0.3.2-py3-none-any.whl (58.1 kB view details)

Uploaded Python 3

File details

Details for the file libseraph-0.3.2.tar.gz.

File metadata

  • Download URL: libseraph-0.3.2.tar.gz
  • Upload date:
  • Size: 50.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.12

File hashes

Hashes for libseraph-0.3.2.tar.gz
Algorithm Hash digest
SHA256 e6d51e8ff42538bd432e399b849d8d7f1ad2e1920822b42edf2d59ba22a8532b
MD5 2825ade7146376841cb286ba5cb5bde1
BLAKE2b-256 1011c14c4d3c11fef1567e3878c7eda5d6a7c96ea039ae5b522436dbdccc633f

See more details on using hashes here.

File details

Details for the file libseraph-0.3.2-py3-none-any.whl.

File metadata

  • Download URL: libseraph-0.3.2-py3-none-any.whl
  • Upload date:
  • Size: 58.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.12

File hashes

Hashes for libseraph-0.3.2-py3-none-any.whl
Algorithm Hash digest
SHA256 552d76bd91f348d1b8c078509b0545a1349c205fb1362a5e63f34d3949b0dc71
MD5 e5e46c28542b26312a0399238fac16ba
BLAKE2b-256 fe6d498d5558ac6ea4d7c2e9677210f1bfed1e339a604b91478a85e7d5d34a4c

See more details on using hashes here.

Release history Release notifications | RSS feed

0.3.3

2 files

This release

0.3.2 This release

2 files

0.3.1

2 files

0.3.0

2 files

0.2.0

2 files

0.1.1

2 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