[Bio] / Babel / bin / build_md52id_for_uniprot2go.pl Repository:
ViewVC logotype

Annotation of /Babel/bin/build_md52id_for_uniprot2go.pl

Parent Directory Parent Directory | Revision Log Revision Log


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

1 : wilke 1.1 #!/usr/bin/env perl
2 :    
3 :     #use lib "/home/wilke/Swissknife_1.66/lib/";
4 :     use lib "/vol/biotools/share/db_update/Swissknife/lib/";
5 :    
6 :     use SWISS::Entry;
7 :     use SWISS::KW;
8 :     use SWISS::OS;
9 :     use Digest::MD5;
10 :     use Getopt::Std;
11 :     use warnings;
12 :     use strict;
13 :     use Data::Dumper;
14 :     use File::stat;
15 :     use Time::localtime;
16 :    
17 :     use vars qw($opt_i $opt_o $opt_e $opt_a);
18 :     getopts('i:o:ea');
19 :    
20 :    
21 :     my ($indir , $outdir , $unzip) = check_opts($opt_i, $opt_o, $opt_e);
22 :    
23 :     # use opt_a to append to outputfiles
24 :     my $write = ">";
25 :     $write = ">>" if ($opt_a);
26 :    
27 :     my @files = ( "uniprot_sprot.dat.gz" , "uniprot_trembl.dat.gz" );
28 :     #my @files = ( "uniprot_sprot.dat" );
29 :    
30 :     $outdir = "/tmp/" unless ($outdir);
31 :     my $time = time;
32 :    
33 :     open(FUNC, "$write$outdir/assigned_functions")
34 :     || die "could not open $outdir/assigned_functions";
35 :     open(ORG, "$write$outdir/org.table") || die "could not open $outdir/org.ta
36 :     ble";
37 :     open(SEQ, "$write$outdir/fasta")|| die "could not open $outdir/fasta";
38 :     open(MD5, "$write$outdir/md52id2func")|| die "could not open $outdir/md52id2func";
39 :     open(FAS, "$write$outdir/md5.fasta") || die "can not open $outdir/md5.fasta";
40 :     open(LOG, ">$outdir/files4md5_build." . get_timestamp($time) ) || die "can't open log file";
41 :    
42 :    
43 :     # start log file
44 :     print LOG "Files\tTimestamp\n";
45 :     print LOG "-----\t---------\n";
46 :    
47 :     foreach my $input (@files){
48 :     print $input , "\n";
49 :    
50 :     my $fs = stat("$indir/$input");
51 :     print LOG "$input\t" . ctime($fs->mtime) , "\n";
52 :    
53 :     unless (-f "$indir/$input"){
54 :     print STDERR "No input file $indir/$input\n";
55 :     next;
56 :     }
57 :    
58 :     if ($unzip){
59 :     `gunzip -c $indir/$input > /tmp/unzip.tmp`;
60 :     $input = "/tmp/unzip.tmp";
61 :     }
62 :     else{
63 :     $input = "$indir/$input";
64 :     }
65 :    
66 :     # input file
67 :     open(UNIPROT , "$input") || die "Can't open $input!\n";
68 :    
69 :     # Read an entire record at a time
70 :     local $/ = "\n//\n";
71 :    
72 :     my $md5_hash = {};
73 :    
74 :     while (my $text = <UNIPROT>){
75 :     # Read the entry
76 :     my $entry = SWISS::Entry->fromText($text);
77 :    
78 :    
79 :     #print $entry->toFasta , "\n";
80 :     #next;
81 :    
82 :     # Print the primary accession number of each entry.
83 :     # print STDERR $entry->AC, "\t" , $entry->DEs->head->text . "\n";
84 :     # print $entry->OSs->head->text, "\n";
85 :     # print $entry->DEs->text, "\n";
86 :     # print $entry->SQ, "\n";
87 :     # print $entry->database_code,"\n";
88 :     my $sequence = $entry->SQ;
89 :     my $md5 = Digest::MD5::md5_hex( uc $sequence );
90 :    
91 :    
92 :     unless ( $md5_hash->{ $md5 } ){
93 :     print FAS ">lcl|$md5\n$sequence\n";
94 :     }
95 :     $md5_hash->{ $md5 } = 1;
96 :    
97 :     #print "\n\n";
98 :     if ( $entry->DRs->get("GO") ){
99 :     my @GOs = $entry->DRs->get("GO");
100 :     #print Dumper $entry->DRs->get("GO");
101 :    
102 :     my $source = 'GOs from Uniprot';
103 :     foreach my $go (@GOs){
104 :    
105 :     print SEQ ">".$go->[1]."\n";
106 :     print SEQ $entry->SQ, "\n";
107 :     print FUNC $go->[1]."\t". $go->[2], "\n";
108 :     print ORG $go->[1]. $entry->OSs->head->text, "\n";
109 :     print MD5 "$md5\t".$go->[1]."\t".$go->[2]."\t".$entry->OSs->head->text."\t$source\n";
110 :    
111 :     }
112 :     #exit;
113 :     }
114 :    
115 :    
116 :     # foreach my $key (keys(%{$entry->OSs}) ) {
117 :     # print $key,"\t",$entry->OSs->{$key},"\n";
118 :    
119 :     # }
120 :     # print join " ", @{$entry->OSs->{list}} , "\n";
121 :     # print join " ", keys(%{$entry->OSs->{list}->[0]}) , "\n";
122 :     # foreach my $key ( keys(%{$entry->OSs->{list}->[0]} )) {
123 :     # print $key,"\t",$entry->OSs->{$key},"\n";
124 :    
125 :     # }
126 :     # # If the entry has a SWISS-2DPAGE crossreference
127 :     # if ($entry->DRs->get('SWISS-2DPAGE')) {
128 :    
129 :     # # Add the pseudo-keyword 'Gelelectrophoresis'
130 :     # my $kw = new SWISS::KW;
131 :     # $kw->text('Gelelectrophoresis');
132 :     # $entry->KWs->add($kw);
133 :     # };
134 :    
135 :     # # Print all keywords
136 :     # foreach my $kw ($entry->KWs->elements) {
137 :     # print $kw->text, ", ";
138 :     # }
139 :     # print "\n";
140 :    
141 :     # # Print number and Comments for all references
142 :     # # (courtesy of Dan Bolser)
143 :     # foreach my $ref ($entry->Refs->elements){
144 :     # my $rn = $ref->RN; # Reference Number
145 :     # print "RN:\t$rn\n";
146 :    
147 :     # my $rc = $ref->RC; # Reference Comment(s)
148 :     # foreach my $type (keys %$rc){ # Comment type
149 :     # foreach (@{$rc->{$type}}){ # Comment text
150 :     # print join( "\t", "RC:", $type, $_->text), "\n";
151 :     # }
152 :     # }
153 :     # }
154 :    
155 :     }
156 :     close(UNIPROT);
157 :     }
158 :    
159 :    
160 :    
161 :    
162 :    
163 :     sub check_opts{
164 :     my ($indir , $outdir , $unzip) = @_;
165 :    
166 :     if ( !($indir) or !(-d $indir) ){
167 :     print STDERR "No input directory!\n";
168 :     # exit -1;
169 :     }
170 :    
171 :     if ( !($outdir) ){
172 :     print STDERR "No output directory\n";
173 :     # exit -1;
174 :     }
175 :     elsif ( !(-d $outdir) ){
176 :     print STDERR "Directory $outdir does not exists, creating dir!\n";
177 :     mkpath("$outdir", 1, 0777) || die "Could not create $outdir\n";
178 :     }
179 :    
180 :     return ($indir , $outdir , $unzip);
181 :     }
182 :    
183 :    
184 :    
185 :    
186 :    
187 :     sub get_timestamp {
188 :     my ($string) = @_;
189 :    
190 :     my $lt = localtime($string);
191 :     my $year = $lt->year + 1900;
192 :     my $month = $lt->mon + 1;
193 :     my $day = $lt->mday;
194 :    
195 :     my $time_stamp = $year ;
196 :     if ($month < 10) { $time_stamp .= "0$month"}
197 :     else { $time_stamp .= $month }
198 :     if ($day < 10) { $time_stamp .= "0$day"}
199 :     else { $time_stamp .= $day }
200 :    
201 :     return $time_stamp || "unknown" ;
202 :     }

MCS Webmaster
ViewVC Help
Powered by ViewVC 1.0.3