CtrlK
BlogDocsLog inGet started
Tessl Logo

tessl/pypi-astropy

Astronomy and astrophysics core library providing comprehensive tools for astronomical computations and data handling

Pending

Quality

Pending

Does it follow best practices?

Impact

Pending

No eval scenarios have been run

Overview
Eval results
Files

uncertainty.mddocs/

Uncertainty Propagation

Framework for propagating uncertainties through calculations with support for correlated and uncorrelated errors.

Core Imports

from astropy.uncertainty import Distribution
from astropy.uncertainty import normal, uniform, poisson

Capabilities

Distribution Classes

Classes for representing probability distributions and performing Monte Carlo uncertainty propagation.

class Distribution:
    """
    Base class for probability distributions.
    
    Parameters:
    - samples: array of samples from the distribution
    """
    def __init__(self, samples): ...
    
    @property
    def samples(self):
        """Array of samples from the distribution."""
    
    @property
    def n_samples(self):
        """Number of samples."""
    
    def pdf_mean(self):
        """Mean of the probability distribution."""
    
    def pdf_std(self):
        """Standard deviation of the distribution."""
    
    def pdf_var(self):
        """Variance of the distribution."""
    
    def pdf_median(self):
        """Median of the distribution."""
    
    def pdf_mad(self):
        """Median absolute deviation."""
    
    def pdf_percentiles(self, percentile):
        """Compute percentiles of the distribution."""
    
    def __add__(self, other): ...
    def __sub__(self, other): ...
    def __mul__(self, other): ...
    def __truediv__(self, other): ...
    def __pow__(self, power): ...

Distribution Creation Functions

Functions for creating common probability distributions with specified parameters.

def normal(center, std=None, n_samples=None):
    """
    Create normal (Gaussian) distribution.
    
    Parameters:
    - center: mean of the distribution
    - std: standard deviation
    - n_samples: number of samples to generate
    
    Returns:
    Distribution: normal distribution
    """

def uniform(lower=None, upper=None, center=None, width=None, n_samples=None):
    """
    Create uniform distribution.
    
    Parameters:
    - lower: lower bound (alternative to center/width)
    - upper: upper bound (alternative to center/width) 
    - center: center value (alternative to lower/upper)
    - width: width of distribution (alternative to lower/upper)
    - n_samples: number of samples to generate
    
    Returns:
    Distribution: uniform distribution
    """

def poisson(center, n_samples=None):
    """
    Create Poisson distribution.
    
    Parameters:
    - center: mean/rate parameter of Poisson distribution
    - n_samples: number of samples to generate
    
    Returns:
    Distribution: Poisson distribution
    """

Usage Examples

Basic Uncertainty Propagation

import numpy as np
from astropy.uncertainty import normal

# Create distributions for input variables
a = normal(center=5.0, std=0.2, n_samples=10000)
b = normal(center=3.0, std=0.1, n_samples=10000)

# Propagate uncertainties through calculations
result = a + b
product = a * b
ratio = a / b

print(f"Sum: {result.pdf_mean():.3f} ± {result.pdf_std():.3f}")
print(f"Product: {product.pdf_mean():.3f} ± {product.pdf_std():.3f}")  
print(f"Ratio: {ratio.pdf_mean():.3f} ± {ratio.pdf_std():.3f}")

Complex Function Propagation

from astropy.uncertainty import uniform
import astropy.units as u

# Physical measurement with uniform uncertainty
length = uniform(center=10.0, width=0.5, n_samples=10000) * u.m
width = normal(center=2.0, std=0.1, n_samples=10000) * u.m

# Calculate area with uncertainty
area = length * width

print(f"Area: {area.pdf_mean():.2f} ± {area.pdf_std():.2f}")

# Non-linear function
volume = length * width * normal(1.5, 0.05, 10000) * u.m
print(f"Volume: {volume.pdf_mean():.2f} ± {volume.pdf_std():.2f}")

Percentile Analysis

# Get confidence intervals
lower_5 = result.pdf_percentiles(5)
upper_95 = result.pdf_percentiles(95) 

print(f"90% confidence interval: [{lower_5:.3f}, {upper_95:.3f}]")

# Multiple percentiles
percentiles = result.pdf_percentiles([16, 50, 84])
print(f"16th, 50th, 84th percentiles: {percentiles}")

Types

# Distribution types
Distribution = astropy.uncertainty.Distribution

Install with Tessl CLI

npx tessl i tessl/pypi-astropy

docs

configuration.md

constants.md

convolution.md

coordinates.md

cosmology.md

fits-io.md

index.md

modeling.md

nddata.md

samp.md

statistics.md

tables.md

time.md

timeseries.md

uncertainty.md

units-quantities.md

utils.md

visualization.md

wcs.md

tile.json