Skip to main content

An open-source data manipulation software for experimental sciences

Project description

DataManip

Tests codecov PyPI version Python License

A powerful, user-friendly data manipulation application for experimental sciences. Perform calculations with formulas, units, uncertainty propagation, derivatives, and visualization—all in one place.

📖 Release Notes | 🗺️ Roadmap | 🤝 Contributing


✨ Key Features

  • 5 Column Types: Data, Calculated, Derivative, Range, Uncertainty
  • Formula Engine: NumPy functions, custom functions, unit-aware calculations (pint)
  • Automatic Uncertainty Propagation: Symbolic differentiation with SymPy
  • High Performance: 3x speedup with lazy evaluation, caching, and parallel execution
  • Plotting with Error Bars: Multiple series, X/Y uncertainties, statistics (histogram/box plot)
  • Workspace Management: Save/load complete workspaces with all studies
  • Undo/Redo: 50-step history for column operations
  • Constants System: Numeric, calculated, and function constants (workspace-level)

📋 View v0.2.0 Release Notes →


📦 Installation

Option 1: Install from PyPI (Recommended)

# Using pip
pip install datamanip

# Using uv (faster)
uv pip install datamanip

# Run directly with uvx (no installation)
uvx datamanip

# Launch the application
python -m datamanip
# or simply:
datamanip

Option 2: Development Setup

# Clone the repository
git clone https://github.com/brian-sinquin/DataManip.git
cd DataManip

# Install dependencies and run with uv
uv sync
uv run datamanip

📚 Documentation


🧮 Uncertainty Propagation

DataManip automatically calculates propagated uncertainties using the standard error propagation formula:

$$\delta f = \sqrt{\sum_i \left(\frac{\partial f}{\partial x_i} \cdot \delta x_i\right)^2}$$

Where:

  • $\delta f$ = combined uncertainty of result
  • $\frac{\partial f}{\partial x_i}$ = partial derivatives (calculated symbolically using SymPy)
  • $\delta x_i$ = uncertainties of input variables

🚀 Quick Examples

# See examples/ directory for 8 complete demonstrations
examples/
├── 01_basic_introduction.dmw        # Getting started
├── 02_constants_and_formulas.dmw    # Formula engine basics
├── 03_ranges_and_derivatives.dmw    # Numerical differentiation
├── 04_uncertainty_propagation.dmw   # Error analysis
├── 05_custom_functions.dmw          # User-defined functions
├── 06_calculated_constants.dmw      # Dynamic constants
├── 07_advanced_kinematics.dmw       # Physics with units
└── 08_photoelectric_effect.dmw      # Complete experiment

# Open an example
datamanip examples/01_basic_introduction.dmw

🧪 Testing

# Run all tests
uv run pytest tests/unit/ -v

# Generate coverage report
uv run pytest --cov=src --cov-report=html

# Test by layer
uv run pytest tests/unit/core/ -v
uv run pytest tests/unit/studies/ -v
uv run pytest tests/unit/ui/ -v

📄 License

MIT License - See LICENSE for details


🙏 Acknowledgments

Built with ❤️ for experimental scientists worldwide.

Contributors: See assets/contributors.json


Made with PySide6 • pandas • NumPy • matplotlib • sympy • pint

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

datamanip-0.2.2.tar.gz (97.9 kB view details)

Uploaded Source

Built Distribution

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

datamanip-0.2.2-py3-none-any.whl (110.9 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: datamanip-0.2.2.tar.gz
  • Upload date:
  • Size: 97.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for datamanip-0.2.2.tar.gz
Algorithm Hash digest
SHA256 30fddf263cca96a98d2ac43551dcdaf6a83aca1eaa44bfa72905729d5cc4a120
MD5 c6fd9cc4fd29ed99efd5ddbe5c4d9070
BLAKE2b-256 28a55b3747c3f907b971ce45aec0212e606cda7ab82362528f3fcb3fc6f6b105

See more details on using hashes here.

Provenance

The following attestation bundles were made for datamanip-0.2.2.tar.gz:

Publisher: publish.yml on brian-sinquin/DataManip

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

File details

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

File metadata

  • Download URL: datamanip-0.2.2-py3-none-any.whl
  • Upload date:
  • Size: 110.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for datamanip-0.2.2-py3-none-any.whl
Algorithm Hash digest
SHA256 f7f64c7af3849b791dea7073531062210ec56d5130a0fd5b78a61e46f336286b
MD5 4c174c18c0a0250ee5c4760d7fc568d1
BLAKE2b-256 784f94a1b30552bdd8018d8dd90c14cfeed3c81bae498d8c08bf700ed4f038e5

See more details on using hashes here.

Provenance

The following attestation bundles were made for datamanip-0.2.2-py3-none-any.whl:

Publisher: publish.yml on brian-sinquin/DataManip

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