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.1.tar.gz (98.0 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.1-py3-none-any.whl (110.9 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: datamanip-0.2.1.tar.gz
  • Upload date:
  • Size: 98.0 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.1.tar.gz
Algorithm Hash digest
SHA256 04aa9e34952703c7bbf4d52f1e089a8c8d11a5033310c7f79bc6d9e924985d7d
MD5 bd3445a52f9454862d298bb48f8fedd4
BLAKE2b-256 dc71a1824c2cce32039fc4b38ebeca97216529f8f789a448b2536ad3d9affb21

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: datamanip-0.2.1-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.1-py3-none-any.whl
Algorithm Hash digest
SHA256 a8b9259d5a73c4d44b7e70eba9262782cc581e5bb36023ffbb87b318d7cb7454
MD5 580864c336a845d62ce7849a5561acfb
BLAKE2b-256 7d16a123cae7dbba8610dff0da245484110b6b86eba9f32aad668c782e29a435

See more details on using hashes here.

Provenance

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