Downloads feature values for the given
        :class:`MapobjectType <tmlib.models.mapobject.MapobjectType>`.

        Parameters
        ----------
        mapobject_type_name: str
            type of the segmented objects
        plate_name: str, optional
            name of the plate
        well_name: str, optional
            name of the well
        well_pos_y: int, optional
            y-position of the site relative to the well grid
        well_pos_x: int, optional
            x-position of the site relative to the well grid
        tpoint: int, optional
            zero-based time point index

        Returns
        -------
        pandas.DataFrame
            *n*x*p* dataframe, where *n* are number of objects and *p* number
            of features

        See also
        --------
        :func:`tmserver.api.feature.get_feature_values`
        :class:`tmlib.models.feature.FeatureValues`

        Warning
        -------
        This will try to load all data into memory, which may be problematic
        for large datasets.

def download_feature_values(self, mapobject_type_name,
            plate_name=None, well_name=None, well_pos_y=None, well_pos_x=None,
            tpoint=None):
        '''Downloads feature values for the given
        :class:`MapobjectType <tmlib.models.mapobject.MapobjectType>`.

        Parameters
        ----------
        mapobject_type_name: str
            type of the segmented objects
        plate_name: str, optional
            name of the plate
        well_name: str, optional
            name of the well
        well_pos_y: int, optional
            y-position of the site relative to the well grid
        well_pos_x: int, optional
            x-position of the site relative to the well grid
        tpoint: int, optional
            zero-based time point index

        Returns
        -------
        pandas.DataFrame
            *n*x*p* dataframe, where *n* are number of objects and *p* number
            of features

        See also
        --------
        :func:`tmserver.api.feature.get_feature_values`
        :class:`tmlib.models.feature.FeatureValues`

        Warning
        -------
        This will try to load all data into memory, which may be problematic
        for large datasets.
        '''
        res = self._download_feature_values(
            mapobject_type_name, plate_name, well_name, well_pos_y, well_pos_x,
            tpoint
        )
        logger.debug('decode CSV data')
        file_obj = StringIO(res.content.decode('utf-8'))
        try:
            return pd.read_csv(file_obj)
        except EmptyDataError:
            return pd.DataFrame()