Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
17 changes: 16 additions & 1 deletion climate_toolbox/__init__.py
Original file line number Diff line number Diff line change
@@ -1,7 +1,22 @@
# -*- coding: utf-8 -*-

"""Top-level package for climate_toolbox."""

from __future__ import absolute_import

__author__ = """Justin Simcock"""
__email__ = 'jsimcock@rhg.com'
__version__ = '0.1.5'

import climate_toolbox.aggregations
import climate_toolbox.geo
import climate_toolbox.io
import climate_toolbox.transformations
import climate_toolbox.utils

__all__ = [
'climate_toolbox.aggregations',
'climate_toolbox.geo',
'climate_toolbox.io',
'climate_toolbox.transformations',
'climate_toolbox.utils',
]
3 changes: 3 additions & 0 deletions climate_toolbox/aggregations/aggregations.py
Original file line number Diff line number Diff line change
@@ -1,3 +1,6 @@

from __future__ import absolute_import

import xarray as xr
import numpy as np
import pandas as pd
Expand Down
89 changes: 89 additions & 0 deletions climate_toolbox/climate_toolbox.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,3 +2,92 @@
This file describes the process for computing weighted climate data
"""

from __future__ import absolute_import

import climate_toolbox.io
import logging

logger = logging.getLogger('climate_toolbox')

def transform_and_weighted_aggregate_climate_data(
climate_data_loader=None,
loader_kwargs=None,
transform=None,
extra_transform_kwargs=None,
aggregator=None,
extra_aggregation_kwargs=None,
validate=None,
extra_validation_kwargs=None,
writers=None,
extra_writer_kwargs=None,
metadata=None,
assign_attrs_list=None,
interactive=False,
logger=None,
**iteration_kwargs):
'''

'''
logger.info('starting')

if climate_data_loader is None:
climate_data_loader = (
climate_toolbox.io.load_and_standardize_climate_dataset_from_pattern)

if loader_kwargs is None:
loader_kwargs = {}

if transform is None:
transform = lambda x, *args, **kwargs: x

if extra_transform_kwargs is None:
extra_transform_kwargs = {}

if aggregator is None:
aggregator = lambda x, *args, **kwargs: x

if extra_aggregation_kwargs is None:
extra_aggregation_kwargs = {}

if validator is None:
validator = lambda x, *args, **kwargs: None

if extra_validation_kwargs is None:
extra_validation_kwargs = {}

if writers is None:
writers = [lambda x, *args, **kwargs: None]

if extra_writer_kwargs is None:
extra_writer_kwargs = {}

if assign_attrs_list is None:
assign_attrs_list = []

logger.debug('loading climate data')
data = climate_data_loader(**loader_kwargs, **iteration_kwargs)

logger.debug('transforming climate data')
data = transform(data, **extra_transform_kwargs, **iteration_kwargs)

logger.debug('aggregating transformed data')
data = aggregator(data, **extra_aggregation_kwargs, **iteration_kwargs)

logger.debug('validating results')
data = validate(data, **extra_validation_kwargs, **iteration_kwargs)

logger.debug('updating metadata')
if metadata is not None:
data.attrs.update({
k: v
for k, v in dict(**metadata, **iteration_kwargs).items()
if k in assign_attrs_list})

if interactive:
return data

logger.debug('writing results')
for wi, writer in enumerate(writers):
writer(data, **extra_writer_kwargs[wi], **iteration_kwargs)

logger.info('done')
3 changes: 3 additions & 0 deletions climate_toolbox/geo/distance.py
Original file line number Diff line number Diff line change
@@ -1,3 +1,6 @@

from __future__ import absolute_import

import numpy as np
# model major (km) minor (km) flattening
ELLIPSOIDS = {'WGS-84': (6378.137, 6356.7523142, 1 / 298.257223563),
Expand Down
7 changes: 6 additions & 1 deletion climate_toolbox/io/__init__.py
Original file line number Diff line number Diff line change
@@ -1 +1,6 @@
from .io import standardize_climate_data, load_bcsd

from __future__ import absolute_import

from climate_toolbox.io.load import load_and_standardize_climate_dataset
import climate_toolbox.io.sources as sources
import climate_toolbox.io.write as write
71 changes: 0 additions & 71 deletions climate_toolbox/io/io.py

This file was deleted.

Loading