Releases: vanvalenlab/deepcell-tracking
0.5.3
0.5.2
🐛 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 47sval.trks
from 549s to 110strain.trks
from 1968s to 386s
0.5.1
🐛 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
0.5.0
🚀 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
0.5.0-rc3
🐛 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
🐛 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
0.4.4
🚀 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
🚀 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
0.4.2
🐛 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.