def downloadImage(queryService, rawPixelStore, imageId, imageName):
    """
    This method downloads the first (only?) plane of the OMERO image and saves it as a local image.
    
    @param session        The OMERO session
    @param imageId        The ID of the image to download
    @param imageName    The name of the image to write. If no path, saved in the current directory. 
    """

    # get pixels with pixelsType
    query_string = "select p from Pixels p join fetch p.image i join fetch p.pixelsType pt where i.id='%d'" % imageId
    pixels = queryService.findByQuery(query_string, None)
    theX = pixels.getSizeX().getValue()
    theY = pixels.getSizeY().getValue()

    # get the plane
    theZ, theC, theT = (0,0,0)
    pixelsId = pixels.getId().getValue()
    bypassOriginalFile = True
    rawPixelStore.setPixelsId(pixelsId, bypassOriginalFile)
    plane2D = scriptUtil.downloadPlane(rawPixelStore, pixels, theZ, theC, theT)
    
    array2spider(plane2D, imageName)
예제 #2
0
import numpy
from Spider.Spiderarray import array2spider

size = 65

I = numpy.zeros((size,size))   # create a blank array

for j in range(size):
    for i in range(size):
        I[j][i] = i              # Array[row][column]

array2spider(I, 'tmp001.dat')
def omeroToEm(commandArgs):
    
    # log-in 
    client = omero.client(commandArgs["host"])
    session = client.createSession(commandArgs["username"], commandArgs["password"])
    
    # get the services we need 
    queryService = session.getQueryService()
    updateService = session.getUpdateService()
    rawFileStore = session.createRawFileStore()
    rawPixelStore = session.createRawPixelsStore()
    containerService = session.getContainerService()
    
    images = []
    
    if "image" in commandArgs:
        iId = long(commandArgs["image"])
        i = containerService.getImages("Image", [iId], None)[0]
        images.append(i)
    elif "dataset" in commandArgs:
        dIds = [long(commandArgs["dataset"])]
        images = containerService.getImages("Dataset", dIds, None)
    else:
        print "No image or dataset ID given"
        return
        
    path = None
    if "path" in commandArgs:
        path = commandArgs["path"]
        if not os.path.exists(path):
            print "Given path: %s not found. Saving images in current directory." % path
            path = None
        
    extension = "dat"   # default
    format = None
    if "extension" in commandArgs:
        ext = commandArgs["extension"]
        if ext in filetypes:
            extension = ext
            print "Saving all images as .%s files." % extension
        else:
            print "Invalid extension: %s (not supported by Spider). Using %s" % (ext, extension)
            
    
    for image in images:
        iName = image.getName().getValue()
        imageName = os.path.basename(iName) # make sure no dir separators in name. 
        imageId = image.getId().getValue()
        
        if not imageName.endswith(".%s" % extension):
            imageName = "%s.%s" % (imageName, extension)
            
        if path:
            imageName = os.path.join(path,imageName)
            
        i = 1   # don't overwrite. Add number before extension
        dirName, ext = imageName.rsplit(".", 1)
        while os.path.exists(imageName):
            imageName = "%s_%s.%s" % (dirName,i,ext)
            i +=1
            
        print "Preparing to save image: %s" % imageName
        figLegend = ""
    
        # get pixels, with pixelsType
        query_string = "select p from Pixels p join fetch p.image i join fetch p.pixelsType pt where i.id='%d'" % imageId
        pixels = queryService.findByQuery(query_string, None)
        ptype = pixels.pixelsType.getValue().getValue()
        
        sizeX = pixels.getSizeX().getValue()
        sizeY = pixels.getSizeY().getValue()
        sizeZ = pixels.getSizeZ().getValue()

        # prepare rawPixelStore
        theC, theT = (0, 0)
        pixelsId = pixels.getId().getValue()
        bypassOriginalFile = True
        rawPixelStore.setPixelsId(pixelsId, bypassOriginalFile)
        
        if sizeZ == 1:
            plane2D = scriptUtil.downloadPlane(rawPixelStore, pixels, 0, theC, theT)
            array2spider(plane2D, imageName)
        else:   
            numpyType = pixelstypetopython.toNumpy(ptype)
            array3D = zeros( (sizeZ, sizeY, sizeX), dtype=numpyType )  
            for z in range(sizeZ):
                # get each plane and add to 3D array
                plane2D = scriptUtil.downloadPlane(rawPixelStore, pixels, z, theC, theT)
                array3D[z] = plane2D
            array2spider(array3D, imageName)
예제 #4
0
import numpy
from Spider.Spiderarray import array2spider

size = 65

I = numpy.zeros((size, size))  # create a blank array

for j in range(size):
    for i in range(size):
        I[j][i] = i  # Array[row][column]

array2spider(I, 'tmp001.dat')