Beispiel #1
0
def find_slide():
    svs_file = request.args.get('svs_file', default="None", type=str)
    annotation_project = request.args.get('project', default="None", type=str)
    result = manifest_controller.get_project_by_similar_svs_file(svs_file)
    if 0 == len(result):
        return "未查询到相关切片。"
    # elif 1 == len(result):
    #     return redirect("/slide?slide_id=" + str(result[0][0]))
    else:
        result_string = ""
        count = 0
        for item in result:
            count += 1
            result_string += "<p><a href='" + "/slide?slide_id=" + str(
                item[0]) + "'>【" + str(count) + "】</a> "
            result_string += str(item)
            result_string += " <a target='_blank' href='" + "/freehand_annotation?slide_id=" \
                             + str(item[0]) + "&project=" + annotation_project + "'>【区域标注】</a> "
            result_string += " <a target='_blank' href='" + "/nuclei_annotation?slide_id=" \
                             + str(item[0]) + "&project=" + annotation_project + "'>【细胞核标注】</a> "
            if os.path.exists("static/data/analysis_data/" + str(item[1]) +
                              '/'):
                for mask in sorted(
                        os.listdir("static/data/analysis_data/" +
                                   str(item[1]) + '/')):
                    result_string += "<p style='text-indent:3em;'> <a target='_blank' href='" + "/slide?slide_id=" \
                                     + str(item[0]) + "&mask_url=" + mask + "'>" + str(mask) + "</a> </p>"
            result_string += " </p>"
        return result_string
def save_data(old_files_name, old_mask_region, predict_file_name):
    if old_files_name != "":
        slide_inform = manifest_controller.get_project_by_similar_svs_file(old_files_name)[0]
        analysis_data_folder = Analysis_data_root + slide_inform[1] + '/'
        if not os.path.exists(analysis_data_folder):
            os.mkdir(analysis_data_folder)

        sub = ["Cancer", "Health", ]
        result_sub = [0, 0]
        for i in range(2):
            result_sub[i] = numpy.sum(old_mask_region[:, :, i] != 0)
        result_sub_sum = numpy.sum(result_sub)
        summary_region = ""
        for i in range(2):
            result_sub[i] = round(result_sub[i] / result_sub_sum * 100, 2)
            summary_region = summary_region + sub[i] + ":" + str(result_sub[i]) + "%_"
            summary_region = summary_region[:-1]

        cv2.imwrite(analysis_data_folder + predict_file_name + '_' + summary_region + ".png", old_mask_region)
        old_mask_region[:, :, 1:] = 0
        old_mask_region = cv2.blur(old_mask_region, (20, 20))
        old_mask_region = cv2.applyColorMap(old_mask_region[:, :, 0], cv2.COLORMAP_JET)
        cv2.imwrite(analysis_data_folder + predict_file_name + '_' + summary_region + "mask_region.png",
                    old_mask_region)

        for index_temp in range(len(Patient_data[Patient_ID_column])):
            if old_files_name.find(Patient_data[Patient_ID_column][index_temp]) != -1:
                Patient_data["result_" + predict_file_name][index_temp] += summary_region + "; "
        Patient_data.to_csv("test_predict_region_only.csv")
        print(old_files_name)
def save_data(old_files_name, old_mask_region, old_mask_type, predict_file_name):
    if old_files_name != "":
        slide_inform = manifest_controller.get_project_by_similar_svs_file(old_files_name)[0]
        analysis_data_folder = Analysis_data_root + slide_inform[1] + '/'
        if not os.path.exists("test_Data"):
            os.mkdir("test_Data")
        if not os.path.exists(analysis_data_folder):
            os.mkdir(analysis_data_folder)

        sub = ["Cancer", "Health", ]
        result_sub = [0, 0]
        for i in range(2):
            result_sub[i] = numpy.sum(old_mask_region[:, :, i] != 0)
        result_sub_sum = numpy.sum(result_sub)
        summary_region = ""
        for i in range(2):
            result_sub[i] = round(result_sub[i] / result_sub_sum * 100, 2)
            summary_region = summary_region + sub[i] + ":" + str(result_sub[i]) + "%_"
            summary_region = summary_region[:-1]

        cv2.imwrite(analysis_data_folder + predict_file_name + '_' + summary_region + ".png", old_mask_region)
        # alpha = old_mask_region[:, :, 3].copy()
        old_mask_region[:, :, 1:] = 0
        old_mask_region = cv2.blur(old_mask_region, (20, 20))
        old_mask_region = cv2.applyColorMap(old_mask_region[:, :, 0], cv2.COLORMAP_JET)

        alpha = numpy.zeros((old_mask_region.shape[0], old_mask_region.shape[1]), dtype=numpy.uint8) + 255
        alpha[old_mask_region[:, :, 0] != 0] = 0
        old_mask_region[:, :, 0] = 0
        b_channel, g_channel, r_channel = cv2.split(old_mask_region)
        print(b_channel.shape, g_channel.shape, alpha.shape)
        old_mask_region = cv2.merge((b_channel, g_channel, r_channel, alpha))
        cv2.imwrite(analysis_data_folder + predict_file_name + '_' + summary_region + '_' + "mask_region.png",
                    old_mask_region)

        sub = ["ccRCC", "pRCC", "chRCC"]
        result_sub = [0, 0, 0]
        for i in range(3):
            result_sub[i] = numpy.sum(old_mask_type[:, :, i] != 0)
        result_sub_sum = numpy.sum(result_sub)
        summary_type = ""
        for i in range(3):
            result_sub[i] = round(result_sub[i] / result_sub_sum * 100, 2)
            summary_type = summary_type + sub[i] + ":" + str(result_sub[i]) + "%_"
            summary_type = summary_type[:-1]

        cv2.imwrite(analysis_data_folder + predict_file_name + "_" + summary_type + ".png", old_mask_type)

        for index_temp in range(len(Patient_data[Patient_ID_column])):
            if old_files_name.find(Patient_data[Patient_ID_column][index_temp]) != -1:
                Patient_data["result_" + predict_file_name][index_temp] += sub[numpy.argmax(result_sub)] + " " \
                                                                           + summary_region + " " + summary_type + "; "
        Patient_data.to_csv("test_predict_wjl.csv")
        print(old_files_name)
def save_data(old_files_name, old_mask_region, predict_file_name):
    if old_files_name != "":
        slide_inform = manifest_controller.get_project_by_similar_svs_file(
            old_files_name)[0]
        analysis_data_folder = Analysis_data_root + slide_inform[1] + '/'
        if not os.path.exists("test_Data"):
            os.mkdir("test_Data")
        if not os.path.exists(analysis_data_folder):
            os.mkdir(analysis_data_folder)

        result_sub = numpy.sum(old_mask_region[:, :, 1] != 0)
        cv2.imwrite(
            analysis_data_folder + predict_file_name + '_' + str(result_sub) +
            ".png", old_mask_region)

        for index_temp in range(len(Patient_data[Patient_ID_column])):
            if old_files_name.find(
                    Patient_data[Patient_ID_column][index_temp]) != -1:
                Patient_data["result_" + predict_file_name][
                    index_temp] += "region_number:" + str(result_sub)
        Patient_data.to_csv("test_predict_hby.csv")
        print(old_files_name)
            x_temp, y_temp, size_temp = item.split("/")[-1].split(
                ".")[0].split("_")
            x.append(int(x_temp))
            y.append(int(y_temp))
            size.append(int(size_temp))

        old_files_name = ""
        old_mask_region = None
        old_mask_type = None

        for index in range(len(files)):
            # print(index, old_files_name)
            if files[index] != old_files_name:
                save_data(old_files_name, old_mask_region, predict_file_name)
                old_files_name = files[index]
                slide_inform = manifest_controller.get_project_by_similar_svs_file(
                    files[index])[0]

                original_data_folder = Original_data_root + slide_inform[
                    1] + '/'

                svs_file = original_data_folder + slide_inform[2]
                oslide = openslide.OpenSlide(svs_file)

                w, h = oslide.dimensions
                old_mask_region = numpy.zeros((int(h / 100), int(w / 100), 4),
                                              dtype=numpy.uint8)

            times = int(size[index] / 100)

            old_mask_region[int(y[index] / 100):int(y[index] / 100 + times),
            int(x[index] / 100):int(x[index] / 100 + times), 1] \