1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35 import getopt, sys, os, subprocess
36 import numpy;
37 from struct import *
38
39 import PIL
40 from PIL import Image
41 import ImageDraw
42
43 import omero
44 import omero_Constants_ice
45 from omero.rtypes import *
46 import omero.util.pixelstypetopython as pixelstopython;
47
48 try:
49 import hashlib
50 hash_sha1 = hashlib.sha1
51 except:
52 import sha
53 hash_sha1 = sha.new
54
55 -def drawTextOverlay(draw, x, y, text, colour='0xffffff'):
56 draw.text((x, y), text, fill=colour)
57
59 draw.text((x, y), text, fill=colour)
60
62 RGBInt = (red<<16)+(green<<8)+blue;
63 return int(RGBInt);
64
66 hexval = hex(int(RGB));
67 return '#'+(6-len(hexval[2:]))*'0'+hexval[2:];
68
70 first = 1;
71 string = "";
72 for value in range:
73 if(first==1):
74 string = str(value);
75 first = 0;
76 else:
77 string = string + ','+str(value)
78 return string;
79
81 for name in os.listdir(dir):
82 full_name = os.path.join(dir, name)
83
84
85 if not os.access(full_name, os.W_OK):
86 os.chmod(full_name, 0600)
87 if os.path.isdir(full_name):
88 rmdir_recursive(full_name)
89 else:
90 os.remove(full_name)
91 os.rmdir(dir)
92
94 fileHandle = open(filename)
95 h = hash_sha1()
96 h.update(fileHandle.read())
97 hash = h.hexdigest()
98 fileHandle.close()
99 return hash;
100
103
112
114 rawFileStore.setFileId(file.getId().getValue());
115 fileSize = file.getSize().getValue();
116 increment = 10000;
117 cnt = 0;
118 fileHandle = open(file.getName().getValue(), filename, 'rb');
119 done = 0
120 while(done!=1):
121 if(increment+cnt<fileSize):
122 blockSize = increment;
123 else:
124 blockSize = fileSize-cnt;
125 done = 1;
126 fileHandle.seek(cnt);
127 block = fileHandle.read(blockSize);
128 rawFileStore.write(block, cnt, blockSize);
129 cnt = cnt+blockSize;
130 fileHandle.close();
131
133 fa = omero.model.FileAnnotationI();
134 fa.setFile(file);
135 fa.setNs(omero.rtypes.rstring(nameSpace))
136 l = omero.model.ImageAnnotationLinkI();
137 l.setParent(image);
138 l.setChild(fa);
139 return updateService.saveAndReturnObject(l);
140
142 l = omero.model.ImageAnnotationLinkI();
143 l.setParent(image);
144 l.setChild(annotation);
145 return updateService.saveAndReturnObject(l);
146
148 originalFileStore = session.createRawFileStore();
149 iQuery = session.getQueryService();
150 fileDetails = iQuery.findByQuery("from OriginalFile as o where o.id = " + str(fileId) , None);
151 originalFileStore.setFileId(fileId);
152 data = '';
153 cnt = 0;
154 maxBlockSize = 10000;
155 fileSize = fileDetails.getSize().getValue();
156 while(cnt<fileSize):
157 blockSize = min(maxBlockSize, fileSize);
158 block = originalFileStore.read(cnt, blockSize);
159 data = data + block;
160 cnt = cnt+blockSize;
161 return data;
162
164 cRange = range(0,channel);
165 stack = numpy.zeros((channel,x,y),dtype=(pixels.getPixelsType().getValue().getValue()));
166 for c in cRange:
167 plane = downloadPlane(gateway, pixels, pixelsId, x, y, 0, c, 0);
168 stack[c,:,:]=plane;
169 return stack;
170
171 -def readFile(session, fileId, row, col):
172 textBlock = readFromOriginalFile(fileId);
173 arrayFromFile = numpy.fromstring(textBlock,sep=' ');
174 return numpy.reshape(arrayFromFile, (row, col));
175
177 h = hash_sha1()
178 h.update(data)
179 hash = h.hexdigest()
180 return hash;
181
191
201
202 -def uploadArray(session, image, filename, data, format):
203 file = createFileFromData(session, filename, data, format);
204 rawFileStore = session.createRawFileStore();
205 rawFileStore.setFileId(file.getId().getValue());
206 fileSize = len(data);
207 increment = 10000;
208 cnt = 0;
209 done = 0
210 while(done!=1):
211 if(increment+cnt<fileSize):
212 blockSize = increment;
213 else:
214 blockSize = fileSize-cnt;
215 done = 1;
216 block = data[cnt:cnt+blockSize];
217 rawFileStore.write(block, cnt, blockSize);
218 cnt = cnt+blockSize;
219 attachArrayToImage(session, image, file, CSV_NS)
220
222 size = data.shape;
223 row = size[0];
224 col = size[1];
225 strdata ="";
226 for r in range(0,row):
227 for c in range(0, col):
228 strdata = strdata + str(data[r,c])
229 if(c<col-1):
230 strdata = strdata+',';
231 strdata = strdata + '\n';
232 return strdata;
233
235 rawPlane = rawPixelStore.getPlane(z, c, t);
236 sizeX = pixels.getSizeX().getValue();
237 sizeY = pixels.getSizeY().getValue();
238 pixelType = pixels.getPixelsType().getValue().getValue();
239 convertType ='>'+str(sizeX*sizeY)+pixelstypetopython.toPython(pixelType);
240 convertedPlane = unpack(convertType, rawPlane);
241 remappedPlane = numpy.array(convertedPlane, dtype=(pixelType));
242 remappedPlane.resize(sizeX, sizeY);
243 return remappedPlane;
244
246 byteSwappedPlane = plane.byteswap();
247 convertedPlane = byteSwappedPlane.tostring();
248 rawPixelStore.setPlane(convertedPlane, z, c, t)
249
251 renderingEngine = session.createRenderingEngine();
252 renderingEngine.lookupPixels(pixelsId);
253 if(renderingEngine.lookupRenderingDef(pixelsId)==0):
254 renderingEngine.resetDefaults();
255 renderingEngine.lookupRenderingDef(pixelsId);
256 renderingEngine.load();
257 return renderingEngine;
258
259
261 planeDef = omero.romio.PlaneDef()
262 planeDef.t = t;
263 planeDef.z = z;
264 planeDef.x = 0;
265 planeDef.y = 0;
266 planeDef.slice = 0;
267 return planeDef;
268
270 planeDef = createPlaneDef(z, t);
271 return renderingEngine.renderAsPackedInt(planeDef);
272
274 rawPixelsStore = session.createRawPixelsStore();
275 rawPixelsStore.setPixelsId(pixelsId);
276 return rawPixelsStore;
277
279 rawFileStore = session.createRawFileStore();
280 rawFileStore.setFileId(fileId);
281 return rawFileStore;
282
284 query = "from PlaneInfo as Info where pixels.id='"+str(pixelsId)+"' orderby info.deltaT"
285 infoList = queryService.findAllByQuery(query,None)
286
287 if(asOrderedList==0):
288 map = {}
289 for info in infoList:
290 key = "z:"+str(info.theZ.getValue())+"t:"+str(info.theT.getValue())+"c:"+str(info.theC.getValue());
291 map[key] = info.deltaT.getValue();
292 return map;
293 else:
294 return infoList;
295
298
305