SCM

SCM Repository

[matrix] Annotation of /pkg/Done
ViewVC logotype

Annotation of /pkg/Done

Parent Directory Parent Directory | Revision Log Revision Log


Revision 2005 - (view) (download)

1 : bates 1578 - Sparse matrix methods can now be based on the CHOLMOD package. We
2 :     will need to migrate from the current code to CHOLMOD-based code
3 :     using #ifdef USE_CHOLMOD. Some of the things to be done
4 :    
5 :     - Move documentation from subdirectories of src to inst/doc
6 :    
7 :     - Write utilities to create a cholmod_sparse pointer from a
8 :     dgCMatrix or lgCMatrix (or zgCMatrix) object without copying and
9 :     allocating.
10 :    
11 :     - Start adding simple S4 methods ( %*%, +, cbind, t) for
12 :     CsparseMatrix using CHOLMOD.
13 :    
14 : maechler 511 - check to see if the .onLoad function to require the methods package
15 :     (in the AllClass.R file) is needed
16 :     -- no, it is not: "Depends: " in DESCRIPTION suffices.
17 : bates 529
18 :     - Should the uplo and diag slots continue to be stored as character?
19 :     An alternative is to use a factor as in the enum values for the
20 :     cblas.
21 :     -- Leave as character but use care in determining the default cases
22 :     -- E.g. Checks for diag slot should check for 'U' or 'u' vs. anything else
23 :    
24 :     - Organization of the source code files - right now they are organized
25 :     according to class (e.g. dgeMatrix.R, dgeMatrix.h, dgeMatrix.c). Is
26 :     there a better way?
27 :     -- This seems ok.
28 :    
29 :     - Fix the calculation of the Dim slot for the crossprod method for
30 :     dgCMatrix objects (too tired to do that now).
31 :     -- Done
32 : bates 530
33 :     - spelling style: Should "coersion" be "coercion" ?
34 :     -- Yes. Watch for this.
35 :    
36 : bates 536 - src/Metis/ : one of the two Makefiles needs fixing, as changing
37 :     src/Metis/*.c does not lead to recompilation.
38 :     --DB - it seems both Makefiles need fixing. I think I have the
39 :     src/Metis/Makefile fixed but not src/Makefile
40 :     --DB - now have both working, I believe.
41 : bates 530
42 : maechler 538 - man/Matrix.Rd : has example with dimnames, but we just drop them!
43 :     MM thinks dimnames should be supported (but then ...)
44 :     -- added 'Dimnames' slot (2005-02-10)
45 : maechler 540
46 :     - bCrosstab(): yes, we really do want the diagonal "V:V" crosstabs.
47 :     -- explained a bit more in man/bCrosstab.Rd
48 :    
49 : bates 561 - Clean up vestigial functions (pdFactor, pdMatrix, matrix<-) from the
50 :     nlme package.
51 : maechler 675
52 :     - create a class of permutation matrices for use in expand. The
53 :     current expand method for the LU factorization is not complete
54 :     because it does not provide the permutation.
55 :    
56 :     - tcrossprod() now works: C code now "exported" via init.c
57 : maechler 869
58 : maechler 946 - Fixed: dtpMatrix(... diag = "U") (i.e., unit-diagonal packed triangular)
59 :     *does* need 'x' entries for the diagonal but these are never looked at.
60 : maechler 869 -> changed doc -- Lapack also says they are not referenced but assumed 1.
61 : bates 881
62 :    
63 :     - in lmer.c check all instances of the use of ZtX and XtX and change
64 :     them so that having a negative last element of nc means use the
65 :     response only (but look for it in the right place).
66 : maechler 935
67 :     - Solved:
68 :    
69 :     Currently the show() method fail sometime after coercion:
70 :     e.g. 'sy' show()s wrongly, even though it "str()" fine :
71 :    
72 :     (po <- crossprod(Matrix(0:3, 2))) # ok
73 :     (ge <- as(po, "dgeMatrix")) # ok
74 :     (sy <- as(po, "dsyMatrix")) # BAD
75 :     str(sy) # looks fine
76 :    
77 :     or
78 :     example(expand) # -> ex$L and ex$U look bad, however
79 :     as(ex$L, "dgeMatrix") # `works'
80 :    
81 :     {Of course, we don't need a workaround but must understand
82 :     and solve the problem}
83 :    
84 : maechler 976 - slot "factors" maybe should move up to "Matrix" -- done, 2005-09-28
85 : maechler 935
86 : maechler 976 - group generics: "Arith", also "Compare", "Math" etc;
87 :     see ?Math and the examples in ?SetGeneric
88 :    
89 :     - methods for rbind and cbind where they make sense:
90 :     R 2.2.0 (and newer) provide cbind2() and rbind2() generics and default
91 :     methods [following John Chambers's proposition], and we have implemented
92 :     methods for them.
93 :    
94 : maechler 935 - arithmetic for sparse matrices:
95 :     done for <sparseMatrix> o <scalar>
96 :     {more needed: see TODO}
97 :    
98 : maechler 1109 - rcond() of a singular dpoMatrix gives a LaPack error instead of just 0:
99 :     MM <- crossprod(M <- Matrix(c(1:4,9:6), 2,4)) ; rcond(MM)
100 :     Done(2005-10-03): The error message is more helpful now.
101 : maechler 976
102 : maechler 1109 - implement diagonal Matrix class "ddiMatrix" etc
103 :     using constructor function Diagonal() {and extractor diag()}.
104 :     Done(2006-01-03)
105 :    
106 :     - new("ltTMatrix") now at least prints
107 : bates 1224
108 :     -- Done by version 0.995-1 ---
109 :    
110 :    
111 :     - Migration of lmer from the mer representation to the mer2
112 :     representation and the use of the CHOLMOD code for the sparse
113 :     matrix decomposition. Some of the things that need to be done.
114 :    
115 :     - Matrices in the mer2 representation are classed matrices, in the
116 :     mer representation they were unclassed. Any parts inside the C
117 :     code that would access, for example,
118 :     REAL(GET_SLOT(x, Matrix_RXXSym))
119 :     need to be modified to access
120 :     REAL(GET_SLOT(GET_SLOT(x, Matrix_RXXSym), Matrix_xSym))
121 :     This is especially important for Omega but I think I have done
122 :     those changes already.
123 :    
124 :     - The components named *X* in an mer object refers to an augmented
125 :     design matrix of p+1 columns. In the mer2 object there are
126 :     separate slots for rZy and rXy. The scalar y'y is the first
127 :     element of devComp.
128 :    
129 :     - Presently nc is of length nf+1 and the last element is n, the
130 :     number of observations. This value should be moved to devComp and
131 :     nc made of length nf.
132 :    
133 :     - The slot L is a list of length 1 that contains an ExternalPointer
134 :     to a cholmod_factor object. This contains a permutation which is
135 :     most easily accessible through cholmod_solve(CHOLMOD_P,...) or
136 :     cholmod_solve(CHOLMOD_Pt,...). The ZtX, Zty, RZX and rZy slots actually
137 :     contain P%*%RZX and P%*%rZy
138 :    
139 : maechler 1226 - "[<-" Methods for dgC* and dgT* the former building on the latter
140 :     using j = .Call("Matrix_expand_pointers", x@p, PACKAGE = "Matrix")
141 :     where needed
142 : bates 1224
143 : maechler 1228 - Put the matrix 'mm' and the response vector 'y' into 'KNex', a list.
144 :     Modified all examples and tests that used them and the Comparisons vignette.
145 : maechler 1290
146 :     - rowSums(), colSums(), rowMeans & colMeans() now should work for all
147 :     sparse and dense matrices, via "dgeMatrix", "dgC*" and "dgT*".
148 :    
149 : maechler 1329 - Suitably adjust classes of matrices after subscripting.
150 :     head(Hilbert(9)) and the equivalent expression Hilbert(9)[1:4,]
151 :     now work and return "dgeMatrix" (and not ..symmetric..).
152 :    
153 :     We try to propagate the class to the subscripted matrix
154 :     but, if that fails its test, fall back on a general matrix class. -- for dense
155 :     That is, the fallback class for dsyMatrix, etc. is dgeMatrix; the
156 : maechler 1331 fallback class for dsCMatrix is dgCMatrix, etc.
157 :    
158 :     - tril(), triu() now return matrices of *triangular* classes.
159 : maechler 1592
160 :     - Factorizations: LU and solve() for *sparse* Matrices is now done,
161 :     ----------------- using CSparse (and not UMFPACK as originally thought)
162 :    
163 : maechler 1615 - M[i,j] <- "sub-Matrix" now works.
164 : maechler 1592
165 : maechler 1654 - "Compare" for dgC & dgT --- to be able to do M[M > 10] etc
166 :    
167 :     - new("ltTMatrix", diag = "U", Dim = c(2:2, 2:2)) now works
168 :    
169 : maechler 1655 - Diagonal(3) - toeplitz(c(0,1,0)) or
170 :     Diagonal(4) >= 0 now work
171 : maechler 1659
172 :     - .Call(Csparse_Csparse_crossprod, ...) for crossprod(x,y) {2-args}
173 :    
174 : maechler 1673 - When 'x' is a symmetric matrix,
175 :     a) x[i,i] should return a *symmetric* matrix too (when 'i' has length > 1)
176 :     b) x[i,i] <- scalar_value should ``keep x symmetric'',
177 :     i.e. also return symmetricM*
178 : maechler 1659
179 : maechler 1751 - Fully implement "Logic" methods - now (R 2.4.1) that the group is in S4
180 : maechler 1673
181 : maechler 1870 - when printing sparse matrices column names are suppressed.
182 :     For matrices *with* non-empty column names, this is now message()d.
183 : maechler 1922 Alternatively, can now print(<sparseMatrix>, col.names = TRUE, .....)
184 : maechler 1751
185 : maechler 1922 - Fast colSums(), rowSums() etc : first for dgCMatrix, but then
186 :     'arules' needs fast colSums() and rowSums() - for ngCMatrix;
187 :     do it for "nMatrix" and "lMatrix" and return *integer*
188 : maechler 1945
189 :     - now check for DimNames propagation in coercions, at least by using a
190 :     "dimnamed" matrix in tstMatrixClass() in tests/Class+Meth.R
191 :    
192 : maechler 2005 - norm() methods for all Matrices, notably sparse "now too".
193 :    
194 :     - check all "Summary" group methods for all matrices in ./tests/Class+Meth.R
195 :    

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