[Bio] / DrugTargets / drug_targets_table.pl Repository:
ViewVC logotype

Annotation of /DrugTargets/drug_targets_table.pl

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.1 - (view) (download) (as text)

1 : fangfang 1.1
2 :     use FIG;
3 :     use CGI;
4 :     use FIG_Config;
5 :     my $fig = new FIG;
6 :     my $cgi = new CGI;
7 :     my $temp_dir = $FIG_Config::temp;
8 :     my $fin = "$temp_dir/tmp$$.in";
9 :     $| = 1;
10 :    
11 :     my $webpage = 1;
12 :     my $table_only = 1;
13 :     my $def_org = '158879.1';
14 :    
15 :     print $cgi->header();
16 :    
17 :     if ($webpage || !$no_header) {
18 :     my @header = ('Category', 'Gene Name', 'Gene Id', 'PEG ID', 'PEG SeqLen', 'GenBank ID', 'UniProt ID', 'Functional Role', 'Conservation of Seqs', 'PDB (bound)', 'e-Value (bound)', 'PDB (free)', 'e-Value', 'PDB Title', 'PDB SeqLen', 'ProtDist', 'PASS ASPs', 'PASS Weight of Largest Pocket', 'PDB Ligand CLiBE');
19 :     if ($webpage) {
20 :     if ($table_only) {
21 :     print gen_html("start_table");
22 :     } else {
23 :     print gen_html("start_html", ("Drug Targets - ") . join(" ", @infiles));
24 :     print gen_html("start_table");
25 :     }
26 :     print gen_html("header", @header);
27 :     } else {
28 :     print join("\t", @header). "\n";
29 :     }
30 :     }
31 :    
32 :     my $data = $cgi->param("keys");
33 :    
34 :     open(FIN, ">$fin");
35 :     print FIN "$data\n";
36 :     close(FIN);
37 :     #print "data: $data\n";
38 :     #print "gen_dt_table -html -orgs=$def_org $fin\n";
39 :    
40 :     {
41 :     open(FIN, $fin) || (print(STDERR "'$fin': Couldn't open file. Skipped...\n\n"), next);
42 :    
43 :     while (<FIN>) {
44 :     chomp;
45 :     if (/^\#/) {
46 :     next if ($ignore_comment);
47 :     (/orgs=(.*)/i) && ($def_org = $1, $def_cat = $def_tag = $def_url = undef);
48 :     (/cat=(.*)/i) && ($def_cat = $1);
49 :     (/tag=(.*)/i) && ($def_tag = $1);
50 :     (/url=(\S+)/i) && ($def_url = $1);
51 :     next;
52 :     }
53 :    
54 :     $org = $def_org || (print(STDERR "'$fin': No genome specified. Skipped...\n\n"), last);
55 :     $cat = $def_cat;
56 :     $tag = $def_tag;
57 :     $url = $def_url;
58 :     #print "$tag\n";
59 :    
60 :     @cols = split(/\t/);
61 :    
62 :     if ($gene = $cols[0]) {
63 :     if ($gene =~ /(\S+)\,\s*(.*)/) {
64 :     $gene = $1;
65 :     $tag = $2;
66 :     }
67 :    
68 :     # peg, url, cat
69 :     next unless $peg = get_peg($org, $gene);
70 :     $peg_u = "<a href=http://theseed.uchicago.edu/FIG/protein.cgi?prot=$peg&user= target=_blank>$peg</a>" if ($peg);
71 :     $gene = $tag ? "$gene, $tag" : $gene;
72 :     $cat = $cols[1] ? $cols[1] : $cat;
73 :     $url = $cols[2] ? $cols[2] : $url;
74 :     $gene_u = "<a href=$url>$gene</a>" if ($gene);
75 :     $peg_len = $fig->translation_length($peg);
76 :    
77 :     # funtion role
78 :     $role = $fig->function_of($peg);
79 :    
80 :     # geneId
81 :     @aliases = $fig->feature_aliases($peg);
82 :     @genes = grep {$_ !~ /.*(\||\_|\:).*/ } @aliases;
83 :     $geneId = join (",", @genes);
84 :    
85 :     # Genebank ID
86 :     @gids = grep {/.*gi.*/} @aliases;
87 :     $gid = join(", ", @gids);
88 :     @gids_u = map {/gi\|(\S+)/ } @gids;
89 :     map {$_ = "<a href=http://www.ncbi.nlm.nih.gov/entrez/viewer.fcgi?db=protein&val=$_ target=_blank>gi|$_</a>"} @gids_u;
90 :     $gid_u = join(", ", @gids_u);
91 :    
92 :     # uniprot ID
93 :     @uniIds = grep {/.*uni.*/} @aliases;
94 :     $uniId = join(", ", @uniIds);
95 :     @uniIds_u = map {/uni\|(\S+)/} @uniIds;
96 :     map {$_ = "<a href=http://www.pir.uniprot.org/cgi-bin/upEntry?id=$_ target=_blank>uni|$_</a>"} @uniIds_u;
97 :     $uniId_u = join(", ", @uniIds_u);
98 :    
99 :     # conservation of sequences
100 :     my $cons = get_cons($peg);
101 :    
102 :     # best pdb bound
103 :     my ($pdb_bound, $escore_bound, $pdb_bound_url) = get_pdb($peg, "bound");
104 :     my $pdb_bound_u = "<a href=$pdb_bound_url>$pdb_bound</a>" if ($pdb_bound);
105 :    
106 :     # best pdb free
107 :     my ($pdb, $escore, $pdb_url, $pdb_title) = get_pdb($peg, "free");
108 :     my $pdb_u = "<a href=$pdb_url>$pdb</a>" if ($pdb);
109 :    
110 :     # prodist
111 :     my ($peg_len, $pdb_len, $dist) = get_dist($peg, $pdb) if ($pdb);
112 :     my $dist_u = "<a href=peg_pdb_align.cgi?peg=$peg&pdb=$pdb>$dist</a>" if ($pdb);
113 :    
114 :     # pass info for pdb free
115 :     my ($pass, $pass_maxwgt, $pass_gif) = get_pass($pdb) if ($pdb);
116 :     my $pass_u = "<a href=$pass_gif>$pass</a>" if ($pass && $pass_gif);
117 :    
118 :     # CLiBE
119 :     my $clibe_u = get_clibe_u($pdb) if ($pdb);
120 :     my $clibe = ($clibe_u =~ /<.*>(.*)<.*>/, $1);
121 :    
122 :     if ($no_link) {
123 :     @row = ($cat, $gene, $geneId, $peg, $peg_len, $gid, $uniId, $role, $cons, $pdb_bound, $escore_bound, $pdb, $escore, $pdb_title, $pdb_len, $dist, $pass, $pass_maxwgt, $clibe);
124 :     } else {
125 :     @row = ($cat, $gene_u, $geneId, $peg_u, $peg_len, $gid_u, $uniId_u, $role, $cons, $pdb_bound_u, $escore_bound, $pdb_u, $escore, $pdb_title, $pdb_len, $dist_u, $pass_u, $pass_maxwgt, $clibe_u);
126 :     }
127 :     if ($webpage) {
128 :     print gen_html("row", @row);
129 :     } else {
130 :     print join("\t", @row) . "\n";
131 :     }
132 :     }
133 :     }
134 :    
135 :     close(FIN);
136 :     }
137 :    
138 :     if ($webpage) {
139 :     print gen_html("end_table");
140 :     print gen_html("end_html") unless $table_only;
141 :     }
142 :    
143 :     #--------------------
144 :     # sub routines
145 :     #--------------------
146 :    
147 :     sub get_peg {
148 :     my ($org, $gene) = @_;
149 :     my ($pegs_index_data) = $fig->search_index($gene);
150 :    
151 :     my @orgs = split(/[^0-9.]/, $org);
152 :    
153 :     my $peg;
154 :     for $g (@orgs) {
155 :     my @pegs = grep {/$g/} map {$_->[0]} @$pegs_index_data;
156 :     #if (@pegs > 1) {print STDERR "get_peg: more than one hits for '$gene' in '$g'.\n";}
157 :     if ($peg = $pegs[0]) {last};
158 :     }
159 :     return $peg;
160 :     }
161 :    
162 :     sub get_pdb {
163 :     my ($peg, $domain) = @_;
164 :     my ($pdb, $escore, $pdb_url, $pdb_title) = ();
165 :     my $best_pdb = "$FIG_Config::bin/best_pdb";
166 :    
167 :     $best_pdb = "perl best_pdb.pl" unless (-e $best_pdb);
168 :     ($domain =~ /bound/) && ($domain = "-bound");
169 :    
170 :     ($pdb, $escore, $pdb_url, $pdb_title) = split(/\t/, `$best_pdb $domain '$peg'`);
171 :     chomp($pdb_title);
172 :    
173 :     return ($pdb, $escore, $pdb_url, $pdb_title);
174 :     }
175 :    
176 :     sub get_pass {
177 :     my ($pdb) = @_;
178 :     my ($pass, $pass_maxwgt, $pass_gif) = ();
179 :     my $pass_pdb = "$FIG_Config::bin/pass_pdb";
180 :     my $pdb2passinfo = "$FIG_Config::bin/pdb2passinfo";
181 :    
182 :     $pdb2passinfo = "perl pdb2passinfo.pl" unless (-e $pdb2passinfo);
183 :     $pass_pdb = "perl pass_pdb.pl";
184 :     system "$pass_pdb $pdb";
185 :    
186 :     ($pass, $pass_maxwgt, $pass_gif) = split(/\t/, `$pdb2passinfo $pdb`);
187 :     chomp($pass_gif);
188 :    
189 :     return ($pass, $pass_maxwgt, $pass_gif);
190 :     }
191 :    
192 :     sub get_dist {
193 :     my ($peg, $pdb) = @_;
194 :     my ($peg_len, $pdb_len, $dist) = ();
195 :     my $peg_pdb_dist = "$FIG_Config::bin/peg_pdb_dist";
196 :    
197 :     $peg_pdb_dist = "perl peg_pdb_dist.pl" unless (-e $peg_pdb_dist);
198 :    
199 :     ($peg_len, $pdb_len, $dist) = split(/\t/, `$peg_pdb_dist -len '$peg' $pdb`);
200 :     chomp($dist);
201 :    
202 :     return ($peg_len, $pdb_len, $dist);
203 :     }
204 :    
205 :     sub get_cons {
206 :     my ($peg) = @_;
207 :     my $get_homo = "$FIG_Config::bin/get_homologs";
208 :     my $aln_cons = "$FIG_Config::bin/aln_conservation";
209 :    
210 :     $get_homo = "perl get_homologs.pl" unless (-e $get_homo);
211 :     $aln_cons = "perl aln_conservation.pl" unless (-e $aln_cons);
212 :    
213 :     my $cons = `$get_homo -max=20 '$peg' | $aln_cons`;
214 :     chomp($cons);
215 :    
216 :     return $cons;
217 :     }
218 :    
219 :     sub get_clibe_u {
220 :     my ($pdb) = @_;
221 :     my $clibe_db = "$FIG_Config::fig/var/DrugTargets/pdb_ligand_table_CLiBE.txt";
222 :     $clibe_db = "pdb_ligand_table_CLiBE.txt" unless (-e $clibe_db);
223 :     my $pdb_key = ($pdb =~/(\d\w{3})/, $1);
224 :    
225 :     my ($clibe) = split(/\n/, `cut -f2 $clibe_db |grep $pdb_key`);
226 :     chomp($clibe);
227 :    
228 :     return $clibe;
229 :     }
230 :    
231 :     sub gen_html {
232 :     my ($part, @content) = @_;
233 :     my @html;
234 :     if ($part =~ /start_html/i) {
235 :     push @html, "<html>";
236 :     push @html, $cgi->head($cgi->title($content[0]));
237 :     push @html, $cgi->start_body();
238 :     } elsif ($part =~ /end_html/i) {
239 :     push @html, $cgi->end_body();
240 :     push @html, "</html>";
241 :     } elsif ($part =~ /start_table/i) {
242 :     push @html, "<table ID=DrugTargets BORDER=1 width=80%>";
243 :     } elsif ($part =~ /end_table/i) {
244 :     push @html, "</table>";
245 :     } else {
246 :     $s = ($part =~ /header/i) ? "th" : "td";
247 :     push @html, "<tr>";
248 :     for ($i=0; $i<19; $i++) {$cols[$i] = $content[$i] ? $content[$i] : "N/A"};
249 :     map {$_ = "<$s>$_<\/$s>"} @cols;
250 :     push @html, join(" ", @cols);
251 :     push @html, "</tr>";
252 :     }
253 :     return join("\n", @html) . "\n";
254 :     }

MCS Webmaster
ViewVC Help
Powered by ViewVC 1.0.3