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

Annotation of /FigKernelScripts/reformat_fasta.pl

Parent Directory Parent Directory | Revision Log Revision Log


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

1 : overbeek 1.1 # -*- perl -*-
2 : olson 1.2 #
3 :     # Copyright (c) 2003-2006 University of Chicago and Fellowship
4 :     # for Interpretations of Genomes. All Rights Reserved.
5 :     #
6 :     # This file is part of the SEED Toolkit.
7 :     #
8 :     # The SEED Toolkit is free software. You can redistribute
9 :     # it and/or modify it under the terms of the SEED Toolkit
10 :     # Public License.
11 :     #
12 :     # You should have received a copy of the SEED Toolkit Public License
13 :     # along with this program; if not write to the University of Chicago
14 :     # at info@ci.uchicago.edu or the Fellowship for Interpretation of
15 :     # Genomes at veronika@thefig.info or download a copy from
16 :     # http://www.theseed.org/LICENSE.TXT.
17 :     #
18 :    
19 : overbeek 1.1
20 :     use FIG;
21 :    
22 :     use Pod::Text;
23 :     # use File::Basename; $this_tool_name = basename($0);
24 :     if ((@ARGV == 1) && ($ARGV[0] =~ m/-help/)) {
25 :     pod2text($0); exit(0);
26 :     }
27 :    
28 :     =pod
29 :    
30 :     =over 5
31 :    
32 :     =item Usage: reformat_fasta_file < fasta_in > fasta_out
33 :    
34 :     =item Function: Reformats a fasta file to a uniform 60 chars per line.
35 :    
36 :     =back
37 :    
38 :     =cut
39 :    
40 :     if ($ARGV[0] =~ m/-strip/) { $strip = shift; }
41 :    
42 :     if ($ARGV[0] && (-e $ARGV[0]))
43 :     {
44 :     open(FIN, "<$ARGV[0]") or die "could not open $ARGV[0] as input";
45 :     $fin = \*FIN;
46 :     }
47 :     else
48 :     {
49 :     $fin = \*STDIN;
50 :     }
51 :    
52 :     if ($ARGV[1])
53 :     {
54 :     open(FOUT, ">$ARGV[1]") or die "could not open $ARGV[1] as output";
55 :     $fout = \*FOUT;
56 :     }
57 :     else
58 :     {
59 :     $fout = \*STDOUT;
60 :     }
61 :    
62 :    
63 :    
64 :     while ( (! eof($fin)) && ( ($head, $seq) = &get_a_fasta_record($fin) ) )
65 :     {
66 :     if ($strip) { $head =~ m/^(\S+)/; $head = $1; }
67 :    
68 :     &display_id_and_seq( $head, \$seq, $fout );
69 :     }
70 :    
71 :    
72 :     sub get_a_fasta_record
73 :     {
74 :     my ($fh) = @_;
75 :     my ( $old_eol, $entry, @lines, $head, $id, $seq );
76 :    
77 :     $old_eol = $/;
78 :     $/ = "\n>";
79 :    
80 :     if (! defined($fh)) { $fh = \*STDIN; }
81 :    
82 :     $entry = <$fh>;
83 :     chomp $entry;
84 :     @lines = split( /\n/, $entry );
85 :    
86 :     $head = shift @lines;
87 :     $head =~ s/^>?//;
88 :     $head =~ m/(\S+)/; $id = $1;
89 :    
90 :     $seq = join( "", @lines );
91 :     $seq =~ s/\s//g;
92 :     $seq =~ s/\*$//;
93 :    
94 :     my $tmp = $seq;
95 :     if (($tmp =~ s/[ARNDCQEGHILKMFPSTWYUVBZX]//ig) && $tmp)
96 :     {
97 :     print STDERR "$id has invalid chars: $tmp\n";
98 :     $seq =~ s/[^ARNDCQEGHILKMFPSTWYUVBZX]/x/ig;
99 :     }
100 :    
101 :     $/ = $old_eol;
102 :     return ( $head, $seq );
103 :     }
104 :    
105 :    
106 :     sub display_id_and_seq {
107 :     my( $id, $seq, $fh ) = @_;
108 :     my ( $i, $n, $ln );
109 :    
110 :     if (! defined($fh) ) { $fh = \*STDOUT; }
111 :    
112 :     print $fh ">$id\n";
113 :    
114 :     $n = length($$seq);
115 :     # confess "zero-length sequence ???" if ( (! defined($n)) || ($n == 0) );
116 :     for ($i=0; ($i < $n); $i += 60)
117 :     {
118 :     if (($i + 60) <= $n)
119 :     {
120 :     $ln = substr($$seq,$i,60);
121 :     }
122 :     else
123 :     {
124 :     $ln = substr($$seq,$i,($n-$i));
125 :     }
126 :     print $fh "$ln\n";
127 :     }
128 :     }

MCS Webmaster
ViewVC Help
Powered by ViewVC 1.0.3