7681482e74691487522bd59f92b4cc3236c1b681
[jalview.git] / utils / splitstockholm.pl
1 #!/usr/bin/perl
2 #*******************************************************************************
3 # Jalview - A Sequence Alignment Editor and Viewer (Version 2.7)
4 # Copyright (C) 2011 J Procter, AM Waterhouse, G Barton, M Clamp, S Searle
5 #
6 # This file is part of Jalview.
7 #
8 # Jalview is free software: you can redistribute it and/or
9 # modify it under the terms of the GNU General Public License 
10 # as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
11 #
12 # Jalview is distributed in the hope that it will be useful, but 
13 # WITHOUT ANY WARRANTY; without even the implied warranty 
14 # of MERCHANTABILITY or FITNESS FOR A PARTICULAR 
15 # PURPOSE.  See the GNU General Public License for more details.
16 #
17 # You should have received a copy of the GNU General Public License along with Jalview.  If not, see <http://www.gnu.org/licenses/>.
18 #*******************************************************************************
19 \r
20 # Splits a concatenated set of Stockholm Files into several individual files.\r
21 \r
22 use strict;\r
23 use FileHandle;\r
24 my $ac;\r
25 my $lns="";\r
26 my $fh;\r
27 while (<>) {\r
28     if ($_=~m!^//!) {\r
29         $fh->print("//\n");\r
30         $fh->close();\r
31         $ac = undef;\r
32         $lns = "";\r
33     } else {\r
34         if ($_=~/GF\s+AC\s+([0-9.RPF]+)/) { \r
35             $ac=$1; \r
36             ($fh=new FileHandle)->open(">$ac.stk") or die("Couldn't open file '$ac.stk'"); \r
37             $lns=~/^. STOCKHOLM 1.0/ or $fh->print("# STOCKHOLM 1.0\n");\r
38         };\r
39         if (defined($fh)) {\r
40             if (defined $lns) { \r
41                 $fh->print($lns); $lns=undef; }\r
42             \r
43             $fh->print($_);\r
44         } else {\r
45             $lns .= $_;\r
46         }\r
47     }\r
48 }\r