Skip to main content

A comprehensive Python package for fractal dimension calculation and multifractal analysis

Project description

FracDimPy

Python Version License: GPL v3 Version

一个全面的Python分形维数计算与多重分形分析工具包

English | 简体中文


📖 简介

FracDimPy 是一个功能强大、易于使用的Python软件包,专门用于分形维数计算和多重分形分析。无论您是研究分形几何的科研人员,还是需要分析复杂数据的工程师,FracDimPy都能为您提供专业、准确的分析工具。

✨ 主要特性

  • 🔢 多种单分形方法

    • Hurst指数法 (R/S分析)
    • 盒计数法 (Box-counting)
    • 信息维数法 (Information Dimension)
    • 关联维数法 (Correlation Dimension)
    • 结构函数法 (Structure Function)
    • 变差函数法 (Variogram)
    • 沙盒法 (Sandbox)
    • 去趋势波动分析 (DFA)
  • 📊 多重分形分析

    • 一维曲线多重分形分析
    • 二维图像多重分形分析
    • 多重分形去趋势波动分析 (MF-DFA)
    • 自定义尺度序列
  • 🎨 分形生成器

    • 经典分形:Cantor集、Sierpinski三角形/地毯、Koch曲线、Menger海绵等
    • 随机分形:布朗运动、Lévy飞行、自回避行走、扩散限制聚集(DLA)
    • 分形曲线:FBM曲线、Weierstrass-Mandelbrot函数、Takagi曲线
    • 分形曲面:FBM曲面、Weierstrass-Mandelbrot曲面、Takagi曲面
  • 📈 丰富的可视化

    • 自动生成专业图表
    • 双对数图拟合
    • 多重分形谱展示
    • 可定制的绘图选项
  • 💾 灵活的数据处理

    • 支持多种数据格式 (CSV, Excel, TXT, NPY, 图像等)
    • 自动数据预处理
    • 结果导出功能

🚀 快速开始

安装

从PyPI安装(推荐)

# 基础安装
pip install FracDimPy

# 完整安装(包含所有可选依赖)
pip install FracDimPy[full]

从源码安装

git clone https://github.com/songLe/FracDimPy.git
cd FracDimPy
pip install -e .

详细安装说明请参阅 INSTALLATION.md

基本使用

示例1:计算时间序列的Hurst指数

import numpy as np
from fracDimPy import hurst_dimension

# 生成测试数据
data = np.random.randn(1000).cumsum()

# 计算Hurst指数
D, result = hurst_dimension(data, method='RS', show_plot=True)

print(f"分形维数: {D:.4f}")
print(f"Hurst指数: {result['H']:.4f}")

示例2:盒计数法分析图像

from fracDimPy import box_counting
import matplotlib.pyplot as plt
import matplotlib.image as mpimg

# 读取图像
img = mpimg.imread('fractal_image.png')

# 计算分形维数
D, result = box_counting(img, show_plot=True)

print(f"盒计数维数: {D:.4f}")
print(f"拟合优度 R²: {result['r_squared']:.4f}")

示例3:多重分形分析

from fracDimPy import multifractal_curve
import numpy as np

# 读取数据
data = np.loadtxt('curve_data.txt')

# 多重分形分析
result = multifractal_curve(
    data,
    q_range=(-10, 10),
    show_plot=True,
    save_path='mf_result.png'
)

print(f"多重分形谱宽度 Δα: {result['delta_alpha']:.4f}")
print(f"奇异性强度 Δf: {result['delta_f']:.4f}")

示例4:生成分形图案

from fracDimPy import generate_sierpinski, generate_koch_snowflake
import matplotlib.pyplot as plt

# 生成Sierpinski三角形
sierpinski = generate_sierpinski(level=6)

# 生成Koch雪花
snowflake = generate_koch_snowflake(level=5)

# 可视化
fig, (ax1, ax2) = plt.subplots(1, 2, figsize=(12, 6))
ax1.scatter(sierpinski[:, 0], sierpinski[:, 1], s=1, c='blue')
ax1.set_title('Sierpinski Triangle')
ax1.axis('equal')

ax2.plot(snowflake[:, 0], snowflake[:, 1], 'r-', linewidth=0.5)
ax2.set_title('Koch Snowflake')
ax2.axis('equal')

plt.show()

📚 文档目录


📦 模块说明

1. 单分形模块 (monofractal)

提供多种单分形维数计算方法:

方法 函数名 适用数据类型 说明
Hurst指数 hurst_dimension() 1D时间序列 R/S分析、修正R/S、DFA
盒计数法 box_counting() 1D/2D/3D 最常用的分形维数计算方法
信息维数 information_dimension() 点集数据 基于信息熵的维数
关联维数 correlation_dimension() 点集数据 基于关联积分
结构函数 structural_function() 1D曲线 适用于自仿射曲线
变差函数 variogram_method() 1D/2D 地统计学方法
沙盒法 sandbox_method() 点集/图像 局部尺度分析
DFA dfa() 1D时间序列 去趋势波动分析

2. 多重分形模块 (multifractal)

提供多重分形分析工具:

函数 说明 输出
multifractal_curve() 一维曲线多重分形分析 配分函数、广义维数、多重分形谱
multifractal_image() 二维图像多重分形分析 奇异性指数、多重分形特征
mf_dfa() 多重分形DFA 波动函数、Hurst指数谱

3. 分形生成器 (generator)

生成各种理论和随机分形:

曲线类 (1D):

  • generate_fbm_curve() - 分数布朗运动曲线
  • generate_wm_curve() - Weierstrass-Mandelbrot函数
  • generate_takagi_curve() - Takagi曲线
  • generate_koch_curve() - Koch曲线
  • generate_brownian_motion() - 布朗运动
  • generate_levy_flight() - Lévy飞行

曲面类 (2D):

  • generate_fbm_surface() - 分数布朗运动曲面
  • generate_wm_surface() - WM曲面
  • generate_takagi_surface() - Takagi曲面

图案类 (几何分形):

  • generate_cantor_set() - Cantor集
  • generate_sierpinski() - Sierpinski三角形
  • generate_sierpinski_carpet() - Sierpinski地毯
  • generate_vicsek_fractal() - Vicsek分形
  • generate_koch_snowflake() - Koch雪花
  • generate_dla() - 扩散限制聚集
  • generate_menger_sponge() - Menger海绵(3D)

4. 工具模块 (utils)

  • 数据读写 (data_io)
  • 可视化工具 (plotting)

🔬 应用领域

FracDimPy可应用于多个科学和工程领域:

  • 地球科学:地形分析、地震数据、裂缝网络
  • 材料科学:多孔介质、表面粗糙度、纳米结构
  • 生物医学:DNA序列、蛋白质折叠、医学影像
  • 金融分析:股票价格、市场波动、风险评估
  • 图像处理:纹理分析、模式识别、图像分割
  • 环境科学:河流网络、云图分析、污染扩散
  • 物理学:湍流、相变、混沌系统

📊 示例与数据

examples 目录包含丰富的示例代码和测试数据:

examples/
├── monofractal/          # 单分形方法示例
│   ├── test_hurst.py
│   ├── test_box_counting_*.py
│   └── ...
├── multifractal/         # 多重分形示例
│   ├── test_mf_curve_*.py
│   ├── test_mf_image.py
│   └── ...
└── generator/            # 分形生成示例
    ├── test_koch.py
    ├── test_dla.py
    └── ...

运行示例:

cd examples/monofractal
python test_hurst.py

详见 examples/README.md


🛠️ 依赖项

核心依赖

  • Python >= 3.8
  • NumPy >= 1.20.0
  • SciPy >= 1.7.0
  • Matplotlib >= 3.3.0
  • Pandas >= 1.3.0

可选依赖

  • opencv-python - 高级图像处理
  • Pillow - 图像读写

完整依赖列表请参阅 pyproject.toml


🤝 贡献

欢迎各种形式的贡献!无论是报告bug、提出新功能建议,还是提交代码改进。

请参阅 CONTRIBUTING.md 了解详细的贡献指南。

贡献者


📄 许可证

本项目采用 GNU General Public License v3.0 许可证 - 详见 LICENSE 文件


📮 联系方式


📝 引用

如果您在研究中使用了FracDimPy,请引用:

@software{fracdimpy2024,
  author = {Zhile Han},
  title = {FracDimPy: A Comprehensive Python Package for Fractal Dimension Calculation and Multifractal Analysis},
  year = {2024},
  url = {https://github.com/Kecoya/FracDimPy},
  version = {0.1.0}
}

🙏 致谢

感谢所有为分形理论和算法实现做出贡献的研究者和开源社区成员。


⭐ Star History

如果这个项目对您有帮助,请给它一个⭐️!


🔗 相关项目


⬆ 返回顶部

Made with ❤️ by Zhile Han

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

fracdimpy-0.1.1.tar.gz (60.9 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

fracdimpy-0.1.1-py3-none-any.whl (67.7 kB view details)

Uploaded Python 3

File details

Details for the file fracdimpy-0.1.1.tar.gz.

File metadata

  • Download URL: fracdimpy-0.1.1.tar.gz
  • Upload date:
  • Size: 60.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.0

File hashes

Hashes for fracdimpy-0.1.1.tar.gz
Algorithm Hash digest
SHA256 ebefa22826a40b229d155615c86cc52249d4cd84033c93d987853c61c102aa94
MD5 17a8d795983686592101397ef3a8a59d
BLAKE2b-256 a16398e8fd2f93d31f6fc549a3c6c5e3ffc76544e29362983da756575fc37272

See more details on using hashes here.

File details

Details for the file fracdimpy-0.1.1-py3-none-any.whl.

File metadata

  • Download URL: fracdimpy-0.1.1-py3-none-any.whl
  • Upload date:
  • Size: 67.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.0

File hashes

Hashes for fracdimpy-0.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 42861b10a5ac225d0084deb3512c48b9b24c1e3dbeeaab9f8302c909fe192805
MD5 6237ac5b795e401a59c5be4d6151e6f7
BLAKE2b-256 b52056723591f422cfb6dcdafc56e1447885bafa606083106bed4801a34da119

See more details on using hashes here.

Supported by

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