2 |
26 Feb 07 |
jari |
1 |
/* |
2 |
26 Feb 07 |
jari |
DetectionFilter holds data required by MAD to filter out user specified affy data. |
2 |
26 Feb 07 |
jari |
Essentially it lists group membership of chips and the minimum number of (P)resent genes |
2 |
26 Feb 07 |
jari |
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 |
LOOK INTO copy constructors!!! |
2 |
26 Feb 07 |
jari |
7 |
|
2 |
26 Feb 07 |
jari |
8 |
|
2 |
26 Feb 07 |
jari |
Patrick Cahan |
2 |
26 Feb 07 |
jari |
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 |
// number of (P)s of a gene in each group required |
2 |
26 Feb 07 |
jari |
// 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 |
// 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 |
// Initially place all files in group 1 |
2 |
26 Feb 07 |
jari |
// 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 |
// 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 |
//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 |
// 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 |
} |