JAL-2778 try another way to draw sequences with reduced synchronisation
[jalview.git] / utils / splitstockholm.pl
1 #!/usr/bin/perl
2 ##
3 # Jalview - A Sequence Alignment Editor and Viewer ($$Version-Rel$$)
4 # Copyright (C) $$Year-Rel$$ The Jalview Authors
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 # The Jalview Authors are detailed in the 'AUTHORS' file.
19 ##
20  
21 # Splits a concatenated set of Stockholm Files into several individual files.
22
23 use strict;
24 use FileHandle;
25 my $ac;
26 my $lns="";
27 my $fh;
28 while (<>) {
29     if ($_=~m!^//!) {
30         $fh->print("//\n");
31         $fh->close();
32         $ac = undef;
33         $lns = "";
34     } else {
35         if ($_=~/GF\s+AC\s+([0-9.RPF]+)/) { 
36             $ac=$1; 
37             ($fh=new FileHandle)->open(">$ac.stk") or die("Couldn't open file '$ac.stk'"); 
38             $lns=~/^. STOCKHOLM 1.0/ or $fh->print("# STOCKHOLM 1.0\n");
39         };
40         if (defined($fh)) {
41             if (defined $lns) { 
42                 $fh->print($lns); $lns=undef; }
43             
44             $fh->print($_);
45         } else {
46             $lns .= $_;
47         }
48     }
49 }