5
5
if (is.null(dval ) || is.na(dval )) return (NA )
6
6
}
7
7
8
- exception <- .jcall(dval , " Ljava/lang/Exception;" , " getException" )
8
+ exception <- tryCatch({
9
+ .jcall(dval , " Ljava/lang/Exception;" , " getException" )},
10
+ error = function (e ) {
11
+ e
12
+ })
9
13
if (! is.null(exception )) {
10
14
warning(exception $ getMessage())
11
15
return (rep(NA , nexpected ))
12
16
}
13
-
17
+
14
18
nval <- numeric ()
15
19
if (! inherits(dval ,' jobjRef' ) && is.na(dval )) {
16
20
return (NA )
17
21
}
18
-
22
+
19
23
result <- .jcall(dval , " Lorg/openscience/cdk/qsar/result/IDescriptorResult;" , " getValue" )
20
24
methods <- .jmethods(result )
21
25
24
28
len <- .jcall(result , " I" , " length" )
25
29
for (i in 1 : len ) nval [i ] <- .jcall(result , " D" , " get" , as.integer(i - 1 ))
26
30
} else if (" public int org.openscience.cdk.qsar.result.IntegerArrayResult.get(int)" %in% methods ) {
27
- result <- .jcast(result , " org/openscience/cdk/qsar/result/IntegerArrayResult" )
31
+ result <- .jcast(result , " org/openscience/cdk/qsar/result/IntegerArrayResult" )
28
32
len <- .jcall(result , " I" , " length" )
29
- for (i in 1 : len ) nval [i ] <- .jcall(result , " I" , " get" , as.integer(i - 1 ))
33
+ for (i in 1 : len ) nval [i ] <- .jcall(result , " I" , " get" , as.integer(i - 1 ))
30
34
} else if (" public int org.openscience.cdk.qsar.result.IntegerResult.intValue()" %in% methods ) {
31
- result <- .jcast(result , " org/openscience/cdk/qsar/result/IntegerResult" )
35
+ result <- .jcast(result , " org/openscience/cdk/qsar/result/IntegerResult" )
32
36
nval <- .jcall(result , " I" , " intValue" )
33
37
} else if (" public double org.openscience.cdk.qsar.result.DoubleResult.doubleValue()" %in% methods ) {
34
- result <- .jcast(result , " org/openscience/cdk/qsar/result/DoubleResult" )
35
- nval <- .jcall(result , " D" , " doubleValue" )
38
+ result <- .jcast(result , " org/openscience/cdk/qsar/result/DoubleResult" )
39
+ nval <- .jcall(result , " D" , " doubleValue" )
36
40
} else if (" public boolean org.openscience.cdk.qsar.result.BooleanResult.booleanValue()" %in% methods ) {
37
- result <- .jcast(result , " org/openscience/cdk/qsar/result/BooleanResult" )
38
- nval <- .jcall(result , " Z" , " booleanValue" )
41
+ result <- .jcast(result , " org/openscience/cdk/qsar/result/BooleanResult" )
42
+ nval <- .jcall(result , " Z" , " booleanValue" )
39
43
}
40
44
41
45
return (nval )
50
54
if (type == ' molecular' ) {
51
55
interface <- J(" org.openscience.cdk.qsar.IMolecularDescriptor" )
52
56
} else if (type == ' atomic' ) {
53
- interface <- J(" org.openscience.cdk.qsar.IAtomicDescriptor" )
57
+ interface <- J(" org.openscience.cdk.qsar.IAtomicDescriptor" )
54
58
} else if (type == ' bond' ) {
55
- interface <- J(" org.openscience.cdk.qsar.IBondDescriptor" )
59
+ interface <- J(" org.openscience.cdk.qsar.IBondDescriptor" )
56
60
}
57
61
dklass <- interface @ jobj
58
62
dcob <- get.chem.object.builder()
79
83
}
80
84
81
85
# ' Get descriptor class names
82
- # '
86
+ # '
83
87
# ' @param type A string indicating which class of descriptors to return. Specifying
84
88
# ' `"all"` will return class names for all molecular descriptors. Options include
85
89
# ' * topological
@@ -108,8 +112,8 @@ get.desc.names <- function(type = "all") {
108
112
}
109
113
110
114
# ' List available descriptor categories
111
- # '
112
- # ' @return A character vector listing available descriptor categories. This can be
115
+ # '
116
+ # ' @return A character vector listing available descriptor categories. This can be
113
117
# ' used in \link{get.desc.names}
114
118
# ' @seealso \link{get.desc.names}
115
119
# ' @author Rajarshi Guha (\email{rajarshi.guha@@gmail.com})
@@ -121,7 +125,7 @@ get.desc.categories <- function() {
121
125
}
122
126
123
127
# ' Compute descriptor values for a set of molecules
124
- # '
128
+ # '
125
129
# ' @param molecules A `list` of molecule objects
126
130
# ' @param which.desc A character vector listing descriptor class names
127
131
# ' @param verbose If `TRUE`, verbose output
@@ -144,14 +148,14 @@ eval.desc <- function(molecules, which.desc, verbose = FALSE) {
144
148
}
145
149
146
150
dcob <- get.chem.object.builder()
147
-
151
+
148
152
if (length(which.desc ) == 1 ) {
149
153
desc <- .jnew(which.desc )
150
154
.jcall(desc , " V" , " initialise" , dcob )
151
-
155
+
152
156
dnames <- .jcall(desc , " [Ljava/lang/String;" , " getDescriptorNames" )
153
157
dnames <- gsub(' -' , ' .' , dnames )
154
-
158
+
155
159
descvals <- lapply(molecules , function (a ,b ) {
156
160
val <- tryCatch({.jcall(b , " Lorg/openscience/cdk/qsar/DescriptorValue;" , " calculate" , a )},
157
161
warning = function (e ) return (NA ),
@@ -161,7 +165,7 @@ eval.desc <- function(molecules, which.desc, verbose = FALSE) {
161
165
162
166
vals <- lapply(descvals , .get.desc.values , nexpected = length(dnames ))
163
167
vals <- data.frame (do.call(' rbind' , vals ))
164
- names(vals ) <- dnames
168
+ names(vals ) <- dnames
165
169
return (vals )
166
170
} else {
167
171
counter <- 1
@@ -172,7 +176,7 @@ eval.desc <- function(molecules, which.desc, verbose = FALSE) {
172
176
, " \n " ) }
173
177
desc <- .jnew(desc )
174
178
.jcall(desc , " V" , " initialise" , dcob )
175
-
179
+
176
180
dnames <- .jcall(desc , " [Ljava/lang/String;" , " getDescriptorNames" )
177
181
dnames <- gsub(' -' , ' .' , dnames )
178
182
@@ -183,16 +187,16 @@ eval.desc <- function(molecules, which.desc, verbose = FALSE) {
183
187
vals <- lapply(descvals , .get.desc.values , nexpected = length(dnames ))
184
188
vals <- data.frame (do.call(' rbind' , vals ))
185
189
186
-
190
+
187
191
if (length(vals ) == 1 && any(is.na(vals ))) {
188
192
189
193
vals <- as.data.frame(matrix (NA , nrow = 1 , ncol = length(dnames )))
190
194
}
191
-
195
+
192
196
names(vals ) <- dnames
193
197
# # idx <- which(is.na(names(vals)))
194
198
# # if (length(idx) > 0) vals <- vals[,-idx]
195
-
199
+
196
200
dl [[counter ]] <- vals
197
201
counter <- counter + 1
198
202
}
@@ -201,7 +205,7 @@ eval.desc <- function(molecules, which.desc, verbose = FALSE) {
201
205
}
202
206
203
207
# ' Get class names for atomic descriptors
204
- # '
208
+ # '
205
209
# ' @param type A string indicating which class of descriptors to return. Specifying
206
210
# ' `"all"` will return class names for all molecular descriptors. Options include
207
211
# ' * topological
@@ -220,7 +224,7 @@ get.atomic.desc.names <- function(type = "all") {
220
224
}
221
225
222
226
# ' Compute descriptors for each atom in a molecule
223
- # '
227
+ # '
224
228
# ' @param molecule A molecule object
225
229
# ' @param which.desc A character vector of atomic descriptor class names
226
230
# ' @param verbose Optional. Default \code{FALSE}. Toggle verbosity.
@@ -250,20 +254,20 @@ eval.atomic.desc <- function(molecule, which.desc, verbose = FALSE) {
250
254
}
251
255
return (dval )
252
256
})
253
-
257
+
254
258
dnames <- NULL
255
259
if (inherits(descvals [[1 ]], " jobjRef" )) {
256
260
dnames <- .jcall(descvals [[1 ]], " [Ljava/lang/String;" , " getNames" )
257
261
} else {
258
262
dnames <- gsub(' org.openscience.cdk.qsar.descriptors.atomic.' , ' ' , desc )
259
263
}
260
- if (verbose )
264
+ if (verbose )
261
265
cat(" \t " , " computed" , length(dnames ), " descriptor values\n " )
262
-
266
+
263
267
vals <- lapply(descvals , .get.desc.values , nexpected = length(dnames ))
264
268
vals <- data.frame (do.call(' rbind' , vals ))
265
269
names(vals ) <- dnames
266
-
270
+
267
271
dl [[counter ]] <- vals
268
272
counter <- counter + 1
269
273
}
@@ -320,8 +324,8 @@ get.xlogp <- function(molecule) {
320
324
}
321
325
322
326
# ' Compute volume of a molecule
323
- # '
324
- # ' This method does not require 3D coordinates. As a result its an
327
+ # '
328
+ # ' This method does not require 3D coordinates. As a result its an
325
329
# ' approximation
326
330
# ' @param molecule A molecule object
327
331
# ' @return A double value representing the volume
0 commit comments