Skip to main content

Toolkit for PPMS data processing

Project description

PPMS Toolkit

⚠️ Development Notice

This project is currently under active development and primarily developed and tested on macOS. It is a pure Python application built with Qt (PySide6), so it should be cross-platform in principle. However, minor GUI display issues may occur on Windows or Linux systems.

Python License: MIT PySide6

A Python toolkit for PPMS (Physical Property Measurement System) data analysis

FeaturesInstallationQuick StartDocumentation


📖 Overview

Easy plot with Measurement List

PPMS Toolkit is a modern, user-friendly application designed for researchers working with Quantum Design's Physical Property Measurement System (PPMS). It provides both a powerful GUI application and a flexible Python library for:

  • 📂 Data Management: Import, organize, and manage PPMS .dat files with SQLite database
  • 📊 Interactive Plotting: Visualize VSM and Heat Capacity measurements with Matplotlib
  • 🔬 Advanced Analysis: Curie temperature fitting, background subtraction, susceptibility analysis
  • 💾 Efficient Storage: Parquet-based file format for fast data loading and minimal disk usage
  • 🎨 Cross-Platform: Built with PySide6 (Qt6) for cross-platform compatibility

✨ Features

🖥️ GUI Application

  • Sample Management

    • Create and edit sample metadata (name, mass, orientation, chemical formula)
    • Track multiple measurements per sample
    • Delete samples and associated data files
  • Measurement Management

    • Batch import of .dat files from PPMS
    • Support for VSM (Vibrating Sample Magnetometer) measurements:
      • MH mode: Magnetization vs. Field
      • MT mode: Magnetization vs. Temperature
    • Support for Heat Capacity measurements
    • Automatic deduplication based on file content hash
  • Interactive Plotting

    • Plot multiple measurements with customizable legends
    • Click-to-hide curves for easy comparison
    • Switch between susceptibility (χ) and moment views
    • Zoom, pan, and export plots
  • Data Filtering

    • Multi-column filtering in measurement tables
    • Filter by sample, mode, field, temperature, or condition

🚀 Installation

Option 1: Conda Environment (Recommended)

# Clone the repository
git clone https://github.com/AlbertRyu/PPMS_ToolKit.git
cd PPMS_ToolKit

# Create and activate conda environment
conda env create -f environment.yml
conda activate ppms_toolkit

# Install the package in development mode
pip install -e ".[gui]"

# Launch the GUI
ppms-toolkit

Option 2: pip + venv

# Clone the repository
git clone https://github.com/AlbertRyu/PPMS_ToolKit.git
cd PPMS_ToolKit

# Create virtual environment
python -m venv venv
source venv/bin/activate  # On Windows: venv\Scripts\activate

# Install with GUI support
pip install -e ".[gui]"

# Launch the GUI
ppms-toolkit

🎯 Quick Start

GUI Workflow

  1. Launch Application

    ppms-toolkit
    
  2. Select/Create Project

    • Choose an existing project folder or create a new one
    • All data will be stored in this folder
  3. Add Samples

    • Navigate to "Samples" tab
    • Click "Add Sample" and enter metadata (name, mass, orientation)
  4. Import Measurements

    • Go to "Plots" tab
    • Click "Add Measurement"
    • Select multiple .dat files (batch import supported)
    • Choose the sample and measurement mode (MH/MT)

    📁 File Naming for MT Mode

    The toolkit automatically detects measurement conditions from filenames:

    Filename Contains Detected Condition
    ZFC (case-insensitive) Zero Field Cooling
    FC (case-insensitive) Field Cooling
    Neither Unknown Condition

    Examples:

     sample_ZFC_100Oe.dat   Condition: ZFC
    ✅ data_FC.dat            Condition: FC
    ⚠️ measurement.dat        Condition: Unknown
    
  5. Visualize Data

    • Select measurements from the table
    • Click "Plot" to visualize
    • Use legend to toggle curves
    • Toggle χ/Moment view with checkbox

📊 Supported Measurement Types

VSM (Vibrating Sample Magnetometer)

Mode Description Analysis Tools
MH Magnetization vs. Field fit_MH() - Coercivity extraction~~
MT Magnetization vs. Temperature fit_MT() - Curie temperature fitting

🗂️ Project Structure

PPMS_ToolKit/
├── src/
│   ├── ppms_toolkit/              # Core library
│   │   ├── sample.py              # Sample class
│   │   └── measurement/
│   │       ├── base.py            # Base Measurement class
│   │       ├── vsm.py             # VSM analysis
│   │       └── heat_capacity.py   # Heat Capacity analysis
│   │
│   ├── ppms_toolkit_gui/          # GUI application
│   │   ├── app.py                 # Entry point
│   │   ├── main_window.py         # Main window
│   │   ├── controller/            # MVC controllers
│   │   ├── widgets/               # Qt widgets
│   │   └── dialogs/               # Dialog windows
│   │
│   └── infrastructure/
│       └── db/
│           └── db.py              # SQLite database wrapper
│
├── examples/
│   └── code_example.ipynb         # Jupyter notebook examples
│
├── pyproject.toml                 # Project metadata & dependencies
├── environment.yml                # Conda environment specification
└── README.md                      # This file

🔧 Dependencies

Core Dependencies

  • numpy ≥ 1.21 - Numerical computing
  • pandas ≥ 1.3 - Data manipulation
  • scipy ≥ 1.7 - Scientific computing
  • matplotlib ≥ 3.4 - Plotting

GUI Dependencies (Optional)

  • PySide6 ≥ 6.4 - Qt6 GUI framework
  • pyarrow ≥ 10.0 - Parquet file I/O

Development Dependencies

  • ipykernel - Jupyter notebook support
  • IPython - Enhanced interactive shell

📚 Documentation

Database Structure

The toolkit uses SQLite for data management with two main tables:

samples

  • id, name, mass, chemical, orientation, created_at, notes

measurements

  • id, sample_id (FK), measurement_type, mode
  • const_field, const_temperature
  • original_filepath, data_filepath, processed_data_filepath
  • content_hash (for deduplication)
  • extra_parameters (JSON), comment, created_at

📄 License

This project is licensed under the MIT License.

You are free to use, modify, and distribute this software, provided that:

  • You include the original copyright notice and license text in any copies
  • You do not hold the author liable for any damages

See LICENSE file for full details.


🙏 Acknowledgments


⬆ Back to Top

Made with ❤️ for the research community

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

ppms_toolkit-0.2.2.tar.gz (5.2 MB view details)

Uploaded Source

Built Distribution

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

ppms_toolkit-0.2.2-py3-none-any.whl (1.3 MB view details)

Uploaded Python 3

File details

Details for the file ppms_toolkit-0.2.2.tar.gz.

File metadata

  • Download URL: ppms_toolkit-0.2.2.tar.gz
  • Upload date:
  • Size: 5.2 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.10.7 {"installer":{"name":"uv","version":"0.10.7","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for ppms_toolkit-0.2.2.tar.gz
Algorithm Hash digest
SHA256 c6f68bc82682ab646ee921523be7183075edca33e1298ba065d09853590c0c20
MD5 2f51aacc409118357629204d4a0ba85a
BLAKE2b-256 d9dc6326391e97ba6f80bbed856018b02a5899f4a7a4f1b014102a10e29b2154

See more details on using hashes here.

File details

Details for the file ppms_toolkit-0.2.2-py3-none-any.whl.

File metadata

  • Download URL: ppms_toolkit-0.2.2-py3-none-any.whl
  • Upload date:
  • Size: 1.3 MB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.10.7 {"installer":{"name":"uv","version":"0.10.7","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for ppms_toolkit-0.2.2-py3-none-any.whl
Algorithm Hash digest
SHA256 341c9fdb83c9ab12c57fba6883a16aa46c10377c85585b0c084486017736f0b2
MD5 9b755b85f1330e9ac3b525cea061c85d
BLAKE2b-256 db6cd610aacdd2dc5f4e7aad6798357c09543cc30f925a8838dda09e621f58f9

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