def get_vos(da):
    """
    Takes an xarray DataArray containing veg_index values and calculates the vegetation 
    value and time (day of year) at valley of season (vos) for each timeseries per-pixel. 
    The valley of season is the minimum value in the timeseries, per-pixel.
    
    Parameters
    ----------
    da: xarray DataArray
        A two-dimensional or multi-dimensional array containing an DataArray of veg_index 
        and time values. 

    Returns
    -------
    da_vos_values : xarray DataArray
        An xarray DataArray type with an x and y dimension (no time). Each pixel is the 
        veg_index value detected at the valley of season (vos).
    da_vos_times : xarray DataArray
        An xarray DataArray type with an x and y dimension (no time). Each pixel is the 
        time (day of year) value detected at the valley of season (vos).
    """
    
    # notify user
    print('Beginning calculation of valley of season (vos) values and times.')

    # get vos values (min val in each pixel timeseries)
    print('Calculating valley of season (vos) values.')
    da_vos_values = da.min('time', keep_attrs=True)
    
    # get vos times (day of year) at min val in each pixel timeseries)
    print('Calculating valley of season (vos) times.')
    i = da.argmin('time', skipna=True)
    da_vos_times = da['time.dayofyear'].isel(time=i, drop=True)
    
    # convert type
    da_vos_values = da_vos_values.astype('float32')
    da_vos_times = da_vos_times.astype('int16')
    
    # rename vars
    da_vos_values = da_vos_values.rename('vos_values')
    da_vos_times = da_vos_times.rename('vos_times')

    # notify user
    print('Success!')
    return da_vos_values, da_vos_times