def test_transform(self): headers, column_cfgs = self.get_complicated_headers() tr = KeyValueListTransformer(headers, None, column_cfgs) r = tr.transform(("3", "2", "4", "1a|1b", "x", "5", "6")) assert len(r) == 6 assert r[0] == ("a1", ["1a", "1b"]) assert r[1] == ("__a2", ["2"]) assert r[2] == ("a3", ["3"]) assert r[3] == ("a4", ["*-4-*"]) assert r[4] == ("a5", ["5"]) assert r[5] == ("a6", ["6"])
def test_transform(self): headers, column_cfgs = self.get_complicated_headers() tr = KeyValueListTransformer(headers, None, column_cfgs) r = tr.transform(("3", "2", "4", "1a|1b", "x", "5", "6")) assert len(r) == 6 assert r[0] == ("a1", ["1a", "1b"]) assert r[1] == ("__a2", ["2"]) assert r[2] == ("a3", ["3"]) assert r[3] == ("a4", ["*-4-*"]) assert r[4] == ("a5", ["5"]) assert r[5] == ("a6", ["6"])
def test_transform(self): headers = ["a2", "a4", "a3", "a1"] output_configs = [ (expected(name="a1", split="|"), 3), (expected(name="a2", visible=False), 0), (expected(name="a4", clientvalue="*-{{ value }}-*"), 1), ] tr = KeyValueListTransformer(headers, output_configs) r = tr.transform(("2", "4", "x", "1a|1b")) assert len(r) == 3 assert r[0] == ("a1", ["1a", "1b"]) assert r[1] == ("__a2", ["2"]) assert r[2] == ("a4", ["*-4-*"])
def populate(self, table): def idcolumn_to_omeroclass(col): clsname = re.search('::(\w+)Column$', col.ice_staticId()).group(1) return getattr(omero.model, '%sI' % clsname) nrows = table.getNumberOfRows() data = table.readCoordinates(range(nrows)) # Don't create annotations on higher-level objects # idcoltypes = set(HeaderResolver.screen_keys.values()) idcoltypes = set((ImageColumn, WellColumn)) idcols = [] for n in xrange(len(data.columns)): col = data.columns[n] if col.__class__ in idcoltypes: omeroclass = idcolumn_to_omeroclass(col) idcols.append((omeroclass, n)) headers = [c.name for c in data.columns] if self.default_cfg or self.column_cfgs: tr = KeyValueListTransformer(headers, self.default_cfg, self.column_cfgs) else: tr = KeyValueListPassThrough(headers) mas = [] for row in izip(*(c.values for c in data.columns)): rowkvs = tr.transform(row) targets = [] for omerotype, n in idcols: if row[n] > 0: obj = omerotype(row[n], False) # Josh: disabling to prevent duplication in UI # targets.append(obj) targets.extend(self._get_additional_targets(obj)) else: log.warn("Invalid Id:%d found in row %s", row[n], row) if targets: malinks = self.create_map_annotation(targets, rowkvs) log.debug('Map:\n\t' + ('\n\t'.join( "%s=%s" % (v.name, v.value) for v in malinks[0].getChild().getMapValue()))) log.debug('Targets:\n\t' + ('\n\t'.join( "%s:%d" % (t.ice_staticId().split('::')[-1], t.id._val) for t in targets))) mas.extend(malinks) self.mapannotations = mas
def populate(self, table): def idcolumn_to_omeroclass(col): clsname = re.search('::(\w+)Column$', col.ice_staticId()).group(1) return getattr(omero.model, '%sI' % clsname) nrows = table.getNumberOfRows() data = table.readCoordinates(range(nrows)) # Don't create annotations on higher-level objects # idcoltypes = set(HeaderResolver.screen_keys.values()) idcoltypes = set((ImageColumn, WellColumn)) idcols = [] for n in xrange(len(data.columns)): col = data.columns[n] if col.__class__ in idcoltypes: omeroclass = idcolumn_to_omeroclass(col) idcols.append((omeroclass, n)) headers = [c.name for c in data.columns] if self.default_cfg or self.column_cfgs: tr = KeyValueListTransformer( headers, self.default_cfg, self.column_cfgs) else: tr = KeyValueListPassThrough(headers) mas = [] for row in izip(*(c.values for c in data.columns)): rowkvs = tr.transform(row) targets = [] for omerotype, n in idcols: if row[n] > 0: obj = omerotype(row[n], False) # Josh: disabling to prevent duplication in UI # targets.append(obj) targets.extend(self._get_additional_targets(obj)) else: log.warn("Invalid Id:%d found in row %s", row[n], row) if targets: malinks = self.create_map_annotation(targets, rowkvs) log.debug('Map:\n\t' + ('\n\t'.join("%s=%s" % ( v.name, v.value) for v in malinks[0].getChild().getMapValue()))) log.debug('Targets:\n\t' + ('\n\t'.join("%s:%d" % ( t.ice_staticId().split('::')[-1], t.id._val) for t in targets))) mas.extend(malinks) self.mapannotations = mas