Changelog
All notable changes to the webknossos python library are documented in this file.
Please see the Stability Policy for details about the version schema and compatibility implications.
The format is based on Keep a Changelog
and this project adheres to Semantic Versioning MAJOR.MINOR.PATCH
.
For upgrade instructions, please check the respective Breaking Changes sections.
Unreleased
Breaking Changes
Added
Changed
Fixed
0.12.5 - 2023-06-01
Added
- Added support for Python 3.11. #843
0.12.4 - 2023-05-25
Added
Group.add_tree
now also accepts a tree object as a first parameter (instead of only a string). #891Group.remove_tree_by_id
was added. #891
Changed
- Upgrades
black
,mypy
,pylint
,pytest
. #873
Fixed
- Fixed poetry build backend for new versions of Poetry. #899
- Added axis_order fields for Zarr data format. #902
0.12.3 - 2023-02-22
Added
- Added support to import ImageJ Hyperstack tiff files via
Dataset.from_images
anddataset.add_layer_from_images
. #877
Changed
Dataset.from_images
anddataset.add_layer_from_images
now automatically convert big endian dtypes to their little endian counterparts by default. #877
Fixed
- Fixed reading czi files with non-zero axis offsets. #876
0.12.2 - 2023-02-20
Added
- Added
RemoteFolder
for assigning remote datasets to a WEBKNOSSOS folder. #868
0.12.1 - 2023-02-16
Added
- Added
read_only
parameter forannotation.temporary_volume_layer_copy
. #866
Changed
- in Dataset.layer_from_images, layer names generated from multiple input image channels no longer contain equal signs, yielding better url safety. #867
Fixed
- Fixed a bug where some czi, dm3, dm4 images could not be converted to wkw due to a too-strict check. #865
- Enforce
read_only
property of datasets also for down- and upsampling. #866
0.12.0 - 2023-02-10
Breaking Changes
- Dropped support for Python 3.7. #833
Added
- Added support for Python 3.10. #833
0.11.4 - 2023-02-09
0.11.3 - 2023-02-06
0.11.2 - 2023-01-18
Fixed
- Fixed a bug, where the image order could be randomized when passing a directory path to
Dataset.add_layer_from_images
. #854
0.11.1 - 2023-01-05
Added
Dataset.from_images
anddataset.add_layer_from_images
have new features: #842dm3
anddm4
datasets can be read without bioformats now.- It's possible to completely disable the bioformats adapter by setting
use_bioformats
to False. - Lists of images can now be handled with other readers, before only images supported by skimage worked in lists.
0.11.0 - 2022-12-09
Breaking Changes
- Removed the
id
attribute of theBoundingBox
class, also from the constructor. #836
Fixed
- Fixed bounding box serialization in NMLs, so that bounding boxes which are uploaded via annotations are now recognized properly by webKnossos. #836
- Bounding boxes keep their name, color and visibility when transformed via methods, such as
bbox.padded_with_margins()
. #836
0.10.27 - 2022-12-07
Added
- Short links, such as
https://webknossos.org/links/93zLg9U9vJ3c_UWp
, are now supported for dataset and annotation urls indownload
andopen_remote
methods. #837
0.10.26 - 2022-12-05
Changed
Dataset.from_images
anddataset.add_layer_from_images
now try to import the images via the bioformats after all other options as well. #829
Fixed
dataset.add_layer_from_images
can now handle paths to folders which only contain a single image. #829
0.10.25 - 2022-11-29
Breaking Changes
Dataset.from_images
now adds a layer per timepoint and per channel (if the data doesn't have 1 or 3 channels). #822
Added
- Added python-native CZI support for
Dataset.from_images
ordataset.add_layer_from_images
, without using bioformats. #822 dataset.add_layer_from_images
can add a layer per timepoint and per channel when passingallow_multiple_layers=True
. #822
0.10.24 - 2022-11-09
Changed
- Updated cattrs dependency to 22.2.0. #819
0.10.23 - 2022-11-01
Breaking Changes
ds.add_layer_from_images
: Turned some arguments into keyword-only arguments, only affecting positional arguments after the first 8 arguments. #818
Added
ds.add_layer_from_images
: added topleft and dtype kw-only arguments. #818
0.10.22 - 2022-10-27
Fixed
- Fixed a bug where some image sequences could not be read in layer_from_images. #817
0.10.21 - 2022-10-26
0.10.20 - 2022-10-20
Changed
- Make volume locations optional, allowing to parse segment information in future NML-only annotations. #814
Fixed
annotation.temporary_volume_layer_copy()
works also with empty volume annotations. #814
0.10.19 - 2022-10-18
Breaking Changes
- The
executor
argument can now be passed to the following methods,args
is deprecated now for those #805: dataset.copy_dataset(…)
layer.upsample(…)
layer.downsample(…)
layer.downsample_mag(…)
layer.downsample_mag_list(…)
layer.redownsample(…)
mag_view.compress(…)
view.content_is_equal(…)
Added
- Added
Dataset.from_images
, which converts images to a Dataset, possibly consisting of multiple layers. [#808](https://github.com/scalableminds/webknossos-libs/pull/808 - Added
Annotation.open_as_remote_dataset(…)
, which is a shorthand forAnnotation.download(...).get_remote_annotation_dataset()
. #811 skeleton.save()
now also accepts paths with a.zip
suffix. #811- Added
annotation.get_volume_layer_segments()
to interact with information from theSegments
tab in annotations. This method returns a dict from segment ids to an object containing optional segmentname
,color
andanchor_position
. #812 - Added convenience methods
Dataset.compress
andDataset.downsample
for compressing and downsampling all layers and mags in a dataset. #813 - Added examples for downloading segment masks from webKnossos and cubing & uploading tiff stacks. #813
0.10.18 - 2022-09-29
Added
Annotation.download()
now accepts the keyword-only argumentskip_volume_data
, which can be set toTrue
to omit downloading volume data. #806
0.10.17 - 2022-09-26
Added
- Added
annotation.get_remote_annotation_dataset()
to get a streamed annotation dataset, which also reflects fallback layers or applied mappings. #794 - Added direct access to an underlying Zarr array with the
MagView.get_zarr_array()
method. #792
0.10.16 - 2022-09-13
Added
- Added direct access to an underlying Zarr array with the
MagView.get_zarr_array()
method. #792
Changed
- Upgraded
zarr
andnumcodecs
. #798
0.10.14 - 2022-08-30
Changed
dataset.add_copy_layer()
andlayer.add_copy_mag()
now read and write the image data, not copying files. This allows to stream data from remote datasets. To continue using the filesystem copy mechanism, please usedataset.add_fs_copy_layer()
orlayer.add_fs_copy_mag()
. #790
0.10.13 - 2022-08-22
Breaking Changes
- Renamed
chunk_size
arguments tochunk_shape
.chunk_size
is still available as keyword-only argument, but deprecated. #706
Changed
- The largest_segment_id is optional now. #786
0.10.12 - 2022-08-15
Fixed
- Fixed
task.get_project()
. #785
0.10.11 - 2022-08-03
0.10.10 - 2022-07-26
0.10.9 - 2022-07-22
0.10.8 - 2022-07-15
0.10.7 - 2022-07-14
Breaking Changes
- The
Annotation
constructor takes theowner_name
argument instead ofusername
. This is only important when using keyword arguments. Theusername
attributes are still available as a proxy for theowner_name
attribute, but deprecated. #760 user_id
onAnnotationInfo
objects is deprecated, please useowner_id
instead. #760- When self-hosting a webKnossos server, please note that a webknossos version >=
22.06.0
is required. #760 & #764
Added
Dataset.upload()
acceptsLayer
objects from aRemoteDataset
in thelayers_to_link
argument list. Also,LayerToLink
can consume those viaLayerToLink.from_remote_layer()
. #761Task.create()
accepts aRemoteDataset
for thedataset_name
argument. #761- Added
annotation.get_remote_base_dataset()
returning aRemoteDataset
. #761 - Added
Team.get_by_name()
. #763 - Added
Dataset.get_remote_datasets()
. #763
Changed
- If a token is requested from the user on the commandline, it is now stored in the current context. Before, it was discarded. #761
Annotation.download()
does not need theannotation_type
anymore, and the type can also be omitted from passed URLs. #764Dataset.add_layer_from_images
allows smaller batch sizes for uncompressed writes. #766Dataset.add_layer_from_images
uses multiprocessing by default. #766
Fixed
- Fixed the bounding box inferral for volume annotation layers that were not saved in Mag(1). #765
0.10.6 - 2022-06-27
0.10.5 - 2022-06-15
0.10.4 - 2022-06-15
Breaking Changes
- Added an
align_with_other_layers
parameter toLayer.downsample
&layer.upsample
. When set to true (default), the magnifications of the existing dataset are used as guidance for downsampling/upsampling. Instead of passing a boolean, one can also pass another dataset that should be used as guidance. #730 - Changed the name of
max_mag
inLayer.downsample
tocoarsest_mag
. #730
Added
- Added
Dataset.add_layer_from_images()
to convert image stacks to wkw or zarr Dataset. This needs pims and possibly more packages, which can be installed using extras, e.g. "webknossos[all]". #741
Changed
- The
Layer.downsample
andLayer.upsample
function now automatically downsample according to magnifications already existing in the dataset. This behaviour can be turned off by setting the new parameteralign_with_other_layers
toFalse
. #730 View.get_buffered_slice_reader()
andView.get_buffered_slice_writer()
don't log anything by default now. To get the previous logging, please invoke them withlogging=True
. #741
0.10.3 - 2022-06-03
Added
- Added export of OME-NGFF v0.4 metadata for all
Dataset
s that have a Zarr layer #737
0.10.2 - 2022-05-20
Changed
- Added Python 3.9 support to wk-libs #716
Fixed
- URLs for the webknossos-context (e.g. in the
WK_URL
env var or viawebknossos_context(url=…)
) may now contain/
in the end and are sanitized. Before, requests would fail if the URL contained a final/
. #733
0.10.1 - 2022-05-10
0.10.0 - 2022-05-09
Breaking Changes
Dataset.upload()
now returns aRemoteDataset
instead instead of the URL string. You can get the URL viaremote_ds.url
. #723User.teams
now is a tuple instead of a list. #723- The deprecated
download_dataset
function now requires theorganization_id
argument. #723
Added
- Added
Dataset.open_remote()
, which returns an object of the newRemoteDataset
. #723 This can - give the webknossos URL for the dataset as
remote_ds.url
, - read image data via the webknossos zarr interface, using the inherited
Dataset
methods, and - read and change the following dataset metadata as properties:
display_name
,description
,tags
,is_public
,sharing_token
,allowed_teams
. Team
instances also contain theorganization_id
. #723
0.9.24 - 2022-05-03
Fixed
- Fixed upsampling with constant z in certain anisotropic cases. #720
0.9.23 - 2022-05-03
0.9.22 - 2022-05-02
Breaking Changes
- Renamed some entities to comply with the webKnossos terminology. #704:
- The
Graph
class changed toTree
, also related methods and attributes are renamed now, e.g.add_graph
is nowadd_tree
. All previous entities are still available, but deprecated. scale
has changed tovoxel_size
for datasets, skeletons and annotations. Changes inDataset
are backwards-compatible, butscale
is deprecated. ForAnnotation
andSkeletons
the initializer only supportsvoxel_size
, thescale
attribute is deprecatedget_best_mag
is deprecated, please useget_finest_mag
instead- In
layer.upscale
,min_mag
is deprecated in favor offinest_mag
Fixed
- Correctly maintain default_view_configuration property when downloading a dataset. #677
0.9.21 - 2022-04-20
0.9.20 - 2022-04-20
Fixed
- Fixed a bug where the server’s error message during dataset upload was not displayed to the user. #702
0.9.19 - 2022-04-11
0.9.18 - 2022-04-06
0.9.17 - 2022-04-05
0.9.16 - 2022-03-31
0.9.15 - 2022-03-31
Added
- Added cloud storage support for the
Dataset
classes, by usingUPath
from universal_pathlib and fsspec. Create remote datasets like thisDataset(UPath("s3://bucket/path/to/dataset", key="...", secret="..."), scale=(11, 11, 24))
. Datasets on cloud storage only work with Zarr-based layers. #649
0.9.14 - 2022-03-24
Breaking Changes
Dataset.download
: The argumentdataset_name
was renamed todataset_name_or_url
. #660
Added
Dataset.download
now also accepts a URL, as well as asharing_token
, which can also be part of the URL. #660
0.9.13 - 2022-03-24
Breaking Changes
- Consistently rename
organization_name
parameters toorganization_id
(except in deprecatedwebknossos.client.download_dataset
). #639
Changed
MagView.compress
now skips in-place compression of already compressed mags. #667- Replaced uses of
pathlib.Path
withUPath
from universal_pathlib. SinceUPath
is compatible withpathlib.Path
, changes in user code are not necessary. #649
Fixed
- Fixed compression of downsampled mags for layers with arbitrary and potentially mag-unaligned bounding boxes. #667
0.9.12 - 2022-03-18
Breaking Changes
- The annotation class now exposes
BoundingBox
objects instead of tuples. #646
Added
- Added
groups
andgraphs
property to skeleton.Group to access immediate child groups/graphs. #645 - The
BoundingBox
class now supports the following additional properties:id
,name
,is_visible
andcolor
. #646 - Added support for Zarr arrays in the
Dataset
classes. Users can set thedata_format
of layers tozarr
to use Zarr for storing data. #627 The current implementation has some limitations, e.g.: - Only one type of compression (Blosc+Zstd) is implemented.
- Sharding is not available in Zarr, yet. Please use
chunks_per_shard = (1, 1, 1)
. - Only local filesystem-based arrays are supported.
There are changes to the
datasource-properties.json
for Zarr layers compared to WKW layers: dataFormat
needs to be changed tozarr
.- The list of mags is called
mags
, instead ofwkwResolutions
. - Each mag is represented by an object with a single attribute
mag
, e.g.{ "mag": [1, 1, 1] }
.
Changed
- Dataset:
block_len
andfile_len
attributes are now deprecated, but still available for backwards compatibility. Usechunk_size
andchunks_per_shard
instead. These new attributes areVec3Int
, so they can be set non-uniformly. However, WKW-backed layers still require uniformchunk_size
andchunks_per_shard
. #627
Fixed
- Fixed crash during downsampling and compression of segmentation layers. #657
0.9.11 - 2022-03-16
0.9.10 - 2022-03-15
Changed
- Annotation:
Annotation.temporary_volume_layer_copy
now uses the NML-providedscale
. #644 - Dataset: Moved the deprecation warning from
get_color_layers()
to the actually deprecated methodget_color_layer()
. #635 - Inconsistent writes to datasets properties (e.g., caused due to multiprocessing) are detected automatically. The warning can be escalated to an exception with
warnings.filterwarnings("error", module="webknossos", message=r"\[WARNING\]")
. #633 - Changed the
position
of askeleton.Node
to useVec3Int
instead of(Float, Float, Float)
, because webKnossos stores node positions as integers. #645
Fixed
- Tests: The
./test.sh
script works on macOS again and doesn't throw Network Errors anymore. However the introduced fix could lead to slightly different behaviour on macOS tests vs CI tests, when UNIX socket communication is involved. #618
0.9.9 - 2022-03-03
Breaking Changes
- Changed the interface and behavior of
Annotation
s andSkeleton
s, as well as nml-parsing related code. #602 webknossos.skeleton.nml
is not exposed anymore. The previous functionality may be found inwebknossos._nml
andwebknossos/annotation/_nml_conversion.py
if needed, but please not that this is not part of the public API and may change at any time. Please use the respective logic on theAnnotation
class instead.- The
name
attribute on theSkeleton
class changed todataset_name
. - The deprecated
Skeleton.offset
attribute is removed. - The following attributes are removed from the
Skeleton
class, instead they are part of theAnnotation
class now:time
,edit_position
,edit_rotation
,zoom_level
,task_bounding_box
,user_bounding_boxes
. - The following
Annotation
methods were renamed and their arguments changed slightly:save_volume_annotation
➜export_volume_layer_to_dataset
temporary_volume_annotation_layer_copy
➜temporary_volume_layer_copy
Added
- Added new features to the
Annotation
andSkeleton
classes. #602 - The
Skeleton
class has new attributesdescription
andorganization_id
. - The
Annotation
class has new attributesusername
andannotation_id
, as well as the following attributes that are proxies for the skeleton attributes:dataset_name
,scale
,organization_id
,description
Annotation
s can now be initialized from their attributes and an optional skeleton.- New methods on
Annotation
:upload
,add_volume_layer
,delete_volume_layer
Annotation.load()
andannoation.save()
also works with.nml
files.- Added
MagView.get_views_on_disk()
as a shortcut to turningget_bounding_boxes_on_disk
into views. #621
Fixed
- Fixed the download of skeleton-only annotations. #602
0.9.8 - 2022-02-28
Added
- Added
allow_overwrite
parameter toLayer.downsample()
. #614
0.9.7 - 2022-02-28
Added
- Added
only_setup_mag
parameter to downsample-related methods inLayer
. This parameter allows creating output magnifications before parallelizing downsampling invocations to avoid outdated writes to datasource-properties.json. #610 - Added
Task.create()
method to create tasks by prodiving a dataset name, location, and rotation. #605
0.9.6 - 2022-02-15
Added
- Added
apply_merger_mode.py
example. #592 - Added support for reading from multiple volume layers in annotations. If an annotation contains multiple volume layers, the layer name has to be provided when reading from a volume layer in an annotation (in
Annotation.save_volume_annotation()
andAnnotation.temporary_volume_annotation_layer_copy()
). Also, added the methodAnnotation.get_volume_layer_names()
to see available volume layers. #588
Changed
- Dataset writes in higher mags do not increase the bounding box if the written data fits in the rounded up box. #595
Fixed
- Dataset down- & upload: #595
- Fixed download of higher mags.
- Bounding box after download is set correctly (was inflated before when downloading higher mags).
- The returned URL for uploads is corrected, this did not respect
new_dataset_name
before.
0.9.5 - 2022-02-10
Fixed
- Skeleton: Fixed a bug when comparing
Graph
instances, this fixes failing loads which had the error messageCan only compare wk.Graph to another wk.Graph.
before. #593
0.9.4 - 2022-02-09
Added
- Added AnnotationInfo, Project and Task classes for handling annotation information and annotation project administration. #574
Changed
- Lifted the restriction that
BoundingBox
cannot have a negative topleft (introduced in v0.9.0). Also, negative size dimensions are flipped, so that the topleft <= bottomright, e.g.BoundingBox((10, 10, 10), (-5, 5, 5))
->BoundingBox((5, 10, 10), (5, 5, 5))
. #589
0.9.3 - 2022-02-07
Fixed
dataset.upload(layers_to_link=…)
: Fixed a bug where the upload did not complete if layers_to_link contained layers present in uploading dataset. #584
0.9.2 - 2022-02-03
Added
- A custom network request timeout can be set using
webknossos_context(…, timeout=300)
orexport WK_TIMEOUT="300"
. #577
Changed
- The default network request timeout changed from ½min to 30 min. #577
0.9.1 - 2022-01-31
Changed
- The signatures of
(Mag)View.for_each_chunk
and(Mag)View.for_zipped_chunks
changed: - The previous argument
work_on_chunk
is now calledfunc_per_chunk
. - The various
chunk_size
arguments now have to be given in Mag(1). They now have default values. - Deprecations in
(Mag)View.get_buffered_slice_reader/_writer
#564: (Mag)View.get_buffered_slice_reader
: using the parametersoffset
andsize
is deprecated. Please use the parameter relative_bounding_box or absolute_bounding_box (both in Mag(1)) instead. The old offset behavior was absolute forMagView
s and relative forView
s.(Mag)View.get_buffered_slice_writer
: using the parameteroffset
is deprecated. Please use the parameter relative_offset or absolute_offset (both in Mag(1)) instead. The old offset behavior was absolute forMagView
s and relative forView
s.
0.9.0 - 2022-01-19
Breaking Changes
- Various changes in View & MagView signatures #553:
- Breaking Changes:
MagView.read
: if nothing is supplied and the layer does not start at (0, 0, 0), the default behaviour changes from starting at absolute (0, 0, 0) to the layer's bounding boxMagView.write
: if no offset is supplied and the layer does not start at (0, 0, 0), the default behaviour changes from starting at absolute (0, 0, 0) to the layer's bounding box(Mag)View.get_view
: read_only is a keyword-only argument nowMagView.get_bounding_boxes_on_disk()
now returns an iterator yielding bounding boxes in Mag(1)BoundingBox
cannot have negative topleft or size entries anymore (lifted in v0.9.4).
- Deprecations
The following usages are marked as deprecated with warnings and will be removed in future releases:
- Using the
offset
parameter forread
/write
/get_view
in MagView and View is deprecated. There are new counterpartsabsolute_offset
andrelative_offset
which have to be specified in Mag(1), whereasoffset
previously was specified in the Mag of the respective View. Also, forread
/get_view
only usingsize
is deprecated, since it used to refer to the size in the View's Mag. Instead,size
should always be used together withabsolute_offset
orrelative_offset
. Then it is interpreted in Mag(1). - The (Mag)View attributes
view.global_offset
andview.size
are deprecated now, which were in the Mag of the respective View. Please useview.bounding_box
instead, which is in Mag(1). read_bbox
on the (Mag)View is deprecated as well, please useread
with theabsolute_bounding_box
orrelative_bounding_box
parameter instead. You'll have to pass the bounding box in Mag(1) then.
- Using the
Added
- Added a check for dataset name availability before attempting to upload. #555
Fixed
- Fixed the dataset download of private datasets which need a token. #562
0.8.31 - 2022-01-07
Added
- Added
Annotation.save("file_name")
to save an annotation to a file andAnnotation.temporary_volume_annotation_layer_copy()
to read from the volume layer of an annotation as a WK dataset. #528 - Added
layers_to_link
parameter toDataset.upload()
so that layers don't need to be uploaded again if they already exist in another dataset on webKnossos. #544
0.8.30 - 2021-12-27
Breaking Changes
- The BoundingBoxNamedTuple was removed. Use BoundingBox instead. #526
- Some methods of creating, opening and saving have changed. The old methods are still available but deprecated. The documentation gives a good overview. Specifically, the changes are :
Dataset.create()
→Dataset()
Dataset.get_or_create()
→Dataset(…, exist_ok=True)
Dataset()
→Dataset.open()
download_dataset()
→Dataset.download()
open_annotation()
→Annotation.load()
for local files,Annotation.download()
to download from webKnossosopen_nml()
→Skeleton.load()
Skeleton.from_path()
→Skeleton.load()
Skeleton.write()
→Skeleton.save()
The deprecated methods will be removed in future releases. #520
Changed
- The detailed output of e.g. downsampling was replaced with a progress bar. #527
- Always use the sampling mode
CONSTANT_Z
when downsampling 2D data. #516 - Make computation of
largestSegmentId
more efficient for volume annotations. #531 - Consistently use resolved instead of absolute path if make_relative is False. #536
0.8.29 - 2021-12-14
Breaking Changes
- To download datasets, a recent webknossos server version is necessary (>= 21.12.0). webknossos.org is unaffected. #510
0.8.28 - 2021-12-09
0.8.27 - 2021-12-09
v0.8.25 - 2021-12-07
Added
- Added support to download datasets from external datastores, which is the case for webknossos.org. #497
Changed
- Adapt the dataset upload to new webKnossos api. #484
get_segmentation_layer()
andget_color_layer()
were deprecated and should not be used, anymore, as they will fail if no or more than one layer exists for each category. Instead,get_segmentation_layers()
andget_color_layers()
should be used (if desired in combination with[0]
to get the old, error-prone behavior).- Renamed the folder webknossos/script-collection to webknossos/script_collection to enable module imports. #505
v0.8.24 - 2021-11-30
v0.8.23 - 2021-11-29
Breaking Changes
wk.Graph
now inherits fromnetworkx.Graph
directly. Therefore, thenx_graph
attribute is removed. #481- The class
LayerCategories
was removed.COLOR_TYPE
andSEGMENTATION_TYPE
were renamed toCOLOR_CATEGORY
andSEGMENTATION_CATEGORY
and can now be imported directly. The type of many parameters were changed fromstr
to the literalLayerCategoryType
. #454
Added
- Added
redownsample()
method toLayer
to recompute existing downsampled magnifications. #461 - Added
globalize_floodfill.py
script to globalize partially computed flood fill operations. #461
Changed
- Improved performance for calculations with
Vec3Int
andBoundingBox
. #461
Fixed
- Resolve path when symlinking layer and make_relative is False (instead of only making it absolute). #492
0.8.22 - 2021-11-01
Breaking Changes
- Removed the
organization
parameter from thewebknossos_context
function. The organization will automatically be fetched using the token of the user. #470
Fixed
- Make Views picklable. We now ignore the file handle when we pickle Views. #469
v0.8.19 - 2021-10-21
Added
- Added a
User
class to the client that can be used to get meta-information of users or their logged time. The currently logged in user can be accessed, as well as all managed users. #470
0.8.21 - 2021-10-28
Changed
- Downgraded typing-extensions for better dependency compatibility #472
0.8.20 - 2021-10-28
Breaking Changes
BoundingBox.chunk()
's 2nd parameterchunk_border_alignments
now does not accept a list with a singleint
anymore. #452
Fixed
- Make Views picklable. We now ignore the file handle when we pickle Views. #469
0.8.19 - 2021-10-21
Breaking Changes
- View
s now always open the wkw.Dataset
lazily. All explicit calls to View.open()
and View.close()
must be removed. #448
Added
- Added a new Annotation class which includes skeletons as well as volume-annotations. #452
- Added dataset down- and upload as well as annotation download, see the examples
learned_segmenter.py
andupload_image_data.py
. #452
0.8.18 - 2021-10-18
Added
- The Dataset class now has a new method: add_shallow_copy. #437
Changed
- The
Vec3Int
constructor now asserts that its components are whole numbers also in numpy case. #434 - Updated scikit-image dependency to 0.18.3. #435
BoundingBox.contains
now also takes float points in numpy arrays. #450
Fixed
0.8.16 - 2021-09-22
Breaking Changes
- Refactored the BufferedSliceWriter and added a BufferedSliceReader. #425
- BufferedSliceWriter
- The data no longer gets transposed: previously the format of the slices was [y,x]; now it is [x,y]
- The interface of the constructor was changed:
- A
View
(orMagView
) is now required as datasource - The parameter
dimension
can be used to specify the axis along the data is sliced - The offset is expected to be in the magnification of the view
- This class is now supposed to be used within a context manager and the slices are written by sending them to the generator (see documentation of the class).
- BufferedSliceReader
- This class was added complementary to the BufferedSliceWriter
- Added methods to get a BufferedSliceReader/BufferedSliceWriter from a View directly
Added
Changed
Fixed
0.8.15 - 2021-09-22
Breaking Changes
-
Breaking changes were introduced for geometry classes in #421:
-
BoundingBox
- is now immutable, use convenience methods, e.g.
bb.with_topleft((0,0,0))
- properties topleft and size are now Vec3Int instead of np.array, they are each immutable as well
- all
to_
-conversions return a copy, some were renamed: to_array
→to_list
as_np
→to_np
as_wkw
→to_wkw_dict
from_wkw
→from_wkw_dict
as_config
→to_config_dict
as_checkpoint_name
→to_checkpoint_name
as_tuple6
→to_tuple6
as_csv
→to_csv
as_named_tuple
→to_named_tuple
as_slices
→to_slices
copy
→ (gone, immutable)
- is now immutable, use convenience methods, e.g.
-
Mag
- is now immutable
mag.mag
is nowmag._mag
(considered private, use to_list instead if you really need it as list)- all
to_
-conversions return a copy, some were renamed: to_array
→to_list
scale_by
→ (gone, immutable)divide_by
→ (gone, immutable)as_np
→to_np
Added
- An immutable Vec3Int class was introduced that holds three integers and provides a number of convenience methods and accessors. #421
Changed
BoundingBox
andMag
are now immutable attr classes containingVec3Int
values. See breaking changes above.
Fixed
-
0.8.13 - 2021-09-22
This is the latest release at the time of creating this changelog.