Skip to content

Instantly share code, notes, and snippets.

@sneumann
Last active September 19, 2022 14:34
Show Gist options
  • Save sneumann/959a6d205ea4ac73eaf1393da0ec0673 to your computer and use it in GitHub Desktop.
Save sneumann/959a6d205ea4ac73eaf1393da0ec0673 to your computer and use it in GitHub Desktop.
Install and benchmark a number of
install.packages("microbenchmark")
install.packages("plyr")
install.packages("rcdk")
install.packages("OrgMassSpecR")
install.packages("CHNOSZ")
BiocManager::install("Rdisop")
BiocManager::install("MetaboCoreUtils")
BiocManager::install("ChemmineR")
BiocManager::install("ChemmineOB")
BiocManager::install("enviPat")
## These require loading the packages explicitly
library(plyr)
library(CHNOSZ)
library(enviPat)
library(MetaboCoreUtils)
library(rcdk)
library(ChemmineR)
library(ChemmineOB)
library(OrgMassSpecR)
library(Rdisop)
## enviPat
data(isotopes)
benchmark <- microbenchmark::microbenchmark(
MetaboCoreUtils = MetaboCoreUtils::calculateMass("C2H6O"),
rcdk = rcdk::get.formula("C2H6O", charge = 0)@mass,
Rdisop = Rdisop::getMolecule("C2H6O")$exactmass,
ChemmineR = ChemmineR::exactMassOB(ChemmineR::smiles2sdf("CCO")),
OrgMassSpecR = OrgMassSpecR::MonoisotopicMass(formula = OrgMassSpecR::ListFormula("C2H6O)"), charge = 0),
CHNOSZ = CHNOSZ::mass("C2H6O"),
enviPat = enviPat::isopattern(isotopes, "C2H6O", charge=FALSE, verbose=FALSE)[[1]][1,1]
, times=1000L)
masses <- c(
MetaboCoreUtils=MetaboCoreUtils::calculateMass("C2H6O"),
rcdk=rcdk::get.formula("C2H6O", charge = 0)@mass,
Rdisop=Rdisop::getMolecule("C2H6O")$exactmass,
ChemmineR=ChemmineR::exactMassOB(ChemmineR::smiles2sdf("CCO")),
OrgMassSpecR=OrgMassSpecR::MonoisotopicMass(formula = OrgMassSpecR::ListFormula("C2H6O)"), charge = 0),
CHNOSZ=CHNOSZ::mass("C2H6O"),
enviPat=enviPat::isopattern(isotopes, "C2H6O", charge=FALSE, verbose=FALSE)[[1]][1,1]
)
options(digits=10)
t(t(sort(masses)))
summary(benchmark)[order(summary(benchmark)[,"median"]) , ]
clipr::write_clip(as.data.frame(summary(benchmark)[order(summary(benchmark)[,"median"]) , ] ))
@stanstrup
Copy link

Yeah. I think what this needs is some testing of what happens if you throw them odd things they might not be expecting like HCOOH, C3H2S0, Na+Cl-, H3O+, +H2O-, Fe4+, Cp3UCl, 2H2O (isotope notation I guess would vary), D2O.

@zachcp
Copy link

zachcp commented Sep 19, 2022

Updated code with some improvements to RCDK: https://gist.github.com/zachcp/ac410b900d67264ffb8061d2b8fa45bf

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment