View Javadoc

1   package baseCode.dataFilter;
2   
3   import baseCode.math.Stats;
4   
5   /***
6    * Abstract class representing a filter that removes things from matrices based on the values themselves. Copyright (c)
7    * 2004 Columbia University
8    * 
9    * @author Owner
10   * @version $Id: AbstractLevelFilter.java,v 1.3 2004/07/27 03:18:58 pavlidis Exp $
11   */
12  public abstract class AbstractLevelFilter extends AbstractFilter {
13  
14     protected double lowCut = -Double.MAX_VALUE;
15     protected double highCut = Double.MAX_VALUE;
16     protected boolean useLowAsFraction = false;
17     protected boolean useHighAsFraction = false;
18  
19     /***
20      * Set the low threshold for removal.
21      * 
22      * @param lowCut the threshold
23      */
24     public void setLowCut( double lowCut ) {
25        this.lowCut = lowCut;
26     }
27  
28     /***
29      * @param lowCut
30      * @param isFraction
31      */
32     public void setLowCut( double lowCut, boolean isFraction ) {
33        setLowCut( lowCut );
34        setUseLowCutAsFraction( isFraction );
35        useLowAsFraction = isFraction;
36     }
37  
38     /***
39      * Set the high threshold for removal. If not set, no filtering will occur.
40      * 
41      * @param h the threshold
42      */
43     public void setHighCut( double h ) {
44        highCut = h;
45     }
46  
47     /***
48      * @param highCut
49      * @param isFraction
50      */
51     public void setHighCut( double highCut, boolean isFraction ) {
52        setHighCut( highCut );
53        setUseHighCutAsFraction( isFraction );
54        useHighAsFraction = isFraction;
55     }
56  
57     /***
58      * @param setting
59      */
60     public void setUseHighCutAsFraction( boolean setting ) {
61        if ( setting == true && !Stats.isValidFraction( highCut ) ) {
62           throw new IllegalArgumentException(
63                 "Value for cut(s) are invalid for using "
64                       + "as fractions, must be >0.0 and <1.0," );
65        }
66        useHighAsFraction = setting;
67     }
68  
69     /***
70      * @param setting
71      */
72     public void setUseLowCutAsFraction( boolean setting ) {
73        if ( setting == true && !Stats.isValidFraction( lowCut ) ) {
74           throw new IllegalArgumentException(
75                 "Value for cut(s) are invalid for using "
76                       + "as fractions, must be >0.0 and <1.0," );
77        }
78        useLowAsFraction = setting;
79     }
80  
81     /***
82      * Set the filter to interpret the low and high cuts as fractions; that is, if true, lowcut 0.1 means remove 0.1 of
83      * the rows with the lowest values. Otherwise the cuts are interpeted as actual values. Default = false.
84      * 
85      * @param setting boolean
86      */
87     public void setUseAsFraction( boolean setting ) {
88        setUseHighCutAsFraction( setting );
89        setUseLowCutAsFraction( setting );
90     }
91  
92  }