[Bio] / FigWebServices / ma_to_tf_nr.cgi Repository:
ViewVC logotype

Annotation of /FigWebServices/ma_to_tf_nr.cgi

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.1 - (view) (download)

1 : mkubal 1.1 # -*- perl -*-
2 :    
3 :     =pod
4 :    
5 :     =head1 protein_sets_2.cgi
6 :    
7 :     Find transcription factors for affymetrix spot ids
8 :    
9 :     =cut
10 :    
11 :     use FIG;
12 :     use HTML;
13 :     use CGI;
14 :     my $cgi=new CGI;
15 :     use LWP::Simple qw(!head); # see the caveat in perldoc LWP about importing two head methods.
16 :    
17 :     $fig = new FIG;
18 :     my $html = [];
19 :    
20 :     unshift(@$html, "<TITLE>Find Transcription Factors for Expressed Genes</TITLE>\n");
21 :    
22 :     my $id_to_ratio;
23 :     my $inputs;
24 :     if ($cgi->param('request') )
25 :     {
26 :     my $input =$cgi->param('proteins');
27 :     my @inputs = split("\n",$input);
28 :    
29 :     if ($cgi->upload('fileupload'))
30 :     {
31 :     my $fh=$cgi->upload('fileupload');
32 :     @inputs = <$fh> ;
33 :     }
34 :    
35 :     $given = [@inputs];
36 :     $id_to_ratio = &parse_inputs($given);
37 :    
38 :     }
39 :    
40 :     if ($id_to_ratio && $cgi->param('request') eq "Find Transcription Factors")
41 :     {
42 :     &find_tfs($fig,$cgi,$html,$id_to_ratio);
43 :     }
44 :    
45 :     if($cgi->param('request') eq "Find Exclusive Combinations")
46 :     {
47 :     &analyze_combinations($fig,$cgi,$html);
48 :     }
49 :    
50 :     if ($id_to_ratio && $cgi->param('request') eq "Find Most Frequent Factors")
51 :     {
52 :     &find_most_frequent($fig,$cgi,$html,$tag_to_id);
53 :     }
54 :    
55 :     else
56 :     {
57 :     &show_initial($fig,$cgi,$html);
58 :     &HTML::show_page($cgi,$html,1);
59 :     exit;
60 :     }
61 :    
62 :     sub show_initial {
63 :     my ($fig,$cgi,$html)=@_;
64 :     # generate a blank page
65 :     push @$html,
66 :     $cgi->start_multipart_form(),
67 :     "<p>Enter affymetrix spot id, expression ratio pairs separated by a space or a tab</p>\n",
68 :     "<p>",
69 :     "<b>Paste pairs here:</b><br>\n",
70 :     $cgi->textarea(-name=>"proteins", -rows=>10, -columns=>40), "<br>\n",
71 :     "<br><b>Or choose a file here:</b><br>\n",
72 :     $cgi->filefield(-name=>"fileupload", -size=>50), "<br>\n",
73 :     $cgi->submit(-name=>'request', -value=>'Find Transcription Factors'),
74 :     $cgi->submit(-name=>'request', -value=>'Find Exclusive Combinations'),
75 :     $cgi->reset, $cgi->end_form;
76 :     return $html;
77 :     }
78 :    
79 :     sub find_tfs
80 :     {
81 :     my ($fig,$cgi,$html,$spotid_to_ratio)=@_;
82 :     $new_html = [];
83 :     $dir = "/home/mkubal/public_html";
84 :    
85 :     my @ids = keys(%{$spotid_to_ratio});
86 :    
87 :     open(OUT2,">$dir/tfs_to_ratio.txt");
88 :    
89 :     open(IN,"$dir/spotid_to_refseq.txt");
90 :     %spotid_to_refseq;
91 :     while ($_ = <IN>){
92 :     chomp($_);
93 :     #print STDERR "spot_to_refseq:$_\n";
94 :     @temp = split("\t",$_);
95 :     $spotid_to_refseq{$temp[0]} = $temp[1];
96 :     }
97 :    
98 :     open(IN2,"$dir/refseq_to_transfactor.txt.nonredundant");
99 :     %refseq_to_tf;
100 :     while ($_ = <IN2>){
101 :     chomp($_);
102 :     #print STDERR "refseq_to_transfactor:$_\n";
103 :     @temp = split("\t",$_);
104 :     if($refseq_to_tf{$temp[0]}){
105 :     $ref = $refseq_to_tf{$temp[0]};
106 :     push(@$ref,$temp[1]);
107 :     }
108 :     else{
109 :     $refseq_to_tf{$temp[0]} = [$temp[1]];
110 :     }
111 :     }
112 :    
113 :     push(@$new_html,"<HTML><HEAD>
114 :     <TITLE>strep</TITLE>
115 :     <META NAME='generator' CONTENT='YokMap 1.0.1'>
116 :     <META HTTP-EQUIV='Content-Type' CONTENT='text/html; charset=iso-8859-1'>
117 :     </HEAD>
118 :     <BODY BGCOLOR='#ffffff'>");
119 :    
120 :     push(@$new_html,"<TABLE border><TR><TH>Expression Ratio</TH><TH>Transcription Factor(s)</TH><TH>Affymetrix Spot ID</TH><TH>RefSeq ID</TH></TR>");
121 :    
122 :     my $row_string = "";
123 :     foreach my $id (@ids)
124 :     {
125 :     my $ratio = $spotid_to_ratio->{$id};
126 :     my $refseq = $spotid_to_refseq{$id};
127 :     my $tfs_ref = $refseq_to_tf{$refseq};
128 :    
129 :     foreach $tfs (@$tfs_ref){
130 :     $row_string = "<TR><TD>$ratio</TD><TD>$tfs</TD><TD>$id</TD><TD>$refseq</TD></TR>";
131 :     push(@$new_html,$row_string);
132 :     }
133 :    
134 :     if($tfs_ref){
135 :     foreach $tfs (@$tfs_ref){
136 :     print OUT2 "$tfs\t$ratio\n";
137 :     }
138 :     }
139 :    
140 :     }
141 :    
142 :     close(OUT2);
143 :    
144 :     push(@$new_html,"</TABLE>");
145 :     #push(@$new_html,
146 :     # "<br><br>",
147 :     # $cgi->submit(-name=>'request', -value=>'Find Exclusive Combinations'),
148 :     # $cgi->submit(-name=>'request', -value=>'Find Most Frequent Factors'));
149 :    
150 :    
151 :     &HTML::show_page($cgi,$new_html);
152 :     exit;
153 :     }
154 :    
155 :     sub analyze_combinations
156 :     {
157 :     my ($fig,$cgi,$html)=@_;
158 :     $new_html = [];
159 :     $dir = "/home/mkubal/public_html";
160 :    
161 :     print STDERR "made it here\n";
162 :     open(IN,"$dir/tfs_to_ratio.txt");
163 :     %tfs_combinations;
164 :     %tfs_counts;
165 :    
166 :     %tfs_expected;
167 :     open(IN3,"$dir/stats.txt.nonredundant");
168 :     open(SUMMARY,">$dir/nonredundant_stats.summary");
169 :     while ($_ = <IN3>){
170 :     @temp = split("\t",$_);
171 :     $expected = $temp[2];
172 :     chomp($expected);
173 :     $tfs_expected{$temp[0]} = $expected;
174 :     }
175 :     close(IN3);
176 :    
177 :     my @lines;
178 :     while ($_ = <IN>){
179 :     push(@lines,$_);
180 :     #print "input line:$_\n";
181 :     chomp($_);
182 :     @temp = split("\t",$_);
183 :     $tfs_combinations{$temp[0]} = 1;
184 :     }
185 :     close(IN);
186 :    
187 :     @negative_exclusives;
188 :     @positive_exclusives;
189 :    
190 :     foreach my $k (keys(%tfs_combinations)){
191 :     print STDERR "k:$k\n";
192 :     $sign = "not_set";
193 :     $exclusive = 1;
194 :     foreach $l (@lines){
195 :     @temp = split("\t",$l);
196 :     $tfs = $temp[0];
197 :     $ratio = $temp[1];
198 :     if($k eq $tfs){
199 :     if($tfs_counts{$k}){$tfs_counts{$k} = $tfs_counts{$k} + 1}
200 :     else{$tfs_counts{$k} = 1}
201 :    
202 :     if($sign eq "not_set"){
203 :     if($ratio < 0){$sign = "negative"}
204 :     else{$sign = "positive"}
205 :     }
206 :     else{
207 :     $previous_sign = $sign;
208 :     if($ratio < 0){$sign = "negative"}
209 :     else{$sign = "positive"}
210 :     if($previous_sign ne $sign){$exclusive =0}
211 :     }
212 :     }
213 :     }
214 :    
215 :     if($exclusive){
216 :     if($sign eq "positive"){
217 :     push(@positive_exclusives,$k)
218 :     }
219 :     else{push(@negative_exclusives,$k)}
220 :     }
221 :     }
222 :     push(@$new_html,"<HTML><HEAD>
223 :     <TITLE>strep</TITLE>
224 :     <META NAME='generator' CONTENT='YokMap 1.0.1'>
225 :     <META HTTP-EQUIV='Content-Type' CONTENT='text/html; charset=iso-8859-1'>
226 :     </HEAD>
227 :     <BODY BGCOLOR='#ffffff'>");
228 :    
229 :     push(@$new_html,"<TABLE border><TR><TH>UP Transcription Factor Combinations</TH><TH>Number of Genes</TH><TH>Observed/Expected</TH></TR>");
230 :    
231 :     foreach my $tfs (@positive_exclusives){
232 :     my $count = $tfs_counts{$tfs};
233 :     my $observed = $count * (1/2439);
234 :     my $expected = $tfs_expected{$tfs};
235 :     my $ratio = $observed/$expected;
236 :     my $row_string = "<TR><TD>$tfs</TD><TD>$count</TD><TD>$ratio</TD></TR>";
237 :     push(@$new_html,$row_string);
238 :     print SUMMARY "UP\t$tfs\t$observed\t$expected\t$ratio\n";
239 :    
240 :     }
241 :    
242 :     push(@$new_html,"</TABLE>");
243 :    
244 :     push(@$new_html,"<br><br>");
245 :    
246 :     push(@$new_html,"<TABLE border><TR><TH>DOWN Transcription Factor Combinations</TH><TH>Number of Genes</TH><TH>Observed/Expected</TH></TR>");
247 :    
248 :     foreach my $tfs (@negative_exclusives)
249 :     {
250 :     my $count = $tfs_counts{$tfs};
251 :     my $observed = $count * (1/2439);
252 :     my $expected = $tfs_expected{$tfs};
253 :     my $ratio = $observed/$expected;
254 :     my $row_string = "<TR><TD>$tfs</TD><TD>$count</TD><TD>$ratio</TD></TR>";
255 :     push(@$new_html,$row_string);
256 :     print SUMMARY "DOWN\t$tfs\t$observed\t$expected\t$ratio\n";
257 :    
258 :     }
259 :    
260 :     push(@$new_html,"</TABLE>");
261 :    
262 :     &HTML::show_page($cgi,$new_html);
263 :     exit;
264 :    
265 :     }
266 :    
267 :    
268 :     sub parse_inputs
269 :     {
270 :    
271 :     my ($given) =@_;
272 :     my $hash;
273 :     foreach my $g (@$given)
274 :     {
275 :     my $id ="";
276 :     my $ratio = "";
277 :    
278 :     if ($g =~/(.*?)(\t|\s+)(.*)/)
279 :     {
280 :     $id = $1;
281 :     $ratio = $3;
282 :     }
283 :    
284 :     $hash{$id} = $ratio;
285 :     }
286 :    
287 :     return \%hash;
288 :    
289 :     }
290 :    

MCS Webmaster
ViewVC Help
Powered by ViewVC 1.0.3