-
Notifications
You must be signed in to change notification settings - Fork 9
/
TODO
115 lines (87 loc) · 4.5 KB
/
TODO
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
- In BioC 3.18-3.20: migrate from SparseArraySeed objects to SparseArray
objects for handling of sparse data. 7 steps:
1. The new location for the extract_sparse_array() generic is in the
SparseArray package. However SparseArray::extract_sparse_array()
behaves differently compared to the traditional extract_sparse_array()
generic defined in DelayedArray (it returns a SparseArray object instead
of a SparseArraySeed object). So, before we can import the SparseArray
package, we must get the extract_sparse_array() generic and methods
defined in DelayedArray out of the way by renaming them to something
else, say OLD_extract_sparse_array(). All the extract_sparse_array()
methods in DelayedArray's rev deps must also be renamed.
---
THIS STEP WAS COMPLETED ON MAY 3, 2023. The following rev deps were
modified accordingly: HDF5Array, beachmat, DelayedRandomArray,
TileDBArray, alabaster.matrix, and SCArray.
2. Depend and import SparseArray.
---
THIS STEP WAS COMPLETED ON MAY 3, 2023.
3. Get rid of R/sparseMatrix-utils.R and src/sparseMatrix_utils.c (this is
now in SparseArray).
---
THIS STEP WAS COMPLETED ON MAY 3, 2023.
4. Prepare for the switch from .OLD_read_block() to .NEW_read_block() (see
S4Arrays/R/read_block.R) by implementing:
(a) SparseArray::extract_sparse_array() methods: one for each
OLD_extract_sparse_array() method defined in DelayedArray
and its revdeps;
---
THIS STEP WAS COMPLETED ON JULY 1, 2024.
(b) SparseArray::read_block_as_sparse() methods: one for each
read_sparse_block() method defined in DelayedArray and its revdeps.
5. Switch from .OLD_read_block() to .NEW_read_block() in S4Arrays.
Also coerce to SparseArray instead of SparseArraySeed in the default
realize() method (and update man page).
---
THIS STEP WAS COMPLETED ON JULY 2, 2024.
6. Then, the OLD_extract_sparse_array() and read_sparse_block() generics
can be deprecated.
---
THIS STEP WAS COMPLETED ON JULY 2, 2024.
7. Finally (in BioC 3.20), SparseArraySeed objects can be deprecated too.
---
THIS STEP WAS COMPLETED ON JULY 2, 2024.
- Change 'as.sparse' default from FALSE to NA in blockApply() and
blockReduce(). Consistent with S4Arrays::read_block().
- Add unit tests for DelayedOp subclasses DelayedSubassign and DelayedAbind.
- Backend classes (e.g. HDF5Array) should be defined as:
setClass("HDF5Array",
contains="DelayedArray",
representation(seed="HDF5ArraySeed")
)
This would avoid the need for a validity method.
This change was made for RleArray, HDF5Array and TENxMatrix between Dec 2018
and Jan 2019.
Still need to be done for DelayedArray backends implemented in other
packages.
- In 02-Implementing_a_backend.Rmd, add a "Other optional (but highly
recommended) methods" subsection after "The seed contract" subsection.
The optional methods are "chunkdim", "path", "path<-". See HDF5ArraySeed
and TENxMatrixSeed for examples.
- Subsetting:
- A[A == 1] should work on a 1D DelayedArray object (and return a 1D
DelayedArray object).
- If A and B are conformable DelayedArray objects, and type(B) is logical,
it should be possible to compute A[B] by walking simultaneously on A
and B. Right now we first do i <- which(B) and then A[i] so we complete
the walk on B before we walk on A.
- Support subsetting an arbitrary object by a DelayedArray or
DelayedMatrix of type logical?
- Add unit tests for all the DelayedOp types.
- Add man page and unit tests for statistical methods defined in
DelayedArray-stats.R
- Make DelayedArray contain Annotated from S4Vectors?
- Add more examples to the man pages (using the toy dataset).
- Add unit tests for round() and signif() (Math2 group).
- Explore DelayedAtomicVector. Could be used in situations where
1D DelayedArray objects are currently used (e.g. VariantExperiment
package). Then reconsider what subsetting does when 'drop' is TRUE.
Should it return the result as an ordinary vector instead of a 1D
DelayedArray object? We're not doing this right now because it would
be inconvenient for people using 1D DelayedArray objects (it triggers
realization when the user probably doesn't want it). But if people
switch to DelayedAtomicVector objects then maybe it's ok to make this
change.
- Support more matrix- and array-like operations.
- How well supported are DelayedArray of type "character"?
- Add more unit tests.