--- pkg/TODO 2005/02/04 23:36:17 510
+++ pkg/TODO 2006/03/21 11:23:49 1233
@@ -1,35 +1,84 @@
+-----
+- Revive the "lmer" and "glmer" classes. Slots like "family" should
+ be in "glmer" only. Many methods for "lmer" can be simplified as,
+ for example, they will always use the scale factor.
+
+- Add a "pedigree" class and methods for it. Allow a pedigree
+ argument in lmer.
+
+------
+- Sparse matrix methods can now be based on the CHOLMOD package. We
+ will need to migrate from the current code to CHOLMOD-based code
+ using #ifdef USE_CHOLMOD. Some of the things to be done
+
+ - Move documentation from subdirectories of src to inst/doc
+ - Write utilities to create a cholmod_sparse pointer from a
+ dgCMatrix or lgCMatrix (or zgCMatrix) object without copying and
+ allocating.
+ - Start adding simple S4 methods (rcond, %*%, +, cbind, t).
+
- Report the problem in the Linux ldexp manual page. The second and
third calls in the Synopsis should be to ldexpf and ldexpl.
-- [,] indexing
+- [,] indexing: for sparse "works", but not yet for negative indices!
+
+- consider moving alloc3Darray from ./src/Mutils.c to
+ $(RSRC)/src/base/array.c
+
+-------
+
+- provide methods for "dspMatrix" and "dppMatrix"!
+
+- implement (more) methods for supporting "packed" (symmetric / triangular)
+ matrices; particularly something like pack() and unpack() [to/from our
+ classes from/to "numeric"] --- have already man/unpack.Rd but no method yet!
+
+ (have some dtr* <-> dtp*)
+
+---
+
+- combine the C functions for multiplication by special forms and
+ solution wrt special forms by using a 'right' argument and a
+ 'classed' argument.
+ [done with dgeMatrix_matrix_mm(); not yet for other classes;
+ and for _crossprod()]
-- group generics: "Arith", but also "Ops" and "Math"; see
- ?Math.data.frame and the examples in
- ?SetGeneric
+- add more comprehensive examples / tests for Schur decomposition
-- check to see if the .onLoad function to require the methods package
- (in the AllClass.R file) is needed
+- arithmetic for sparse matrices:
+ o
+ should return a sparse matrix for at least "+" and "*" , also %%,
+ and "/" and "%/%" at least when the RHS is non-zero a scalar.
+ Challenge: nice implementation (``common non-0''; but Tsparse* is not uniq).
-- Should the uplo and diag slots continue to be stored as character?
- An alternative is to use a factor as in the enum values for the
- cblas.
+---
-- Organization of the source code files - right now they are organized
- according to class (e.g. dgeMatrix.R, dgeMatrix.h, dgeMatrix.c). Is
- there a better way?
+- "Math2" , "Math", "Arith":
+ keep triangular and symmetric Matrices when appropriate:
+ particularly desirable for "Math2": round(), signif()
-- Fix the calculation of the Dim slot for the crossprod method for
- dgCMatrix objects (too tired to do that now).
+- "d" <-> "l" coercion for all "[TCR]" sparse matrices is really trivial:
+ "d" -> "l" : drops the 'x' slot
+ "l" -> "d" : construct an 'x' slot of all '1'
+ We currently have many of these conversions explicitly, e.g.
+ setAs("dsTMatrix", "lsTMatrix",
+ function(from) new("lsTMatrix", i = from@i, j = from@j, uplo = from@uplo,
+ Dim = from@Dim, Dimnames = from@Dimnames))
+ but I would rather want to automatically construct all these coercion
+ methods at once by a ``method constructor'', i.e.,
+ for all "dsparse*" -> "lsparse*" and vice versa.
+ How can one do this {in a documented way} ?
-- bCrosstab(): do we really want the diagonal "V:V" crosstabs?
+- tcrossprod(x, y) : do provide methods for y != NULL
+ calling Lapack's DGEMM for "dense"
+ [2005-12-xx: done for dgeMatrix at least]
-- src/Metis/ : some Makefile needs fixing, as changing src/Metis/*.c
- does not lead to recompilation.
+- "ltTmatrix" :
+ 2) new("ltTMatrix", diag = "U", Dim = c(2:2, 2:2)) shows lack of ltTM*_validate
-- man/Matrix.Rd : has example with dimnames, but we just drop them!
- MM thinks dimnames should be supported (but then ...)
+- BUGlet: Shouldn't lose factorization here:
+ h6 <- Hilbert(6); chol(h6) ; str(h6) # has factor
+ str(H6 <- as(h6, "dspMatrix")) # has lost factor
+ ## and the same in a similar situation involving "dpo", "dpp"
-- data/ : names 'mm' and even more 'y' are ``too short''.
- If we really want to keep them, don't use "LazyData"
- (such that one needs data(*) explicitly);
- But MM would rather want something like ex.mm and ex.y
+- "Compare" for dgC & dgT --- want to be able to do M[M > 10] etc