JAL-2797 first attempt
[jalview.git] / forester / ruby / scripts / hmm_split.rb
1 #!/usr/local/bin/ruby -w
2 #
3 # = hmm_split
4 #
5 # Copyright::    Copyright (C) 2017 Christian M Zmasek
6 # License::      GNU Lesser General Public License (LGPL)
7
8 module ForesterScripts
9
10   if ( ARGV == nil || ARGV.length != 3 )
11     puts( "usage: hmm_split.rb <Pfam HMM file> <outfile suffix> <outdir>" )
12     exit( -1 )
13   end
14
15   hmmfile = ARGV[ 0 ]
16   suffix  = ARGV[ 1 ]
17   outdir  = ARGV[ 2 ]
18
19   if ( !File.exist?( outdir ) )
20     puts( "outdir [" + outdir + "] does not exist" )
21     exit( -1 )
22   end
23   if ( !File.exist?( hmmfile ) )
24     puts( "Pfam HMM file [" + hmmfile + "] does not exist" )
25     exit( -1 )
26   end
27
28   data = String.new
29   name = String.new
30   line_count = 0
31   count = 0
32
33   File.open( hmmfile ) do | file |
34     while line = file.gets
35       data = data + line
36       line_count += 1
37       if ( line =~ /NAME\s+(.+)/ )
38         if name.length > 0
39           puts( "Pfam HMM file [" + hmmfile + "] format error [line: " + line + "]" )
40           exit( -1 )
41         end
42         name = $1
43       elsif ( line =~ /\/\// )
44         if name.length < 1
45           puts( "Pfam HMM file [" + hmmfile + "] format error [line: " + line + "]" )
46           exit( -1 )
47         end
48
49         outfile = outdir + '/' + name + suffix
50         if ( File.exist?( outfile ) )
51           puts( "file [" + outfile + "] already exists" )
52           exit( -1 )
53         end
54         open( outfile, 'w' ) do | out |
55           out.write( data )
56         end
57         count += 1
58         puts( count.to_s + ": " + name )
59         data = String.new
60         name = String.new
61       end
62     end
63   end
64
65   puts()
66   puts( "wrote " + count.to_s + " individual HMM files to " + outdir )
67
68 end