Skip to main content

For fitting spectroscopic data to cooperative and isodesmic models of supramolecular polymerization.

Project description

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)

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

sp_fitting_models-1.3.6.tar.gz (371.3 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.6-cp39-abi3-win_amd64.whl (134.5 kB view details)

Uploaded CPython 3.9+Windows x86-64

sp_fitting_models-1.3.6-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (269.0 kB view details)

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

sp_fitting_models-1.3.6-cp39-abi3-macosx_11_0_arm64.whl (236.7 kB view details)

Uploaded CPython 3.9+macOS 11.0+ ARM64

File details

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

File metadata

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

File hashes

Hashes for sp_fitting_models-1.3.6.tar.gz
Algorithm Hash digest
SHA256 526df232b02cbe2fec6e2cb9d67d9bc2c76544dc78f016b647d2a0359ac5b15a
MD5 ad7ccdc31524457cfff39d1100ff8758
BLAKE2b-256 0cddaf8c25b5891e572fe9a458c327b6396945e89da2ffe287a3e60991556d7a

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for sp_fitting_models-1.3.6-cp39-abi3-win_amd64.whl
Algorithm Hash digest
SHA256 adbe68b3cfbc2e2e2e16762f49c56fc249e979a1a974a8fb341e219af6428057
MD5 13bc2d0edcba107912c5e44d5e944b5c
BLAKE2b-256 a0dd40f3bac8a474ba687c48361f98bba7bc5713cd3f74909ec41013d0bd1fd7

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for sp_fitting_models-1.3.6-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 e079d2695b121227f66062d0658424f6b127890a906dc8d5767a2f04ab90dcf3
MD5 826e01b06f626164a44117008500aa66
BLAKE2b-256 e1cffc49b350b39d188c4909238ecf0b30ec17e8a3b270cea5dc833bfe005cdd

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for sp_fitting_models-1.3.6-cp39-abi3-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 bcb00a3526a66e092bea478eefedde5e6cb7df38eaa743dbb890f38e5cca6af3
MD5 313383ecc0a9ae70b76b2dfe0f5e3faa
BLAKE2b-256 7f90ea292305f8ef5c4a5010df7a7aca697bcdf3abe77168c29efe5b7ab39cf7

See more details on using hashes here.

Provenance

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

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