Skip to main content

タスク計測データ処理用のPythonライブラリ

Project description

tascpy

Python Version License: MIT Version

tascpy は、計測アプリケーション「tasc」などから出力される計測データの分析・可視化を効率的に行うための Python ライブラリです。直感的なインターフェースと強力なデータ処理機能を備え、メソッドチェーン形式で複雑な操作を簡潔に記述できます。

主な特徴

  • メソッドチェーンによる流れるような操作:複数のデータ処理ステップを連続して記述できます
  • イミュータブルなデータ操作:元のデータを変更せず、常に新しいデータセットを生成します
  • ドメイン特化機能:荷重-変位データや座標データなど、特定の分析領域に特化した機能を提供します
  • 柔軟なデータ選択:列名、行インデックス、ステップ値などによる多彩な選択操作をサポートします
  • 高度な数学的処理:数値演算、補間、正規化など様々な数学的操作を提供します
  • 直感的な可視化:Matplotlib と連携した簡単かつ高度なデータ可視化機能があります
  • 型ヒントと自動補完:VSCode などの IDE で自動補完や型チェックを完全サポートします

インストール方法

pip からのインストール

pip install tascpy

ソースからのインストール

git clone https://github.com/toruinaba/tascpy.git
cd tascpy
pip install -e .

使用例

基本的な使い方

import tascpy
from tascpy.core.collection import ColumnCollection

# CSVファイルからデータを読み込む
collection = ColumnCollection.from_file(
    filepath="data.csv", 
    format_name="csv", 
    auto_detect_types=True
)

# データ処理のチェーンメソッド
result = (
    collection.ops
    .select(columns=["Force", "Displacement"])  # 必要な列を選択
    .filter_by_value("Force", lambda x: x > 0)  # 正の荷重値のみ選択
    .add("Force", 10, result_column="AdjustedForce")  # 新しい列を作成
    .divide("AdjustedForce", "Displacement", result_column="Stiffness")  # 剛性計算
    .end()  # チェーンを終了して結果を取得
)

# 結果の表示
print(f"処理後のデータ: {len(result)} 行 × {len(result.columns)} 列")
print(f"最大剛性: {result['Stiffness'].max():.2f}")

荷重-変位ドメインの分析

# 荷重-変位ドメインへの変換
ld_collection = collection.ops.as_domain(
    "load_displacement",
    load_column="Force",
    displacement_column="Displacement"
).end()

# 降伏点の計算
yield_result = (
    ld_collection.ops
    .calculate_stiffness(range_start=0.1, range_end=0.5, result_column="Stiffness")
    .calculate_yield_point(method="offset", offset_ratio=0.002)  # 0.2%オフセット法
    .end()
)

# 結果の表示
print(f"降伏荷重: {yield_result['YieldPoint_Load'].values[0]:.2f} kN")
print(f"降伏変位: {yield_result['YieldPoint_Displacement'].values[0]:.2f} mm")

可視化の例

import matplotlib.pyplot as plt

# 散布図と線グラフの作成
fig, ax = plt.subplots(figsize=(10, 6))

(
    collection.ops
    .select(columns=["Displacement", "Force"])
    .plot(
        x_column="Displacement",
        y_column="Force",
        plot_type="scatter",
        label="測定データ",
        ax=ax,
        marker="o",
        alpha=0.7
    )
    .end()
)

plt.title("荷重-変位関係")
plt.xlabel("変位 (mm)")
plt.ylabel("荷重 (kN)")
plt.grid(True)
plt.legend()
plt.tight_layout()
plt.show()

ドキュメント

より詳細なドキュメントとサンプルについては、以下を参照してください:

動作環境

  • Python 3.8 以上
  • 依存ライブラリ:
    • numpy
    • pandas
    • matplotlib
    • scipy
    • japanize-matplotlib (オプション・日本語フォントサポート用)

スタブファイル生成

tascpy のチェーンメソッドは動的に登録されるため、IDE の自動補完を有効にするにはスタブファイルの生成が必要です。初回インポート時に自動生成されますが、手動で実行することも可能です:

# スタブファイルの手動生成
from tascpy.operations.stub_generator import generate_stubs
generate_stubs()

環境変数でスタブ生成を制御できます:

import os
os.environ["TASCPY_GENERATE_STUBS"] = "0"  # スタブ生成を無効化
import tascpy  # スタブは生成されません

プロジェクト構造

tascpy/
├── src/
│   └── tascpy/
│       ├── core/         # 基本データ構造
│       ├── domains/      # ドメイン特化コレクション
│       ├── operations/   # データ処理操作
│       └── plugins/      # プラグイン
├── tests/                # テストコード
├── examples/             # サンプルコード
├── docs/                 # ドキュメント

ライセンス

MIT ライセンスの下で公開されています。詳細は LICENSE ファイルを参照してください。

コントリビューション

バグ報告や機能リクエスト、プルリクエストなど、あらゆる形での貢献を歓迎します。詳細は CONTRIBUTING.md を参照してください。

著者

謝辞

このライブラリの開発にあたり、ご協力いただいたすべての方々に感謝します。

このプロジェクトは GitHub Copilot を全面的に活用して開発されています。AI アシスタントによるコード生成とリファクタリングが、開発効率の向上と品質の維持に大きく貢献しています。

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

tascpy-0.1.0.tar.gz (3.6 MB view details)

Uploaded Source

Built Distribution

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

tascpy-0.1.0-py3-none-any.whl (301.1 kB view details)

Uploaded Python 3

File details

Details for the file tascpy-0.1.0.tar.gz.

File metadata

  • Download URL: tascpy-0.1.0.tar.gz
  • Upload date:
  • Size: 3.6 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.12.9

File hashes

Hashes for tascpy-0.1.0.tar.gz
Algorithm Hash digest
SHA256 a302e36bb2d54e1f76fb9a86bab337f8ace2138996b2b3dc08331fe78a6ae9a0
MD5 155b0f22cb01b0dfbeff066a6b714c9f
BLAKE2b-256 91a808b255dcbed9b26d507a2c9a18937a5d9218c07774290e718aea7d58776f

See more details on using hashes here.

File details

Details for the file tascpy-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: tascpy-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 301.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.12.9

File hashes

Hashes for tascpy-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 75e01a97f498431dfa7fa19c255fffa545486c7e5d2eb81afe2c139932f44b1b
MD5 f62adbcee06fc8ec07d196f5e3215020
BLAKE2b-256 499224508c523b76de9dd517d6aad46b2986c093168694e3cd3188a8f14d1c89

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