Convert atom names/types into atomic masses.

# S3 method for default
atom2mass(x, mass.custom=NULL, elety.custom=NULL,
                            grpby=NULL, rescue=TRUE, ...) 
# S3 method for pdb
atom2mass(pdb, inds=NULL, mass.custom=NULL,
                        elety.custom=NULL, grpby=NULL, rescue=TRUE, ...)



a character vector containing atom names/types to be converted.


a customized data.frame containing atomic symbols and corresponding masses.


a customized data.frame containing atom names/types and corresponding atomic symbols.


a ‘factor’, as returned by as.factor, used to group the atoms.


logical, if TRUE the atomic symbols will be mapped to the first character of the atom names/types.


an object of class ‘pdb’ for which elety will be converted.


an object of class ‘select’ indicating a subset of the pdb object to be used (see and trim.pdb).




The default method first convert atom names/types into atomic symbols using the atom2ele function. Then, atomic symbols are searched in the elements data set and their corresponding masses are returned. If mass.custom is specified it is combined with elements (using rbind) before searching. Therefore, mass.custom must have columns named symb and mass (see examples). If grpby is specified masses are splitted (using split) to compute the mass of groups of atoms defined by grpby.

The S3 method for object of class ‘pdb’, pass pdb$atom$elety to the default method.


Return a numeric vector of masses.


Julien Ide, Lars Skjaerven

See also


atom.names <- c("CA", "O", "N", "OXT") atom2mass(atom.names)
#> [1] 12.0107 15.9994 14.0067 15.9994
# \donttest{ # PDB server connection required - testing excluded ## Get atomic symbols from a PDB object with a customized data set pdb <- read.pdb("3RE0", verbose=FALSE)
#> Note: Accessing on-line PDB file
#> Warning: /var/folders/xf/qznxnpf91vb1wm4xwgnbt0xr0000gn/T//Rtmp9oBdbc/3RE0.pdb exists. Skipping download
#> PDB has ALT records, taking A only, rm.alt=TRUE
inds <-, resno=201, verbose=FALSE) ## selected atoms print(pdb$atom$elety[inds$atom])
#> [1] "PT1" "N1" "N2" "CL2"
## default will map CL2 to C atom2mass(pdb, inds)
#> Warning: #> mapped element PT1 to Pt #> mapped element N1 to N #> mapped element N2 to N #> mapped element CL2 to Cl
#> [1] 195.0780 14.0067 14.0067 35.4530
## map element CL2 correctly to Cl myelety <- data.frame(name = c("CL2","PT1","N1","N2"), symb = c("Cl","Pt","N","N")) atom2mass(pdb, inds, elety.custom = myelety)
#> [1] 195.0780 14.0067 14.0067 35.4530
## custom masses mymasses <- data.frame(symb = c("Cl","Pt"), mass = c(35.45, 195.08)) atom2mass(pdb, inds, elety.custom = myelety, mass.custom = mymasses)
#> [1] 195.0800 14.0067 14.0067 35.4500
# }