Releases: Aharoni-Lab/mio
v0.6.0 - Becoming `mio`
0.6.0 - 24-12-10
Breaking Changes
miniscope-io
is now known asmio
! 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 thelevel
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
areNone
and use thelevel
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
- Convertformats
toyaml
.
We finally got rid of the godforsaken self-inflicted wound of having instantiated models
serve as config, and instead are usingyaml
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.
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
frompoetry
; nowpdm 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
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
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 inStreamDaq
.
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
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 fromStreamDaqConfig
). 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
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
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 andtempfile
module withtmp_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
- {class}
- {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
- Don't require
Models:
- added
fs
andshow_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
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 inminiscope_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. UsestreamDaq -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
New features:
- Added support for the wireless FPGA and UART daqs - work in progress unifying the API, but
initial version of code is present instream_daq.py
- Vendored opalkelly device drivers - see
devices
andvendor
v0.1.5 - Export video
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 notebook demonstrating {meth}
- 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