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