class Bio::PDB::Record::ATOM
ATOM
record class
Attributes
anisou[RW]
ANISOU
record
residue[RW]
residue the atom belongs to.
sigatm[RW]
SIGATM record
ter[RW]
TER record
Public Instance Methods
<=>(other)
click to toggle source
Sorts based on serial numbers
# File lib/bio/db/pdb/pdb.rb 974 def <=>(other) 975 return serial <=> other.serial 976 end
do_parse()
click to toggle source
# File lib/bio/db/pdb/pdb.rb 978 def do_parse 979 return self if @parsed or !@str 980 self.serial = @str[6..10].to_i 981 self.name = @str[12..15].strip 982 self.altLoc = @str[16..16] 983 self.resName = @str[17..19].strip 984 self.chainID = @str[21..21] 985 self.resSeq = @str[22..25].to_i 986 self.iCode = @str[26..26].strip 987 self.x = @str[30..37].to_f 988 self.y = @str[38..45].to_f 989 self.z = @str[46..53].to_f 990 self.occupancy = @str[54..59].to_f 991 self.tempFactor = @str[60..65].to_f 992 self.segID = @str[72..75].to_s.rstrip 993 self.element = @str[76..77].to_s.lstrip 994 self.charge = @str[78..79].to_s.strip 995 @parsed = true 996 self 997 end
to_a()
click to toggle source
Returns an array of the xyz positions
# File lib/bio/db/pdb/pdb.rb 969 def to_a 970 [ x, y, z ] 971 end
to_s()
click to toggle source
# File lib/bio/db/pdb/pdb.rb 1046 def to_s 1047 atomname = justify_atomname 1048 sprintf("%-6s%5d %-4s%-1s%3s %-1s%4d%-1s %8.3f%8.3f%8.3f%6.2f%6.2f %-4s%2s%-2s\n", 1049 self.record_name, 1050 self.serial, 1051 atomname, 1052 self.altLoc, 1053 self.resName, 1054 self.chainID, 1055 self.resSeq, 1056 self.iCode, 1057 self.x, self.y, self.z, 1058 self.occupancy, 1059 self.tempFactor, 1060 self.segID, 1061 self.element, 1062 self.charge) 1063 end
xyz()
click to toggle source
Returns a Coordinate
class instance of the xyz positions
# File lib/bio/db/pdb/pdb.rb 964 def xyz 965 Coordinate[ x, y, z ] 966 end
Private Instance Methods
justify_atomname()
click to toggle source
# File lib/bio/db/pdb/pdb.rb 999 def justify_atomname 1000 atomname = self.name.to_s 1001 return atomname[0, 4] if atomname.length >= 4 1002 case atomname.length 1003 when 0 1004 return ' ' 1005 when 1 1006 return ' ' + atomname + ' ' 1007 when 2 1008 if /\A[0-9]/ =~ atomname then 1009 return sprintf('%-4s', atomname) 1010 elsif /[0-9]\z/ =~ atomname then 1011 return sprintf(' %-3s', atomname) 1012 end 1013 when 3 1014 if /\A[0-9]/ =~ atomname then 1015 return sprintf('%-4s', atomname) 1016 end 1017 end 1018 # ambiguous case for two- or three-letter name 1019 elem = self.element.to_s.strip 1020 if elem.size > 0 and i = atomname.index(elem) then 1021 if i == 0 and elem.size == 1 then 1022 return sprintf(' %-3s', atomname) 1023 else 1024 return sprintf('%-4s', atomname) 1025 end 1026 end 1027 if self.kind_of?(HETATM) then 1028 if /\A(B[^AEHIKR]|C[^ADEFLMORSU]|F[^EMR]|H[^EFGOS]|I[^NR]|K[^R]|N[^ABDEIOP]|O[^S]|P[^ABDMORTU]|S[^BCEGIMNR]|V|W|Y[^B])/ =~ 1029 atomname then 1030 return sprintf(' %-3s', atomname) 1031 else 1032 return sprintf('%-4s', atomname) 1033 end 1034 else # ATOM 1035 if /\A[CHONSP]/ =~ atomname then 1036 return sprintf(' %-3s', atomname) 1037 else 1038 return sprintf('%-4s', atomname) 1039 end 1040 end 1041 # could not be reached here 1042 raise 'bug!' 1043 end