speed up write function 20214-r-sdk
authorAnetaSta22 <107112384+AnetaSta22@users.noreply.github.com>
Thu, 23 Feb 2023 13:19:02 +0000 (14:19 +0100)
committerPeter Amstutz <peter.amstutz@curii.com>
Wed, 8 Mar 2023 16:55:30 +0000 (11:55 -0500)
Contributed by Aneta Stanczyk <aneta.stanczyk@contractors.roche.com>

Arvados-DCO-1.1-Signed-off-by: Peter Amstutz <peter.amstutz@curii.com>

sdk/R/R/Collection.R
sdk/R/man/Collection.Rd

index e362de604114b3736b23c52623f8facf8c33c842..655bf98b3dbccd417c17e22b8fe8b84ae52b5cb0 100644 (file)
@@ -198,22 +198,14 @@ Collection <- R6::R6Class(
         #' @param istable Used in writing txt file to check if the file is table or not.
         #' @examples
         #' collection <- Collection$new(arv, collectionUUID)
-        #' writeFile <- collection$writeFile("myoutput.csv", file, istable = NULL)             # csv
-        #' writeFile <- collection$writeFile("myoutput.fasta", file, istable = NULL)           # fasta
-        #' writeFile <- collection$writeFile("myoutputtable.txt", file, istable = "yes")       # txt table
-        #' writeFile <- collection$writeFile("myoutputtext.txt", file, istable = "no")         # txt text
-        #' writeFile <- collection$writeFile("myoutputbinary.dat", file)                       # binary
-        #' writeFile <- collection$writeFile("myoutputxlsx.xlsx", file)                        # xlsx
-        writeFile = function(name, file, istable = NULL, seqName = NULL)
-        {
-            # prepare file and connection
-            arvFile <- collection$create(name)[[1]]
-            arvFile <- collection$get(name)
-            arvConnection <- arvFile$connection("w")
-            # get file format
-            FileName <- arvFile$getName()
-            FileName <- tolower(FileName)
-            FileFormat <- gsub(".*\\.", "", FileName)
+        #' writeFile <- collection$writeFile(name = "myoutput.csv", file = file, fileFormat = "csv", istable = NULL, collectionUUID = collectionUUID)             # csv
+        #' writeFile <- collection$writeFile(name = "myoutput.tsv", file = file, fileFormat = "tsv", istable = NULL, collectionUUID = collectionUUID)             # tsv
+        #' writeFile <- collection$writeFile(name = "myoutput.fasta", file = file, fileFormat = "fasta", istable = NULL, collectionUUID = collectionUUID)         # fasta
+        #' writeFile <- collection$writeFile(name = "myoutputtable.txt", file = file, fileFormat = "txt", istable = "yes", collectionUUID = collectionUUID)       # txt table
+        #' writeFile <- collection$writeFile(name = "myoutputtext.txt", file = file, fileFormat = "txt", istable = "no", collectionUUID = collectionUUID)         # txt text
+        #' writeFile <- collection$writeFile(name = "myoutputbinary.dat", file = file, fileFormat = "dat", collectionUUID = collectionUUID)                       # binary
+        #' writeFile <- collection$writeFile(name = "myoutputxlsx.xlsx", file = file, fileFormat = "xlsx", collectionUUID = collectionUUID)                       # xlsx
+        writeFile = function(name, file, collectionUUID, fileFormat, istable = NULL, seqName = NULL) {
 
             # set enviroment
             ARVADOS_API_TOKEN <- Sys.getenv("ARVADOS_API_TOKEN")
@@ -227,22 +219,25 @@ Collection <- R6::R6Class(
                 "AWS_DEFAULT_REGION" = "collections",
                 "AWS_S3_ENDPOINT" = gsub("api[.]", "", ARVADOS_API_HOST))
 
-            if (FileFormat == "txt") {
+            # save file
+            if (fileFormat == "txt") {
                 if (istable == "yes") {
-                    aws.s3::s3write_using(file, FUN = write.table, object = name, bucket = my_collection)
+                    aws.s3::s3write_using(file, FUN = write.table, object = name, bucket = collectionUUID)
                 } else if (istable == "no") {
-                    aws.s3::s3write_using(file, FUN = writeChar, object = name, bucket = my_collection)
+                    aws.s3::s3write_using(file, FUN = writeChar, object = name, bucket = collectionUUID)
                 } else {
                     stop(paste("Specify parametr istable"))
                 }
-            } else if (FileFormat == "csv") {
-                aws.s3::s3write_using(file, FUN = write.csv, object = name, bucket = my_collection)
-            } else if (FileFormat == "fasta") {
-                aws.s3::s3write_using(file, FUN = seqinr::write.fasta, name = seqName, object = name, bucket = my_collection)
-            } else if (FileFormat == "xlsx") {
-                aws.s3::s3write_using(file, FUN = openxlsx::write.xlsx, object = name, bucket = my_collection)
-            } else if (FileFormat == "dat" || FileFormat == "bin") {
-                aws.s3::s3write_using(file, FUN = writeBin, object = name, bucket = my_collection)
+            } else if (fileFormat == "csv") {
+                aws.s3::s3write_using(file, FUN = write.csv, object = name, bucket = collectionUUID)
+            } else if (fileFormat == "tsv") {
+                aws.s3::s3write_using(file, FUN = write.table, row.names = FALSE, sep = "\t", object = name, bucket = collectionUUID)
+            } else if (fileFormat == "fasta") {
+                aws.s3::s3write_using(file, FUN = seqinr::write.fasta, name = seqName, object = name, bucket = collectionUUID)
+            } else if (fileFormat == "xlsx") {
+                aws.s3::s3write_using(file, FUN = openxlsx::write.xlsx, object = name, bucket = collectionUUID)
+            } else if (fileFormat == "dat" || fileFormat == "bin") {
+                aws.s3::s3write_using(file, FUN = writeBin, object = name, bucket = collectionUUID)
             } else {
                 stop(parse(('File format not supported, use arvadosFile$connection() and customise it')))
             }
index 5fbf1c1a118afb87396bcfb60f9fbc16cfce1016..bb72cc1b3fe75e192f81c9c091c1a4d6f7a259df 100644 (file)
@@ -32,12 +32,13 @@ readFile <- collection$readArvFile(arvadosFile, Ncol = 5, Nrow = 150, istable =
 ## ------------------------------------------------\r
 \r
 collection <- Collection$new(arv, collectionUUID)\r
-writeFile <- collection$writeFile("myoutput.csv", file, istable = NULL)             # csv\r
-writeFile <- collection$writeFile("myoutput.fasta", file, istable = NULL)           # fasta\r
-writeFile <- collection$writeFile("myoutputtable.txt", file, istable = "yes")       # txt table\r
-writeFile <- collection$writeFile("myoutputtext.txt", file, istable = "no")         # txt text\r
-writeFile <- collection$writeFile("myoutputbinary.dat", file)                       # binary\r
-writeFile <- collection$writeFile("myoutputxlsx.xlsx", file)                        # xlsx\r
+writeFile <- collection$writeFile(name = "myoutput.csv", file = file, fileFormat = "csv", istable = NULL, collectionUUID = collectionUUID)             # csv\r
+writeFile <- collection$writeFile(name = "myoutput.tsv", file = file, fileFormat = "tsv", istable = NULL, collectionUUID = collectionUUID)             # tsv\r
+writeFile <- collection$writeFile(name = "myoutput.fasta", file = file, fileFormat = "fasta", istable = NULL, collectionUUID = collectionUUID)         # fasta\r
+writeFile <- collection$writeFile(name = "myoutputtable.txt", file = file, fileFormat = "txt", istable = "yes", collectionUUID = collectionUUID)       # txt table\r
+writeFile <- collection$writeFile(name = "myoutputtext.txt", file = file, fileFormat = "txt", istable = "no", collectionUUID = collectionUUID)         # txt text\r
+writeFile <- collection$writeFile(name = "myoutputbinary.dat", file = file, fileFormat = "dat", collectionUUID = collectionUUID)                       # binary\r
+writeFile <- collection$writeFile(name = "myoutputxlsx.xlsx", file = file, fileFormat = "xlsx", collectionUUID = collectionUUID)                       # xlsx\r
 \r
 ## ------------------------------------------------\r
 ## Method `Collection$create`\r
@@ -216,7 +217,14 @@ readFile <- collection$readArvFile(arvadosFile, Ncol = 5, Nrow = 150, istable =
 \subsection{Method \code{writeFile()}}{\r
 Write file content\r
 \subsection{Usage}{\r
-\if{html}{\out{<div class="r">}}\preformatted{Collection$writeFile(name, file, istable = NULL, seqName = NULL)}\if{html}{\out{</div>}}\r
+\if{html}{\out{<div class="r">}}\preformatted{Collection$writeFile(\r
+  name,\r
+  file,\r
+  collectionUUID,\r
+  fileFormat,\r
+  istable = NULL,\r
+  seqName = NULL\r
+)}\if{html}{\out{</div>}}\r
 }\r
 \r
 \subsection{Arguments}{\r
@@ -233,12 +241,13 @@ Write file content
 \subsection{Examples}{\r
 \if{html}{\out{<div class="r example copy">}}\r
 \preformatted{collection <- Collection$new(arv, collectionUUID)\r
-writeFile <- collection$writeFile("myoutput.csv", file, istable = NULL)             # csv\r
-writeFile <- collection$writeFile("myoutput.fasta", file, istable = NULL)           # fasta\r
-writeFile <- collection$writeFile("myoutputtable.txt", file, istable = "yes")       # txt table\r
-writeFile <- collection$writeFile("myoutputtext.txt", file, istable = "no")         # txt text\r
-writeFile <- collection$writeFile("myoutputbinary.dat", file)                       # binary\r
-writeFile <- collection$writeFile("myoutputxlsx.xlsx", file)                        # xlsx\r
+writeFile <- collection$writeFile(name = "myoutput.csv", file = file, fileFormat = "csv", istable = NULL, collectionUUID = collectionUUID)             # csv\r
+writeFile <- collection$writeFile(name = "myoutput.tsv", file = file, fileFormat = "tsv", istable = NULL, collectionUUID = collectionUUID)             # tsv\r
+writeFile <- collection$writeFile(name = "myoutput.fasta", file = file, fileFormat = "fasta", istable = NULL, collectionUUID = collectionUUID)         # fasta\r
+writeFile <- collection$writeFile(name = "myoutputtable.txt", file = file, fileFormat = "txt", istable = "yes", collectionUUID = collectionUUID)       # txt table\r
+writeFile <- collection$writeFile(name = "myoutputtext.txt", file = file, fileFormat = "txt", istable = "no", collectionUUID = collectionUUID)         # txt text\r
+writeFile <- collection$writeFile(name = "myoutputbinary.dat", file = file, fileFormat = "dat", collectionUUID = collectionUUID)                       # binary\r
+writeFile <- collection$writeFile(name = "myoutputxlsx.xlsx", file = file, fileFormat = "xlsx", collectionUUID = collectionUUID)                       # xlsx\r
 }\r
 \if{html}{\out{</div>}}\r
 \r