@@ -55,35 +55,34 @@ Introduction
5555
5656This specification defines a format for multidimensional array data. This
5757type of data is common in scientific and numerical computing
58- applications. Many domains are facing computational challenges as
58+ applications. Many domains face computational challenges as
5959increasingly large volumes of data are being generated, for example,
6060via high resolution microscopy, remote sensing imagery, genome
6161sequencing or numerical simulation. The primary motivation for the
62- development of Zarr has been to help address this challenge by
62+ development of Zarr is to address this challenge by
6363enabling the storage of large multidimensional arrays in a way that is
6464compatible with parallel and/or distributed computing applications.
6565
66- This specification is intended to supersede the `Zarr storage
66+ This specification supersedes the `Zarr storage
6767specification version 2
6868<https://zarr.readthedocs.io/en/stable/spec/v2.html> `_ (Zarr v2). The
69- Zarr v2 specification has been implemented in several programming
70- languages and has been used successfully to store and analyse large
71- scientific datasets from a variety of domains. However, as experience
72- has been gained, it has become clear that there are several
73- opportunities for modest but useful improvements to be made in the
74- format, and for establishing a foundation that allows for greater
75- interoperability, whilst also enabling a variety of more advanced and
76- specialised features to be explored and developed.
69+ Zarr v2 specification is implemented in several programming
70+ languages and is used to store and analyse large
71+ scientific datasets from a variety of domains. However, it has become
72+ clear that there are several opportunities for modest but useful
73+ improvements to be made in the format, and for establishing a foundation
74+ that allows for greater interoperability, whilst also enabling a variety
75+ of more advanced and specialised features to be explored and developed.
7776
7877This specification also draws heavily on the `N5 API and
7978file-system specification <https://github.com/saalfeldlab/n5> `_, which
80- was developed in parallel to Zarr v2 and has many of the same design
79+ was developed in parallel to Zarr v2 with similar
8180goals and features. This specification defines a core set of features
8281at the intersection of both Zarr v2 and N5, and so aims to provide a
8382common target that can be fully implemented across multiple
8483programming environments and serve a wide range of applications.
8584
86- In particular, we highlight the following areas motivating the
85+ We highlight the following areas motivating the
8786development of this specification.
8887
8988Extensibility
@@ -124,7 +123,7 @@ Stability Policy
124123
125124This core specification adheres to a ``MAJOR.MINOR `` version
126125number format. When incrementing the minor version, only additional features
127- can be added. Breaking changes require to increment the major version.
126+ can be added. Breaking changes require incrementing the major version.
128127
129128A zarr implementation that provides the read and write API by
130129implementing a specification ``X.Y `` can be considered compatible with all
@@ -252,14 +251,14 @@ The following figure illustrates the first part of the terminology:
252251 example, if an array _ has 2 dimensions _, where the length of the
253252 first dimension _ is 100 and the length of the second dimension _ is
254253 20, then the shape of the array _ is (100, 20). A shape can be the empty
255- tuple in the case of zero-dimension arrays (scalar)
254+ tuple in the case of zero-dimension arrays (scalars).
256255
257256.. _element :
258257.. _elements :
259258
260259*Element *
261260
262- An array _ contains zero or more elements. Each element can be
261+ An array _ contains zero or more elements. Each element is
263262 identified by a tuple of integer coordinates, one for each
264263 dimension _ of the array _. If all dimensions _ of an array _ have
265264 finite length, then the number of elements in the array _ is given
@@ -289,7 +288,7 @@ The following figure illustrates the first part of the terminology:
289288 within the chunk) is the product of its interval lengths.
290289
291290 The chunk shape elements are non-zero when the corresponding dimensions of
292- the arrays are of non-zero length.
291+ the arrays have non-zero length.
293292
294293.. _grid :
295294.. _grids :
@@ -973,7 +972,7 @@ other type sizes in later versions of this specification.
973972.. note ::
974973
975974 Currently only fixed size elements are supported as a core data type.
976- There are many request for variable length element encoding. There are many
975+ There are many requests for variable length element encoding. There are many
977976 ways to encode variable length and we want to keep flexibility. While we seem
978977 to agree that for random access the most likely contender is to have two
979978 arrays, one with the actual variable length data and one with fixed size
@@ -1610,7 +1609,8 @@ Let "+" be the string concatenation operator.
16101609Storage transformers
16111610====================
16121611
1613- A Zarr storage transformer allows changing the zarr-compatible data before storing it.
1612+ A Zarr storage transformer modifies a request to read or write data before passing
1613+ that request to the following transformer or store.
16141614The stored transformed data is restored to its original state whenever data is requested
16151615by the Array. Storage transformers can be configured per array via the
16161616`storage_transformers <storage_transformers _>`_ name in the `array metadata `_. Storage transformers which do
@@ -1703,8 +1703,8 @@ Implementations may choose to never use implicit groups to avoid this.
17031703Resizing
17041704--------
17051705
1706- In general, arrays can be resized for writable (and if necessary deletable)
1707- stores. In the most basic case, two scenarios can be considered, shrinking along
1706+ In general, arrays can be resized for writable (and, if necessary, deletable)
1707+ stores. In the most basic case, two scenarios can be considered: shrinking along
17081708an array dimension, or increasing its size.
17091709
17101710When shrinking, implementations can consider whether to delete chunks if the
0 commit comments