Browse code

Merge pull request #49 from SydneyBioX/master

- Prepended S4Vectors:: to mcols calls where necessary for it to work…

Dario Strbenac authored on 24/10/2022 10:21:11 • GitHub committed on 24/10/2022 10:21:11
Showing 4 changed files

... ...
@@ -116,7 +116,7 @@ setMethod("crossValidate", "DataFrame",
116 116
               }
117 117
               
118 118
               # Which data-types or data-views are present?
119
-              assayIDs <- unique(mcols(measurements)$assay)
119
+              assayIDs <- unique(S4Vectors::mcols(measurements)$assay)
120 120
               if(is.null(assayIDs)) assayIDs <- 1
121 121
 
122 122
               # Check that other variables are in the right format and fix
... ...
@@ -158,7 +158,7 @@ setMethod("crossValidate", "DataFrame",
158 158
                                   # Loop over selectors
159 159
                                   set.seed(seed)
160 160
                                   measurementsUse <- measurements
161
-                                  if(assayIndex != 1) measurementsUse <- measurements[, mcols(measurements)[, "assay"] == assayIndex, drop = FALSE]
161
+                                  if(assayIndex != 1) measurementsUse <- measurements[, S4Vectors::mcols(measurements)[, "assay"] == assayIndex, drop = FALSE]
162 162
                                   CV(
163 163
                                       measurements = measurementsUse, outcome = outcome,
164 164
                                       assayIDs = assayIndex,
... ...
@@ -196,7 +196,7 @@ setMethod("crossValidate", "DataFrame",
196 196
                   if(!is.list(assayCombinations) && assayCombinations[1] == "all") assayCombinations <- do.call("c", sapply(seq_along(assayIDs), function(nChoose) combn(assayIDs, nChoose, simplify = FALSE)))
197 197
 
198 198
                   result <- sapply(assayCombinations, function(assayIndex){
199
-                      CV(measurements = measurements[, mcols(measurements)[["assay"]] %in% assayIndex],
199
+                      CV(measurements = measurements[, S4Vectors::mcols(measurements)[["assay"]] %in% assayIndex],
200 200
                          outcome = outcome, assayIDs = assayIndex,
201 201
                          nFeatures = nFeatures[assayIndex],
202 202
                          selectionMethod = selectionMethod[assayIndex],
... ...
@@ -229,7 +229,7 @@ setMethod("crossValidate", "DataFrame",
229 229
                   }
230 230
 
231 231
                   result <- sapply(assayCombinations, function(assayIndex){
232
-                      CV(measurements = measurements[, mcols(measurements)[["assay"]] %in% assayIndex],
232
+                      CV(measurements = measurements[, S4Vectors::mcols(measurements)[["assay"]] %in% assayIndex],
233 233
                          outcome = outcome, assayIDs = assayIndex,
234 234
                          nFeatures = nFeatures[assayIndex],
235 235
                          selectionMethod = selectionMethod[assayIndex],
... ...
@@ -263,7 +263,7 @@ setMethod("crossValidate", "DataFrame",
263 263
 
264 264
 
265 265
                   result <- sapply(assayCombinations, function(assayIndex){
266
-                      CV(measurements = measurements[, mcols(measurements)$assay %in% assayIndex],
266
+                      CV(measurements = measurements[, S4Vectors::mcols(measurements)$assay %in% assayIndex],
267 267
                          outcome = outcome, assayIDs = assayIndex,
268 268
                          nFeatures = nFeatures[assayIndex],
269 269
                          selectionMethod = selectionMethod[assayIndex],
... ...
@@ -427,14 +427,14 @@ setMethod("crossValidate", "list",
427 427
               df_list <- sapply(measurements, S4Vectors::DataFrame, check.names = FALSE)
428 428
               
429 429
               df_list <- mapply(function(meas, nam){
430
-                  mcols(meas)$assay <- nam
431
-                  mcols(meas)$feature <- colnames(meas)
430
+                  S4Vectors::mcols(meas)$assay <- nam
431
+                  S4Vectors::mcols(meas)$feature <- colnames(meas)
432 432
                   meas
433 433
               }, df_list, names(df_list))
434 434
               
435 435
               
436 436
               combined_df <- do.call("cbind", df_list) 
437
-              colnames(combined_df) <- mcols(combined_df)$feature
437
+              colnames(combined_df) <- S4Vectors::mcols(combined_df)$feature
438 438
 
439 439
 
440 440
               
... ...
@@ -459,8 +459,8 @@ setMethod("crossValidate", "list",
459 459
 ######################################
460 460
 cleanNFeatures <- function(nFeatures, measurements){
461 461
     #### Clean up
462
-    if(!is.null(mcols(measurements)$assay))
463
-      obsFeatures <- unlist(as.list(table(mcols(measurements)[, "assay"])))
462
+    if(!is.null(S4Vectors::mcols(measurements)$assay))
463
+      obsFeatures <- unlist(as.list(table(S4Vectors::mcols(measurements)[, "assay"])))
464 464
     else obsFeatures <- ncol(measurements)
465 465
     if(is.null(nFeatures) || length(nFeatures) == 1 && nFeatures == "all") nFeatures <- as.list(obsFeatures)
466 466
     if(is.null(names(nFeatures)) && length(nFeatures) == 1) nFeatures <- as.list(pmin(obsFeatures, nFeatures))
... ...
@@ -476,8 +476,8 @@ cleanNFeatures <- function(nFeatures, measurements){
476 476
 ######################################
477 477
 cleanSelectionMethod <- function(selectionMethod, measurements){
478 478
     #### Clean up
479
-    if(!is.null(mcols(measurements)$assay))
480
-      obsFeatures <- unlist(as.list(table(mcols(measurements)[, "assay"])))
479
+    if(!is.null(S4Vectors::mcols(measurements)$assay))
480
+      obsFeatures <- unlist(as.list(table(S4Vectors::mcols(measurements)[, "assay"])))
481 481
     else return(list(selectionMethod))
482 482
 
483 483
     if(is.null(names(selectionMethod)) & length(selectionMethod) == 1 & !is.null(names(obsFeatures))) selectionMethod <- sapply(names(obsFeatures), function(x) selectionMethod, simplify = FALSE)
... ...
@@ -492,8 +492,8 @@ cleanSelectionMethod <- function(selectionMethod, measurements){
492 492
 ######################################
493 493
 cleanClassifier <- function(classifier, measurements, nFeatures){
494 494
     #### Clean up
495
-    if(!is.null(mcols(measurements)$assay))
496
-      obsFeatures <- unlist(as.list(table(mcols(measurements)[, "assay"])))
495
+    if(!is.null(S4Vectors::mcols(measurements)$assay))
496
+      obsFeatures <- unlist(as.list(table(S4Vectors::mcols(measurements)[, "assay"])))
497 497
     else return(list(classifier))
498 498
 
499 499
     if(is.null(names(classifier)) & length(classifier) == 1 & !is.null(names(obsFeatures))) classifier <- sapply(names(obsFeatures), function(x)classifier, simplify = FALSE)
... ...
@@ -599,7 +599,7 @@ generateModellingParams <- function(assayIDs,
599 599
 
600 600
 
601 601
 
602
-    if(length(assayIDs) > 1) obsFeatures <- sum(mcols(measurements)[, "assay"] %in% assayIDs)
602
+    if(length(assayIDs) > 1) obsFeatures <- sum(S4Vectors::mcols(measurements)[, "assay"] %in% assayIDs)
603 603
     else obsFeatures <- ncol(measurements)
604 604
 
605 605
 
... ...
@@ -670,7 +670,7 @@ generateMultiviewParams <- function(assayIDs,
670 670
         if(length(classifier) > 1) classifier <- classifier[[1]]
671 671
 
672 672
         # Split measurements up by assay.
673
-        assayTrain <- sapply(assayIDs, function(assayID) if(assayID == 1) measurements else measurements[, mcols(measurements)[["assay"]] %in% assayID], simplify = FALSE)
673
+        assayTrain <- sapply(assayIDs, function(assayID) if(assayID == 1) measurements else measurements[, S4Vectors::mcols(measurements)[["assay"]] %in% assayID], simplify = FALSE)
674 674
 
675 675
         # Generate params for each assay. This could be extended to have different selectionMethods for each type
676 676
         paramsAssays <- mapply(generateModellingParams,
... ...
@@ -709,7 +709,7 @@ generateMultiviewParams <- function(assayIDs,
709 709
     if(multiViewMethod == "prevalidation"){
710 710
 
711 711
         # Split measurements up by assay.
712
-        assayTrain <- sapply(assayIDs, function(assayID) measurements[, mcols(measurements)[["assay"]] %in% assayID], simplify = FALSE)
712
+        assayTrain <- sapply(assayIDs, function(assayID) measurements[, S4Vectors::mcols(measurements)[["assay"]] %in% assayID], simplify = FALSE)
713 713
 
714 714
         # Generate params for each assay. This could be extended to have different selectionMethods for each type
715 715
         paramsAssays <- mapply(generateModellingParams,
... ...
@@ -738,7 +738,7 @@ generateMultiviewParams <- function(assayIDs,
738 738
     if(multiViewMethod == "prevalidation"){
739 739
 
740 740
         # Split measurements up by assay.
741
-        assayTrain <- sapply(assayIDs, function(assayID) measurements[, mcols(measurements)[["assay"]] %in% assayID], simplify = FALSE)
741
+        assayTrain <- sapply(assayIDs, function(assayID) measurements[, S4Vectors::mcols(measurements)[["assay"]] %in% assayID], simplify = FALSE)
742 742
 
743 743
         # Generate params for each assay. This could be extended to have different selectionMethods for each type
744 744
         paramsAssays <- mapply(generateModellingParams,
... ...
@@ -768,7 +768,7 @@ generateMultiviewParams <- function(assayIDs,
768 768
     if(multiViewMethod == "PCA"){
769 769
 
770 770
         # Split measurements up by assay.
771
-        assayTrain <- sapply(assayIDs, function(assayID) measurements[, mcols(measurements)[["assay"]] %in% assayID], simplify = FALSE)
771
+        assayTrain <- sapply(assayIDs, function(assayID) measurements[, S4Vectors::mcols(measurements)[["assay"]] %in% assayID], simplify = FALSE)
772 772
 
773 773
         # Generate params for each assay. This could be extended to have different selectionMethods for each type
774 774
         paramsClinical <-  list(clinical = generateModellingParams(
... ...
@@ -906,7 +906,7 @@ train.DataFrame <- function(x, outcomeTrain, classifier = "randomForest", perfor
906 906
               outcomeTrain <- measurementsAndOutcome[["outcome"]]
907 907
               
908 908
               classifier <- cleanClassifier(classifier = classifier, measurements = measurements)
909
-              if(assayIDs == "all") assayIDs <- unique(mcols(measurements)[, "assay"])
909
+              if(assayIDs == "all") assayIDs <- unique(S4Vectors::mcols(measurements)[, "assay"])
910 910
               if(is.null(assayIDs)) assayIDs <- 1
911 911
               names(assayIDs) <- assayIDs
912 912
               names(classifier) <- assayIDs
... ...
@@ -919,7 +919,7 @@ train.DataFrame <- function(x, outcomeTrain, classifier = "randomForest", perfor
919 919
                               # Loop over classifiers
920 920
                               
921 921
                                   measurementsUse <- measurements
922
-                                  if(assayIndex != 1) measurementsUse <- measurements[, mcols(measurements)[, "assay"] == assayIndex, drop = FALSE]
922
+                                  if(assayIndex != 1) measurementsUse <- measurements[, S4Vectors::mcols(measurements)[, "assay"] == assayIndex, drop = FALSE]
923 923
                                   
924 924
                                   classifierParams <- .classifierKeywordToParams(classifierForAssay)
925 925
                                   if(!is.null(classifierParams$trainParams@tuneParams))
... ...
@@ -950,7 +950,7 @@ train.DataFrame <- function(x, outcomeTrain, classifier = "randomForest", perfor
950 950
 
951 951
               ### Merging or binding to combine data
952 952
               if(multiViewMethod == "merge"){
953
-                  measurementsUse <- measurements[, mcols(measurements)[["assay"]] %in% assayIDs]
953
+                  measurementsUse <- measurements[, S4Vectors::mcols(measurements)[["assay"]] %in% assayIDs]
954 954
                   model <- .doTrain(measurementsUse, outcomeTrain, NULL, NULL, crossValParams, modellingParams, verbose = 0)[["model"]]
955 955
                   class(model) <- c("trainedByClassifyR", class(model))
956 956
               }
... ...
@@ -959,7 +959,7 @@ train.DataFrame <- function(x, outcomeTrain, classifier = "randomForest", perfor
959 959
               ### Prevalidation to combine data
960 960
               if(multiViewMethod == "prevalidation"){
961 961
                 # Split measurements up by assay.
962
-                 assayTrain <- sapply(assayIDs, function(assayID) measurements[, mcols(measurements)[["assay"]] %in% assayID], simplify = FALSE)
962
+                 assayTrain <- sapply(assayIDs, function(assayID) measurements[, S4Vectors::mcols(measurements)[["assay"]] %in% assayID], simplify = FALSE)
963 963
 
964 964
                # Generate params for each assay. This could be extended to have different selectionMethods for each type
965 965
                  paramsAssays <- mapply(generateModellingParams,
... ...
@@ -980,10 +980,10 @@ train.DataFrame <- function(x, outcomeTrain, classifier = "randomForest", perfor
980 980
               
981 981
               ### Principal Components Analysis to combine data
982 982
               if(multiViewMethod == "PCA"){
983
-                measurementsUse <- measurements[, mcols(measurements)[["assay"]] %in% assayIDs]
983
+                measurementsUse <- measurements[, S4Vectors::mcols(measurements)[["assay"]] %in% assayIDs]
984 984
                 paramsClinical <-  list(clinical = generateModellingParams(
985 985
                                         assayIDs = "clinical",
986
-                                        measurements = measurements[, mcols(measurements)[["assay"]] == "clinical"],
986
+                                        measurements = measurements[, S4Vectors::mcols(measurements)[["assay"]] == "clinical"],
987 987
                                         classifier = classifier["clinical"],
988 988
                                         multiViewMethod = "none"))
989 989
                 
... ...
@@ -1020,8 +1020,8 @@ train.list <- function(x, outcomeTrain, ...)
1020 1020
               df_list <- sapply(x, S4Vectors::DataFrame)
1021 1021
               
1022 1022
               df_list <- mapply(function(meas, nam){
1023
-                  mcols(meas)$assay <- nam
1024
-                  mcols(meas)$feature <- colnames(meas)
1023
+                  S4Vectors::mcols(meas)$assay <- nam
1024
+                  S4Vectors::mcols(meas)$feature <- colnames(meas)
1025 1025
                   meas
1026 1026
               }, df_list, names(df_list))
1027 1027
               
... ...
@@ -1070,8 +1070,8 @@ predict.trainedByClassifyR <- function(object, newData, ...)
1070 1070
   } else if(is.list(newData) && !is(object, "listOfModels")) # Don't check all those conditions that train function does.
1071 1071
   { # Merge the list of data tables and keep track of assay names in columns' metadata.
1072 1072
     newData <- mapply(function(meas, nam){
1073
-               mcols(meas)$assay <- nam
1074
-               mcols(meas)$feature <- colnames(meas)
1073
+               S4Vectors::mcols(meas)$assay <- nam
1074
+               S4Vectors::mcols(meas)$feature <- colnames(meas)
1075 1075
                meas
1076 1076
                }, newData, names(newData))
1077 1077
     newData <- do.call(cbind, newData)
... ...
@@ -37,8 +37,8 @@ pcaTrainInterface <- function(measurements, classes, params, nFeatures, ...)
37 37
               ###
38 38
               
39 39
               pcaVar <- S4Vectors::DataFrame(pcaVar)
40
-              mcols(pcaVar)$assay = "PCA"
41
-              mcols(pcaVar)$feature = colnames(pcaVar)
40
+              S4Vectors::mcols(pcaVar)$assay = "PCA"
41
+              S4Vectors::mcols(pcaVar)$feature = colnames(pcaVar)
42 42
             
43 43
               fullTrain = cbind(assayTrain[["clinical"]], pcaVar)
44 44
               
... ...
@@ -87,7 +87,7 @@ pcaPredictInterface <- function(fullModel, test, ..., returnType = "both", verbo
87 87
               fullModel <- fullModel@fullModel[[1]]
88 88
               
89 89
               #Split my test data into a list of the different assays
90
-              assayTest <- sapply(unique(mcols(test)[["assay"]]), function(assay) test[, mcols(test)[["assay"]] %in% assay], simplify = FALSE)
90
+              assayTest <- sapply(unique(S4Vectors::mcols(test)[["assay"]]), function(assay) test[, S4Vectors::mcols(test)[["assay"]] %in% assay], simplify = FALSE)
91 91
               
92 92
               # Pull out my PCA models
93 93
               pcaModels <- fullModel$pcaModels
... ...
@@ -101,8 +101,8 @@ pcaPredictInterface <- function(fullModel, test, ..., returnType = "both", verbo
101 101
               pcaVar <- do.call(cbind, pcaVar)
102 102
               
103 103
               pcaVar <- S4Vectors::DataFrame(pcaVar)
104
-              mcols(pcaVar)$assay = "PCA"
105
-              mcols(pcaVar)$feature = colnames(pcaVar)
104
+              S4Vectors::mcols(pcaVar)$assay = "PCA"
105
+              S4Vectors::mcols(pcaVar)$feature = colnames(pcaVar)
106 106
               
107 107
               # Merge my PCA stuff with my clinical data
108 108
               fullTest = cbind(assayTest[["clinical"]], pcaVar)
... ...
@@ -81,8 +81,8 @@ prevalTrainInterface <- function(measurements, classes, params, ...)
81 81
               #fullTrain = cbind(assayTrain[["clinical"]][,selectedFeaturesClinical], prevalidationTrain[rownames(assayTrain[["clinical"]]), , drop = FALSE])
82 82
               
83 83
               prevalidationTrain <- S4Vectors::DataFrame(prevalidationTrain)
84
-              mcols(prevalidationTrain)$assay = "prevalidation"
85
-              mcols(prevalidationTrain)$feature = colnames(prevalidationTrain)
84
+              S4Vectors::mcols(prevalidationTrain)$assay = "prevalidation"
85
+              S4Vectors::mcols(prevalidationTrain)$feature = colnames(prevalidationTrain)
86 86
               
87 87
               
88 88
               ###
... ...
@@ -142,7 +142,7 @@ prevalTrainInterface <- function(measurements, classes, params, ...)
142 142
 prevalPredictInterface <- function(fullModel, test, ..., returnType = "both", verbose = 0)
143 143
           {
144 144
               fullModel <- fullModel@fullModel[[1]]
145
-              assayTest <- sapply(unique(mcols(test)[["assay"]]), function(assay) test[, mcols(test)[["assay"]] %in% assay], simplify = FALSE)
145
+              assayTest <- sapply(unique(S4Vectors::mcols(test)[["assay"]]), function(assay) test[, S4Vectors::mcols(test)[["assay"]] %in% assay], simplify = FALSE)
146 146
               
147 147
               prevalidationModels <- fullModel$prevalidationModels
148 148
               modelPredictionFunctions <- fullModel$modellingParams
... ...
@@ -157,8 +157,8 @@ prevalPredictInterface <- function(fullModel, test, ..., returnType = "both", ve
157 157
                   extractPrevalidation()
158 158
               
159 159
               prevalidationPredict <- S4Vectors::DataFrame(prevalidationPredict)
160
-              mcols(prevalidationPredict)$assay = "prevalidation"
161
-              mcols(prevalidationPredict)$feature = colnames(prevalidationPredict)
160
+              S4Vectors::mcols(prevalidationPredict)$assay = "prevalidation"
161
+              S4Vectors::mcols(prevalidationPredict)$feature = colnames(prevalidationPredict)
162 162
               
163 163
               fullTest = cbind(assayTest[["clinical"]], prevalidationPredict[rownames(assayTest[["clinical"]]), , drop = FALSE])
164 164
               
... ...
@@ -64,7 +64,7 @@ setMethod("prepareData", "DataFrame",
64 64
   if(!all(colnames(measurements) == make.names(colnames(measurements))))
65 65
   {
66 66
     warning("Unsafe feature names in input data. Converted into safe names.")
67
-    mcols(measurements)$feature <- colnames(measurements) # Save the originals.
67
+    S4Vectors::mcols(measurements)$feature <- colnames(measurements) # Save the originals.
68 68
     colnames(measurements) <- make.names(colnames(measurements)) # Ensure column names are safe names.
69 69
   }
70 70