You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
WIP: Complete reimplementation of getindex and setindex (#146)
* Move _DiskArray out of tests
* First commit of bikeshedding everything
* Start new indexing scheme
* More tests passing
* Tests pass for first time
* setindex tests pass as well
* delete most of batchgetindex
* start work on batch optimization
* cont
* batch reading for vector is done in slices
* All tests passing for chunkwise access
* Fix merge errors
* Remove Manifest
* more batch options
* range-based approach
* clean-up work
* Improve Readme
* some cleanup
* remove include
* Fix some type instabilities
* Fix some type instabilities and test them
* Fix a special case
* Clean up and fix vec
* Update README.md
Co-authored-by: Felix Cremer <[email protected]>
* SMall readme fix
---------
Co-authored-by: Felix Cremer <[email protected]>
Copy file name to clipboardExpand all lines: .github/workflows/ci.yml
-1Lines changed: 0 additions & 1 deletion
Original file line number
Diff line number
Diff line change
@@ -15,7 +15,6 @@ jobs:
15
15
fail-fast: false
16
16
matrix:
17
17
version:
18
-
- '1.6'# Replace this with the minimum Julia version that your package supports. E.g. if your package requires Julia 1.5 or higher, change this to '1.5'.
19
18
- '1'# Leave this line unchanged. '1' will automatically expand to the latest stable 1.x release of Julia.
This package is an attempt to collect utilities for working with n-dimensional array-like data
10
-
structures that do not have considerable overhead for single read operations. Most important
11
-
examples are arrays that represent data on hard disk that are accessed through a C
12
-
library or that are compressed in chunks. It can be inadvisable to make these arrays a subtype
13
-
of `AbstractArray` many functions working with AbstractArrays assume fast random access into single
14
-
values (including basic things like `getindex`, `show`, `reduce`, etc...). Currently supported features are:
9
+
This package provides a collection of utilities for working with n-dimensional array-like data
10
+
structures that do have considerable overhead for single read operations.
11
+
Most important examples are arrays that represent data on hard disk that are accessed through a C
12
+
library or that are compressed in chunks.
13
+
It can be inadvisable to make these arrays a direct subtype of `AbstractArray` many functions working with AbstractArrays assume fast random access into single values (including basic things like `getindex`, `show`, `reduce`, etc...).
14
+
15
+
Currently supported features are:
15
16
16
17
-`getindex`/`setindex` with the same rules as base (trailing or singleton dimensions etc)
17
18
- views into `DiskArrays`
@@ -23,13 +24,44 @@ values (including basic things like `getindex`, `show`, `reduce`, etc...). Curre
23
24
- customization of `broadcast` when there is a `DiskArray` on the LHS. This at least makes things
24
25
like `a.=5` possible and relatively fast
25
26
26
-
There are basically two ways to use this package.
27
-
Either one makes the abstraction directly a subtype of `AbstractDiskArray` which requires
28
-
to implement a single `readblock!` method that reads a Cartesian range of data points.
29
-
The remaining `getindex` methods will
30
-
come for free then. The second way is to use
31
-
the `interpret_indices_disk` function to get a translation of the user-supplied indices
32
-
into a set of ranges and then use these to read the data from disk.
27
+
28
+
## AbstractDiskArray Interface definition
29
+
30
+
Package authors who want to use this library to make their disk-based array an `AbstractDiskArray` should at least
Here `readblock!` will read a subset of array `A` in a hyper-rectangle defined by the unit ranges `r`. The results shall be written into `aout`. `writeblock!` should write the data given by `ain` into the (hyper-)rectangle of A defined by `r`
40
+
When defining the functions it can be safely assumed that `length(r) == ndims(A)` as well as `size(ain) == length.(r)`.
41
+
However, bounds checking is *not* performed by the DiskArray machinery and currently should be done by the implementation.
42
+
43
+
If the data on disk has rectangular chunks as underlying storage units, you should addtionally implement the following
44
+
methods to optimize some operations like broadcast, reductions and sparse indexing:
0 commit comments