1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140
|
#
# = bio/db/kegg/compound.rb - KEGG COMPOUND database class
#
# Copyright:: Copyright (C) 2001, 2002, 2004, 2007 Toshiaki Katayama <k@bioruby.org>
# License:: The Ruby License
#
# $Id:$
#
require 'bio/db'
require 'bio/db/kegg/common'
module Bio
class KEGG
# == Description
#
# Bio::KEGG::COMPOUND is a parser class for the KEGG COMPOUND database entry.
# KEGG COMPOUND is a chemical structure database.
#
# == References
#
# * http://www.genome.jp/kegg/compound/
#
class COMPOUND < KEGGDB
DELIMITER = RS = "\n///\n"
TAGSIZE = 12
include Common::DblinksAsHash
# Returns a Hash of the DB name and an Array of entry IDs in DBLINKS field.
def dblinks_as_hash; super; end if false #dummy for RDoc
alias dblinks dblinks_as_hash
include Common::PathwaysAsHash
# Returns a Hash of the pathway ID and name in PATHWAY field.
def pathways_as_hash; super; end if false #dummy for RDoc
alias pathways pathways_as_hash
# Creates a new Bio::KEGG::COMPOUND object.
# ---
# *Arguments*:
# * (required) _entry_: (String) single entry as a string
# *Returns*:: Bio::KEGG::COMPOUND object
def initialize(entry)
super(entry, TAGSIZE)
end
# ENTRY
def entry_id
field_fetch('ENTRY')[/\S+/]
end
# NAME
def names
field_fetch('NAME').split(/\s*;\s*/)
end
# The first name recorded in the NAME field.
def name
names.first
end
# FORMULA
def formula
field_fetch('FORMULA')
end
# MASS
def mass
field_fetch('MASS').to_f
end
# REMARK
def remark
field_fetch('REMARK')
end
# GLYCAN
def glycans
unless @data['GLYCAN']
@data['GLYCAN'] = fetch('GLYCAN').split(/\s+/)
end
@data['GLYCAN']
end
# REACTION
def reactions
unless @data['REACTION']
@data['REACTION'] = fetch('REACTION').split(/\s+/)
end
@data['REACTION']
end
# RPAIR
def rpairs
unless @data['RPAIR']
@data['RPAIR'] = fetch('RPAIR').split(/\s+/)
end
@data['RPAIR']
end
# PATHWAY
def pathways_as_strings
lines_fetch('PATHWAY')
end
# ENZYME
def enzymes
unless @data['ENZYME']
field = fetch('ENZYME')
if /\(/.match(field) # old version
@data['ENZYME'] = field.scan(/\S+ \(\S+\)/)
else
@data['ENZYME'] = field.scan(/\S+/)
end
end
@data['ENZYME']
end
# DBLINKS
def dblinks_as_strings
lines_fetch('DBLINKS')
end
# ATOM, BOND
def kcf
return "#{get('ATOM')}#{get('BOND')}"
end
# COMMENT
def comment
field_fetch('COMMENT')
end
end # COMPOUND
end # KEGG
end # Bio
|