[Bio] / FortyEight / pull_sims_from_server.pl Repository:
ViewVC logotype

Annotation of /FortyEight/pull_sims_from_server.pl

Parent Directory Parent Directory | Revision Log Revision Log


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

1 : olson 1.1 #
2 :     # Given a fasta file, pull the sims from the sims server for the sequences.
3 :     #
4 :     # Write them to stdout, and write nonmatching IDs to stderr.
5 :     #
6 :    
7 :     use FIG;
8 :     use Digest::MD5;
9 :     use Data::Dumper;
10 :    
11 :     my $fhin = \*STDIN;
12 :    
13 :     my $fig = new FIG;
14 :    
15 :     my %id_to_md5;
16 :     my %md5_to_id;
17 :     my @ids;
18 :     my @md5s;
19 :     while ((my($id, $seqp, undef) = &FIG::read_fasta_record($fhin)))
20 :     {
21 :     my $md5 = Digest::MD5::md5_hex(uc($$seqp));
22 :     my $mid = "gnl|md5|$md5";
23 :     $id_to_md5{$id} = $mid;
24 :     $md5_to_id{$mid} = $id;
25 :     push(@ids, $id);
26 :     push(@md5s, $mid);
27 :     }
28 :    
29 :     $chunksize = 200;
30 :    
31 :     my %seen = %md5_to_id;
32 :     while (@md5s)
33 :     {
34 :     my @chunk = splice(@md5s, 0, $chunksize);
35 :     #print "process chunk\n";
36 :     # print STDERR "@chunk \n";
37 :     my @sims = $fig->sims(\@chunk, 300, undef, undef, 'raw');
38 :    
39 :     my $last;
40 :     while (my $sim = shift @sims)
41 :     {
42 :     if ($sim->id1 ne $last)
43 :     {
44 :     delete $seen{$last};
45 :     $last = $sim->id1;
46 :     }
47 :    
48 :     my $new = $md5_to_id{$sim->id1};
49 :     if ($new)
50 :     {
51 :     $sim->[0] = $new;
52 :     }
53 :    
54 :     print join("\t", @$sim), "\n";
55 :     }
56 :     delete $seen{$last};
57 :     }
58 :    
59 :     print STDERR "$_\n" for sort { &FIG::by_fig_id($a, $b) } values %seen;

MCS Webmaster
ViewVC Help
Powered by ViewVC 1.0.3