def main(self, mex_url=None, bisque_token=None, bq=None): # Allow for testing by passing an alreay initialized session if bq is None: bq = BQSession().init_mex(mex_url, bisque_token) pars = bq.parameters() image_url = pars.get('dataset_url', None) annotation_type = pars.get('annotation_type', None) annotation_attribute = pars.get('annotation_attribute', None) value_old = pars.get('value_old', None) bq.update_mex('Starting') mex_id = mex_url.split('/')[-1] if image_url is None or len(image_url) < 2: datasets = bq.fetchxml('/data_service/dataset') datasets = [d.get('uri') for d in datasets.xpath('dataset')] else: datasets = [image_url] total = 0 changes = [] # delete annotations for each element in the dataset for ds_url in datasets: dataset = bq.fetchxml(ds_url, view='deep') dataset_name = dataset.get('name') bq.update_mex('processing "%s"' % dataset_name) refs = dataset.xpath('value[@type="object"]') for r in refs: url = r.text image = bq.fetchxml(url, view='deep') uuid = image.get('resource_uniq') modified = delete(image, value_old, ann_type=annotation_type, ann_attr=annotation_attribute) if len(modified) > 0: bq.postxml(url, image, method='PUT') total = total + len(modified) changes.append({ 'name': '%s (%s)' % (image.get('name'), image.get('resource_uniq')), 'value': '%s' % len(modified) }) changes.insert(0, {'name': 'Total', 'value': '%s' % total}) bq.finish_mex(tags=[{ 'name': 'outputs', 'tag': [{ 'name': 'deleted', 'tag': changes, }] }])
def main(self, mex_url=None, bisque_token=None, image_url=None, bq=None): # Allow for testing by passing an alreay initialized session if bq is None: bq = BQSession().init_mex(mex_url, bisque_token) bq.update_mex('Classifying...') pars = bq.parameters() image_url = pars.get('data_url', None) model_url = pars.get('model_url', None) store_on_image = pars.get('store_on_image', False) method = pars.get('method', 'points') points = int(pars.get('number_of_points', 10)) confidence = int(pars.get('confidence', 95)) border = int(pars.get('border', 0)) _, image_uniq = image_url.rsplit('/', 1) _, model_uniq = model_url.rsplit('/', 1) url = '%s/connoisseur/%s/classify:%s/method:%s/points:%s/confidence:%s/border:%s' % ( bq.bisque_root, model_uniq, image_uniq, method, points, confidence, border) # dima: the moving of the image is not of the best taste, this should be changed later if method != 'segmentation': url += '/format:xml' txt = bq.c.fetch(url, headers={ 'Content-Type': 'text/xml', 'Accept': 'text/xml' }) gobs = etree.fromstring(txt) else: color_mode = 'colors' url += '/colors:colors' filename = '%s_%s_conf%.2f_n%s_b%s.png' % ( image_uniq, color_mode, confidence, points, border) filename = bq.c.fetch(url, path=filename) image_url = upload_file(bq, filename) or '' gobs = None bq.update_mex('Storing results...') outputs = etree.Element('tag', name="outputs") img = etree.SubElement(outputs, 'tag', name="MyImage", type="image", value=image_url) if gobs is not None: img.append(gobs) if store_on_image is True: r = bq.postxml(image_url, xml=txt) bq.finish_mex(tags=[outputs])
else: etree.SubElement (mt, 'tag', name='pixel_resolution_x', type='number', value=str(res_x)) etree.SubElement (mt, 'tag', name='pixel_resolution_unit_x', value='m') t = mt.xpath('tag[@name="pixel_resolution_y"]') if len(t)>0: t[0].set('value', str(res_y)) else: etree.SubElement (mt, 'tag', name='pixel_resolution_y', type='number', value=str(res_y)) etree.SubElement (mt, 'tag', name='pixel_resolution_unit_y', value='m') if len(imu.xpath('//tag'))<1: print 'No updates needed for: %s'%image_name continue #post the image back print 'Image updated, storing %s to %s'%(image_name, image_url) print etree.tostring(imu) r = session.postxml(image_url, imu, method='POST') if r is None: print 'Uploading update failed' #print etree.tostring(r) #remove image cache cache_url = '%s?cleancache'%image_url.replace('/data_service/', '/image_service/') url = session.c.prepare_url(cache_url) r = session.c.webreq (method='GET', url=url)
pswd, bisque_root=root, create_mex=False) start = datetime.now() url = urlparse.urljoin(root, url_import) members = [] for f in files: resource = etree.Element('resource', name=os.path.basename(f), value=localpath2url(f)) print etree.tostring(resource) r = save_blob(session, resource=resource) #r = session.postblob(xml=resource) if r is None or r.get('uri') is None: print 'Upload failed for %s' % f else: members.append(r.get('uri')) print "Inserted all in: %s" % (datetime.now() - start) dataset = etree.Element('dataset', name=os.path.basename(os.path.dirname(files[0]))) for m in members: n = etree.SubElement(dataset, 'value') n.text = m #print etree.tostring(dataset) url = urlparse.urljoin(root, url_data) r = session.postxml(url, xml=etree.tostring(dataset)) print r
'tag', name='false_negative', type="number", value=str(v['false_negative'])) etree.SubElement(cc, 'tag', name='true_positive', type="number", value=str(v['true_positive'])) print 'Number of classes in model: ', len(classes_test) ################################################################## # Upload ################################################################## config = ConfigParser.ConfigParser() config.read(config_file) root = config.get('Host', 'root') or 'localhost:8080' user = config.get('Host', 'user') or 'test' pswd = config.get('Host', 'password') or 'test' session = BQSession().init_local(user, pswd, bisque_root=root, create_mex=False) url = urlparse.urljoin(root, url_data) r = session.postxml(url, xml=etree.tostring(resource)) print r.get('uri')
etree.SubElement(poly, 'tag', name='color', value='#%s%s%s' % (int2hex(r), int2hex(g), int2hex(b))) zz = random.randint(0, z) tt = random.randint(0, t) vrtx = [] for i in range(10): x = dx + random.randint(-gobs_sz, gobs_sz) y = dy + random.randint(-gobs_sz, gobs_sz) vrtx.append((x, y)) vrtx = sorted(vrtx, key=lambda x: x[0]) for v in vrtx: etree.SubElement(poly, 'vertex', x='%s' % v[0], y='%s' % v[1], z='%s' % zz, t='%s' % tt) #print etree.tostring(mex) url = session.service_url('data_service', 'mex') r = session.postxml(url, mex, method='POST') if r is None: print 'Upload failed' print 'id: %s' % r.get('resource_uniq') print 'url: %s' % r.get('uri')
polygon = '<polygon name="%s"><vertex x="%s" y="%s" /><tag name="color" value="%s" /></polygon>' polygons = [] for i in range(10): x = random.randint(0, 900) y = random.randint(0, 900) r = random.randint(0, 255) g = random.randint(0, 255) b = random.randint(0, 255) d1 = random.randint(10, 150) d2 = random.randint(10, 150) d3 = random.randint(10, 150) color = '#%s%s%s'%(int2hex(r), int2hex(g), int2hex(b)) polygon = '<polygon name="%s"><vertex x="%s" y="%s" /><vertex x="%s" y="%s" /><vertex x="%s" y="%s" /><tag name="color" value="%s" type="color" /></polygon>'%(i, x, y, x+d1, y, x+d2, y+d3, color) polygons.append(polygon) request = '<request>%s</request>'%''.join(polygons) print request url = session.service_url('data_service', 'image') url = '%s/175501/gobject'%url print url r = session.postxml(url, etree.fromstring(request), method='POST') if r is None: print 'Upload failed' print 'id: %s'%r.get('resource_uniq') print 'url: %s'%r.get('uri')
# use import service to /import/transfer activating import service r = etree.XML(session.postblob(filepath, xml=resource)).find('./') if r is None or r.get('uri') is None: print 'Upload failed' else: print 'Uploaded ID: %s, URL: %s' % (r.get('resource_uniq'), r.get('uri')) f['url'] = r.get('uri') # upload dataset dataset = etree.Element('dataset', name=dataset_name) for f in files: if 'url' not in f: continue v = etree.SubElement(dataset, 'value', type="object") v.text = f['url'] print etree.tostring(dataset) url = session.service_url('data_service') r = session.postxml(url, dataset) if r is None or r.get('uri') is None: print 'Dataset failed' else: print 'Dataset ID: %s, URL: %s' % (r.get('resource_uniq'), r.get('uri')) f['url'] = r.get('uri') session.close()
create_mex=False) path_on_bisque = 'demo/nuclei_%s/img_name' % ( datetime.now().strftime('%Y%m%dT%H%M%S')) resource = etree.Element('image', name=path_on_bisque) print etree.tostring(resource) # use import service to /import/transfer activating import service r = etree.XML(session.postblob(img_path, xml=resource)).find('./') if r is None or r.get('uri') is None: print 'Upload failed' else: print 'Uploaded ID: %s, URL: %s\n' % (r.get('resource_uniq'), r.get('uri')) print etree.tostring(r) g = etree.SubElement(r, 'gobject', type='My nuclei') for a in annos: p = etree.SubElement(g, 'point') etree.SubElement(p, 'tag', name='fish', value=a) print etree.tostring(r) url = session.service_url('data_service') r = session.postxml(url, r) if r is None or r.get('uri') is None: print 'Adding annotations failed' else: print 'Image ID: %s, URL: %s' % (r.get('resource_uniq'), r.get('uri'))
################################################################## config = ConfigParser.ConfigParser() config.read('config.cfg') root = config.get('Host', 'root') or 'localhost:8080' user = config.get('Host', 'user') or 'test' pswd = config.get('Host', 'password') or 'test' session = BQSession().init_local(user, pswd, bisque_root=root, create_mex=False) url = session.service_url('data_service', 'image') path = sys.argv[1] r = R[1] c = C[0] field = FIELD[0] resource = create_resource(path, name, r, c, field) print etree.tostring(resource) r = session.postxml(url, resource, method='POST') print r.get('uri') #r = save_blob(session, resource=request) #if r is None or r.get('uri') is None: # print 'Upload failed' #else: # print 'id: %s'%r.get('resource_uniq') # print 'url: %s'%r.get('uri')