mev-4.0.01/source/org/tigr/microarray/mev/DetectionFilter.java

Code
Comments
Other
Rev Date Author Line
2 26 Feb 07 jari 1 /*
2 26 Feb 07 jari 2     DetectionFilter holds data required by MAD to filter out user specified affy data.
2 26 Feb 07 jari 3     Essentially it lists group membership of chips and the minimum number of (P)resent genes
2 26 Feb 07 jari 4     required across all members of each group in order to use that gene for further analysis
2 26 Feb 07 jari 5
2 26 Feb 07 jari 6     LOOK INTO copy constructors!!!
2 26 Feb 07 jari 7
2 26 Feb 07 jari 8
2 26 Feb 07 jari 9     Patrick Cahan
2 26 Feb 07 jari 10     pcahan1@umbc.edu
2 26 Feb 07 jari 11 */
2 26 Feb 07 jari 12 package org.tigr.microarray.mev;
2 26 Feb 07 jari 13
2 26 Feb 07 jari 14 import java.io.Serializable;
2 26 Feb 07 jari 15
2 26 Feb 07 jari 16 public class DetectionFilter implements Serializable {
2 26 Feb 07 jari 17     public static final long serialVersionUID = 100010201110001L;
2 26 Feb 07 jari 18
2 26 Feb 07 jari 19     // number of (P)s of a gene in each group required
2 26 Feb 07 jari 20     // assume num of group = 2 for now
2 26 Feb 07 jari 21     private int[] num_required;
2 26 Feb 07 jari 22     private static int NUM_OF_GROUPS = 2;
2 26 Feb 07 jari 23     private boolean both;
2 26 Feb 07 jari 24
2 26 Feb 07 jari 25     // index corresponds to file index returned by MAD.getsample(int)
2 26 Feb 07 jari 26     private int[] group_membership;
2 26 Feb 07 jari 27
2 26 Feb 07 jari 28     // Initially place all files in group 1
2 26 Feb 07 jari 29     // and set num_required to total - 1
2 26 Feb 07 jari 30     public DetectionFilter(String[] names){
2 26 Feb 07 jari 31         num_required = new int[NUM_OF_GROUPS];
2 26 Feb 07 jari 32         group_membership = new int[names.length];
2 26 Feb 07 jari 33
2 26 Feb 07 jari 34         // initialize all to group 0
2 26 Feb 07 jari 35         for (int i = 0; i < names.length; i++){
2 26 Feb 07 jari 36             group_membership[i] = 0;
2 26 Feb 07 jari 37         }
2 26 Feb 07 jari 38
2 26 Feb 07 jari 39         set_num_required(0, 1);
2 26 Feb 07 jari 40         set_num_required(1, 1);
2 26 Feb 07 jari 41         both = false;
2 26 Feb 07 jari 42     }
2 26 Feb 07 jari 43
2 26 Feb 07 jari 44     public int get_num_required(int group_index){
2 26 Feb 07 jari 45         return num_required[group_index];
2 26 Feb 07 jari 46     }
2 26 Feb 07 jari 47
2 26 Feb 07 jari 48     public int get_group_membership(int file_index){
2 26 Feb 07 jari 49         return group_membership[file_index];
2 26 Feb 07 jari 50     }
2 26 Feb 07 jari 51
2 26 Feb 07 jari 52     public boolean get_both(){
2 26 Feb 07 jari 53         return both;
2 26 Feb 07 jari 54     }
2 26 Feb 07 jari 55
2 26 Feb 07 jari 56     public void set_num_required(int group_index, int required){
2 26 Feb 07 jari 57         num_required[group_index] = required;
2 26 Feb 07 jari 58     }
2 26 Feb 07 jari 59
2 26 Feb 07 jari 60     public void set_group_membership(int group_index, int file_index){
2 26 Feb 07 jari 61         group_membership[file_index] = group_index;
2 26 Feb 07 jari 62         //System.out.println("file" + file_index + " is now in grp:" + group_membership[file_index]);
2 26 Feb 07 jari 63     }
2 26 Feb 07 jari 64
2 26 Feb 07 jari 65     public void set_both(boolean use_both){
2 26 Feb 07 jari 66         this.both = use_both;
2 26 Feb 07 jari 67     }
2 26 Feb 07 jari 68
2 26 Feb 07 jari 69     public boolean keep_gene(String[] detection_calls){
2 26 Feb 07 jari 70         // tally P calls in each group
2 26 Feb 07 jari 71         int[] present_calls = {0,0};
2 26 Feb 07 jari 72         for (int i = 0; i < detection_calls.length; i++){
2 26 Feb 07 jari 73             if (detection_calls[i].equalsIgnoreCase("P")){
2 26 Feb 07 jari 74                 present_calls[ get_group_membership(i) ]++;
2 26 Feb 07 jari 75             }
2 26 Feb 07 jari 76         }
2 26 Feb 07 jari 77
2 26 Feb 07 jari 78
2 26 Feb 07 jari 79         if (this.get_both()){
2 26 Feb 07 jari 80           return ( (present_calls[0] >= get_num_required(0)) &&
2 26 Feb 07 jari 81                   (present_calls[1] >= get_num_required(1)));
2 26 Feb 07 jari 82         }
2 26 Feb 07 jari 83         else {
2 26 Feb 07 jari 84           return ( (present_calls[0] >= get_num_required(0)) ||
2 26 Feb 07 jari 85                   (present_calls[1] >= get_num_required(1)));
2 26 Feb 07 jari 86         }
2 26 Feb 07 jari 87
2 26 Feb 07 jari 88     }
2 26 Feb 07 jari 89
2 26 Feb 07 jari 90     public String toString(){
2 26 Feb 07 jari 91         String out = "Num Required Grp 1:" + get_num_required(0);
2 26 Feb 07 jari 92         out += "\nNum Required Grp 2:" + get_num_required(1);
2 26 Feb 07 jari 93         for (int i = 0; i < group_membership.length; i++){
2 26 Feb 07 jari 94             out += "\nsample: " + i + " is in group: " + get_group_membership(i);
2 26 Feb 07 jari 95         }
2 26 Feb 07 jari 96         return out;
2 26 Feb 07 jari 97
2 26 Feb 07 jari 98     }
2 26 Feb 07 jari 99 }