Skip to content

Releases: vanvalenlab/deepcell-tracking

0.5.3

18 Nov 05:57
0b6a369
Compare
Choose a tag to compare

🐛 Bug Fixes

Remove `pathlib` from `setup.py`; fix build issues @zverozabr (#86)

Fixes #85

🧰 Maintenance

Bump version to 0.5.3. @willgraf (#87)

0.5.2

25 Oct 23:25
b3c820d
Compare
Choose a tag to compare

🐛 Bug Fixes

Speed up `trks_stats` by a factor of 5 @willgraf (#84)

trks_stats is used to calculate various statistics on a trks file. The old implementation ended up calling np.unique inside a double for loop, which caused the runtime to spike. These changes update the internal logic to greatly improve the runtime (namely, by separating the logic into two different for loops, updating the time complexity from O(batch * frames * cells) to O(batch*(frames+cells)).

Some example times on the current registry tracking data (all times include time to run load_trks):

  • test.trks from 227s to 47s
  • val.trks from 549s to 110s
  • train.trks from 1968s to 386s

0.5.1

25 Oct 21:04
1c6d160
Compare
Choose a tag to compare

🐛 Bug Fixes

Use `np.any` instead of `np.sum` when finding all frames that contain a given object. @willgraf (#82)

np.sum counts all the frames the object is in, but we really only care that it exists in the given frame, not the number. np.any is about 3x faster (in my examples lineage), and should help speed up the slowest code in both is_valid_lineage and relabel_sequential_lineage.

Additionally, is_valid_lineage has some improved warning messages, and saves a single loop across the cells by iteratively removing the cells with the lineage from a set of all cells.

🧰 Maintenance

Bump the version to 0.5.1. @willgraf (#83)

0.5.0

11 Oct 22:54
a8c16d0
Compare
Choose a tag to compare

🚀 Features

Improve error handling for `relabel_sequential_lineage` and `is_valid_lineage` @willgraf (#73)

is_valid_lineage only checks the lineage object itself. However, the lineage object is completely dependent on the y label mask. This function has been changed to require the y array, and is a much stronger validation of lineages. (Closes #72) This PR changes the is_valid_lineage signature, and should be considered a breaking change.

Additionally, relabel_sequential has been found to map unknown integers to 0. This caused some confusion that the original .trk file had a 0 as a daughter value. When this happens, relabel_sequential_lineage will warn the user that the value is getting mapped to 0. This will only happen with invalid lineages.

Finally, the Track object has been updated to only call relabel_sequential_lineage if the lineage is found to be valid. This should help reduce instantiation time by skipping the relabel step for invalid batches.

Migrate `Track` and `concat_tracks` to `deepcell.data.tracking`. @willgraf (#79)

These functions are being updated to use tf.SparseTensors to mitigate their memory footprint. However, tensorflow is not a dependency of deepcell-tracking, and is only used in the deepcell package. Fortunately, these functions are purely used in training pre-processing and are not actually used in this package.

This is a breaking change, to use the Track or concat_tracks functions, please use either deepcell-tracking<0.5.0 or deepcell>=0.11.0.

🐛 Bug Fixes

Fix `norecursedirs` to ignore build directory @willgraf (#80)

Tests started failing due to a duplicate test event found in the build directory. This should be ignored in pytest.ini, but is an erroneous comma in the path. This PR fixes the norecursedirs setting.

Fix bad warning message in `is_valid_lineage` @willgraf (#77)

There is a bad label in one of the parent checks. This PR updates the message for accuracy.

Validate parent lineage field as well as daughters. @willgraf (#76)

#73 updated is_valid_lineage to do better of all cells. However, there is no extra validation of the parent field, which is used in the isbi_utils functions.

This PR adds some basic validation of the parent lineage field to improve the validation of the lineage objects.

🧰 Maintenance

Drop support for Python 3.5 @willgraf (#74)

Python 3.5 has reached EOL. This PR removes support for it.

Bump version to `0.5.0`. @willgraf (#81)

0.5.0-rc3

21 Sep 18:54
13ccc14
Compare
Choose a tag to compare
0.5.0-rc3 Pre-release
Pre-release

🐛 Bug Fixes

Fix bad warning message in `is_valid_lineage` @willgraf (#77)

There is a bad label in one of the parent checks. This PR updates the message for accuracy.

Validate parent lineage field as well as daughters. @willgraf (#76)

#73 updated is_valid_lineage to do better of all cells. However, there is no extra validation of the parent field, which is used in the isbi_utils functions.

This PR adds some basic validation of the parent lineage field to improve the validation of the lineage objects.

0.5.0-rc2

21 Sep 16:40
6414e1d
Compare
Choose a tag to compare
0.5.0-rc2 Pre-release
Pre-release

🐛 Bug Fixes

Validate parent lineage field as well as daughters. @willgraf (#76)

#73 updated is_valid_lineage to do better of all cells. However, there is no extra validation of the parent field, which is used in the isbi_utils functions.

This PR adds some basic validation of the parent lineage field to improve the validation of the lineage objects.

0.4.5

18 Aug 20:28
526b65b
Compare
Choose a tag to compare

🐛 Bug Fixes

`is_valid_lineage` should check if the daughter ID is valid. @willgraf (#70)

If a cell's daughter ID is not a valid track ID, then is_valid_lineage will crash due to a KeyError. Instead, it should catch this error and note the lineage as invalid.

0.4.4

13 Aug 19:53
fe53ddc
Compare
Choose a tag to compare

🚀 Features

Support saving and loading trk/trks data to/from `BytesIO` @msschwartz21 (#68)

In the data-registry, we often read and write track data in memory in order to facilitate moving data to and from s3 buckets. This PR enables a io.BytesIO() object to be passed into save_trks and load_trks in place of a filepath. Additionally a new utility function save_track_data is introduced to serve as a base for save_trks and save_trk which are wrappers that allow saving to either trk or trks.

0.4.3

06 Aug 02:08
cd8eea4
Compare
Choose a tag to compare

🚀 Features

Change `isbi_utils` from writing files to comparing in memory @R-Ding (#67)

What

  • Replace writing to GT and result ISBI-style .txt files with saving an array of ISBI-style dictionaries and comparing those.
  • Modifying isbi_utils_tests to test the new approach

Why

  • Comparing in memory is quicker and allows for less chances of error

🐛 Bug Fixes

Cache the entire Python environment to speed up build times. @willgraf (#66)

What

  • Cache the entire Python environment in the testing GitHub Action workflow.

Why

0.4.2

15 Jul 22:41
f2bb550
Compare
Choose a tag to compare
Support Python 3.9 @willgraf (#61)

🐛 Bug Fixes

Compress `.trks` by using gzip compression when writing the tarfile. @willgraf (#64)

The third time's the charm! This is the same PR as #63, but removing the changes featured in #62.

This PR changes the writemode of tarfile to write in w:gz, or with gzip compression. The read mode of tarfile natively supports this.

Additionally, some related tests have been updated to use the tmpdir test fixture instead of creating their own temporary directory.