# HG changeset patch # User Dave Bouvier # Date 1390850269 18000 # Node ID 353be5809eebd1d9f3826d4cc4cfa32cfe43da8e # Parent 131300efb435a276bf555847a5a8670948cc9000# Parent 93c4d2fad9af3f7e2fe8215849a90b692715a955 Merge multiple heads. diff -r 93c4d2fad9af -r 353be5809eeb synapse_create.xml --- a/synapse_create.xml Wed Oct 24 23:31:13 2012 -0700 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,138 +0,0 @@ - - Create Synapse - $script_file - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ", 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 - -#for a in $properties: -propertyValue(ent, galaxyClean("${a.name}")) <- galaxyClean("${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}")) -#end if -#end if - -ent <- storeEntity(ent) - -write(properties(ent)\$id, file=galaxyClean("${outfile}")); - -""" - - -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") - -`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>`_ - - - - \ No newline at end of file diff -r 93c4d2fad9af -r 353be5809eeb synapse_download.xml --- a/synapse_download.xml Wed Oct 24 23:31:13 2012 -0700 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,92 +0,0 @@ - - Download Synapse Entity - $script_file - - - - - - - - - - - - - - ", 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) -]]> - - - -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. - -Install R SynapseClient:: - - 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>`_ - - - \ No newline at end of file diff -r 93c4d2fad9af -r 353be5809eeb synapse_interface/synapse_create.xml --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/synapse_interface/synapse_create.xml Mon Jan 27 14:17:49 2014 -0500 @@ -0,0 +1,127 @@ + + Create Synapse + + 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 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + #if str($sessionToken) != '' +token +$sessionToken +#else +password +$user +$pass +#end if + + parentId $parentId +#for a in $properties: +${a.name} ${a.value} +#end for +#if str($name) != '' +name $name +#end if + + #for a in $annotations: +${a.name} ${a.value} +#end for + + + + + +Login via OpenID |location_link|. + +.. |location_link| raw:: html + + <a href="https://synapse.sagebase.org/Portal/openid?OPEN_ID_PROVIDER=GOOGLE&RETURN_TO_URL=${host_url}?tool_id=synapse_upload&" target="_blank">at Synapse</a> + + + + diff -r 93c4d2fad9af -r 353be5809eeb synapse_interface/synapse_download.xml --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/synapse_interface/synapse_download.xml Mon Jan 27 14:17:49 2014 -0500 @@ -0,0 +1,48 @@ + + Download Synapse Entity + + synapseclient + + synapse_galaxy_client.py get $script_file $synid $outfile + + + + + + + + + + + + + + + + + + + + + + + #if str($sessionToken) != '' +token +$sessionToken +#else +password +$user +$pass +#end if + + + + +Login via OpenID |location_link|. + +.. |location_link| raw:: html + + <a href="https://synapse.sagebase.org/Portal/openid?OPEN_ID_PROVIDER=GOOGLE&RETURN_TO_URL=${host_url}?tool_id=synapse_download&" target="_blank">at Synapse</a> + + + diff -r 93c4d2fad9af -r 353be5809eeb synapse_interface/synapse_galaxy_client.py --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/synapse_interface/synapse_galaxy_client.py Mon Jan 27 14:17:49 2014 -0500 @@ -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 93c4d2fad9af -r 353be5809eeb synapse_interface/synapse_query.xml --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/synapse_interface/synapse_query.xml Mon Jan 27 14:17:49 2014 -0500 @@ -0,0 +1,59 @@ + + Query Synapse + + synapseclient + + synapse_galaxy_client.py query $script_file $query_file $outfile + + + + + + + + + + + + + + + + + + + + + + + + + + + + #if str($sessionToken) != '' +token +$sessionToken +#else +password +$user +$pass +#end if + + $query + + + +Login via OpenID |location_link|. + +.. |location_link| raw:: html + + <a href="https://synapse.sagebase.org/Portal/openid?OPEN_ID_PROVIDER=GOOGLE&RETURN_TO_URL=${host_url}?tool_id=synapse_query&" target="_blank">at Synapse</a> + +Example Query: + +select * from entity where parentId=="syn300013" + + + + diff -r 93c4d2fad9af -r 353be5809eeb synapse_interface/tool_dependencies.xml --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/synapse_interface/tool_dependencies.xml Mon Jan 27 14:17:49 2014 -0500 @@ -0,0 +1,13 @@ + + + + + + synapseclient == 0.5.1 + + + +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. + + + diff -r 93c4d2fad9af -r 353be5809eeb synapse_query.xml --- a/synapse_query.xml Wed Oct 24 23:31:13 2012 -0700 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,94 +0,0 @@ - - Query Synapse - $script_file - - - - - - - - - - - - ", 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) - -]]> - - - -Install R SynapseClient:: - - 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>`_ - -Example Query: - -select * from entity where parentId=="syn300013" - - - - \ No newline at end of file