Skip to main content

ProjectStatus Version BuildStatus License PythonVersions

The Advanced Recording Format arf is an open standard for storing data from neuronal, acoustic, and behavioral experiments in a portable, high-performance, archival format. The goal is to enable labs to share data and tools, and to allow valuable data to be accessed and analyzed for many years in the future.

arf is built on the the HDF5 format, and all arf files are accessible through standard HDF5 tools, including interfaces to HDF5 written for other languages (e.g. MATLAB, Python, etc). arf comprises a set of specifications on how different kinds of data are stored. The organization of arf files is based around the concept of an entry, a collection of data channels associated with a particular point in time. An entry might contain one or more of the following:

  • raw extracellular neural signals recorded from a multichannel probe

  • spike times extracted from neural data

  • acoustic signals from a microphone

  • times when an animal interacted with a behavioral apparatus

  • the times when a real-time signal analyzer detected vocalization

Entries and datasets have metadata attributes describing how the data were collected. Datasets and entries retain these attributes when copied or moved between arf files, helping to prevent data from becoming orphaned and uninterpretable.

This repository contains:

  • The specification for arf (in specification.md). This is also hosted at https://meliza.org/spec:1/arf/.

  • A fast, type-safe C++ interface for reading and writing arf files

  • A python interface for reading and writing arf files

You don’t need the python or C++ libraries to read arf files; they are just standard HDF5 files that can be accessed with standard tools and libraries, like h5py (see below).

installation

ARF files require HDF5>=1.8 (http://www.hdfgroup.org/HDF5).

The python interface requires Python 3.7 or greater and h5py>=3.8. The last version of this package to support Python 2 was 2.5.1. The last version to support h5py 2 was 2.6.7. To install the module:

pip install arf

The C++ interface needs only HDF5 and a C++11 compiler; it has no other dependencies. If writing multithreaded code, HDF5 needs to be compiled with --enable-threadsafe. The interface is header-only and does not need to be compiled. To install:

make install

version information

The specification and implementations provided in this project use a form of semantic versioning (http://semver.org). Specifications receive a major and minor version number. Changes to minor version numbers must be backwards compatible (i.e., only added requirements). The current released version of the ARF specification is 2.1.

Implementation versions are synchronized with the major version of the specification but otherwise evolve independently. For example, the python arf package version 2.1.0 is compatible with any ARF version 2.x.

There was no public release of arf prior to 2.0.

access ARF files with HDF5 tools

The structure of an arf file can be explored using the h5ls tool. For example, to list entries:

$ h5ls file.arf
test_0001                Group
test_0002                Group
test_0003                Group
test_0004                Group

Each entry appears as a Group. To list the contents of an entry, use path notation:

$ h5ls file.arf/test_0001
pcm                      Dataset {609914}

This shows that the data in test_0001 is stored in a single node, pcm}, with 609914 data points. Typically each channel will have its own dataset.

The h5dump command can be used to output data in binary format. See the HDF5 documentation for details on how to structure the output. For example, to extract sampled data to a 16-bit little-endian file (i.e., PCM format):

h5dump -d /test_0001/pcm -b LE -o test_0001.pcm file.arf

contributing

ARF is under active development and we welcome comments and contributions from neuroscientists and behavioral biologists interested in using it. We’re particularly interested in use cases that don’t fit the current specification. Please post issues or contact Dan Meliza (dan at meliza.org) directly.

Download files

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

Source Distribution

arf-2.7.3.tar.gz (11.2 kB view details)

Uploaded Source

Built Distribution

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

arf-2.7.3-py3-none-any.whl (14.0 kB view details)

Uploaded Python 3

File details

Details for the file arf-2.7.3.tar.gz.

File metadata

  • Download URL: arf-2.7.3.tar.gz
  • Upload date:
  • Size: 11.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for arf-2.7.3.tar.gz
Algorithm Hash digest
SHA256 887408dc1ac0dc3c7970d88b44619b1cc40c27c115134a770bd9adab0447b29f
MD5 3057c9d2cbfaeebfb3ecbb87aa2a403b
BLAKE2b-256 9255469b93888c8bd742e4892697a6f171bf537a69541b3411ba0cd32429e960

See more details on using hashes here.

Provenance

The following attestation bundles were made for arf-2.7.3.tar.gz:

Publisher: publish-to-pypi.yml on melizalab/arf

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file arf-2.7.3-py3-none-any.whl.

File metadata

  • Download URL: arf-2.7.3-py3-none-any.whl
  • Upload date:
  • Size: 14.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for arf-2.7.3-py3-none-any.whl
Algorithm Hash digest
SHA256 e27d022e9a1fdac62082d3d8bfbdac52b6d50361f2fd7d698ea04f47288fb80d
MD5 1074bea086cc4157421c8bda185718d2
BLAKE2b-256 4d16d6c27552a07f14336d9701c751a9b6bc546e81811bff968488dd4f2aef10

See more details on using hashes here.

Provenance

The following attestation bundles were made for arf-2.7.3-py3-none-any.whl:

Publisher: publish-to-pypi.yml on melizalab/arf

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Release history Release notifications | RSS feed

3.0.0

2 files

2.7.4

2 files

This release

2.7.3 This release

2 files

2.7.2

2 files

2.7.1

2 files

2.7.0

2 files

2.6.7

2 files

2.6.6

2 files

2.6.4

2 files

2.6.3

1 file

2.6.2

2 files

2.6.1

2 files

2.6.0

2 files

2.5.1

2 files

2.5.0

2 files

2.3.0

2 files

2.2.2

2 files

2.2.1

4 files

2.2.0

1 file

2.1.0

1 file

2.0.0

1 file

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page