Skip to content

LandEcosystems/TimeSamplers.jl

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

34 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

TimeSamplers.jl

Julia License: EUPL-1.2

A Julia package for temporal sampling, aggregation, and resampling of time series data.

Features

  • Flexible Time Aggregation: Aggregate data to hourly, daily, monthly, or yearly time steps
  • Anomaly Calculations: Compute anomalies at various time scales
  • Climatological Statistics: Calculate multi-year seasonal cycles (MSC) and inter-annual variability (IAV)
  • Efficient Views: Uses array views to avoid unnecessary data copying
  • Multiple Sampling Methods: Support for various temporal operations including year shuffling and random selection

Installation

using Pkg
Pkg.add("TimeSamplers")

Quick Start

using TimeSamplers
using Dates

# Create a date vector
dates = collect(Date(2000, 1, 1):Day(1):Date(2000, 12, 31))

# Create time samplers for daily aggregation (returns a Vector{TimeSample})
daily_samplers = create_TimeSampler(dates, TimeDay())

# Example data (time is the first dimension, so size(data, 1) == length(dates))
data = rand(length(dates), 2)

# Apply sampling/aggregation (2-arg form defaults to `TimeNoDiff()`)
sampled_data = do_time_sampling(data, daily_samplers)

Available Time Sampling Methods

Basic Aggregation

  • TimeHour: aggregation to hourly time steps
  • TimeDay: aggregation to daily time steps
  • TimeMonth: aggregation to monthly time steps
  • TimeYear: aggregation to yearly time steps
  • TimeMean: aggregation to mean over all time steps

Anomalies

  • TimeHourAnomaly: aggregation to hourly anomalies
  • TimeDayAnomaly: aggregation to daily anomalies
  • TimeMonthAnomaly: aggregation to monthly anomalies
  • TimeYearAnomaly: aggregation to yearly anomalies
  • TimeDayMSCAnomaly: aggregation to daily MSC anomalies
  • TimeMonthMSCAnomaly: aggregation to monthly MSC anomalies

Climatological Statistics

  • TimeDayMSC: aggregation to daily MSC
  • TimeMonthMSC: aggregation to monthly MSC
  • TimeDayIAV: aggregation to daily IAV
  • TimeMonthIAV: aggregation to monthly IAV
  • TimeHourDayMean: aggregation to mean of hourly data over days

Time Selection

  • TimeAllYears: aggregation/slicing to include all years
  • TimeFirstYear: aggregation/slicing of the first year
  • TimeRandomYear: aggregation/slicing of a random year
  • TimeShuffleYears: aggregation/slicing/selection of shuffled years

Documentation

For detailed documentation, see the TimeSamplers.jl documentation.

License

This package is licensed under the EUPL-1.2 (European Union Public Licence v. 1.2). See the LICENSE file for details.

Contributing

Contributions are welcome! Please open an issue or pull request in this repository.

Authors

TimeSamplers.jl Contributors

About

A simple allocation free temporal aggregation and resampling

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages