1
2
3 """
4 Startup plugin for command-line exporter
5
6 Copyright 2009 Glencoe Software, Inc. All rights reserved.
7 Use is subject to license terms supplied in LICENSE.txt
8
9 """
10
11 import os
12 import sys
13
14 from omero.cli import BaseControl, CLI, NewFileType
15
16 HELP = """Support for exporting data in XML and TIFF formats
17
18 Example Usage:
19 omero export --file new.ome.tif Image:1
20 omero export --file new.ome.xml --type XML Image:1
21 omero export --file output-dir --iterate Dataset:2
22
23 If --iterate is used used, the only supported obj is Dataset:<id>
24 """
25
26
27
28 DEFAULT_READ_LENGTH = 1000*1000
29
30
32
49
51
52 img = args.obj
53 if 0 > img.find(":"):
54 self.ctx.die(5, "Format: 'Image:<id>'")
55
56 klass, id = img.split(":")
57 try:
58 id = long(id)
59 except:
60 self.ctx.die(3, "Bad id format: %s" % id)
61
62 images = []
63 datasets = []
64
65 if klass == "Image":
66 images.append(id)
67 self.handleImages(args, images)
68 elif klass == "Dataset":
69 if not args.iterate:
70 self.ctx.die(4, "Dataset currently only supported with"
71 " --iterate")
72 datasets.append(id)
73 self.handleDatasets(args, datasets)
74 else:
75 self.ctx.die(5, "Can't add type: %s" % klass)
76
78
79 if args.file == sys.stdout:
80 self.ctx.die(950, "Can't use stdin for datasets")
81
82 f = args.file
83 dir = f.name
84 f.close()
85 os.remove(dir)
86 os.makedirs(dir)
87
88 c = self.ctx.conn(args)
89
90 import omero
91 p = omero.sys.ParametersI()
92 p.leaves()
93
94 ds = c.sf.getContainerService().loadContainerHierarchy("Dataset",
95 datasets, p)
96 if not ds:
97 self.ctx.die(7, "No datasets found: %s",
98 ", ".join([str(x) for x in datasets]))
99
100 for d in ds:
101 for i in d.linkedImageList():
102 if i:
103 i = i.id.val
104 args.file = open(
105 os.path.join(dir, "%s.ome.%s"
106 % (i, args.type.lower())), "wb")
107 self.handleImages(args, [i])
108
152
153 try:
154 register("export", ExportControl, HELP)
155 except NameError:
156 if __name__ == "__main__":
157 cli = CLI()
158 cli.register("export", ExportControl, HELP)
159 cli.invoke(sys.argv[1:])
160