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.3.tar.gz (894.7 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.3-py3-none-any.whl (127.3 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: datamanip-0.2.3.tar.gz
  • Upload date:
  • Size: 894.7 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.3.tar.gz
Algorithm Hash digest
SHA256 489db3b65799544020c59c27c4cb8cd93662451ceffa2964e3ec0e4a5512e872
MD5 35ff8fd32a3abf160f18052e6e97ab08
BLAKE2b-256 d59de4993c15a7e3344e50973f6639aab5b05db51fd9c080fa29fb17fa80b774

See more details on using hashes here.

Provenance

The following attestation bundles were made for datamanip-0.2.3.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.3-py3-none-any.whl.

File metadata

  • Download URL: datamanip-0.2.3-py3-none-any.whl
  • Upload date:
  • Size: 127.3 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.3-py3-none-any.whl
Algorithm Hash digest
SHA256 0f5cb626bed221479e9e0b7eaa1d1c1ac2356ea306bfaf807d303ef620847249
MD5 fda38143953f4764357d876034110a08
BLAKE2b-256 3a85b93cbae304353d6ed7cfd0ba2ced2a5c3d329edbe1d623e2db4dc1f3fff3

See more details on using hashes here.

Provenance

The following attestation bundles were made for datamanip-0.2.3-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