Skip to content

Releases: stephane-caron/foxplot

v2.1.0

Choose a tag to compare

@stephane-caron stephane-caron released this 02 Sep 07:56

This release fixes lag estimation and two time-series operator bugs.

Added

  • CICD: Improve unit test coverage
  • Support both .json and .jsonl extensions for JSON Lines files

Fixed

  • Fix lag estimation function
  • Fix series multiplication and division operators

Removed

  • End support for Python 3.8

v2.0.1

Choose a tag to compare

@stephane-caron stephane-caron released this 21 Apr 17:48
a50e31c

This patch release fixes an issue in data.my.series.low_pass_filter(T).

Changed

  • CICD: Replace black by ruff format for linting

Fixed

  • Fix MyPy checks
  • Fix low-pass filter

v2.0.0

Choose a tag to compare

@stephane-caron stephane-caron released this 21 Apr 11:28
a4c6c53

This release simplifies applying functions to time series:

  • Before: some_function(data.times, data.my.series, *args)
  • After: data.my.series.some_function(*args)

This makes it easier to e.g. plot a series and its derivative:

fox.plot(
     data.observation.servo.left_wheel.torque,
     right=data.observation.servo.left_wheel.torque.low_pass_filter(T=0.05),
)

image

Added

  • Add a Fox.empty() method to start from an empty state
  • CLI: List available functions in the initial prompt
  • Internal: Add reference to time values in each series instance
  • Series: divisions between series and scalar values
  • Series: products between series and scalar values
  • Series: unitary minus operator
  • Top-level decode function to unpack dictionaries from files

Changed

  • Breaking: Function: absolute value moved to Series
  • Breaking: Function: low-pass filter moved to Series
  • Breaking: Function: standard deviation moved to Series
  • Breaking: Function: time-derivative by finite differences moved to Series
  • Breaking: Rename FoxplotException to FoxplotError
  • Breaking: Rename Series to LabeledSeries
  • Breaking: Rename the front class FrozenSeries to Series
  • CICD: Update checkout action to v4
  • Default constructor of Fox now requires a file name or path
  • Update to latest uplot-python API

Fixed

  • Correct some type annotations
  • Make sure time values are scalar timestamps
  • Use correct timestamped uPlot argument

Removed

  • Breaking: Remove Fox.freeze function
  • Breaking: Remove Fox.labels property
  • Breaking: Remove Fox.read_from_file function (moved to constructor)
  • Breaking: Remove left_axis_unit argument of plot function
  • Breaking: Remove right_axis_unit argument of plot function
  • Clean up unused internal color picker

v1.0.0

Choose a tag to compare

@stephane-caron stephane-caron released this 30 Oct 16:48
c422713

This release adds low-pass filtering and first-order lag estimation to foxplot.functions.

In a temporary lapse of semantic versioning 😉 the release takes on the symbolic "1.0.0" version number, not because of an API-breaking change, but to rather display that the project has matured after two years.

Added

  • Function: lag estimator
  • Function: low-pass filter
  • docs: Functions page
  • docs: Interactive-mode page
  • docs: Tips-and-tricks page

Removed

  • Remove print_command_line argument from Fox.plot
  • Remove µPlot source from distribution, as we now depend on uplot-python

v0.7.0

Choose a tag to compare

@stephane-caron stephane-caron released this 28 Oct 19:41
733c191

This minor release enables parsing string-valued time series.

Added

  • Function: Absolute value

Fixed

  • Allow input files with string values

v0.6.0

Choose a tag to compare

@stephane-caron stephane-caron released this 17 Jun 13:54

Here comes foxplot 0.6.0, adding basic support for calculation with leaf series. Now we can do things like:

power = data.observation.servo.left_wheel.torque * data.observation.servo.left_wheel.velocity
omega_x = data.observation.imu.angular_velocity[0]
fox.plot(power, right=[std(omega_x, window_size=5)])

Which results for instance in the following plot:

image

Future functions and basic operations between various data types (vectors, rotations, ...) are welcome.

May your plots be insightful!

Added

  • Feature: calculation of sums and products between series
  • Function: Windowed standard deviations
  • Separate classes for "hot" (reading the input) and "frozen" series
  • Start a functions submodule for commonly used functions

Changed

  • Bump required Python version to 3.8
  • Rename and specialize get_series to get_frozen_series
  • Value type for frozen series switched to NumPy arrays

Fixed

  • Make sure frozen series at leaves are floating-point valued
  • Type annotations for NumPy arrays

Removed

  • Replace _get(n) method by _values in frozen series

v0.5.0

Choose a tag to compare

@stephane-caron stephane-caron released this 01 Nov 13:25
d5d047c

This release reverts to fox.plot in interactive mode, repeats previous values upon input gaps, and otherwise improves on a few friction points.

Added

  • Allow single-series right plots
  • Argument print_command_line to plotting function

Changed

  • CLI: Revert to fox.plot for better docs and discoverability
  • Rename internal IndexedSeries to just Series
  • Repeat previous value when there is a gap in the input

v0.4.0

Choose a tag to compare

@stephane-caron stephane-caron released this 23 Oct 10:40
2c7abbd

With this release, plotting a internal node plots all indexed series within (non-recursively). This is handy to plot e.g. vector data directly:

In [1]: foxplot([data.observation.imu.linear_acceleration])

image

Added

  • Automatic plot title from log file name
  • Plotting a internal node plots all indexed series within (non-recursively)
  • Warn when trying to plot structured data

Changed

  • Node labels are internal (not exposed to TAB completion)

v0.3.0

Choose a tag to compare

@stephane-caron stephane-caron released this 04 Sep 08:36
5401869

This is v0.3.0 of ''foxplot'', a command-line tool to plot time-series data from newline-delimited JSON. This release updates the CLI workflow where we can now use the foxplot and set_time functions directly. It also smooths out some friction points to improve user experience.

Breaking changes

  • CLI: Expose foxplot function rather than a fox instance
  • CLI: Expose set_time function

Added

  • Allow single-series plots
  • Detect time key from root keys in the input
  • Length attribute to indexed series

Changed

  • Put filename at the end of suggested command line
  • Removed time argument from the plot function
  • Rephrase command-line hint

v0.2.0

Choose a tag to compare

@stephane-caron stephane-caron released this 08 Aug 10:07
efaadbe

With this release, Foxplot keeps axis labels ordered consistently thanks to a contribution from @boragokbakan 👍

Added

  • CI workflow checking that PyPI package installation upon new releases

Changed

  • Increase time precision from 3 to 4 significant digits
  • Keep ordered axis labels for plot color consistency, thanks to @boragokbakan 👍

Fixed

  • Consistent key order between plots of the same log, thanks to @boragokbakan 👍