CDK-R / cdkr

Integrating R and the CDK
https://cdk-r.github.io/cdkr/
42 stars 27 forks source link

Problem with isvalid.formula #96

Open arthuc01 opened 5 years ago

arthuc01 commented 5 years ago

This works....

> formula <- get.formula('C6H19KN2O10', charge = 1)
> isvalid.formula(formula,rule=c("nitrogen","RDBE"))
[1] FALSE

But when I try....

> formula <- get.formula('C5H13KN9O5', charge = 1)
> isvalid.formula(formula,rule=c("nitrogen","RDBE"))

Error in .jcall(rdbeRule, "D", "validate", molecularFormula) : 
  java.lang.NullPointerException

I'm trying to validate formulae generated with generate.formula

library(rcdk)

molFormula <- function(mz){
  ppm = (2/1000000)*mz
  temp <- generate.formula(mz, window=(2/1000000)*mz,
                            elements=list(c("C",0,120),
                                          c("H",0,180),
                                          c("N",0,20),
                                          c("O",0,20),
                                          c("S",0,20),
                                          c("Na",0,1),
                                          c("K",0,1)
                                          ),
                            validation=FALSE, charge =1)
  df <- data.frame(matrix(ncol = 4, nrow = 0))
  x <- c("formula", "mass", "charge", "ppmError")
  colnames(df) <- x

  for (i in temp) {
    print(i@string)
    formula <- get.formula(i@string, charge = 1)
    print(isvalid.formula(formula,rule=c("nitrogen","RDBE")))

  }
  return (df)
}

mz <-318.06768

formulae <- molFormula(mz)