/rcdk/inst/unitTests/runit.rcdk.R

http://github.com/rajarshi/cdkr · R · 143 lines · 110 code · 18 blank · 15 comment · 2 complexity · 0ef7d7c731872d3d424417d2f518fd50 MD5 · raw file

  1. test.is.connected <- function()
  2. {
  3. m <- parse.smiles('CCCC')[[1]]
  4. connected <- is.connected(m)
  5. checkTrue(connected)
  6. m <- parse.smiles('CCCC.CCCC')[[1]]
  7. connected <- is.connected(m)
  8. checkTrue(!connected)
  9. }
  10. test.get.largest <- function() {
  11. m <- parse.smiles('CCCC')[[1]]
  12. l <- get.largest.component(m)
  13. checkEquals(length(get.atoms(l)), 4)
  14. m <- parse.smiles('CCCC.CCCCCC.CC')[[1]]
  15. l <- get.largest.component(m)
  16. checkEquals(length(get.atoms(l)), 6)
  17. }
  18. test.atom.count <- function() {
  19. m <- parse.smiles("CCC")[[1]]
  20. natom <- get.atom.count(m)
  21. checkEquals(natom, 3)
  22. convert.implicit.to.explicit(m)
  23. natom <- get.atom.count(m)
  24. checkEquals(natom, 11)
  25. }
  26. test.is.neutral <- function() {
  27. m <- parse.smiles("CCC")[[1]]
  28. checkTrue(is.neutral(m))
  29. m <- parse.smiles('[O-]CC')[[1]]
  30. checkTrue(!is.neutral(m))
  31. }
  32. test.formula <- function() {
  33. formula_file <- system.file("molfiles/formulatest.mol", package = "rcdk")
  34. m <- load.molecules(formula_file)
  35. f1 <- get.mol2formula(m[[1]])
  36. checkEquals(f1@string, "C35H64N3O21P3S")
  37. m <- parse.smiles("C1(C(C(C(C(C1OP(=O)(O)OCC(COC(=O)CCCCCCCNC(=O)CCCCC2SCC3C2NC(=O)N3)OC(=O)CCCCCCC)O)OP(=O)(O)O)OP(=O)(O)O)O)O")[[1]]
  38. do.aromaticity(m)
  39. do.typing(m)
  40. do.isotopes(m)
  41. convert.implicit.to.explicit(m)
  42. f2 <- get.mol2formula(m)
  43. checkEquals(f2@string, "C35H64N3O21P3S")
  44. }
  45. test.desc.cats <- function() {
  46. cats <- get.desc.categories()
  47. print(cats)
  48. checkEquals(5, length(cats))
  49. }
  50. test.desc.names <- function() {
  51. cats <- get.desc.categories()
  52. for (acat in cats) {
  53. dnames <- get.desc.names(acat)
  54. checkTrue(length(dnames) > 0)
  55. }
  56. }
  57. test.desc.calc <- function() {
  58. dnames <- get.desc.names("topological")
  59. mols <- parse.smiles("c1ccccc1CCC")
  60. dvals <- eval.desc(mols, dnames[1])
  61. checkTrue(dvals[1,1] == 1)
  62. }
  63. test.exact.natural.mass <- function() {
  64. smiles <- c("CCNC1=NC(NC(C)C)=NC(Cl)=N1", # normal atrazine, DTXSID9020112
  65. "[2H]N(CC)C1=NC(=NC(Cl)=N1)N([2H])C(C)C", #2H on implicit locations, DTXSID40892885
  66. "[2H]C([2H])([2H])C([2H])([2H])NC1=NC(Cl)=NC(NC(C)C)=N1", #d5, DTXSID20486781
  67. "CC[15NH]C1=NC(NC(C)C)=NC(Cl)=N1", #15N DTXSID40583908
  68. "OC1=C(Br)C(Br)=C(Br)C(Br)=C1Br", #pentabromophenol, DTXSID9022079
  69. "C[Se]CC[C@H](N)C(O)=O" # Selenium-L-methionine, DTXSID8046824
  70. )
  71. #atrzine
  72. m <- parse.smiles(smiles[1])[[1]]
  73. do.aromaticity(m)
  74. do.typing(m)
  75. do.isotopes(m)
  76. convert.implicit.to.explicit(m)
  77. # Dashboard ref mass: 215.093773, 215.69
  78. checkEquals(get.exact.mass(m),215.0938, tolerance=1e-6)
  79. checkEquals(get.natural.mass(m),215.6835, tolerance=1e-6)
  80. #deuterium on exchangeable locations
  81. m <- parse.smiles(smiles[2])[[1]]
  82. do.aromaticity(m)
  83. do.typing(m)
  84. do.isotopes(m)
  85. convert.implicit.to.explicit(m)
  86. # Dashboard ref mass: 217.106327, 217.7
  87. checkEquals(get.exact.mass(m),217.1063, tolerance=1e-6)
  88. #checkEquals(get.natural.mass(m),215.6835) #this is wrong! It should be 217.7something
  89. #deuterium on fixed locations
  90. m <- parse.smiles(smiles[3])[[1]]
  91. do.aromaticity(m)
  92. do.typing(m)
  93. do.isotopes(m)
  94. convert.implicit.to.explicit(m)
  95. # Dashboard ref mass: 220.125157, 220.72
  96. checkEquals(get.exact.mass(m),220.1252, tolerance=1e-6)
  97. #checkEquals(get.natural.mass(m),215.6835) #this is wrong! It should be 220.7something
  98. #15N-atrazine
  99. m <- parse.smiles(smiles[4])[[1]]
  100. do.aromaticity(m)
  101. do.typing(m)
  102. do.isotopes(m)
  103. convert.implicit.to.explicit(m)
  104. # Dashboard ref mass: 216.090808, 216.68
  105. checkEqualsNumeric(get.exact.mass(m),216.0908, tolerance=1e-6)
  106. #checkEquals(get.natural.mass(m),215.6835) #this is wrong! It should be 216.68something
  107. #pentabromophenol, DTXSID9022079 - tricky as lots of Br shifts pattern
  108. m <- parse.smiles(smiles[5])[[1]]
  109. do.aromaticity(m)
  110. do.typing(m)
  111. do.isotopes(m)
  112. convert.implicit.to.explicit(m)
  113. # Dashboard ref mass: 483.59443, 488.593
  114. checkEquals(get.exact.mass(m),483.5944, tolerance=1e-6)
  115. checkEquals(get.natural.mass(m),488.5894, tolerance=1e-6)
  116. # Selenium-L-methionine, DTXSID8046824 - tricky as Se primary isotope not lowest mass
  117. m <- parse.smiles(smiles[6])[[1]]
  118. do.aromaticity(m)
  119. do.typing(m)
  120. do.isotopes(m)
  121. convert.implicit.to.explicit(m)
  122. # Dashboard ref mass: 196.995501, 196.119
  123. checkEquals(get.exact.mass(m),196.9955, tolerance=1e-6)
  124. checkEquals(get.natural.mass(m),196.1059, tolerance=1e-6) #quite a discrepancy in ref value
  125. }