Skip to main content

Draw Mtx As Thumbnail

Project description

Draw Mtx As Thumbnail - 将 Mtx 画为缩略图

help

样例

aver
平均值
real
不处理
log
取 0 次 log
abs
绝对值

安装

pip3 install MtxDrawer -U

自动安装依赖并注册一个命令mtx-drawer

【注意】:由于依赖库的版本更新可能导致旧版本不再能运行,请注意保持此工具为最新版本。

🔥预发布版本: Cython优化

自行实现的高性能读取算法:

  1. 内存需求大幅降低,不再读取整个矩阵处理;
  2. 读取加速,没测过之前的带宽,但肉眼可见的更快;
  3. 兼容性提升,zero base 和 one base 都能读;

PS:能跑满一般机械硬盘的带宽,但相比我这个移动硬盘的带宽(峰值2.9GB/s)还是慢了很多。

此版本已预先发布,由于其执行期间暂时无法使用ctrl + c强制终止,因此还未在pypi上发布,不care这个问题的话可以先通过如下方式安装:

pip3 install cython # 首先要有cython环境
pip3 install git+https://github.com/Rhythmicc/DrawMtxAsThumbnail.git -U

运行

mtx-drawer draw-one [--force] [--log-times <n: int>] [--mat-size <n: int>] [--block-size <n: int>] <filepath> <-ops <aver | abs | real | log>... >
mtx-drawer draw [--force] [--log-times <n: int>] [--mat-size <n: int>] [--block-size <n: int>] <-ops <aver | abs | real | log>... >

解释

  1. 第一条命令是为文件<filepath>画缩略图 (filepath无需是 mtx 文件,但需要能被scipy.io.mmread读取),其中<ops>是必填的多选参数只能在命令末尾赋值,用于指定缩略图的类型,其中<aver>表示平均值,<abs>表示绝对值,<real>表示实际值,<log>表示对数值进行对数变换; force表示强制重新画缩略图默认为否,log-times表示画缩略图对像素值取 log 的次数默认为 2,mat-size表示缩略图的尺寸(默认是 200 * 200 的图像),block-size直接设置块大小(开启次选项后将覆盖掉mat-size参数)。
  2. 第二条命令会递归搜索当前路径下的所有 mtx 文件并绘制缩略图,参数含义与上一条描述一致。

注意: ops 作为必填多选参数,必须在命令的末尾为其赋值,否则会报错。

例子

mtx-drawer draw-one 2.mtx --force --log-times 0 -ops aver abs log real # 一次性绘制2.mtx的四种图,log取0次,强制替换
mtx-drawer draw-one 2.mtx  -ops aver abs log real # 一次性绘制2.mtx的四种图,log取2次,不强制替换
mtx-drawer draw --force -ops aver abs log # 绘制当前目录及子目录下的全部mtx文件的三种图,强制替换
mtx-drawer draw -ops aver abs log real # 绘制当前目录及子目录下的全部mtx文件的三种图,不强制替换且log取2次

特殊说明

子矩阵划分方式:当行列不相等时,较大的属性被分为matSize块,较小的属性为rate * matSize块;其中rate为$ min(m,n)/max(m,n) $

命令行补全

基于QuickProject.Commmander开发的命令行 APP 可以提供 zsh 或 fig 的补全脚本:

mtx-drawer complete

基于 Drawer 类的自定义开发

当默认提供的四种算法无法满足需要时,可以按如下方式自行设计算法:

from MtxDrawer.Drawer import Drawer

"""
您可以通过如下方式自定义算法并通过Drawer对象的call方法来调用;
自定义算法可接受的参数将在下表中说明,此外,自定义算法必须返回一个数值用于表示color_bar的显示范围(返回1则表示-1~1)
"""

@Drawer.algorithmWrapper() # 算法装饰器
def myOwnAlgorithm(mat, extern_arg): # 参数命名要符合下表的要求,mat是下表第9项,extern_arg是下表第15项
    print(extern_arg)
    return max(abs(max([max(i) for i in mat])), abs(min([min(i) for i in mat])))


drawer = Drawer('dist/2.mtx', False, set_log-times=0, force_update=True)
drawer.call('myOwnAlgorithm', extern_arg=1)

"""
---结果---

[信息] 路径模板: "dist/2_{}.svg"
1
[信息] absVal = 1
"""
序号 合法参数 说明
1 has_aver 是否有取平均值选项 => div 是否可用
2 log-times 外部设定的取 log 的次数
3 mat-size 矩阵行列值较大的属性被分的块数
4 mtx 文件的 scipy.sparse.coo*matrix 对象,未做任何更改
5 coo_shape mtx 的尺寸
6 coo_data 矩阵的非零元值
7 coo_rows 矩阵的非零元素行索引映射到 mat 的行值
8 coo_cols 矩阵的非零元素列索引映射到 mat 的列值
9 mat 被初始化好的二维画布对象,类型为 numpy.array
10 div 子矩阵非零元数,只有当 has_aver 为 True 时才会有效
11 row_size mat 的行数
12 col_size mat 的列数
13 row_block_sz 划分的子矩阵的行数
14 col_block_sz 划分的子矩阵的列数
15 extern_* 额外的参数命名方式,需以"extern_xx=bala"的方式调用

现代 IDE 下的提示

IDE

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

MtxDrawer-0.0.23.tar.gz (81.2 kB view details)

Uploaded Source

Built Distribution

MtxDrawer-0.0.23-cp311-cp311-macosx_14_0_arm64.whl (39.4 kB view details)

Uploaded CPython 3.11 macOS 14.0+ ARM64

File details

Details for the file MtxDrawer-0.0.23.tar.gz.

File metadata

  • Download URL: MtxDrawer-0.0.23.tar.gz
  • Upload date:
  • Size: 81.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.11.6

File hashes

Hashes for MtxDrawer-0.0.23.tar.gz
Algorithm Hash digest
SHA256 6be43b4e5c8e380e07a695babe5ce41a524c78f0e4206c012a3dbf0fbdbe1055
MD5 cc73331c628af07f1edde728e88fd5c4
BLAKE2b-256 a1942179769ffc7b9087a579824855147a3fdb0a9e07e46b518a6c8e782356ef

See more details on using hashes here.

File details

Details for the file MtxDrawer-0.0.23-cp311-cp311-macosx_14_0_arm64.whl.

File metadata

File hashes

Hashes for MtxDrawer-0.0.23-cp311-cp311-macosx_14_0_arm64.whl
Algorithm Hash digest
SHA256 0456206764335335cb519e8f5cdc4fc9533543d04cb13beae5194be785c82b52
MD5 81d5cc88e5afdc96ed28c09aa6ef2b83
BLAKE2b-256 a934512b74fe6ced4e6227a3bca140595e7a14469de918f8fd5196f12d5fa2c0

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page