def get_quantities(self, quantities, filters=None, native_filters=None, return_iterator=False):
quantities = self._preprocess_requested_quantities(quantities)<EOL>filters = self._preprocess_filters(filters)<EOL>native_filters = self._preprocess_native_filters(native_filters)<EOL>it = self._get_quantities_iter(quantities, filters, native_filters)<EOL>if return_iterator:<EOL><INDENT>return it<EOL><DEDENT>data_all = defaultdict(list)<EOL>for data in it:<EOL><INDENT>for q in quantities:<EOL><INDENT>data_all[q].append(data[q])<EOL><DEDENT><DEDENT>return {q: concatenate_1d(data_all[q]) for q in quantities}<EOL>
Fetch quantities from this catalog.

Parameters
----------
quantities : str or list of str or tuple of str
    quantities to fetch

filters : list of tuple, or GCRQuery instance, optional
    filters to apply. Each filter should be in the format of (callable, str, str, ...)

native_filters : list of tuple, optional
    Native filters to apply. Each filter should be in the format of (callable, str, str, ...)

return_iterator : bool, optional
    if True, return an iterator that iterates over the native format, default is False

Returns
-------
quantities : dict, or iterator of dict (when `return_iterator` is True)