Skip to content

Releases: sandialabs/tracktable

Tracktable 1.7.1

30 Oct 20:07
4476846
Compare
Choose a tag to compare

This is the release that was supposed to be Tracktable 1.7.0... but with the release bugs fixed. The release notes below are a combination of the things we fixed for 1.7.1 and what we added for 1.7.0.

New Features

  • Linux wheel-building scripts will now attempt to build Tracktable for
    all versions of CPython newer than 3.6 that are available in the
    manylinux wheel. This improves on previous work where we used a
    hardcoded and oft-duplicated list of versions to build.

  • The manylinux tag is now a CMake argument. We will continue to default
    to manylinux2014 for the moment but when it comes time to change that
    we will only need to update it in one place.

  • We now control wheel building with setup.cfg and pyproject.toml
    instead of the outdated python setup-generic.py. This puts our
    build process on much sounder footing and will work better with
    the conda-forge build process.

  • The function libraries used by the MacOS CI scripts and wheel-building
    scripts have been consolidated to remove duplication.

  • Large files in tracktable-docs and tracktable-data have been moved
    into Git LFS.

  • Maps in Folium can now be created with the attr and crs
    parameters. The attr argument is used to pass an attribution string
    for custom tile sets. The crs argument names a coordinate transform
    to project geographical points into pixel coordinates and back. The
    functions tracktable.render.render_trajectories.render_trajectories()
    and tracktable.render.render_heatmap.render_heatmap() both support these
    new arguments.

  • Trajectory maps in Folium can be animated. See the arguments animate,
    anim_display_update_interval, anim_trail_duration, and use_markers
    in tracktable.render.render_trajectories.render_trajectories().

  • New function tracktable.rw.load.load_trajectories() that will load a
    .traj, .csv, or .tsv file and assemble points into trajectories.
    An optional flag will cause it to return points instead of trajectories.
    Examples that load trajectories or points have been updated to use this
    feature.

  • Sea ports and airports can be rendered into maps for both the Cartopy
    and Folium back ends.

  • Docs and data have been separated out into their own repositories
    implemented as submodules. Note that you will need to git clone --recursive
    when cloning the source code.

Bug fixes

  • There is a compile error caused by a ternary expression inside a
    constexpr in tracktable/ThirdParty/catch2.hpp. This is an error because
    of some new rules in GCC. The fix is to eliminate the ternary expression
    and just set the stack size for Catch2 to 32K.

  • We now include boost-cpp in the Anaconda dependencies for our build
    and runtime environments. In some situations, compiled libraries in
    Boost that we rely upon were only present in that package.

  • Fixed a typo in setup-generic.py that broke wheel building.

  • Switched to libmamba solver on ReadTheDocs. Without it, our builds
    time out while waiting for conda install to decide what packages
    it wants.

  • Fixed an unbound variable error in build_osx_wheels.sh when a
    wheel output directory was explicitly specified.

  • Fixed a problem that led to great-circle fitting returning numerically
    incorrect answers.

  • Removed deprecated uses of std::unary_function<>. This was deprecated
    in C++11 and removed entirely in C++17.

  • We identified and fixed a problem with the I/O library that could cause
    a buffer overflow if the user opened a file containing UTF-8 data in
    Python in text mode and then passed it to one of Tracktable's loaders.

  • Map scale bars were being rendered incorrectly in static images under
    map projections that did not use geodetic coordinates (longitude/
    latitude) as their native coordinate system.

  • Tests for C++ point generators and great circle estimation were failing
    because points did not initialize their coordinates by default. Fixing
    this results in a very minor slowdown.

  • Setting a point property's value to None no longer crashes the interpreter.

  • DeprecatedDeclaration.h was not being installed when the user called
    make install.

Known issues

  • The documentation for tracktable.rw.load.load_trajectories() implies
    that it takes a file-like object as its input. It does not -- it takes
    a string containing a filename.

  • Documentation for tracktable.rw is not picking up the module contents.

  • There are a few files in the wheel (Jupyter notebooks and response files) that really don't belong there. They are harmless but should be removed.

Other changes

  • The data generators in tracktable.examples.data_generators have now moved
    to tracktable.data_generators.

  • Movies can be rendered directly from tracktable.render.render_movie.render_trajectory_movie
    now. This subsumes the code that used to be in the
    movie_from_trajectories example.

  • Jupyter notebook tutorials are built locally and stored in a
    separate repository (tracktable-docs) so that we no longer run
    into the CPU usage limits when uploading to ReadTheDocs.

  • The latest release branch in our repository is now called main,
    not master.

  • Sample data has been moved into a separate repository (tracktable-data)
    to help keep the Tracktable repository itself small(er).

Infrastructure and Support

Python 3.6, 3.7 no longer supported

We no longer officially support Python 3.6 or 3.7. Python 3.6 stopped
getting security updates in December 2021. Python 3.7 stopped getting
security updates in June 2023.

Having said that, we have not yet made any changes to the code that
actually require Python 3.8 or newer.

If you need to build and run Tracktable 1.7 in an environment where you
absolutely cannot update to a more recent Python version, contact us.
We sympathize -- we have plenty of experience with such environments --
and we'll work with you to get you up and running.

Wheels available on PyPI, GitHub

We are now building wheels for Python versions up through 3.11. On Linux,
we build and upload wheels to PyPI for Python
versions 3.6 through 3.11. On Windows and MacOS (Intel), we build wheels
for Python 3.8 through 3.11. On MacOS (Apple Silicon/arm64), we build
wheels for Python 3.10 and 3.11.

Internal changes to build infrastructure

We've moved all of our Linux build infrastructure to Docker containers
for easier management. This also helps us build wheels with the manylinux
standard that are usable on most common distributions. Along the way,
we've integrated test coverage and code linting into our CI pipeline.

We're planning to do something similar for our Windows builds now that
Docker on Windows hosts can run containers with the Windows kernel.

MacOS build and test procedures are still run via shell scripts due to
the lack of container support in the MacOS kernel.

Tracktable 1.7.0

22 Sep 05:17
Compare
Choose a tag to compare
Tracktable 1.7.0 Pre-release
Pre-release

THIS RELEASE HAS BEEN SUPERSEDED

The packaging code in this release has fatal flaws that result in wheels that can't be imported. Don't use it. Use 1.7.1 (coming very soon) instead.

Tracktable 1.7.0

Welcome back!

Updates

Most of the work in this release is in the build and test infrastructure to make our development practices more sustainable. We've added the following user-facing features:

  • Maps in Folium can now be created with the attr and crs
    parameters. The attr argument is used to pass an attribution string
    for custom tile sets. The crs argument names a coordinate transform
    to project geographical points into pixel coordinates and back. The
    functions tracktable.render.render_trajectories.render_trajectories()
    and tracktable.render.render_heatmap.render_heatmap() both support these
    new arguments.

  • Trajectory maps in Folium can be animated. See the arguments animate,
    anim_display_update_interval, anim_trail_duration, and use_markers
    in tracktable.render.render_trajectories.render_trajectories().

  • New function tracktable.rw.load.load_trajectories() that will load a
    .traj, .csv, or .tsv file and assemble points into trajectories.
    An optional flag will cause it to return points instead of trajectories.
    Examples that load trajectories or points have been updated to use this
    feature.

  • Sea ports and airports can be rendered into maps for both the Cartopy
    and Folium back ends.

  • Docs and data have been separated out into their own repositories
    implemented as submodules. Note that you will need to git clone --recursive
    when cloning the source code. The tracktable-data package should be installed
    as a dependency when you install with pip or from conda-forge.

Full details are available in the https://tracktable.readthedocs.io.

Files in this release

Here's what's in this release:

  • Wheels
    • Windows: Python 3.8 - 3.11
    • MacOS Intel: Python 3.8 - 3.11
    • MacOS Arm64: Python 3.9 - 3.11
    • Linux: Python 3.6 - 3.11
    • Remember to grab the tracktable-data wheel as well
  • Pre-Built Documentation
    • For this, you want the file tracktable-1.7.0-docs.tar.gz (or .tar.bz2 or .zip). The file tracktable-1.7.0-src-docs.tar.gz is NOT the user-facing documentation.
  • Source Code: Source plus sample data is getting big so we split the repository. Here are your options:
    • Everything at once: tracktable-1.7.0-src-everything.tar.gz (or .tar.bz2 or .zip)
    • Just the source code (not enough to build): tracktable-1.7.0-src.tar.gz (or .tar.bz2 or .zip)
    • Documentation source repository: tracktable-1.7.0-src-docs.tar.gz (or .tar.bz2 or .zip)
    • Sample data: tracktable-1.7.0-data.tar.gz (or .tar.bz2 or .zip)

We expect the source to change much more quickly than the sample data and documentation, which is why we split the repositories.

For any questions, please write to tracktable-questions at sandia dot gov or open an issue in this repository.

v1.6.0.2

21 Sep 14:41
Compare
Choose a tag to compare

This release contains a patch for missing modules in tracktable.examples, see release 1.6.0 for the full release notes.

v1.6.0.1

20 Sep 19:18
Compare
Choose a tag to compare

This release contains a patch for an incorrect import in tracktable.analysis, see release 1.6.0 for the full release notes.

v1.6.0

17 Sep 02:01
Compare
Choose a tag to compare

NOTE:

This release includes a hotfix for a download error in Cartopy. As soon
as the Cartopy team is able to fix this in a new release we will update
our version requirements and remove the hotfix. For more information
about the underlying problem, see nvkelso/natural-earth-vector#581.

This release includes major API changes:

  • Render module (tracktable.render) has been refactored to abstract away
    details of the back end

  • Analysis module (tracktable.analysis) has been split into Applications
    (tracktable.applications) and Algorithms (tracktable.algorithms).
    Bindings from the Analysis module are still in place with deprecation
    warnings and will be removed in release 1.8.

The Applications module contains functions for prediction, anomaly
detection, clustering, and "boxiness" (how close a trajectory is to a
perfect square). We will be refining and updating these modules
in the next few releases.

We've added better debugging support for our import process. The common
error about being unable to import _core_types has been augmented by
tests to find out exactly where in the import chain things are going wrong.

This release also includes revamped Python tutorials and demos which should be easier to follow
and try out for yourself! Find them in the code at ...tracktable/Python/tracktable/examples
and on ReadTheDocs at https://tracktable.readthedocs.io/en/latest/examples/examples.html.

v1.5.0

13 Apr 21:48
Compare
Choose a tag to compare

This release includes major updates to the documentation. The Python and C++ user guides have been overhauled. Example Jupyter notebooks are now included in the documentation.

We are also building wheels for Python 3.9 as of this release. Tracktable 1.6, due in summer 2021, will be the last version to support Python 3.5. (Python 3.5 has reached the end of its support window. See https://www.python.org/downloads/release/python-3510/ for details.)

See trajectory/tracktable!211 for detailed changes.