Class | Bio::PDB::Chain |
In: |
lib/bio/db/pdb/chain.rb
|
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 166: def <=>(other) 167: return @chain_id <=> other.chain_id 168: 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 77: def [](key) 78: get_residue_by_id(key) 79: end
gets an amino acid sequence of this chain from ATOM records
# File lib/bio/db/pdb/chain.rb, line 182 182: def aaseq 183: unless defined? @aaseq 184: string = "" 185: last_residue_num = nil 186: @residues.each do |residue| 187: if last_residue_num and 188: (x = (residue.resSeq.to_i - last_residue_num).abs) > 1 then 189: x.times { string << 'X' } 190: end 191: tlc = residue.resName.capitalize 192: olc = (begin 193: Bio::AminoAcid.three2one(tlc) 194: rescue ArgumentError 195: nil 196: end || 'X') 197: string << olc 198: end 199: @aaseq = Bio::Sequence::AA.new(string) 200: end 201: @aaseq 202: end
Add a heterogen (ligand) to this chain
# File lib/bio/db/pdb/chain.rb, line 100 100: def addLigand(ligand) 101: raise "Expecting a Bio::PDB::Residue" unless ligand.is_a? Bio::PDB::Residue 102: @heterogens.push(ligand) 103: if @heterogens_hash[ligand.residue_id] then 104: $stderr.puts "Warning: heterogen_id (residue_id) #{ligand.residue_id.inspect} is already used" if $VERBOSE 105: else 106: @heterogens_hash[ligand.residue_id] = ligand 107: end 108: self 109: end
Add a residue to this chain
# File lib/bio/db/pdb/chain.rb, line 88 88: def addResidue(residue) 89: raise "Expecting a Bio::PDB::Residue" unless residue.is_a? Bio::PDB::Residue 90: @residues.push(residue) 91: if @residues_hash[residue.residue_id] then 92: $stderr.puts "Warning: residue_id #{residue.residue_id.inspect} is already used" if $VERBOSE 93: else 94: @residues_hash[residue.residue_id] = residue 95: end 96: self 97: end
get the heterogen (ligand) by id
# File lib/bio/db/pdb/chain.rb, line 82 82: def get_heterogen_by_id(key) 83: #@heterogens.find { |r| r.residue_id == key } 84: @heterogens_hash[key] 85: end
get the residue by id
# File lib/bio/db/pdb/chain.rb, line 67 67: def get_residue_by_id(key) 68: #@residues.find { |r| r.residue_id == key } 69: @residues_hash[key] 70: end
returns a string containing human-readable representation of this object.
# File lib/bio/db/pdb/chain.rb, line 177 177: def inspect 178: "#<#{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}>" 179: end
rehash heterogens hash
# File lib/bio/db/pdb/chain.rb, line 130 130: def rehash_heterogens 131: begin 132: heterogens_bak = @heterogens 133: heterogens_hash_bak = @heterogens_hash 134: @heterogens = [] 135: @heterogens_hash = {} 136: heterogens_bak.each do |heterogen| 137: self.addLigand(heterogen) 138: end 139: rescue RuntimeError 140: @heterogens = heterogens_bak 141: @heterogens_hash = heterogens_hash_bak 142: raise 143: end 144: self 145: end
rehash residues hash
# File lib/bio/db/pdb/chain.rb, line 112 112: def rehash_residues 113: begin 114: residues_bak = @residues 115: residues_hash_bak = @residues_hash 116: @residues = [] 117: @residues_hash = {} 118: residues_bak.each do |residue| 119: self.addResidue(residue) 120: end 121: rescue RuntimeError 122: @residues = residues_bak 123: @residues_hash = residues_hash_bak 124: raise 125: end 126: self 127: end