def test_moc_order_param(self, moc_order): moc_region = MOC.from_json({'0': [1]}) result = cds.query_region(region=moc_region, # return a mocpy obj return_moc=True, max_norder=moc_order, get_query_payload=False) assert isinstance(result, MOC)
def _parse_result(self, response, verbose=False): """ Parsing of the response returned by the MOCServer. Parameters ---------- response : `~requests.Response` The HTTP response returned by the MOCServer. verbose : bool, optional False by default. Returns ------- result : `astropy.table.Table` or `mocpy.MOC` By default an astropy table of the data-sets matching the query. If ``return_moc`` is set to True, it gives a MOC object corresponding to the union of the MOCs from all the matched data-sets. """ if not verbose: commons.suppress_vo_warnings() result = response.json() if not self.return_moc: """ The user will get `astropy.table.Table` object whose columns refer to the returned data-set meta-datas. """ # cast the data-sets meta-datas values to their correct Python type. typed_result = [] for d in result: typed_d = {k: self._cast_to_float(v) for k, v in d.items()} typed_result.append(typed_d) # looping over all the record's keys to find all the existing keys column_names_l = [] for d in typed_result: column_names_l.extend(d.keys()) # remove all the doubles column_names_l = list(set(column_names_l)) # init a dict mapping all the meta-data's name to an empty list table_d = {key: [] for key in column_names_l} type_d = {key: None for key in column_names_l} masked_array_d = {key: [] for key in column_names_l} # fill the dict with the value of each returned data-set one by one. for d in typed_result: row_table_d = {key: None for key in column_names_l} row_table_d.update(d) for k, mask_l in masked_array_d.items(): entry_masked = False if k in d.keys() else True mask_l.append(entry_masked) for k, v in row_table_d.items(): if v: type_d[k] = type(v) table_d[k].append(v) # define all the columns using astropy.table.MaskedColumn objects columns_l = [] for k, v in table_d.items(): try: if k != '#': columns_l.append(MaskedColumn(v, name=k, mask=masked_array_d[k], dtype=type_d[k])) except ValueError: # some metadata can be of multiple types when looking on all the datasets. # this can be due to internal typing errors of the metadatas. columns_l.append(MaskedColumn(v, name=k, mask=masked_array_d[k], dtype=object)) pass # return an `astropy.table.Table` object created from columns_l return Table(columns_l) """ The user will get `mocpy.MOC` object. """ # remove empty_order_removed_d = {} for order, ipix_l in result.items(): if len(ipix_l) > 0: empty_order_removed_d.update({order: ipix_l}) # return a `mocpy.MOC` object. See https://github.com/cds-astro/mocpy and the MOCPy's doc return MOC.from_json(empty_order_removed_d)
def _parse_result(self, response, verbose=False): """ Parsing of the response returned by the MOCServer. Parameters ---------- response : `~requests.Response` The HTTP response returned by the MOCServer. verbose : bool, optional False by default. Returns ------- result : `astropy.table.Table` or `mocpy.MOC` By default an astropy table of the data-sets matching the query. If ``return_moc`` is set to True, it gives a MOC object corresponding to the union of the MOCs from all the matched data-sets. """ if not verbose: commons.suppress_vo_warnings() result = response.json() if not self.return_moc: """ The user will get `astropy.table.Table` object whose columns refer to the returned data-set meta-datas. """ # cast the data-sets meta-datas values to their correct Python type. typed_result = [] for d in result: typed_d = {k: self._cast_to_float(v) for k, v in d.items()} typed_result.append(typed_d) # looping over all the record's keys to find all the existing keys column_names_l = [] for d in typed_result: column_names_l.extend(d.keys()) # remove all the doubles column_names_l = list(set(column_names_l)) # init a dict mapping all the meta-data's name to an empty list table_d = {key: [] for key in column_names_l} type_d = {key: None for key in column_names_l} masked_array_d = {key: [] for key in column_names_l} # fill the dict with the value of each returned data-set one by one. for d in typed_result: row_table_d = {key: None for key in column_names_l} row_table_d.update(d) for k, mask_l in masked_array_d.items(): entry_masked = False if k in d.keys() else True mask_l.append(entry_masked) for k, v in row_table_d.items(): if v: type_d[k] = type(v) table_d[k].append(v) # define all the columns using astropy.table.MaskedColumn objects columns_l = [] for k, v in table_d.items(): try: if k != '#': columns_l.append( MaskedColumn(v, name=k, mask=masked_array_d[k], dtype=type_d[k])) except ValueError: # some metadata can be of multiple types when looking on all the datasets. # this can be due to internal typing errors of the metadatas. columns_l.append( MaskedColumn(v, name=k, mask=masked_array_d[k], dtype=object)) pass # return an `astropy.table.Table` object created from columns_l return Table(columns_l) """ The user will get `mocpy.MOC` object. """ # remove empty_order_removed_d = {} for order, ipix_l in result.items(): if len(ipix_l) > 0: empty_order_removed_d.update({order: ipix_l}) # return a `mocpy.MOC` object. See https://github.com/cds-astro/mocpy and the MOCPy's doc return MOC.from_json(empty_order_removed_d)