# Scientific Software

Below you find a list of my most mature scientific software, which at times is deposited at official (peer-reviewed) repositories. A full list of all my projects can be found on my github page. Additional small code snippets are indexed as gists.

# R packages

## daymetr

A programmatic interface to the Daymet web services. Allows for easy downloads of Daymet climate data directly to your R workspace or your computer. Routines for both single pixel data downloads and gridded (netCDF) data are provided. Please use the below references when using Daymet data and the package.

To install the current stable release use a CRAN repository:

install.packages("daymetr")
library("daymetr")


## phenocamr

Facilitates the retrieval and post-processing of PhenoCam time series. The post-processing of PhenoCam data includes outlier removal and the generation of data products such as phenological transition dates. If requested complementary Daymet climate data will be downloaded and merged with the PhenoCam data for modelling purposes. For a detailed overview of the assumptions made during post-processing I refer publications by Hufkens et al. (2018) and Richardson et al. (2018). Please cite the Hufkens et al. (2018) paper when using the package. A worked example is included below and in the package vignette.

To install the current stable release use a CRAN repository:

install.packages("phenocamr")
library("phenocamr")


## phenor

The phenor R package is a phenology modelling framework in R. The framework leverages measurements of vegetation phenology from four common phenology observation datasets combined with (global) retrospective and projected climate data.

I refer to Hufkens et al. (2018) for an in depth description and worked example of the phenor R package. All code used to generate the referenced publication is provided in a separate github repository. Please refer to this paper when using the package for modelling efforts.

To install the toolbox in R run the following commands in a R terminal

if(!require(devtools)){install.packages(devtools)}
devtools::install_github("khufkens/phenor")
library("phenor")


## MODISTools

Programmatic interface to the ‘MODIS Land Products Subsets’ web services. Allows for easy downloads of ‘MODIS’ time series directly to your R workspace or your computer.

To install the current stable release use a CRAN repository:

install.packages("MODISTools")
library("MODISTools")


## ecmwfr

Programmatic interface to the ‘ECMWF’ web API services. Allows for easy downloads of ECMWF public data.

To install the toolbox in R run the following commands in a R terminal

install.packages("ecmwfr")
library("ecmwfr")


## snotelr

SnotelR is a R toolbox to facilitate easy SNOTEL data exploration and downloads through a convenient R shiny based GUI. In addition it provides a routine to extract basic snow phenology metrics.

You can quick install the package with the following commands:

install.packages("snotelr")
library("snotelr")


## foto

The FOTO (Fourier Transform Textural Ordination) method uses a principal component analysis (PCA) on radially averaged 2D Fourier spectra to characterize (grayscale) image texture. The FOTO method was described by Couteron et al. 2005 to quantify canopy stucture in relation to biomass and biodiversity. More recently, the code base of this package was used in a similar study by Solorzano et al. 2018. Although the techiques as presented in these papers is applied on a canopy level, the principle works on images of all types.

To install the current stable release use a CRAN repository.

install.packages("foto")
library("foto")


# Python packages & code

## daymetpy

daymetpy attempts to fill the need for easy, integrated access to gridded daily Daymet weather data. The data are hosted by the Oak Ridge National Laboratories DAAC and accessed from their web service.

Install the package using pip and the following command:

pip install daymetpy


## GEE subsets

This is a small python script to subset GEE gridded data products into time series for a given location or list of locations. This script should make it easier to subset remote sensing time series for processing external to GEE.

This in part replaces for example the ORNL DAAC MODIS subsets or Daymet web services, but extends these to higher resolution date such as Landsat and Sentinel. More so, it should also work on all other gridded products using the same product / band syntax (e.g. the MODIS phenology product MCD12Q2 or the MODIS snow product MOD10A1). If this code made your life easier please refer to it using the Zenodo citation and DOI (see below / medallion) in any research papers. To install the code, clone the github repository.

git clone https://github.com/khufkens/google_earth_engine_subsets.git


Make sure you have a working Google Earth Engine python API setup. The installation instructions can be found on the GEE developer site.

# Javascript

## MCD10A1

The Google Earth Engine (GEE) code within this project combines MODIS Aqua - Terra snow cover products and derives snow melt - accumulation (snow phenology) dates.

The original MODIS products (MOD10A1 & MYD10A1, for the Terra and Aqua platforms respectively) as processed by the National Snow and Ice Data Center (NSIDC) have the tendency to be biased low.

My code fuses these two data streams using a maximum value approach to account for this bias. More importantly, the script also generates a derived snow phenology product where I calculate the date of snow melt (< 5% snow cover) in spring and and snow accumulation (> 5%) in autumn.

As an example the script runs a simple regression analysis to mark trends in snow melt dates, answering the question if snow melt occurs later or earlier over time. To use the code copy it to your GEE editor.