SCM

SCM Repository

[matrix] Diff of /pkg/TODO
ViewVC logotype

Diff of /pkg/TODO

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 530, Mon Feb 7 10:58:27 2005 UTC revision 1326, Wed Jul 19 14:58:26 2006 UTC
# Line 1  Line 1 
1    -----
2    Suitably adjust classes of matrices after subscripting.  Currently
3    head(Hilbert(9))
4    and the equivalent expression
5    Hilbert(9)[1:4,]
6    throws an error because the result is not symmetric, but the result of
7    subscripting a symmetric matrix does not need to be symmetric.
8    Perhaps we should try to propagate the class to the subscripted matrix
9    but, if that fails its test, fall back on a general matrix class.
10    That is, the fallback class for dsyMatrix, etc. is dgeMatrix; the
11    fallback class for dsCMatrix is dgCMatrix, etc.
12    -----
13    Modify the one-argument form of the anova method for lmer objects (yet
14      again) to calculate the F ratios.  It is the df, not the ratio that
15      is controversial.
16    Should there be an extractor function for the mean square error?  If
17      so, what should it be called?
18    -----
19    Check for DimNames propagation in coercion and other operations.
20    -----
21    - Revive the "lmer" and "glmer" classes.  Slots like "family" should
22      be in "glmer" only.  Many methods for "lmer" can be simplified as,
23      for example, they will always use the scale factor.
24    
25    - Add a "pedigree" class and methods for it.  Allow a pedigree
26      argument in lmer.
27    
28    ------
29    - Sparse matrix methods can now be based on the CHOLMOD package.  We
30       will need to migrate from the current code to CHOLMOD-based code
31       using #ifdef USE_CHOLMOD.  Some of the things to be done
32    
33       - Move documentation from subdirectories of src to inst/doc
34       - Write utilities to create a cholmod_sparse pointer from a
35       dgCMatrix or lgCMatrix (or zgCMatrix) object without copying and
36       allocating.
37       - Start adding simple S4 methods (rcond, %*%, +, cbind, t).
38    
39  - Report the problem in the Linux ldexp manual page.  The second and  - Report the problem in the Linux ldexp manual page.  The second and
40    third calls in the Synopsis should be to ldexpf and ldexpl.    third calls in the Synopsis should be to ldexpf and ldexpl.
41    
42  - [,] indexing  - [,] indexing: for sparse "works", but not yet for negative indices!
   
 - group generics: "Arith", but also "Ops" and "Math";  see  
   ?Math.data.frame  and the examples in  
   ?SetGeneric  
   
 - bCrosstab(): do we really want the diagonal "V:V" crosstabs?  
                (if so or in any case: add to  man/bCrosstab.Rd )  
43    
44  - src/Metis/ : one of the two Makefiles needs fixing, as changing  - consider moving alloc3Darray from ./src/Mutils.c to
45               src/Metis/*.c  does not lead to recompilation.    $(RSRC)/src/base/array.c
   --DB - it seems both Makefiles need fixing.  I think I have the  
              src/Metis/Makefile fixed but not src/Makefile  
46    
47  - man/Matrix.Rd :  has example with dimnames, but we just drop them!  -------
                 MM thinks dimnames should be supported (but then ...)  
48    
49  - data/ : names 'mm' and even more 'y' are  ``too short''.  - provide methods for "dspMatrix" and "dppMatrix"!
         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  
50    
51  - "factors" maybe should move up to "Matrix"  - implement (more) methods for supporting "packed" (symmetric / triangular)
52      matrices; particularly something like pack() and unpack()  [to/from our
53      classes from/to "numeric"] --- have already man/unpack.Rd but no method yet!
54    
55      (have some dtr* <-> dtp*)
56    
57    ---
58    
59    - combine the C functions for multiplication by special forms and
60      solution wrt special forms by using a 'right' argument and a
61      'classed' argument.
62       [done with dgeMatrix_matrix_mm();  not yet for other classes;
63        and for _crossprod()]
64    
65    - add more comprehensive examples / tests for Schur decomposition
66    
67    - arithmetic for sparse matrices:
68                 <sparseMatrix>  o  <same-dim-sparseMatrix>
69      should return a sparse matrix  for at least "+" and "*" , also %%,
70      and "/" and "%/%" at least when the RHS is non-zero a scalar.
71      Challenge: nice implementation (``common non-0''; but Tsparse* is not uniq).
72    
73    ---
74    
75    - "Math2" , "Math", "Arith":
76       keep triangular and symmetric Matrices when appropriate:
77       particularly desirable for  "Math2": round(), signif()
78    
79    - "d" <-> "l" coercion for all "[TCR]" sparse matrices is really trivial:
80      "d" -> "l" : drops the 'x' slot
81      "l" -> "d" : construct an 'x' slot of all '1'
82      We currently have many of these conversions explicitly, e.g.
83       setAs("dsTMatrix", "lsTMatrix",
84          function(from) new("lsTMatrix", i = from@i, j = from@j, uplo = from@uplo,
85                             Dim = from@Dim, Dimnames = from@Dimnames))
86      but I would rather want to automatically construct all these coercion
87      methods at once by a ``method constructor'', i.e.,
88      for all  "dsparse*" -> "lsparse*" and vice versa.
89      How can one do this {in a documented way} ?
90    
91    - tcrossprod(x, y) : do provide methods for y != NULL
92      calling Lapack's DGEMM for "dense"
93      [2005-12-xx: done for dgeMatrix at least]
94    
95    - "ltTmatrix" :
96      2) new("ltTMatrix", diag = "U", Dim = c(2:2, 2:2)) shows lack of ltTM*_validate
97    
98    - BUGlet:  Shouldn't lose factorization here:
99      h6 <- Hilbert(6); chol(h6) ; str(h6) # has factor
100      str(H6 <- as(h6, "dspMatrix"))       # has lost factor
101      ## and the same in a similar situation involving  "dpo", "dpp"
102    
103    - "Compare" for dgC & dgT  --- want to be able to do  M[M > 10]  etc
104    
105    - Things like  M[upper.tri(M)] are not really most useful for  sparse
106      matrices.  --> provide generic functions
107      upperTriMatrix(), lowerTriMatrix()  both with argument  'diag = TRUE'
108      (which can be set to FALSE of course) which are used to extract a
109      triangle from an arbitrary sparse matrix and  return a  "dtCMatrix".
110    
111    - Factorizations: LU [ -> solve() ] and Schur()  for  *sparse*  Matrices.
112      -----------------  LU-sparse is the purpose of all of ./src/UMFPACK/
113            -->  ./inst/doc/UFsparse/*
114      Note that UMFPACK is a bit slow compared to TAUCS etc, according to
115      Gould et al.(2005)
116      And then, possibly eigen(), svd(), qr(), ... for sparse
117      {probably base some on the fast  chol() of CHOLMOD}.
118      ./man/lu.Rd notes that lu() is not yet available for sparse
119    
120  -------    2006-04-15 : now with 'CSparse' { src/cs.c }, have at least solve( <dtC*> )
121    
 We have a (at least one) basic problem :  
    Currently the show() method fail sometime after coercion:  
    e.g. 'sy' show()s wrongly, even though it "str()" fine :  
   
       (po <- crossprod(Matrix(0:3, 2))) # ok  
       (ge <- as(po, "dgeMatrix")) # ok  
       (sy <- as(po, "dsyMatrix")) # BAD  
       str(sy) # looks fine  
   
   or  
       example(expand) # -> ex$L and ex$U look bad, however  
       as(ex$L, "dgeMatrix") # `works'  
122    
123    {Of course, we don't need a workaround but must understand  - nicer pedigree examples and tests
    and solve the problem}  

Legend:
Removed from v.530  
changed lines
  Added in v.1326

root@r-forge.r-project.org
ViewVC Help
Powered by ViewVC 1.0.0  
Thanks to:
Vienna University of Economics and Business Powered By FusionForge