Exemple #1
0
    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,
            }]
        }])
Exemple #2
0
    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])
Exemple #3
0
        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')
Exemple #6
0
    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')
Exemple #7
0
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')
Exemple #8
0
    # 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()
Exemple #9
0
                                 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')