Skip to content

GeorchPz/labtools

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

12 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

LabTools

A comprehensive Python library for scientific data analysis with uncertainty propagation.

Overview

LabTools is an integrated toolkit for handling experimental data in scientific laboratories. It provides a streamlined workflow for:

  • Loading and processing data with uncertainties
  • Performing various types of regression (linear, polynomial, and custom curves)
  • Propagating uncertainties through mathematical expressions
  • Visualizing data with proper error representation
  • Exporting results to Excel and CSV formats

The package is designed with a focus on proper uncertainty handling throughout the entire data analysis process.

Dependencies

  • numpy
  • pandas
  • matplotlib
  • scipy
  • sympy
  • openpyxl
  • xlsxwriter

Example Usage

The package includes an example that demonstrate its capabilities. One key example is the Decay module, which shows how to:

  • Load data from radioactive decay experiments
  • Apply linear and exponential curve fitting with uncertainty propagation
  • Visualize decay curves with proper uncertainty bands
  • Calculate half-life values with uncertainties

You can find this example in the Decay.ipynb notebook and the related files in the decay directory.

Features

Data Management

  • Load from Excel, CSV and other formats
  • Extract data with their associated uncertainties
  • Export processed data with properly formatted uncertainties

Analysis Capabilities

  • Linear Regression: Weighted and unweighted regression with uncertainty analysis
  • Polynomial Regression: Fit polynomials of any degree with proper error propagation
  • Custom Curve Fitting: Orthogonal distance regression for arbitrary functions
  • Uncertainty Propagation: Apply formulas to data with proper error propagation
  • Statistical Analysis: Calculate means, standard deviations with uncertainty weighting

Visualization

  • Error bars on data points
  • Uncertainty bands on regression curves
  • Multiple regression comparison plots
  • LaTeX-formatted labels and equations

Documentation

Core Class : LabTools

The main interface that unifies all functionality:

lab = LabTools(
    foldername=None,        # Directory for data files (optional)
    filename=None,          # Input data file (without extension)
    variables=None,         # Variables in comma-separated format
    equations=None,         # Formula equations
    x_label=None,           # X-axis label for plots
    y_label=None,           # Y-axis label for plots 
    title=None              # Plot title
)

Common Workflows

Linear Regression Analysis

# Initialize with experiment details
lab = LabTools(
    filename="pendulum_data",
    x_label="Length (m)",
    y_label="Period² (s²)",
    title="Pendulum Period vs Length"
)

# Load and analyze data
lab.load_data()
lab.linear_regression()

# Display results
print(f"Slope: {lab.regression_results['coefficients'][1]} ± {lab.regression_results['errors'][1]}")
print(f"Correlation coefficient: {lab.regression_results['r']}")

# Visualize and save
lab.plot_regression()

Uncertainty Propagation

# Calculate acceleration from force and mass with uncertainties
lab = LabTools(
    filename="force_measurements",
    variables="F,m",
    equations="a = F/m"
)

# Load data and apply formula
lab.load_data()
computed_df, summary = lab.apply_formula()

# Export results
lab.unload_data(new_filename="acceleration_results")

Custom Curve Fitting

import numpy as np

# Define fitting function
def exponential_decay(params, x):
    amplitude, decay_constant = params
    return amplitude * np.exp(-decay_constant * x)

# Setup analysis
lab = LabTools(
    filename="decay_data",
    x_label="Time (s)",
    y_label="Activity (Bq)",
    title="Radioactive Decay"
)

# Load data and fit curve
lab.load_data()
lab.curve_regression(
    function=exponential_decay,
    initial_params=[100, 0.1]
)

# Visualize results
lab.plot_regression()

License

MIT License

About

A package for scientific data analysis and visualization. This package provides tools for data analysis, regression, uncertainty calculation, and visualization commonly used in laboratory settings.

Topics

Resources

License

Stars

0 stars

Watchers

1 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors