def test_init(self): fts = OmeroTablesFeatureStore.FeatureTableManager(None) assert fts.ft_space == 'omero.features/0.1/features' assert fts.ann_space == 'omero.features/0.1/source' fts = OmeroTablesFeatureStore.FeatureTableManager(None, namespace='x') assert fts.ft_space == 'x/features' assert fts.ann_space == 'x/source' fts = OmeroTablesFeatureStore.FeatureTableManager(None, ft_space='y', ann_space='z') assert fts.ft_space == 'y' assert fts.ann_space == 'z'
def test_create(self): ownerid = 123 session = MockSession(None, None, ownerid) fs = MockFeatureTable(None) self.mox.StubOutWithMock(OmeroTablesFeatureStore, 'list_tables') self.mox.StubOutWithMock(OmeroTablesFeatureStore, 'new_table') fsname = 'fsname' meta = [('Float', 'f')] colnames = ['x1', 'x2'] OmeroTablesFeatureStore.list_tables(session, fsname, 'x/features', ownerid=ownerid).AndReturn([]) OmeroTablesFeatureStore.new_table(session, fsname, 'x/features', 'x/source', meta, colnames).AndReturn(fs) self.mox.ReplayAll() fts = OmeroTablesFeatureStore.FeatureTableManager(session, namespace='x') assert fts.create(fsname, meta, colnames) == fs assert len(fts.fss) == 1 assert fts.fss.get((fsname, ownerid)) == fs self.mox.VerifyAll()
def test_get(self): uid = unwrap(self.user.getId()) fsname1 = 'fsname-get1' fsname2 = 'fsname-get2' fts = OmeroTablesFeatureStore.FeatureTableManager( self.sess, ft_space=self.ft_space, ann_space=self.ann_space) with pytest.raises(OmeroTablesFeatureStore.NoTableMatchException): fts.get(fsname1) self.test_create(fsname1) fs1 = fts.get(fsname1) assert fs1 is not None assert fs1 == fts.get(fsname1) self.test_create(fsname2) fs2 = fts.get(fsname2) assert fs2 is not None assert unwrap(fs1.get_table().getOriginalFile().getId()) != unwrap( fs2.get_table().getOriginalFile().getId()) fts.close() user2 = self.create_user_same_group() sess2 = self.create_client_session(user2) uid2 = unwrap(user2.getId()) fts2 = OmeroTablesFeatureStore.FeatureTableManager( sess2, ft_space=self.ft_space, ann_space=self.ann_space) # Check ownerId is respected with pytest.raises(OmeroTablesFeatureStore.NoTableMatchException): fts2.get(fsname1) with pytest.raises(OmeroTablesFeatureStore.NoTableMatchException): fts2.get(fsname1, uid2) assert fts.get(fsname1, uid) is not None fts2.close()
def test_create(self, fsname='fsname-create'): meta = [('Image', 'ImageID'), ('Roi', 'RoiID')] colnames = ('x1', 'x2') fts = OmeroTablesFeatureStore.FeatureTableManager( self.sess, ft_space=self.ft_space, ann_space=self.ann_space) fs = fts.create(fsname, meta, colnames) expected_cols = [ omero.grid.ImageColumn('ImageID', '{"columntype": "metadata"}'), omero.grid.RoiColumn('RoiID', '{"columntype": "metadata"}'), omero.grid.DoubleArrayColumn( 'x1,x2', '{"columntype": "multifeature"}', 2), ] h = fs.get_table().getHeaders() TableStoreHelper.assert_coltypes_equal(expected_cols, h) assert fs.feature_names() == colnames with pytest.raises(OmeroTablesFeatureStore.TooManyTablesException): fs = fts.create(fsname, meta, colnames) fts.close()
def test_get(self, state): ownerid = 123 session = MockSession(None, None, ownerid) fs = MockFeatureTable(session) fs.table = object() self.mox.StubOutWithMock(OmeroTablesFeatureStore, 'list_tables') self.mox.StubOutWithMock(OmeroTablesFeatureStore, 'open_table') fsname = 'fsname' fts = OmeroTablesFeatureStore.FeatureTableManager(session, namespace='x') self.mox.StubOutWithMock(fts.fss, 'get') self.mox.StubOutWithMock(fts.fss, 'insert') k = (fsname, ownerid) if state == 'opened': fts.fss.get(k).AndReturn(fs) else: if state == 'unopened': fts.fss.get(k).AndReturn(None) if state == 'closed': fsold = MockFeatureTable(None) fts.fss.get(k).AndReturn(fsold) r = (1234, None, None, None) OmeroTablesFeatureStore.list_tables(session, fsname, 'x/features', ownerid=ownerid).AndReturn([r]) OmeroTablesFeatureStore.open_table(session, r[0], 'x/source').AndReturn(fs) fts.fss.insert(k, fs) self.mox.ReplayAll() assert fts.get(fsname, ownerid) == fs self.mox.VerifyAll()