Basic Usage

This guide provides examples of common tasks using the Profiler package.

Loading Different Data Types

Spray Glider Data

from profiler import gliderdata

# Load a single Spray glider file
spray = gliderdata.SprayData.from_binned_file(
    'data.mat',
    'my_dataset',
    in_field=True,
    adcp_on=False
)

# Load multiple files
import glob
datafiles = glob.glob('*.mat')
sprays = gliderdata.SprayData.from_list(
    datafiles,
    'my_dataset',
    adcp_on=False,
    in_field=True
)

Float Data

from profiler import floatdata

# Load Solo float
solo = floatdata.SoloData.from_binned_file(
    'solo.mat',
    'my_dataset',
    in_field=True
)

# Load EM-APEX float
emapex = floatdata.EMApexData.from_binned_file(
    'emapex.mat',
    'my_dataset',
    in_field=True
)

VMP Data

from profiler import vmpdata

vmp = vmpdata.VMPData.from_binned_file(
    'vmp.nc',
    'cusack',
    'my_dataset',
    in_field=True,
    missid=20000
)

Data Processing Examples

Binning Data

from profiler import binning

# Bin data to standard depth levels
binned_data = binning.bin_profilerdata(
    spray,
    pmin=10,      # Minimum pressure/depth
    pstep=10,     # Bin size
    pmax=200,     # Maximum pressure/depth
    pd='d',       # 'd' for depth, 'p' for pressure
    exclude='bad' # Exclude bad data points
)

Calculating Geographic Distances

from profiler.utils import offsets

# Calculate distance and offset from a reference line
dist, offset = offsets.calc_dist_offset(
    spray.lon,
    spray.lat,
    endpoints=((lon0, lon1), (lat0, lat1))
)

Working with Profile Pairs

Creating Pairs

from profiler import profilepairs

# Create pairs based on time separation
pairs = profilepairs.ProfilerPairs(
    [spray],
    max_time=10,  # Maximum time separation in hours
    avoid_same_glider=True
)

# Calculate statistics on pairs
pairs.calc_delta(0, ['dT'])  # Temperature differences
pairs.calc_Sn('dTdTdT')      # Structure functions

Accessing Data Arrays

Standard Arrays

# Time series
times = spray.time     # Unix timestamps

# Geographic coordinates
lats = spray.lat      # Latitudes
lons = spray.lon      # Longitudes

# Profile data
temp = spray.t        # Temperature
sal = spray.s         # Salinity
dens = spray.sigma    # Density

Subsetting Data

# Select specific profiles
subset = spray.profile_subset(
    profiles=np.array([0, 1, 2])
)

# Cut based on time
timecut = spray.cut_on_reltime(
    timecut=(0.2, 0.8)  # Keep middle 60% of time range
)

GSW Calculations

from profiler.processing import gsw

# Process a dictionary of data with GSW
gsw.process_dict(data_dict)

# This calculates:
# - Absolute Salinity
# - Conservative Temperature
# - Potential Density
# - In-situ Density