| Class | Bio::PDB::Chain |
| In: |
lib/bio/db/pdb/chain.rb
(CVS)
|
| Parent: | Object |
Bio::PDB::Chain is a class to store a chain.
The object would contain some residues (Bio::PDB::Residue objects) and some heterogens (Bio::PDB::Heterogen objects).
| chain_id | -> | id |
| alias | ||
| chain_id | [RW] | Identifier of this chain |
| heterogens | [R] | heterogens in this chain |
| model | [R] | the model to which this chain belongs. |
| residues | [R] | residues in this chain |
Operator aimed to sort based on chain id
# File lib/bio/db/pdb/chain.rb, line 166 def <=>(other) return @chain_id <=> other.chain_id end
get the residue by id.
Compatibility Note: Now, you cannot find HETATMS in this method. To add "LIGAND" to the id is no longer available. To get heterogens, you must use get_heterogen_by_id.
# File lib/bio/db/pdb/chain.rb, line 77 def [](key) get_residue_by_id(key) end
gets an amino acid sequence of this chain from ATOM records
# File lib/bio/db/pdb/chain.rb, line 182 def aaseq unless defined? @aaseq string = "" last_residue_num = nil @residues.each do |residue| if last_residue_num and (x = (residue.resSeq.to_i - last_residue_num).abs) > 1 then x.times { string << 'X' } end tlc = residue.resName.capitalize olc = (Bio::AminoAcid.three2one(tlc) or 'X') string << olc end @aaseq = Bio::Sequence::AA.new(string) end @aaseq end
Add a heterogen (ligand) to this chain
# File lib/bio/db/pdb/chain.rb, line 100 def addLigand(ligand) raise "Expecting a Bio::PDB::Residue" unless ligand.is_a? Bio::PDB::Residue @heterogens.push(ligand) if @heterogens_hash[ligand.residue_id] then $stderr.puts "Warning: heterogen_id (residue_id) #{ligand.residue_id.inspect} is already used" if $VERBOSE else @heterogens_hash[ligand.residue_id] = ligand end self end
Add a residue to this chain
# File lib/bio/db/pdb/chain.rb, line 88 def addResidue(residue) raise "Expecting a Bio::PDB::Residue" unless residue.is_a? Bio::PDB::Residue @residues.push(residue) if @residues_hash[residue.residue_id] then $stderr.puts "Warning: residue_id #{residue.residue_id.inspect} is already used" if $VERBOSE else @residues_hash[residue.residue_id] = residue end self end
get the heterogen (ligand) by id
# File lib/bio/db/pdb/chain.rb, line 82 def get_heterogen_by_id(key) #@heterogens.find { |r| r.residue_id == key } @heterogens_hash[key] end
get the residue by id
# File lib/bio/db/pdb/chain.rb, line 67 def get_residue_by_id(key) #@residues.find { |r| r.residue_id == key } @residues_hash[key] end
returns a string containing human-readable representation of this object.
# File lib/bio/db/pdb/chain.rb, line 177 def inspect "#<#{self.class.to_s} id=#{chain_id.inspect} model.serial=#{(model ? model.serial : nil).inspect} residues.size=#{residues.size} heterogens.size=#{heterogens.size} aaseq=#{aaseq.inspect}>" end
rehash heterogens hash
# File lib/bio/db/pdb/chain.rb, line 130 def rehash_heterogens begin heterogens_bak = @heterogens heterogens_hash_bak = @heterogens_hash @heterogens = [] @heterogens_hash = {} heterogens_bak.each do |heterogen| self.addLigand(heterogen) end rescue RuntimeError @heterogens = heterogens_bak @heterogens_hash = heterogens_hash_bak raise end self end
rehash residues hash
# File lib/bio/db/pdb/chain.rb, line 112 def rehash_residues begin residues_bak = @residues residues_hash_bak = @residues_hash @residues = [] @residues_hash = {} residues_bak.each do |residue| self.addResidue(residue) end rescue RuntimeError @residues = residues_bak @residues_hash = residues_hash_bak raise end self end