Class: Bio::PDB::ChemicalComponent

Inherits:
Object
  • Object
show all
Defined in:
lib/bio/db/pdb/chemicalcomponent.rb

Overview

Bio::PDB::ChemicalComponet is a parser for a entry of the PDB Chemical Component Dictionary.

The PDB Chemical Component Dictionary is available in deposit.pdb.org/het_dictionary.txt

Defined Under Namespace

Classes: Record

Constant Summary collapse

DELIMITER =

delimiter for reading via Bio::FlatFile

RS = "\n\n"

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(str) ⇒ ChemicalComponent

Creates a new object.


124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
# File 'lib/bio/db/pdb/chemicalcomponent.rb', line 124

def initialize(str)
  @data = str.split(/[\r\n]+/)
  @hash = {}

  #Flag to say whether the current line is part of a continuation
  cont = false
  
  #Goes through each line and replace that line with a PDB::Record
  @data.collect! do |line|
    #Go to next if the previous line was contiunation able, and
    #add_continuation returns true. Line is added by add_continuation
    next if cont and cont = cont.add_continuation(line)

    #Make the new record
    f = Record.get_record_class(line).new.initialize_from_string(line)
    #p f
    #Set cont
    cont = f if f.continue?
    #Set the hash to point to this record either by adding to an
    #array, or on it's own
    key = f.record_name
    if a = @hash[key] then
      a << f
    else
      @hash[key] = [ f ]
    end
    f
  end #each
  #At the end we need to add the final model
  @data.compact!
end

Instance Attribute Details

#dataObject (readonly)

all records in this entry as an array.


157
158
159
# File 'lib/bio/db/pdb/chemicalcomponent.rb', line 157

def data
  @data
end

#hashObject (readonly)

all records in this entry as an hash accessed by record names.


160
161
162
# File 'lib/bio/db/pdb/chemicalcomponent.rb', line 160

def hash
  @hash
end

Instance Method Details

#conectObject

Returns an hash of bindings of atoms. Note that each white spaces are stripped for atom symbols.


193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
# File 'lib/bio/db/pdb/chemicalcomponent.rb', line 193

def conect
  unless defined? @conect
    c = {}
    @hash["CONECT"].each do |e|
      key = e.name.to_s.strip
      unless key.empty?
        val = e.other_atoms.collect { |x| x.strip }
        #warn "Warning: #{key}: atom name conflict?" if c[key]
        c[key] = val
      end
    end
    @conect = c
  end
  @conect
end

#entry_idObject

Identifier written in the first line “RESIDUE” record. (e.g. CMP)


163
164
165
# File 'lib/bio/db/pdb/chemicalcomponent.rb', line 163

def entry_id
  @data[0].hetID
end

#formulObject

The chemical formula of the chemical component. Returns a string (or nil, if the entry is something wrong).


187
188
189
# File 'lib/bio/db/pdb/chemicalcomponent.rb', line 187

def formul
  @hash["FORMUL"][0].text
end

#hetnamObject

The name of the chemical component. Returns a string (or nil, if the entry is something wrong).


181
182
183
# File 'lib/bio/db/pdb/chemicalcomponent.rb', line 181

def hetnam
  @hash["HETNAM"][0].text
end

#hetsynObject

Synonyms for the comical component. Returns an array of strings.


168
169
170
171
172
173
174
175
176
177
# File 'lib/bio/db/pdb/chemicalcomponent.rb', line 168

def hetsyn
  unless defined? @hetsyn
    if r = @hash["HETSYN"]
      @hetsyn = r[0].hetSynonyms.to_s.split(/\;\s*/)
    else
      return []
    end
  end
  @hetsyn
end

#record(name = nil) ⇒ Object

Gets all records whose record type is name. Returns an array of Bio::PDB::Record::* objects.

if name is nil, returns hash storing all record data.

Example: p pdb.record('CONECT') p pdb.record


218
219
220
# File 'lib/bio/db/pdb/chemicalcomponent.rb', line 218

def record(name = nil)
  name ? @hash[name] : @hash
end