From 873beca3c6d818c260196e04e7a1ee051e4d349a Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Sat, 14 Dec 2024 15:02:51 +0000 Subject: [PATCH] [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci --- .github/ISSUE_TEMPLATE/bug_report.md | 4 +- CHANGELOG.md | 238 +++++++++++++-------------- README.md | 28 ++-- 3 files changed, 135 insertions(+), 135 deletions(-) diff --git a/.github/ISSUE_TEMPLATE/bug_report.md b/.github/ISSUE_TEMPLATE/bug_report.md index 8e6d6ff6..87466cfa 100644 --- a/.github/ISSUE_TEMPLATE/bug_report.md +++ b/.github/ISSUE_TEMPLATE/bug_report.md @@ -46,8 +46,8 @@ If applicable, add screenshots to help explain your problem. **Desktop (optional):** -- OS: [e.g. macOS, Windows, Linux] -- Version [e.g. 22] +- OS: [e.g. macOS, Windows, Linux] +- Version [e.g. 22] **Additional context** Add any other context about the problem here. diff --git a/CHANGELOG.md b/CHANGELOG.md index 52bed3be..c91afcfe 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -12,127 +12,127 @@ and this project adheres to [Semantic Versioning][]. ### Major -- Added attributes at the SpatialData object level (`.attrs`) +- Added attributes at the SpatialData object level (`.attrs`) ## [0.2.6] - 2024-11-26 ### Added -- Added `set_channel_names` method to `SpatialData` to change the channel names of an - image element in `SpatialData` #786 -- Added `write_channel_names` method to `SpatialData` to overwrite channel metadata on disk - without overwriting the image array itself. #786 +- Added `set_channel_names` method to `SpatialData` to change the channel names of an + image element in `SpatialData` #786 +- Added `write_channel_names` method to `SpatialData` to overwrite channel metadata on disk + without overwriting the image array itself. #786 ### Changed -- Argument `c_coords` is moved out of kwargs for the `ImageModel`s. #779 -- `get_channels` is marked for deprecation in `SpatialData` v0.3.0. Function is replaced - by `get_channel_names` #786 -- Updated dependency of `multiscale-spatial-image` #792 -- Adjust to new version of `xarray` with `DataTree` # 752 +- Argument `c_coords` is moved out of kwargs for the `ImageModel`s. #779 +- `get_channels` is marked for deprecation in `SpatialData` v0.3.0. Function is replaced + by `get_channel_names` #786 +- Updated dependency of `multiscale-spatial-image` #792 +- Adjust to new version of `xarray` with `DataTree` # 752 ### Fixed -- Updated deprecated default stages of `pre-commit` #771 -- Preserve points `feature_key` during queries #794 +- Updated deprecated default stages of `pre-commit` #771 +- Preserve points `feature_key` during queries #794 ## [0.2.5] - 2024-11-06 ### Fixed -- Incompatibility issues due to newest release of `multiscale-spatial-image` #760 +- Incompatibility issues due to newest release of `multiscale-spatial-image` #760 ## [0.2.4] - 2024-11-06 ### Major -- Enable vectorization of `bounding_box_query` for all `SpatialData` elements. #699 +- Enable vectorization of `bounding_box_query` for all `SpatialData` elements. #699 ### Minor -- Added `shortest_path` parameter to `get_transformation_between_coordinate_systems` #714 -- Added `get_pyramid_levels()` utils API #719 -- Improved ergonomics of `concatenate()` when element names are non-unique #720 -- Improved performance of writing images with multiscales #577 +- Added `shortest_path` parameter to `get_transformation_between_coordinate_systems` #714 +- Added `get_pyramid_levels()` utils API #719 +- Improved ergonomics of `concatenate()` when element names are non-unique #720 +- Improved performance of writing images with multiscales #577 ## [0.2.3] - 2024-09-25 ### Minor -- Added `clip: bool = False` parameter to `polygon_query()` #670 -- Add `sort` parameter to `PointsModel.parse()` #672 +- Added `clip: bool = False` parameter to `polygon_query()` #670 +- Add `sort` parameter to `PointsModel.parse()` #672 ### Fixed -- Fix interpolation artifact multiscale computation for labels #697 +- Fix interpolation artifact multiscale computation for labels #697 ## [0.2.2] - 2024-08-07 ### Major -- New disk format for shapes using `GeoParquet` (the change is backward compatible) #542 +- New disk format for shapes using `GeoParquet` (the change is backward compatible) #542 ### Minor -- Add `return_background` as argument to `get_centroids` and `get_element_instances` #621 -- Ability to save data using older disk formats #542 +- Add `return_background` as argument to `get_centroids` and `get_element_instances` #621 +- Ability to save data using older disk formats #542 ### Fixed -- Circles validation now checks for inf or nan radii #653 -- Bug with table name in torch dataset #654 @LLehner +- Circles validation now checks for inf or nan radii #653 +- Bug with table name in torch dataset #654 @LLehner ## [0.2.1] - 2024-07-04 ### Minor -- Relaxing `spatial-image` package requirement #616 +- Relaxing `spatial-image` package requirement #616 ## [0.2.0] - 2024-07-03 ### Changed -- Using `DataArray` directly instead of the subclass `SpatialImage` (removed install constraint for the `spatial_image` package) #587 -- Using `DataTree` directly instead of the subclass `MultiscaleSpatialImage` (removed install constraint for the `multiscale_spatial_image` package) #587 -- Changed `element`parameter (deprecation in v0.3.0) of `transform_element_to_coordinate_system` to a string `element_name` #611 +- Using `DataArray` directly instead of the subclass `SpatialImage` (removed install constraint for the `spatial_image` package) #587 +- Using `DataTree` directly instead of the subclass `MultiscaleSpatialImage` (removed install constraint for the `multiscale_spatial_image` package) #587 +- Changed `element`parameter (deprecation in v0.3.0) of `transform_element_to_coordinate_system` to a string `element_name` #611 ### Major -- Added operation: `to_polygons()` @quentinblampey #560 -- Extended `rasterize()` to support all the data types @quentinblampey #566 -- Added operation: `rasterize_bins()` @quentinblampey #578 -- Added operation: `map_raster()` to apply functions block-wise to raster data @ArneDefauw #588 +- Added operation: `to_polygons()` @quentinblampey #560 +- Extended `rasterize()` to support all the data types @quentinblampey #566 +- Added operation: `rasterize_bins()` @quentinblampey #578 +- Added operation: `map_raster()` to apply functions block-wise to raster data @ArneDefauw #588 ### Minor -- Removed `pygeos` dependency @omsai #545 -- Channel coordinate annotations on images now persist through `rasterize()` @clwgg #544 -- Added `datasets` module -- Extended `get_values()` to `AnnData` tables #579 -- Added `get_element_instances()` (replaces `_get_unique_label_values_as_index()`) #582 -- Added `get_element_annotators()`, retrieving the tables that annotate a particular SpatialElement #595 +- Removed `pygeos` dependency @omsai #545 +- Channel coordinate annotations on images now persist through `rasterize()` @clwgg #544 +- Added `datasets` module +- Extended `get_values()` to `AnnData` tables #579 +- Added `get_element_instances()` (replaces `_get_unique_label_values_as_index()`) #582 +- Added `get_element_annotators()`, retrieving the tables that annotate a particular SpatialElement #595 ### Fixed -- Preserve channel names of multi-scale images in `transform` (#379) -- Fix `filter_by_coordinate_system` with SpatialData object having a table not annotating an element (#619) +- Preserve channel names of multi-scale images in `transform` (#379) +- Fix `filter_by_coordinate_system` with SpatialData object having a table not annotating an element (#619) ## [0.1.2] - 2024-03-30 ### Minor -- Made `get_channels()` public. -- Added utils `force_2d()` to force 3D shapes to 2D (this is a temporary solution until `.force_2d()` is available in `geopandas`). +- Made `get_channels()` public. +- Added utils `force_2d()` to force 3D shapes to 2D (this is a temporary solution until `.force_2d()` is available in `geopandas`). ## [0.1.1] - 2024-03-28 ### Added -- Added method `update_annotated_regions_metadata() which updates the `region`value automatically from the`region_key` columns +- Added method `update_annotated_regions_metadata() which updates the `region`value automatically from the`region_key` columns ### Changed -- Renamed `join_sdata_spatialelement_table` to `join_spatialelement_table`, and made it work also without `SpatialData` objects. +- Renamed `join_sdata_spatialelement_table` to `join_spatialelement_table`, and made it work also without `SpatialData` objects. ## [0.1.0] - 2024-03-24 @@ -140,70 +140,70 @@ and this project adheres to [Semantic Versioning][]. #### Major -- Implemented support in `SpatialData` for storing multiple tables. -- These tables can annotate a `SpatialElement` but now not necessarily so. -- Deprecated `.table` attribute in favor of `.tables` dict-like accessor. +- Implemented support in `SpatialData` for storing multiple tables. +- These tables can annotate a `SpatialElement` but now not necessarily so. +- Deprecated `.table` attribute in favor of `.tables` dict-like accessor. -- Added join operations -- Added SQL like joins that can be executed by calling one public function `join_sdata_spatialelement_table`. The following joins are supported: `left`, `left_exclusive`, `right`, `right_exclusive` and `inner`. The function has an option to match rows. For `left` only matching `left` is supported and for `right` join only `right` matching of rows is supported. Not all joins are supported for `Labels` elements. -- Added function `match_element_to_table` which allows the user to perform a right join of `SpatialElement`(s) with a table with rows matching the row order in the table. +- Added join operations +- Added SQL like joins that can be executed by calling one public function `join_sdata_spatialelement_table`. The following joins are supported: `left`, `left_exclusive`, `right`, `right_exclusive` and `inner`. The function has an option to match rows. For `left` only matching `left` is supported and for `right` join only `right` matching of rows is supported. Not all joins are supported for `Labels` elements. +- Added function `match_element_to_table` which allows the user to perform a right join of `SpatialElement`(s) with a table with rows matching the row order in the table. -- Incremental IO of data and metadata: -- Increased in-memory vs on-disk control: changes performed in-memory (e.g. adding a new image) are not automatically performed on-disk. -- Deprecated `add_image()`, `add_labels()`, `add_shapes()`, `add_points()` in favor of `.images`, `.labels`, `.shapes`, `.points` dict-like accessors. -- new methods `write_element()`, `write_transformations()`, `write_metadata()`, `remove_element_from_disk()` -- new methods `write_consolidated_metadata()` and `has_consolidated_metadata()` -- deprecated `save_transformations()` -- improved `__repr__()` with information on Zarr storage and Dask-backed files -- new utils `is_self_contained()`, `describe_elements_are_self_contained()` -- new utils `element_paths_in_memory()`, `element_paths_on_disk()` +- Incremental IO of data and metadata: +- Increased in-memory vs on-disk control: changes performed in-memory (e.g. adding a new image) are not automatically performed on-disk. +- Deprecated `add_image()`, `add_labels()`, `add_shapes()`, `add_points()` in favor of `.images`, `.labels`, `.shapes`, `.points` dict-like accessors. +- new methods `write_element()`, `write_transformations()`, `write_metadata()`, `remove_element_from_disk()` +- new methods `write_consolidated_metadata()` and `has_consolidated_metadata()` +- deprecated `save_transformations()` +- improved `__repr__()` with information on Zarr storage and Dask-backed files +- new utils `is_self_contained()`, `describe_elements_are_self_contained()` +- new utils `element_paths_in_memory()`, `element_paths_on_disk()` #### Minor -- Multiple table helper functions -- Added public helper function `get_table_keys()` in `spatialdata.models` to retrieve annotation information of a given table. -- Added public helper function `check_target_region_column_symmetry()` in `spatialdata.models` to check whether annotation - metadata in `table.uns['spatialdata_attrs']` corresponds with respective columns in `table.obs`. -- Added function `validate_table_in_spatialdata()` in SpatialData to validate the annotation target of a table being present in the `SpatialData` object. -- Added method `get_annotated_regions()` in `SpatialData` to get the regions annotated by a given table. -- Added method `get_region_key_column()` in `SpatialData` to get the region_key column in table.obs. -- Added method `get_instance_key_column()` in `SpatialData` to get the instance_key column in table.obs. -- Added method `set_table_annotates_spatialelement()` in `SpatialData` to either set or change the annotation metadata of a table in a given `SpatialData` object. - Added `table_name` parameter to the `aggregate()` function to allow users to give a custom table name to table resulting from aggregation. -- Added `table_name` parameter to the `get_values()` function. - -- Utils -- Added `gen_spatial_elements()` generator in SpatialData to generate the `SpatialElements` in a given `SpatialData` object. -- Added `gen_elements` generator in `SpatialData` to generate elements of a `SpatialData` object including tables. -- added `SpatialData.subset()` API -- added `SpatialData.locate_element()` API -- added utils function: `get_centroids()` -- added utils function: `deepcopy()` -- added operation: `to_circles()` -- documented previously-added `get_channels()` to retrieve the channel names of a raster element indepently of it being single or multi-scale - -- Transformations-related - - - added utils function: `transform_to_data_extent()` - - added utils function: `are_extents_equal()` - - added utils function: `postpone_transformation()` - - added utils function: `remove_transformations_to_coordinate_system()` - -- added testing utilities: `assert_spatial_data_objects_are_identical()`, `assert_elements_are_identical()`, `assert_elements_dict_are_identical()` +- Multiple table helper functions +- Added public helper function `get_table_keys()` in `spatialdata.models` to retrieve annotation information of a given table. +- Added public helper function `check_target_region_column_symmetry()` in `spatialdata.models` to check whether annotation + metadata in `table.uns['spatialdata_attrs']` corresponds with respective columns in `table.obs`. +- Added function `validate_table_in_spatialdata()` in SpatialData to validate the annotation target of a table being present in the `SpatialData` object. +- Added method `get_annotated_regions()` in `SpatialData` to get the regions annotated by a given table. +- Added method `get_region_key_column()` in `SpatialData` to get the region_key column in table.obs. +- Added method `get_instance_key_column()` in `SpatialData` to get the instance_key column in table.obs. +- Added method `set_table_annotates_spatialelement()` in `SpatialData` to either set or change the annotation metadata of a table in a given `SpatialData` object. - Added `table_name` parameter to the `aggregate()` function to allow users to give a custom table name to table resulting from aggregation. +- Added `table_name` parameter to the `get_values()` function. + +- Utils +- Added `gen_spatial_elements()` generator in SpatialData to generate the `SpatialElements` in a given `SpatialData` object. +- Added `gen_elements` generator in `SpatialData` to generate elements of a `SpatialData` object including tables. +- added `SpatialData.subset()` API +- added `SpatialData.locate_element()` API +- added utils function: `get_centroids()` +- added utils function: `deepcopy()` +- added operation: `to_circles()` +- documented previously-added `get_channels()` to retrieve the channel names of a raster element indepently of it being single or multi-scale + +- Transformations-related + + - added utils function: `transform_to_data_extent()` + - added utils function: `are_extents_equal()` + - added utils function: `postpone_transformation()` + - added utils function: `remove_transformations_to_coordinate_system()` + +- added testing utilities: `assert_spatial_data_objects_are_identical()`, `assert_elements_are_identical()`, `assert_elements_dict_are_identical()` ### Changed/fixed #### Major -- refactored data loader for deep learning -- refactored `SpatialData.write()` to be more robust -- generalized spatial queries to any combination of 2D/3D data and 2D/3D query region #409 +- refactored data loader for deep learning +- refactored `SpatialData.write()` to be more robust +- generalized spatial queries to any combination of 2D/3D data and 2D/3D query region #409 #### Minor -- Changed the string representation of `SpatialData` to reflect the changes in regard to multiple tables and incremental IO. -- improved usability and robustness of `sdata.write()` when `overwrite=True` @aeisenbarth -- fixed warnings for categorical dtypes in tables in `TableModel` and `PointsModel` -- fixed wrong order of points after spatial queries +- Changed the string representation of `SpatialData` to reflect the changes in regard to multiple tables and incremental IO. +- improved usability and robustness of `sdata.write()` when `overwrite=True` @aeisenbarth +- fixed warnings for categorical dtypes in tables in `TableModel` and `PointsModel` +- fixed wrong order of points after spatial queries ## [0.0.14] - 2023-10-11 @@ -211,105 +211,105 @@ and this project adheres to [Semantic Versioning][]. #### Minor -- new API: sdata.rename_coordinate_systems() +- new API: sdata.rename_coordinate_systems() #### Technical -- decompose affine transformation into simpler transformations -- remove padding for blobs() +- decompose affine transformation into simpler transformations +- remove padding for blobs() #### Major -- get_extent() function to compute bounding box of the data +- get_extent() function to compute bounding box of the data #### Minor -- testing against pre-release packages +- testing against pre-release packages ### Fixed -- Fixed bug with get_values(): ignoring background channel in labels +- Fixed bug with get_values(): ignoring background channel in labels ## [0.0.13] - 2023-10-02 ### Added -- polygon_query() support for images #358 +- polygon_query() support for images #358 ### Fixed -- Fix missing c_coords argument in blobs multiscale #342 -- Replaced hardcoded string with instance_key #346 +- Fix missing c_coords argument in blobs multiscale #342 +- Replaced hardcoded string with instance_key #346 ## [0.0.12] - 2023-06-24 ### Added -- Add multichannel blobs sample data (by @melonora) +- Add multichannel blobs sample data (by @melonora) ## [0.0.11] - 2023-06-21 ### Improved -- Aggregation APIs. +- Aggregation APIs. ## [0.0.10] - 2023-06-06 ### Fixed -- Fix blobs (#282) +- Fix blobs (#282) ## [0.0.9] - 2023-05-23 ### Updated -- Update napari-spatialdata pin (#279) -- pin typing-extensions +- Update napari-spatialdata pin (#279) +- pin typing-extensions ## [0.0.8] - 2023-05-22 ### Merged -- Merge pull request #271 from scverse/fix/aggregation +- Merge pull request #271 from scverse/fix/aggregation ## [0.0.7] - 2023-05-20 ### Updated -- Update readme +- Update readme ## [0.0.6] - 2023-05-10 ### Added -- This release adds polygon spatial query. +- This release adds polygon spatial query. ## [0.0.5] - 2023-05-05 ### Fixed -- fix tests badge (#242) +- fix tests badge (#242) ## [0.0.4] - 2023-05-04 ### Tested -- This release tests distribution via pypi +- This release tests distribution via pypi ## [0.0.3] - 2023-05-02 ### Added -- This is an alpha release to test the release process. +- This is an alpha release to test the release process. ## [0.0.2] - 2023-05-02 ### Added -- make version dynamic +- make version dynamic ## [0.0.1.dev1] - 2023-03-25 ### Added -- Dev version, not official release yet +- Dev version, not official release yet diff --git a/README.md b/README.md index 7637ee7c..8b5acd0c 100644 --- a/README.md +++ b/README.md @@ -11,9 +11,9 @@ SpatialData is a data framework that comprises a FAIR storage format and a collection of python libraries for performant access, alignment, and processing of uni- and multi-modal spatial omics datasets. This repository contains the core spatialdata library. See the links below to learn more about other packages in the SpatialData ecosystem. -- [spatialdata-io](https://github.com/scverse/spatialdata-io): load data from common spatial omics technologies into spatialdata. -- [spatialdata-plot](https://github.com/scverse/spatialdata-plot): Static plotting library for spatialdata. -- [napari-spatialdata](https://github.com/scverse/napari-spatialdata): napari plugin for interactive exploration and annotation of spatial data. +- [spatialdata-io](https://github.com/scverse/spatialdata-io): load data from common spatial omics technologies into spatialdata. +- [spatialdata-plot](https://github.com/scverse/spatialdata-plot): Static plotting library for spatialdata. +- [napari-spatialdata](https://github.com/scverse/napari-spatialdata): napari plugin for interactive exploration and annotation of spatial data. [//]: # "numfocus-fiscal-sponsor-attribution" @@ -32,16 +32,16 @@ The spatialdata project also received support by the Chan Zuckerberg Initiative. ![SpatialDataOverview](https://github.com/scverse/spatialdata/assets/1120672/cb91071f-12a7-4b8e-9430-2b3a0f65e52f) -- **The library is currently under review.** We expect there to be changes as the community provides feedback. We have an announcement channel for communicating these changes, please see the contact section below. -- The SpatialData storage format is built on top of the [OME-NGFF](https://ngff.openmicroscopy.org/latest/) specification. +- **The library is currently under review.** We expect there to be changes as the community provides feedback. We have an announcement channel for communicating these changes, please see the contact section below. +- The SpatialData storage format is built on top of the [OME-NGFF](https://ngff.openmicroscopy.org/latest/) specification. ## Getting started Please refer to the [documentation][link-docs]. In particular: -- [API documentation][link-api]. -- [Design doc][link-design-doc]. -- [Example notebooks][link-notebooks]. +- [API documentation][link-api]. +- [Design doc][link-design-doc]. +- [Example notebooks][link-notebooks]. Another useful resource to get started is the source code of the [`spatialdata-io`](https://github.com/scverse/spatialdata-io) package, which shows example of how to read data from common technologies. @@ -61,20 +61,20 @@ mamba install -c conda-forge spatialdata napari-spatialdata spatialdata-io spati ## Limitations -- Code only manually tested for Windows machines. Currently the framework is being developed using Linux, macOS and Windows machines, but it is automatically tested only for Linux and macOS machines. +- Code only manually tested for Windows machines. Currently the framework is being developed using Linux, macOS and Windows machines, but it is automatically tested only for Linux and macOS machines. ## Contact To get involved in the discussion, or if you need help to get started, you are welcome to use the following options. -- Chat via [`scverse` Zulip](https://scverse.zulipchat.com/#narrow/stream/315824-spatial) (public or 1 to 1). -- Forum post in the [scverse discourse forum](https://discourse.scverse.org/). -- Bug report/feature request via the [GitHub issue tracker][issue-tracker]. -- Zoom call as part of the SpatialData Community Meetings, held every 2 weeks on Thursday, [schedule here](https://hackmd.io/enWU826vRai-JYaL7TZaSw). +- Chat via [`scverse` Zulip](https://scverse.zulipchat.com/#narrow/stream/315824-spatial) (public or 1 to 1). +- Forum post in the [scverse discourse forum](https://discourse.scverse.org/). +- Bug report/feature request via the [GitHub issue tracker][issue-tracker]. +- Zoom call as part of the SpatialData Community Meetings, held every 2 weeks on Thursday, [schedule here](https://hackmd.io/enWU826vRai-JYaL7TZaSw). Finally, especially relevant for for developers that are building a library upon `spatialdata`, please follow this channel for: -- Announcements on new features and important changes [Zulip](https://imagesc.zulipchat.com/#narrow/stream/329057-scverse/topic/spatialdata.20announcements). +- Announcements on new features and important changes [Zulip](https://imagesc.zulipchat.com/#narrow/stream/329057-scverse/topic/spatialdata.20announcements). ## Citation