예제 #1
0
    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)
예제 #2
0
    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)
예제 #3
0
파일: core.py 프로젝트: astropy/astroquery
    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)
예제 #4
0
    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)