An open-source data manipulation software for experimental sciences
Project description
DataManip
An open-source data manipulation software for experimental sciences
📖 Release Notes | 🗺️ Roadmap | 🤝 Contributing
✨ Key Features
- 5 Column Types: Data, Calculated, Derivative, Range, Uncertainty
- Formula Engine: NumPy functions, custom functions, unit-aware calculations
- Plotting with Error Bars: Multiple series, X/Y uncertainties, statistics (histogram/box plot), image export
- Workspace Management: Save/load complete workspaces, atomic file operations
- Undo/Redo: 50-step history for column operations
- Constants System: Numeric, calculated, and function constants
- Preferences: Customizable settings with theme support
- Performance: 3x faster with lazy evaluation and parallel execution
- 308 Tests: 99%+ passing unit test coverage (8 new error bar tests)
📋 View Complete Feature List →
Getting Started
Prerequisites
- uv package manager
Clone and Run
# 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
- RELEASE_NOTES.md - Complete feature list and v0.2.0 details
- ROADMAP.md - Development roadmap from v0.3.0 to v1.0.0
- TODO.md - Current sprint priorities and task tracking
- CONFIG_MIGRATION.md - Configuration changes guide
- CONTRIBUTING.md - How to contribute to DataManip
🧮 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 complete demonstrations
examples/
├── basic_usage.py # Simple data manipulation
├── projectile_motion.py # Physics with units
├── uncertainty_demo.py # Error propagation
├── derivative_example.py # Numerical differentiation
├── error_bars_example.py # Plotting with uncertainties ⭐ NEW
└── performance_benchmark.py # Performance testing
🧪 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
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file datamanip-0.2.0.tar.gz.
File metadata
- Download URL: datamanip-0.2.0.tar.gz
- Upload date:
- Size: 97.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
020f5db5298a3ff2d887a0477674375c12cb13eb900abc5c4d2020cfd1288b1c
|
|
| MD5 |
1555a7c50d2aeac8466bd804a77bfb2d
|
|
| BLAKE2b-256 |
ac81c7c72a419d320dddc1d01a22a63bbc0efd25a25a3cc90f402547e14184c9
|
Provenance
The following attestation bundles were made for datamanip-0.2.0.tar.gz:
Publisher:
publish.yml on brian-sinquin/DataManip
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
datamanip-0.2.0.tar.gz -
Subject digest:
020f5db5298a3ff2d887a0477674375c12cb13eb900abc5c4d2020cfd1288b1c - Sigstore transparency entry: 723455565
- Sigstore integration time:
-
Permalink:
brian-sinquin/DataManip@dec18b2647943cbc8bda69036dc097034fc09730 -
Branch / Tag:
refs/tags/v0.2.0 - Owner: https://github.com/brian-sinquin
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@dec18b2647943cbc8bda69036dc097034fc09730 -
Trigger Event:
release
-
Statement type:
File details
Details for the file datamanip-0.2.0-py3-none-any.whl.
File metadata
- Download URL: datamanip-0.2.0-py3-none-any.whl
- Upload date:
- Size: 110.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
fdb5806229732f306b28eb17c0fb34ad7b6f19e30a73e5c2a009dd24b5a27959
|
|
| MD5 |
3b5d83450aceeff5040fc42e118b11af
|
|
| BLAKE2b-256 |
f3c618efdb2c4fdbcb97de14628d87c81d194a5f8857bc7f6f164f3492a1be5d
|
Provenance
The following attestation bundles were made for datamanip-0.2.0-py3-none-any.whl:
Publisher:
publish.yml on brian-sinquin/DataManip
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
datamanip-0.2.0-py3-none-any.whl -
Subject digest:
fdb5806229732f306b28eb17c0fb34ad7b6f19e30a73e5c2a009dd24b5a27959 - Sigstore transparency entry: 723455570
- Sigstore integration time:
-
Permalink:
brian-sinquin/DataManip@dec18b2647943cbc8bda69036dc097034fc09730 -
Branch / Tag:
refs/tags/v0.2.0 - Owner: https://github.com/brian-sinquin
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@dec18b2647943cbc8bda69036dc097034fc09730 -
Trigger Event:
release
-
Statement type: