[Bio] / FigKernelScripts / compute_contig_md5.pl Repository:
ViewVC logotype

Annotation of /FigKernelScripts/compute_contig_md5.pl

Parent Directory Parent Directory | Revision Log Revision Log


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

1 : olson 1.1 #
2 : olson 1.3 # Copyright (c) 2003-2006 University of Chicago and Fellowship
3 :     # for Interpretations of Genomes. All Rights Reserved.
4 :     #
5 :     # This file is part of the SEED Toolkit.
6 :     #
7 :     # The SEED Toolkit is free software. You can redistribute
8 :     # it and/or modify it under the terms of the SEED Toolkit
9 :     # Public License.
10 :     #
11 :     # You should have received a copy of the SEED Toolkit Public License
12 :     # along with this program; if not write to the University of Chicago
13 :     # at info@ci.uchicago.edu or the Fellowship for Interpretation of
14 :     # Genomes at veronika@thefig.info or download a copy from
15 :     # http://www.theseed.org/LICENSE.TXT.
16 :     #
17 :    
18 :     #
19 : olson 1.1 # Compute the MD5 checksum of a set of contigs.
20 :     #
21 :    
22 :     use strict;
23 :     use Data::Dumper;
24 : olson 1.2 use Digest::MD5 'md5_hex';
25 : olson 1.1
26 :     my %contigs;
27 :     my $cur;
28 :    
29 : olson 1.4 my $sig = 1;
30 :     if ($ARGV[0] eq '-nosig')
31 : olson 1.1 {
32 : olson 1.4 $sig = 0;
33 :     shift;
34 :     }
35 :    
36 :     if ($sig)
37 :     {
38 :     compute_contigs_with_sig();
39 :     }
40 :     else
41 :     {
42 :     compute_contigs_streaming();
43 :     }
44 : olson 1.1
45 : olson 1.4 sub compute_contigs_streaming
46 :     {
47 :     my $contig;
48 :     my $cur;
49 :     my $md5 = Digest::MD5->new;
50 :    
51 :     while (<>)
52 : olson 1.1 {
53 : olson 1.4 chomp;
54 :    
55 :     if (/^>(\S+).*/)
56 :     {
57 :     if ($cur)
58 :     {
59 :     show_contig($cur, $contig, $md5);
60 :     }
61 :     $cur = $1;
62 :     $md5 = Digest::MD5->new;
63 :     }
64 :     else
65 :     {
66 :     #
67 :     # Remove whitespace and coerce to lower case.
68 :     #
69 :     s/\s*//;
70 :     $md5->add(lc($_));
71 :     }
72 : olson 1.1 }
73 : olson 1.4 if ($cur)
74 : olson 1.1 {
75 : olson 1.4 show_contig($cur, $contig, $md5);
76 : olson 1.1 }
77 :     }
78 :    
79 : olson 1.4 sub show_contig
80 :     {
81 :     my($id, $contig, $md5) = @_;
82 :    
83 :     my $contig_md5 = $md5->hexdigest;
84 :    
85 :     my $len = length($contig);
86 : olson 1.1
87 : olson 1.4 print join("\t", $id, $len, $contig_md5) . "\n";
88 :     }
89 : olson 1.1
90 : olson 1.4 sub compute_contigs_with_sig
91 : olson 1.1 {
92 :    
93 : olson 1.4 while (<>)
94 :     {
95 :     chomp;
96 :    
97 :     if (/^>(\S+).*/)
98 :     {
99 :     $cur = $1;
100 :     }
101 :     else
102 :     {
103 :     #
104 :     # Remove whitespace and coerce to lower case.
105 :     #
106 :     s/\s*//;
107 :     $contigs{$cur} .= lc($_);
108 :     }
109 :     }
110 :    
111 :     #
112 :     # The signature file consists of tab-separated lines
113 :     # with contig name, length of nucleotide sequence, and md5checksum,
114 :     # in order of contig name.
115 :     #
116 :    
117 :     my $signature = "";
118 :    
119 :     for my $contig_name (sort keys %contigs)
120 :     {
121 :     my $contig_md5 = md5_hex($contigs{$contig_name});
122 :    
123 :     my $len = length($contigs{$contig_name});
124 :     $signature .= "$contig_name\t$len\t$contig_md5\n";
125 :     }
126 :     print "Signature:\n$signature";
127 :    
128 :     my $genome_md5sum = md5_hex($signature);
129 :    
130 :     print "Genome md5sum: $genome_md5sum\n";
131 : olson 1.1 }

MCS Webmaster
ViewVC Help
Powered by ViewVC 1.0.3