Skip to content

Releases: Aharoni-Lab/mio

v0.6.0 - Becoming `mio`

11 Dec 00:53
920d795
Compare
Choose a tag to compare

0.6.0 - 24-12-10

Breaking Changes

  • miniscope-io is now known as mio! Big thanks to @heuer
    for graciously giving us the name. This gives us a nice, short name that is uniform
    across pypi, the repository, and the cli.
  • The {meth}mio.models.config.LogConfig.level_file and {meth}mio.models.config.LogConfig.level_stdout
    fields are no longer automatically populated from the level field.
    This was because of the way the multi-source config system propagates values between
    sources with different priorities. Now downstream consumers should check if these values
    are None and use the level field if so.

Config

Two big changes to config:

  • #72 - @sneakers-the-rat - Global config, user config
    from multiple sources: see the config documentation for more
  • #76 - @sneakers-the-rat - Convert formats to yaml.
    We finally got rid of the godforsaken self-inflicted wound of having instantiated models
    serve as config, and instead are using yaml everywhere for static config. This includes
    every yaml-able config having a header that indicates which model the config corresponds to,
    a (locally) unique id, which can be used anywhere a path can be, and a version stamp in anticipation
    of being able to handle model migrations.

CI

  • #75 - @sneakers-the-rat - Test docs builds on PRs
    to avoid broken links and references

v0.5.0 Enhancements and bugfixes to `StreamDaq`; adding `device_update` module; CI/CD updates.

11 Nov 12:43
722552a
Compare
Choose a tag to compare

Enhancements and bugfixes to StreamDaq; adding device_update module; CI/CD updates.

Features / bugfixes

  • Over-the-air device config: modules and commands for updating and rebooting; e.g., mio update --key LED --value 10, mio device --reboot.
  • Continuous run: updated error handling to continuously capture even when the data stream is interrupted.
  • UNIX timestamp: added UNIX timestamp to metadata file export.
  • More Opal Kelly bitfiles: added FPGA configuration images and organized them based on Manchester encoding conventions, frequency, etc.

CI/CD

  • Switched to pdm from poetry; now pdm install --with all for contributing.
  • Added workflow for readthedocs preview link in PRs.
  • Added snake_case enforcement (Lint).

Related PRs: #45, #48, #49, #50, #53,
Contributors: @t-sasatani, @sneakers-the-rat, @MarcelMB, @phildong

v0.4.1 Enhancements for StreamDaq

01 Sep 05:28
d4e4597
Compare
Choose a tag to compare

Added Features

  • Support dummy words at the beginning of buffer to make data detection in StreamDaq more robust. The length of this word can be set via the device config YAML file.
  • models.stream.ADCScaling class for converting ADC raw values into voltage. The scaling factors can be set via the device config YAML file.

Related PRs: #41, #44
Related Issues: #36
Contributors: @t-sasatani, @sneakers-the-rat, @MarcelMB.

v0.4.0 Enhancements and bugfixes to for StreamDaq

27 Aug 12:55
4f4f788
Compare
Choose a tag to compare

Enhancements and bugfixes to StreamDaq. Mostly around handling metadata.

Contributors: @t-sasatani, @sneakers-the-rat, @MarcelMB.
Related PRs: #35, #38, #33
Related Issues: #34, #36, #38, #40

Features:

  • Metadata handling: CSV export and real-time plotting of metadata. The plotting feature is experimental and is still very unstable. Also improved metadata error handling.
  • CLI enhancement: Generate video and metadata csv files with same stem names.

Models/Formats:

  • Runtime config: StreamDevRuntime now configures queue and buffer sizes used in StreamDaq.

CI / Bugfix:

  • Fix termination: Now buffer size doesn't affect output video. Very good for tests.
  • Device docs section: For adding documentation about specific devices.
  • CLI docs on RTD: Mock binaries so CLI docs show up on RTD.
  • Dependency: Update some packages for Windows compatibility.

v0.3.0 - Enhancements to StreamDaq and improved CI processes

04 Jul 11:36
f11d901
Compare
Choose a tag to compare

Enhancements to StreamDaq and improved CI processes.

Contributors: @sneakers-the-rat, @t-sasatani.
Related PRs and Issues: #29, #31, #27

Features:

  • Performance enhancements: Refactoring of streamDaq to eliminate delays in the default configuration.
  • New CLI: Introduced a click-based CLI offering greater flexibility and scalability.
  • Test coverage: Integrated Coveralls to display test coverage statistics.
  • BufferFormatter class: Added for flexible bit/byte operations and decoding incoming buffers.

Models/Formats:

  • Configuration changes: Isolated device config and user config. device config is now stored in StreamDevConfig (renamed from StreamDaqConfig). User configs are segregated to the CLI.

CI:

  • Python 3.12 compatibility: Added tests for Python 3.12.
  • StreamDaq tests: Fixed issues with video hash assert tests in streamDaq.
  • Global test timeout: added global timeout for all tests.

v0.2.1 - Linting and formatting

22 Jun 00:35
56f821b
Compare
Choose a tag to compare

Linting and code formatting :)

Added black and ruff for linting and formatting,
reformatted the package.

See the Contributing documentation for
details and usage.

v0.2.0 - Testing and streamlining StreamDaq

22 Jun 00:31
eb649ec
Compare
Choose a tag to compare

StreamDaq enhancements and testing

Testing:

  • @t-sasatani - add end-to-end test for {class}~miniscope_io.stream_daq.streamDaq
  • Add a mock class for {class}~miniscope_io.devices.opalkelly.okDev
  • replace tmpdir fixture and tempfile module with tmp_path

New:

  • @t-sasatani - allow use of okDev on Windows
  • {meth}~miniscope_io.stream_daq.StreamDaq.capture can export video :)
  • More specific exceptions:
    • {class}~miniscope_io.exceptions.StreamError
    • {class}~miniscope_io.exceptions.StreamReadError
    • {class}~miniscope_io.exceptions.DeviceError
    • {class}~miniscope_io.exceptions.DeviceOpenError
    • {class}~miniscope_io.exceptions.DeviceConfigurationError
  • {func}~miniscope_io.utils.hash_video - hash decoded video frames, rather than encoded video file

Fixed:

  • Removed print statements in {class}~miniscope_io.devices.opalkelly.okDev
  • {meth}~miniscope_io.stream_daq.StreamDaq.capture
    • Don't require config
    • Replace logging with {func}~miniscope_io.logging.init_logger
    • Use of {attr}~miniscope_io.stream_daq.StreamDaq.terminate to control inner loops

Models:

  • added fs and show_video to {class}~miniscope_io.models.stream.StreamDaqConfig

CI:

  • @t-sasatani - restore windows and mac tests (oops)
  • caching dependency installs
  • not using pytest-emoji, it was always annoying

v0.1.8 - Support of various image formats

16 Jun 14:29
aabd232
Compare
Choose a tag to compare

New features:

  • Support for Various Image Formats: streamDaq now supports multiple image formats, including different image sizes, frame rates (FPS), and bit-depths. These configurations can be provided via a YAML file. Examples of these configurations can be found in miniscope_io.data.config.
  • Pydantic Model for Configuration: Added a Pydantic model to validate the configuration of streamDaq.
  • Bitstream Loader: Added a bitstream loader to automatically configure the Opal Kelly FPGA when running streamDaq.
  • Updated Command Line Script: The command line script for running streamDaq has been updated. Use streamDaq -c path/to/config/yaml/file.yml to run the process with your YAML configuration file.
  • Logger Module: Added a logger module that can be configured using environmental variables or a .env file.

Note: Version 0.1.7 was skipped accidentally and does not exist.

v0.1.6 - Wireless FPGA DAQ

09 Apr 19:39
b564096
Compare
Choose a tag to compare

New features:

  • Added support for the wireless FPGA and UART daqs - work in progress unifying the API, but
    initial version of code is present in stream_daq.py
  • Vendored opalkelly device drivers - see devices and vendor

v0.1.5 - Export video

04 Sep 05:19
Compare
Choose a tag to compare

Bugfixes:

  • Handle absolute paths correctly on windows, which can't deal with {meth}pathlib.Path.resolve(), apparently

New features:

  • Added {meth}~miniscope_io.io.SDCard.to_video to export videos
    • Added notebook demonstrating {meth}~miniscope_io.io.SDCard.to_video
  • Added {mod}miniscope_io.utils module with {func}~.utils.hash_file function for hashing files (used in testing)

Code structure:

  • (Minor) moved {meth}~miniscope_io.io.SDCard.skip to general methods block (no change)

Tests:

  • Run tests on macos and windows