# HG changeset patch
# User kellrott
# Date 1374529428 14400
# Node ID f798da48a30ddbf685aefe349d047ddb153c459b
# Parent 2925d82b84fcd9881e5da042737f78f251a2c92c
Uploaded
diff -r 2925d82b84fc -r f798da48a30d synapse_interface/synapse_create.xml
--- a/synapse_interface/synapse_create.xml Thu Oct 25 02:39:06 2012 -0400
+++ b/synapse_interface/synapse_create.xml Mon Jul 22 17:43:48 2013 -0400
@@ -1,21 +1,59 @@
-
+
Create Synapse
- $script_file
+
+ synapseclient
+
+ synapse_galaxy_client.py upload $script_file
+$etype
+$properties_file
+$annotations_file
+$outfile
+
+#if str($attachment) != ''
+$attachment
+#else
+-
+#end if
+
+#if str($attachment_name) != ''
+$attachment_name
+#else
+-
+#end if
+
+
+#if str($synid) != ''
+$synid
+#else
+-
+#end if
+
+
+
+
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
+
+
+
-
-
@@ -53,86 +91,37 @@
- ", x);
-y = gsub("__lt__", "<", y );
-y = gsub("__sq__", "'", y);
-y = gsub("__dq__", "\\"",y);
-y = gsub("__ob__", "[", y);
-y = gsub("__cb__", "]", y);
-y = gsub("__oc__", "{", y);
-y = gsub("__cc__", "}", y);
-y = gsub("__at__", "@", y);
-y = gsub("__cn__", "\\n", y);
-y = gsub("__cr__", "\\r", y);
-y = gsub("__tc__", "\\t", y);
-y = gsub("__pd__", "#", y);
-y = gsub("__at__", "@", y);
-return(y);
-}
-
-if (nchar("$user") && nchar("$pass")) {
- synapseLogin(username=galaxyClean("$user"), password=galaxyClean("$pass"))
-}
-
-
-ent <- ${etype}( list(name=galaxyClean("${name}")) )
-
-#for $a in $annotations:
-annotValue(ent, galaxyClean("${a.name}")) <- galaxyClean("${a.value}")
-#end for
-
+ #if str($sessionToken) != ''
+token
+$sessionToken
+#else
+password
+$user
+$pass
+#end if
+
+ parentId $parentId
#for a in $properties:
-propertyValue(ent, galaxyClean("${a.name}")) <- galaxyClean("${a.value}")
+${a.name} ${a.value}
#end for
-
-ent <- createEntity(ent)
-
-#if $attachment != 'None'
-#if $attachment_name == '':
-ent <- addFile(ent, galaxyClean("${attachment}"))
-#else
-ent <- addFile(ent, galaxyClean("${attachment}"), galaxyClean("${attachment_name}"))
+#if str($name) != ''
+name $name
#end if
-#end if
-
-ent <- storeEntity(ent)
-
-write(properties(ent)\$id, file=galaxyClean("${outfile}"));
-
-"""
-
+
+ #for a in $annotations:
+${a.name} ${a.value}
+#end for
+
-import tempfile
-import os
-import sys
-import subprocess
-
-h, path = tempfile.mkstemp()
-os.write(h,rcode)
-os.close(h)
-
-proc = subprocess.Popen( ["Rscript", path] + sys.argv[1:], stderr=subprocess.PIPE, stdout=subprocess.PIPE )
-(stdoutdata, stderrdata) = proc.communicate()
-if proc.returncode:
- sys.stderr.write(stderrdata)
-sys.stdout.write(stdoutdata)
-os.unlink(path)
-
-]]>
-Install R SynapseClient:
- source('http://depot.sagebase.org/CRAN.R')
- pkgInstall("synapseClient")
+Login via OpenID |location_link|.
-`To setup auto login (so you don't have to type in your password) <https://sagebionetworks.jira.com/wiki/display/SYNR/How+to+configure+automatic+login>`_
+.. |location_link| raw:: html
+
+ <a href="https://synapse.sagebase.org/Portal/openid?OPEN_ID_PROVIDER=https://www.google.com/accounts/o8/id&RETURN_TO_URL=${host_url}?tool_id=synapse_upload&" target="_blank">at Synapse</a>
-
\ No newline at end of file
+
diff -r 2925d82b84fc -r f798da48a30d synapse_interface/synapse_download.xml
--- a/synapse_interface/synapse_download.xml Thu Oct 25 02:39:06 2012 -0400
+++ b/synapse_interface/synapse_download.xml Mon Jul 22 17:43:48 2013 -0400
@@ -1,92 +1,48 @@
-
+
Download Synapse Entity
- $script_file
+
+ synapseclient
+
+ synapse_galaxy_client.py get $script_file $synid $outfile
+
+
+
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
- ", x);
-y = gsub("__lt__", "<", y );
-y = gsub("__sq__", "'", y);
-y = gsub("__dq__", "\\"",y);
-y = gsub("__ob__", "[", y);
-y = gsub("__cb__", "]", y);
-y = gsub("__oc__", "{", y);
-y = gsub("__cc__", "}", y);
-y = gsub("__at__", "@", y);
-y = gsub("__cn__", "\\n", y);
-y = gsub("__cr__", "\\r", y);
-y = gsub("__tc__", "\\t", y);
-y = gsub("__pd__", "#", y);
-y = gsub("__at__", "@", y);
-return(y);
-}
-
-if (nchar("$user") && nchar("$pass")) {
- synapseLogin(username=galaxyClean("$user"), password=galaxyClean("$pass"))
-}
-
-
-cat("Loading...")
-ent <- loadEntity("$synid");
-cat("Done\n")
-
-if ("e" == "$data_type") {
- eset <- exprs(ent\$objects\$eset);
- write(paste(c("PROBE", colnames(eset)), collapse="\\t"), file="$outfile")
- write.table(eset, "$outfile", col.names=FALSE, sep="\\t", quote=FALSE, append=TRUE);
-}
-if ("a" == "$data_type") {
- fpath <- file.path(ent\$cacheDir, ent\$files[[1]]);
- file.copy(fpath, "$outfile", overwrite=T);
-}
-
-"""
-
-import tempfile
-import os
-import sys
-import subprocess
-
-h, path = tempfile.mkstemp()
-os.write(h,rcode)
-os.close(h)
-
-cmd_args = ["R", "CMD", "BATCH", path ]
-proc = subprocess.Popen(cmd_args, stderr=subprocess.PIPE)
-stdout, stderr = proc.communicate()
-if proc.poll() != 0:
- sys.stderr.write(stderr)
-os.unlink(path)
-]]>
+ #if str($sessionToken) != ''
+token
+$sessionToken
+#else
+password
+$user
+$pass
+#end if
+
-This tool current supports two types of data from Synapse: Affy eset data and attachment files.
-For Affy eset data, it will attempt to turn the eset into a table and write a tab separated file. For attachment files, it will
-save the first attached file as the output.
+Login via OpenID |location_link|.
-Install R SynapseClient::
+.. |location_link| raw:: html
- source('http://depot.sagebase.org/CRAN.R')
- pkgInstall("synapseClient")
-
-`To setup auto login (so you don't have to type in your password) <https://sagebionetworks.jira.com/wiki/display/SYNR/How+to+configure+automatic+login>`_
+ <a href="https://synapse.sagebase.org/Portal/openid?OPEN_ID_PROVIDER=https://www.google.com/accounts/o8/id&RETURN_TO_URL=${host_url}?tool_id=synapse_download&" target="_blank">at Synapse</a>
-
\ No newline at end of file
+
diff -r 2925d82b84fc -r f798da48a30d synapse_interface/synapse_galaxy_client.py
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/synapse_interface/synapse_galaxy_client.py Mon Jul 22 17:43:48 2013 -0400
@@ -0,0 +1,133 @@
+#!/usr/bin/env python
+
+import synapseclient
+import sys
+import json
+import os
+import shutil
+import csv
+
+def dict_list_to_tsv(data, handle):
+ headers = {}
+ for row in data:
+ for col in row:
+ if col not in headers:
+ headers[col] = len(headers)
+
+ head = headers.keys()
+ head.sort(key=lambda x : headers[x])
+
+ writer = csv.writer(handle, delimiter="\t", lineterminator="\n")
+ writer.writerow(head)
+
+ for row in data:
+ out = []
+ for c in head:
+ out.append(row.get(c, ""))
+ writer.writerow(out)
+
+
+if __name__ == "__main__":
+ cmd = sys.argv[1]
+ info_file = sys.argv[2]
+
+ handle = open(info_file)
+ mode = handle.readline().rstrip("\n\r")
+ syn = None
+ if mode == 'password':
+ username = handle.readline().rstrip("\n\r")
+ password = handle.readline().rstrip("\n\r")
+ syn = synapseclient.Synapse()
+ syn.login(username, password)
+ elif mode == 'token':
+ token = handle.readline().rstrip("\n\r")
+ syn = synapseclient.Synapse()
+ syn.login(sessionToken=token)
+ handle.close()
+
+ if syn is None:
+ sys.stderr.write("No login info\n")
+ sys.exit(1)
+
+ if cmd == "query":
+ querypath = sys.argv[3]
+ outpath = sys.argv[4]
+ handle = open(querypath)
+ query = handle.read()
+ handle.close()
+ ohandle = open(outpath, "w")
+ dict_list_to_tsv(syn.query(query)['results'], ohandle)
+ ohandle.close()
+
+
+ if cmd == "get":
+ synid = sys.argv[3]
+ outpath = sys.argv[4]
+
+ ent = syn.downloadEntity(synid)
+ src_path = os.path.join(ent['cacheDir'], ent['files'][0])
+ shutil.copy(src_path, outpath)
+
+ if cmd == "upload":
+ etype = sys.argv[3]
+ properties_file = sys.argv[4]
+ annotations_file = sys.argv[5]
+ outfile = sys.argv[6]
+ attach_file = sys.argv[7]
+ attach_file_name = os.path.basename(sys.argv[8])
+ synid = sys.argv[9]
+
+ handle = open(properties_file)
+ props = {}
+ for line in handle:
+ tmp = line.rstrip("\r\n").split("\t")
+ props[tmp[0]] = tmp[1]
+ handle.close()
+
+ handle = open(annotations_file)
+ annon = {}
+ for line in handle:
+ tmp = line.rstrip("\r\n").split("\t")
+ if tmp[0] in annon:
+ annon[tmp[0]].append( tmp[1] )
+ else:
+ annon[tmp[0]] = [tmp[1]]
+ handle.close()
+
+
+ if synid is not None and synid.startswith("syn"):
+ entity = syn.getEntity(synid)
+ else:
+ entityData = { u'entityType': u'org.sagebionetworks.repo.model.Data' }
+ if etype == 'folder':
+ entityData = { u'entityType': u'org.sagebionetworks.repo.model.Folder' }
+ entityData['name'] = attach_file_name
+ entityData['parentId'] = props['parentId']
+ entity = syn.createEntity(entityData)
+ synid = entity['id']
+
+ if len(props):
+ for p in props:
+ if p != 'parentId':
+ entity[p] = props[p]
+ entity = syn.updateEntity(entity)
+
+ if len(annon):
+ ann = syn.getAnnotations(entity)
+ for a in annon:
+ ann[a] = annon[a]
+ syn.setAnnotations(entity, ann)
+
+ if attach_file != '-' and attach_file_name != '-':
+ if not os.path.exists(attach_file_name):
+ os.symlink(attach_file, attach_file_name)
+ attach_file = attach_file_name
+ print "upload", attach_file
+ entity = syn.getEntity(synid)
+ syn.uploadFile(entity, attach_file)
+
+ handle = open(outfile, "w")
+ handle.write(json.dumps(dict(entity)))
+ handle.close()
+
+
diff -r 2925d82b84fc -r f798da48a30d synapse_interface/synapse_query.xml
--- a/synapse_interface/synapse_query.xml Thu Oct 25 02:39:06 2012 -0400
+++ b/synapse_interface/synapse_query.xml Mon Jul 22 17:43:48 2013 -0400
@@ -1,89 +1,54 @@
-
+
Query Synapse
- $script_file
+
+ synapseclient
+
+ synapse_galaxy_client.py query $script_file $query_file $outfile
+
+
+
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
- ", x);
-y = gsub("__lt__", "<", y );
-y = gsub("__sq__", "'", y);
-y = gsub("__dq__", "\\"",y);
-y = gsub("__ob__", "[", y);
-y = gsub("__cb__", "]", y);
-y = gsub("__oc__", "{", y);
-y = gsub("__cc__", "}", y);
-y = gsub("__at__", "@", y);
-y = gsub("__cn__", "\\n", y);
-y = gsub("__cr__", "\\r", y);
-y = gsub("__tc__", "\\t", y);
-y = gsub("__pd__", "#", y);
-y = gsub("__at__", "@", y);
-return(y);
-}
-
-if (nchar("$user") && nchar("$pass")) {
- synapseLogin(username=galaxyClean("$user"), password=galaxyClean("$pass"))
-}
-
-
-
-query <- galaxyClean("${query}");
-cat(query)
-
-query.out <- synapseQuery(query);
-write.table(query.out, quote=F, file="$outfile", row.name=F, sep="\\t")
-
-"""
-import tempfile
-import os
-import sys
-import subprocess
-
-h, path = tempfile.mkstemp(dir="/tmp")
-os.write(h,rcode)
-os.close(h)
-
-proc = subprocess.Popen( ["Rscript", path], stderr=subprocess.PIPE, stdout=subprocess.PIPE )
-(stdoutdata, stderrdata) = proc.communicate()
-if proc.returncode:
- sys.stderr.write(stderrdata)
-sys.stdout.write(stdoutdata)
-os.unlink(path)
-
-]]>
+ #if str($sessionToken) != ''
+token
+$sessionToken
+#else
+password
+$user
+$pass
+#end if
+
+ $query
-Install R SynapseClient::
+Login via OpenID |location_link|.
- source('http://depot.sagebase.org/CRAN.R')
- pkgInstall("synapseClient")
+.. |location_link| raw:: html
-`To setup auto login (so you don't have to type in your password) <https://sagebionetworks.jira.com/wiki/display/SYNR/How+to+configure+automatic+login>`_
+ <a href="https://synapse.sagebase.org/Portal/openid?OPEN_ID_PROVIDER=https://www.google.com/accounts/o8/id&RETURN_TO_URL=${host_url}?tool_id=synapse_query&" target="_blank">at Synapse</a>
Example Query:
@@ -91,4 +56,4 @@
-
\ No newline at end of file
+
diff -r 2925d82b84fc -r f798da48a30d synapse_interface/tool_dependencies.xml
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/synapse_interface/tool_dependencies.xml Mon Jul 22 17:43:48 2013 -0400
@@ -0,0 +1,13 @@
+
+
+
+
+
+ synapseclient == 0.3.0
+
+
+
+A client for Synapse, a collaborative compute space that allows scientists to share and analyze data together. Synapse brings together scientific data, tools, and disease models into a commons that enables true collaborative research. The platform consists of a web portal, web services, and integration with data analysis tools such as R, python, Galaxy and Java.
+
+
+
\ No newline at end of file