Skip to main content

sp-fitting-models

English README

超分子ポリマーのフィッティングモデルライブラリ

A Python library for fitting supramolecular polymerization data with various thermodynamic models.

概要 / Overview

このライブラリは、超分子ポリマー形成データを解析するための数理モデルを提供します。特に温度依存的な会合挙動を定量的に解析し、熱力学パラメータ(エンタルピー、エントロピー)を推定することができます。

This library provides mathematical models for analyzing supramolecular polymerization data. It enables quantitative analysis of temperature-dependent aggregation behavior and estimation of thermodynamic parameters (enthalpy, entropy).

特徴 / Features

  • 複数のモデルに対応

    • Isodesmicモデル: すべての会合定数が等しい単純な会合モデル
    • Cooperativeモデル: 核形成と伸長で異なる定数を持つ協同的会合モデル
    • Mixedモデル: IsodesmicとCooperativeの2経路が競合するモデル
  • 温度依存性の解析

    • van't Hoff式に基づく温度依存的な会合定数の計算
    • ΔH(エンタルピー変化)とΔS(エントロピー変化)の推定
  • フィッティング機能

    • lmfitライブラリを使用した実験データへのフィッティング
    • 複数濃度データの同時フィッティング(グローバルフィット)に対応

インストール / Installation

uv add https://github.com/IndigoCarmine/sp_fitting_models.git

使用方法 / Usage

基本的な使用例

import numpy as np
import matplotlib.pyplot as plt
from sp_fitting_models.models import temp_cooperative_model

# Temperature range
temps = np.linspace(280, 400, 200)  # 280-400 K

# Thermodynamic parameters
deltaH = -96000      # Enthalpy change (J/mol)
deltaS = -180        # Entropy change (J/(mol·K))
deltaHnuc = 100000   # Nucleation penalty (J/mol)
c_tot = 5e-6         # Total concentration (M)

# Calculate aggregation
agg = temp_cooperative_model(
    Temp=temps,
    deltaH=deltaH,
    deltaS=deltaS,
    deltaHnuc=deltaHnuc,
    c_tot=c_tot,
    scaler=1.0
)

# Plot
plt.plot(temps - 273.15, agg)
plt.xlabel('Temperature (°C)')
plt.ylabel('Aggregation')
plt.show()

データフィッティング

import lmfit as lm
from sp_fitting_models.data import TempVsAggData
from sp_fitting_models.fitting import objective_temp_cooperative

# Prepare your experimental data
data_list = [
    TempVsAggData(temp=temps1, agg=agg1, concentration=c1),
    TempVsAggData(temp=temps2, agg=agg2, concentration=c2),
]

# Set up parameters
params = lm.Parameters()
params.add('deltaH', value=-100000, min=-200000, max=0)
params.add('deltaS', value=-180, min=-400, max=0)
params.add('deltaHnuc', value=50000, min=0, max=200000)
params.add('scaler', value=1.0, min=0.5, max=1.5)

# Fit
minner = lm.Minimizer(objective_temp_cooperative, params, fcn_args=(data_list,))
result = minner.minimize()

print(lm.fit_report(result))

インタラクティブな可視化

# Run the interactive mixed model example
python examples/interactive_mixed.py

スライダーを使用してパラメータを変更し、リアルタイムで会合曲線の変化を観察できます。

Windowsアプリとしてビルド (uv + PyInstaller)

examples/interactive_mixed.py をコンソールなしの Windows GUI アプリとしてビルドできます。

./scripts/build_interactive_mixed.ps1

または cmd.exe から:

build_interactive_mixed.bat

生成物:

  • dist/interactive_mixed/interactive_mixed.exe

このスクリプトは次を自動で行います。

  1. uv sync で依存関係とローカルパッケージを同期
  2. uv run --with pyinstaller ... で GUI アプリをビルド

プロジェクト構造 / Project Structure

sp_fitting_models/
├── src/
│   └── sp_fitting_models/
│       ├── __init__.py
│       ├── data.py              # Data structures
│       ├── models/              # Model implementations
│       │   ├── __init__.py
│       │   ├── isodesmic.py     # Isodesmic models
│       │   ├── cooperative.py   # Cooperative models
│       │   ├── mixed.py         # Mixed models
│       │   └── utils.py         # Utility functions
│       └── fitting/             # Fitting utilities
│           ├── __init__.py
│           └── objective.py     # Objective functions for lmfit
├── tests/                       # Test files
│   ├── test_isodesmic.py
│   ├── test_cooperative.py
│   ├── test_mixed.py
│   └── test_fitting.py
├── examples/                    # Example scripts
│   ├── basic_usage.py
│   └── interactive_mixed.py
├── pyproject.toml
└── README.md

モデルの説明 / Model Description

Isodesmicモデル

すべての会合ステップが同じ平衡定数Kを持つモデルです。シグモイド型の会合曲線を示します。

$$K = \exp\left(-\frac{\Delta H}{RT} + \frac{\Delta S}{R}\right)$$

次のような平衡状態です。 供給されるモノマーは省略してあります。: $$M \stackrel{K}{\rightleftarrows} M_2\stackrel{K}{\rightleftarrows} M_3 \stackrel{K}{\rightleftarrows} ...$$

Cooperativeモデル

核形成と伸長で異なる平衡定数を持つモデルです。非シグモイド型の会合曲線を示します。核形成ペナルティσにより協同性が表現されます。

$$\sigma = \exp\left(-\frac{\Delta H_{nuc}}{RT}\right)$$

$$ K = \exp\left(-\frac{\Delta H}{RT} + \frac{\Delta S}{R}\right)$$

$$ K_{nuc} = \sigma K $$ 次のような平衡状態です。 $$M \stackrel{K_{nuc}}{\rightleftarrows} M_2\stackrel{K}{\rightleftarrows} M_3 \stackrel{K}{\rightleftarrows} ...$$

Mixedモデル

IsodesmicとCooperativeの2つの経路が同じモノマープールを共有して競合するモデルです。実験系で複数の会合機構が同時に起こる場合に適用できます。

次のような平衡状態を考えています。 $$M \stackrel{K_{nuc}}{\rightleftarrows} M_2\stackrel{K}{\rightleftarrows} M_3 \stackrel{K}{\rightleftarrows} ...$$ $$ \searrow \nwarrow^{K_{iso}} M_2\stackrel{K_{iso}}{\rightleftarrows} M_3 \stackrel{K_{iso}}{\rightleftarrows} ...$$ (MDではこれ以上きれいに書けませんでした...)

テスト / Testing

# Run all tests
python -m pytest tests/

# Run specific test
python tests/test_cooperative.py

サンプル / Examples

# Basic usage examples
python examples/basic_usage.py

# Interactive mixed model visualization
python examples/interactive_mixed.py

uvでの実行

uv run --with maturin maturin develop --release
uv run pytest

依存関係 / Dependencies

  • Python >= 3.13
  • numpy >= 2.4.2
  • numba >= 0.64.0
  • lmfit >= 1.3.4
  • matplotlib >= 3.10.8

引用 /Citation

書いていただけるなら嬉しいですが、必ずしも論文で言及する必要はありません。 ご自由にお使いください。

I would be grateful if you could cite this library in your publications, but it is not mandatory. Please feel free to use it as you see fit.

作成者 / Author

山田悠平 (Yuhei Yamada, Orcid: 0009-0003-9780-4135, google scholar: Yuhei Yamada)

Download files

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

Source Distribution

sp_fitting_models-1.3.8.tar.gz (374.6 kB view details)

Uploaded Source

Built Distributions

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

sp_fitting_models-1.3.8-cp39-abi3-win_amd64.whl (135.3 kB view details)

Uploaded CPython 3.9+Windows x86-64

sp_fitting_models-1.3.8-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (268.5 kB view details)

Uploaded CPython 3.9+manylinux: glibc 2.17+ x86-64

sp_fitting_models-1.3.8-cp39-abi3-macosx_11_0_arm64.whl (235.6 kB view details)

Uploaded CPython 3.9+macOS 11.0+ ARM64

File details

Details for the file sp_fitting_models-1.3.8.tar.gz.

File metadata

  • Download URL: sp_fitting_models-1.3.8.tar.gz
  • Upload date:
  • Size: 374.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.14

File hashes

Hashes for sp_fitting_models-1.3.8.tar.gz
Algorithm Hash digest
SHA256 721de6fe3661ffdb69a3d4e0f218e9f30be64515d0185cf60fe88d6d7a3ae8fd
MD5 9a26b508be216ff534e9acd6227ddcf1
BLAKE2b-256 b27958e7649aee348a704160f35c25b193ee3d05ff61b4633d64145d5deb7c60

See more details on using hashes here.

Provenance

The following attestation bundles were made for sp_fitting_models-1.3.8.tar.gz:

Publisher: python-publish.yml on IndigoCarmine/sp_fitting_models

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file sp_fitting_models-1.3.8-cp39-abi3-win_amd64.whl.

File metadata

File hashes

Hashes for sp_fitting_models-1.3.8-cp39-abi3-win_amd64.whl
Algorithm Hash digest
SHA256 40bd01592f0b4f0963e1f1f2b59c552468f857f9d75717ee656b9fd3fea216da
MD5 692e9e09720689570a27e5176b0eb4ef
BLAKE2b-256 192b1a4e26d41b7597709545e27905e0cc986d0c12492331bec572b59e18d51d

See more details on using hashes here.

Provenance

The following attestation bundles were made for sp_fitting_models-1.3.8-cp39-abi3-win_amd64.whl:

Publisher: python-publish.yml on IndigoCarmine/sp_fitting_models

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file sp_fitting_models-1.3.8-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for sp_fitting_models-1.3.8-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 bc75b46b8aa2080f010bcadfe1bad70c27b494cfbba17fa252fd405aae4629a8
MD5 f674d1b213796e4695aef52326ef1edc
BLAKE2b-256 6a7fcb035ea45c97ae24a391a7bc19bbc73020b5ec214fe3a571ad986a12d073

See more details on using hashes here.

Provenance

The following attestation bundles were made for sp_fitting_models-1.3.8-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:

Publisher: python-publish.yml on IndigoCarmine/sp_fitting_models

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file sp_fitting_models-1.3.8-cp39-abi3-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for sp_fitting_models-1.3.8-cp39-abi3-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 200e8d7cc386b67be26805ca209f545639af108d9a71325203cd31d3b9c855d6
MD5 39ab066d2bc9440f6fbe2e5e8fc53d8f
BLAKE2b-256 17a20678d8e81045a2b1b9f6bd29cf7b44bf89c26e75a8e2d4d5d25bfa3741a7

See more details on using hashes here.

Provenance

The following attestation bundles were made for sp_fitting_models-1.3.8-cp39-abi3-macosx_11_0_arm64.whl:

Publisher: python-publish.yml on IndigoCarmine/sp_fitting_models

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Release history Release notifications | RSS feed

This release

1.3.8 This release

4 files

1.3.7

4 files

1.3.6

4 files

1.3.4

4 files

1.3.3

4 files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page