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
27
28     end
29
30
31     def parse( lines )
32       de = []
33       dr = []
34       id = nil
35       lines.each do | line |
36
37         if line.include?( ID ) && line.index( ID ) == 0
38           id = line.split[ 1 ]
39         elsif id != nil
40           if line.include?( LAST ) && line.index( LAST ) == 0
41             e = UniprotEntry.new
42             e.id = id
43             e.de = de
44             e.dr = dr
45             return e
46           else
47             if line.include?( DE ) && line.index( DE ) == 0
48               add( line, de )
49             elsif line.include?( DR ) && line.index( DR ) == 0
50               add( line, dr )
51             end
52           end
53         end
54       end
55       return nil
56     end
57
58     private
59
60     def add( line, ary )
61       line =~/[A-Z]{2}\s+(.+)/
62       ary << $1
63     end
64
65
66   end # class UniprotParser
67
68   class UniprotEntry
69
70     attr_accessor :id
71     attr_accessor :ac
72     attr_accessor :de
73     attr_accessor :gn
74     attr_accessor :os
75     attr_accessor :ox
76     attr_accessor :dr
77     attr_accessor :pe
78     attr_accessor :kw
79
80     def get_pdb_ids
81       ids = []
82       if dr != nil
83         dr.each do | dr |
84           if dr != nil
85             if dr =~ /PDB;\s+([A-Z0-9]{4});/
86               ids << $1
87             end
88           end
89         end
90       end
91       ids
92     end
93
94     def get_go_descriptions
95       gos = []
96       if dr != nil
97         dr.each do | dr |
98           if dr != nil
99             if dr =~ /GO;\s+GO:\d+(.+);\s+([^;]+)/
100               gos << $1
101             end
102           end
103         end
104       end
105       gos
106     end
107
108     def get_full_name
109      # DE   RecName: Full=Apoptosis regulator Bcl-2;
110     end
111
112
113      def get_reactome_descriptions
114       s = []
115       if dr != nil
116         dr.each do | dr |
117           if dr != nil
118             if dr =~ /Reactome;\s+REACT_\d+;\s+([^.]+)/
119               s << $1
120             end
121           end
122         end
123       end
124       s
125     end
126
127
128   end
129
130
131
132
133
134
135
136
137 end # module Evoruby