File Upload

Files in Synapse are versionable. Please see Files and Versioning for more information about how versions in Files work.

Preliminaries:

library(synapser)
## Warning: unable to access index for repository http://ran.synapse.org/src/contrib:
##   cannot open URL 'http://ran.synapse.org/src/contrib/PACKAGES'
## 
## TERMS OF USE NOTICE:
##   When using Synapse, remember that the terms and conditions of use require that you:
##   1) Attribute data contributors when discussing these data or results from these data.
##   2) Not discriminate, identify, or recontact individuals or groups represented by the data.
##   3) Use and contribute only data de-identified to HIPAA standards.
##   4) Redistribute data only under these same terms of use.
synLogin()
## Welcome, test!
## NULL
# Create a new project
# use hex_digits to generate random string
hex_digits <- c(as.character(0:9), letters[1:6])
projectName <- sprintf("My unique project %s", paste0(sample(hex_digits, 32, replace = TRUE), collapse = ""))
project <- Project(projectName)
project <- synStore(project)

# Create a file
file_path <- tempfile("testUpload.txt")
connection <- file(file_path)
writeChar("this is the content of the file", connection, eos = NULL)
close(connection)
file <- File(path = file_path, parent = project)
file <- synStore(file)
## ################################################## Uploading file to Synapse storage ##################################################
Uploading [--------------------]0.00%   0.0bytes/31.0bytes  testUpload.txt158587b3249fc     
Uploading [####################]100.00%   31.0bytes/31.0bytes (17.1bytes/s) testUpload.txt158587b3249fc Done...
file_id <- file$properties$id

Uploading a New Version

Uploading a new version follows the same steps as uploading a file for the first time - use the same file name and store it in the same location (e.g., the same parentId). It is recommended to add a comment to the new version in order to easily track differences at a glance. The example file testUpload.txt will now have a version of 2 and a comment describing the change.

Explicit example:

Implicit example:

Updating Annotations or Provenance without Changing Versions

Any change to a File will automatically update its version. If this isn’t the desired behavior, such as minor changes to the metadata, you can set forceVersion=FALSE with the Python client.

Important: Because Provenance is tracked by version, set forceVersion=FALSE for minor changes to avoid breaking Provenance.

Setting Annotations without Changing Version

Setting Provenance without Changing Version

To set Provenance without changing the file version:

Downloading a Specific Version

By default, the File downloaded will always be the most recent version. However, a specific version can be downloaded by passing the version parameter:

entity <- synGet(file_id, version = 1)