0
|
1 #!/usr/bin/env python
|
|
2 """Download a dataset from Synapse into Galaxy"""
|
|
3
|
|
4 import argparse
|
|
5 import json
|
|
6 import synapseclient
|
|
7 import sys
|
|
8
|
|
9 def saveMetadata(entity, metadataPathname):
|
|
10 fp = open(metadataPathname, "w")
|
|
11 entityMetadata = dict(entity.properties.items()
|
|
12 + entity.annotations.items())
|
|
13 jsonMetadata = json.dumps(entityMetadata)
|
|
14 fp.write("%s\n" % (jsonMetadata))
|
|
15 fp.close()
|
|
16
|
|
17 def saveData(entity, dataPathname):
|
|
18 fpIn = open(entity.path)
|
|
19 fpOut = open(dataPathname, "w")
|
|
20 for row in fpIn:
|
|
21 fpOut.write(row)
|
|
22 fpIn.close()
|
|
23 fpOut.close()
|
|
24
|
|
25 def main():
|
|
26 parser = argparse.ArgumentParser()
|
|
27 parser.add_argument("entityId", type=str)
|
|
28 parser.add_argument("email", type=str)
|
|
29 parser.add_argument("outputMetadataFile", type=str)
|
|
30 parser.add_argument("outputDataFile", type=str)
|
|
31 parser.add_argument("--apiKey", type=str, default=None)
|
|
32 parser.add_argument("--password", type=str, default=None)
|
|
33 args = parser.parse_args()
|
|
34
|
|
35 syn = synapseclient.Synapse()
|
|
36 assert(args.apiKey != None or args.password != None)
|
|
37 try:
|
|
38 if args.apiKey is not None:
|
|
39 syn.login(email=args.email, apiKey=args.apiKey)
|
|
40 else:
|
|
41 syn.login(email=args.email, password = args.password)
|
|
42 except:
|
|
43 print "Login Unsuccessful\n"
|
|
44 sys.exit(-1)
|
|
45 else:
|
|
46 try:
|
|
47 entity=syn.get(args.entityId)
|
|
48 except:
|
|
49 exc_type, exc_value, exc_traceback = sys.exc_info()
|
|
50 lines = traceback.format_exception(exc_type, exc_value,
|
|
51 exc_traceback)
|
|
52 allLines = ''.join('!! ' + line for line in lines)
|
|
53 print "Unsuccessful: error %s\n" % allLines
|
|
54 sys.exit(-1)
|
|
55 else:
|
|
56 saveMetadata(entity, args.outputMetadataFile)
|
|
57 saveData(entity, args.outputDataFile)
|
|
58 sys.exit(0)
|
|
59
|
|
60 if __name__ == "__main__":
|
|
61 main()
|
|
62
|
|
63
|