Omero-pychrm
Jump to navigation
Jump to search
General
BlitzGateway
- blitz_gateway - python bindings and wrappers to access an OMERO blitz server
- script location in $OMERO_HOME/lib/python/omero/gateway/
__init__.py
- where all the magic happens
BlitzGateway = _BlitzGateway
OmeroPychrm scripts
__init__.py
- empty
TableConnection.py
class PychrmStorageError(Exception): pass class Connection(object): def __init__(self, user = None, passwd = None, host = None, client = None): """A wrapper for omero.client.""" self.log = logging.getLogger(__name__) self.conn = BlitzGateway(client_obj = client) self.res = omero.client.getSession().sharedResources() def __enter__(self): return self.log.debug('Entering Connection') def __exit__(self): self.log.debug('Exiting Connection') self.conn._closeSession() class TableConnection(Connection): """A basic client-side wrapper for OMERO.tables which handles opening and closing tables.""" def __init__(self, user = None, passwd = None, host = None, client = None, tableName = None): """Create a new table handler, either by specifying user and passwd or by providing a client object (for scripts).""" # call base class constructor self.rid = self.res.repositories().descriptions[0].id.val self.tableName = tableName self.tableId = None self.table = None def close(self, parent=True): """standard cleanup stuff""" pass def openTable(self, tableId): """Opens an existing table by ID""" ofile = self.conn.getObject("OriginalFile", attributes = {'id': long(tableId)}) if not ofile: raise TableConnectionError('No table found with id:%s' % tableId) def findByName(self): """Searches for OriginalFile objects by name, does not check whether file is a table""" return self.conn.getObjects("OriginalFile", attributes = {'name': self.tableName} ) def deleteAllTables(self): """Delete all tables with tableName. Will fail if there are any annotation links.""" ofiles = self.conn.getObjects("OriginalFile", attributes = {'name': self.tableName}) ids = [f.getId() for f in ofiles] elf.conn.deleteObjects('OriginalFile', ids)
PychrmStorage.py
class PychrmStorageError(Exception): pass def parseFeatureName( name ): """Separate bin number and feature group name""" pass def createFeatureName(ft, idx): """Concatenate feature group name and feature bin number""" pass def featureSizes(names): """Return a dictionary of feature groups and corresponding numbers of features in them""" pass
Serverside UI scripts
Pychrm_build_clasifier.py
def runScript(): client = omero.scripts.client( name="Pychrm_build_clasifier.py", description="blahblah", # Plus some JobParams ) try: session = client.getSession() client.enableKeepAlive(60) scriptParams = {} # Pull the input from the UI for key in client.getInputKeys(): if client.getInput(key): scriptParams[key] = client.getInput(key, unwrap=True) message = str(scriptParams) + '\n' # Run the script message += trainClassifier(client, scriptParams) + '\n' print message client.setOutput('Message', rstring(message)) finally: client.closeSession() def trainClassifier(client, scriptParams): def createWeights(ftb, ctb, project, featureThreshold, imagesOnly): def reduceFeatures(fts, weights):