示例#1
0
def del_anno_by_aid(aid):
    '''
    :param aid:
    '''
    sql_proxy.connect()
    sql = 'delete from annotations where aid = %s;' % aid
    sql_proxy.exceute_update(sql)
    sql_proxy.close()
示例#2
0
def update_annoatations_sid(aid, sid):
    '''
    :param aid: primary key
    :param sid: reference key
    '''
    sql_proxy.connect()
    sql = 'update annotations set sid = %s where aid = %s' % (sid, aid)
    sql_proxy.exceute_update(sql)
    sql_proxy.close()
示例#3
0
def insert_anno_detection(aid, detection_box):
    '''
    :param aid: 
    :param detection_box:   
    '''
    sql_proxy.connect()
    sql = 'insert into anno_detection (aid, detection_box) values (%s, \'%s\');' % (
        aid, detection_box)
    sql_proxy.exceute_update(sql)
    sql_proxy.close()
示例#4
0
def update_annotations_is_typical(aid, sid, is_typical):
    '''
    :param aid:
    :param sid:
    :param is_typical:
    return 
    '''
    sql_proxy.connect()
    sql = 'update annotations set is_typical=\'%s\' where aid=%s and sid=%s;' % (
        is_typical, aid, sid)
    sql_proxy.exceute_update(sql)
    sql_proxy.close()
示例#5
0
def update_annotations(id_list, type, has_contours):
    '''
    更新is_list集合中的type与has_contours字段
    :param type:    轮廓类型字段
    :has_contours:  是否有具体轮廓
    '''
    sql_proxy.connect()
    for id in id_list:
        sql = 'update annotations set type=\'%s\', has_contours=\'%s\' where aid=%s;' % \
                (type, has_contours, id)
        print(sql)
        sql_proxy.exceute_update(sql)
    sql_proxy.close()
示例#6
0
def update_annotations_contours(aid, center_point, cir_rect, contours):
    '''
    :param aid:
    :param center_point:
    :param cir_rect:
    :param contours:
    '''
    sql_proxy.connect()
    sql = 'update annotations set center_point=\'%s\', cir_rect=\'%s\', contours=\'%s\' where aid=%s' % \
            (center_point, cir_rect, contours, aid)
    # print(sql)
    sql_proxy.exceute_update(sql)
    sql_proxy.close()
示例#7
0
def query_all_annos():
    '''
    查询所有标注
    :return: 返回特定条件下查询标注的id集合
    '''
    sql = 'select * from annotations'

    sql_proxy.connect()
    results = sql_proxy.execute_query(sql)
    sql_proxy.close()
    id_list = list()
    for res in results:
        uints = res[9].split(';')
        if len(uints) <= 5:
            id_list.append(res[0])
    return id_list
示例#8
0
def insert_annotations(annos):
    '''
    :params annos: 
    return None
    '''
    sql = '''insert into annotations (sid, center_point, cir_rect, anno_class, \
        anno_code, type, color, is_typical, contours, is_hard, has_contours) values \
            (%s, '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s');'''
    sql_proxy.connect()
    for anno in annos:
        # print(sql % (anno.sid(), anno.center_point(), anno.cir_rect(),
        # anno.anno_class(), anno.anno_code(), anno.type(), anno.color(), anno.is_typical(),
        # anno.contours_text(), anno.is_hard(), anno.has_contours()))
        sql_proxy.exceute_update(
            sql % (anno.sid(), anno.center_point(), anno.cir_rect(),
                   anno.anno_class(), anno.anno_code(), anno.type(),
                   anno.color(), anno.is_typical(), anno.contours_text(),
                   anno.is_hard(), anno.has_contours()))
    sql_proxy.close()
示例#9
0
def query_annos(sid):
    '''
    查询切片id = sid 的所有标注
    :param sid: 与该标注关联的sid
    :return:
    '''
    sql = '''select * from annotations where sid = %s;''' % sid

    annos = list()
    sql_proxy.connect()
    results = sql_proxy.execute_query(sql)
    sql_proxy.close()
    for res in results:
        center_point = Point.str_to_Point(res[2])
        cir_rect = Rect.str_to_Rect(res[3])
        anno_class = res[4]
        anno_code = res[5]
        type = res[6]
        color = res[7]
        is_typical = res[8]
        contours = list()
        uints = res[9].split(';')
        for uint in uints:
            if uint == '':
                continue
            us = uint.split(',')
            contours.append([float(us[0]), float(us[1])])
        is_hard = res[10]
        has_contours = res[11]

        anno = Annotation(center_point, cir_rect, contours, anno_class,
                          anno_code, type, has_contours, color, is_typical)
        anno.set_is_hard(is_hard)
        anno.set_aid(res[0])
        anno.set_sid(res[1])
        annos.append(anno)

    return annos
示例#10
0
def query_slide_info(pro_method='%',
                     image_method='%',
                     slide_group='%',
                     is_positive='%',
                     slide_format='%',
                     slide_name='%',
                     zoom='%'):
    '''
    查询切片信息,以Slide_List方式返回
    :param pro_method:      制片方式 e.g. BD
    :param image_method:    成像方式 e.g. 3DHistech
    :param slide_group:     切片批次 e.g. Shengfuyou_1th
    :param is_positive:     是否阳性 e.g. Yes
    :param slide_format:    切片格式 e.g. mrxs
    :param slide_name:      切片名称 e.g. xxxxx.mrxs
    :param zoom:            切片倍率 e.g. 20x
    :return:
    '''
    slides_list = list()
    sql_proxy.connect()

    # generate sql
    sql = '''select * from slides
    where 
    pro_method      like '%s' and
    image_method    like '%s' and
    slide_group     like '%s' and
    is_positive     like '%s' and
    slide_format    like '%s' and
    slide_name      like '%s' and
    zoom            like '%s'; ''' %\
    (
        pro_method,
        image_method,
        slide_group,
        is_positive,
        slide_format,
        slide_name,
        zoom
    )

    slides = sql_proxy.execute_query(sql)
    # print(len(slides))
    for slide in slides:
        slide_path = slide[1]
        slide_name = slide[2]
        slide_group = slide[3]
        pro_method = slide[4]
        image_method = slide[5]
        mpp = slide[6]
        zoom = slide[7]
        slide_format = slide[8]
        format_trans = slide[14]
        is_positive = slide[9]
        is_hard = query_hard(slide[0])
        width = slide[10]
        height = slide[11]
        sub_class = query_sub_class(pro_method, image_method, slide_group,
                                    is_positive, slide_name)
        bounds_x = slide[12]
        bounds_y = slide[13]
        modify_info = None
        file_permission = None
        md5_info = None

        slide_info = SlideInfo(slide_path, slide_name, slide_group, pro_method,
                               image_method, mpp, zoom, slide_format,
                               format_trans, is_positive, is_hard, width,
                               height, sub_class, bounds_x, bounds_y,
                               modify_info, file_permission, md5_info)
        slide_info.set_sid(slide[0])
        # slide_info.show_info()
        slides_list.append(slide_info)

    sql_proxy.close()
    return slides_list