1 package baseCode.dataFilter;
2
3 import baseCode.dataStructure.matrix.DenseDoubleMatrix2DNamed;
4 import baseCode.dataStructure.matrix.NamedMatrix;
5
6 /***
7 * Filter that remove individual values that are outside of a range. Removed values are set to NaN.
8 * <p>
9 * Copyright (c) 2004 Columbia University
10 *
11 * @author Pavlidis
12 * @version $Id: ItemLevelFilter.java,v 1.5 2004/07/27 03:18:58 pavlidis Exp $
13 */
14 public class ItemLevelFilter extends AbstractLevelFilter {
15
16 public NamedMatrix filter( NamedMatrix data ) {
17 if ( !( data instanceof DenseDoubleMatrix2DNamed ) ) {
18 throw new IllegalArgumentException(
19 "Only valid for DenseDoubleMatrix2DNamed" );
20 }
21
22 if ( lowCut == -Double.MAX_VALUE && highCut == Double.MAX_VALUE ) {
23 log.info( "No filtering requested" );
24 return data;
25 }
26
27 int numRows = data.rows();
28 int numCols = data.columns();
29 DenseDoubleMatrix2DNamed returnval = new DenseDoubleMatrix2DNamed(
30 numRows, numCols );
31 for ( int i = 0; i < numRows; i++ ) {
32
33 for ( int j = 0; j < numCols; j++ ) {
34
35 double newVal = ( ( DenseDoubleMatrix2DNamed ) data ).get( i, j );
36 if ( newVal < lowCut || newVal > highCut ) {
37 newVal = Double.NaN;
38 }
39
40 returnval.set( i, j, newVal );
41 }
42 }
43 returnval.setColumnNames( data.getColNames() );
44 returnval.setRowNames( data.getRowNames() );
45
46 return returnval;
47 }
48
49 }