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.7.tar.gz (373.7 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.7-cp39-abi3-win_amd64.whl (134.7 kB view details)

Uploaded CPython 3.9+Windows x86-64

sp_fitting_models-1.3.7-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (268.0 kB view details)

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

sp_fitting_models-1.3.7-cp39-abi3-macosx_11_0_arm64.whl (235.1 kB view details)

Uploaded CPython 3.9+macOS 11.0+ ARM64

File details

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

File metadata

  • Download URL: sp_fitting_models-1.3.7.tar.gz
  • Upload date:
  • Size: 373.7 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.7.tar.gz
Algorithm Hash digest
SHA256 da2c4a55d349273493a64770e18112d5273b1c5d49aa9c142e99c5e26754a480
MD5 174e2f36d0ee9f5eefbbaf0c03003df1
BLAKE2b-256 6ed4c2ac4772eb7dfd8fc7ccdc42b3d4f44d98deb53aa305de532860bde77cf2

See more details on using hashes here.

Provenance

The following attestation bundles were made for sp_fitting_models-1.3.7.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.7-cp39-abi3-win_amd64.whl.

File metadata

File hashes

Hashes for sp_fitting_models-1.3.7-cp39-abi3-win_amd64.whl
Algorithm Hash digest
SHA256 2af4f19741d522c29fcfa358656f7fdc3c46eda25f1074bcfbadb0ea36e009c9
MD5 459e90aa93b5afbbd21bc31c3b7ae222
BLAKE2b-256 5e1db55d96f0f109d04369eee88b73115580ec618a77b39d0e19206a67d5116b

See more details on using hashes here.

Provenance

The following attestation bundles were made for sp_fitting_models-1.3.7-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.7-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for sp_fitting_models-1.3.7-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 4471428315895b382124188b0937bc1e333503522a9cdf90ee40bc5cac5d149e
MD5 4996556100af84fe95b516c8032ca466
BLAKE2b-256 e7a7d71dc8aaf18b9a14e3277218e588cd29eb91137ea502a70d44f75d5ce77e

See more details on using hashes here.

Provenance

The following attestation bundles were made for sp_fitting_models-1.3.7-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.7-cp39-abi3-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for sp_fitting_models-1.3.7-cp39-abi3-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 99c2ecd72d38b7eb004df8436f01dac7f2d3418909e703237fdacc942bacf41c
MD5 7d31e86846a8803b4961617f961c4d31
BLAKE2b-256 f7d2288dda33f07f119b087e16eedb4eb3eaf23c1b50dc1c8af4443ef3538ec1

See more details on using hashes here.

Provenance

The following attestation bundles were made for sp_fitting_models-1.3.7-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

1.3.8

4 files

This release

1.3.7 This release

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