1 package baseCode.dataStructure.matrix;
2
3 import java.text.NumberFormat;
4
5 import cern.colt.list.DoubleArrayList;
6 import cern.colt.matrix.DoubleMatrix1D;
7 import cern.colt.matrix.impl.SparseDoubleMatrix2D;
8
9 /***
10 * <p>
11 * Title: SparseDoubleMatrix2DNamed
12 * </p>
13 * <p>
14 * Description: A sparse matrix that knows about row and column names.
15 * </p>
16 * <p>
17 * Copyright (c) 2004
18 * </p>
19 * <p>
20 * Institution:: Columbia University
21 * </p>
22 *
23 * @author Paul Pavlidis
24 * @version $Id: SparseDoubleMatrix2DNamed.java,v 1.5 2004/08/16 02:06:01 pavlidis Exp $
25 */
26 public class SparseDoubleMatrix2DNamed extends AbstractNamedDoubleMatrix implements
27 NamedMatrix {
28
29 private SparseDoubleMatrix2D matrix;
30
31 /***
32 * @param T double[][]
33 */
34 public SparseDoubleMatrix2DNamed( double T[][] ) {
35 super();
36 matrix = new SparseDoubleMatrix2D( T );
37 }
38
39 /***
40 * @param rows int
41 * @param cols int
42 */
43 public SparseDoubleMatrix2DNamed( int rows, int cols ) {
44 super();
45 matrix = new SparseDoubleMatrix2D( rows, cols );
46 }
47
48 public void set( int row, int col, Object value ) {
49 set( row, col, ( ( Double ) value ).doubleValue() );
50 }
51
52 /***
53 * Return a reference to a specific row.
54 *
55 * @param row int
56 * @return double[]
57 */
58 public double[] getRow( int row ) {
59 return viewRow( row ).toArray();
60 }
61
62 /***
63 * Return a copy of a given column.
64 *
65 * @param col int
66 * @return double[]
67 */
68 public double[] getCol( int col ) {
69 double[] result = new double[rows()];
70 for ( int i = 0; i < rows(); i++ ) {
71 result[i] = get( i, col );
72 }
73 return result;
74 }
75
76 public Object[] getRowObj( int row ) {
77 Double[] result = new Double[columns()];
78 for ( int i = 0; i < columns(); i++ ) {
79 result[i] = new Double( get( row, i ) );
80 }
81 return result;
82 }
83
84 public Object[] getColObj( int col ) {
85 Double[] result = new Double[rows()];
86 for ( int i = 0; i < rows(); i++ ) {
87 result[i] = new Double( get( i, col ) );
88 }
89 return result;
90 }
91
92 /***
93 * @return java.lang.String
94 */
95 public String toString() {
96 NumberFormat nf = NumberFormat.getInstance();
97 String result = "";
98 if ( this.hasColNames() || this.hasRowNames() ) {
99 result = "label";
100 }
101
102 if ( this.hasColNames() ) {
103 for ( int i = 0; i < columns(); i++ ) {
104 result = result + "\t" + getColName( i );
105 }
106 result += "\n";
107 }
108
109 for ( int i = 0; i < rows(); i++ ) {
110 if ( this.hasRowNames() ) {
111 result += getRowName( i );
112 }
113 for ( int j = 0; j < columns(); j++ ) {
114
115 double value = get( i, j );
116
117 if ( value == 0.0 ) {
118 result = result + "\t";
119 } else {
120
121 result = result + "\t" + nf.format( value );
122 }
123 }
124 result += "\n";
125 }
126 return result;
127 }
128
129 /***
130 * @param s String
131 * @return double[]
132 */
133 public double[] getRowByName( String s ) {
134 return getRow( getRowIndexByName( s ) );
135 }
136
137 public boolean isMissing( int i, int j ) {
138 return Double.isNaN( get( i, j ) );
139 }
140
141 /***
142 * @return
143 */
144 public int columns() {
145 return matrix.columns();
146 }
147
148 /***
149 * @param row
150 * @param column
151 * @return
152 */
153 public double get( int row, int column ) {
154 return matrix.get( row, column );
155 }
156
157 /***
158 * @param row
159 * @param column
160 * @return
161 */
162 public double getQuick( int row, int column ) {
163 return matrix.getQuick( row, column );
164 }
165
166 /***
167 * @return
168 */
169 public int rows() {
170 return matrix.rows();
171 }
172
173 /***
174 * @param row
175 * @param column
176 * @param value
177 */
178 public void set( int row, int column, double value ) {
179 matrix.set( row, column, value );
180 }
181
182 /***
183 * @param row
184 * @param column
185 * @param value
186 */
187 public void setQuick( int row, int column, double value ) {
188 matrix.setQuick( row, column, value );
189 }
190
191 /***
192 * @param column
193 * @return
194 */
195 public DoubleMatrix1D viewColumn( int column ) {
196 return matrix.viewColumn( column );
197 }
198
199 /***
200 * @param row
201 * @return
202 */
203 public DoubleMatrix1D viewRow( int row ) {
204 return matrix.viewRow( row );
205 }
206
207 /***
208 * @return
209 */
210 public int cardinality() {
211 return matrix.cardinality();
212 }
213 /***
214 * @param minNonZeros
215 */
216 public void ensureCapacity( int minNonZeros ) {
217 matrix.ensureCapacity( minNonZeros );
218 }
219 /***
220 * @return
221 */
222 public int size() {
223 return matrix.size();
224 }
225 /***
226 *
227 */
228 public void trimToSize() {
229 matrix.trimToSize();
230 }
231
232
233
234
235 public DoubleArrayList getRowArrayList( int i ) {
236 return new DoubleArrayList(getRow(i));
237 }
238
239
240 }