R/IO.R

Defines functions read_mol parse_smiles

Documented in parse_smiles read_mol

#' parse_smiles
#'
#' simple smiles parser
#'
#' @param smi Required. A smiles string
#' @param generatecoords Optional. Default \code{TRUE}. Whether
#'  to generate coordinates from the smiles
#' @param kekulise Optional. Boolean. Default \code{TRUE}
#' @return an IAtomContainer
#' @export
#'
parse_smiles <- function(smi, generatecoords = TRUE, kekulise = TRUE) {
  SmilesParser <- J("org.openscience.cdk.smiles.SmilesParser")
  SChemObjectBuilder <- J("org.openscience.cdk.silent.SilentChemObjectBuilder")
  StructureDiagramGenerator <- J("org.openscience.cdk.layout.StructureDiagramGenerator")

  sinst <- SChemObjectBuilder$getInstance()
  sp <- new(SmilesParser, sinst)
  sp$kekulise(kekulise)

  mol <- sp$parseSmiles(smi)

  if (generatecoords) {
    sdg <- new(StructureDiagramGenerator)
    sdg$setMolecule(mol)
    sdg$generateCoordinates()
    mol <- sdg$getMolecule()
  }

  mol
}

#' read_mol
#'
#' Read a Molfile and return an `AtomContainer`
#'
#' @param molfile Required. A filepath to a MOLfile.
#' @return an AtomContainer
#' @export
read_mol <- function(molfile) {
  jAtomContainer <- J("org.openscience.cdk.AtomContainer")

  jfileobj <- .jnew("java.io.File", molfile)
  jreaderobj <- .jnew("java.io.FileReader", jfileobj)
  jmolreader <- .jnew("org.openscience.cdk.io.MDLV2000Reader")
  AC <- .jnew("org.openscience.cdk.AtomContainer")

  jmolreader$setReader(jreaderobj)
  jmolreader$read(AC)
}
CDK-R/depict documentation built on March 6, 2024, 7:19 a.m.