# HG changeset patch # User kellrott # Date 1371060086 14400 # Node ID 601d2704b3811fe6185f35475f31bfcd2e5ddf8d Uploaded diff -r 000000000000 -r 601d2704b381 synapse_interface/._synapse_create.xml Binary file synapse_interface/._synapse_create.xml has changed diff -r 000000000000 -r 601d2704b381 synapse_interface/._synapse_download.xml Binary file synapse_interface/._synapse_download.xml has changed diff -r 000000000000 -r 601d2704b381 synapse_interface/._synapse_query.xml Binary file synapse_interface/._synapse_query.xml has changed diff -r 000000000000 -r 601d2704b381 synapse_interface/synapse_create.xml --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/synapse_interface/synapse_create.xml Wed Jun 12 14:01:26 2013 -0400 @@ -0,0 +1,124 @@ + + Create Synapse + 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=https://www.google.com/accounts/o8/id&RETURN_TO_URL=${host_url}?tool_id=synapse_upload&" target="_blank">at Synapse</a> + + + + diff -r 000000000000 -r 601d2704b381 synapse_interface/synapse_download.xml --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/synapse_interface/synapse_download.xml Wed Jun 12 14:01:26 2013 -0400 @@ -0,0 +1,45 @@ + + Download Synapse Entity + 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=https://www.google.com/accounts/o8/id&RETURN_TO_URL=${host_url}?tool_id=synapse_download&" target="_blank">at Synapse</a> + + + diff -r 000000000000 -r 601d2704b381 synapse_interface/synapse_galaxy_client.py --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/synapse_interface/synapse_galaxy_client.py Wed Jun 12 14:01:26 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 000000000000 -r 601d2704b381 synapse_interface/synapse_query.xml --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/synapse_interface/synapse_query.xml Wed Jun 12 14:01:26 2013 -0400 @@ -0,0 +1,56 @@ + + Query Synapse + 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=https://www.google.com/accounts/o8/id&RETURN_TO_URL=${host_url}?tool_id=synapse_query&" target="_blank">at Synapse</a> + +Example Query: + +select * from entity where parentId=="syn300013" + + + + diff -r 000000000000 -r 601d2704b381 synapse_interface/tool_dependencies.xml --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/synapse_interface/tool_dependencies.xml Wed Jun 12 14:01:26 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