#!/usr/bin/env python import omero, re, os, errno import omero.scripts as scripts from omero.rtypes import rstring def export(session, dataset_id, path): admin = session.getAdminService() username = admin.getEventContext().userName gateway = session.createGateway() dataset = gateway.getDataset(dataset_id, True) directory = path % (username, dataset.getName().getValue()) try: os.makedirs(directory) except OSError, exc: if exc.errno == errno.EEXIST: pass else: raise for image in dataset.linkedImageList(): exporter = session.createExporter() exporter.addImage(image.getId().getValue()) exporter.generateTiff() image_name = re.split('[\\\/]', image.getName().getValue())[-1] handle = open(os.path.join(directory, '%s.ome.tif' % (image_name,)), 'wb') offset = 0 while True: rv = exporter.read(offset, 1024 * 1024) if not rv: break offset += len(rv) handle.write(rv) handle.close() exporter.close() client.setOutput("Message", rstring("Dataset exported successfully")) if __name__ == '__main__': client = scripts.client('Definiens_Export', 'Exports a Dataset to Definiens as OME-TIFF files', scripts.Long('Dataset_ID', optional=False, description='Specify the Dataset by ID'), ) dataset_id = client.getInput('Dataset_ID').getValue() try: export(session, dataset_id, '/mnt/bss-store.bioinformatics.ic.ac.uk/cisbic_definiens/%s/omero/%s') finally: client.closeSession()