def list(self, args): c = self.ctx.conn(args) iadmin = c.sf.getAdminService() from omero.rtypes import unwrap from omero.util.text import TableBuilder list_of_dn_user_maps = unwrap(iadmin.lookupLdapAuthExperimenters()) if list_of_dn_user_maps is None: return count = 0 tb = TableBuilder("#") if args.style: tb.set_style(args.style) tb.cols(["Id", "OmeName", "DN"]) for map in list_of_dn_user_maps: for dn, id in map.items(): try: exp = iadmin.getExperimenter(id) except: self.ctx.err("Bad experimenter: %s" % id) tb.row(count, *(id, exp.omeName.val, dn)) count += 1 self.ctx.out(str(tb.build()))
def list(self, args): c = self.ctx.conn(args) iadmin = c.sf.getAdminService() import omero from omero.rtypes import unwrap from omero.util.text import TableBuilder try: list_of_dn_user_maps = unwrap(iadmin.lookupLdapAuthExperimenters()) if list_of_dn_user_maps is None: return count = 0 tb = TableBuilder("#") tb.cols(["Id", "OmeName", "DN"]) for map in list_of_dn_user_maps: for dn, id in map.items(): try: exp = iadmin.getExperimenter(id) except: self.ctx.err("Bad experimenter: %s" % id) tb.row(count, *(id, exp.omeName.val, dn)) count += 1 self.ctx.out(str(tb.build())) except omero.SecurityViolation, sv: self.ctx.die(131, "SecurityViolation: Must be an admin to lists DNs")
def list(self, args): c = self.ctx.conn(args) iadmin = c.sf.getAdminService() from omero.rtypes import unwrap from omero.util.text import TableBuilder list_of_dn_user_maps = unwrap(iadmin.lookupLdapAuthExperimenters()) if list_of_dn_user_maps is None: return count = 0 tb = TableBuilder("#") if args.style: tb.set_style(args.style) tb.cols(["Id", "OmeName", "DN"]) for map in list_of_dn_user_maps: for dn, id in list(map.items()): try: exp = iadmin.getExperimenter(id) except: self.ctx.err("Bad experimenter: %s" % id) tb.row(count, *(id, exp.omeName.val, dn)) count += 1 self.ctx.out(str(tb.build()))
def list(self, args): c = self.ctx.conn(args) iadmin = c.sf.getAdminService() import omero from omero.rtypes import unwrap from omero.util.text import TableBuilder try: list_of_dn_user_maps = unwrap(iadmin.lookupLdapAuthExperimenters()) if list_of_dn_user_maps is None: return count = 0 tb = TableBuilder("#") tb.cols(["Id", "OmeName", "DN"]) for map in list_of_dn_user_maps: for dn, id in map.items(): try: exp = iadmin.getExperimenter(id) except: self.ctx.err("Bad experimenter: %s" % id) tb.row(count, *(id, exp.omeName.val, dn)) count += 1 self.ctx.out(str(tb.build())) except omero.SecurityViolation: self.ctx.die(131, "SecurityViolation: Must be an admin to lists DNs")
def stat_screens(query): tb = TableBuilder("Screen") tb.cols(["ID", "Plates", "Wells", "Images", "Planes", "Bytes"]) plate_count = 0 well_count = 0 image_count = 0 plane_count = 0 byte_count = 0 for study, screens in sorted(studies().items()): for screen, plates_expected in screens.items(): params = ParametersI() params.addString("screen", screen) rv = unwrap(query.projection(( "select s.id, count(distinct p.id), " " count(distinct w.id), count(distinct i.id)," " sum(cast(pix.sizeZ as long) * pix.sizeT * pix.sizeC), " " sum(cast(pix.sizeZ as long) * pix.sizeT * pix.sizeC * " " pix.sizeX * pix.sizeY * 2) " "from Screen s " "left outer join s.plateLinks spl " "left outer join spl.child as p " "left outer join p.wells as w " "left outer join w.wellSamples as ws " "left outer join ws.image as i " "left outer join i.pixels as pix " "where s.name = :screen " "group by s.id"), params)) if not rv: tb.row(screen, "MISSING", "", "", "", "", "") else: for x in rv: plate_id, plates, wells, images, planes, bytes = x plate_count += plates well_count += wells image_count += images if planes: plane_count += planes if bytes: byte_count += bytes else: bytes = 0 if plates != len(plates_expected): plates = "%s of %s" % (plates, len(plates_expected)) tb.row(screen, plate_id, plates, wells, images, planes, filesizeformat(bytes)) tb.row("Total", "", plate_count, well_count, image_count, plane_count, filesizeformat(byte_count)) print str(tb.build())
def stat_screens(query): tb = TableBuilder("Container") tb.cols(["ID", "Set", "Wells", "Images", "Planes", "Bytes"]) plate_count = 0 well_count = 0 image_count = 0 plane_count = 0 byte_count = 0 for study, containers in sorted(studies().items()): for container, set_expected in sorted(containers.items()): params = ParametersI() params.addString("container", container) if "Plate" in set_expected: expected = set_expected["Plate"] rv = unwrap(query.projection(SPW_QUERY, params)) elif "Dataset" in set_expected: expected = set_expected["Dataset"] rv = unwrap(query.projection(PDI_QUERY, params)) else: raise Exception("unknown: %s" % set_expected.keys()) if not rv: tb.row(container, "MISSING", "", "", "", "", "") else: for x in rv: plate_id, plates, wells, images, planes, bytes = x plate_count += plates well_count += wells image_count += images if planes: plane_count += planes if bytes: byte_count += bytes else: bytes = 0 if plates != len(expected): plates = "%s of %s" % (plates, len(expected)) tb.row(container, plate_id, plates, wells, images, planes, filesizeformat(bytes)) tb.row("Total", "", plate_count, well_count, image_count, plane_count, filesizeformat(byte_count)) print str(tb.build())
def display(self, rv, cols=None, style=None, idsonly=False): import omero.all import omero.rtypes from omero.util.text import TableBuilder has_details = [] tb = TableBuilder("#") if style: tb.set_style(style) for idx, object_list in enumerate(rv): klass = "Null" id = "" values = {} # Handling for simple lookup if not idsonly and len(object_list) == 1 and \ isinstance(object_list[0], omero.rtypes.RObjectI): has_details.append(idx) o = object_list[0].val if o: tb.cols(["Class", "Id"]) klass = o.__class__.__name__ id = o.id.val for k, v in list(o.__dict__.items()): values[k] = self.unwrap(v) values = self.filter(values) tb.cols(list(values.keys())) tb.row(idx, klass, id, **values) # Handling for true projections else: indices = list(range(1, len(object_list) + 1)) if cols is not None: tb.cols(cols) else: tb.cols(["Col%s" % x for x in indices]) values = tuple([self.unwrap(x) for x in object_list]) tb.row(idx, *values) self.ctx.out(str(tb.build())) return has_details
def display(self, rv, cols=None, style=None, idsonly=False): import omero.all import omero.rtypes from omero.util.text import TableBuilder has_details = [] tb = TableBuilder("#") if style: tb.set_style(style) for idx, object_list in enumerate(rv): klass = "Null" id = "" values = {} # Handling for simple lookup if not idsonly and len(object_list) == 1 and \ isinstance(object_list[0], omero.rtypes.RObjectI): has_details.append(idx) o = object_list[0].val if o: tb.cols(["Class", "Id"]) klass = o.__class__.__name__ id = o.id.val for k, v in o.__dict__.items(): values[k] = self.unwrap(v) values = self.filter(values) tb.cols(values.keys()) tb.row(idx, klass, id, **values) # Handling for true projections else: indices = range(1, len(object_list) + 1) if cols is not None: tb.cols(cols) else: tb.cols(["Col%s" % x for x in indices]) values = tuple([self.unwrap(x) for x in object_list]) tb.row(idx, *values) self.ctx.out(str(tb.build())) return has_details
def stat_plates(query, screen, images=False): params = ParametersI() params.addString("screen", screen) obj = query.findByQuery(( "select s from Screen s " "where s.name = :screen"), params) if not obj: raise Exception("unknown screen: %s" % screen) if images: q = ("select %s from Image i " "join i.wellSamples ws join ws.well w " "join w.plate p join p.screenLinks sl " "join sl.parent s where s.name = :screen") limit = 1000 found = 0 count = unwrap(query.projection( q % "count(distinct i.id)", params ))[0][0] print >>stderr, count params.page(0, limit) q = q % "distinct i.id" q = "%s order by i.id" % q while count > 0: rv = unwrap(query.projection(q, params)) count -= len(rv) found += len(rv) params.page(found, limit) for x in rv: yield x[0] return plates = glob(join(screen, "plates", "*")) plates = map(basename, plates) tb = TableBuilder("Plate") tb.cols(["PID", "Wells", "Images"]) well_count = 0 image_count = 0 for plate in plates: params.addString("plate", plate) rv = unwrap(query.projection(( "select p.id, count(distinct w.id), count(distinct i.id)" " from Screen s " "left outer join s.plateLinks spl join spl.child as p " "left outer join p.wells as w " "left outer join w.wellSamples as ws " "left outer join ws.image as i " "where s.name = :screen and p.name = :plate " "group by p.id"), params)) if not rv: tb.row(plate, "MISSING", "", "") else: for x in rv: plate_id, wells, images = x well_count += wells image_count += images tb.row(plate, plate_id, wells, images) tb.row("Total", "", well_count, image_count) print str(tb.build())
def stat_plates(query, screen, images=False): params = ParametersI() params.addString("screen", screen) obj = query.findByQuery(("select s from Screen s " "where s.name = :screen"), params) if not obj: raise Exception("unknown screen: %s" % screen) if images: q = ("select %s from Image i " "join i.wellSamples ws join ws.well w " "join w.plate p join p.screenLinks sl " "join sl.parent s where s.name = :screen") limit = 1000 found = 0 count = unwrap(query.projection(q % "count(distinct i.id)", params))[0][0] print >> stderr, count params.page(0, limit) q = q % "distinct i.id" q = "%s order by i.id" % q while count > 0: rv = unwrap(query.projection(q, params)) count -= len(rv) found += len(rv) params.page(found, limit) for x in rv: yield x[0] return plates = glob(join(screen, "plates", "*")) plates = map(basename, plates) tb = TableBuilder("Plate") tb.cols(["PID", "Wells", "Images"]) well_count = 0 image_count = 0 for plate in plates: params.addString("plate", plate) rv = unwrap( query.projection( ("select p.id, count(distinct w.id), count(distinct i.id)" " from Screen s " "left outer join s.plateLinks spl join spl.child as p " "left outer join p.wells as w " "left outer join w.wellSamples as ws " "left outer join ws.image as i " "where s.name = :screen and p.name = :plate " "group by p.id"), params)) if not rv: tb.row(plate, "MISSING", "", "") else: for x in rv: plate_id, wells, images = x well_count += wells image_count += images tb.row(plate, plate_id, wells, images) tb.row("Total", "", well_count, image_count) print str(tb.build())