in progress
[jalview.git] / forester / ruby / evoruby / lib / evo / io / parser / uniprot_parser.rb
1 #
2 # = lib/evo/io/parser/uniprot_parser - UniprotParser class
3 #
4 # Copyright::  Copyright (C) 2012 Christian M. Zmasek
5 # License::    GNU Lesser General Public License (LGPL)
6 #
7 # $Id:  Exp $
8 #
9 # last modified: 121003
10
11
12 #require 'iconv'
13
14
15 require 'lib/evo/util/util'
16
17 module Evoruby
18
19   class UniprotParser
20
21     ID = "ID"
22     DE = "DE"
23     DR = "DR"
24     LAST = '//'
25
26     def initialize file
27       Util.check_file_for_readability file
28       @file = file
29     end
30
31    
32
33     def parse( ids )
34       #ic = Iconv.new( 'UTF-8//IGNORE', 'UTF-8' )
35       entries = []
36       de = []
37       dr = []
38       read = false
39       File.open( @file ).each do | line |
40         if line.index( ID ) == 0
41           puts line 
42           ids.each do | id |
43             puts " " + id
44             if line.index( id ) == 0
45               read = true
46               break
47             end
48           end
49         end
50         if read
51           if line.index LAST == 0
52             read = false
53             e = UniprotEntry.new
54             e.de = de
55             e.dr = dr
56             entries[ id ] = e
57             de = []
58             dr = []
59           else
60             if line.index DE == 0
61               add( line, de )
62             elsif line.index DR == 0
63               add( line, dr )
64             end
65           end
66         end
67       end
68       entries
69     end
70
71     private
72
73     def add( line, ary )
74       line =~/[A-Z]{2}\s+(.+)/
75       ary << $1
76     end
77
78
79   end # class UniprotParser
80
81   class UniprotEntry
82
83     attr_accessor :id
84     attr_accessor :ac
85     attr_accessor :de
86     attr_accessor :gn
87     attr_accessor :os
88     attr_accessor :ox
89     attr_accessor :dr
90     attr_accessor :pe
91     attr_accessor :kw
92
93   end
94
95
96 end # module Evoruby