当前位置: 首页 > news >正文

常用的python库-安装与使用

常用的python库函数

  • yield关键字
  • openslide库
    • openslide库的安装-linux
    • openslide的使用
    • openslide对象的常用属性
  • cv2库
  • numpy库
  • ASAP库-multiresolutionimageinterface库
    • ASAP库的安装
    • ASAP库的使用
  • concurrent.futures.ThreadPoolExecutor
  • xml.etree.ElementTree库
  • skimage库
  • PIL.Image库 PIL.Image.Image
  • detectron2库
    • 数据增强
    • MaskFormerSemanticDatasetMapper类:
    • MetadataCatalog类常见属性
  • faiss库-聚类

yield关键字

yield关键字:定义生成器函数。
生成器函数:允许在迭代过程中逐步生成值,而不是一次性返回所有值。
yield语句会暂停函数的执行,并返回一个值给调用者。下一次调用生成器的__next()__方法,函数会从暂停的地方继续执行。
生成器函数:节省内存,按需求生成值,而不是一次性将所有值加载到内存中。

openslide库

openslide库的安装-linux

很多虚拟环境都需要额外装openslide库,所以记录一下过程:

cd /home/liusn/00apps
conda activate 环境名
pip install openslide_bin-4.0.0.5-py3-none-manylinux_2_27_x86_64.whl
pip install openslide-python==1.3.1

在这里插入图片描述

openslide的使用

  1. openslide库是一个读取和操作显微镜图像的python库,支持.svs,.vms和.tiff等格式。
  2. 支持图像金字塔格式:在不同的分辨率下访问图像数据。
  3. 可以从原始图像中提取特定区域,不需要加载整个图像。
  4. 能够访问图像的元数据,如放大倍数、图像尺寸等。
import openslide  
# 打开显微镜图像 
slide = openslide.OpenSlide(wsi_path)  # 获取特定金字塔层级的图像尺寸 
# level从0开始,0表示最高分辨率 
# w, h表示指定层级的图像宽度和高度 
w, h = slide.level_dimensions[level]  # 获取level层的下采样比例 
# 下采样比例: 特定层级的像素大小与最高分辨率像素大小的比例关系 
# 如果下采样比例为(2,2), 图像的宽和高都被缩小为原来的1/2 
factor = slide.level_downsamples[level]  
# 从显微镜图像中读取指定区域 
# location: tuple, 左上角坐标; level: 金字塔层级 
# size: (w, h), 要读取的区域大小; 返回一个PIL对象 
image = slide.read_region(location, level, size)

openslide对象的常用属性

  • self.level_downsamples[level]:获取level层的下采样比例,相对于最高分辨率而言。
  • self.level_dimension[level]:level层的图像尺寸。

cv2库

import cv2  # 在图像上绘制多边形 
# img: 要在其上绘制的图像; pts: 一个包含多边形顶点的ndarray; 
# color: 填充的颜色, (255)表示白色 
cv2.fillPoly(img, pts, color)  # 在图像上绘制文本 
# img: 要绘制文本的图像; text: 要绘制的文本字符串 
cv2.putText(img, text)

numpy库

import numpy as np  
# 找到数组中满足条件的元组索引 
# condition: bool数组, 返回所有为True的行, 列索引 
X_idx, Y_idx = np.where(condition)  # 根据条件condition进行数组的元素选择和替换 
# condition为True时, 返回value1, 否则返回value2 inst_map = np.where(condition, value1, value2)  
# 将数组按行的方向堆叠起来 
# tup: 一个列表/元组, 返回一个新数组(总行数, 列数) 
# 总行数 = 所有输入数组的行数之和 np.vstack(tup)  
selected_x[..., 0:1] # ...表示前面所有的维度

ASAP库-multiresolutionimageinterface库

处理金字塔类型的数据结构。处理多分辨率图像的python库,适合医学图像和显微镜图像的分析。支持不同分辨率的访问与操作。

ASAP库的安装

安装ASAP linux(ubuntu18.04-A6000):https://www.freesion.com/article/4489476959/
安装ASAP linux(ubuntu22.04-4x3090)的安装步骤:

  • 在ASAP官网下载最新版:ASAP 2.2,适配ubuntu2204。
    在这里插入图片描述

  • 安装ASAP的依赖包:用sudo apt-get install 命令。apt-get install是用于命令行操作的软件包管理工具,该命令是安装软件包。

  • 离线安装ASAP的安装包:dpkg -i ASAP-2.2-Ubuntu2204.deb ,手动安装本地的deb文件。

  • 看ASAP安装的位置:dpkg -L asap 。

  • 把ASAP放入PYTHONPATH,然后可以import了。

PYTHONPATH="/opt/ASAP/bin":"${PYTHONPATH}" 
export PYTHONPATH

ASAP库的使用

ASAP库是一个C++写的软件,所以不能读源码。少量的python调用文档见:https://academic.oup.com/gigascience/article/7/6/giy065/5026175

ASAP官网:https://github.com/computationalpathologygroup/ASAP/releases

通过python 访问tif数据:
在这里插入图片描述
将XML注释数据转换为tif图像,假设注释里的多边形坐标是基于图像最高分辨率级别的。
在这里插入图片描述
示例代码:

import multiresolutionimageinterface as mir  # 创建图像接口 
reader = mir.MultiResolutionImageReader()  # 打开和加载多分辨率图像文件 
mr_image = reader.open(path) # 获取level 6的图像尺寸 level=2 
w, h = mr_image.getLevelDimensions(level) 
ds = mr_image.getLevelDownsample(level) # 从level 6获取一个patch, patch左上角的坐标为(0,0), 返回的tile是一个numpy对象 
tile = image.getUCharPatch(0, 0, w, h, 6) # 读取一个 300 像素宽、200 像素高的图像块,从level=2 的 (568, 732) XY 坐标开始 
# ds是下采样倍数, 在level=2的坐标乘以ds, 得到level=0的坐标 
tile = image.getUCharPatch(int(568 * ds), int(732 * ds), 300, 200, level)  
# 存储和管理多分辨率图像相关的注释数据 
annotation_list = mir.AnnotationList() 
# 将注释数据转换以xml格式存储 
xml_repository = mir.XmlRepository(annotation_list) 
# 设置or更新xml文件的源路径 xml_repository.setSource(path) 
# 从xml文件加载数据 xml_repository.load() 
# 将注释数据转换为二值掩码 
annotation_mask = mir.AnnotationToMask() 
# 将提供的注释annotation_list转换为二值掩码 
annotation_mask.convert(annotation_list, output_path,image_dimensions, image_spacing)

concurrent.futures.ThreadPoolExecutor

管理线程池并高效地执行多线程任务,可以加快I/O密集型任务的处理速度。通过提交任务来执行并发操作。

from concurrent.futures import ThreadPoolExecutor  # 创建对象, max_workers指定最大线程数, 如果没有指定, python根据系统的线程数进行调整 
executor = ThreadPoolExecutor(max_workers=3)  # 使用map()提交多个任务 
executor.map(task, range(5))  # 关闭线程池 
executor.shutdown(wait=True)

xml.etree.ElementTree库

解析和创建xml文档,用于读取、修改和生成xml。

import xml.etree.ElementTree as ET  # 从指定文件中读取xml数据, 并解析为一个树结构 ElementTree对象 
tree = ET.parse(annot_path)  # 获取根元素: xml文档最外层的元素 
root = tree.getroot()

skimage库

import skimage  # 生成多边形的像素坐标 
# x: 一维数组, 多边形的列坐标; y: 一维数组, 多边形的行坐标 
# shape: 指定输出坐标的图像形状 
# rows, cols: 多边形内部像素的行和列坐标 
# 多边形内部是指,所有的多边形都被填充好了 
rows, cols = skimage.draw.polygon(x, y, shape)

PIL.Image库 PIL.Image.Image

from PIL import Image  image = Image.open(path)  
# 查看image的mode和channel nums 
print(f"Image mode: {image.mode}") 
print(f"Number of channels: {len(image.getbands())}")  
# 转换mode mask = mask.convert("P")

detectron2库

数据增强

  1. 允许同时增强多种数据类型,如图像、边界框、掩码。
  2. 允许应用一系列静态声明的增强。
  3. 允许添加自定义新数据类型来增强,如旋转边界框、视频剪辑。
  4. 处理和操纵增强增强应用的operations。
    如何在编写新的数据加载器时使用增强,如何编写新的增强。

MaskFormerSemanticDatasetMapper类:

  1. 从file_name读取image
  2. 将几何变换应用到image和annotation
  3. 查找合适的cropping,将其应用于image和annotation
  4. 把image和annotation变成Tensors

MetadataCatalog类常见属性

  1. stuff_classes:每个stuff类别的名称list,用于语义分割和全景分割。
  2. stuff_colors:每个stuff类别的预定义颜色(0-255),用于可视化。如果没有指定,则使用随机颜色。list[tuple(r, g, b)].
  3. ignore_label:int,gt中带有该类别标签的像素将在评估里被忽略,用于语义和全景分割任务。

faiss库-聚类

Faiss库的使用:

  1. faiss索引包括:IndexFlatL2(小规模数据集)、IndexIVFFlat(大规模数据集)、IndexHNSW(高维数据)。
  2. 查询相似度 D, I = index.search(features, k)。对每个样本,查询与其他样本的相似度,D是距离矩阵,I是索引矩阵,返回每个样本的前k个最近邻。

相关文章:

常用的python库-安装与使用

常用的python库函数 yield关键字openslide库openslide库的安装-linuxopenslide的使用openslide对象的常用属性 cv2库numpy库ASAP库-multiresolutionimageinterface库ASAP库的安装ASAP库的使用 concurrent.futures.ThreadPoolExecutorxml.etree.ElementTree库skimage库PIL.Image…...

array_walk. array_map. array_filter

1. array_walk 函数 array_walk 用于遍历数组并对每个元素执行回调函数。它不会受到数组内部指针位置的影响,会遍历整个数组。回调函数接收的前两个参数分别是元素的值和键名,如果有第三个参数,则数组所有的值都共用这个参数。 示例代码&am…...

数据仓库和商务智能:洞察数据,驱动决策

在数据管理的众多领域中,数据仓库和商务智能(BI)是将数据转化为洞察力、支持决策制定的关键环节。它们通过整合、存储和分析数据,帮助组织更好地理解业务运营,预测市场趋势,从而制定出更明智的战略。今天&a…...

Vue设计模式到底多少种?

Vue设计模式到底多少种? 很多同学问,Vue到底有多少种设计模式??各个模式到底是什么意思??又各自适合什么场景?? 这里我给大家直接说下,Vue的设计模式没有一个固定的数值…...

HTML 属性

HTML 属性 HTML(超文本标记语言)是构建网页的基础,而HTML属性则是赋予HTML元素额外功能和样式的关键。本文将详细介绍HTML属性的概念、常用属性及其应用,帮助您更好地理解和使用HTML。 一、HTML属性概述 HTML属性是HTML元素的组成部分,用于描述元素的状态或行为。属性总…...

oracle如何查询历史最大进程数?

oracle如何查询历史最大进程数? SQL> desc dba_hist_resource_limitName Null? Type---------------------------------------------------- -------- ------------------------------------SNAP_ID …...

SpringBoot单机模式,能否支持一万用户请求并发?

Spring Boot 单机模式能否支持一万用户请求并发,取决于多个因素: 硬件配置:CPU、内存、磁盘I/O和网络带宽是关键。高性能硬件能显著提升并发处理能力。 应用复杂度:业务逻辑复杂度和数据库操作频率会影响性能。复杂的业务逻辑和高…...

[前端]CRX持久化

在 Chrome 扩展开发中,持久化保存数据通常使用 Chrome 的 storage API。storage API 提供了两种存储选项:local 和 sync。使用 local 存储的数据保存在本地浏览器中,只能在同一设备上访问。使用 sync 存储的数据可以在用户登录其 Google 帐户…...

模型 替身决策

系列文章分享模型,了解更多👉 模型_思维模型目录。替身决策,换位思考,多角度决策。 1 替身决策模型的应用 1.1 替身决策模型在面试中的应用-小李的求职面试 小李是一名应届毕业生,正在积极寻找工作机会。在面试过程中…...

【系统架构设计师】体系结构文档化

目录 1. 说明2. 重要性3. 主要内容4. 编写原则5. 实践建议6. 例题6.1 例题1 1. 说明 1.绝大多数的体系结构都是抽象的,由一些概念上的构建组成。2.层的概念在任何程序设计语言中都不存在。3.要让系统分析员和程序员去实现体系结构,还必须将体系结构进行…...

Python Pandas(5):Pandas Excel 文件操作

Pandas 提供了丰富的 Excel 文件操作功能,帮助我们方便地读取和写入 .xls 和 .xlsx 文件,支持多表单、索引、列选择等复杂操作,是数据分析中必备的工具。 操作方法说明读取 Excel 文件pd.read_excel()读取 Excel 文件,返回 DataF…...

区块链技术:Facebook 重塑社交媒体信任的新篇章

在这个信息爆炸的时代,社交媒体已经成为我们生活中不可或缺的一部分。然而,随着社交平台的快速发展,隐私泄露、数据滥用和虚假信息等问题也日益凸显。这些问题的核心在于传统社交媒体依赖于中心化服务器存储和管理用户数据,这种模…...

跨平台App开发,有哪些编程语言和工具,比较一下优劣势?

1. React Native 语言:JavaScript 工具:React Native框架 优势: 跨平台支持:一套代码可同时运行在iOS和Android上。 社区支持:拥有庞大的社区和丰富的第三方库。 热更新:支持热更新,无需重新…...

Windows逆向工程入门之汇编环境搭建

公开视频 -> 链接点击跳转公开课程博客首页 -> ​​​链接点击跳转博客主页 Visual Studio逆向工程配置 基础环境搭建 Visual Studio 官方下载地址安装配置选项(后期可随时通过VS调整) 使用C的桌面开发 拓展可选选项 MASM汇编框架 配置MASM汇编项目 创建新项目 选择空…...

网络安全溯源 思路 网络安全原理

网络安全背景 网络就是实现不同主机之间的通讯。网络出现之初利用TCP/IP协议簇的相关协议概念,已经满足了互连两台主机之间可以进行通讯的目的,虽然看似简简单单几句话,就描述了网络概念与网络出现的目的,但是为了真正实现两台主机…...

《Peephole LSTM:窥视孔连接如何开启性能提升之门》

在深度学习的领域中,长短期记忆网络(LSTM)以其出色的序列数据处理能力而备受瞩目。而Peephole LSTM作为LSTM的一种重要变体,通过引入窥视孔连接,进一步提升了模型的性能。那么,窥视孔连接究竟是如何发挥作用…...

viem库

viem是一个用于和以太坊进行交互的javascript库,它提供了简单的API进行智能合约的读取和写入操作,你可以使用它来与区块链上智能合约进行交互,查询链上数据等。 基本功能 1,创建公有客户端 createPublicClient 可以创建一个链接…...

Iceberg and AIStor 的Lakehouse Architecture 权威指南

Apache Iceberg 似乎已经掀起了一场(暴风雪)数据世界。它最初由 Ryan Blue(也是 Tabular 的成员,现在是 Databricks 的名人)在 Netflix 孵化,最终被传输到它目前所在的 Apache 软件基金会。从本质上讲&…...

TCP/IP 协议图解 | TCP 协议详解 | IP 协议详解

注:本文为 “TCP/IP 协议” 相关文章合辑。 未整理去重。 TCP/IP 协议图解 退休的汤姆 于 2021-07-01 16:14:25 发布 TCP/IP 协议简介 TCP/IP 协议包含了一系列的协议,也叫 TCP/IP 协议族(TCP/IP Protocol Suite,或 TCP/IP Pr…...

第四节 docker基础之---dockerfile部署JDK

本地宿主机配置jdk 创建test目录: [rootdocker ~]# mkdir test 压缩包tomcat和jdk上传到root/test目录下: 本机部署Jdk 解压jdk: [rootdocker test]# tar -xf jdk-8u211-linux-x64.tar.gz [rootdocker test]# tar -xf apache-tomcat-8.5.…...

Arcgis/GeoScene API for JavaScript 三维场景底图网格设为透明

项目场景: 有时候加载的地图服务白色区域会露底,导致在三维场景时,露出了三维网格,影响效果,自此,我们需要将三维场景的底图设为白色或透明。 问题描述 如图所示: 解决方案: 提示…...

基于javaweb的SpringBoot电影推荐系统

🎬 秋野酱:《个人主页》 🔥 个人专栏:《Java专栏》《Python专栏》 ⛺️心若有所向往,何惧道阻且长 文章目录 运行环境开发工具适用功能说明项目介绍环境需要技术栈使用说明 运行环境 Java≥8、MySQL≥5.7 开发工具 eclipse/idea/myeclips…...

【kafka系列】Topic 与 Partition

Kafka 的 Topic(主题) 和 Partition(分区) 是数据组织的核心概念,它们的映射关系及在 Broker 上的分布直接影响 Kafka 的性能、扩展性和容错能力。以下是详细解析: 一、Topic 与 Partition 的映射关系 Top…...

大数据项目2:基于hadoop的电影推荐和分析系统设计和实现

前言 大数据项目源码资料说明: 大数据项目资料来自我多年工作中的开发积累与沉淀。 我分享的每个项目都有完整代码、数据、文档、效果图、部署文档及讲解视频。 可用于毕设、课设、学习、工作或者二次开发等,极大提升效率! 1、项目目标 本…...

[笔记] 汇编杂记(持续更新)

文章目录 前言举例解释函数的序言函数的调用栈数据的传递 总结 前言 举例解释 // Type your code here, or load an example. int square(int num) {return num * num; }int sub(int num1, int num2) {return num1 - num2; }int add(int num1, int num2) {return num1 num2;…...

同步阻塞IO和多路复用IO(epoll)的性能对比

多路复用 I/O(如 epoll)相比传统的同步阻塞 I/O 在网络性能上具有显著优势,主要原因在于其高效的事件驱动机制和对高并发的优化能力。 1. 同步阻塞 I/O 的性能瓶颈 在传统的同步阻塞 I/O 模型中,每个网络连接通常需要一个独立的线…...

前端 CSS 动态设置样式::class、:style 等技巧详解

一、:class 动态绑定类名 v-bind:class&#xff08;缩写为 :class&#xff09;可以动态地绑定一个或多个 CSS 类名。 1. 对象语法 通过对象语法&#xff0c;可以根据条件动态切换类名。 <template><div :class"{ greenText: isActive, red-text: hasError }&…...

qt widget和qml界面集成到一起

将 Qt Widgets 和 QML 界面集成在一起可以利用 QQuickWidget 或 QQuickView。以下是基本步骤: 使用 QQuickWidget 创建 Qt Widgets 项目: 创建一个基于 Widgets 的应用程序。添加 QQuickWidget: 在你的窗口或布局中添加 QQuickWidget。 例如,可以在 QMainWindow 中使用: …...

BUU30 [网鼎杯 2018]Fakebook1

是一个登录界面&#xff0c;我们先注册一个试试&#xff1a; 用dirsearch扫描出来robots.txt&#xff0c;也发现了flag.php&#xff0c;并下载user.php.bak 源代码内容&#xff1a; <?phpclass UserInfo {public $name "";public $age 0;public $blog &quo…...

信息科技伦理与道德3-2:智能决策

2.2 智能推荐 推荐算法介绍 推荐系统&#xff1a;猜你喜欢 https://blog.csdn.net/search_129_hr/article/details/120468187 推荐系统–矩阵分解 https://blog.csdn.net/search_129_hr/article/details/121598087 案例一&#xff1a;YouTube推荐算法向儿童推荐不适宜视频 …...