def test_annotateAndAnnotated(self): # There's a bug somewhere which means annotating the table with the # version annotation, then using the table as a FileAnnotation on # an object, causes the version annotation to be lost # Closing and reopening the table seems to work (see # FeatureTable.createTable) cli, sess = self.create_client() ft = FeatureTable(client=cli, tableName=self.tableName) fts = ['a [0]', 'a [1]', 'b [0]'] ft.createTable(fts, version=self.version) tid = ft.tc.tableId self.assertEqual(self.version, unwrapVersion(ft.versiontag)) vertag = WndcharmStorage.getVersion(ft.conn, 'OriginalFile', tid) self.assertEqual(self.version, unwrapVersion(vertag)) p = omero.model.ProjectI() p.setName(wrap('tmp')) p = self.sess.getUpdateService().saveAndReturnObject(p) pid = unwrap(p.getId()) p = ft.conn.getObject('Project', pid) WndcharmStorage.addFileAnnotationTo(ft.tc, p) vertag = WndcharmStorage.getVersion(ft.conn, 'OriginalFile', tid) self.assertEqual(self.version, unwrapVersion(vertag)) self.delete('/Project', pid) self.delete('/OriginalFile', tid)
def test_getClassifierTagSet(self): pid = self.create_project('addTagTo') p = self.conn.getObject('Project', pid) classifierName = 'getClassifierTagSet' instanceName = str(uuid.uuid1()) labels = ['A', 'B'] WndcharmStorage.createClassifierTagSet( self.conn, classifierName, instanceName, labels, p) tagset = WndcharmStorage.getClassifierTagSet( classifierName, instanceName, p) self.assertIsNotNone(tagset) self.assertEqual(tagset.getNs(), omero.constants.metadata.NSINSIGHTTAGSET) tags = list(self.conn.getObjects('TagAnnotation', attributes={ 'ns': classifierName + '/' + instanceName})) self.assertEqual(len(tags), 2) self.assertEqual(sorted([t.getValue() for t in tags]), labels) for t in tags: self.assertEqual(t.getParent(), tagset) # Delete the project and tagset but not the child tags self.delete('/Project', pid) self.delete('/Annotation', [t.id for t in tags])
def test_deleteTags(self): us = self.conn.getUpdateService() tagSet = omero.model.TagAnnotationI() classifierName = 'getClassifierTagSet' instanceName = str(uuid.uuid1()) instanceNs = classifierName + '/' + instanceName tagSet.setTextValue(wrap(instanceNs)); tagSet.setNs(wrap(omero.constants.metadata.NSINSIGHTTAGSET)); tagSet = us.saveAndReturnObject(tagSet); tag = omero.model.TagAnnotationI() tag.setTextValue(wrap(str(uuid.uuid1()))); tag.setNs(wrap(instanceNs)); tag = us.saveAndReturnObject(tag); link = omero.model.AnnotationAnnotationLinkI() link.setChild(tag) link.setParent(tagSet) link = us.saveAndReturnObject(link) self.assertIsNotNone(self.getObject('TagAnnotation', tagSet.id)) self.assertIsNotNone(self.getObject('TagAnnotation', tag.id)) self.assertIsNotNone(self.getObject( 'AnnotationAnnotationLink', link.id)) WndcharmStorage.deleteTags(self.conn, tagSet) self.assertIsNone(self.getObject('TagAnnotation', tagSet.id)) self.assertIsNone(self.getObject('TagAnnotation', tag.id)) self.assertIsNone(self.getObject( 'AnnotationAnnotationLink', link.id))
def test_unlinkAnnotations(self): us = self.conn.getUpdateService() f = omero.model.OriginalFileI() f.setName(wrap(str(uuid.uuid1()))) f.setPath(wrap(str(uuid.uuid1()))) f = self.sess.getUpdateService().saveAndReturnObject(f) tag = omero.model.TagAnnotationI() tag.setTextValue(wrap(str(uuid.uuid1()))); tag = us.saveAndReturnObject(tag); link = omero.model.OriginalFileAnnotationLinkI() link.setChild(tag) link.setParent(f) link = us.saveAndReturnObject(link) self.assertIsNotNone(self.getObject('TagAnnotation', tag.id)) self.assertIsNotNone(self.getObject('OriginalFile', f.id)) self.assertIsNotNone(self.getObject( 'OriginalFileAnnotationLink', link.id)) file = self.conn.getObject('OriginalFile', unwrap(f.id)) WndcharmStorage.unlinkAnnotations(self.conn, file) self.assertIsNotNone(self.getObject('TagAnnotation', tag.id)) self.assertIsNotNone(self.getObject('OriginalFile', file.id)) self.assertIsNone(self.getObject('OriginalFileAnnotationLink', link.id)) self.delete('/OriginalFile', unwrap(f.id)) self.delete('/Annotation', unwrap(tag.id))
def test_addCommentTo(self): pid = self.create_project('addCommentTo') txt = 'This is a comment' WndcharmStorage.addCommentTo(self.conn, txt, 'Project', pid) proj = self.conn.getObject('Project', pid) a = proj.getAnnotation() self.assertIsInstance(a._obj, omero.model.CommentAnnotation) self.assertEqual(unwrap(a.getTextValue()), txt) self.delete('/Project', pid)
def test_getAttachedTableFile(self): pid = self.create_project('addFileAnnotationTo') p = self.conn.getObject('Project', pid) tc = self.Tc(self.conn) fid = unwrap(tc.table.getOriginalFile().getId()) self.assertIsNone(WndcharmStorage.getAttachedTableFile(tc, p)) WndcharmStorage.addFileAnnotationTo(tc, p) self.assertIsNotNone(WndcharmStorage.getAttachedTableFile(tc, p)) tc.close() self.delete('/Project', pid)
def test_addFileAnnotationTo(self): pid = self.create_project('addFileAnnotationTo') p = self.conn.getObject('Project', pid) tc = self.Tc(self.conn) fid = unwrap(tc.table.getOriginalFile().getId()) WndcharmStorage.addFileAnnotationTo(tc, p) proj = self.conn.getObject('Project', pid) a = proj.getAnnotation() self.assertIsInstance(a._obj, omero.model.FileAnnotation) self.assertEqual(unwrap(a.getFile().getId()), fid) tc.close() self.delete('/Project', pid)
def test_addTagTo(self): pid = self.create_project('addTagTo') txt = 'This is a tag' tid = self.create_tag(txt) tag = omero.model.TagAnnotationI(tid, False) WndcharmStorage.addTagTo(self.conn, tag, 'Project', pid) proj = self.conn.getObject('Project', pid) a = proj.getAnnotation() self.assertIsInstance(a._obj, omero.model.TagAnnotation) self.assertEqual(unwrap(a.getTextValue()), txt) self.assertEqual(unwrap(a.getId()), tid) self.delete('/Project', pid)
def checkClassifierTablesVersion(self, ct): self.assertEqual(unwrapVersion(ct.versiontag), self.version) verF = WndcharmStorage.getVersion( ct.tcF.conn, 'OriginalFile', ct.tcF.tableId) self.assertEqual(unwrapVersion(verF), self.version) verW = WndcharmStorage.getVersion( ct.tcW.conn, 'OriginalFile', ct.tcW.tableId) self.assertEqual(unwrapVersion(verW), self.version) verL = WndcharmStorage.getVersion( ct.tcL.conn, 'OriginalFile', ct.tcL.tableId) self.assertEqual(unwrapVersion(verL), self.version)
def test_featureSizes(self): ftsz = WndcharmStorage.featureSizes(['a b [12]', 'c d [3]', 'a b [14]']) self.assertEqual(len(ftsz.keys()), 2) self.assertIn('a b', ftsz) self.assertIn('c d', ftsz) self.assertEqual(ftsz['a b'], 15) self.assertEqual(ftsz['c d'], 4)
def test_addTextFileAnnotationTo(self): pid = self.create_project('addTextFileAnnotationTo') txt = 'This is\nsome text.' filename = 'addTextFileAnnotationTo.txt' description = 'Description of addTextFileAnnotationTo.txt' WndcharmStorage.addTextFileAnnotationTo( self.conn, txt, 'Project', pid, filename, description) p = self.conn.getObject('Project', pid) anns = list(p.listAnnotations()) self.assertEqual(len(anns), 1) a = anns[0] self.assertEqual(a.getFileName(), filename) self.assertEqual(a.getDescription(), description) self.assertEqual(a.getFileSize(), len(txt)) self.assertEqual(list(a.getFileInChunks())[0], txt) self.delete('/Annotation', a.getId()) self.delete('/Project', pid)
def test_createTable(self): tid = self.create_table() ft = FeatureTable(client=self.cli, tableName=self.tableName) ft.openTable(tid) self.assertEqual(self.version, unwrapVersion(ft.versiontag)) vertag = WndcharmStorage.getVersion(ft.conn, 'OriginalFile', tid) self.assertEqual(self.version, unwrapVersion(vertag)) headers = ft.tc.getHeaders() self.assertEqual(len(headers), 3) self.assertEqual([h.name for h in headers], ['id', 'a', 'b']) self.assertEqual([h.size for h in headers[1:]], [2, 1])
def test_createClassifierTagSet(self): classifierName = 'createClassifierTagSet' instanceName = str(uuid.uuid1()) labels = ['A', 'B'] WndcharmStorage.createClassifierTagSet( self.conn, classifierName, instanceName, labels) tagset = list(self.conn.getObjects('TagAnnotation', attributes={ 'textValue': classifierName + '/' + instanceName, 'ns': omero.constants.metadata.NSINSIGHTTAGSET})) self.assertEqual(len(tagset), 1) tagset = tagset[0] tags = list(self.conn.getObjects('TagAnnotation', attributes={ 'ns': classifierName + '/' + instanceName})) self.assertEqual(len(tags), 2) self.assertEqual(sorted([t.getValue() for t in tags]), labels) for t in tags: self.assertEqual(t.getParent(), tagset) self.delete('/Annotation', [tagset.getId()] + [t.id for t in tags])
def test_getVersion(self): version = str(uuid.uuid1()) tableid = self.create_table() file = omero.model.OriginalFileI(tableid, False) version = str(uuid.uuid1()) tagid = self.create_tag(version, WndcharmStorage.WNDCHARM_VERSION_NAMESPACE) tag = omero.model.TagAnnotationI(tagid, False) link = omero.model.OriginalFileAnnotationLinkI() link.setChild(tag) link.setParent(file) link = self.sess.getUpdateService().saveAndReturnObject(link) retrieved = WndcharmStorage.getVersion( self.conn, 'OriginalFile', unwrap(file.getId())) self.assertEqual(unwrapVersion(retrieved), version)
def test_assertVersionMatch(self): class MockVersion: def __init__(self, version): self.version = version def getTextValue(self): return self.version v1 = MockVersion('12.345') v2 = MockVersion('12.345') v3 = MockVersion('543.21') WndcharmStorage.assertVersionMatch(v1, v2) WndcharmStorage.assertVersionMatch(v1, v2.getTextValue()) WndcharmStorage.assertVersionMatch(v1.getTextValue(), v2) self.assertRaises( WndcharmStorage.WndcharmStorageError, WndcharmStorage.assertVersionMatch, v1, v3)
def test_versionAnnotation(self): version = str(uuid.uuid1()) created = WndcharmStorage.createVersionAnnotation(self.conn, version) retrieved = WndcharmStorage.getVersionAnnotation(self.conn, version) self.assertEqual(unwrap(created.getNs()), WndcharmStorage.WNDCHARM_VERSION_NAMESPACE) self.assertEqual(unwrapVersion(created), version) self.assertEqual(unwrap(retrieved.getNs()), WndcharmStorage.WNDCHARM_VERSION_NAMESPACE) self.assertEqual(unwrapVersion(retrieved), version) pid = self.create_project('versionAnnotation') self.assertIsNone(WndcharmStorage.getVersion(self.conn, 'Project', pid)) WndcharmStorage.addTagTo(self.conn, retrieved, 'Project', pid) a = WndcharmStorage.getVersion(self.conn, 'Project', pid) self.assertEqual(unwrap(a.getNs()), WndcharmStorage.WNDCHARM_VERSION_NAMESPACE) self.assertEqual(unwrapVersion(a), version) self.delete('/Project', pid)
def test_insert_channel_name(self): r = WndcharmStorage.insert_channel_name('a (b ()) [3]', 'ch') self.assertEqual(r, 'a (b (ch)) [3]')
def test_datasetGenerator(self): WndcharmStorage.datasetGenerator(conn, dataType, ids)
def test_parseFeatureName(self): r = WndcharmStorage.parseFeatureName('a b [321]') self.assertEqual(len(r), 2) self.assertEqual(r[0], 'a b') self.assertEqual(r[1], 321)
def test_createFeatureName(self): r = WndcharmStorage.createFeatureName('a b', 321) self.assertEqual(r, 'a b [321]')