| Class | Bio::PDB::ChemicalComponent |
| In: |
lib/bio/db/pdb/chemicalcomponent.rb
|
| Parent: | Object |
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
| DELIMITER | = | RS = "\n\n" | delimiter for reading via Bio::FlatFile |
| data | [R] | all records in this entry as an array. |
| hash | [R] | all records in this entry as an hash accessed by record names. |
Creates a new object.
# File lib/bio/db/pdb/chemicalcomponent.rb, line 123
123: def initialize(str)
124: @data = str.split(/[\r\n]+/)
125: @hash = {}
126:
127: #Flag to say whether the current line is part of a continuation
128: cont = false
129:
130: #Goes through each line and replace that line with a PDB::Record
131: @data.collect! do |line|
132: #Go to next if the previous line was contiunation able, and
133: #add_continuation returns true. Line is added by add_continuation
134: next if cont and cont = cont.add_continuation(line)
135:
136: #Make the new record
137: f = Record.get_record_class(line).new.initialize_from_string(line)
138: #p f
139: #Set cont
140: cont = f if f.continue?
141: #Set the hash to point to this record either by adding to an
142: #array, or on it's own
143: key = f.record_name
144: if a = @hash[key] then
145: a << f
146: else
147: @hash[key] = [ f ]
148: end
149: f
150: end #each
151: #At the end we need to add the final model
152: @data.compact!
153: end
Returns an hash of bindings of atoms. Note that each white spaces are stripped for atom symbols.
# File lib/bio/db/pdb/chemicalcomponent.rb, line 192
192: def conect
193: unless defined? @conect
194: c = {}
195: @hash["CONECT"].each do |e|
196: key = e.name.to_s.strip
197: unless key.empty?
198: val = e.other_atoms.collect { |x| x.strip }
199: #warn "Warning: #{key}: atom name conflict?" if c[key]
200: c[key] = val
201: end
202: end
203: @conect = c
204: end
205: @conect
206: end
The chemical formula of the chemical component. Returns a string (or nil, if the entry is something wrong).
# File lib/bio/db/pdb/chemicalcomponent.rb, line 186
186: def formul
187: @hash["FORMUL"][0].text
188: end
The name of the chemical component. Returns a string (or nil, if the entry is something wrong).
# File lib/bio/db/pdb/chemicalcomponent.rb, line 180
180: def hetnam
181: @hash["HETNAM"][0].text
182: end
Synonyms for the comical component. Returns an array of strings.
# File lib/bio/db/pdb/chemicalcomponent.rb, line 167
167: def hetsyn
168: unless defined? @hetsyn
169: if r = @hash["HETSYN"]
170: @hetsyn = r[0].hetSynonyms.to_s.split(/\;\s*/)
171: else
172: return []
173: end
174: end
175: @hetsyn
176: end
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[‘CONECT’]
# File lib/bio/db/pdb/chemicalcomponent.rb, line 217
217: def record(name = nil)
218: name ? @hash[name] : @hash
219: end