diff --git a/docs/.buildinfo b/docs/.buildinfo index d840ca9..6ba2f11 100644 --- a/docs/.buildinfo +++ b/docs/.buildinfo @@ -1,4 +1,4 @@ # Sphinx build info version 1 # This file hashes the configuration used when building these files. When it is not found, a full rebuild will be done. -config: 20de538d23999e0682f5043704a6a894 +config: bc064b999073f39c5268b1314d8c5e6f tags: 645f666f9bcd5a90fca523b33c5a78b7 diff --git a/docs/_images/notebooks_intro_notebook_65_0.png b/docs/_images/notebooks_intro_notebook_65_0.png new file mode 100644 index 0000000..eedd5fb Binary files /dev/null and b/docs/_images/notebooks_intro_notebook_65_0.png differ diff --git a/docs/_images/notebooks_intro_notebook_67_1.png b/docs/_images/notebooks_intro_notebook_67_1.png new file mode 100644 index 0000000..3d510e2 Binary files /dev/null and b/docs/_images/notebooks_intro_notebook_67_1.png differ diff --git a/docs/_images/notebooks_intro_notebook_74_0.png b/docs/_images/notebooks_intro_notebook_74_0.png new file mode 100644 index 0000000..556be5b Binary files /dev/null and b/docs/_images/notebooks_intro_notebook_74_0.png differ diff --git a/docs/_modules/index.html b/docs/_modules/index.html index a9af155..fd3b88c 100644 --- a/docs/_modules/index.html +++ b/docs/_modules/index.html @@ -3,7 +3,7 @@ - Overview: module code — pzserver 0.1.dev1+ga41731a documentation + Overview: module code — pzserver 0.2.2.dev7+g095ab2f documentation @@ -32,7 +32,7 @@ pzserver
- 0.1 + 0.2
@@ -47,7 +47,7 @@
  • Home page
  • Install
  • API Reference
  • -
  • Notebooks
  • +
  • Notebooks
  • diff --git a/docs/_modules/pzserver/catalog.html b/docs/_modules/pzserver/catalog.html index 0490dd1..347fc5b 100644 --- a/docs/_modules/pzserver/catalog.html +++ b/docs/_modules/pzserver/catalog.html @@ -3,7 +3,7 @@ - pzserver.catalog — pzserver 0.1.dev1+ga41731a documentation + pzserver.catalog — pzserver 0.2.2.dev7+g095ab2f documentation @@ -32,7 +32,7 @@ pzserver
    - 0.1 + 0.2
    @@ -47,7 +47,7 @@
  • Home page
  • Install
  • API Reference
  • -
  • Notebooks
  • +
  • Notebooks
  • @@ -85,12 +85,12 @@

    Source code for pzserver.catalog

     
     
     
    [docs]class Catalog: - """ + """ Main class for loading catalog """ def __init__(self, data=None, metadata=None, metadata_df=None): - """ + """ Catalog class constructor """ self.data = pd.DataFrame(data) @@ -98,8 +98,8 @@

    Source code for pzserver.catalog

             self.columns = metadata.get("main_file").get("columns_association")
             self.metadata_df = metadata_df
     
    -
    [docs] def display_metadata(self): - """ +
    [docs] def display_metadata(self): + """ Displays the catalog's metadata Displays a pandas.io.formats.style.Styler object @@ -111,15 +111,15 @@

    Source code for pzserver.catalog

     
     
     
    [docs]class SpeczCatalog(Catalog): - """ + """ SpeczCatalog Args: Catalog (_type_): _description_ """ -
    [docs] def plot(self, savefig=False): - """ +
    [docs] def plot(self, savefig=False): + """ Very basic plots to characterize a Spec-z catalog. Args: @@ -161,15 +161,15 @@

    Source code for pzserver.catalog

     
     
     
    [docs]class TrainingSet(Catalog): - """ + """ TrainingSet Args: Catalog (_type_): _description_ """ -
    [docs] def plot(self, mag_name=None, savefig=False): - """Very basic plots to characterize a Training Set. +
    [docs] def plot(self, mag_name=None, savefig=False): + """Very basic plots to characterize a Training Set. Args: savefig: option to save PNG figure (boolean) diff --git a/docs/_modules/pzserver/communicate.html b/docs/_modules/pzserver/communicate.html index 3285d32..a654544 100644 --- a/docs/_modules/pzserver/communicate.html +++ b/docs/_modules/pzserver/communicate.html @@ -3,7 +3,7 @@ - pzserver.communicate — pzserver 0.1.dev1+ga41731a documentation + pzserver.communicate — pzserver 0.2.2.dev7+g095ab2f documentation @@ -32,7 +32,7 @@ pzserver
    - 0.1 + 0.2
    @@ -85,7 +85,7 @@

    Source code for pzserver.communicate

     
     
     
    [docs]class PzRequests: - """ + """ Responsible for managing all requests to the Pz Server app. """ @@ -105,7 +105,7 @@

    Source code for pzserver.communicate

         }
    def __init__(self, token, host="pz"): - """ + """ Initializes communication with the Pz Server app. Args: @@ -123,7 +123,7 @@

    Source code for pzserver.communicate

     
         @staticmethod
     
    [docs] def safe_list_get(_list, idx, default) -> list: - """ + """ Gets a value from a list if it exists. Otherwise returns the default. Args: @@ -141,7 +141,7 @@

    Source code for pzserver.communicate

                 return default
    [docs] def _check_filters(self, entity, filters): - """ + """ Checks if the filters are valid for an entity. Args: @@ -181,7 +181,7 @@

    Source code for pzserver.communicate

                     )
    [docs] def _reverse_filters(self, api_params) -> list: - """ + """ Reverts filter mapping Args: @@ -192,7 +192,7 @@

    Source code for pzserver.communicate

             """
     
             def check_filter(filter_name):
    -            """
    +            """
                 Check filter name
     
                 Args:
    @@ -210,7 +210,7 @@ 

    Source code for pzserver.communicate

             return list(set(map(check_filter, api_params)))
    [docs] def _check_response(self, api_response) -> dict: - """ + """ Checks for possible HTTP errors in the response. Args: @@ -252,7 +252,7 @@

    Source code for pzserver.communicate

             cert=None,
             proxies=None,
         ) -> dict:
    -        """
    +        """
             Sends PreparedRequest object.
     
             Args:
    @@ -333,7 +333,7 @@ 

    Source code for pzserver.communicate

             return data
    [docs] def _get_request(self, url, params=None) -> dict: - """ + """ Get a record from the API. Args: @@ -359,7 +359,7 @@

    Source code for pzserver.communicate

             return self._send_request(req.prepare())
    [docs] def _options_request(self, url) -> dict: - """ + """ Returns the options and settings for a given endpoint. Args: @@ -383,7 +383,7 @@

    Source code for pzserver.communicate

             return self._send_request(req.prepare())
    [docs] def _check_token(self): - """ + """ Checks if the token is valid, otherwise stops class initialization. @@ -397,7 +397,7 @@

    Source code for pzserver.communicate

                 raise requests.exceptions.RequestException(f"Status code {stcode}: {msg}")
    [docs] def _download_request(self, url, save_in="."): - """ + """ Download a record from the API. Args: @@ -432,7 +432,7 @@

    Source code for pzserver.communicate

             return data
    [docs] def _post_request(self, url, payload) -> dict: - """ + """ Posts a record to the API. Args: @@ -458,7 +458,7 @@

    Source code for pzserver.communicate

             return self._send_request(req.prepare())
    [docs] def _delete_request(self, url) -> dict: - """ + """ Remove a record from the API. Args: @@ -495,7 +495,7 @@

    Source code for pzserver.communicate

             return resp
    [docs] def get_entities(self) -> list: - """ + """ Gets all entities from the API. Returns: @@ -510,7 +510,7 @@

    Source code for pzserver.communicate

             return list(resp.keys())
    [docs] def get_all(self, entity) -> list: - """ + """ Returns a list with all records of the entity. Args: @@ -528,7 +528,7 @@

    Source code for pzserver.communicate

             return resp.get("data").get("results")
    [docs] def get(self, entity, _id) -> dict: - """ + """ Gets a record from the entity. Args: @@ -547,7 +547,7 @@

    Source code for pzserver.communicate

             return data.get("data")
    [docs] def options(self, entity) -> dict: - """ + """ Gets options (filters, search and ordering) from the entity. Args: @@ -564,7 +564,7 @@

    Source code for pzserver.communicate

             return opt.get("data")
    [docs] def download_main_file(self, _id, save_in="."): - """ + """ Gets the contents uploaded by the user for a given record. Args: @@ -580,7 +580,7 @@

    Source code for pzserver.communicate

             )
    [docs] def get_main_file_info(self, _id, column_association=True) -> dict: - """ + """ Returns information about the main product file. Args: @@ -609,7 +609,7 @@

    Source code for pzserver.communicate

             return data
    [docs] def download_product(self, _id, save_in="."): - """ + """ Downloads the product to local Args: @@ -625,7 +625,7 @@

    Source code for pzserver.communicate

             )
    [docs] def get_products(self, filters=None, status=1) -> list: - """ + """ Returns list of products according to a filter Args: diff --git a/docs/_modules/pzserver/core.html b/docs/_modules/pzserver/core.html index 18e1fc6..7a6097d 100644 --- a/docs/_modules/pzserver/core.html +++ b/docs/_modules/pzserver/core.html @@ -3,7 +3,7 @@ - pzserver.core — pzserver 0.1.dev1+ga41731a documentation + pzserver.core — pzserver 0.2.2.dev7+g095ab2f documentation @@ -32,7 +32,7 @@ pzserver
    - 0.1 + 0.2
    @@ -98,12 +98,12 @@

    Source code for pzserver.core

     
     
     
    [docs]class PzServer: - """ + """ Responsible for managing user interactions with the Pz Server app. """ def __init__(self, token=None, host="pz"): - """ + """ PzServer class constructor Args: @@ -123,8 +123,8 @@

    Source code for pzserver.core

             self._token = token
     
         # ---- methods to get general info ----#
    -
    [docs] def get_product_types(self) -> list: - """ +
    [docs] def get_product_types(self) -> list: + """ Fetches the list of valid product types. Connects to the Photo-z Server's administrative @@ -136,8 +136,8 @@

    Source code for pzserver.core

             """
             return self.api.get_all("product-types")
    -
    [docs] def display_product_types(self): - """ +
    [docs] def display_product_types(self): + """ Displays the list of product types as dataframe Displays a pandas.io.formats.style.Styler object @@ -152,8 +152,8 @@

    Source code for pzserver.core

             )
             display(dataframe.style.hide(axis="index"))
    -
    [docs] def get_users(self) -> list: - """ +
    [docs] def get_users(self) -> list: + """ Fetches the list of registered users. Connects to the Photo-z Server's administrative @@ -165,8 +165,8 @@

    Source code for pzserver.core

             """
             return self.api.get_all("users")
    -
    [docs] def display_users(self): - """ +
    [docs] def display_users(self): + """ Displays the list of users as dataframe Displays a pandas.io.formats.style.Styler object @@ -180,8 +180,8 @@

    Source code for pzserver.core

             )
             display(dataframe.style.hide(axis="index"))
    -
    [docs] def get_releases(self) -> list: - """ +
    [docs] def get_releases(self) -> list: + """ Fetches the list of valid data releases. Connects to the Photo-z Server's administrative @@ -195,8 +195,8 @@

    Source code for pzserver.core

             """
             return self.api.get_all("releases")
    -
    [docs] def display_releases(self): - """ +
    [docs] def display_releases(self): + """ Displays the list of data releases as dataframe Displays a pandas.io.formats.style.Styler object @@ -211,8 +211,8 @@

    Source code for pzserver.core

             )
             display(dataframe.style.hide(axis="index"))
    -
    [docs] def get_products_list(self, filters=None) -> list: - """ +
    [docs] def get_products_list(self, filters=None) -> list: + """ Fetches the list of data products available. Connects to the Photo-z Server's database and @@ -229,8 +229,8 @@

    Source code for pzserver.core

             """
             return self.api.get_products(filters)
    -
    [docs] def display_products_list(self, filters=None): - """ +
    [docs] def display_products_list(self, filters=None): + """ Displays the list of data products as dataframe Displays a pandas.io.formats.style.Styler object @@ -272,8 +272,8 @@

    Source code for pzserver.core

             display(dataframe.style.hide(axis="index"))
    # ---- methods to get data or metadata of one particular product ----# -
    [docs] def get_product_metadata(self, product_id=None, mainfile_info=True) -> dict: - """ +
    [docs] def get_product_metadata(self, product_id=None, mainfile_info=True) -> dict: + """ Fetches the product metadata. Connects to the Photo-z Server's database and @@ -309,8 +309,8 @@

    Source code for pzserver.core

     
             return metaprod
    -
    [docs] def display_product_metadata(self, product_id=None, show=True): - """ +
    [docs] def display_product_metadata(self, product_id=None, show=True): + """ Displays the metadata informed by the product owner. Displays a pandas.io.formats.style.Styler object @@ -357,8 +357,8 @@

    Source code for pzserver.core

     
             return dataframe
    -
    [docs] def download_product(self, product_id=None, save_in="."): - """ +
    [docs] def download_product(self, product_id=None, save_in="."): + """ Download the data to local. Connects to the Photo-z Server's database and @@ -384,8 +384,8 @@

    Source code for pzserver.core

             else:
                 print(f"{FONTCOLORERR}Error: {results_dict['message']}{FONTCOLORERR}")
    -
    [docs] def get_product(self, product_id=None, fmt=None): - """ +
    [docs] def get_product(self, product_id=None, fmt=None): + """ Fetches the data product contents to local. Connects to the Photo-z Server's database and @@ -466,8 +466,8 @@

    Source code for pzserver.core

             print("Done!")
             return results
    -
    [docs] def __transform_df(self, dataframe, metadata): - """ +
    [docs] def __transform_df(self, dataframe, metadata): + """ Transforms the dataframe into an object corresponding to its product type (currently we have two: Spec-z Catalog or Training Set) or returns the dataframe. @@ -489,8 +489,8 @@

    Source code for pzserver.core

             return results
    # ---- Training Set Maker methods ----# -
    [docs] def combine_specz_catalogs(self, catalog_list, duplicates_critera="smallest flag"): - """_summary_ +
    [docs] def combine_specz_catalogs(self, catalog_list, duplicates_critera="smallest flag"): + """_summary_ Args: catalog_list (_type_): _description_ @@ -505,14 +505,14 @@

    Source code for pzserver.core

             # return SpeczCatalog object
             raise NotImplementedError
    -
    [docs] def make_training_set( +
    [docs] def make_training_set( self, specz_catalog=None, photo_catalog=None, search_radius=1.0, multiple_match_criteria="select closest", ): - """_summary_ + """_summary_ Args: specz_catalog (_type_, optional): _description_. Defaults to None. diff --git a/docs/_sources/autoapi/pzserver/catalog/index.rst.txt b/docs/_sources/autoapi/pzserver/catalog/index.rst.txt index c2a4c82..a67220b 100644 --- a/docs/_sources/autoapi/pzserver/catalog/index.rst.txt +++ b/docs/_sources/autoapi/pzserver/catalog/index.rst.txt @@ -26,6 +26,7 @@ Classes .. py:class:: Catalog(data=None, metadata=None, metadata_df=None) + Main class for loading catalog .. py:method:: display_metadata() @@ -41,6 +42,7 @@ Classes .. py:class:: SpeczCatalog(data=None, metadata=None, metadata_df=None) + Bases: :py:obj:`Catalog` SpeczCatalog @@ -58,6 +60,7 @@ Classes .. py:class:: TrainingSet(data=None, metadata=None, metadata_df=None) + Bases: :py:obj:`Catalog` TrainingSet diff --git a/docs/_sources/autoapi/pzserver/communicate/index.rst.txt b/docs/_sources/autoapi/pzserver/communicate/index.rst.txt index e91f751..f8e424d 100644 --- a/docs/_sources/autoapi/pzserver/communicate/index.rst.txt +++ b/docs/_sources/autoapi/pzserver/communicate/index.rst.txt @@ -24,6 +24,7 @@ Classes .. py:class:: PzRequests(token, host='pz') + Responsible for managing all requests to the Pz Server app. .. py:attribute:: _token diff --git a/docs/_sources/autoapi/pzserver/core/index.rst.txt b/docs/_sources/autoapi/pzserver/core/index.rst.txt index 048b175..de9c6e8 100644 --- a/docs/_sources/autoapi/pzserver/core/index.rst.txt +++ b/docs/_sources/autoapi/pzserver/core/index.rst.txt @@ -43,6 +43,7 @@ Attributes .. py:class:: PzServer(token=None, host='pz') + Responsible for managing user interactions with the Pz Server app. .. py:method:: get_product_types() -> list diff --git a/docs/_sources/autoapi/pzserver/index.rst.txt b/docs/_sources/autoapi/pzserver/index.rst.txt index 0cc14d0..36a9464 100644 --- a/docs/_sources/autoapi/pzserver/index.rst.txt +++ b/docs/_sources/autoapi/pzserver/index.rst.txt @@ -41,6 +41,7 @@ Classes .. py:class:: Catalog(data=None, metadata=None, metadata_df=None) + Main class for loading catalog .. py:method:: display_metadata() @@ -56,6 +57,7 @@ Classes .. py:class:: SpeczCatalog(data=None, metadata=None, metadata_df=None) + Bases: :py:obj:`Catalog` SpeczCatalog @@ -73,6 +75,7 @@ Classes .. py:class:: TrainingSet(data=None, metadata=None, metadata_df=None) + Bases: :py:obj:`Catalog` TrainingSet @@ -90,6 +93,7 @@ Classes .. py:class:: PzServer(token=None, host='pz') + Responsible for managing user interactions with the Pz Server app. .. py:method:: get_product_types() -> list diff --git a/docs/_sources/index.rst.txt b/docs/_sources/index.rst.txt index 873e1ee..98ecea7 100644 --- a/docs/_sources/index.rst.txt +++ b/docs/_sources/index.rst.txt @@ -15,7 +15,7 @@ The Photo-z Server Library is a Python package to support the Photo-z Server use Home page Install API Reference - Notebooks + Notebooks Indices and tables diff --git a/docs/_sources/nbs.rst.txt b/docs/_sources/nbs.rst.txt new file mode 100644 index 0000000..b8cbff3 --- /dev/null +++ b/docs/_sources/nbs.rst.txt @@ -0,0 +1,6 @@ +Notebooks +======================================================================================== + +.. toctree:: + + Introducing Pz Server lib diff --git a/docs/_sources/notebooks/intro_notebook.ipynb.txt b/docs/_sources/notebooks/intro_notebook.ipynb.txt index 5ef13e6..660cbe7 100644 --- a/docs/_sources/notebooks/intro_notebook.ipynb.txt +++ b/docs/_sources/notebooks/intro_notebook.ipynb.txt @@ -1,6 +1,7 @@ { "cells": [ { + "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ @@ -15,42 +16,49 @@ ] }, { + "attachments": {}, "cell_type": "markdown", "metadata": { "tags": [] }, "source": [ - "\n", - "#### Notebook contents\n", + "
    \n", + "\n", + "# Notebook contents\n", + "\n", "- PZ Server\n", - " - [Introduction](#intro) \n", - " - [How to upload a data product to the PZ Server](#upload)\n", - " - [How to download a data product from the PZ Server](#download)\n", + " - [Introduction](#introduction) \n", + " - [How to upload a data product to the PZ Server](#how-to-upload-a-data-product-to-the-pz-server)\n", + " - [How to download a data product from the PZ Server](#how-to-download-a-data-product-from-the-pz-server)\n", "- PZ Server API (Python library pz-server-lib)\n", - " - [How to get general info from PZ Server](#general)\n", - " - [How to display the metadata of a data product](#metadata)\n", - " - [How to download data products as .zip files](#download-zip) \n", - " - [How to share data products with other RSP users](#share)\n", - " - [How to retrieve contents of data products (work on memory)](#retrieve-contents)\n", + " - [How to get general info from PZ Server](#how-to-get-general-info-from-pz-server)\n", + " - [How to display the metadata of a data product](#how-to-display-the-metadata-of-a-data-product)\n", + " - [How to download data products as .zip files](#how-to-download-data-products-as-zip-files) \n", + " - [How to share data products with other RSP users](#how-to-share-data-products-with-other-rsp-users)\n", + " - [How to retrieve contents of data products (work on memory)](#how-to-retrieve-contents-of-data-products-work-on-memory)\n", "- Product types \n", - " - [Spec-z Catalogs](#spec)\n", - " - [Training Sets](#train)\n", - " - [Photo-z Validation Results](#valid)\n", - " - [Photo-z Tables](#pz_tables)" + " - [Spec-z Catalogs](#spec-z-catalog)\n", + " - [Training Sets](#training-sets)\n", + " - [Photo-z Validation Results](#photo-z-validation-results)\n", + " - [Photo-z Tables](#photo-z-tables)" ] }, { + "attachments": {}, "cell_type": "markdown", "metadata": { "tags": [] }, "source": [ - "\n", "# The PZ Server\n", + "\n", + "
    \n", + "\n", "## Introduction \n" ] }, { + "attachments": {}, "cell_type": "markdown", "metadata": { "tags": [] @@ -62,12 +70,17 @@ ] }, { + "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ - "\n", - "## How to upload a data product to the PZ Server\n", - " \n", + "
    \n", + "\n", + "[back to the top](#notebook-contents)\n", + "\n", + "
    \n", + "\n", + "## How to upload a data product to the PZ Server \n", "\n", "To upload a data product, click on the button **NEW PRODUCT** on the top left of the **User-generated Data Products** page and fill in the Upload Form with relevant metadata.\n", "\n", @@ -80,25 +93,37 @@ ] }, { + "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ - "\n", + "
    \n", + "\n", + "[back to the top](#notebook-contents)\n", + "\n", + "
    \n", + "\n", "## How to download a data product from the PZ Server\n", - " \n", "\n", "To download a data product available on the Photo-z Server, go to one of the two pages by clicking on the card \"LSST PZ Data Products\" (for official products released by LSST DM Team) or \"User-generated Data Products\" (for products uploaded by the members of LSST community. The download button is on the left side of each data product (each row of the list). " ] }, { + "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ - "# The PZ Server API (Python library pz-server-lib)\n", - " " + "
    \n", + "\n", + "[back to the top](#notebook-contents)\n", + "\n", + "
    \n", + "\n", + "# The PZ Server API (Python library pz-server-lib)" ] }, { + "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ @@ -106,7 +131,7 @@ "\n", "**Using pip**\n", "\n", - "The PZ Server API is avalialble on **pip** as `pz-server-lib`. To install the API and its dependencies, type, on the Terminal: \n", + "The PZ Server API is avalialble on **pip** as `pzserver`. To install the API and its dependencies, type, on the Terminal: \n", "\n", "```\n", "$ pip install pzserver \n", @@ -128,10 +153,11 @@ "```\n", "\n", "\n", - "OBS: You might need to restart the kernel on the notebook to incorporate the new library. \n" + "OBS: You might need to restart the kernel on the notebook to incorporate the new library.\n" ] }, { + "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ @@ -140,7 +166,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 1, "metadata": {}, "outputs": [], "source": [ @@ -151,6 +177,7 @@ ] }, { + "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ @@ -158,6 +185,7 @@ ] }, { + "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ @@ -170,19 +198,25 @@ "metadata": {}, "outputs": [], "source": [ - "pz_server = PzServer(token=\"\", host=\"pz-dev\") # \"pz-dev\" is the temporary host for test phase " + "pz_server = PzServer(token=\"\", host=\"pz-dev\") # \"pz-dev\" is the temporary host for test phase " ] }, { + "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ - "\n", - "## How to get general info from PZ Server\n", - " " + "
    \n", + "\n", + "[back to the top](#notebook-contents)\n", + "\n", + "
    \n", + "\n", + "## How to get general info from PZ Server" ] }, { + "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ @@ -193,14 +227,55 @@ }, { "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], + "execution_count": 3, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
    Product typeDescription
    Spec-z CatalogCatalog of spectroscopic redshifts and positions (usually equatorial coordinates).
    Training SetTraining set for photo-z algorithms (tabular data). It usually contains magnitudes, errors, and true redshifts.
    Validation ResultsResults of a photo-z validation procedure (free format). Usually contains photo-z estimates (single estimates and/or pdf) of a validation set and photo-z validation metrics.
    Photo-z TableResults of a photo-z estimation procedure. If the data is larger than the file upload limit (200MB), the product entry stores only the metadata (instructions on accessing the data should be provided in the description field.
    \n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], "source": [ "pz_server.display_product_types()" ] }, { + "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ @@ -209,14 +284,63 @@ }, { "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], + "execution_count": 4, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
    GitHub usernamename
    crisingulaniCristiano Singulani
    drewoldagDrew Oldag
    glaubervilaGlauber Costa Vila-Verde
    gschwendJulia Gschwend
    gverde
    singulani
    \n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], "source": [ "pz_server.display_users()" ] }, { + "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ @@ -225,14 +349,43 @@ }, { "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], + "execution_count": 5, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
    ReleaseDescription
    LSST DP0LSST Data Preview 0
    \n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], "source": [ "pz_server.display_releases()" ] }, { + "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ @@ -243,16 +396,171 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 6, "metadata": { "tags": [] }, - "outputs": [], + "outputs": [ + { + "data": { + "text/html": [ + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
    idinternal_nameproduct_nameproduct_typereleaseuploaded_byofficial_productpz_codedescriptioncreated_at
    1414_gama_specz_subsampleGAMA spec-z subsampleSpec-z CatalogNonegschwendFalseA small subsample of the GAMA DR3 spec-z catalog (Baldry et al. 2018) as an example of a typical spec-z catalog from the literature.2023-03-29T20:02:45.223568Z
    1313_vvds_specz_subsampleVVDS spec-z subsampleSpec-z CatalogNonegschwendFalseA small subsample of the VVDS spec-z catalog (Le Fèvre et al. 2004, Garilli et al. 2008) as an example of a typical spec-z catalog from the literature.2023-03-29T19:50:27.593735Z
    1212_goldenspike_knnGoldenspike KNNValidation ResultsNonegschwendFalseKNNResults of photoz validation using KNN on a mock test set from the example notebook goldenspike.ipynb available in RAIL's repository.2023-03-29T19:49:35.652295Z
    1111_goldenspike_flexzboostGoldenspike FlexZBoostValidation ResultsNonegschwendFalseFlexZBoostResults of photoz validation using FlexZBoost on a mock test set from the example notebook goldenspike.ipynb available in RAIL's repository.2023-03-29T19:48:34.864629Z
    1010_goldenspike_bpzGoldenspike BPZValidation ResultsLSST DP0gschwendFalseBPZResults of photoz validation using BPZ on a mock test set from the example notebook goldenspike.ipynb available in RAIL's repository.2023-03-29T19:42:04.424990Z
    99_goldenspike_train_data_hdf5Goldenspike train data hdf5Training SetNonegschwendFalseA mock training set created using the example notebook goldenspike.ipynb available in RAIL's repository. \r\n", + "Test upload of files in hdf5 format.2023-03-29T19:12:59.746096Z
    88_goldenspike_train_data_fitsGoldenspike train data fitsTraining SetNonegschwendFalseA mock training set created using the example notebook goldenspike.ipynb available in RAIL's repository. \r\n", + "Test upload of files in fits format.2023-03-29T19:09:12.958883Z
    77_goldenspike_train_data_parquetGoldenspike train data parquetTraining SetNonegschwendFalseA mock training set created using the example notebook goldenspike.ipynb available in RAIL's repository. Test upload of files in parquet format.2023-03-29T19:06:58.473920Z
    66_simple_training_setSimple training setTraining SetLSST DP0gschwendFalseA simple example training set created based on the Jupyter notebook simple_pz_training_set.ipynb created by Melissa Graham, available in the repository delegate-contributions-dp02. The file contains coordinates, redshifts, magnitudes, and errors, as an illustration of a typical training set for photo-z algorithms.2023-03-23T19:46:48.807872Z
    11_simple_true_z_catalogSimple true z catalogSpec-z CatalogNonegschwendFalseA simple example of a spectroscopic (true) redshifts catalog created based on the Jupyter notebook simple_pz_training_set.ipynb created by Melissa Graham, available in the repository delegate-contributions-dp02. The file contains only coordinates and redshifts, as an illustration of a typical spec-z catalog.2023-03-23T13:19:32.050795Z
    \n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], "source": [ "pz_server.display_products_list() " ] }, { + "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ @@ -261,15 +569,60 @@ }, { "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], + "execution_count": 7, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
    idinternal_nameproduct_nameproduct_typereleaseuploaded_byofficial_productpz_codedescriptioncreated_at
    66_simple_training_setSimple training setTraining SetLSST DP0gschwendFalseA simple example training set created based on the Jupyter notebook simple_pz_training_set.ipynb created by Melissa Graham, available in the repository delegate-contributions-dp02. The file contains coordinates, redshifts, magnitudes, and errors, as an illustration of a typical training set for photo-z algorithms.2023-03-23T19:46:48.807872Z
    \n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], "source": [ "pz_server.display_products_list(filters={\"release\": \"LSST DP0\", \n", " \"product_type\": \"Training Set\"})" ] }, { + "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ @@ -278,14 +631,71 @@ }, { "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], + "execution_count": 8, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
    idinternal_nameproduct_nameproduct_typereleaseuploaded_byofficial_productpz_codedescriptioncreated_at
    1010_goldenspike_bpzGoldenspike BPZValidation ResultsLSST DP0gschwendFalseBPZResults of photoz validation using BPZ on a mock test set from the example notebook goldenspike.ipynb available in RAIL's repository.2023-03-29T19:42:04.424990Z
    66_simple_training_setSimple training setTraining SetLSST DP0gschwendFalseA simple example training set created based on the Jupyter notebook simple_pz_training_set.ipynb created by Melissa Graham, available in the repository delegate-contributions-dp02. The file contains coordinates, redshifts, magnitudes, and errors, as an illustration of a typical training set for photo-z algorithms.2023-03-23T19:46:48.807872Z
    \n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], "source": [ "pz_server.display_products_list(filters={\"release\": \"DP0\"})" ] }, { + "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ @@ -294,16 +704,135 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 9, "metadata": { "tags": [] }, - "outputs": [], + "outputs": [ + { + "data": { + "text/html": [ + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
    idinternal_nameproduct_nameproduct_typereleaseuploaded_byofficial_productpz_codedescriptioncreated_at
    1414_gama_specz_subsampleGAMA spec-z subsampleSpec-z CatalogNonegschwendFalseA small subsample of the GAMA DR3 spec-z catalog (Baldry et al. 2018) as an example of a typical spec-z catalog from the literature.2023-03-29T20:02:45.223568Z
    1313_vvds_specz_subsampleVVDS spec-z subsampleSpec-z CatalogNonegschwendFalseA small subsample of the VVDS spec-z catalog (Le Fèvre et al. 2004, Garilli et al. 2008) as an example of a typical spec-z catalog from the literature.2023-03-29T19:50:27.593735Z
    99_goldenspike_train_data_hdf5Goldenspike train data hdf5Training SetNonegschwendFalseA mock training set created using the example notebook goldenspike.ipynb available in RAIL's repository. \r\n", + "Test upload of files in hdf5 format.2023-03-29T19:12:59.746096Z
    88_goldenspike_train_data_fitsGoldenspike train data fitsTraining SetNonegschwendFalseA mock training set created using the example notebook goldenspike.ipynb available in RAIL's repository. \r\n", + "Test upload of files in fits format.2023-03-29T19:09:12.958883Z
    77_goldenspike_train_data_parquetGoldenspike train data parquetTraining SetNonegschwendFalseA mock training set created using the example notebook goldenspike.ipynb available in RAIL's repository. Test upload of files in parquet format.2023-03-29T19:06:58.473920Z
    66_simple_training_setSimple training setTraining SetLSST DP0gschwendFalseA simple example training set created based on the Jupyter notebook simple_pz_training_set.ipynb created by Melissa Graham, available in the repository delegate-contributions-dp02. The file contains coordinates, redshifts, magnitudes, and errors, as an illustration of a typical training set for photo-z algorithms.2023-03-23T19:46:48.807872Z
    11_simple_true_z_catalogSimple true z catalogSpec-z CatalogNonegschwendFalseA simple example of a spectroscopic (true) redshifts catalog created based on the Jupyter notebook simple_pz_training_set.ipynb created by Melissa Graham, available in the repository delegate-contributions-dp02. The file contains only coordinates and redshifts, as an illustration of a typical spec-z catalog.2023-03-23T13:19:32.050795Z
    \n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], "source": [ "pz_server.display_products_list(filters={\"product_type__or\": [\"Spec-z Catalog\", \"training set\"]})" ] }, { + "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ @@ -312,26 +841,84 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 10, "metadata": { "tags": [] }, - "outputs": [], + "outputs": [ + { + "data": { + "text/plain": [ + "[{'id': 12,\n", + " 'release': None,\n", + " 'release_name': None,\n", + " 'product_type': 3,\n", + " 'product_type_name': 'Validation Results',\n", + " 'uploaded_by': 'gschwend',\n", + " 'is_owner': False,\n", + " 'internal_name': '12_goldenspike_knn',\n", + " 'display_name': 'Goldenspike KNN',\n", + " 'official_product': False,\n", + " 'pz_code': 'KNN',\n", + " 'description': \"Results of photoz validation using KNN on a mock test set from the example notebook goldenspike.ipynb available in RAIL's repository.\",\n", + " 'created_at': '2023-03-29T19:49:35.652295Z',\n", + " 'status': 1},\n", + " {'id': 11,\n", + " 'release': None,\n", + " 'release_name': None,\n", + " 'product_type': 3,\n", + " 'product_type_name': 'Validation Results',\n", + " 'uploaded_by': 'gschwend',\n", + " 'is_owner': False,\n", + " 'internal_name': '11_goldenspike_flexzboost',\n", + " 'display_name': 'Goldenspike FlexZBoost',\n", + " 'official_product': False,\n", + " 'pz_code': 'FlexZBoost',\n", + " 'description': \"Results of photoz validation using FlexZBoost on a mock test set from the example notebook goldenspike.ipynb available in RAIL's repository.\",\n", + " 'created_at': '2023-03-29T19:48:34.864629Z',\n", + " 'status': 1},\n", + " {'id': 10,\n", + " 'release': 1,\n", + " 'release_name': 'LSST DP0',\n", + " 'product_type': 3,\n", + " 'product_type_name': 'Validation Results',\n", + " 'uploaded_by': 'gschwend',\n", + " 'is_owner': False,\n", + " 'internal_name': '10_goldenspike_bpz',\n", + " 'display_name': 'Goldenspike BPZ',\n", + " 'official_product': False,\n", + " 'pz_code': 'BPZ',\n", + " 'description': \"Results of photoz validation using BPZ on a mock test set from the example notebook goldenspike.ipynb available in RAIL's repository.\",\n", + " 'created_at': '2023-03-29T19:42:04.424990Z',\n", + " 'status': 1}]" + ] + }, + "execution_count": 10, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "search_results = pz_server.get_products_list(filters={\"product_type\": \"results\"}) # PZ Validation results\n", "search_results" ] }, { + "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ - "\n", - "## How to display the metadata of a data product\n", - " " + "
    \n", + "\n", + "[back to the top](#notebook-contents)\n", + "\n", + "
    \n", + "\n", + "## How to display the metadata of a data product " ] }, { + "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ @@ -341,6 +928,7 @@ ] }, { + "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ @@ -349,9 +937,77 @@ }, { "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], + "execution_count": 11, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
    keyvalue
    id6
    releaseLSST DP0
    product_typeTraining Set
    uploaded_bygschwend
    internal_name6_simple_training_set
    product_nameSimple training set
    official_productFalse
    pz_code
    descriptionA simple example training set created based on the Jupyter notebook simple_pz_training_set.ipynb created by Melissa Graham, available in the repository delegate-contributions-dp02. The file contains coordinates, redshifts, magnitudes, and errors, as an illustration of a typical training set for photo-z algorithms.
    created_at2023-03-23T19:46:48.807872Z
    main_filesimple_pz_training_set.csv
    \n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], "source": [ "# pz_server.display_product_metadata() \n", "# pz_server.display_product_metadata(6) \n", @@ -360,15 +1016,21 @@ ] }, { + "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ - "\n", - "## How to download data products as .zip files\n", - " " + "
    \n", + "\n", + "[back to the top](#notebook-contents)\n", + "\n", + "
    \n", + "\n", + "## How to download data products as .zip files " ] }, { + "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ @@ -377,20 +1039,35 @@ }, { "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], + "execution_count": 12, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Connecting to PZ Server...\n", + "File saved as: ./14_gama_specz_subsample_f15c0.zip\n", + "Done!\n" + ] + } + ], "source": [ "pz_server.download_product(14, save_in=\".\")" ] }, { + "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ - "\n", + "
    \n", + "\n", + "[back to the top](#notebook-contents)\n", + "\n", + "
    \n", + "\n", "## How to share data products with other RSP users\n", - " \n", "\n", "All data products uploaded to the PZ Server are imediately available and visible to all PZ Server users (people with RSP credentials) through the PZ Server website or via the API. Besides informing the product **id** or **internal_name** for programatic access, another way to share a data product is providing the product's URL, which leads to the product's download page. The URL is composed by the PZ Server website address + **/products/** + **internal_name**:\n", "\n", @@ -409,15 +1086,21 @@ ] }, { + "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ - "\n", - "## How to retrieve contents of data products (work on memory)\n", - " " + "
    \n", + "\n", + "[back to the top](#notebook-contents)\n", + "\n", + "
    \n", + "\n", + "## How to retrieve contents of data products (work on memory)" ] }, { + "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ @@ -428,9 +1111,28 @@ }, { "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], + "execution_count": 13, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Connecting to PZ Server...\n", + "Done!\n" + ] + }, + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 13, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "catalog = pz_server.get_product(8)\n", "catalog" @@ -438,14 +1140,84 @@ }, { "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], + "execution_count": 14, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
    keyvalue
    id8
    releaseNone
    product_typeTraining Set
    uploaded_bygschwend
    internal_name8_goldenspike_train_data_fits
    product_nameGoldenspike train data fits
    official_productFalse
    pz_code
    descriptionA mock training set created using the example notebook goldenspike.ipynb available in RAIL's repository. \r\n", + "Test upload of files in fits format.
    created_at2023-03-29T19:09:12.958883Z
    main_filegoldenspike_train_data.fits
    \n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], "source": [ "catalog.display_metadata()" ] }, { + "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ @@ -454,23 +1226,225 @@ }, { "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], + "execution_count": 15, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
    \n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
    redshiftmag_u_lsstmag_err_u_lsstmag_g_lsstmag_err_g_lsstmag_r_lsstmag_err_r_lsstmag_i_lsstmag_err_i_lsstmag_z_lsstmag_err_z_lsstmag_y_lsstmag_err_y_lsst
    00.76952126.4968520.28898625.8631700.05699724.7295550.02070223.6106830.01201123.1435180.01371422.9151560.024561
    11.08885726.2587270.23796425.5095240.04166824.4693440.01664823.5328600.01134422.5466800.00899222.0702550.012282
    21.33309825.3738550.11225724.9432930.02535924.5249980.01743124.0136490.01648623.7332740.02231523.1021230.028906
    ..........................................
    590.98637426.0506530.20016425.6416240.04683725.1610780.03009024.4601520.02404723.9772390.02756723.8319740.055121
    600.47428127.0480560.44468326.4282110.09385424.8399840.02275524.2092260.01940323.8550820.02478723.5074560.041329
    610.56192324.6804800.06118223.9586090.01143022.9001350.00634622.1435810.00582021.8675630.00646521.6126920.008967
    \n", + "

    62 rows × 13 columns

    \n", + "
    " + ], + "text/plain": [ + " redshift mag_u_lsst mag_err_u_lsst mag_g_lsst mag_err_g_lsst \n", + "0 0.769521 26.496852 0.288986 25.863170 0.056997 \\\n", + "1 1.088857 26.258727 0.237964 25.509524 0.041668 \n", + "2 1.333098 25.373855 0.112257 24.943293 0.025359 \n", + ".. ... ... ... ... ... \n", + "59 0.986374 26.050653 0.200164 25.641624 0.046837 \n", + "60 0.474281 27.048056 0.444683 26.428211 0.093854 \n", + "61 0.561923 24.680480 0.061182 23.958609 0.011430 \n", + "\n", + " mag_r_lsst mag_err_r_lsst mag_i_lsst mag_err_i_lsst mag_z_lsst \n", + "0 24.729555 0.020702 23.610683 0.012011 23.143518 \\\n", + "1 24.469344 0.016648 23.532860 0.011344 22.546680 \n", + "2 24.524998 0.017431 24.013649 0.016486 23.733274 \n", + ".. ... ... ... ... ... \n", + "59 25.161078 0.030090 24.460152 0.024047 23.977239 \n", + "60 24.839984 0.022755 24.209226 0.019403 23.855082 \n", + "61 22.900135 0.006346 22.143581 0.005820 21.867563 \n", + "\n", + " mag_err_z_lsst mag_y_lsst mag_err_y_lsst \n", + "0 0.013714 22.915156 0.024561 \n", + "1 0.008992 22.070255 0.012282 \n", + "2 0.022315 23.102123 0.028906 \n", + ".. ... ... ... \n", + "59 0.027567 23.831974 0.055121 \n", + "60 0.024787 23.507456 0.041329 \n", + "61 0.006465 21.612692 0.008967 \n", + "\n", + "[62 rows x 13 columns]" + ] + }, + "execution_count": 15, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "catalog.data" ] }, { "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], + "execution_count": 16, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "pandas.core.frame.DataFrame" + ] + }, + "execution_count": 16, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "type(catalog.data)" ] }, { + "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ @@ -479,23 +1453,241 @@ }, { "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], + "execution_count": 17, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "RangeIndex: 62 entries, 0 to 61\n", + "Data columns (total 13 columns):\n", + " # Column Non-Null Count Dtype\n", + "--- ------ -------------- -----\n", + " 0 redshift 62 non-null >f8 \n", + " 1 mag_u_lsst 61 non-null >f8 \n", + " 2 mag_err_u_lsst 61 non-null >f8 \n", + " 3 mag_g_lsst 62 non-null >f8 \n", + " 4 mag_err_g_lsst 62 non-null >f8 \n", + " 5 mag_r_lsst 62 non-null >f8 \n", + " 6 mag_err_r_lsst 62 non-null >f8 \n", + " 7 mag_i_lsst 62 non-null >f8 \n", + " 8 mag_err_i_lsst 62 non-null >f8 \n", + " 9 mag_z_lsst 62 non-null >f8 \n", + " 10 mag_err_z_lsst 62 non-null >f8 \n", + " 11 mag_y_lsst 61 non-null >f8 \n", + " 12 mag_err_y_lsst 61 non-null >f8 \n", + "dtypes: float64(13)\n", + "memory usage: 6.4 KB\n" + ] + } + ], "source": [ "catalog.data.info()" ] }, { "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], + "execution_count": 18, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
    \n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
    redshiftmag_u_lsstmag_err_u_lsstmag_g_lsstmag_err_g_lsstmag_r_lsstmag_err_r_lsstmag_i_lsstmag_err_i_lsstmag_z_lsstmag_err_z_lsstmag_y_lsstmag_err_y_lsst
    count62.00000061.00000061.00000062.00000062.00000062.00000062.00000062.00000062.00000062.00000062.00000061.00000061.000000
    mean0.78029825.4460080.18805024.8200000.03818224.0039700.01877023.3848040.01616523.0744810.02147822.9323540.054682
    std0.3553651.2692770.1937471.3141120.0363981.3873580.0137501.3815870.0100691.4006730.0149611.5402840.115875
    ..........................................
    50%0.76460025.5770290.13381525.0699700.02830924.4702150.01666023.7485060.01339023.5141850.01854023.2933840.034199
    75%0.94849426.2632840.23885925.7054860.04957624.9852250.02580224.4886540.02465024.1659440.03255723.9930100.063585
    max1.75576428.4823911.15407327.2961520.19819526.0369580.06536024.9496450.03693224.6931320.05188327.3421510.909230
    \n", + "

    8 rows × 13 columns

    \n", + "
    " + ], + "text/plain": [ + " redshift mag_u_lsst mag_err_u_lsst mag_g_lsst mag_err_g_lsst \n", + "count 62.000000 61.000000 61.000000 62.000000 62.000000 \\\n", + "mean 0.780298 25.446008 0.188050 24.820000 0.038182 \n", + "std 0.355365 1.269277 0.193747 1.314112 0.036398 \n", + "... ... ... ... ... ... \n", + "50% 0.764600 25.577029 0.133815 25.069970 0.028309 \n", + "75% 0.948494 26.263284 0.238859 25.705486 0.049576 \n", + "max 1.755764 28.482391 1.154073 27.296152 0.198195 \n", + "\n", + " mag_r_lsst mag_err_r_lsst mag_i_lsst mag_err_i_lsst mag_z_lsst \n", + "count 62.000000 62.000000 62.000000 62.000000 62.000000 \\\n", + "mean 24.003970 0.018770 23.384804 0.016165 23.074481 \n", + "std 1.387358 0.013750 1.381587 0.010069 1.400673 \n", + "... ... ... ... ... ... \n", + "50% 24.470215 0.016660 23.748506 0.013390 23.514185 \n", + "75% 24.985225 0.025802 24.488654 0.024650 24.165944 \n", + "max 26.036958 0.065360 24.949645 0.036932 24.693132 \n", + "\n", + " mag_err_z_lsst mag_y_lsst mag_err_y_lsst \n", + "count 62.000000 61.000000 61.000000 \n", + "mean 0.021478 22.932354 0.054682 \n", + "std 0.014961 1.540284 0.115875 \n", + "... ... ... ... \n", + "50% 0.018540 23.293384 0.034199 \n", + "75% 0.032557 23.993010 0.063585 \n", + "max 0.051883 27.342151 0.909230 \n", + "\n", + "[8 rows x 13 columns]" + ] + }, + "execution_count": 18, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "catalog.data.describe()" ] }, { + "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ @@ -504,9 +1696,207 @@ }, { "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], + "execution_count": 19, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Connecting to PZ Server...\n", + "\n" + ] + }, + { + "data": { + "text/html": [ + "
    \n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
    redshiftmag_u_lsstmag_err_u_lsstmag_g_lsstmag_err_g_lsstmag_r_lsstmag_err_r_lsstmag_i_lsstmag_err_i_lsstmag_z_lsstmag_err_z_lsstmag_y_lsstmag_err_y_lsst
    00.76952126.4968520.28898625.8631700.05699724.7295550.02070223.6106830.01201123.1435180.01371422.9151560.024561
    11.08885726.2587270.23796425.5095240.04166824.4693440.01664823.5328600.01134422.5466800.00899222.0702550.012282
    21.33309825.3738550.11225724.9432930.02535924.5249980.01743124.0136490.01648623.7332740.02231523.1021230.028906
    ..........................................
    590.98637426.0506530.20016425.6416240.04683725.1610780.03009024.4601520.02404723.9772390.02756723.8319740.055121
    600.47428127.0480560.44468326.4282110.09385424.8399840.02275524.2092260.01940323.8550820.02478723.5074560.041329
    610.56192324.6804800.06118223.9586090.01143022.9001350.00634622.1435810.00582021.8675630.00646521.6126920.008967
    \n", + "

    62 rows × 13 columns

    \n", + "
    " + ], + "text/plain": [ + " redshift mag_u_lsst mag_err_u_lsst mag_g_lsst mag_err_g_lsst \n", + "0 0.769521 26.496852 0.288986 25.863170 0.056997 \\\n", + "1 1.088857 26.258727 0.237964 25.509524 0.041668 \n", + "2 1.333098 25.373855 0.112257 24.943293 0.025359 \n", + ".. ... ... ... ... ... \n", + "59 0.986374 26.050653 0.200164 25.641624 0.046837 \n", + "60 0.474281 27.048056 0.444683 26.428211 0.093854 \n", + "61 0.561923 24.680480 0.061182 23.958609 0.011430 \n", + "\n", + " mag_r_lsst mag_err_r_lsst mag_i_lsst mag_err_i_lsst mag_z_lsst \n", + "0 24.729555 0.020702 23.610683 0.012011 23.143518 \\\n", + "1 24.469344 0.016648 23.532860 0.011344 22.546680 \n", + "2 24.524998 0.017431 24.013649 0.016486 23.733274 \n", + ".. ... ... ... ... ... \n", + "59 25.161078 0.030090 24.460152 0.024047 23.977239 \n", + "60 24.839984 0.022755 24.209226 0.019403 23.855082 \n", + "61 22.900135 0.006346 22.143581 0.005820 21.867563 \n", + "\n", + " mag_err_z_lsst mag_y_lsst mag_err_y_lsst \n", + "0 0.013714 22.915156 0.024561 \n", + "1 0.008992 22.070255 0.012282 \n", + "2 0.022315 23.102123 0.028906 \n", + ".. ... ... ... \n", + "59 0.027567 23.831974 0.055121 \n", + "60 0.024787 23.507456 0.041329 \n", + "61 0.006465 21.612692 0.008967 \n", + "\n", + "[62 rows x 13 columns]" + ] + }, + "execution_count": 19, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "dataframe = pz_server.get_product(8, fmt=\"pandas\")\n", "print(type(dataframe))\n", @@ -515,9 +1905,46 @@ }, { "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], + "execution_count": 20, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Connecting to PZ Server...\n", + "\n" + ] + }, + { + "data": { + "text/html": [ + "
    Table length=62\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "
    redshiftmag_u_lsstmag_err_u_lsstmag_g_lsstmag_err_g_lsstmag_r_lsstmag_err_r_lsstmag_i_lsstmag_err_i_lsstmag_z_lsstmag_err_z_lsstmag_y_lsstmag_err_y_lsst
    float64float64float64float64float64float64float64float64float64float64float64float64float64
    0.769521057605743426.496851733359980.2889864016451496625.8631701801485930.056996849251325224.729555232665350.02070246989947576223.6106832612475230.01201139145700786723.143517979331420.01371427288818984422.9151560685081040.02456124411372624
    .......................................
    0.474280714988708527.0480560874079860.444682506357735426.4282112805191750.0938543394596348124.839983603182140.0227549353128951224.20922601749360.0194026127508123923.8550822431599340.0247873017109994123.5074559295742880.041328512368478044
    0.561922669410705624.6804795305431630.06118153192966563323.9586089979737020.0114295663681752622.9001349679331020.00634586977358199822.1435806332706240.00581963097081042821.8675628493294060.00646548086334226921.612691594536260.008966510628950788
    " + ], + "text/plain": [ + "\n", + " redshift mag_u_lsst mag_err_u_lsst ... mag_err_z_lsst mag_y_lsst mag_err_y_lsst \n", + " float64 float64 float64 ... float64 float64 float64 \n", + "------------------ ------------------ -------------------- ... -------------------- ------------------ --------------------\n", + "0.7695210576057434 26.49685173335998 0.28898640164514966 ... 0.013714272888189844 22.915156068508104 0.02456124411372624\n", + " ... ... ... ... ... ... ...\n", + "0.4742807149887085 27.048056087407986 0.4446825063577354 ... 0.02478730171099941 23.507455929574288 0.041328512368478044\n", + "0.5619226694107056 24.680479530543163 0.061181531929665633 ... 0.006465480863342269 21.61269159453626 0.008966510628950788" + ] + }, + "execution_count": 20, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "table = pz_server.get_product(8, fmt=\"astropy\")\n", "print(type(table))\n", @@ -525,6 +1952,7 @@ ] }, { + "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ @@ -534,7 +1962,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 21, "metadata": {}, "outputs": [], "source": [ @@ -542,6 +1970,7 @@ ] }, { + "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ @@ -549,16 +1978,21 @@ ] }, { + "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ - " \n", - "\n", + "
    \n", + "\n", + "[back to the top](#notebook-contents)\n", + "\n", + "
    \n", "\n", - "# Product types \n" + "# Product types " ] }, { + "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ @@ -567,25 +2001,71 @@ }, { "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], + "execution_count": 22, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "\n", + "
    \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
    Product typeDescription
    Spec-z CatalogCatalog of spectroscopic redshifts and positions (usually equatorial coordinates).
    Training SetTraining set for photo-z algorithms (tabular data). It usually contains magnitudes, errors, and true redshifts.
    Validation ResultsResults of a photo-z validation procedure (free format). Usually contains photo-z estimates (single estimates and/or pdf) of a validation set and photo-z validation metrics.
    Photo-z TableResults of a photo-z estimation procedure. If the data is larger than the file upload limit (200MB), the product entry stores only the metadata (instructions on accessing the data should be provided in the description field.
    \n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], "source": [ "pz_server.display_product_types()" ] }, { + "attachments": {}, "cell_type": "markdown", "metadata": { "tags": [] }, "source": [ - "\n", - "## Spec-z Catalog \n", - " " + "
    \n", + "\n", + "[back to the top](#notebook-contents)\n", + "\n", + "
    \n", + "\n", + "## Spec-z Catalog " ] }, { + "attachments": {}, "cell_type": "markdown", "metadata": { "tags": [] @@ -606,6 +2086,7 @@ ] }, { + "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ @@ -614,23 +2095,101 @@ }, { "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], + "execution_count": 23, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Connecting to PZ Server...\n", + "Done!\n" + ] + } + ], "source": [ "gama = pz_server.get_product(14)" ] }, { "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], + "execution_count": 24, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
    keyvalue
    id14
    releaseNone
    product_typeSpec-z Catalog
    uploaded_bygschwend
    internal_name14_gama_specz_subsample
    product_nameGAMA spec-z subsample
    official_productFalse
    pz_code
    descriptionA small subsample of the GAMA DR3 spec-z catalog (Baldry et al. 2018) as an example of a typical spec-z catalog from the literature.
    created_at2023-03-29T20:02:45.223568Z
    main_filespecz_subsample_gama_example.csv
    \n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], "source": [ "gama.display_metadata()" ] }, { + "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ @@ -639,14 +2198,140 @@ }, { "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], + "execution_count": 25, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
    \n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
    IDRADECZERR_ZFLAG_DES
    count2.576000e+032576.0000002576.0000002576.0000002576.02576.000000
    mean1.105526e+06154.526343-1.1018650.22481199.03.949534
    std4.006668e+0470.7838682.9950360.1025710.00.218947
    .....................
    50%1.103558e+06180.140145-0.4808300.21780499.04.000000
    75%1.140619e+06215.8365831.1703630.29181099.04.000000
    max1.176440e+06223.4970802.9981800.72871799.04.000000
    \n", + "

    8 rows × 6 columns

    \n", + "
    " + ], + "text/plain": [ + " ID RA DEC Z ERR_Z \n", + "count 2.576000e+03 2576.000000 2576.000000 2576.000000 2576.0 \\\n", + "mean 1.105526e+06 154.526343 -1.101865 0.224811 99.0 \n", + "std 4.006668e+04 70.783868 2.995036 0.102571 0.0 \n", + "... ... ... ... ... ... \n", + "50% 1.103558e+06 180.140145 -0.480830 0.217804 99.0 \n", + "75% 1.140619e+06 215.836583 1.170363 0.291810 99.0 \n", + "max 1.176440e+06 223.497080 2.998180 0.728717 99.0 \n", + "\n", + " FLAG_DES \n", + "count 2576.000000 \n", + "mean 3.949534 \n", + "std 0.218947 \n", + "... ... \n", + "50% 4.000000 \n", + "75% 4.000000 \n", + "max 4.000000 \n", + "\n", + "[8 rows x 6 columns]" + ] + }, + "execution_count": 25, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "gama.data.describe()" ] }, { + "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ @@ -655,14 +2340,26 @@ }, { "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], + "execution_count": 26, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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5ebmStu2bZPuu+8+qXPnzlJlZaW+jtZyraZNmyZ5eHhIu3btkgoKCvSPiooKfZmmfvdqa2ulyMhIaciQIVJmZqa0efNmydfXV5o9e7Yl3hKZ0dq1ayW1Wi2tXLlSys7OlqZOnSp5enrqVwAbP368NGvWLH353377TXJwcJAWLVoknThxQpo3b57k6OgoHT9+3FJvweJMvYYLFy6UnJycpH//+98Gv5OlpaWWegsWZer1uxNXhTL9Gubn50tubm5ScnKydOrUKWnDhg2Sn5+f9Pbbb1vqLVgdJhY24IknnpACAwMlJycn6Z577pGeeOIJ6ezZs/rzN27ckJ577jnJy8tLcnV1lR599FGpoKDAghGLtXPnTglAvceECRMkSbq55Ozrr78u+fv7S2q1WnrooYekU6dOGdRx7do1acyYMVLbtm0ld3d3adKkSXb5YXW3a1VRUSENGTJE8vX1lRwdHaWQkBBpypQpBkulSlLruVYNXScA0ooVK/RljPndy8vLk4YOHSq5uLhIPj4+0vTp06WamhrB74bk8Mknn0gdOnSQnJycpJiYGGn//v36c3/605/0f4Nu+fbbb6UuXbpITk5OUvfu3aWNGzcKjtj6mHINQ0JCGvydnDdvnvjArYSpP4O3Y2Jxk6nXcN++fVJsbKykVqul8PBwacGCBVJtba3gqK2XQpIkSWAHCRERERER2SHOsSAiIiIiohZjYkFERERERC3GxIKIiIiIiFqMiQUREREREbUYEwsiIiIiImoxJhZERERERNRiTCyIiIiIiKjFmFgQEREREVGLMbEgsqBr167Bz88PeXl5jZbZtWsXFAoFioqKzNZudXU1QkNDcejQIbPVSURERK0bEwuiu5g4cSIUCgUUCgUcHR0RFhaGV155BZWVlfXKXrx4EU5OToiMjDS6/gULFuCRRx5BaGioGaNumpOTE15++WXMnDlTaLtERGScW18qNfZ48MEHLR0iUT1MLIiakJiYiIKCApw7dw4ffvghli1bhnnz5tUrt3LlSjz++OMoKSnBgQMHmqy3oqICy5cvx+TJk+UIu0ljx47F3r178fvvv1ukfSIiatz999+PgoKCeo9ly5ZBoVDgueees3SIRPUwsSBqglqtRkBAAIKDgzFy5EjEx8dj69atBmUkScKKFSswfvx4PPXUU1i+fHmT9W7atAlqtRr9+vWrd7xLly5wcXHBgw8+2OAwqb1792LAgAFwcXFBcHAwXnjhBZSXl+vPFxQUYPjw4XBxcUFYWBjWrFmD0NBQfPTRR/oyXl5e6N+/P9auXWvaBSEiItk5OTkhICDA4HH9+nW8/PLLmDNnDh577DFLh0hUDxMLIhNkZWVh3759cHJyMji+c+dOVFRUID4+HuPGjcPatWsNbvQbsmfPHvTu3dvg2IULFzBq1CiMGDECmZmZeOaZZzBr1iyDMjk5OUhMTMTo0aNx7NgxfPPNN9i7dy+Sk5P1ZZ5++mlcvnwZu3btwnfffYfPPvsMhYWF9WKIiYnBnj17TL0MREQkWFFRER555BEMGjQIb731lqXDIWqQg6UDILJ2GzZsQNu2bVFbW4uqqioolUr885//NCizfPlyPPnkk1CpVIiMjER4eDjWrVuHiRMnNlrv+fPnERQUZHBsyZIl6NixIz744AMAQNeuXXH8+HG8++67+jKpqakYO3YsXnzxRQBA586d8fHHH+NPf/oTlixZgry8PGzbtg0HDx5Enz59AAD/+te/0Llz53oxBAUF4fz58825LEREJIhOp8NTTz0FBwcHrF69GgqFwtIhETWIiQVREx588EEsWbIE5eXl+PDDD+Hg4IDRo0frzxcVFeH777/H3r179cfGjRuH5cuX3zWxuHHjBpydnQ2OnThxArGxsQbH4uLiDJ4fPXoUx44dw+rVq/XHJEmCTqdDbm4uTp8+DQcHB9x333368506dYKXl1e9GFxcXFBRUXH3C0BERBY1Z84cpKWlIT09HW5ubpYOh6hRTCyImtCmTRt06tQJAPDFF1+gZ8+eBpOu16xZg8rKSoOE4NaN/unTp9GlS5cG6/Xx8cH169dNjqesrAx/+9vf8MILL9Q716FDB5w+fdrourRaLXx9fU2OgYiIxFi7di0WLVqEjRs3NtjzTGRNOMeCyARKpRJz5szBa6+9hhs3bgC4OQxq+vTpyMzM1D+OHj2KAQMG4Isvvmi0rujoaGRnZxscu/fee5Genm5wbP/+/QbP77vvPmRnZ6NTp071Hk5OTujatStqa2tx5MgR/WvOnj3bYBKTlZWF6Ohok68DERHJLzMzE5MnT8bChQuRkJBg6XCImsTEgshEjz32GFQqFRYvXozMzEwcPnwYzzzzDCIjIw0eY8aMwapVq1BbW9tgPQkJCfj9998NbvifffZZnDlzBjNmzMCpU6ewZs0arFy50uB1M2fOxL59+5CcnIzMzEycOXMGP/74o37ydrdu3RAfH4+pU6ciPT0dR44cwdSpU+Hi4lJvXO6ePXswZMgQ814gIiJqsatXr2LkyJEYNGgQxo0bB41GY/D4448/LB0iUT1MLIhM5ODggOTkZLz33ntYvHgxIiIi0K1bt3rlHn30URQWFmLTpk0N1hMVFYX77rsP3377rf5Yhw4d8N133+GHH35Az549sXTpUrzzzjsGr+vRowd2796N06dPY8CAAYiOjsbcuXMNJoJ/+eWX8Pf3x8CBA/Hoo49iypQpcHNzM5jTkZaWhuLiYvzP//xPSy8JERGZ2caNG3H+/Hls2rQJgYGB9R59+/a1dIhE9SgkSZIsHQRRa7Vx40bMmDEDWVlZUCrly/MvXryI4OBgbNu2DQ899BAA4IknnkDPnj0xZ84c2dolIiKi1oOTt4ksaPjw4Thz5gwuXbqE4OBgs9W7Y8cOlJWVISoqCgUFBXjllVcQGhqKgQMHAgCqq6sRFRWFl156yWxtEhERUevGHgsiO/TLL79g+vTpOHfuHNzc3HD//ffjo48+QkhIiKVDIyIiIjvFxIKIiIiIiFqMk7eJiIiIiKjFmFgQEREREVGLMbEgIiIiIqIWY2JBREREREQtxsSCiIiIiIhajIkFERERERG1GBMLIiIiIiJqMSYWRERERETUYkwsiIiIiIioxf4/O2YF53D9HiQAAAAASUVORK5CYII=", + "text/plain": [ + "
    " + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], "source": [ "gama.plot()" ] }, { + "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ @@ -671,20 +2368,46 @@ }, { "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], + "execution_count": 27, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 27, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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1Dbh39Y61DmbkRIfjTxLcpe9OBW1TZe8n0JToNdvJj4XYeJDRKROTFLIl0Cv39261VVfX4/CwkI4HI5LXrPb7V2+RkRE1FMDU+Jwy5BUJj3UI91KfP7whz9g69atnWZSJpMJX3/9NQoLC4MWHBEREVEwdSvx+dvf/obZs2d3+fqjjz6Kv/71rz0OioiIiEgO3Up8jh49iqysrC5fz8rKwtGjR3scFBEREZEcupX4hIeHo6qqqsvXq6qqEBbGGfJERESkTt3KUnJzc/Hhhx92+fqGDRuQm8saCERERKRO3VqkdN68efjJT36C/v37Y86cOQgP/2E9k/b2dvzxj3/Ea6+9hj/96U+yBEpERETUU92u4/P0009j+fLlSEhIgMViAQBYrVY4nU48+eSTeOmll2QJVCms40NERBR6ZC1guGvXLrz77rsoLy+HJEm48sor8cADD2DkyJE9CloNmPgQERGFnkCv39261eU2cuRITSQ5REREpC/dGtz88ssv49y5c57vt23bhubmZs/3jY2NeOyxx4IXncZZbU5sOVKDitomz/dFu46j8IsyvLfruOf5C197b9dxbP3e5vU+IiIiCky3bnWFh4fj9OnTSE1NBQAYjUaUlJR4xvqcOXMGaWlpaG9vlydaBch5q8tqc2JnxVmca2nDv0qrsbuy3vOaKSYC9nNtl7wnJ82IXlHhXtteyL1Qnyk2MqixEhERhRJZbnVdnCNxfdPANLhaMGP1LhSfsHe5TWdJDwAcrPK99tm28lrMLyrGupm89UhEROQPqw3KrMHVgptXfOkz6emJdknC1jIbb3sREREFgImPzB5Zuwf2c62yt3OoSp7EioiISEu6PavrnXfeQXx8PACgra0Na9asQUpKCoAfBjfTf1ltTuw51vnYnGBbu70Sd1ybpkhbREREoapbic+AAQPw9ttve77v27cv/u///u+SbegHx866FGtrd2U9KmqbMDAlTrE2iYiIQk23Ep/KykqZwgiu5uZm5OXlYf/+/SguLsZ1110nJI6M3rGKtldZx8SHiIjIl26P8eno6MCqVatwxx13IDs7Gzk5Obj77ruxbt061czy+uUvf4m0NPG3fSzmeGRfoVz158xkJj1ERES+dCvxkSQJd955Jx555BGcOnUKOTk5uOaaa1BZWYnp06fjnnvukSvOgP3rX//CZ599hldeeUV0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", + "text/plain": [ + "
    " + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], "source": [ "gama.data.plot(x=\"RA\", y=\"DEC\", kind=\"scatter\") " ] }, { + "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ - "\n", + "
    \n", + "\n", + "[back to the top](#notebook-contents)\n", + "\n", + "
    \n", + "\n", "## Training Sets \n", - " \n", " \n", "In the context of the PZ Server, Training Sets are defined as the product of matching (spatially) a given Spec-z Catalog (single survey or compilation) to the photometric data, in this case, the LSST Objects Catalog. The PZ Server API offers a tool called _Training Set Maker_ for users to build customized Training Sets based on the Spec-z Catalogs available. Please see the companion Jupyter Notebook `pz_tsm_tutorial.ipynb` for details. \n", "\n", @@ -711,27 +2434,106 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 28, "metadata": { "tags": [] }, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Connecting to PZ Server...\n", + "Done!\n" + ] + } + ], "source": [ "train_goldenspike = pz_server.get_product(9)" ] }, { "cell_type": "code", - "execution_count": null, + "execution_count": 29, "metadata": { "tags": [] }, - "outputs": [], + "outputs": [ + { + "data": { + "text/html": [ + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
    keyvalue
    id9
    releaseNone
    product_typeTraining Set
    uploaded_bygschwend
    internal_name9_goldenspike_train_data_hdf5
    product_nameGoldenspike train data hdf5
    official_productFalse
    pz_code
    descriptionA mock training set created using the example notebook goldenspike.ipynb available in RAIL's repository. \r\n", + "Test upload of files in hdf5 format.
    created_at2023-03-29T19:12:59.746096Z
    main_filegoldenspike_train_data.hdf5
    \n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], "source": [ "train_goldenspike.display_metadata()" ] }, { + "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ @@ -740,14 +2542,205 @@ }, { "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], + "execution_count": 30, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
    \n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
    mag_err_g_lsstmag_err_i_lsstmag_err_r_lsstmag_err_u_lsstmag_err_y_lsstmag_err_z_lsstmag_g_lsstmag_i_lsstmag_r_lsstmag_u_lsstmag_y_lsstmag_z_lsstredshift
    count62.00000062.00000062.00000061.00000061.00000062.00000062.00000062.00000062.00000061.00000061.00000062.00000062.000000
    mean0.0381820.0161650.0187700.1880500.0546820.02147824.82000023.38480424.00397025.44600822.93235423.0744810.780298
    std0.0363980.0100690.0137500.1937470.1158750.0149611.3141121.3815871.3873581.2692771.5402841.4006730.355365
    ..........................................
    50%0.0283090.0133900.0166600.1338150.0341990.01854025.06997023.74850624.47021525.57702923.29338423.5141850.764600
    75%0.0495760.0246500.0258020.2388590.0635850.03255725.70548624.48865424.98522526.26328423.99301024.1659440.948494
    max0.1981950.0369320.0653601.1540730.9092300.05188327.29615224.94964526.03695828.48239127.34215124.6931321.755764
    \n", + "

    8 rows × 13 columns

    \n", + "
    " + ], + "text/plain": [ + " mag_err_g_lsst mag_err_i_lsst mag_err_r_lsst mag_err_u_lsst \n", + "count 62.000000 62.000000 62.000000 61.000000 \\\n", + "mean 0.038182 0.016165 0.018770 0.188050 \n", + "std 0.036398 0.010069 0.013750 0.193747 \n", + "... ... ... ... ... \n", + "50% 0.028309 0.013390 0.016660 0.133815 \n", + "75% 0.049576 0.024650 0.025802 0.238859 \n", + "max 0.198195 0.036932 0.065360 1.154073 \n", + "\n", + " mag_err_y_lsst mag_err_z_lsst mag_g_lsst mag_i_lsst mag_r_lsst \n", + "count 61.000000 62.000000 62.000000 62.000000 62.000000 \\\n", + "mean 0.054682 0.021478 24.820000 23.384804 24.003970 \n", + "std 0.115875 0.014961 1.314112 1.381587 1.387358 \n", + "... ... ... ... ... ... \n", + "50% 0.034199 0.018540 25.069970 23.748506 24.470215 \n", + "75% 0.063585 0.032557 25.705486 24.488654 24.985225 \n", + "max 0.909230 0.051883 27.296152 24.949645 26.036958 \n", + "\n", + " mag_u_lsst mag_y_lsst mag_z_lsst redshift \n", + "count 61.000000 61.000000 62.000000 62.000000 \n", + "mean 25.446008 22.932354 23.074481 0.780298 \n", + "std 1.269277 1.540284 1.400673 0.355365 \n", + "... ... ... ... ... \n", + "50% 25.577029 23.293384 23.514185 0.764600 \n", + "75% 26.263284 23.993010 24.165944 0.948494 \n", + "max 28.482391 27.342151 24.693132 1.755764 \n", + "\n", + "[8 rows x 13 columns]" + ] + }, + "execution_count": 30, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "train_goldenspike.data.describe()" ] }, { + "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ @@ -756,20 +2749,36 @@ }, { "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], + "execution_count": 31, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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sfr4448VFhamdevWafny5ZKkH3/8US1btqz3cdatW+f0eMmSJYqMjNSOHTuUkpKiXr16OU0H7Ny5sx577DH99re/1enTp3XBBfwq5EnRoVafLuQ8n3tAc97dI0PcQRBwJabvAQAAAPCYjIwMjR8/Xh07dlRMTIxSU1MlnZnWl5SU1OjjVk3LqxqFVVubtm3bUpBCgzy/+YCy/luQkv53B8EiW7mpuQB/0KhP40OHDslisahjx46SpE8//VRLly5Vjx49dOutt7o0IADA99FvAACq3Hnnnbrssst06NAhDR06VAEBZ/5O3qlTpwatKXU2u92ujIwMDR48WL169aqxTXFxsR555JHz9jsVFRWqqKhwPC4pKWlUHviPIlu55rxb/c6QVXcQbOzoL6YCAmc0aqTUuHHjtGnTJknSkSNHNHToUH366ae677779PDDD7s0IADA99FvAADO1r9/f11//fVq06aNKisrlZeXp0GDBmnw4MGNOl56erry8/MdUwHPVVJSohEjRqhHjx566KGHaj1OVlaWQkNDHVtsbGyj8sB/FBSXyjCq7w+QGn0HwRXbCjV4zkaNW/SJBs/ZqBXbCpsWEvBhjSpK5efn67LLLpMkvfbaa+rVq5c++ugjvfrqq1qyZIkr8wEA/AD9BgCgSkZGhl588UVJUmVlpa644gpdeumlio2NVU5OToOPN2XKFK1du1abNm1yjMg92/HjxzVs2DCFhIQoOztbLVq0qPVYmZmZstlsju3QoUMNzgP/khjeWgGW6vvvHd69USOcimzlyly5W/b/FrqYCojmrlFFqVOnTik4OFiStGHDBv3qV7+SJHXv3l1FRUWuSwcA8Av0GwCAKm+88Yb69OkjSXrrrbdUUFCgPXv26K677tJ9991X7+MYhqEpU6YoOztbGzduVGJiYrU2JSUlSktLU1BQkNasWVPnQurBwcFq27at04bmLTrUqqzRSQq0nKlMBVikzGu767YrOjfqeAXFpY6CVJWqqYBnK7KV66MDxRSr4PcataZUz5499dxzz2nEiBFav369HnnkEUnS4cOH1b59e5cGBAD4PvoNAECV4uJiRUVFSZLeeecd3Xjjjeratat+//vf6+mnn673cdLT07V06VKtXr1aISEhOnLkiCQpNDRUVqvVUZAqKyvTK6+8opKSEscaUREREQoMDHT9yXkZ1i1y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VHXr1k1Wq1VxcXGaNm2abDabianPqM97ftttt6lz586yWq2KiIjQddddpz179piU+H/qk72KYRgaPnx4jf+WPa0+uVNTU2WxWJy222+/3aTEvmPBggVKSEhQy5YtNWDAAH366ae1tl20aJEuv/xyXXjhhbrwwgs1ZMiQau1vvvnmatdh2LBhXnMOS5YsqZavZcuWTm0Mw9ADDzyg6OhoWa1WDRkyxO19VUPOoaafdYvFohEjRjjaePI61NX31yQnJ0eXXnqpgoOD1aVLFy1ZsqRam4a8J03V0HNYuXKlhg4dqoiICLVt21YDBw7Ue++959TmoYceqnYNunfv7jXnkJOTU+PP0ZEjR5zaefN1qOnn3GKxqGfPno42nr4OzQH9Bv1GU9Fv0G+YdQ5m9hs+VZQqLS1Vnz59tGDBghqfnz59utatW6dXXnlFX3zxhTIyMjRlyhStWbPGw0mrO192wzA0atQoffXVV1q9erV27dql+Ph4DRkyRKWlpSak/Z/c3Fylp6dr69atWr9+vU6dOqW0tDSnXHfddZfeeustvf7668rNzdXhw4c1evRoE1OfUZ/sZWVlGjZsmGbOnGliUmd15T58+LAOHz6sJ554Qvn5+VqyZInWrVunW265xeTk9XvP+/Xrp8WLF+uLL77Qe++9J8MwlJaWpsrKShOT1y97lXnz5slisZiQsrr65p48ebKKiooc2+OPP25SYt+wYsUKTZ8+XQ8++KB27typPn366JprrtF3331XY/ucnBzddNNN2rRpkz7++GPFxsYqLS1N3377rVO7YcOGOV2HZcuWec05SFLbtm2d8n399ddOzz/++OP629/+pueee06ffPKJWrdurWuuuUY//fSTV5zDypUrnfLn5+crMDBQN954o1M7T12Huv7fcq6CggKNGDFCV155pfLy8pSRkaE//OEPTv85b8x19eQ5bN68WUOHDtU777yjHTt26Morr9TIkSO1a9cup3Y9e/Z0ugYffvihO+JLavg5VNm7d69TxsjISMdz3n4dnn76aafshw4dUlhYWLV/C568Dv6OfoN+wxXoN+g3XMWn+g3DR0kysrOznfb17NnTePjhh532XXrppcZ9993nwWR1Ozf73r17DUlGfn6+Y19lZaURERFhLFq0yISEtfvuu+8MSUZubq5hGIZx7Ngxo0WLFsbrr7/uaPPFF18Y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kyZNUkhIiLp06aJ3331XklRZWalbbrlFiYmJslqt6tatm55++mmnY54+fVrTpk1Tu3bt1L59e917772aOHGiRo0aVe9M9R1yezbDMPTQQw8pLi5OwcHBiomJ0bRp0xzPP/vss7rooovUsmVLdejQQb/+9a8lSTfffLNyc3P19NNPy2KxyGKx6ODBgw3+/gCA/0lNTdWUKVOUkZGh8PBwXXPNNcrPz9fw4cPVpk0bdejQQRMmTFBxcbHjNaWlpfrd736nNm3aKDo6Wn/961+rHbe2z/Iqdrtdf/7znxUWFqaoqCg99NBDTs+fPQ3DYrFox44devjhh2WxWJSamqpJkybJZrM5+oNzXw8AcA/6DaBuFKXgl15++WWFh4fr008/1dSpU3XHHXfoxhtv1KBBg7Rz506lpaVpwoQJKisrk91uV8eOHfX666/r888/1wMPPKCZM2fqtddecxxv7ty5evXVV7V48WJt2bJFJSUlTvOw3eXNN9/UU089peeff1779u3TqlWrlJSUJEnavn27pk2bpocfflh79+7VunXrlJKSIkl6+umnNXDgQE2ePFlFRUUqKipSbGys2/MCgL97+eWXFRQUpC1btmjOnDm66qqr1LdvX23fvl3r1q3T0aNHNWbMGEf7e+65R7m5uVq9erXef/995eTkaOfOnY7nz/dZfvb3bN26tT755BM9/vjjevjhh7V+/foa8xUVFalnz57605/+pKKiIq1Zs0bz5s1T27ZtHf3B3Xff7Z43BwBQDf0GcH5M34Nf6tOnj/7yl79IkjIzMzVnzhyFh4dr8uTJkqQHHnhACxcu1Geffaaf//znmjVrluO1iYmJ+vjjj/Xaa685Ooj58+crMzNT119/vSTpmWee0TvvvOP28ygsLFRUVJSGDBmiFi1aKC4uTpdddpnjudatW+uXv/ylQkJCFB8fr759+0qSQkNDFRQUpFatWlUbngsAaLyLLrpIjz/+uCTp0UcfVd++fTV79mzH8y+99JJiY2P15ZdfKiYmRi+++KJeeeUVXX311ZLO/KLQsWNHR/vzfZZX6d27tx588EHH93/mmWf0wQcfaOjQodXyRUVF6YILLlCbNm0cn/+hoaGyWCz0BwBgAvoN4PwYKQW/1Lt3b8fXgYGBat++vWOEkSR16NBBkvTdd99JkhYsWKB+/fopIiJCbdq00QsvvKDCwkJJks1m09GjRx3FoKpj9uvXz+3nceONN6q8vFydOnXS5MmTlZ2drdOnT0uShg4dqvj4eHXq1EkTJkzQq6++qrKyMrdnAoDm7OzP/n/961/atGmT2rRp49i6d+8u6cz6HAcOHNDJkyc1YMAAx2vCwsLUrVs3x+P6fJaf3adJUnR0tKP/AgB4N/oN4PwoSsEvnXunO4vF4rTPYrFIOjPfevny5br77rt1yy236P3331deXp4mTZqkkydPejRzTWJjY7V37149++yzslqtuvPOO5WSkqJTp04pJCREO3fu1LJlyxQdHa0HHnhAffr04S4ZAOBGrVu3dnx94sQJjRw5Unl5eU7bvn37qk2lqE19Pstr6tPsdrtLzgcA4F70G8D5UZRCs7dlyxYNGjRId955p/r27asuXbrowIEDjudDQ0PVoUMHbdu2zbGvsrLSaW63O1mtVo0cOVJ/+9vflJOTo48//li7d++WJF1wwQUaMmSIHn/8cX322Wc6ePCgNm7cKEkKCgpSZWWlRzICQHN06aWX6t///rcSEhLUpUsXp61169bq3LmzWrRooU8++cTxmh9//FFffvml03HO91nuCvQHAOAd6DeA6lhTCs3eRRddpL///e967733lJiYqH/84x/atm2bEhMTHW2mTp2qrKwsdenSRd27d9f8+fP1448/OkZcucuSJUtUWVmpAQMGqFWrVnrllVdktVoVHx+vtWvX6quvvlJKSoouvPBCvfPOO7Lb7Y7hvQkJCfrkk0908OBBtWnTRmFhYQoIoA4NAK6Snp6uRYsW6aabbnLc5Wj//v1avny5/t//+39q06aNbrnlFt1zzz1q3769IiMjdd999zl9Ftf1We4KCQkJOnHihD744AP16dNHrVq1UqtWrVx2fABA/dBvANXxGyqavdtuu02jR4/W2LFjNWDAAH3//fe68847ndrce++9uummm/S73/1OAwcOVJs2bXTNNdeoZcuWbs3Wrl07LVq0SIMHD1bv3r21YcMGvfXWW2rfvr3atWunlStX6qqrrtLFF1+s5557TsuWLVPPnj0lSXfffbcCAwPVo0cPRUREONbIAgC4RkxMjLZs2aLKykqlpaUpKSlJGRkZateuneMXiP/7v//T5ZdfrpEjR2rIkCH6xS9+4bS+SF2f5a4waNAg3X777Ro7dqwiIiIcC+4CADyLfgOozmIYhmF2CMDX2O12XXzxxRozZoweeeQRs+MAAAAAAOBzmL4H1MPXX3+t999/X1dccYUqKir0zDPPqKCgQOPGjTM7GgAAAAAAPonpe0A9BAQEaMmSJUpOTtbgwYO1e/dubdiwQRdffLEKCwudbut67nb2tLl//vOf520LAAAAAEBzwfQ9oIlOnz6tgwcP1vp8QkKCLrjgzKDE8vJyffvtt7W27dKli6vjAQAAAADglShKAQAAAAAAwOOYvgcAAAAAAACPoygFAAAAAAAAj6MoBQAAAAAAAI+jKAUAAAAAAACPoygFAAAAAAAAj6MoBQAAAAAAAI+jKAUAAAAAAACPoygFAAAAAAAAj/v/OlrI3uXdrPkAAAAASUVORK5CYII=", + "text/plain": [ + "
    " + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], "source": [ "train_goldenspike.plot(mag_name=\"mag_i_lsst\")" ] }, { + "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ - "\n", + "
    \n", + "\n", + "[back to the top](#notebook-contents)\n", + "\n", + "
    \n", + "\n", "## Photo-z Validation Results\n", - " \n", " \n", "Validation Results are the outputs of any photo-z algorithm applied on a Validation Set. The format and number of files of this data product are strongly dependent on the algorithm used to create it, so there are no constraints on these two parameters. In the case of multiple files, for instance, if the user includes the results of training procedures (e.g., neural nets weights, decision trees files, or any machine learning by-product) or additional files (SED templates, filter transmission curves, theoretical magnitudes grid, Bayesian priors, etc.), it will be required to put all files together in a single compressed file (.zip or .tar, or .tar.gz) before uploading it to the Photo-z Server. \n", "\n", @@ -778,14 +2787,83 @@ }, { "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], + "execution_count": 32, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
    idinternal_nameproduct_nameproduct_typereleaseuploaded_byofficial_productpz_codedescriptioncreated_at
    1212_goldenspike_knnGoldenspike KNNValidation ResultsNonegschwendFalseKNNResults of photoz validation using KNN on a mock test set from the example notebook goldenspike.ipynb available in RAIL's repository.2023-03-29T19:49:35.652295Z
    1111_goldenspike_flexzboostGoldenspike FlexZBoostValidation ResultsNonegschwendFalseFlexZBoostResults of photoz validation using FlexZBoost on a mock test set from the example notebook goldenspike.ipynb available in RAIL's repository.2023-03-29T19:48:34.864629Z
    1010_goldenspike_bpzGoldenspike BPZValidation ResultsLSST DP0gschwendFalseBPZResults of photoz validation using BPZ on a mock test set from the example notebook goldenspike.ipynb available in RAIL's repository.2023-03-29T19:42:04.424990Z
    \n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], "source": [ "pz_server.display_products_list(filters={\"product_type\": \"Validation Results\"})" ] }, { + "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ @@ -794,14 +2872,83 @@ }, { "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], + "execution_count": 33, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
    keyvalue
    id11
    releaseNone
    product_typeValidation Results
    uploaded_bygschwend
    internal_name11_goldenspike_flexzboost
    product_nameGoldenspike FlexZBoost
    official_productFalse
    pz_codeFlexZBoost
    descriptionResults of photoz validation using FlexZBoost on a mock test set from the example notebook goldenspike.ipynb available in RAIL's repository.
    created_at2023-03-29T19:48:34.864629Z
    main_filepz_valid_fzboost.tar.gz
    \n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], "source": [ "pz_server.display_product_metadata(\"11_goldenspike_flexzboost\")" ] }, { + "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ @@ -812,7 +2959,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 34, "metadata": {}, "outputs": [], "source": [ @@ -820,17 +2967,23 @@ ] }, { + "attachments": {}, "cell_type": "markdown", "metadata": { "tags": [] }, "source": [ - "\n", - "### Photo-z Tables \n", - " " + "
    \n", + "\n", + "[back to the top](#notebook-contents)\n", + "\n", + "
    \n", + "\n", + "### Photo-z Tables " ] }, { + "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ @@ -841,7 +2994,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 35, "metadata": {}, "outputs": [], "source": [ @@ -849,6 +3002,7 @@ ] }, { + "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ @@ -876,7 +3030,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.9.16" + "version": "3.10.10" }, "nbsphinx": { "execute": "never" diff --git a/docs/_static/documentation_options.js b/docs/_static/documentation_options.js index 8b12b6e..c6c8a74 100644 --- a/docs/_static/documentation_options.js +++ b/docs/_static/documentation_options.js @@ -1,6 +1,6 @@ var DOCUMENTATION_OPTIONS = { URL_ROOT: document.getElementById("documentation_options").getAttribute('data-url_root'), - VERSION: '0.1.dev1+ga41731a', + VERSION: '0.2.2.dev7+g095ab2f', LANGUAGE: 'en', COLLAPSE_INDEX: false, BUILDER: 'html', diff --git a/docs/_static/nbsphinx-code-cells.css b/docs/_static/nbsphinx-code-cells.css index 199fa5a..a3fb27c 100644 --- a/docs/_static/nbsphinx-code-cells.css +++ b/docs/_static/nbsphinx-code-cells.css @@ -62,12 +62,16 @@ div.nblast.container { } /* input prompt */ -div.nbinput.container div.prompt pre { +div.nbinput.container div.prompt pre, +/* for sphinx_immaterial theme: */ +div.nbinput.container div.prompt pre > code { color: #307FC1; } /* output prompt */ -div.nboutput.container div.prompt pre { +div.nboutput.container div.prompt pre, +/* for sphinx_immaterial theme: */ +div.nboutput.container div.prompt pre > code { color: #BF5B3D; } @@ -204,8 +208,10 @@ div.nboutput.container div.output_area > div[class^='highlight']{ overflow-y: hidden; } -/* hide copybtn icon on prompts (needed for 'sphinx_copybutton') */ -.prompt .copybtn { +/* hide copy button on prompts for 'sphinx_copybutton' extension ... */ +.prompt .copybtn, +/* ... and 'sphinx_immaterial' theme */ +.prompt .md-clipboard.md-icon { display: none; } diff --git a/docs/autoapi/index.html b/docs/autoapi/index.html index e08b071..45b7776 100644 --- a/docs/autoapi/index.html +++ b/docs/autoapi/index.html @@ -4,7 +4,7 @@ - API Reference — pzserver 0.1.dev1+ga41731a documentation + API Reference — pzserver 0.2.2.dev7+g095ab2f documentation @@ -35,7 +35,7 @@ pzserver
    - 0.1 + 0.2
    @@ -53,7 +53,7 @@
  • pzserver
  • -
  • Notebooks
  • +
  • Notebooks
  • diff --git a/docs/autoapi/pzserver/catalog/index.html b/docs/autoapi/pzserver/catalog/index.html index efb25c4..7615334 100644 --- a/docs/autoapi/pzserver/catalog/index.html +++ b/docs/autoapi/pzserver/catalog/index.html @@ -4,7 +4,7 @@ - pzserver.catalog — pzserver 0.1.dev1+ga41731a documentation + pzserver.catalog — pzserver 0.2.2.dev7+g095ab2f documentation @@ -35,7 +35,7 @@ pzserver
    - 0.1 + 0.2
    @@ -62,7 +62,7 @@ -
  • Notebooks
  • +
  • Notebooks
  • diff --git a/docs/autoapi/pzserver/communicate/index.html b/docs/autoapi/pzserver/communicate/index.html index 7bf5396..fb04cee 100644 --- a/docs/autoapi/pzserver/communicate/index.html +++ b/docs/autoapi/pzserver/communicate/index.html @@ -4,7 +4,7 @@ - pzserver.communicate — pzserver 0.1.dev1+ga41731a documentation + pzserver.communicate — pzserver 0.2.2.dev7+g095ab2f documentation @@ -35,7 +35,7 @@ pzserver
    - 0.1 + 0.2
    @@ -62,7 +62,7 @@ -
  • Notebooks
  • +
  • Notebooks
  • diff --git a/docs/autoapi/pzserver/core/index.html b/docs/autoapi/pzserver/core/index.html index 65fcfc4..c01eb23 100644 --- a/docs/autoapi/pzserver/core/index.html +++ b/docs/autoapi/pzserver/core/index.html @@ -4,7 +4,7 @@ - pzserver.core — pzserver 0.1.dev1+ga41731a documentation + pzserver.core — pzserver 0.2.2.dev7+g095ab2f documentation @@ -19,7 +19,7 @@ - + @@ -35,7 +35,7 @@ pzserver
    - 0.1 + 0.2
    @@ -62,7 +62,7 @@ -
  • Notebooks
  • +
  • Notebooks
  • @@ -386,7 +386,7 @@

    Attributes - +


    diff --git a/docs/autoapi/pzserver/index.html b/docs/autoapi/pzserver/index.html index 326ec5a..0707b75 100644 --- a/docs/autoapi/pzserver/index.html +++ b/docs/autoapi/pzserver/index.html @@ -4,7 +4,7 @@ - pzserver — pzserver 0.1.dev1+ga41731a documentation + pzserver — pzserver 0.2.2.dev7+g095ab2f documentation @@ -35,7 +35,7 @@ pzserver
    - 0.1 + 0.2
    @@ -65,7 +65,7 @@ -
  • Notebooks
  • +
  • Notebooks
  • @@ -134,7 +134,7 @@

    Classes
    -display_metadata()
    +display_metadata()[source]

    Displays the catalog’s metadata

    Displays a pandas.io.formats.style.Styler object with the metadata informed by the product owner @@ -155,7 +155,7 @@

    Classes
    -plot(savefig=False)
    +plot(savefig=False)[source]

    Very basic plots to characterize a Spec-z catalog.

    Parameters:
    @@ -178,7 +178,7 @@

    Classes
    -plot(mag_name=None, savefig=False)
    +plot(mag_name=None, savefig=False)[source]

    Very basic plots to characterize a Training Set.

    Parameters:
    @@ -195,7 +195,7 @@

    Classes
    -get_product_types() list
    +get_product_types() list[source]

    Fetches the list of valid product types.

    Connects to the Photo-z Server’s administrative database and fetches the list of valid product @@ -209,7 +209,7 @@

    Classes
    -display_product_types()
    +display_product_types()[source]

    Displays the list of product types as dataframe

    Displays a pandas.io.formats.style.Styler object mapping the product type names to the corresponding @@ -218,7 +218,7 @@

    Classes
    -get_users() list
    +get_users() list[source]

    Fetches the list of registered users.

    Connects to the Photo-z Server’s administrative database and fetches the list of registered @@ -232,7 +232,7 @@

    Classes
    -display_users()
    +display_users()[source]

    Displays the list of users as dataframe

    Displays a pandas.io.formats.style.Styler object mapping the users to corresponding GitHub usernames @@ -241,7 +241,7 @@

    Classes
    -get_releases() list
    +get_releases() list[source]

    Fetches the list of valid data releases.

    Connects to the Photo-z Server’s administrative database and fetches the list of valid LSST @@ -257,7 +257,7 @@

    Classes
    -display_releases()
    +display_releases()[source]

    Displays the list of data releases as dataframe

    Displays a pandas.io.formats.style.Styler object mapping the the data release tags to their full @@ -266,7 +266,7 @@

    Classes
    -get_products_list(filters=None) list
    +get_products_list(filters=None) list[source]

    Fetches the list of data products available.

    Connects to the Photo-z Server’s database and fetches the filtered list of data products @@ -285,7 +285,7 @@

    Classes
    -display_products_list(filters=None)
    +display_products_list(filters=None)[source]

    Displays the list of data products as dataframe

    Displays a pandas.io.formats.style.Styler object with the list of all products available with the @@ -302,7 +302,7 @@

    Classes
    -get_product_metadata(product_id=None, mainfile_info=True) dict
    +get_product_metadata(product_id=None, mainfile_info=True) dict[source]

    Fetches the product metadata.

    Connects to the Photo-z Server’s database and fetches the metadata informed by the product @@ -325,7 +325,7 @@

    Classes
    -display_product_metadata(product_id=None, show=True)
    +display_product_metadata(product_id=None, show=True)[source]

    Displays the metadata informed by the product owner.

    Displays a pandas.io.formats.style.Styler object with the metadata informed by the product owner @@ -341,7 +341,7 @@

    Classes
    -download_product(product_id=None, save_in='.')
    +download_product(product_id=None, save_in='.')[source]

    Download the data to local.

    Connects to the Photo-z Server’s database and download a compressed zip file containing all @@ -361,7 +361,7 @@

    Classes
    -get_product(product_id=None, fmt=None)
    +get_product(product_id=None, fmt=None)[source]

    Fetches the data product contents to local.

    Connects to the Photo-z Server’s database and fetches the tabular data stored as registered @@ -387,7 +387,7 @@

    Classes
    -__transform_df(dataframe, metadata)
    +__transform_df(dataframe, metadata)[source]

    Transforms the dataframe into an object corresponding to its product type (currently we have two: Spec-z Catalog or Training Set) or returns the dataframe.

    @@ -403,7 +403,7 @@

    Classes
    -abstract combine_specz_catalogs(catalog_list, duplicates_critera='smallest flag')
    +abstract combine_specz_catalogs(catalog_list, duplicates_critera='smallest flag')[source]

    _summary_

    Parameters:
    @@ -420,7 +420,7 @@

    Classes
    -abstract make_training_set(specz_catalog=None, photo_catalog=None, search_radius=1.0, multiple_match_criteria='select closest')
    +abstract make_training_set(specz_catalog=None, photo_catalog=None, search_radius=1.0, multiple_match_criteria='select closest')[source]

    _summary_

    Parameters:
    diff --git a/docs/genindex.html b/docs/genindex.html index bbda0f3..52388f6 100644 --- a/docs/genindex.html +++ b/docs/genindex.html @@ -3,7 +3,7 @@ - Index — pzserver 0.1.dev1+ga41731a documentation + Index — pzserver 0.2.2.dev7+g095ab2f documentation @@ -32,7 +32,7 @@ pzserver
    - 0.1 + 0.2
    diff --git a/docs/index.html b/docs/index.html index ba27822..3955985 100644 --- a/docs/index.html +++ b/docs/index.html @@ -4,7 +4,7 @@ - Welcome to Photo-z Server Library’s documentation! — pzserver 0.1.dev1+ga41731a documentation + Welcome to Photo-z Server Library’s documentation! — pzserver 0.2.2.dev7+g095ab2f documentation @@ -34,7 +34,7 @@ pzserver
    - 0.1 + 0.2
    @@ -91,8 +91,10 @@

    Welcome to Photo-z Server Library’s documentation!pzserver -
  • Notebooks
  • API Reference
  • -
  • Notebooks
  • +
  • Notebooks
  • diff --git a/docs/nbs.html b/docs/nbs.html new file mode 100644 index 0000000..abf6771 --- /dev/null +++ b/docs/nbs.html @@ -0,0 +1,154 @@ + + + + + + + Notebooks — pzserver 0.2.2.dev7+g095ab2f documentation + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/notebooks/intro_notebook.html b/docs/notebooks/intro_notebook.html index fdd48ca..f7b129a 100644 --- a/docs/notebooks/intro_notebook.html +++ b/docs/notebooks/intro_notebook.html @@ -4,7 +4,7 @@ - Photo-z Server - Tutorial Notebook — pzserver 0.1.dev1+ga41731a documentation + Photo-z Server - Tutorial Notebook — pzserver 0.2.2.dev7+g095ab2f documentation @@ -22,7 +22,7 @@ - + @@ -37,7 +37,7 @@ pzserver
    - 0.1 + 0.2
    @@ -52,18 +52,34 @@
  • Home page
  • Install
  • API Reference
  • -
  • Notebooks
      +
    • Notebooks @@ -84,7 +100,7 @@
      • - +
      • @@ -94,25 +110,54 @@
        -

        6d1dd7702fee41589d7c7e7eebe3a359 fbdf37a851b14f4685d2eab37d9161f0

        +

        27a83060621e414b939784dc47bed682 685ee78f91494029ac446e497f9ceed7

        Photo-z Server - Tutorial Notebook

        Contact author: Julia Gschwend

        Last verified run: 2023-May-05

        - -

        # The PZ Server ## Introduction

        +
        +
        +

        Notebook contents

        + +
        +
        +

        The PZ Server

        +
        +

        Introduction

        The Photo-z (PZ) Server is an online service available for the LSST Community to host and share lightweight photo-z related data products. The upload and download of data and metadata can be done at the website pz-server.linea.org.br (during the development phase, a test environment is available at pz-server-dev.linea.org.br). There, you will find two separate pages containing a list of data products each: one for LSST Data Management’s oficial data products, and other for user-generated data products. The registered data products can also be accessed directly from Python code using the PZ Server’s data access API, as demonstrated below.

        The PZ Server is developed and delivered as part of the in-kind contribution program BRA-LIN, from LIneA to the Rubin Observatory’s LSST. The service is hosted in the Brazilian IDAC, not directly connected to the Rubin Science Platform (RSP). However, it requires RSP credentials for user’s authentication. For a comprehensive documentation about the PZ Server, please visit the PZ Server’s documentation page. There, you will find also an overview of all LIneA’s contributions related to Photo-zs. The internal documentation of the API functions is available on the API’s documentation page.

        -

        ## How to upload a data product to the PZ Server

        -

        back to the top

        -

        To upload a data product, click on the button NEW PRODUCT on the top left of the User-generated Data Products page and fill in the Upload Form with relevant metadata.

        +
        +
        +

        How to upload a data product to the PZ Server

        +

        To upload a data product, click on the button NEW PRODUCT on the top left of the User-generated Data Products page and fill in the Upload Form with relevant metadata.

        The photo-z-related products are organized into four categories (product types):

        • Spec-z Catalog: Catalog of spectroscopic redshifts and positions (usually equatorial coordinates).

        • @@ -120,17 +165,18 @@

          Photo-z Server - Tutorial Notebook

          back to the top

          -

        To download a data product available on the Photo-z Server, go to one of the two pages by clicking on the card “LSST PZ Data Products” (for official products released by LSST DM Team) or “User-generated Data Products” (for products uploaded by the members of LSST community. The download button is on the left side of each data product (each row of the list).

        + +
        +

        How to download a data product from the PZ Server

        +

        To download a data product available on the Photo-z Server, go to one of the two pages by clicking on the card “LSST PZ Data Products” (for official products released by LSST DM Team) or “User-generated Data Products” (for products uploaded by the members of LSST community. The download button is on the left side of each data product (each row of the list).

        +

        The PZ Server API (Python library pz-server-lib)

        -

        back to the top

        -
        -

        Installation

        Using pip

        -

        The PZ Server API is avalialble on pip as pz-server-lib. To install the API and its dependencies, type, on the Terminal:

        +

        The PZ Server API is avalialble on pip as pzserver. To install the API and its dependencies, type, on the Terminal:

        $ pip install pzserver
         
        @@ -145,11 +191,8 @@

        Installation -

        Imports and Setup

        -
        [ ]:
        +
        [1]:
         
        from pzserver import PzServer
        @@ -160,59 +203,302 @@ 

        Imports and SetupPzServer. To get authorization to define an instance of PzServer, the users must provide an API Token generated on the top right menu on the PZ Server website (during the development phase, on the test environment).

        -

        65f1253cd99e46f6ab22e22206aee27e c4f2c7d3887c4b088cd0d021bf838280

        +

        fede982268e94b858ba29b5fc7d35c90 1bd85a34af0d432a8ec29c79000c657c

        [ ]:
         
        -
        pz_server = PzServer(token="<paste your API Token here>", host="pz-dev") # "pz-dev" is the temporary host for test phase
        +
        pz_server = PzServer(token="<your token>", host="pz-dev") # "pz-dev" is the temporary host for test phase
         
        -

        ## How to get general info from PZ Server

        -

        back to the top

        -

        The object pz_server just created above can provide access to data and metadata stored in the PZ Server. It also brings useful methods for users to navigate through the available contents. The methods with the preffix get_ return the result of a query on the PZ Server database as a Python dictionary, and are most useful to be used programatically (see detaials on the API documentation page). Alternatively, those with the +

        +

        How to get general info from PZ Server

        +

        The object pz_server just created above can provide access to data and metadata stored in the PZ Server. It also brings useful methods for users to navigate through the available contents. The methods with the preffix get_ return the result of a query on the PZ Server database as a Python dictionary, and are most useful to be used programatically (see detaials on the API documentation page). Alternatively, those with the preffix display_ show the results as a styled Pandas DataFrames, optimized for Jupyter Notebook (note: column names might change in the display version). For instance:

        Display the list of product types supported with a short description;

        -
        -
        [ ]:
        +
        +
        [3]:
         
        pz_server.display_product_types()
         
        +
        +
        +
        +
        + + + + + + + + + + + + + + + + + + + + + + + + + + +
        Product typeDescription
        Spec-z CatalogCatalog of spectroscopic redshifts and positions (usually equatorial coordinates).
        Training SetTraining set for photo-z algorithms (tabular data). It usually contains magnitudes, errors, and true redshifts.
        Validation ResultsResults of a photo-z validation procedure (free format). Usually contains photo-z estimates (single estimates and/or pdf) of a validation set and photo-z validation metrics.
        Photo-z TableResults of a photo-z estimation procedure. If the data is larger than the file upload limit (200MB), the product entry stores only the metadata (instructions on accessing the data should be provided in the description field.
        +

        Display the list of users who uploaded data products to the server;

        -
        -
        [ ]:
        +
        +
        [4]:
         
        pz_server.display_users()
         
        +
        +
        +
        +
        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
        GitHub usernamename
        crisingulaniCristiano Singulani
        drewoldagDrew Oldag
        glaubervilaGlauber Costa Vila-Verde
        gschwendJulia Gschwend
        gverde
        singulani
        +

        Display the list of data releases available at the time;

        -
        -
        [ ]:
        +
        +
        [5]:
         
        pz_server.display_releases()
         
        +
        +
        +
        +
        + + + + + + + + + + + + + + +
        ReleaseDescription
        LSST DP0LSST Data Preview 0
        +

        Display all data products available (WARNING: this list can rapdly grow during the survey’s operation).

        -
        -
        [ ]:
        +
        +
        [6]:
         
        pz_server.display_products_list()
         
        +
        +
        +
        +
        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
        idinternal_nameproduct_nameproduct_typereleaseuploaded_byofficial_productpz_codedescriptioncreated_at
        1414_gama_specz_subsampleGAMA spec-z subsampleSpec-z CatalogNonegschwendFalseA small subsample of the GAMA DR3 spec-z catalog (Baldry et al. 2018) as an example of a typical spec-z catalog from the literature.2023-03-29T20:02:45.223568Z
        1313_vvds_specz_subsampleVVDS spec-z subsampleSpec-z CatalogNonegschwendFalseA small subsample of the VVDS spec-z catalog (Le Fèvre et al. 2004, Garilli et al. 2008) as an example of a typical spec-z catalog from the literature.2023-03-29T19:50:27.593735Z
        1212_goldenspike_knnGoldenspike KNNValidation ResultsNonegschwendFalseKNNResults of photoz validation using KNN on a mock test set from the example notebook goldenspike.ipynb available in RAIL's repository.2023-03-29T19:49:35.652295Z
        1111_goldenspike_flexzboostGoldenspike FlexZBoostValidation ResultsNonegschwendFalseFlexZBoostResults of photoz validation using FlexZBoost on a mock test set from the example notebook goldenspike.ipynb available in RAIL's repository.2023-03-29T19:48:34.864629Z
        1010_goldenspike_bpzGoldenspike BPZValidation ResultsLSST DP0gschwendFalseBPZResults of photoz validation using BPZ on a mock test set from the example notebook goldenspike.ipynb available in RAIL's repository.2023-03-29T19:42:04.424990Z
        99_goldenspike_train_data_hdf5Goldenspike train data hdf5Training SetNonegschwendFalseA mock training set created using the example notebook goldenspike.ipynb available in RAIL's repository. +Test upload of files in hdf5 format.2023-03-29T19:12:59.746096Z
        88_goldenspike_train_data_fitsGoldenspike train data fitsTraining SetNonegschwendFalseA mock training set created using the example notebook goldenspike.ipynb available in RAIL's repository. +Test upload of files in fits format.2023-03-29T19:09:12.958883Z
        77_goldenspike_train_data_parquetGoldenspike train data parquetTraining SetNonegschwendFalseA mock training set created using the example notebook goldenspike.ipynb available in RAIL's repository. Test upload of files in parquet format.2023-03-29T19:06:58.473920Z
        66_simple_training_setSimple training setTraining SetLSST DP0gschwendFalseA simple example training set created based on the Jupyter notebook simple_pz_training_set.ipynb created by Melissa Graham, available in the repository delegate-contributions-dp02. The file contains coordinates, redshifts, magnitudes, and errors, as an illustration of a typical training set for photo-z algorithms.2023-03-23T19:46:48.807872Z
        11_simple_true_z_catalogSimple true z catalogSpec-z CatalogNonegschwendFalseA simple example of a spectroscopic (true) redshifts catalog created based on the Jupyter notebook simple_pz_training_set.ipynb created by Melissa Graham, available in the repository delegate-contributions-dp02. The file contains only coordinates and redshifts, as an illustration of a typical spec-z catalog.2023-03-23T13:19:32.050795Z
        +

        The information about product type, users, and releases shown above can be used to filter the data products of interest for your search. For that, the method list_products receives as argument a dictionary mapping the products attributes to their values.

        -
        -
        [ ]:
        +
        +
        [7]:
         

        It also works if we type a string pattern that is part of the value. For instance, just “DP0” instead of “LSST DP0”:

        -
        -
        [ ]:
        +
        +
        [8]:
         
        pz_server.display_products_list(filters={"release": "DP0"})
         
        +
        +
        +
        +
        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
        idinternal_nameproduct_nameproduct_typereleaseuploaded_byofficial_productpz_codedescriptioncreated_at
        1010_goldenspike_bpzGoldenspike BPZValidation ResultsLSST DP0gschwendFalseBPZResults of photoz validation using BPZ on a mock test set from the example notebook goldenspike.ipynb available in RAIL's repository.2023-03-29T19:42:04.424990Z
        66_simple_training_setSimple training setTraining SetLSST DP0gschwendFalseA simple example training set created based on the Jupyter notebook simple_pz_training_set.ipynb created by Melissa Graham, available in the repository delegate-contributions-dp02. The file contains coordinates, redshifts, magnitudes, and errors, as an illustration of a typical training set for photo-z algorithms.2023-03-23T19:46:48.807872Z
        +

        It also allows the search for multiple strings by adding the suffix __or (two underscores + “or”) to the search key. For instance, to get spec-z catalogs and training sets in the same search (notice that filtering is not case sensitive):

        -
        -
        [ ]:
        +
        +
        [9]:
         
        pz_server.display_products_list(filters={"product_type__or": ["Spec-z Catalog", "training set"]})
         
        +
        +
        +
        +
        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
        idinternal_nameproduct_nameproduct_typereleaseuploaded_byofficial_productpz_codedescriptioncreated_at
        1414_gama_specz_subsampleGAMA spec-z subsampleSpec-z CatalogNonegschwendFalseA small subsample of the GAMA DR3 spec-z catalog (Baldry et al. 2018) as an example of a typical spec-z catalog from the literature.2023-03-29T20:02:45.223568Z
        1313_vvds_specz_subsampleVVDS spec-z subsampleSpec-z CatalogNonegschwendFalseA small subsample of the VVDS spec-z catalog (Le Fèvre et al. 2004, Garilli et al. 2008) as an example of a typical spec-z catalog from the literature.2023-03-29T19:50:27.593735Z
        99_goldenspike_train_data_hdf5Goldenspike train data hdf5Training SetNonegschwendFalseA mock training set created using the example notebook goldenspike.ipynb available in RAIL's repository. +Test upload of files in hdf5 format.2023-03-29T19:12:59.746096Z
        88_goldenspike_train_data_fitsGoldenspike train data fitsTraining SetNonegschwendFalseA mock training set created using the example notebook goldenspike.ipynb available in RAIL's repository. +Test upload of files in fits format.2023-03-29T19:09:12.958883Z
        77_goldenspike_train_data_parquetGoldenspike train data parquetTraining SetNonegschwendFalseA mock training set created using the example notebook goldenspike.ipynb available in RAIL's repository. Test upload of files in parquet format.2023-03-29T19:06:58.473920Z
        66_simple_training_setSimple training setTraining SetLSST DP0gschwendFalseA simple example training set created based on the Jupyter notebook simple_pz_training_set.ipynb created by Melissa Graham, available in the repository delegate-contributions-dp02. The file contains coordinates, redshifts, magnitudes, and errors, as an illustration of a typical training set for photo-z algorithms.2023-03-23T19:46:48.807872Z
        11_simple_true_z_catalogSimple true z catalogSpec-z CatalogNonegschwendFalseA simple example of a spectroscopic (true) redshifts catalog created based on the Jupyter notebook simple_pz_training_set.ipynb created by Melissa Graham, available in the repository delegate-contributions-dp02. The file contains only coordinates and redshifts, as an illustration of a typical spec-z catalog.2023-03-23T13:19:32.050795Z
        +

        To fetch the results of a search and attribute to a variable, just change the preffix display_ by get_, like this:

        -
        -
        [ ]:
        +
        +
        [10]:
         
        search_results = pz_server.get_products_list(filters={"product_type": "results"}) # PZ Validation results
        @@ -248,13 +731,65 @@ 

        Imports and Setup

        back to the top

        -

        The metadata of a given data product is the information provided by the user on the upload form. This information is attached to the data product contents and is available for consulting on the PZ Server page or using this Python API (pz-server-lib).

        +
        +
        [10]:
        +
        +
        +
        +
        +[{'id': 12,
        +  'release': None,
        +  'release_name': None,
        +  'product_type': 3,
        +  'product_type_name': 'Validation Results',
        +  'uploaded_by': 'gschwend',
        +  'is_owner': False,
        +  'internal_name': '12_goldenspike_knn',
        +  'display_name': 'Goldenspike KNN',
        +  'official_product': False,
        +  'pz_code': 'KNN',
        +  'description': "Results of photoz validation using KNN on a mock test set from the example notebook goldenspike.ipynb available in RAIL's repository.",
        +  'created_at': '2023-03-29T19:49:35.652295Z',
        +  'status': 1},
        + {'id': 11,
        +  'release': None,
        +  'release_name': None,
        +  'product_type': 3,
        +  'product_type_name': 'Validation Results',
        +  'uploaded_by': 'gschwend',
        +  'is_owner': False,
        +  'internal_name': '11_goldenspike_flexzboost',
        +  'display_name': 'Goldenspike FlexZBoost',
        +  'official_product': False,
        +  'pz_code': 'FlexZBoost',
        +  'description': "Results of photoz validation using FlexZBoost on a mock test set from the example notebook goldenspike.ipynb available in RAIL's repository.",
        +  'created_at': '2023-03-29T19:48:34.864629Z',
        +  'status': 1},
        + {'id': 10,
        +  'release': 1,
        +  'release_name': 'LSST DP0',
        +  'product_type': 3,
        +  'product_type_name': 'Validation Results',
        +  'uploaded_by': 'gschwend',
        +  'is_owner': False,
        +  'internal_name': '10_goldenspike_bpz',
        +  'display_name': 'Goldenspike BPZ',
        +  'official_product': False,
        +  'pz_code': 'BPZ',
        +  'description': "Results of photoz validation using BPZ on a mock test set from the example notebook goldenspike.ipynb available in RAIL's repository.",
        +  'created_at': '2023-03-29T19:42:04.424990Z',
        +  'status': 1}]
        +
        +
        +
        +
        +

        How to display the metadata of a data product

        +

        The metadata of a given data product is the information provided by the user on the upload form. This information is attached to the data product contents and is available for consulting on the PZ Server page or using this Python API (pz-server-lib).

        All data products stored on PZ Server are identified by a unique id number or an unique name, a string called internal_name, which is created automatically at the moment of the upload by concatenating the product id to the name given by its owner (replacing blank spaces by “_”, lowering cases, and removing special characters).

        The PzServer’s method get_product_metadata() returns a dictionary with the attibutes stored in the PZ Server about a given data product identified by its id or internal_name. For use in a Jupyter notebook, the equivalent display_product_metadata() shows the results in a formated table.

        -
        +
        +

        How to download data products as .zip files

        +

        To download any data product stored in the PZ Server, use the PzServer’s method download_product informing the product’s internal_name and the path to where it will be saved (the default is the current folder). This method downloads a compressed .zip file which contais all the files uploaded by the user, including data, anciliary files and description files. The time spent to download a data product depends on the internet connections between the user and the host. Let’s try it with a small data product.

        -
        -
        [ ]:
        +
        +
        [12]:
         
        pz_server.download_product(14, save_in=".")
         
        -

        ## How to share data products with other RSP users

        -

        back to the top

        -

        All data products uploaded to the PZ Server are imediately available and visible to all PZ Server users (people with RSP credentials) through the PZ Server website or via the API. Besides informing the product id or internal_name for programatic access, another way to share a data product is providing the product’s URL, which leads to the product’s download page. The URL is composed by the PZ Server website address + /products/ + internal_name:

        +
        +
        +
        +
        +
        +Connecting to PZ Server...
        +File saved as: ./14_gama_specz_subsample_f15c0.zip
        +Done!
        +
        +
        +
        +
        +

        How to share data products with other RSP users

        +

        All data products uploaded to the PZ Server are imediately available and visible to all PZ Server users (people with RSP credentials) through the PZ Server website or via the API. Besides informing the product id or internal_name for programatic access, another way to share a data product is providing the product’s URL, which leads to the product’s download page. The URL is composed by the PZ Server website address + /products/ + internal_name:

        https://pz-server.linea.org.br/product/ + internal_name

        or, if still in the development phase,

        https://pz-server-dev.linea.org.br/product/ + internal_name

        For example:

        https://pz-server-dev.linea.org.br/product/6_simple_training_set

        WARNING: The URL works only with the internal name, not with the id number.

        -

        ## How to retrieve contents of data products (work on memory)

        -

        back to the top

        -

        Another feature of the PZ Server API is to let users retrieve the contents of a given data product to work on memory (by atributing the results of the method get_product() to a variable in the code). This feature is available only for tabular data (product types: Spec-z Catalog and Training Set).

        +
        +
        +

        How to retrieve contents of data products (work on memory)

        +

        Another feature of the PZ Server API is to let users retrieve the contents of a given data product to work on memory (by atributing the results of the method get_product() to a variable in the code). This feature is available only for tabular data (product types: Spec-z Catalog and Training Set).

        By default, the method get_product returns an object from a particular class, depending on the product’s type. The classes SpeczCatalog and TrainingSet are simple extensions of pandas.DataFrame (via class composition) with a couple of additional attributes and methods, such as the attribute metadata, and the method display_metadata(). Let’s see an example:

        -
        -
        [ ]:
        +
        +
        [13]:
         
        catalog = pz_server.get_product(8)
        @@ -298,51 +910,479 @@ 

        Imports and Setup -
        [ ]:
        +
        +
        +
        +
        +
        +Connecting to PZ Server...
        +Done!
        +
        +
        +
        +
        [13]:
        +
        +
        +
        +
        +<pzserver.catalog.TrainingSet at 0x7f2f6912fc10>
        +
        +
        +
        +
        [14]:
         
        catalog.display_metadata()
         
        +
        +
        +
        +
        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
        keyvalue
        id8
        releaseNone
        product_typeTraining Set
        uploaded_bygschwend
        internal_name8_goldenspike_train_data_fits
        product_nameGoldenspike train data fits
        official_productFalse
        pz_code
        descriptionA mock training set created using the example notebook goldenspike.ipynb available in RAIL's repository. +Test upload of files in fits format.
        created_at2023-03-29T19:09:12.958883Z
        main_filegoldenspike_train_data.fits
        +

        The tabular data is alocated in the attribute data, which is a pandas.DataFrame.

        -
        -
        [ ]:
        +
        +
        [15]:
         
        catalog.data
         
        -
        -
        [ ]:
        +
        +
        [15]:
        +
        +
        +
        +
        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
        redshiftmag_u_lsstmag_err_u_lsstmag_g_lsstmag_err_g_lsstmag_r_lsstmag_err_r_lsstmag_i_lsstmag_err_i_lsstmag_z_lsstmag_err_z_lsstmag_y_lsstmag_err_y_lsst
        00.76952126.4968520.28898625.8631700.05699724.7295550.02070223.6106830.01201123.1435180.01371422.9151560.024561
        11.08885726.2587270.23796425.5095240.04166824.4693440.01664823.5328600.01134422.5466800.00899222.0702550.012282
        21.33309825.3738550.11225724.9432930.02535924.5249980.01743124.0136490.01648623.7332740.02231523.1021230.028906
        ..........................................
        590.98637426.0506530.20016425.6416240.04683725.1610780.03009024.4601520.02404723.9772390.02756723.8319740.055121
        600.47428127.0480560.44468326.4282110.09385424.8399840.02275524.2092260.01940323.8550820.02478723.5074560.041329
        610.56192324.6804800.06118223.9586090.01143022.9001350.00634622.1435810.00582021.8675630.00646521.6126920.008967
        +

        62 rows × 13 columns

        +
        +
        +
        +
        [16]:
         
        type(catalog.data)
         
        +
        +
        [16]:
        +
        +
        +
        +
        +pandas.core.frame.DataFrame
        +
        +

        It preserves the useful methods from pandas.DataFrame, such as:

        -
        -
        [ ]:
        +
        +
        [17]:
         
        catalog.data.info()
         
        -
        -
        [ ]:
        +
        +
        +
        +
        +
        +<class 'pandas.core.frame.DataFrame'>
        +RangeIndex: 62 entries, 0 to 61
        +Data columns (total 13 columns):
        + #   Column          Non-Null Count  Dtype
        +---  ------          --------------  -----
        + 0   redshift        62 non-null     >f8
        + 1   mag_u_lsst      61 non-null     >f8
        + 2   mag_err_u_lsst  61 non-null     >f8
        + 3   mag_g_lsst      62 non-null     >f8
        + 4   mag_err_g_lsst  62 non-null     >f8
        + 5   mag_r_lsst      62 non-null     >f8
        + 6   mag_err_r_lsst  62 non-null     >f8
        + 7   mag_i_lsst      62 non-null     >f8
        + 8   mag_err_i_lsst  62 non-null     >f8
        + 9   mag_z_lsst      62 non-null     >f8
        + 10  mag_err_z_lsst  62 non-null     >f8
        + 11  mag_y_lsst      61 non-null     >f8
        + 12  mag_err_y_lsst  61 non-null     >f8
        +dtypes: float64(13)
        +memory usage: 6.4 KB
        +
        +
        +
        +
        [18]:
         
        catalog.data.describe()
         
        +
        +
        [18]:
        +
        +
        +
        +
        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
        redshiftmag_u_lsstmag_err_u_lsstmag_g_lsstmag_err_g_lsstmag_r_lsstmag_err_r_lsstmag_i_lsstmag_err_i_lsstmag_z_lsstmag_err_z_lsstmag_y_lsstmag_err_y_lsst
        count62.00000061.00000061.00000062.00000062.00000062.00000062.00000062.00000062.00000062.00000062.00000061.00000061.000000
        mean0.78029825.4460080.18805024.8200000.03818224.0039700.01877023.3848040.01616523.0744810.02147822.9323540.054682
        std0.3553651.2692770.1937471.3141120.0363981.3873580.0137501.3815870.0100691.4006730.0149611.5402840.115875
        ..........................................
        50%0.76460025.5770290.13381525.0699700.02830924.4702150.01666023.7485060.01339023.5141850.01854023.2933840.034199
        75%0.94849426.2632840.23885925.7054860.04957624.9852250.02580224.4886540.02465024.1659440.03255723.9930100.063585
        max1.75576428.4823911.15407327.2961520.19819526.0369580.06536024.9496450.03693224.6931320.05188327.3421510.909230
        +

        8 rows × 13 columns

        +
        +

        In the prod-types you will see more details about these specific classes. For those who prefer working with astropy.Table or pure pandas.DataFrame, the method get_product() gives the flexibility to choose the output format (fmt="pandas" or fmt="astropy").

        -
        -
        [ ]:
        +
        +
        [19]:
         
        dataframe = pz_server.get_product(8, fmt="pandas")
        @@ -351,8 +1391,173 @@ 

        Imports and Setup -
        [ ]:
        +
        +
        +
        +
        +
        +Connecting to PZ Server...
        +<class 'pandas.core.frame.DataFrame'>
        +
        +
        +
        +
        [19]:
        +
        +
        +
        +
        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
        redshiftmag_u_lsstmag_err_u_lsstmag_g_lsstmag_err_g_lsstmag_r_lsstmag_err_r_lsstmag_i_lsstmag_err_i_lsstmag_z_lsstmag_err_z_lsstmag_y_lsstmag_err_y_lsst
        00.76952126.4968520.28898625.8631700.05699724.7295550.02070223.6106830.01201123.1435180.01371422.9151560.024561
        11.08885726.2587270.23796425.5095240.04166824.4693440.01664823.5328600.01134422.5466800.00899222.0702550.012282
        21.33309825.3738550.11225724.9432930.02535924.5249980.01743124.0136490.01648623.7332740.02231523.1021230.028906
        ..........................................
        590.98637426.0506530.20016425.6416240.04683725.1610780.03009024.4601520.02404723.9772390.02756723.8319740.055121
        600.47428127.0480560.44468326.4282110.09385424.8399840.02275524.2092260.01940323.8550820.02478723.5074560.041329
        610.56192324.6804800.06118223.9586090.01143022.9001350.00634622.1435810.00582021.8675630.00646521.6126920.008967
        +

        62 rows × 13 columns

        +
        +
        +

        Product types

        The PZ Server API provides Python classes with useful methods to handle particular product types. Let’s recap the product types available:

        -
        -
        [ ]:
        +
        +
        [22]:
         
        pz_server.display_product_types()
         
        -

        ## Spec-z Catalog

        -

        back to the top

        -

        In the context of the PZ Server, Spec-z Catalogs are defined as any catalog containing spherical equatorial coordinates and spectroscopic redshift measurements (or, analogously, true redshifts from simulations). A Spec-z Catalog can include data from a single spectroscopic survey or a combination of data from several sources. To be considered as a single Spec-z Catalog, the data should be provided as a single file to PZ Server’s the upload tool. For multi-survey catalogs, it is recommended to +

        +
        +
        +
        + + + + + + + + + + + + + + + + + + + + + + + + + + +
        Product typeDescription
        Spec-z CatalogCatalog of spectroscopic redshifts and positions (usually equatorial coordinates).
        Training SetTraining set for photo-z algorithms (tabular data). It usually contains magnitudes, errors, and true redshifts.
        Validation ResultsResults of a photo-z validation procedure (free format). Usually contains photo-z estimates (single estimates and/or pdf) of a validation set and photo-z validation metrics.
        Photo-z TableResults of a photo-z estimation procedure. If the data is larger than the file upload limit (200MB), the product entry stores only the metadata (instructions on accessing the data should be provided in the description field.
        +
        +
        +

        Spec-z Catalog

        +

        In the context of the PZ Server, Spec-z Catalogs are defined as any catalog containing spherical equatorial coordinates and spectroscopic redshift measurements (or, analogously, true redshifts from simulations). A Spec-z Catalog can include data from a single spectroscopic survey or a combination of data from several sources. To be considered as a single Spec-z Catalog, the data should be provided as a single file to PZ Server’s the upload tool. For multi-survey catalogs, it is recommended to add the survey name or identification as an extra column.

        Mandatory columns: * Right ascension [degrees] - float * Declination [degrees] - float * Spectroscopic or true redshift - float

        Recommended columns: * Spectroscopic redshift error - float * Quality flag - integer, float, or string * Survey name (recommended for compilations of data from different surveys)

        Let’s see an example of Spec-z Catalog:

        -
        -
        [ ]:
        +
        +
        [23]:
         
        gama = pz_server.get_product(14)
         
        -
        -
        [ ]:
        +
        +
        +
        +
        +
        +Connecting to PZ Server...
        +Done!
        +
        +
        +
        +
        [24]:
         
        gama.display_metadata()
         
        +
        +
        +
        +
        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
        keyvalue
        id14
        releaseNone
        product_typeSpec-z Catalog
        uploaded_bygschwend
        internal_name14_gama_specz_subsample
        product_nameGAMA spec-z subsample
        official_productFalse
        pz_code
        descriptionA small subsample of the GAMA DR3 spec-z catalog (Baldry et al. 2018) as an example of a typical spec-z catalog from the literature.
        created_at2023-03-29T20:02:45.223568Z
        main_filespecz_subsample_gama_example.csv
        +

        Display basic statistics

        -
        -
        [ ]:
        +
        +
        [25]:
         
        gama.data.describe()
         
        +
        +
        [25]:
        +
        +
        +
        +
        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
        IDRADECZERR_ZFLAG_DES
        count2.576000e+032576.0000002576.0000002576.0000002576.02576.000000
        mean1.105526e+06154.526343-1.1018650.22481199.03.949534
        std4.006668e+0470.7838682.9950360.1025710.00.218947
        .....................
        50%1.103558e+06180.140145-0.4808300.21780499.04.000000
        75%1.140619e+06215.8365831.1703630.29181099.04.000000
        max1.176440e+06223.4970802.9981800.72871799.04.000000
        +

        8 rows × 6 columns

        +
        +

        The spec-z catalog object has a very basic plot method for quick visualization of catalog properties

        -
        -
        [ ]:
        +
        +
        [26]:
         
        gama.plot()
         
        +
        +
        +
        +
        +../_images/notebooks_intro_notebook_65_0.png +
        +

        The attribute data, which is a DataFrame preserves the plot method from Pandas.

        -
        -
        [ ]:
        +
        +
        [27]:
         
        gama.data.plot(x="RA", y="DEC", kind="scatter")
         
        -

        ## Training Sets

        -

        back to the top

        -

        In the context of the PZ Server, Training Sets are defined as the product of matching (spatially) a given Spec-z Catalog (single survey or compilation) to the photometric data, in this case, the LSST Objects Catalog. The PZ Server API offers a tool called Training Set Maker for users to build customized Training Sets based on the Spec-z Catalogs available. Please see the companion Jupyter Notebook pz_tsm_tutorial.ipynb for details.

        +
        +
        [27]:
        +
        +
        +
        +
        +<Axes: xlabel='RA', ylabel='DEC'>
        +
        +
        +
        +
        +
        +
        +../_images/notebooks_intro_notebook_67_1.png +
        +
        +
        +
        +

        Training Sets

        +

        In the context of the PZ Server, Training Sets are defined as the product of matching (spatially) a given Spec-z Catalog (single survey or compilation) to the photometric data, in this case, the LSST Objects Catalog. The PZ Server API offers a tool called Training Set Maker for users to build customized Training Sets based on the Spec-z Catalogs available. Please see the companion Jupyter Notebook pz_tsm_tutorial.ipynb for details.

        Note 1: Commonly the training set is split into two or more subsets for photo-z validation purposes. If the Training Set owner has previously defined which objects should belong to each subset (trainining and validation/test sets), this information must be available as an extra column in the table or as clear instructions for reproducing the subsets separation in the data product description.

        Note 2: The PZ Server only supports catalog-level Training Sets. Image-based Training Sets, e.g., for deep-learning algorithms, are not supported yet.

        Mandatory column: * Spectroscopic (or true) redshift - float

        Other expected columns * Object ID from LSST Objects Catalog - integer * Observables: magnitudes (and/or colors, or fluxes) from LSST Objects Catalog - float * Observable errors: magnitude errors (and/or color errors, or flux errors) from LSST Objects Catalog - float * Right ascension [degrees] - float * Declination [degrees] - float * Quality Flag - integer, float, or string * Subset Flag - integer, float, or string

        -
        -
        [ ]:
        +
        +
        [28]:
         
        train_goldenspike = pz_server.get_product(9)
         
        -
        -
        [ ]:
        +
        +
        +
        +
        +
        +Connecting to PZ Server...
        +Done!
        +
        +
        +
        +
        [29]:
         
        train_goldenspike.display_metadata()
         
        +
        +
        +
        +
        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
        keyvalue
        id9
        releaseNone
        product_typeTraining Set
        uploaded_bygschwend
        internal_name9_goldenspike_train_data_hdf5
        product_nameGoldenspike train data hdf5
        official_productFalse
        pz_code
        descriptionA mock training set created using the example notebook goldenspike.ipynb available in RAIL's repository. +Test upload of files in hdf5 format.
        created_at2023-03-29T19:12:59.746096Z
        main_filegoldenspike_train_data.hdf5
        +

        Display basic statistics

        -
        -
        [ ]:
        +
        +
        [30]:
         
        train_goldenspike.data.describe()
         
        +
        +
        [30]:
        +
        +
        +
        +
        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
        mag_err_g_lsstmag_err_i_lsstmag_err_r_lsstmag_err_u_lsstmag_err_y_lsstmag_err_z_lsstmag_g_lsstmag_i_lsstmag_r_lsstmag_u_lsstmag_y_lsstmag_z_lsstredshift
        count62.00000062.00000062.00000061.00000061.00000062.00000062.00000062.00000062.00000061.00000061.00000062.00000062.000000
        mean0.0381820.0161650.0187700.1880500.0546820.02147824.82000023.38480424.00397025.44600822.93235423.0744810.780298
        std0.0363980.0100690.0137500.1937470.1158750.0149611.3141121.3815871.3873581.2692771.5402841.4006730.355365
        ..........................................
        50%0.0283090.0133900.0166600.1338150.0341990.01854025.06997023.74850624.47021525.57702923.29338423.5141850.764600
        75%0.0495760.0246500.0258020.2388590.0635850.03255725.70548624.48865424.98522526.26328423.99301024.1659440.948494
        max0.1981950.0369320.0653601.1540730.9092300.05188327.29615224.94964526.03695828.48239127.34215124.6931321.755764
        +

        8 rows × 13 columns

        +
        +

        Quick visualization of training set properties:

        -
        -
        [ ]:
        +
        +
        [31]:
         
        train_goldenspike.plot(mag_name="mag_i_lsst")
         
        -

        ## Photo-z Validation Results

        -

        back to the top

        -

        Validation Results are the outputs of any photo-z algorithm applied on a Validation Set. The format and number of files of this data product are strongly dependent on the algorithm used to create it, so there are no constraints on these two parameters. In the case of multiple files, for instance, if the user includes the results of training procedures (e.g., neural nets weights, decision trees files, or any machine learning by-product) or additional files (SED templates, filter transmission +

        +
        +
        +
        +../_images/notebooks_intro_notebook_74_0.png +
        +
        +
        +
        +

        Photo-z Validation Results

        +

        Validation Results are the outputs of any photo-z algorithm applied on a Validation Set. The format and number of files of this data product are strongly dependent on the algorithm used to create it, so there are no constraints on these two parameters. In the case of multiple files, for instance, if the user includes the results of training procedures (e.g., neural nets weights, decision trees files, or any machine learning by-product) or additional files (SED templates, filter transmission curves, theoretical magnitudes grid, Bayesian priors, etc.), it will be required to put all files together in a single compressed file (.zip or .tar, or .tar.gz) before uploading it to the Photo-z Server.

        -

        List Validation Results available on PZ Server

        -
        -
        [ ]:
        +

        List Validation Results available on PZ Server

        +
        +
        [32]:
         
        pz_server.display_products_list(filters={"product_type": "Validation Results"})
         
        +
        +
        +
        +
        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
        idinternal_nameproduct_nameproduct_typereleaseuploaded_byofficial_productpz_codedescriptioncreated_at
        1212_goldenspike_knnGoldenspike KNNValidation ResultsNonegschwendFalseKNNResults of photoz validation using KNN on a mock test set from the example notebook goldenspike.ipynb available in RAIL's repository.2023-03-29T19:49:35.652295Z
        1111_goldenspike_flexzboostGoldenspike FlexZBoostValidation ResultsNonegschwendFalseFlexZBoostResults of photoz validation using FlexZBoost on a mock test set from the example notebook goldenspike.ipynb available in RAIL's repository.2023-03-29T19:48:34.864629Z
        1010_goldenspike_bpzGoldenspike BPZValidation ResultsLSST DP0gschwendFalseBPZResults of photoz validation using BPZ on a mock test set from the example notebook goldenspike.ipynb available in RAIL's repository.2023-03-29T19:42:04.424990Z
        +
        -

        Display metadata of a given data product of Photo-z Validation Results

        -
        -
        [ ]:
        +

        Display metadata of a given data product of Photo-z Validation Results

        +
        +
        [33]:
         
        pz_server.display_product_metadata("11_goldenspike_flexzboost")
         
        +
        +
        +
        +
        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
        keyvalue
        id11
        releaseNone
        product_typeValidation Results
        uploaded_bygschwend
        internal_name11_goldenspike_flexzboost
        product_nameGoldenspike FlexZBoost
        official_productFalse
        pz_codeFlexZBoost
        descriptionResults of photoz validation using FlexZBoost on a mock test set from the example notebook goldenspike.ipynb available in RAIL's repository.
        created_at2023-03-29T19:48:34.864629Z
        main_filepz_valid_fzboost.tar.gz
        +
        -

        Retrieve a given Photo-z Validation Results: download file

        +

        Retrieve a given Photo-z Validation Results: download file

        This product type is not necessarily (only) tabular data and can be a list of files. The methods get_product shown above just return the data to be used on memory and only supports single tabular files. To retrieve Photo-z Validation Results, you must download the data to open locally.

        -
        [ ]:
        +
        [34]:
         
        # pz_server.download_product(11, save_in=".")
         
        -

        ### Photo-z Tables

        -

        back to the top

        -

        The Photo-z Tables are the results of photo-z estimation on photometrics samples. The data format is usually tabular, and might vary according to the phto-z estimation method used.

        +
        +
        +

        Photo-z Tables

        +

        The Photo-z Tables are the results of photo-z estimation on photometrics samples. The data format is usually tabular, and might vary according to the phto-z estimation method used.

        The size limit for uploading files on the PZ Server is 200MB, therefore it does not support large Photo-z Tables such as the photo-zs of the LSST Objects catalog. The PZ Server can host small Photo-z Tables or, in case of large datasets, a data product can be registered to contain only the Photo-z Tables’ metadata. For these cases, the instructions to find and access the data must be provided in the product’s description.

        -
        [ ]:
        +
        [35]:
         
        # pz_server.download_product(<id number or internal name>)
        @@ -529,16 +2347,17 @@ 

        Retrieve a given Photo-z Validation Results: download file
        -

        Users feedback

        +

        Users feedback

        Is something important missing? Click here to open an issue in the PZ Server library repository on GitHub.

        +


        diff --git a/docs/notebooks/intro_notebook.ipynb b/docs/notebooks/intro_notebook.ipynb index 5ef13e6..660cbe7 100644 --- a/docs/notebooks/intro_notebook.ipynb +++ b/docs/notebooks/intro_notebook.ipynb @@ -1,6 +1,7 @@ { "cells": [ { + "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ @@ -15,42 +16,49 @@ ] }, { + "attachments": {}, "cell_type": "markdown", "metadata": { "tags": [] }, "source": [ - "\n", - "#### Notebook contents\n", + "
        \n", + "\n", + "# Notebook contents\n", + "\n", "- PZ Server\n", - " - [Introduction](#intro) \n", - " - [How to upload a data product to the PZ Server](#upload)\n", - " - [How to download a data product from the PZ Server](#download)\n", + " - [Introduction](#introduction) \n", + " - [How to upload a data product to the PZ Server](#how-to-upload-a-data-product-to-the-pz-server)\n", + " - [How to download a data product from the PZ Server](#how-to-download-a-data-product-from-the-pz-server)\n", "- PZ Server API (Python library pz-server-lib)\n", - " - [How to get general info from PZ Server](#general)\n", - " - [How to display the metadata of a data product](#metadata)\n", - " - [How to download data products as .zip files](#download-zip) \n", - " - [How to share data products with other RSP users](#share)\n", - " - [How to retrieve contents of data products (work on memory)](#retrieve-contents)\n", + " - [How to get general info from PZ Server](#how-to-get-general-info-from-pz-server)\n", + " - [How to display the metadata of a data product](#how-to-display-the-metadata-of-a-data-product)\n", + " - [How to download data products as .zip files](#how-to-download-data-products-as-zip-files) \n", + " - [How to share data products with other RSP users](#how-to-share-data-products-with-other-rsp-users)\n", + " - [How to retrieve contents of data products (work on memory)](#how-to-retrieve-contents-of-data-products-work-on-memory)\n", "- Product types \n", - " - [Spec-z Catalogs](#spec)\n", - " - [Training Sets](#train)\n", - " - [Photo-z Validation Results](#valid)\n", - " - [Photo-z Tables](#pz_tables)" + " - [Spec-z Catalogs](#spec-z-catalog)\n", + " - [Training Sets](#training-sets)\n", + " - [Photo-z Validation Results](#photo-z-validation-results)\n", + " - [Photo-z Tables](#photo-z-tables)" ] }, { + "attachments": {}, "cell_type": "markdown", "metadata": { "tags": [] }, "source": [ - "\n", "# The PZ Server\n", + "\n", + "
        \n", + "\n", "## Introduction \n" ] }, { + "attachments": {}, "cell_type": "markdown", "metadata": { "tags": [] @@ -62,12 +70,17 @@ ] }, { + "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ - "\n", - "## How to upload a data product to the PZ Server\n", - " \n", + "
        \n", + "\n", + "[back to the top](#notebook-contents)\n", + "\n", + "
        \n", + "\n", + "## How to upload a data product to the PZ Server \n", "\n", "To upload a data product, click on the button **NEW PRODUCT** on the top left of the **User-generated Data Products** page and fill in the Upload Form with relevant metadata.\n", "\n", @@ -80,25 +93,37 @@ ] }, { + "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ - "\n", + "
        \n", + "\n", + "[back to the top](#notebook-contents)\n", + "\n", + "
        \n", + "\n", "## How to download a data product from the PZ Server\n", - " \n", "\n", "To download a data product available on the Photo-z Server, go to one of the two pages by clicking on the card \"LSST PZ Data Products\" (for official products released by LSST DM Team) or \"User-generated Data Products\" (for products uploaded by the members of LSST community. The download button is on the left side of each data product (each row of the list). " ] }, { + "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ - "# The PZ Server API (Python library pz-server-lib)\n", - " " + "
        \n", + "\n", + "[back to the top](#notebook-contents)\n", + "\n", + "
        \n", + "\n", + "# The PZ Server API (Python library pz-server-lib)" ] }, { + "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ @@ -106,7 +131,7 @@ "\n", "**Using pip**\n", "\n", - "The PZ Server API is avalialble on **pip** as `pz-server-lib`. To install the API and its dependencies, type, on the Terminal: \n", + "The PZ Server API is avalialble on **pip** as `pzserver`. To install the API and its dependencies, type, on the Terminal: \n", "\n", "```\n", "$ pip install pzserver \n", @@ -128,10 +153,11 @@ "```\n", "\n", "\n", - "OBS: You might need to restart the kernel on the notebook to incorporate the new library. \n" + "OBS: You might need to restart the kernel on the notebook to incorporate the new library.\n" ] }, { + "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ @@ -140,7 +166,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 1, "metadata": {}, "outputs": [], "source": [ @@ -151,6 +177,7 @@ ] }, { + "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ @@ -158,6 +185,7 @@ ] }, { + "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ @@ -170,19 +198,25 @@ "metadata": {}, "outputs": [], "source": [ - "pz_server = PzServer(token=\"\", host=\"pz-dev\") # \"pz-dev\" is the temporary host for test phase " + "pz_server = PzServer(token=\"\", host=\"pz-dev\") # \"pz-dev\" is the temporary host for test phase " ] }, { + "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ - "\n", - "## How to get general info from PZ Server\n", - " " + "
        \n", + "\n", + "[back to the top](#notebook-contents)\n", + "\n", + "
        \n", + "\n", + "## How to get general info from PZ Server" ] }, { + "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ @@ -193,14 +227,55 @@ }, { "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], + "execution_count": 3, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
        Product typeDescription
        Spec-z CatalogCatalog of spectroscopic redshifts and positions (usually equatorial coordinates).
        Training SetTraining set for photo-z algorithms (tabular data). It usually contains magnitudes, errors, and true redshifts.
        Validation ResultsResults of a photo-z validation procedure (free format). Usually contains photo-z estimates (single estimates and/or pdf) of a validation set and photo-z validation metrics.
        Photo-z TableResults of a photo-z estimation procedure. If the data is larger than the file upload limit (200MB), the product entry stores only the metadata (instructions on accessing the data should be provided in the description field.
        \n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], "source": [ "pz_server.display_product_types()" ] }, { + "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ @@ -209,14 +284,63 @@ }, { "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], + "execution_count": 4, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
        GitHub usernamename
        crisingulaniCristiano Singulani
        drewoldagDrew Oldag
        glaubervilaGlauber Costa Vila-Verde
        gschwendJulia Gschwend
        gverde
        singulani
        \n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], "source": [ "pz_server.display_users()" ] }, { + "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ @@ -225,14 +349,43 @@ }, { "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], + "execution_count": 5, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
        ReleaseDescription
        LSST DP0LSST Data Preview 0
        \n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], "source": [ "pz_server.display_releases()" ] }, { + "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ @@ -243,16 +396,171 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 6, "metadata": { "tags": [] }, - "outputs": [], + "outputs": [ + { + "data": { + "text/html": [ + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
        idinternal_nameproduct_nameproduct_typereleaseuploaded_byofficial_productpz_codedescriptioncreated_at
        1414_gama_specz_subsampleGAMA spec-z subsampleSpec-z CatalogNonegschwendFalseA small subsample of the GAMA DR3 spec-z catalog (Baldry et al. 2018) as an example of a typical spec-z catalog from the literature.2023-03-29T20:02:45.223568Z
        1313_vvds_specz_subsampleVVDS spec-z subsampleSpec-z CatalogNonegschwendFalseA small subsample of the VVDS spec-z catalog (Le Fèvre et al. 2004, Garilli et al. 2008) as an example of a typical spec-z catalog from the literature.2023-03-29T19:50:27.593735Z
        1212_goldenspike_knnGoldenspike KNNValidation ResultsNonegschwendFalseKNNResults of photoz validation using KNN on a mock test set from the example notebook goldenspike.ipynb available in RAIL's repository.2023-03-29T19:49:35.652295Z
        1111_goldenspike_flexzboostGoldenspike FlexZBoostValidation ResultsNonegschwendFalseFlexZBoostResults of photoz validation using FlexZBoost on a mock test set from the example notebook goldenspike.ipynb available in RAIL's repository.2023-03-29T19:48:34.864629Z
        1010_goldenspike_bpzGoldenspike BPZValidation ResultsLSST DP0gschwendFalseBPZResults of photoz validation using BPZ on a mock test set from the example notebook goldenspike.ipynb available in RAIL's repository.2023-03-29T19:42:04.424990Z
        99_goldenspike_train_data_hdf5Goldenspike train data hdf5Training SetNonegschwendFalseA mock training set created using the example notebook goldenspike.ipynb available in RAIL's repository. \r\n", + "Test upload of files in hdf5 format.2023-03-29T19:12:59.746096Z
        88_goldenspike_train_data_fitsGoldenspike train data fitsTraining SetNonegschwendFalseA mock training set created using the example notebook goldenspike.ipynb available in RAIL's repository. \r\n", + "Test upload of files in fits format.2023-03-29T19:09:12.958883Z
        77_goldenspike_train_data_parquetGoldenspike train data parquetTraining SetNonegschwendFalseA mock training set created using the example notebook goldenspike.ipynb available in RAIL's repository. Test upload of files in parquet format.2023-03-29T19:06:58.473920Z
        66_simple_training_setSimple training setTraining SetLSST DP0gschwendFalseA simple example training set created based on the Jupyter notebook simple_pz_training_set.ipynb created by Melissa Graham, available in the repository delegate-contributions-dp02. The file contains coordinates, redshifts, magnitudes, and errors, as an illustration of a typical training set for photo-z algorithms.2023-03-23T19:46:48.807872Z
        11_simple_true_z_catalogSimple true z catalogSpec-z CatalogNonegschwendFalseA simple example of a spectroscopic (true) redshifts catalog created based on the Jupyter notebook simple_pz_training_set.ipynb created by Melissa Graham, available in the repository delegate-contributions-dp02. The file contains only coordinates and redshifts, as an illustration of a typical spec-z catalog.2023-03-23T13:19:32.050795Z
        \n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], "source": [ "pz_server.display_products_list() " ] }, { + "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ @@ -261,15 +569,60 @@ }, { "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], + "execution_count": 7, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
        idinternal_nameproduct_nameproduct_typereleaseuploaded_byofficial_productpz_codedescriptioncreated_at
        66_simple_training_setSimple training setTraining SetLSST DP0gschwendFalseA simple example training set created based on the Jupyter notebook simple_pz_training_set.ipynb created by Melissa Graham, available in the repository delegate-contributions-dp02. The file contains coordinates, redshifts, magnitudes, and errors, as an illustration of a typical training set for photo-z algorithms.2023-03-23T19:46:48.807872Z
        \n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], "source": [ "pz_server.display_products_list(filters={\"release\": \"LSST DP0\", \n", " \"product_type\": \"Training Set\"})" ] }, { + "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ @@ -278,14 +631,71 @@ }, { "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], + "execution_count": 8, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
        idinternal_nameproduct_nameproduct_typereleaseuploaded_byofficial_productpz_codedescriptioncreated_at
        1010_goldenspike_bpzGoldenspike BPZValidation ResultsLSST DP0gschwendFalseBPZResults of photoz validation using BPZ on a mock test set from the example notebook goldenspike.ipynb available in RAIL's repository.2023-03-29T19:42:04.424990Z
        66_simple_training_setSimple training setTraining SetLSST DP0gschwendFalseA simple example training set created based on the Jupyter notebook simple_pz_training_set.ipynb created by Melissa Graham, available in the repository delegate-contributions-dp02. The file contains coordinates, redshifts, magnitudes, and errors, as an illustration of a typical training set for photo-z algorithms.2023-03-23T19:46:48.807872Z
        \n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], "source": [ "pz_server.display_products_list(filters={\"release\": \"DP0\"})" ] }, { + "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ @@ -294,16 +704,135 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 9, "metadata": { "tags": [] }, - "outputs": [], + "outputs": [ + { + "data": { + "text/html": [ + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
        idinternal_nameproduct_nameproduct_typereleaseuploaded_byofficial_productpz_codedescriptioncreated_at
        1414_gama_specz_subsampleGAMA spec-z subsampleSpec-z CatalogNonegschwendFalseA small subsample of the GAMA DR3 spec-z catalog (Baldry et al. 2018) as an example of a typical spec-z catalog from the literature.2023-03-29T20:02:45.223568Z
        1313_vvds_specz_subsampleVVDS spec-z subsampleSpec-z CatalogNonegschwendFalseA small subsample of the VVDS spec-z catalog (Le Fèvre et al. 2004, Garilli et al. 2008) as an example of a typical spec-z catalog from the literature.2023-03-29T19:50:27.593735Z
        99_goldenspike_train_data_hdf5Goldenspike train data hdf5Training SetNonegschwendFalseA mock training set created using the example notebook goldenspike.ipynb available in RAIL's repository. \r\n", + "Test upload of files in hdf5 format.2023-03-29T19:12:59.746096Z
        88_goldenspike_train_data_fitsGoldenspike train data fitsTraining SetNonegschwendFalseA mock training set created using the example notebook goldenspike.ipynb available in RAIL's repository. \r\n", + "Test upload of files in fits format.2023-03-29T19:09:12.958883Z
        77_goldenspike_train_data_parquetGoldenspike train data parquetTraining SetNonegschwendFalseA mock training set created using the example notebook goldenspike.ipynb available in RAIL's repository. Test upload of files in parquet format.2023-03-29T19:06:58.473920Z
        66_simple_training_setSimple training setTraining SetLSST DP0gschwendFalseA simple example training set created based on the Jupyter notebook simple_pz_training_set.ipynb created by Melissa Graham, available in the repository delegate-contributions-dp02. The file contains coordinates, redshifts, magnitudes, and errors, as an illustration of a typical training set for photo-z algorithms.2023-03-23T19:46:48.807872Z
        11_simple_true_z_catalogSimple true z catalogSpec-z CatalogNonegschwendFalseA simple example of a spectroscopic (true) redshifts catalog created based on the Jupyter notebook simple_pz_training_set.ipynb created by Melissa Graham, available in the repository delegate-contributions-dp02. The file contains only coordinates and redshifts, as an illustration of a typical spec-z catalog.2023-03-23T13:19:32.050795Z
        \n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], "source": [ "pz_server.display_products_list(filters={\"product_type__or\": [\"Spec-z Catalog\", \"training set\"]})" ] }, { + "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ @@ -312,26 +841,84 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 10, "metadata": { "tags": [] }, - "outputs": [], + "outputs": [ + { + "data": { + "text/plain": [ + "[{'id': 12,\n", + " 'release': None,\n", + " 'release_name': None,\n", + " 'product_type': 3,\n", + " 'product_type_name': 'Validation Results',\n", + " 'uploaded_by': 'gschwend',\n", + " 'is_owner': False,\n", + " 'internal_name': '12_goldenspike_knn',\n", + " 'display_name': 'Goldenspike KNN',\n", + " 'official_product': False,\n", + " 'pz_code': 'KNN',\n", + " 'description': \"Results of photoz validation using KNN on a mock test set from the example notebook goldenspike.ipynb available in RAIL's repository.\",\n", + " 'created_at': '2023-03-29T19:49:35.652295Z',\n", + " 'status': 1},\n", + " {'id': 11,\n", + " 'release': None,\n", + " 'release_name': None,\n", + " 'product_type': 3,\n", + " 'product_type_name': 'Validation Results',\n", + " 'uploaded_by': 'gschwend',\n", + " 'is_owner': False,\n", + " 'internal_name': '11_goldenspike_flexzboost',\n", + " 'display_name': 'Goldenspike FlexZBoost',\n", + " 'official_product': False,\n", + " 'pz_code': 'FlexZBoost',\n", + " 'description': \"Results of photoz validation using FlexZBoost on a mock test set from the example notebook goldenspike.ipynb available in RAIL's repository.\",\n", + " 'created_at': '2023-03-29T19:48:34.864629Z',\n", + " 'status': 1},\n", + " {'id': 10,\n", + " 'release': 1,\n", + " 'release_name': 'LSST DP0',\n", + " 'product_type': 3,\n", + " 'product_type_name': 'Validation Results',\n", + " 'uploaded_by': 'gschwend',\n", + " 'is_owner': False,\n", + " 'internal_name': '10_goldenspike_bpz',\n", + " 'display_name': 'Goldenspike BPZ',\n", + " 'official_product': False,\n", + " 'pz_code': 'BPZ',\n", + " 'description': \"Results of photoz validation using BPZ on a mock test set from the example notebook goldenspike.ipynb available in RAIL's repository.\",\n", + " 'created_at': '2023-03-29T19:42:04.424990Z',\n", + " 'status': 1}]" + ] + }, + "execution_count": 10, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "search_results = pz_server.get_products_list(filters={\"product_type\": \"results\"}) # PZ Validation results\n", "search_results" ] }, { + "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ - "\n", - "## How to display the metadata of a data product\n", - " " + "
        \n", + "\n", + "[back to the top](#notebook-contents)\n", + "\n", + "
        \n", + "\n", + "## How to display the metadata of a data product " ] }, { + "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ @@ -341,6 +928,7 @@ ] }, { + "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ @@ -349,9 +937,77 @@ }, { "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], + "execution_count": 11, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
        keyvalue
        id6
        releaseLSST DP0
        product_typeTraining Set
        uploaded_bygschwend
        internal_name6_simple_training_set
        product_nameSimple training set
        official_productFalse
        pz_code
        descriptionA simple example training set created based on the Jupyter notebook simple_pz_training_set.ipynb created by Melissa Graham, available in the repository delegate-contributions-dp02. The file contains coordinates, redshifts, magnitudes, and errors, as an illustration of a typical training set for photo-z algorithms.
        created_at2023-03-23T19:46:48.807872Z
        main_filesimple_pz_training_set.csv
        \n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], "source": [ "# pz_server.display_product_metadata() \n", "# pz_server.display_product_metadata(6) \n", @@ -360,15 +1016,21 @@ ] }, { + "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ - "\n", - "## How to download data products as .zip files\n", - " " + "
        \n", + "\n", + "[back to the top](#notebook-contents)\n", + "\n", + "
        \n", + "\n", + "## How to download data products as .zip files " ] }, { + "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ @@ -377,20 +1039,35 @@ }, { "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], + "execution_count": 12, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Connecting to PZ Server...\n", + "File saved as: ./14_gama_specz_subsample_f15c0.zip\n", + "Done!\n" + ] + } + ], "source": [ "pz_server.download_product(14, save_in=\".\")" ] }, { + "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ - "\n", + "
        \n", + "\n", + "[back to the top](#notebook-contents)\n", + "\n", + "
        \n", + "\n", "## How to share data products with other RSP users\n", - " \n", "\n", "All data products uploaded to the PZ Server are imediately available and visible to all PZ Server users (people with RSP credentials) through the PZ Server website or via the API. Besides informing the product **id** or **internal_name** for programatic access, another way to share a data product is providing the product's URL, which leads to the product's download page. The URL is composed by the PZ Server website address + **/products/** + **internal_name**:\n", "\n", @@ -409,15 +1086,21 @@ ] }, { + "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ - "\n", - "## How to retrieve contents of data products (work on memory)\n", - " " + "
        \n", + "\n", + "[back to the top](#notebook-contents)\n", + "\n", + "
        \n", + "\n", + "## How to retrieve contents of data products (work on memory)" ] }, { + "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ @@ -428,9 +1111,28 @@ }, { "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], + "execution_count": 13, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Connecting to PZ Server...\n", + "Done!\n" + ] + }, + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 13, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "catalog = pz_server.get_product(8)\n", "catalog" @@ -438,14 +1140,84 @@ }, { "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], + "execution_count": 14, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
        keyvalue
        id8
        releaseNone
        product_typeTraining Set
        uploaded_bygschwend
        internal_name8_goldenspike_train_data_fits
        product_nameGoldenspike train data fits
        official_productFalse
        pz_code
        descriptionA mock training set created using the example notebook goldenspike.ipynb available in RAIL's repository. \r\n", + "Test upload of files in fits format.
        created_at2023-03-29T19:09:12.958883Z
        main_filegoldenspike_train_data.fits
        \n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], "source": [ "catalog.display_metadata()" ] }, { + "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ @@ -454,23 +1226,225 @@ }, { "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], + "execution_count": 15, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
        \n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
        redshiftmag_u_lsstmag_err_u_lsstmag_g_lsstmag_err_g_lsstmag_r_lsstmag_err_r_lsstmag_i_lsstmag_err_i_lsstmag_z_lsstmag_err_z_lsstmag_y_lsstmag_err_y_lsst
        00.76952126.4968520.28898625.8631700.05699724.7295550.02070223.6106830.01201123.1435180.01371422.9151560.024561
        11.08885726.2587270.23796425.5095240.04166824.4693440.01664823.5328600.01134422.5466800.00899222.0702550.012282
        21.33309825.3738550.11225724.9432930.02535924.5249980.01743124.0136490.01648623.7332740.02231523.1021230.028906
        ..........................................
        590.98637426.0506530.20016425.6416240.04683725.1610780.03009024.4601520.02404723.9772390.02756723.8319740.055121
        600.47428127.0480560.44468326.4282110.09385424.8399840.02275524.2092260.01940323.8550820.02478723.5074560.041329
        610.56192324.6804800.06118223.9586090.01143022.9001350.00634622.1435810.00582021.8675630.00646521.6126920.008967
        \n", + "

        62 rows × 13 columns

        \n", + "
        " + ], + "text/plain": [ + " redshift mag_u_lsst mag_err_u_lsst mag_g_lsst mag_err_g_lsst \n", + "0 0.769521 26.496852 0.288986 25.863170 0.056997 \\\n", + "1 1.088857 26.258727 0.237964 25.509524 0.041668 \n", + "2 1.333098 25.373855 0.112257 24.943293 0.025359 \n", + ".. ... ... ... ... ... \n", + "59 0.986374 26.050653 0.200164 25.641624 0.046837 \n", + "60 0.474281 27.048056 0.444683 26.428211 0.093854 \n", + "61 0.561923 24.680480 0.061182 23.958609 0.011430 \n", + "\n", + " mag_r_lsst mag_err_r_lsst mag_i_lsst mag_err_i_lsst mag_z_lsst \n", + "0 24.729555 0.020702 23.610683 0.012011 23.143518 \\\n", + "1 24.469344 0.016648 23.532860 0.011344 22.546680 \n", + "2 24.524998 0.017431 24.013649 0.016486 23.733274 \n", + ".. ... ... ... ... ... \n", + "59 25.161078 0.030090 24.460152 0.024047 23.977239 \n", + "60 24.839984 0.022755 24.209226 0.019403 23.855082 \n", + "61 22.900135 0.006346 22.143581 0.005820 21.867563 \n", + "\n", + " mag_err_z_lsst mag_y_lsst mag_err_y_lsst \n", + "0 0.013714 22.915156 0.024561 \n", + "1 0.008992 22.070255 0.012282 \n", + "2 0.022315 23.102123 0.028906 \n", + ".. ... ... ... \n", + "59 0.027567 23.831974 0.055121 \n", + "60 0.024787 23.507456 0.041329 \n", + "61 0.006465 21.612692 0.008967 \n", + "\n", + "[62 rows x 13 columns]" + ] + }, + "execution_count": 15, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "catalog.data" ] }, { "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], + "execution_count": 16, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "pandas.core.frame.DataFrame" + ] + }, + "execution_count": 16, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "type(catalog.data)" ] }, { + "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ @@ -479,23 +1453,241 @@ }, { "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], + "execution_count": 17, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "RangeIndex: 62 entries, 0 to 61\n", + "Data columns (total 13 columns):\n", + " # Column Non-Null Count Dtype\n", + "--- ------ -------------- -----\n", + " 0 redshift 62 non-null >f8 \n", + " 1 mag_u_lsst 61 non-null >f8 \n", + " 2 mag_err_u_lsst 61 non-null >f8 \n", + " 3 mag_g_lsst 62 non-null >f8 \n", + " 4 mag_err_g_lsst 62 non-null >f8 \n", + " 5 mag_r_lsst 62 non-null >f8 \n", + " 6 mag_err_r_lsst 62 non-null >f8 \n", + " 7 mag_i_lsst 62 non-null >f8 \n", + " 8 mag_err_i_lsst 62 non-null >f8 \n", + " 9 mag_z_lsst 62 non-null >f8 \n", + " 10 mag_err_z_lsst 62 non-null >f8 \n", + " 11 mag_y_lsst 61 non-null >f8 \n", + " 12 mag_err_y_lsst 61 non-null >f8 \n", + "dtypes: float64(13)\n", + "memory usage: 6.4 KB\n" + ] + } + ], "source": [ "catalog.data.info()" ] }, { "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], + "execution_count": 18, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
        \n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
        redshiftmag_u_lsstmag_err_u_lsstmag_g_lsstmag_err_g_lsstmag_r_lsstmag_err_r_lsstmag_i_lsstmag_err_i_lsstmag_z_lsstmag_err_z_lsstmag_y_lsstmag_err_y_lsst
        count62.00000061.00000061.00000062.00000062.00000062.00000062.00000062.00000062.00000062.00000062.00000061.00000061.000000
        mean0.78029825.4460080.18805024.8200000.03818224.0039700.01877023.3848040.01616523.0744810.02147822.9323540.054682
        std0.3553651.2692770.1937471.3141120.0363981.3873580.0137501.3815870.0100691.4006730.0149611.5402840.115875
        ..........................................
        50%0.76460025.5770290.13381525.0699700.02830924.4702150.01666023.7485060.01339023.5141850.01854023.2933840.034199
        75%0.94849426.2632840.23885925.7054860.04957624.9852250.02580224.4886540.02465024.1659440.03255723.9930100.063585
        max1.75576428.4823911.15407327.2961520.19819526.0369580.06536024.9496450.03693224.6931320.05188327.3421510.909230
        \n", + "

        8 rows × 13 columns

        \n", + "
        " + ], + "text/plain": [ + " redshift mag_u_lsst mag_err_u_lsst mag_g_lsst mag_err_g_lsst \n", + "count 62.000000 61.000000 61.000000 62.000000 62.000000 \\\n", + "mean 0.780298 25.446008 0.188050 24.820000 0.038182 \n", + "std 0.355365 1.269277 0.193747 1.314112 0.036398 \n", + "... ... ... ... ... ... \n", + "50% 0.764600 25.577029 0.133815 25.069970 0.028309 \n", + "75% 0.948494 26.263284 0.238859 25.705486 0.049576 \n", + "max 1.755764 28.482391 1.154073 27.296152 0.198195 \n", + "\n", + " mag_r_lsst mag_err_r_lsst mag_i_lsst mag_err_i_lsst mag_z_lsst \n", + "count 62.000000 62.000000 62.000000 62.000000 62.000000 \\\n", + "mean 24.003970 0.018770 23.384804 0.016165 23.074481 \n", + "std 1.387358 0.013750 1.381587 0.010069 1.400673 \n", + "... ... ... ... ... ... \n", + "50% 24.470215 0.016660 23.748506 0.013390 23.514185 \n", + "75% 24.985225 0.025802 24.488654 0.024650 24.165944 \n", + "max 26.036958 0.065360 24.949645 0.036932 24.693132 \n", + "\n", + " mag_err_z_lsst mag_y_lsst mag_err_y_lsst \n", + "count 62.000000 61.000000 61.000000 \n", + "mean 0.021478 22.932354 0.054682 \n", + "std 0.014961 1.540284 0.115875 \n", + "... ... ... ... \n", + "50% 0.018540 23.293384 0.034199 \n", + "75% 0.032557 23.993010 0.063585 \n", + "max 0.051883 27.342151 0.909230 \n", + "\n", + "[8 rows x 13 columns]" + ] + }, + "execution_count": 18, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "catalog.data.describe()" ] }, { + "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ @@ -504,9 +1696,207 @@ }, { "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], + "execution_count": 19, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Connecting to PZ Server...\n", + "\n" + ] + }, + { + "data": { + "text/html": [ + "
        \n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
        redshiftmag_u_lsstmag_err_u_lsstmag_g_lsstmag_err_g_lsstmag_r_lsstmag_err_r_lsstmag_i_lsstmag_err_i_lsstmag_z_lsstmag_err_z_lsstmag_y_lsstmag_err_y_lsst
        00.76952126.4968520.28898625.8631700.05699724.7295550.02070223.6106830.01201123.1435180.01371422.9151560.024561
        11.08885726.2587270.23796425.5095240.04166824.4693440.01664823.5328600.01134422.5466800.00899222.0702550.012282
        21.33309825.3738550.11225724.9432930.02535924.5249980.01743124.0136490.01648623.7332740.02231523.1021230.028906
        ..........................................
        590.98637426.0506530.20016425.6416240.04683725.1610780.03009024.4601520.02404723.9772390.02756723.8319740.055121
        600.47428127.0480560.44468326.4282110.09385424.8399840.02275524.2092260.01940323.8550820.02478723.5074560.041329
        610.56192324.6804800.06118223.9586090.01143022.9001350.00634622.1435810.00582021.8675630.00646521.6126920.008967
        \n", + "

        62 rows × 13 columns

        \n", + "
        " + ], + "text/plain": [ + " redshift mag_u_lsst mag_err_u_lsst mag_g_lsst mag_err_g_lsst \n", + "0 0.769521 26.496852 0.288986 25.863170 0.056997 \\\n", + "1 1.088857 26.258727 0.237964 25.509524 0.041668 \n", + "2 1.333098 25.373855 0.112257 24.943293 0.025359 \n", + ".. ... ... ... ... ... \n", + "59 0.986374 26.050653 0.200164 25.641624 0.046837 \n", + "60 0.474281 27.048056 0.444683 26.428211 0.093854 \n", + "61 0.561923 24.680480 0.061182 23.958609 0.011430 \n", + "\n", + " mag_r_lsst mag_err_r_lsst mag_i_lsst mag_err_i_lsst mag_z_lsst \n", + "0 24.729555 0.020702 23.610683 0.012011 23.143518 \\\n", + "1 24.469344 0.016648 23.532860 0.011344 22.546680 \n", + "2 24.524998 0.017431 24.013649 0.016486 23.733274 \n", + ".. ... ... ... ... ... \n", + "59 25.161078 0.030090 24.460152 0.024047 23.977239 \n", + "60 24.839984 0.022755 24.209226 0.019403 23.855082 \n", + "61 22.900135 0.006346 22.143581 0.005820 21.867563 \n", + "\n", + " mag_err_z_lsst mag_y_lsst mag_err_y_lsst \n", + "0 0.013714 22.915156 0.024561 \n", + "1 0.008992 22.070255 0.012282 \n", + "2 0.022315 23.102123 0.028906 \n", + ".. ... ... ... \n", + "59 0.027567 23.831974 0.055121 \n", + "60 0.024787 23.507456 0.041329 \n", + "61 0.006465 21.612692 0.008967 \n", + "\n", + "[62 rows x 13 columns]" + ] + }, + "execution_count": 19, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "dataframe = pz_server.get_product(8, fmt=\"pandas\")\n", "print(type(dataframe))\n", @@ -515,9 +1905,46 @@ }, { "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], + "execution_count": 20, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Connecting to PZ Server...\n", + "\n" + ] + }, + { + "data": { + "text/html": [ + "
        Table length=62\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "
        redshiftmag_u_lsstmag_err_u_lsstmag_g_lsstmag_err_g_lsstmag_r_lsstmag_err_r_lsstmag_i_lsstmag_err_i_lsstmag_z_lsstmag_err_z_lsstmag_y_lsstmag_err_y_lsst
        float64float64float64float64float64float64float64float64float64float64float64float64float64
        0.769521057605743426.496851733359980.2889864016451496625.8631701801485930.056996849251325224.729555232665350.02070246989947576223.6106832612475230.01201139145700786723.143517979331420.01371427288818984422.9151560685081040.02456124411372624
        .......................................
        0.474280714988708527.0480560874079860.444682506357735426.4282112805191750.0938543394596348124.839983603182140.0227549353128951224.20922601749360.0194026127508123923.8550822431599340.0247873017109994123.5074559295742880.041328512368478044
        0.561922669410705624.6804795305431630.06118153192966563323.9586089979737020.0114295663681752622.9001349679331020.00634586977358199822.1435806332706240.00581963097081042821.8675628493294060.00646548086334226921.612691594536260.008966510628950788
        " + ], + "text/plain": [ + "\n", + " redshift mag_u_lsst mag_err_u_lsst ... mag_err_z_lsst mag_y_lsst mag_err_y_lsst \n", + " float64 float64 float64 ... float64 float64 float64 \n", + "------------------ ------------------ -------------------- ... -------------------- ------------------ --------------------\n", + "0.7695210576057434 26.49685173335998 0.28898640164514966 ... 0.013714272888189844 22.915156068508104 0.02456124411372624\n", + " ... ... ... ... ... ... ...\n", + "0.4742807149887085 27.048056087407986 0.4446825063577354 ... 0.02478730171099941 23.507455929574288 0.041328512368478044\n", + "0.5619226694107056 24.680479530543163 0.061181531929665633 ... 0.006465480863342269 21.61269159453626 0.008966510628950788" + ] + }, + "execution_count": 20, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "table = pz_server.get_product(8, fmt=\"astropy\")\n", "print(type(table))\n", @@ -525,6 +1952,7 @@ ] }, { + "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ @@ -534,7 +1962,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 21, "metadata": {}, "outputs": [], "source": [ @@ -542,6 +1970,7 @@ ] }, { + "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ @@ -549,16 +1978,21 @@ ] }, { + "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ - " \n", - "\n", + "
        \n", + "\n", + "[back to the top](#notebook-contents)\n", + "\n", + "
        \n", "\n", - "# Product types \n" + "# Product types " ] }, { + "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ @@ -567,25 +2001,71 @@ }, { "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], + "execution_count": 22, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "\n", + "
        \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
        Product typeDescription
        Spec-z CatalogCatalog of spectroscopic redshifts and positions (usually equatorial coordinates).
        Training SetTraining set for photo-z algorithms (tabular data). It usually contains magnitudes, errors, and true redshifts.
        Validation ResultsResults of a photo-z validation procedure (free format). Usually contains photo-z estimates (single estimates and/or pdf) of a validation set and photo-z validation metrics.
        Photo-z TableResults of a photo-z estimation procedure. If the data is larger than the file upload limit (200MB), the product entry stores only the metadata (instructions on accessing the data should be provided in the description field.
        \n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], "source": [ "pz_server.display_product_types()" ] }, { + "attachments": {}, "cell_type": "markdown", "metadata": { "tags": [] }, "source": [ - "\n", - "## Spec-z Catalog \n", - " " + "
        \n", + "\n", + "[back to the top](#notebook-contents)\n", + "\n", + "
        \n", + "\n", + "## Spec-z Catalog " ] }, { + "attachments": {}, "cell_type": "markdown", "metadata": { "tags": [] @@ -606,6 +2086,7 @@ ] }, { + "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ @@ -614,23 +2095,101 @@ }, { "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], + "execution_count": 23, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Connecting to PZ Server...\n", + "Done!\n" + ] + } + ], "source": [ "gama = pz_server.get_product(14)" ] }, { "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], + "execution_count": 24, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
        keyvalue
        id14
        releaseNone
        product_typeSpec-z Catalog
        uploaded_bygschwend
        internal_name14_gama_specz_subsample
        product_nameGAMA spec-z subsample
        official_productFalse
        pz_code
        descriptionA small subsample of the GAMA DR3 spec-z catalog (Baldry et al. 2018) as an example of a typical spec-z catalog from the literature.
        created_at2023-03-29T20:02:45.223568Z
        main_filespecz_subsample_gama_example.csv
        \n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], "source": [ "gama.display_metadata()" ] }, { + "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ @@ -639,14 +2198,140 @@ }, { "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], + "execution_count": 25, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
        \n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
        IDRADECZERR_ZFLAG_DES
        count2.576000e+032576.0000002576.0000002576.0000002576.02576.000000
        mean1.105526e+06154.526343-1.1018650.22481199.03.949534
        std4.006668e+0470.7838682.9950360.1025710.00.218947
        .....................
        50%1.103558e+06180.140145-0.4808300.21780499.04.000000
        75%1.140619e+06215.8365831.1703630.29181099.04.000000
        max1.176440e+06223.4970802.9981800.72871799.04.000000
        \n", + "

        8 rows × 6 columns

        \n", + "
        " + ], + "text/plain": [ + " ID RA DEC Z ERR_Z \n", + "count 2.576000e+03 2576.000000 2576.000000 2576.000000 2576.0 \\\n", + "mean 1.105526e+06 154.526343 -1.101865 0.224811 99.0 \n", + "std 4.006668e+04 70.783868 2.995036 0.102571 0.0 \n", + "... ... ... ... ... ... \n", + "50% 1.103558e+06 180.140145 -0.480830 0.217804 99.0 \n", + "75% 1.140619e+06 215.836583 1.170363 0.291810 99.0 \n", + "max 1.176440e+06 223.497080 2.998180 0.728717 99.0 \n", + "\n", + " FLAG_DES \n", + "count 2576.000000 \n", + "mean 3.949534 \n", + "std 0.218947 \n", + "... ... \n", + "50% 4.000000 \n", + "75% 4.000000 \n", + "max 4.000000 \n", + "\n", + "[8 rows x 6 columns]" + ] + }, + "execution_count": 25, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "gama.data.describe()" ] }, { + "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ @@ -655,14 +2340,26 @@ }, { "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], + "execution_count": 26, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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5ebmStu2bZPuu+8+qXPnzlJlZaW+jtZyraZNmyZ5eHhIu3btkgoKCvSPiooKfZmmfvdqa2ulyMhIaciQIVJmZqa0efNmydfXV5o9e7Yl3hKZ0dq1ayW1Wi2tXLlSys7OlqZOnSp5enrqVwAbP368NGvWLH353377TXJwcJAWLVoknThxQpo3b57k6OgoHT9+3FJvweJMvYYLFy6UnJycpH//+98Gv5OlpaWWegsWZer1uxNXhTL9Gubn50tubm5ScnKydOrUKWnDhg2Sn5+f9Pbbb1vqLVgdJhY24IknnpACAwMlJycn6Z577pGeeOIJ6ezZs/rzN27ckJ577jnJy8tLcnV1lR599FGpoKDAghGLtXPnTglAvceECRMkSbq55Ozrr78u+fv7S2q1WnrooYekU6dOGdRx7do1acyYMVLbtm0ld3d3adKkSXb5YXW3a1VRUSENGTJE8vX1lRwdHaWQkBBpypQpBkulSlLruVYNXScA0ooVK/RljPndy8vLk4YOHSq5uLhIPj4+0vTp06WamhrB74bk8Mknn0gdOnSQnJycpJiYGGn//v36c3/605/0f4Nu+fbbb6UuXbpITk5OUvfu3aWNGzcKjtj6mHINQ0JCGvydnDdvnvjArYSpP4O3Y2Jxk6nXcN++fVJsbKykVqul8PBwacGCBVJtba3gqK2XQpIkSWAHCRERERER2SHOsSAiIiIiohZjYkFERERERC3GxIKIiIiIiFqMiQUREREREbUYEwsiIiIiImoxJhZERERERNRiTCyIiIiIiKjFmFgQEREREVGLMbEgsqBr167Bz88PeXl5jZbZtWsXFAoFioqKzNZudXU1QkNDcejQIbPVSURERK0bEwuiu5g4cSIUCgUUCgUcHR0RFhaGV155BZWVlfXKXrx4EU5OToiMjDS6/gULFuCRRx5BaGioGaNumpOTE15++WXMnDlTaLtERGScW18qNfZ48MEHLR0iUT1MLIiakJiYiIKCApw7dw4ffvghli1bhnnz5tUrt3LlSjz++OMoKSnBgQMHmqy3oqICy5cvx+TJk+UIu0ljx47F3r178fvvv1ukfSIiatz999+PgoKCeo9ly5ZBoVDgueees3SIRPUwsSBqglqtRkBAAIKDgzFy5EjEx8dj69atBmUkScKKFSswfvx4PPXUU1i+fHmT9W7atAlqtRr9+vWrd7xLly5wcXHBgw8+2OAwqb1792LAgAFwcXFBcHAwXnjhBZSXl+vPFxQUYPjw4XBxcUFYWBjWrFmD0NBQfPTRR/oyXl5e6N+/P9auXWvaBSEiItk5OTkhICDA4HH9+nW8/PLLmDNnDh577DFLh0hUDxMLIhNkZWVh3759cHJyMji+c+dOVFRUID4+HuPGjcPatWsNbvQbsmfPHvTu3dvg2IULFzBq1CiMGDECmZmZeOaZZzBr1iyDMjk5OUhMTMTo0aNx7NgxfPPNN9i7dy+Sk5P1ZZ5++mlcvnwZu3btwnfffYfPPvsMhYWF9WKIiYnBnj17TL0MREQkWFFRER555BEMGjQIb731lqXDIWqQg6UDILJ2GzZsQNu2bVFbW4uqqioolUr885//NCizfPlyPPnkk1CpVIiMjER4eDjWrVuHiRMnNlrv+fPnERQUZHBsyZIl6NixIz744AMAQNeuXXH8+HG8++67+jKpqakYO3YsXnzxRQBA586d8fHHH+NPf/oTlixZgry8PGzbtg0HDx5Enz59AAD/+te/0Llz53oxBAUF4fz58825LEREJIhOp8NTTz0FBwcHrF69GgqFwtIhETWIiQVREx588EEsWbIE5eXl+PDDD+Hg4IDRo0frzxcVFeH777/H3r179cfGjRuH5cuX3zWxuHHjBpydnQ2OnThxArGxsQbH4uLiDJ4fPXoUx44dw+rVq/XHJEmCTqdDbm4uTp8+DQcHB9x333368506dYKXl1e9GFxcXFBRUXH3C0BERBY1Z84cpKWlIT09HW5ubpYOh6hRTCyImtCmTRt06tQJAPDFF1+gZ8+eBpOu16xZg8rKSoOE4NaN/unTp9GlS5cG6/Xx8cH169dNjqesrAx/+9vf8MILL9Q716FDB5w+fdrourRaLXx9fU2OgYiIxFi7di0WLVqEjRs3NtjzTGRNOMeCyARKpRJz5szBa6+9hhs3bgC4OQxq+vTpyMzM1D+OHj2KAQMG4Isvvmi0rujoaGRnZxscu/fee5Genm5wbP/+/QbP77vvPmRnZ6NTp071Hk5OTujatStqa2tx5MgR/WvOnj3bYBKTlZWF6Ohok68DERHJLzMzE5MnT8bChQuRkJBg6XCImsTEgshEjz32GFQqFRYvXozMzEwcPnwYzzzzDCIjIw0eY8aMwapVq1BbW9tgPQkJCfj9998NbvifffZZnDlzBjNmzMCpU6ewZs0arFy50uB1M2fOxL59+5CcnIzMzEycOXMGP/74o37ydrdu3RAfH4+pU6ciPT0dR44cwdSpU+Hi4lJvXO6ePXswZMgQ814gIiJqsatXr2LkyJEYNGgQxo0bB41GY/D4448/LB0iUT1MLIhM5ODggOTkZLz33ntYvHgxIiIi0K1bt3rlHn30URQWFmLTpk0N1hMVFYX77rsP3377rf5Yhw4d8N133+GHH35Az549sXTpUrzzzjsGr+vRowd2796N06dPY8CAAYiOjsbcuXMNJoJ/+eWX8Pf3x8CBA/Hoo49iypQpcHNzM5jTkZaWhuLiYvzP//xPSy8JERGZ2caNG3H+/Hls2rQJgYGB9R59+/a1dIhE9SgkSZIsHQRRa7Vx40bMmDEDWVlZUCrly/MvXryI4OBgbNu2DQ899BAA4IknnkDPnj0xZ84c2dolIiKi1oOTt4ksaPjw4Thz5gwuXbqE4OBgs9W7Y8cOlJWVISoqCgUFBXjllVcQGhqKgQMHAgCqq6sRFRWFl156yWxtEhERUevGHgsiO/TLL79g+vTpOHfuHNzc3HD//ffjo48+QkhIiKVDIyIiIjvFxIKIiIiIiFqMk7eJiIiIiKjFmFgQEREREVGLMbEgIiIiIqIWY2JBREREREQtxsSCiIiIiIhajIkFERERERG1GBMLIiIiIiJqMSYWRERERETUYkwsiIiIiIioxf4/O2YF53D9HiQAAAAASUVORK5CYII=", + "text/plain": [ + "
        " + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], "source": [ "gama.plot()" ] }, { + "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ @@ -671,20 +2368,46 @@ }, { "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], + "execution_count": 27, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 27, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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1Dbh39Y61DmbkRIfjTxLcpe9OBW1TZe8n0JToNdvJj4XYeJDRKROTFLIl0Cv39261VVfX4/CwkI4HI5LXrPb7V2+RkRE1FMDU+Jwy5BUJj3UI91KfP7whz9g69atnWZSJpMJX3/9NQoLC4MWHBEREVEwdSvx+dvf/obZs2d3+fqjjz6Kv/71rz0OioiIiEgO3Up8jh49iqysrC5fz8rKwtGjR3scFBEREZEcupX4hIeHo6qqqsvXq6qqEBbGGfJERESkTt3KUnJzc/Hhhx92+fqGDRuQm8saCERERKRO3VqkdN68efjJT36C/v37Y86cOQgP/2E9k/b2dvzxj3/Ea6+9hj/96U+yBEpERETUU92u4/P0009j+fLlSEhIgMViAQBYrVY4nU48+eSTeOmll2QJVCms40NERBR6ZC1guGvXLrz77rsoLy+HJEm48sor8cADD2DkyJE9CloNmPgQERGFnkCv39261eU2cuRITSQ5REREpC/dGtz88ssv49y5c57vt23bhubmZs/3jY2NeOyxx4IXncZZbU5sOVKDitomz/dFu46j8IsyvLfruOf5C197b9dxbP3e5vU+IiIiCky3bnWFh4fj9OnTSE1NBQAYjUaUlJR4xvqcOXMGaWlpaG9vlydaBch5q8tqc2JnxVmca2nDv0qrsbuy3vOaKSYC9nNtl7wnJ82IXlHhXtteyL1Qnyk2MqixEhERhRJZbnVdnCNxfdPANLhaMGP1LhSfsHe5TWdJDwAcrPK99tm28lrMLyrGupm89UhEROQPqw3KrMHVgptXfOkz6emJdknC1jIbb3sREREFgImPzB5Zuwf2c62yt3OoSp7EioiISEu6PavrnXfeQXx8PACgra0Na9asQUpKCoAfBjfTf1ltTuw51vnYnGBbu70Sd1ybpkhbREREoapbic+AAQPw9ttve77v27cv/u///u+SbegHx866FGtrd2U9KmqbMDAlTrE2iYiIQk23Ep/KykqZwgiu5uZm5OXlYf/+/SguLsZ1110nJI6M3rGKtldZx8SHiIjIl26P8eno6MCqVatwxx13IDs7Gzk5Obj77ruxbt061czy+uUvf4m0NPG3fSzmeGRfoVz158xkJj1ERES+dCvxkSQJd955Jx555BGcOnUKOTk5uOaaa1BZWYnp06fjnnvukSvOgP3rX//CZ599hldeeUV0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", + "text/plain": [ + "
        " + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], "source": [ "gama.data.plot(x=\"RA\", y=\"DEC\", kind=\"scatter\") " ] }, { + "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ - "\n", + "
        \n", + "\n", + "[back to the top](#notebook-contents)\n", + "\n", + "
        \n", + "\n", "## Training Sets \n", - " \n", " \n", "In the context of the PZ Server, Training Sets are defined as the product of matching (spatially) a given Spec-z Catalog (single survey or compilation) to the photometric data, in this case, the LSST Objects Catalog. The PZ Server API offers a tool called _Training Set Maker_ for users to build customized Training Sets based on the Spec-z Catalogs available. Please see the companion Jupyter Notebook `pz_tsm_tutorial.ipynb` for details. \n", "\n", @@ -711,27 +2434,106 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 28, "metadata": { "tags": [] }, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Connecting to PZ Server...\n", + "Done!\n" + ] + } + ], "source": [ "train_goldenspike = pz_server.get_product(9)" ] }, { "cell_type": "code", - "execution_count": null, + "execution_count": 29, "metadata": { "tags": [] }, - "outputs": [], + "outputs": [ + { + "data": { + "text/html": [ + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
        keyvalue
        id9
        releaseNone
        product_typeTraining Set
        uploaded_bygschwend
        internal_name9_goldenspike_train_data_hdf5
        product_nameGoldenspike train data hdf5
        official_productFalse
        pz_code
        descriptionA mock training set created using the example notebook goldenspike.ipynb available in RAIL's repository. \r\n", + "Test upload of files in hdf5 format.
        created_at2023-03-29T19:12:59.746096Z
        main_filegoldenspike_train_data.hdf5
        \n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], "source": [ "train_goldenspike.display_metadata()" ] }, { + "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ @@ -740,14 +2542,205 @@ }, { "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], + "execution_count": 30, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
        \n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
        mag_err_g_lsstmag_err_i_lsstmag_err_r_lsstmag_err_u_lsstmag_err_y_lsstmag_err_z_lsstmag_g_lsstmag_i_lsstmag_r_lsstmag_u_lsstmag_y_lsstmag_z_lsstredshift
        count62.00000062.00000062.00000061.00000061.00000062.00000062.00000062.00000062.00000061.00000061.00000062.00000062.000000
        mean0.0381820.0161650.0187700.1880500.0546820.02147824.82000023.38480424.00397025.44600822.93235423.0744810.780298
        std0.0363980.0100690.0137500.1937470.1158750.0149611.3141121.3815871.3873581.2692771.5402841.4006730.355365
        ..........................................
        50%0.0283090.0133900.0166600.1338150.0341990.01854025.06997023.74850624.47021525.57702923.29338423.5141850.764600
        75%0.0495760.0246500.0258020.2388590.0635850.03255725.70548624.48865424.98522526.26328423.99301024.1659440.948494
        max0.1981950.0369320.0653601.1540730.9092300.05188327.29615224.94964526.03695828.48239127.34215124.6931321.755764
        \n", + "

        8 rows × 13 columns

        \n", + "
        " + ], + "text/plain": [ + " mag_err_g_lsst mag_err_i_lsst mag_err_r_lsst mag_err_u_lsst \n", + "count 62.000000 62.000000 62.000000 61.000000 \\\n", + "mean 0.038182 0.016165 0.018770 0.188050 \n", + "std 0.036398 0.010069 0.013750 0.193747 \n", + "... ... ... ... ... \n", + "50% 0.028309 0.013390 0.016660 0.133815 \n", + "75% 0.049576 0.024650 0.025802 0.238859 \n", + "max 0.198195 0.036932 0.065360 1.154073 \n", + "\n", + " mag_err_y_lsst mag_err_z_lsst mag_g_lsst mag_i_lsst mag_r_lsst \n", + "count 61.000000 62.000000 62.000000 62.000000 62.000000 \\\n", + "mean 0.054682 0.021478 24.820000 23.384804 24.003970 \n", + "std 0.115875 0.014961 1.314112 1.381587 1.387358 \n", + "... ... ... ... ... ... \n", + "50% 0.034199 0.018540 25.069970 23.748506 24.470215 \n", + "75% 0.063585 0.032557 25.705486 24.488654 24.985225 \n", + "max 0.909230 0.051883 27.296152 24.949645 26.036958 \n", + "\n", + " mag_u_lsst mag_y_lsst mag_z_lsst redshift \n", + "count 61.000000 61.000000 62.000000 62.000000 \n", + "mean 25.446008 22.932354 23.074481 0.780298 \n", + "std 1.269277 1.540284 1.400673 0.355365 \n", + "... ... ... ... ... \n", + "50% 25.577029 23.293384 23.514185 0.764600 \n", + "75% 26.263284 23.993010 24.165944 0.948494 \n", + "max 28.482391 27.342151 24.693132 1.755764 \n", + "\n", + "[8 rows x 13 columns]" + ] + }, + "execution_count": 30, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "train_goldenspike.data.describe()" ] }, { + "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ @@ -756,20 +2749,36 @@ }, { "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], + "execution_count": 31, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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sfr4448VFhamdevWafny5ZKkH3/8US1btqz3cdatW+f0eMmSJYqMjNSOHTuUkpKiXr16OU0H7Ny5sx577DH99re/1enTp3XBBfwq5EnRoVafLuQ8n3tAc97dI0PcQRBwJabvAQAAAPCYjIwMjR8/Xh07dlRMTIxSU1MlnZnWl5SU1OjjVk3LqxqFVVubtm3bUpBCgzy/+YCy/luQkv53B8EiW7mpuQB/0KhP40OHDslisahjx46SpE8//VRLly5Vjx49dOutt7o0IADA99FvAACq3Hnnnbrssst06NAhDR06VAEBZ/5O3qlTpwatKXU2u92ujIwMDR48WL169aqxTXFxsR555JHz9jsVFRWqqKhwPC4pKWlUHviPIlu55rxb/c6QVXcQbOzoL6YCAmc0aqTUuHHjtGnTJknSkSNHNHToUH366ae677779PDDD7s0IADA99FvAADO1r9/f11//fVq06aNKisrlZeXp0GDBmnw4MGNOl56erry8/MdUwHPVVJSohEjRqhHjx566KGHaj1OVlaWQkNDHVtsbGyj8sB/FBSXyjCq7w+QGn0HwRXbCjV4zkaNW/SJBs/ZqBXbCpsWEvBhjSpK5efn67LLLpMkvfbaa+rVq5c++ugjvfrqq1qyZIkr8wEA/AD9BgCgSkZGhl588UVJUmVlpa644gpdeumlio2NVU5OToOPN2XKFK1du1abNm1yjMg92/HjxzVs2DCFhIQoOztbLVq0qPVYmZmZstlsju3QoUMNzgP/khjeWgGW6vvvHd69USOcimzlyly5W/b/FrqYCojmrlFFqVOnTik4OFiStGHDBv3qV7+SJHXv3l1FRUWuSwcA8Av0GwCAKm+88Yb69OkjSXrrrbdUUFCgPXv26K677tJ9991X7+MYhqEpU6YoOztbGzduVGJiYrU2JSUlSktLU1BQkNasWVPnQurBwcFq27at04bmLTrUqqzRSQq0nKlMBVikzGu767YrOjfqeAXFpY6CVJWqqYBnK7KV66MDxRSr4PcataZUz5499dxzz2nEiBFav369HnnkEUnS4cOH1b59e5cGBAD4PvoNAECV4uJiRUVFSZLeeecd3Xjjjeratat+//vf6+mnn673cdLT07V06VKtXr1aISEhOnLkiCQpNDRUVqvVUZAqKyvTK6+8opKSEscaUREREQoMDHT9yXkZ1i1yjbHJcUrpGqGDxWVKCG/VpPeyauTV2YWpQIvFaSrgim2FjtFU3OkP/q5RI6Xmzp2r559/Xqmpqbrpppscf+lYs2aNY3oGAABV6DcAAFU6dOigzz//XJWVlVq3bp2GDh0qSSorK2tQoWjhwoWy2WxKTU1VdHS0Y1uxYoUkaefOnfrkk0+0e/dudenSxalNc5iWx7pFrhUdatXAzu2bXNw7d+RVoMWi2aN7OY7L9D40N40aKZWamqri4mKVlJTowgsvdOy/9dZb1bp1a5eFAwD4B/oNAECVSZMmacyYMYqOjpbFYtGQIUMkSZ988om6d+9e7+MYNa0+fZbU1NQ62/ir2gobKV0jGDHlBc438up80/u4dvBHjRopddVVV+n48eNOv1hIUlhYmMaOHeuSYAAA/0G/AQCo8tBDD+n//b//p1tvvVVbtmxxrDkYGBioGTNmmJzOP9R33SKYp7aRVzUtrH7u9D7AnzRqpFROTo5OnjxZbf9PP/2kf/7zn00OBQDwL/QbAICz/frXv662b+LEiSYk8U/1WbcI3qlqet/MlfmqNIxq0/sAf9OgotRnn33m+Przzz93LCYoyTEn/Gc/+5nr0gEAfBr9BgBAkv72t7/Vu+20adPcmKR5oLDh21K6Rmjeb/oowGLRpfEXct3g1xpUlLrkkktksVhksVh01VVXVXvearVq/vz5LgsHAPBt9BsAAEl66qmn6tXOYrFQlHIRV94xDp7DnffQ3DSoKFVQUCDDMNSpUyd9+umnioiIcDwXFBSkyMjIZnFrVQBA/dBvAACkM/0BPC861EoxyoewQD2aowYVpeLj4yVJdrvdLWEAwAwJM96uV7uDc0a4OYn/od8AADRW27ZtlZeXp06dOpkdBfAI7ryH5qhRC51L0r59+7Rp0yZ999131X7ZeOCBB5ocDADgX+g3AAANYRhG3Y0AP8IC9WiOGlWUWrRoke644w6Fh4crKipKFsv/7llpsVj45QIA4IR+AwAA4PxYoB7NUaOKUo8++qgee+wx3Xvvva7OAwDwQ/QbAAAAdWOBejQ3jSpK/fjjj7rxxhtdnQUA4KfoNwAAAOqHBerRnAQ05kU33nij3n//fVdnAQD4KfoNAEBDnT3VG65RZCvXRweKVWQrNzsKAEhq5EipLl266P7779fWrVuVlJSkFi1aOD0/bdo0l4QDAPgH+g0AQEOx0LlrrdhWqMyVu2U3pACLlDU6SWOT48yOBaCZa1RR6oUXXlCbNm2Um5ur3Nxcp+csFgu/XAAAnNBvAAAa6t1339XPfvYzs2P4hSJbuaMgJZ25u9vMlflK6RrBNDEApmpUUaqgoMDVOQAAfox+AwCat+nTp+uRRx5R69atNX369PO2ffLJJyVJv/jFLzwRrVkoKC51FKSqVBqGDhaXUZQCYKpGFaUAAAAAoL527dqlU6dOOb6uDetIuUdieGsFWORUmAq0WJQQ3sq8UACgRhalfv/735/3+ZdeeqlRYQAA/ol+AwCat02bNtX49fl88803iomJUUBAo+7NhLNEh1qVNTpJM1fmq9IwFGixaPboXoySAmC6RhWlfvzxR6fHp06dUn5+vo4dO6arrrrKJcEAAP6DfgMA0FA9evRQXl6eOnXqZHYUvzA2OU4pXSN0sLhMCeGtKEgB8AqNKkplZ2dX22e323XHHXeoc+fOTQ4FAPAv9BsAgIbi7nuuFx1qpRgFwKu4bCxsQECApk+frqeeespVhwQA+LGm9htz5syRxWJRRkaGa4MBAAAA8AiXTtA+cOCATp8+7cpDAgD8WGP7jW3btun5559X79693ZAKAAAAgCc0avreubdxNQxDRUVFevvttzVx4kSXBAMA+A9X9hsnTpzQ+PHjtWjRIj366KOujAkAAADAgxpVlDr3Nq4BAQGKiIjQX//61zrvsAQAaH5c2W+kp6drxIgRGjJkSJ1FqYqKClVUVDgel5SUNOh7AQDMY7FYzI4AAHCzRhWl6nsbVwAAJNf1G8uXL9fOnTu1bdu2erXPysrSrFmzXPK9gZokzHjbpcc7OGeES48H+DIWOgcA/9eoolSV//znP9q7d68kqVu3boqIiHBJKACAf2pKv3Ho0CH98Y9/1Pr169WyZct6vSYzM9Np6mBJSYliY2MbFhoAYIrPP/9cMTExZscAALhRo4pSpaWlmjp1qv7+97/LbrdLkgIDA/W73/1O8+fPV6tWrVwaEgDg21zRb+zYsUPfffedLr30Use+yspKbd68Wc8884wqKioUGBjo9Jrg4GAFBwe79mQAAE1y/fXX1zg1z2KxqGXLlurSpYvGjRunbt26mZAOAOBJjbr73vTp05Wbm6u33npLx44d07Fjx7R69Wrl5ubqT3/6k6szAgB8nCv6jauvvlq7d+9WXl6eY+vfv7/Gjx+vvLy8agUpAIB3Cg0N1caNG7Vz505ZLBZZLBbt2rVLGzdu1OnTp7VixQr16dNHW7ZsMTsqAMDNGjVS6s0339Qbb7yh1NRUx75rr71WVqtVY8aM0cKFC12VDwDgB1zRb4SEhKhXr15O+1q3bq327dtX2w8A8F5RUVEaN26cnnnmGQUEnPkbud1u1x//+EeFhIRo+fLluv3223Xvvffqww8/NDktAMCdGjVSqqysTB06dKi2PzIyUmVlZU0OBQDwL/QbAIAqL774ojIyMhwFKenMXVmnTp2qF154QRaLRVOmTFF+fr6JKQEAntCootTAgQP14IMP6qeffnLsKy8v16xZszRw4ECXhQMA+Ad39Rs5OTmaN2+eCxICADzl9OnT2rNnT7X9e/bsUWVlpSSpZcuWNa47BQDwL42avjdv3jwNGzZMHTt2VJ8+fSRJ//rXvxQcHKz333/fpQEBAL6PfgMAUGXChAm65ZZbNHPmTCUnJ0uStm3bptmzZ+t3v/udJCk3N1c9e/Y0MyYAwAMaVZRKSkrSvn379Oqrrzr+ynHTTTdp/PjxslqtLg0IAPB99BsAgCpPPfWUOnTooMcff1xHjx6VJHXo0EF33XWX7r33XklSWlqahg0bZmZMAIAHNKoolZWVpQ4dOmjy5MlO+1966SX95z//cXQmAABI9BsAgP8JDAzUfffdp/vuu08lJSWSpLZt2zq1iYuLMyMaAMDDGrWm1PPPP6/u3btX29+zZ08999xzTQ4FAPAv9BsAgJq0bdu2WkEKANB8NGqk1JEjRxQdHV1tf0REhIqKipocCgDgX+g3AABne+ONN/Taa6+psLBQJ0+edHpu586dJqUCAHhao0ZKxcbGasuWLdX2b9myRTExMU0OBQDwL/QbAIAqf/vb3zRp0iR16NBBu3bt0mWXXab27dvrq6++0vDhw82OBwDwoEYVpSZPnqyMjAwtXrxYX3/9tb7++mu99NJLuuuuu6qtF1Jfc+bMkcViUUZGRqNeDwDwXu7oNwAAvunZZ5/VCy+8oPnz5ysoKEh//vOftX79ek2bNk02m63ex8nKylJycrJCQkIUGRmpUaNGae/evU5tXnjhBaWmpqpt27ayWCw6duyYi88GANAUjZq+d8899+j777/XnXfe6Rhu27JlS917773KzMxs8PG2bdum559/Xr17925MHACAl3N1vwEA8F2FhYUaNGiQJMlqter48eOSpAkTJujnP/+5nnnmmXodJzc3V+np6UpOTtbp06c1c+ZMpaWl6fPPP1fr1q0lSWVlZRo2bJiGDRtGfwMAXqhRRSmLxaK5c+fq/vvv1xdffCGr1aqLLrpIwcHBDT7WiRMnNH78eC1atEiPPvpoY+IAALycK/sNAIBvi4qK0g8//KD4+HjFxcVp69at6tOnjwoKCmQYRr2Ps27dOqfHS5YsUWRkpHbs2KGUlBRJcszCyMnJcVV8AIALNaooVaVNmzZKTk5uUoD09HSNGDFCQ4YMqbMoVVFRoYqKCsfjqlvIAgB8gyv6DQCAb7vqqqu0Zs0a9e3bV5MmTdJdd92lN954Q9u3b9fo0aMbfdyqqX9hYWGNPga/bwCAZzWpKNVUy5cv186dO7Vt27Z6tc/KytKsWbPcnAoAAACAu7zwwguy2+2SzvyBOjw8XFu2bNGvfvUr3X777Y06pt1uV0ZGhgYPHqxevXo1Ohu/bwCAZzVqoXNXOHTokP74xz/q1VdfVcuWLev1mszMTNlsNsd26NAhN6cEAAAA4EoBAQE6ffq0Pv30U61du1ZWq1VDhgxRfHx8tSl59ZWenq78/HwtX768Sdn4fQMAPMu0kVI7duzQd999p0svvdSxr7KyUps3b9YzzzyjiooKBQYGOr0mODiY9UcAAAAAH7Zu3TpNmDBB33//fbXnLBaLKisrG3S8KVOmaO3atdq8ebM6duzYpGz8vgEAnmXaSKmrr75au3fvVl5enmPr37+/xo8fr7y8vGoFKQAAAAC+b+rUqRozZoyKiopkt9udtoYUpAzD0JQpU5Sdna2NGzcqMTHRjakBAO5g2kipkJCQavO9W7durfbt2zdpHjgAAAAA73X06FFNnz5dHTp0aNJx0tPTtXTpUq1evVohISE6cuSIJCk0NFRWq1WSdOTIER05ckT79++XJO3evVshISGKi4tr0oLoAADXMG2kFAAAAIDm59e//rVycnKafJyFCxfKZrMpNTVV0dHRjm3FihWONs8995z69u2ryZMnS5JSUlLUt29frVmzpsnfHwDQdKbefe9cruicAAAAAHivZ555RjfeeKP++c9/KikpSS1atHB6ftq0afU6jmEYdbZ56KGH9NBDDzUmJgDAA7yqKAUAAADAvy1btkzvv/++WrZsqZycHFksFsdzFoul3kUpAIDvoygFAAAAwGPuu+8+zZo1SzNmzFBAAKuJAEBzRi8AAAAAwGNOnjypsWPHUpACAFCUAgAAAOA5EydOdFqMHADQfDF9DwAAAIDHVFZW6vHHH9d7772n3r17V1vo/MknnzQpGbxBka1cBcWlSgxvrehQq9lxALgZRSkAAAAAHrN792717dtXkpSfn+/03NmLnqP5WbGtUJkrd8tuSAEWKWt0ksYmx5kdC4AbUZQCAAAA4DGbNm0yOwK8UJGt3FGQkiS7Ic1cma+UrhGMmAL8GGtKAQAAAABMVVBc6ihIVak0DB0sLjMnEACPoCgFAAAAADBVYnhrBZwzezPQYlFCeCtzAgHwCIpSAAAAAABTRYdalTU6SYH/XVcs0GLR7NG9mLoH+DnWlAIA+IyFCxdq4cKFOnjwoCSpZ8+eeuCBBzR8+HBzgwEAgCYbmxynlK4ROlhcpoTwVhSkgGaAohQAwGd07NhRc+bM0UUXXSTDMPTyyy/ruuuu065du9SzZ0+z4wEAgCaKDrVSjAKaEYpSAACfMXLkSKfHjz32mBYuXKitW7dSlAIAAAB8DEUpAIBPqqys1Ouvv67S0lINHDjQ7DgAAAAAGoiiFADAp+zevVsDBw7UTz/9pDZt2ig7O1s9evSosW1FRYUqKiocj0tKSjwVEwAAAEAdKEoBAHxKt27dlJeXJ5vNpjfeeEMTJ05Ubm5ujYWprKwszZo1y4SU1SXMeNtrv+fBOSNcejx/0JzOFQAAwCwBZgcAAKAhgoKC1KVLF/Xr109ZWVnq06ePnn766RrbZmZmymazObZDhw55OC0AAACA2jBSCgDg0+x2u9MUvbMFBwcrODjYw4kAAPB9RbZyFRSXKjG8NXfDA+A2FKUAAD4jMzNTw4cPV1xcnI4fP66lS5cqJydH7733ntnRAADwGyu2FSpz5W7ZDSnAImWNTtLY5DizYwHwQxSlAAA+47vvvtPvfvc7FRUVKTQ0VL1799Z7772noUOHmh0NAAC/UGQrdxSkJMluSDNX5iulawQjpgC4HEUpAIDPePHFF82OAACAXysoLnUUpKpUGoYOFpdRlALgcix0DgAAAACQJCWGt1aAxXlfoMWihPBW5gQC4NcoSgEAAAAAJEnRoVZljU5SoOVMZSrQYtHs0b0YJQXALZi+BwAAAABwGJscp5SuETpYXKaE8FYUpAC4DUUpAAAAAICT6FBrvYpRRbZyFRSXKjG8NcUrAA1GUQoAAAAA0GArthU67tQXYJGyRidpbHKc2bEA+BDWlAIAAAAANEiRrdxRkJIkuyHNXJmvIlu5ucEA+BSKUgAAAACABikoLnUUpKpUGoYOFpeZEwiAT2L6HuAlEma87fJjHpwzwrTv7S71zVrfc3fH9wYAAPB3ieGtFWCRU2Eq0GJRQngr80IB8DmMlAIAAAAANEh0qFVZo5MUaLFIOlOQmj26F4udA2gQRkoBAAAAABpsbHKcUrpG6GBxmRLCW1GQAtBgFKUAAAAAAI0SHWqlGAWg0Zi+BwAAAAAAAI+jKAUAAAAAAACPoygFAAAAwOdkZWUpOTlZISEhioyM1KhRo7R3716nNj/99JPS09PVvn17tWnTRjfccIOOHj1qUmIAwLkoSgEAAADwObm5uUpPT9fWrVu1fv16nTp1SmlpaSotLXW0ueuuu/TWW2/p9ddfV25urg4fPqzRo0ebmBoAcDYWOgcAAADgc9atW+f0eMmSJYqMjNSOHTuUkpIim82mF198UUuXLtVVV10lSVq8eLEuvvhibd26VT//+c/NiA0AOAsjpQAAAAD4PJvNJkkKCwuTJO3YsUOnTp3SkCFDHG26d++uuLg4ffzxx6ZkBAA4Y6QUAAAAAJ9mt9uVkZGhwYMHq1evXpKkI0eOKCgoSO3atXNq26FDBx05cqTG41RUVKiiosLxuKSkxG2ZAQCMlAIAAADg49LT05Wfn6/ly5c36ThZWVkKDQ11bLGxsS5KCACoCUUpAAAAAD5rypQpWrt2rTZt2qSOHTs69kdFRenkyZM6duyYU/ujR48qKiqqxmNlZmbKZrM5tkOHDrkzOgA0exSlAAAAAPgcwzA0ZcoUZWdna+PGjUpMTHR6vl+/fmrRooU++OADx769e/eqsLBQAwcOrPGYwcHBatu2rdMGAHAf1pQCAAAA4HPS09O1dOlSrV69WiEhIY51okJDQ2W1WhUaGqpbbrlF06dPV1hYmNq2baupU6dq4MCB3HkPALwERSkAAAAAPmfhwoWSpNTUVKf9ixcv1s033yxJeuqppxQQEKAbbrhBFRUVuuaaa/Tss896OCkAoDYUpQAAAAD4HMMw6mzTsmVLLViwQAsWLPBAIgBAQ7GmFAAAAAAAADyOohQAAAAAAAA8jqIUAAAAAAAAPI6iFAAAAAAAADyOohQAwGdkZWUpOTlZISEhioyM1KhRo7R3716zYwEAAABoBIpSAACfkZubq/T0dG3dulXr16/XqVOnlJaWptLSUrOjAQAAAGigC8wOAABAfa1bt87p8ZIlSxQZGakdO3YoJSXFpFQAAAAAGoORUgAAn2Wz2SRJYWFhJicBAAAA0FCMlAIA+CS73a6MjAwNHjxYvXr1qrFNRUWFKioqHI9LSko8FQ8AAABAHShKAQB8Unp6uvLz8/Xhhx/W2iYrK0uzZs3yYCrflDDjbbMjnJer83nz+dY328E5I9ycxP1cfR384T0BAKC5YfoeAMDnTJkyRWvXrtWmTZvUsWPHWttlZmbKZrM5tkOHDnkwJQAAAIDzYaQUAMBnGIahqVOnKjs7Wzk5OUpMTDxv++DgYAUHB3soHQAAAICGoCgFAPAZ6enpWrp0qVavXq2QkBAdOXJEkhQaGiqr1WpyOgAAAAANYer0vaysLCUnJyskJESRkZEaNWqU9u7da2YkAIAXW7hwoWw2m1JTUxUdHe3YVqxYYXY0AAAAAA1k6kip3NxcpaenKzk5WadPn9bMmTOVlpamzz//XK1btzYzGgDACxmGYXYEAAAAAC5ialFq3bp1To+XLFmiyMhI7dixQykpKSalAgAAAAAAgLt51ZpSNptNkhQWFlbj8xUVFaqoqHA8Likp8UguAAAAAAAAuJbXFKXsdrsyMjI0ePBg9erVq8Y2WVlZmjVrloeToakSZrxdr3YH54xwcxLPq++5++v3ry935PSVcwcAAACA5srUhc7Plp6ervz8fC1fvrzWNpmZmbLZbI7t0KFDHkwIAAAAAAAAV/GKkVJTpkzR2rVrtXnzZnXs2LHWdsHBwQoODvZgMgAAAAAAALiDqUUpwzA0depUZWdnKycnR4mJiWbGAQAAAAAAgIeYWpRKT0/X0qVLtXr1aoWEhOjIkSOSpNDQUFmtVjOjAQAAAAAAwI1MXVNq4cKFstlsSk1NVXR0tGNbsWKFmbEAAAAAAADgZqZP3wMAAAAAAEDz4zV33wMAAAAAAEDzQVEKAAAAAAAAHkdRCgAAAAAAAB5HUQoAAAAAAAAeR1EKAAAAAAAAHkdRCgAAAAAAAB5HUQoAAAAAAAAeR1EKAAAAAAAAHkdRCgAAAAAAAB5HUQoAAAAAAAAeR1EKAAAAAAAAHkdRCgAAAIDP2bx5s0aOHKmYmBhZLBatWrXK6fmjR4/q5ptvVkxMjFq1aqVhw4Zp37595oQFANSIohQAAAAAn1NaWqo+ffpowYIF1Z4zDEOjRo3SV199pdWrV2vXrl2Kj4/XkCFDVFpaakJaAEBNLjA7AAAAAAA01PDhwzV8+PAan9u3b5+2bt2q/Px89ezZU5K0cOFCRUVFadmyZfrDH/7gyagAgFowUgoAAACAX6moqJAktWzZ0rEvICBAwcHB+vDDD8/7upKSEqcNAOA+FKUAAAAA+JXu3bsrLi5OmZmZ+vHHH3Xy5EnNnTtX33zzjYqKimp9XVZWlkJDQx1bbGysB1MDQPNDUQoAAACAX2nRooVWrlypL7/8UmFhYWrVqpU2bdqk4cOHKyCg9l+BMjMzZbPZHNuhQ4c8mBoAmh/WlAIAAADgd/r166e8vDzZbDadPHlSERERGjBggPr371/ra4KDgxUcHOzBlADQvDFSCgAAAIDfCg0NVUREhPbt26ft27fruuuuMzsSAOC/KEoBAHzG5s2bNXLkSMXExMhisWjVqlVmRwIAmOTEiRPKy8tTXl6eJKmgoEB5eXkqLCyUJL3++uvKycnRV199pdWrV2vo0KEaNWqU0tLSTEwNADgbRSkAgM8oLS1Vnz59tGDBArOjAABMtn37dvXt21d9+/aVJE2fPl19+/bVAw88IEkqKirShAkT1L17d02bNk0TJkzQsmXLzIwMADgHa0oBAHzG8OHDNXz4cLNjAAC8QGpqqgzDqPX5adOmadq0aR5MBABoKEZKAQAAAAAAwOMYKQUA8FsVFRWqqKhwPC4pKTExDQAAAICzUZQCAPitrKwszZo1y63fI2HG2249vj/jvWu8+r53B+eMcHOSmnnztXV1Nle/x67MZ9b1BwCgvpi+BwDwW5mZmbLZbI7t0KFDZkcCAAAA8F+MlAIA+K3g4GAFBwebHQMAAABADShKAQB8xokTJ7R//37H44KCAuXl5SksLExxcXEmJgMAAADQUM2iKNWQufnMvfcN3r6WBgD32L59u6688krH4+nTp0uSJk6cqCVLlpiUCgAAAEBjNIuiFADAP6SmpsowDLNjAAAAAHABFjoHAAAAAACAx1GUAgAAAAAAgMdRlAIAAAAAAIDHUZQCAAAAAACAx1GUAgAAAAAAgMdRlAIAAAAAAIDHUZQCAAAAAACAx1GUAgAAAAAAgMdRlAIAAAAAAIDHUZQCAAAAAACAx1GUAgAAAAAAgMdRlAIAAAAAAIDHUZQCAAAAAACAx1GUAgAAAAAAgMdRlAIAAAAAAIDHUZQCAAAAAACAx1GUAgAAAAAAgMdRlAIAAAAAAIDHUZQCAAAAAACAx1GUAgAAAAAAgMdRlAIAAAAAAIDHUZQCAAAAgGaoyFaujw4Uq8hWbnYUAM3UBWYHAAAAAAB41opthcpcuVt2QwqwSFmjkzQ2Oc7sWACaGUZKAQAAAEAzUmQrdxSkJMluSDNX5jNiCoDHUZQCAAAAgGakoLjUUZCqUmkYOlhcZk4gAM0WRSkAAAAAaEYSw1srwOK8L9BiUUJ4K3MCAWi2KEoBAAAA8DmbN2/WyJEjFRMTI4vFolWrVjk9f+LECU2ZMkUdO3aU1WpVjx499Nxzz5kT1stEh1qVNTpJgZYzlalAi0WzR/dSdKjV5GQAmhsWOgcAAADgc0pLS9WnTx/9/ve/1+jRo6s9P336dG3cuFGvvPKKEhIS9P777+vOO+9UTEyMfvWrX5mQ2LuMTY5TStcIHSwuU0J4KwpSAEzhFSOlFixYoISEBLVs2VIDBgzQp59+anYkAIAXo98AAAwfPlyPPvqorr/++hqf/+ijjzRx4kSlpqYqISFBt956q/r06UOfcZboUKsGdm5PQQqAaUwvSq1YsULTp0/Xgw8+qJ07d6pPnz665ppr9N1335kdDQDgheg3AAD1MWjQIK1Zs0bffvutDMPQpk2b9OWXXyotLa3W11RUVKikpMRpAwC4j+lFqSeffFKTJ0/WpEmTHPO8W7VqpZdeesnsaAAAL0S/AQCoj/nz56tHjx7q2LGjgoKCNGzYMC1YsEApKSm1viYrK0uhoaGOLTY21oOJAaD5MbUodfLkSe3YsUNDhgxx7AsICNCQIUP08ccfm5gMAOCN6DcAAPU1f/58bd26VWvWrNGOHTv017/+Venp6dqwYUOtr8nMzJTNZnNshw4d8mBiAGh+TF3ovLi4WJWVlerQoYPT/g4dOmjPnj3V2ldUVKiiosLx2GazSVKdw2rtFWX1zsQQXder7/vfkPfeHcd0h4b87Pmj+r7/zf19coe63vuq5w3D8EQcl/FUv9EQ/PzCm5nVD5rx78KsPsfV77Er87kym6/1G+Xl5Zo5c6ays7M1YsQISVLv3r2Vl5enJ554wumPG2cLDg5WcHCw43HV+Zr9f0oA8DX17Td86u57WVlZmjVrVrX9rhxWGzrPZYdCA7njved6mov33zz1fe+PHz+u0NBQt2Yxkyf6DcCbNafPYbPO1ZvfY3dk85V+49SpUzp16pQCApwnhgQGBsput9f7OMePH5dEvwEAjVVXv2FqUSo8PFyBgYE6evSo0/6jR48qKiqqWvvMzExNnz7d8dhut+uHH35QixYtFBcXp0OHDqlt27Zuz+1KJSUlio2NJbsH+Wpuiexm8NXc0vmzG4ah48ePKyYmxqR0jeOqfqN9+/ayWCwuzebLPyuS7+eXOAdvwTmYzx35vbHfOHHihPbv3+94XFBQoLy8PIWFhSkuLk5XXHGF7rnnHlmtVsXHxys3N1d///vf9eSTT9b7e8TExOjQoUMKCQmh3ziHr+eXOAdvwTmYz8x+w9SiVFBQkPr166cPPvhAo0aNknTmF4YPPvhAU6ZMqdb+3OG0ktSuXTvHsLC2bdv65A+ARHYz+Gpuiexm8NXcUu3ZfeEv3edyVb/hTr78syL5fn6Jc/AWnIP5XJ3f2/qN7du368orr3Q8rvojxMSJE7VkyRItX75cmZmZGj9+vH744QfFx8frscce0+23317v7xEQEKCOHTu6PPvZ+DkzH+fgHTgH85nRb5g+fW/69OmaOHGi+vfvr8suu0zz5s1TaWmpJk2aZHY0AIAXot8AAEhSamrqedcqiYqK0uLFiz2YCADQUKYXpcaOHav//Oc/euCBB3TkyBFdcsklWrduXbVFbAEAkOg3AAAAAH9helFKkqZMmVLjtIv6Cg4O1oMPPlhtioYvILvn+Wpuiexm8NXckm9nr0tT+w138PX329fzS5yDt+AczOfr+ZsLX79Ovp5f4hy8BedgPjPzWwxfua8rAAAAAAAA/EZA3U0AAAAAAAAA16IoBQAAAAAAAI+jKAUAAAAAAACP86mi1ObNmzVy5EjFxMTIYrFo1apVTs+fOHFCU6ZMUceOHWW1WtWjRw8999xz5oQ9R13Zjx49qptvvlkxMTFq1aqVhg0bpn379pkT9ixZWVlKTk5WSEiIIiMjNWrUKO3du9epzU8//aT09HS1b99ebdq00Q033KCjR4+alPh/6pP9hRdeUGpqqtq2bSuLxaJjx46ZE/YsdeX+4YcfNHXqVHXr1k1Wq1VxcXGaNm2abDabianPqM97ftttt6lz586yWq2KiIjQddddpz179piU+H/qk72KYRgaPnx4jf+WPa0+uVNTU2WxWJy222+/3aTEvmPBggVKSEhQy5YtNWDAAH366ae1tl20aJEuv/xyXXjhhbrwwgs1ZMiQau1vvvnmatdh2LBhXnMOS5YsqZavZcuWTm0Mw9ADDzyg6OhoWa1WDRkyxO19VUPOoaafdYvFohEjRjjaePI61NX31yQnJ0eXXnqpgoOD1aVLFy1ZsqRam4a8J03V0HNYuXKlhg4dqoiICLVt21YDBw7Ue++959TmoYceqnYNunfv7jXnkJOTU+PP0ZEjR5zaefN1qOnn3GKxqGfPno42nr4OzQH9Bv1GU9Fv0G+YdQ5m9hs+VZQqLS1Vnz59tGDBghqfnz59utatW6dXXnlFX3zxhTIyMjRlyhStWbPGw0mrO192wzA0atQoffXVV1q9erV27dql+Ph4DRkyRKWlpSak/Z/c3Fylp6dr69atWr9+vU6dOqW0tDSnXHfddZfeeustvf7668rNzdXhw4c1evRoE1OfUZ/sZWVlGjZsmGbOnGliUmd15T58+LAOHz6sJ554Qvn5+VqyZInWrVunW265xeTk9XvP+/Xrp8WLF+uLL77Qe++9J8MwlJaWpsrKShOT1y97lXnz5slisZiQsrr65p48ebKKiooc2+OPP25SYt+wYsUKTZ8+XQ8++KB27typPn366JprrtF3331XY/ucnBzddNNN2rRpkz7++GPFxsYqLS1N3377rVO7YcOGOV2HZcuWec05SFLbtm2d8n399ddOzz/++OP629/+pueee06ffPKJWrdurWuuuUY//fSTV5zDypUrnfLn5+crMDBQN954o1M7T12Huv7fcq6CggKNGDFCV155pfLy8pSRkaE//OEPTv85b8x19eQ5bN68WUOHDtU777yjHTt26Morr9TIkSO1a9cup3Y9e/Z0ugYffvihO+JLavg5VNm7d69TxsjISMdz3n4dnn76aafshw4dUlhYWLV/C568Dv6OfoN+wxXoN+g3XMWn+g3DR0kysrOznfb17NnTePjhh532XXrppcZ9993nwWR1Ozf73r17DUlGfn6+Y19lZaURERFhLFq0yISEtfvuu+8MSUZubq5hGIZx7Ngxo0WLFsbrr7/uaPPFF18Y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kyZNUkhIiLp06aJ3331XklRZWalbbrlFiYmJslqt6tatm55++mmnY54+fVrTpk1Tu3bt1L59e917772aOHGiRo0aVe9M9R1yezbDMPTQQw8pLi5OwcHBiomJ0bRp0xzPP/vss7rooovUsmVLdejQQb/+9a8lSTfffLNyc3P19NNPy2KxyGKx6ODBgw3+/gCA/0lNTdWUKVOUkZGh8PBwXXPNNcrPz9fw4cPVpk0bdejQQRMmTFBxcbHjNaWlpfrd736nNm3aKDo6Wn/961+rHbe2z/Iqdrtdf/7znxUWFqaoqCg99NBDTs+fPQ3DYrFox44devjhh2WxWJSamqpJkybJZrM5+oNzXw8AcA/6DaBuFKXgl15++WWFh4fr008/1dSpU3XHHXfoxhtv1KBBg7Rz506lpaVpwoQJKisrk91uV8eOHfX666/r888/1wMPPKCZM2fqtddecxxv7ty5evXVV7V48WJt2bJFJSUlTvOw3eXNN9/UU089peeff1779u3TqlWrlJSUJEnavn27pk2bpocfflh79+7VunXrlJKSIkl6+umnNXDgQE2ePFlFRUUqKipSbGys2/MCgL97+eWXFRQUpC1btmjOnDm66qqr1LdvX23fvl3r1q3T0aNHNWbMGEf7e+65R7m5uVq9erXef/995eTkaOfOnY7nz/dZfvb3bN26tT755BM9/vjjevjhh7V+/foa8xUVFalnz57605/+pKKiIq1Zs0bz5s1T27ZtHf3B3Xff7Z43BwBQDf0GcH5M34Nf6tOnj/7yl79IkjIzMzVnzhyFh4dr8uTJkqQHHnhACxcu1Geffaaf//znmjVrluO1iYmJ+vjjj/Xaa685Ooj58+crMzNT119/vSTpmWee0TvvvOP28ygsLFRUVJSGDBmiFi1aKC4uTpdddpnjudatW+uXv/ylQkJCFB8fr759+0qSQkNDFRQUpFatWlUbngsAaLyLLrpIjz/+uCTp0UcfVd++fTV79mzH8y+99JJiY2P15ZdfKiYmRi+++KJeeeUVXX311ZLO/KLQsWNHR/vzfZZX6d27tx588EHH93/mmWf0wQcfaOjQodXyRUVF6YILLlCbNm0cn/+hoaGyWCz0BwBgAvoN4PwYKQW/1Lt3b8fXgYGBat++vWOEkSR16NBBkvTdd99JkhYsWKB+/fopIiJCbdq00QsvvKDCwkJJks1m09GjRx3FoKpj9uvXz+3nceONN6q8vFydOnXS5MmTlZ2drdOnT0uShg4dqvj4eHXq1EkTJkzQq6++qrKyMrdnAoDm7OzP/n/961/atGmT2rRp49i6d+8u6cz6HAcOHNDJkyc1YMAAx2vCwsLUrVs3x+P6fJaf3adJUnR0tKP/AgB4N/oN4PwoSsEvnXunO4vF4rTPYrFIOjPfevny5br77rt1yy236P3331deXp4mTZqkkydPejRzTWJjY7V37149++yzslqtuvPOO5WSkqJTp04pJCREO3fu1LJlyxQdHa0HHnhAffr04S4ZAOBGrVu3dnx94sQJjRw5Unl5eU7bvn37qk2lqE19Pstr6tPsdrtLzgcA4F70G8D5UZRCs7dlyxYNGjRId955p/r27asuXbrowIEDjudDQ0PVoUMHbdu2zbGvsrLSaW63O1mtVo0cOVJ/+9vflJOTo48//li7d++WJF1wwQUaMmSIHn/8cX322Wc6ePCgNm7cKEkKCgpSZWWlRzICQHN06aWX6t///rcSEhLUpUsXp61169bq3LmzWrRooU8++cTxmh9//FFffvml03HO91nuCvQHAOAd6DeA6lhTCs3eRRddpL///e967733lJiYqH/84x/atm2bEhMTHW2mTp2qrKwsdenSRd27d9f8+fP1448/OkZcucuSJUtUWVmpAQMGqFWrVnrllVdktVoVHx+vtWvX6quvvlJKSoouvPBCvfPOO7Lb7Y7hvQkJCfrkk0908OBBtWnTRmFhYQoIoA4NAK6Snp6uRYsW6aabbnLc5Wj//v1avny5/t//+39q06aNbrnlFt1zzz1q3769IiMjdd999zl9Ftf1We4KCQkJOnHihD744AP16dNHrVq1UqtWrVx2fABA/dBvANXxGyqavdtuu02jR4/W2LFjNWDAAH3//fe68847ndrce++9uummm/S73/1OAwcOVJs2bXTNNdeoZcuWbs3Wrl07LVq0SIMHD1bv3r21YcMGvfXWW2rfvr3atWunlStX6qqrrtLFF1+s5557TsuWLVPPnj0lSXfffbcCAwPVo0cPRUREONbIAgC4RkxMjLZs2aLKykqlpaUpKSlJGRkZateuneMXiP/7v//T5ZdfrpEjR2rIkCH6xS9+4bS+SF2f5a4waNAg3X777Ro7dqwiIiIcC+4CADyLfgOozmIYhmF2CMDX2O12XXzxxRozZoweeeQRs+MAAAAAAOBzmL4H1MPXX3+t999/X1dccYUqKir0zDPPqKCgQOPGjTM7GgAAAAAAPonpe0A9BAQEaMmSJUpOTtbgwYO1e/dubdiwQRdffLEKCwudbut67nb2tLl//vOf520LAAAAAEBzwfQ9oIlOnz6tgwcP1vp8QkKCLrjgzKDE8vJyffvtt7W27dKli6vjAQAAAADglShKAQAAAAAAwOOYvgcAAAAAAACPoygFAAAAAAAAj6MoBQAAAAAAAI+jKAUAAAAAAACPoygFAAAAAAAAj6MoBQAAAAAAAI+jKAUAAAAAAACPoygFAAAAAAAAj/v/OlrI3uXdrPkAAAAASUVORK5CYII=", + "text/plain": [ + "
        " + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], "source": [ "train_goldenspike.plot(mag_name=\"mag_i_lsst\")" ] }, { + "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ - "\n", + "
        \n", + "\n", + "[back to the top](#notebook-contents)\n", + "\n", + "
        \n", + "\n", "## Photo-z Validation Results\n", - " \n", " \n", "Validation Results are the outputs of any photo-z algorithm applied on a Validation Set. The format and number of files of this data product are strongly dependent on the algorithm used to create it, so there are no constraints on these two parameters. In the case of multiple files, for instance, if the user includes the results of training procedures (e.g., neural nets weights, decision trees files, or any machine learning by-product) or additional files (SED templates, filter transmission curves, theoretical magnitudes grid, Bayesian priors, etc.), it will be required to put all files together in a single compressed file (.zip or .tar, or .tar.gz) before uploading it to the Photo-z Server. \n", "\n", @@ -778,14 +2787,83 @@ }, { "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], + "execution_count": 32, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
        idinternal_nameproduct_nameproduct_typereleaseuploaded_byofficial_productpz_codedescriptioncreated_at
        1212_goldenspike_knnGoldenspike KNNValidation ResultsNonegschwendFalseKNNResults of photoz validation using KNN on a mock test set from the example notebook goldenspike.ipynb available in RAIL's repository.2023-03-29T19:49:35.652295Z
        1111_goldenspike_flexzboostGoldenspike FlexZBoostValidation ResultsNonegschwendFalseFlexZBoostResults of photoz validation using FlexZBoost on a mock test set from the example notebook goldenspike.ipynb available in RAIL's repository.2023-03-29T19:48:34.864629Z
        1010_goldenspike_bpzGoldenspike BPZValidation ResultsLSST DP0gschwendFalseBPZResults of photoz validation using BPZ on a mock test set from the example notebook goldenspike.ipynb available in RAIL's repository.2023-03-29T19:42:04.424990Z
        \n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], "source": [ "pz_server.display_products_list(filters={\"product_type\": \"Validation Results\"})" ] }, { + "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ @@ -794,14 +2872,83 @@ }, { "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], + "execution_count": 33, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
        keyvalue
        id11
        releaseNone
        product_typeValidation Results
        uploaded_bygschwend
        internal_name11_goldenspike_flexzboost
        product_nameGoldenspike FlexZBoost
        official_productFalse
        pz_codeFlexZBoost
        descriptionResults of photoz validation using FlexZBoost on a mock test set from the example notebook goldenspike.ipynb available in RAIL's repository.
        created_at2023-03-29T19:48:34.864629Z
        main_filepz_valid_fzboost.tar.gz
        \n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], "source": [ "pz_server.display_product_metadata(\"11_goldenspike_flexzboost\")" ] }, { + "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ @@ -812,7 +2959,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 34, "metadata": {}, "outputs": [], "source": [ @@ -820,17 +2967,23 @@ ] }, { + "attachments": {}, "cell_type": "markdown", "metadata": { "tags": [] }, "source": [ - "\n", - "### Photo-z Tables \n", - " " + "
        \n", + "\n", + "[back to the top](#notebook-contents)\n", + "\n", + "
        \n", + "\n", + "### Photo-z Tables " ] }, { + "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ @@ -841,7 +2994,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 35, "metadata": {}, "outputs": [], "source": [ @@ -849,6 +3002,7 @@ ] }, { + "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ @@ -876,7 +3030,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.9.16" + "version": "3.10.10" }, "nbsphinx": { "execute": "never" diff --git a/docs/objects.inv b/docs/objects.inv index 216ae56..9cb6e45 100644 Binary files a/docs/objects.inv and b/docs/objects.inv differ diff --git a/docs/py-modindex.html b/docs/py-modindex.html index cea8f10..bf50d25 100644 --- a/docs/py-modindex.html +++ b/docs/py-modindex.html @@ -3,7 +3,7 @@ - Python Module Index — pzserver 0.1.dev1+ga41731a documentation + Python Module Index — pzserver 0.2.2.dev7+g095ab2f documentation @@ -35,7 +35,7 @@ pzserver
        - 0.1 + 0.2
      diff --git a/docs/search.html b/docs/search.html index b676dc3..370954f 100644 --- a/docs/search.html +++ b/docs/search.html @@ -3,7 +3,7 @@ - Search — pzserver 0.1.dev1+ga41731a documentation + Search — pzserver 0.2.2.dev7+g095ab2f documentation @@ -35,7 +35,7 @@ pzserver
      - 0.1 + 0.2
      @@ -50,7 +50,7 @@
    • Home page
    • Install
    • API Reference
    • -
    • Notebooks
    • +
    • Notebooks
  • diff --git a/docs/searchindex.js b/docs/searchindex.js index 542450d..6f8f2f2 100644 --- a/docs/searchindex.js +++ b/docs/searchindex.js @@ -1 +1 @@ -Search.setIndex({"docnames": ["autoapi/index", "autoapi/pzserver/catalog/index", "autoapi/pzserver/communicate/index", "autoapi/pzserver/core/index", "autoapi/pzserver/index", "index", "installation", "notebooks", "notebooks/intro_notebook"], "filenames": ["autoapi/index.rst", "autoapi/pzserver/catalog/index.rst", "autoapi/pzserver/communicate/index.rst", "autoapi/pzserver/core/index.rst", "autoapi/pzserver/index.rst", "index.rst", "installation.rst", "notebooks.rst", "notebooks/intro_notebook.ipynb"], "titles": ["API Reference", "pzserver.catalog", "pzserver.communicate", "pzserver.core", "pzserver", "Welcome to Photo-z Server Library\u2019s documentation!", "Installation", "Notebooks", "Photo-z Server - Tutorial Notebook"], "terms": {"thi": [0, 5, 8], "page": [0, 5, 8], "contain": [0, 3, 4, 8], "auto": 0, "gener": [0, 8], "document": [0, 8], "1": [0, 2, 3, 4, 8], "pzserver": [0, 5, 6, 8], "catalog": [0, 3, 4, 8], "commun": [0, 4, 8], "core": [0, 4], "creat": [0, 8], "sphinx": 0, "autoapi": 0, "respons": [1, 2, 3, 4], "load": [1, 4], "dataset": [1, 8], "product": [1, 2, 3, 4, 5, 7], "pz": [1, 2, 3, 4, 5, 6, 7], "server": [1, 2, 3, 4, 6, 7], "app": [1, 2, 3, 4], "data": [1, 2, 3, 4, 5, 7], "none": [1, 2, 3, 4], "metadata": [1, 2, 3, 4, 5, 7], "metadata_df": [1, 4], "sourc": [1, 2, 3, 4, 8], "main": [1, 2, 3, 4], "display_metadata": [1, 4, 8], "displai": [1, 3, 4, 7], "": [1, 3, 4, 8], "panda": [1, 3, 4, 8], "io": [1, 3, 4], "format": [1, 3, 4, 8], "style": [1, 3, 4, 8], "styler": [1, 3, 4], "object": [1, 2, 3, 4, 8], "inform": [1, 2, 3, 4, 8], "owner": [1, 3, 4, 8], "optim": [1, 3, 4, 8], "us": [1, 2, 3, 4, 8], "jupyt": [1, 3, 4, 8], "notebook": [1, 3, 4, 5], "speczcatalog": [1, 3, 4, 8], "base": [1, 4, 8], "paramet": [1, 2, 3, 4, 8], "_type_": [1, 3, 4], "_description_": [1, 3, 4], "plot": [1, 4, 8], "savefig": [1, 4], "fals": [1, 2, 4], "veri": [1, 4, 8], "basic": [1, 4, 8], "character": [1, 4], "spec": [1, 3, 4, 8], "z": [1, 3, 4, 7], "option": [1, 2, 3, 4], "save": [1, 2, 3, 4, 8], "png": [1, 4], "figur": [1, 4], "boolean": [1, 2, 4], "trainingset": [1, 3, 4, 8], "mag_nam": [1, 4, 8], "train": [1, 3, 4, 8], "set": [1, 2, 3, 4, 8], "pzrequest": 2, "token": [2, 3, 4, 8], "host": [2, 3, 4, 5, 8], "manag": [2, 3, 4, 8], "all": [2, 3, 4, 8], "request": 2, "_token": 2, "_base_api_url": 2, "_filter_opt": 2, "_mapping_filt": 2, "_enviro": 2, "static": 2, "safe_list_get": 2, "_list": 2, "idx": 2, "default": [2, 3, 4, 8], "list": [2, 3, 4, 7], "get": [2, 8], "valu": [2, 8], "from": [2, 3, 4, 8], "exist": 2, "otherwis": 2, "return": [2, 3, 4, 8], "int": [2, 3, 4, 8], "index": [2, 5], "doesn": 2, "t": 2, "_check_filt": 2, "entiti": 2, "filter": [2, 3, 4, 8], "check": 2, "ar": [2, 8], "valid": [2, 3, 4, 7], "an": [2, 3, 4, 5, 8], "str": [2, 3, 4, 8], "name": [2, 3, 4, 8], "e": [2, 6, 8], "g": [2, 8], "releas": [2, 3, 4, 8], "type": [2, 3, 4, 5, 6, 7], "select": [2, 3, 4], "_reverse_filt": 2, "api_param": 2, "revert": 2, "map": [2, 3, 4, 8], "avail": [2, 3, 4, 5, 7], "match": [2, 8], "_check_respons": 2, "api_respons": 2, "dict": [2, 3, 4], "possibl": 2, "http": [2, 6, 8], "error": [2, 8], "_send_request": 2, "prerequest": 2, "stream": 2, "timeout": 2, "verifi": [2, 8], "true": [2, 3, 4, 8], "cert": 2, "proxi": 2, "send": 2, "preparedrequest": 2, "whether": 2, "float": [2, 3, 4, 8], "tupl": 2, "how": [2, 8], "long": 2, "wait": 2, "befor": [2, 8], "give": [2, 8], "up": [2, 8], "connect": [2, 3, 4, 8], "read": 2, "either": 2, "which": [2, 8], "case": [2, 8], "control": 2, "we": [2, 3, 4, 8], "tl": 2, "certif": 2, "string": [2, 3, 4, 8], "must": [2, 8], "path": [2, 8], "ca": 2, "bundl": 2, "ani": [2, 8], "user": [2, 3, 4, 5, 7], "provid": [2, 8], "ssl": 2, "trust": 2, "The": [2, 3, 4, 5, 6, 7], "dictionari": [2, 3, 4, 8], "appli": [2, 8], "_get_request": 2, "url": [2, 8], "param": 2, "record": 2, "api": [2, 5, 6, 7], "_options_request": 2, "given": [2, 3, 4, 7], "endpoint": 2, "_check_token": 2, "i": [2, 3, 4, 5, 6, 8], "stop": 2, "initi": 2, "_download_request": 2, "save_in": [2, 3, 4, 8], "download": [2, 3, 4, 7], "locat": [2, 3, 4], "where": [2, 3, 4, 8], "file": [2, 3, 4, 7], "_post_request": 2, "payload": 2, "post": 2, "_delete_request": 2, "remov": [2, 8], "delet": 2, "id": [2, 3, 4, 8], "statu": 2, "messag": 2, "get_ent": 2, "get_al": 2, "_id": 2, "search": [2, 5, 8], "order": 2, "download_main_fil": 2, "upload": [2, 8], "get_main_file_info": 2, "column_associ": 2, "about": [2, 5, 8], "download_product": [2, 3, 4, 8], "local": [2, 3, 4, 8], "get_product": [2, 3, 4, 8], "accord": [2, 8], "ex": 2, "lsst": [2, 3, 4, 5, 8], "view": 2, "onli": [2, 8], "complet": 2, "interact": [3, 4], "fontcolorerr": 3, "x1b": 3, "38": 3, "2": [3, 8], "255": 3, "0": [3, 4], "0m": 3, "fontcolorend": 3, "get_product_typ": [3, 4], "fetch": [3, 4, 8], "photo": [3, 4, 7], "administr": [3, 4], "databas": [3, 4, 8], "respect": [3, 4], "short": [3, 4, 8], "descript": [3, 4, 8], "display_product_typ": [3, 4, 8], "datafram": [3, 4, 8], "correspond": [3, 4], "get_us": [3, 4], "regist": [3, 4, 8], "first": [3, 4], "last": [3, 4, 8], "github": [3, 4, 6, 8], "usernam": [3, 4], "display_us": [3, 4, 8], "get_releas": [3, 4], "result": [3, 4, 7], "expect": [3, 4, 8], "increas": [3, 4], "over": [3, 4], "year": [3, 4], "survei": [3, 4, 8], "oper": [3, 4, 8], "display_releas": [3, 4, 8], "tag": [3, 4], "full": [3, 4], "get_products_list": [3, 4, 8], "pattern": [3, 4, 8], "display_products_list": [3, 4, 8], "get_product_metadata": [3, 4, 8], "product_id": [3, 4], "mainfile_info": [3, 4], "particular": [3, 4, 8], "uniqu": [3, 4, 8], "identifi": [3, 4, 8], "number": [3, 4, 8], "internal_nam": [3, 4, 8], "bool": [3, 4], "addit": [3, 4, 8], "display_product_metadata": [3, 4, 8], "show": [3, 4, 8], "compress": [3, 4, 8], "zip": [3, 4, 8], "fmt": [3, 4, 8], "tabular": [3, 4, 8], "store": [3, 4, 8], "intern": [3, 4, 8], "output": [3, 4, 8], "tabl": [3, 4, 8], "astropi": [3, 4, 8], "py": [3, 4], "extens": [3, 4, 8], "pure": [3, 4, 8], "__transform_df": [3, 4], "transform": [3, 4], "its": [3, 4, 6, 8], "current": [3, 4, 8], "have": [3, 4, 8], "two": [3, 4, 8], "abstract": [3, 4], "combine_specz_catalog": [3, 4], "catalog_list": [3, 4], "duplicates_critera": [3, 4], "smallest": [3, 4], "flag": [3, 4, 8], "_summary_": [3, 4], "rais": [3, 4], "notimplementederror": [3, 4], "make_training_set": [3, 4], "specz_catalog": [3, 4], "photo_catalog": [3, 4], "search_radiu": [3, 4], "multiple_match_criteria": [3, 4], "closest": [3, 4], "python": [5, 7], "packag": 5, "support": [5, 8], "access": [5, 8], "via": [5, 8], "code": [5, 8], "home": 5, "instal": [5, 7], "pip": [5, 8], "For": [5, 8], "develop": [5, 8], "refer": 5, "tutori": [5, 7], "lib": [5, 7], "modul": 5, "work": [5, 8], "part": [5, 8], "kind": [5, 8], "contribut": [5, 8], "program": [5, 8], "bra": [5, 8], "lin": [5, 8], "between": [5, 8], "linea": [5, 6, 8], "rubin": [5, 8], "observatori": [5, 8], "onlin": [5, 8], "servic": [5, 8], "brazilian": [5, 8], "independ": 5, "center": 5, "scienc": [5, 8], "platform": [5, 8], "To": [5, 6, 8], "know": 5, "more": [5, 8], "other": [5, 8], "pleas": [5, 8], "visit": [5, 8], "s4": 5, "avalialbl": [6, 8], "depend": [6, 8], "termin": [6, 8], "altern": [6, 8], "you": [6, 8], "can": [6, 8], "clone": [6, 8], "repositori": [6, 8], "librari": [6, 7], "git": [6, 8], "com": [6, 8], "dev": [6, 8], "import": 7, "setup": 7, "retriev": 7, "feedback": 7, "contact": 8, "author": 8, "julia": 8, "gschwend": 8, "run": 8, "2023": 8, "mai": 8, "05": 8, "content": 8, "introduct": 8, "info": 8, "share": 8, "rsp": 8, "memori": 8, "lightweight": 8, "relat": 8, "done": 8, "websit": 8, "org": 8, "br": 8, "dure": 8, "phase": 8, "test": 8, "environ": 8, "There": 8, "find": 8, "separ": 8, "each": 8, "one": 8, "ofici": 8, "also": 8, "directli": 8, "demonstr": 8, "below": 8, "deliv": 8, "idac": 8, "howev": 8, "requir": 8, "credenti": 8, "authent": 8, "comprehens": 8, "overview": 8, "function": 8, "back": 8, "top": 8, "click": 8, "button": 8, "new": 8, "left": 8, "fill": 8, "form": 8, "relev": 8, "organ": 8, "four": 8, "categori": 8, "spectroscop": 8, "redshift": 8, "posit": 8, "usual": 8, "equatori": 8, "coordin": 8, "algorithm": 8, "It": 8, "magnitud": 8, "procedur": 8, "free": 8, "estim": 8, "singl": 8, "pdf": 8, "metric": 8, "etc": 8, "ideal": 8, "same": 8, "dm": 8, "If": 8, "larger": 8, "than": 8, "limit": 8, "200mb": 8, "entri": 8, "instruct": 8, "should": 8, "field": 8, "go": 8, "card": 8, "offici": 8, "team": 8, "member": 8, "side": 8, "row": 8, "ob": 8, "might": 8, "need": 8, "restart": 8, "kernel": 8, "incorpor": 8, "matplotlib": 8, "pyplot": 8, "plt": 8, "reload_ext": 8, "autoreload": 8, "class": 8, "defin": 8, "instanc": 8, "right": 8, "menu": 8, "pz_server": 8, "past": 8, "your": 8, "here": 8, "temporari": 8, "just": 8, "abov": 8, "bring": 8, "method": 8, "navig": 8, "through": 8, "preffix": 8, "get_": 8, "queri": 8, "most": 8, "programat": 8, "see": 8, "detaial": 8, "those": 8, "display_": 8, "note": 8, "column": 8, "chang": 8, "version": 8, "who": 8, "time": 8, "warn": 8, "rapdli": 8, "grow": 8, "shown": 8, "interest": 8, "list_product": 8, "receiv": 8, "argument": 8, "attribut": 8, "dp0": 8, "product_typ": 8, "instead": 8, "allow": 8, "multipl": 8, "ad": 8, "suffix": 8, "__or": 8, "underscor": 8, "kei": 8, "notic": 8, "sensit": 8, "product_type__or": 8, "variabl": 8, "like": 8, "search_result": 8, "attach": 8, "consult": 8, "call": 8, "automat": 8, "moment": 8, "concaten": 8, "replac": 8, "blank": 8, "space": 8, "_": 8, "lower": 8, "special": 8, "charact": 8, "attibut": 8, "equival": 8, "6": 8, "6_simple_training_set": 8, "folder": 8, "contai": 8, "includ": 8, "anciliari": 8, "spent": 8, "internet": 8, "let": 8, "try": 8, "small": 8, "14": 8, "imedi": 8, "visibl": 8, "peopl": 8, "besid": 8, "anoth": 8, "wai": 8, "lead": 8, "compos": 8, "address": 8, "still": 8, "exampl": 8, "featur": 8, "atribut": 8, "By": 8, "simpl": 8, "composit": 8, "coupl": 8, "8": 8, "aloc": 8, "preserv": 8, "describ": 8, "In": 8, "prod": 8, "detail": 8, "specif": 8, "prefer": 8, "flexibl": 8, "choos": 8, "print": 8, "clean": 8, "del": 8, "handl": 8, "recap": 8, "context": 8, "spheric": 8, "measur": 8, "analog": 8, "simul": 8, "A": 8, "combin": 8, "sever": 8, "consid": 8, "tool": 8, "multi": 8, "recommend": 8, "add": 8, "identif": 8, "extra": 8, "mandatori": 8, "ascens": 8, "degre": 8, "declin": 8, "qualiti": 8, "integ": 8, "compil": 8, "differ": 8, "gama": 8, "statist": 8, "ha": 8, "quick": 8, "visual": 8, "properti": 8, "x": 8, "ra": 8, "y": 8, "dec": 8, "scatter": 8, "spatial": 8, "photometr": 8, "offer": 8, "maker": 8, "build": 8, "custom": 8, "companion": 8, "pz_tsm_tutori": 8, "ipynb": 8, "commonli": 8, "split": 8, "subset": 8, "purpos": 8, "previous": 8, "belong": 8, "trainin": 8, "clear": 8, "reproduc": 8, "level": 8, "imag": 8, "deep": 8, "learn": 8, "yet": 8, "observ": 8, "color": 8, "flux": 8, "train_goldenspik": 8, "9": 8, "mag_i_lsst": 8, "strongli": 8, "so": 8, "constraint": 8, "neural": 8, "net": 8, "weight": 8, "decis": 8, "tree": 8, "machin": 8, "sed": 8, "templat": 8, "transmiss": 8, "curv": 8, "theoret": 8, "grid": 8, "bayesian": 8, "prior": 8, "put": 8, "togeth": 8, "tar": 8, "gz": 8, "11_goldenspike_flexzboost": 8, "necessarili": 8, "open": 8, "11": 8, "sampl": 8, "vari": 8, "phto": 8, "size": 8, "therefor": 8, "doe": 8, "larg": 8, "someth": 8, "miss": 8, "issu": 8}, "objects": {"": [[4, 0, 0, "-", "pzserver"]], "pzserver": [[4, 1, 1, "", "Catalog"], [4, 1, 1, "", "PzServer"], [4, 1, 1, "", "SpeczCatalog"], [4, 1, 1, "", "TrainingSet"], [1, 0, 0, "-", "catalog"], [2, 0, 0, "-", "communicate"], [3, 0, 0, "-", "core"]], "pzserver.Catalog": [[4, 2, 1, "", "display_metadata"]], "pzserver.PzServer": [[4, 2, 1, "", "__transform_df"], [4, 2, 1, "", "combine_specz_catalogs"], [4, 2, 1, "", "display_product_metadata"], [4, 2, 1, "", "display_product_types"], [4, 2, 1, "", "display_products_list"], [4, 2, 1, "", "display_releases"], [4, 2, 1, "", "display_users"], [4, 2, 1, "", "download_product"], [4, 2, 1, "", "get_product"], [4, 2, 1, "", "get_product_metadata"], [4, 2, 1, "", "get_product_types"], [4, 2, 1, "", "get_products_list"], [4, 2, 1, "", "get_releases"], [4, 2, 1, "", "get_users"], [4, 2, 1, "", "make_training_set"]], "pzserver.SpeczCatalog": [[4, 2, 1, "", "plot"]], "pzserver.TrainingSet": [[4, 2, 1, "", "plot"]], "pzserver.catalog": [[1, 1, 1, "", "Catalog"], [1, 1, 1, "", "SpeczCatalog"], [1, 1, 1, "", "TrainingSet"]], "pzserver.catalog.Catalog": [[1, 2, 1, "", "display_metadata"]], "pzserver.catalog.SpeczCatalog": [[1, 2, 1, "", "plot"]], "pzserver.catalog.TrainingSet": [[1, 2, 1, "", "plot"]], "pzserver.communicate": [[2, 1, 1, "", "PzRequests"]], "pzserver.communicate.PzRequests": [[2, 3, 1, "", "_base_api_url"], [2, 2, 1, "", "_check_filters"], [2, 2, 1, "", "_check_response"], [2, 2, 1, "", "_check_token"], [2, 2, 1, "", "_delete_request"], [2, 2, 1, "", "_download_request"], [2, 3, 1, "", "_enviroments"], [2, 3, 1, "", "_filter_options"], [2, 2, 1, "", "_get_request"], [2, 3, 1, "", "_mapping_filters"], [2, 2, 1, "", "_options_request"], [2, 2, 1, "", "_post_request"], [2, 2, 1, "", "_reverse_filters"], [2, 2, 1, "", "_send_request"], [2, 3, 1, "", "_token"], [2, 2, 1, "", "download_main_file"], [2, 2, 1, "", "download_product"], [2, 2, 1, "", "get"], [2, 2, 1, "", "get_all"], [2, 2, 1, "", "get_entities"], [2, 2, 1, "", "get_main_file_info"], [2, 2, 1, "", "get_products"], [2, 2, 1, "", "options"], [2, 2, 1, "", "safe_list_get"]], "pzserver.core": [[3, 4, 1, "", "FONTCOLOREND"], [3, 4, 1, "", "FONTCOLORERR"], [3, 1, 1, "", "PzServer"]], "pzserver.core.PzServer": [[3, 2, 1, "", "__transform_df"], [3, 2, 1, "", "combine_specz_catalogs"], [3, 2, 1, "", "display_product_metadata"], [3, 2, 1, "", "display_product_types"], [3, 2, 1, "", "display_products_list"], [3, 2, 1, "", "display_releases"], [3, 2, 1, "", "display_users"], [3, 2, 1, "", "download_product"], [3, 2, 1, "", "get_product"], [3, 2, 1, "", "get_product_metadata"], [3, 2, 1, "", "get_product_types"], [3, 2, 1, "", "get_products_list"], [3, 2, 1, "", "get_releases"], [3, 2, 1, "", "get_users"], [3, 2, 1, "", "make_training_set"]]}, "objtypes": {"0": "py:module", "1": "py:class", "2": "py:method", "3": "py:attribute", "4": "py:data"}, "objnames": {"0": ["py", "module", "Python module"], "1": ["py", "class", "Python class"], "2": ["py", "method", "Python method"], "3": ["py", "attribute", "Python attribute"], "4": ["py", "data", "Python data"]}, "titleterms": {"api": [0, 8], "refer": 0, "pzserver": [1, 2, 3, 4], "catalog": 1, "modul": [1, 2, 3], "content": [1, 2, 3, 4, 5], "class": [1, 2, 3, 4], "commun": 2, "core": 3, "attribut": 3, "submodul": 4, "packag": 4, "welcom": 5, "photo": [5, 8], "z": [5, 8], "server": [5, 8], "librari": [5, 8], "": 5, "document": 5, "indic": 5, "tabl": 5, "acknowledg": 5, "instal": [6, 8], "via": 6, "pip": 6, "For": 6, "develop": 6, "notebook": [7, 8], "tutori": 8, "The": 8, "pz": 8, "python": 8, "lib": 8, "import": 8, "setup": 8, "product": 8, "type": 8, "list": 8, "valid": 8, "result": 8, "avail": 8, "displai": 8, "metadata": 8, "given": 8, "data": 8, "retriev": 8, "download": 8, "file": 8, "user": 8, "feedback": 8}, "envversion": {"sphinx.domains.c": 2, "sphinx.domains.changeset": 1, "sphinx.domains.citation": 1, "sphinx.domains.cpp": 8, "sphinx.domains.index": 1, "sphinx.domains.javascript": 2, "sphinx.domains.math": 2, "sphinx.domains.python": 3, "sphinx.domains.rst": 2, "sphinx.domains.std": 2, "sphinx.ext.viewcode": 1, "nbsphinx": 4, "sphinx": 57}, "alltitles": {"API Reference": [[0, "api-reference"]], "pzserver.catalog": [[1, "module-pzserver.catalog"]], "Module Contents": [[1, "module-contents"], [2, "module-contents"], [3, "module-contents"]], "Classes": [[1, "classes"], [2, "classes"], [3, "classes"], [4, "classes"]], "pzserver.communicate": [[2, "module-pzserver.communicate"]], "pzserver.core": [[3, "module-pzserver.core"]], "Attributes": [[3, "attributes"]], "pzserver": [[4, "module-pzserver"]], "Submodules": [[4, "submodules"]], "Package Contents": [[4, "package-contents"]], "Welcome to Photo-z Server Library\u2019s documentation!": [[5, "welcome-to-photo-z-server-library-s-documentation"]], "Contents:": [[5, null]], "Indices and tables": [[5, "indices-and-tables"]], "Acknowledgments": [[5, "acknowledgments"]], "Installation": [[6, "installation"], [8, "Installation"]], "Via pip": [[6, "via-pip"]], "For developers": [[6, "for-developers"]], "Notebooks": [[7, "notebooks"]], "Photo-z Server - Tutorial Notebook": [[8, "Photo-z-Server---Tutorial-Notebook"]], "The PZ Server API (Python library pz-server-lib)": [[8, "The-PZ-Server-API-(Python-library-pz-server-lib)"]], "Imports and Setup": [[8, "Imports-and-Setup"]], "Product types": [[8, "Product-types"]], "List Validation Results available on PZ Server": [[8, "List-Validation-Results-available-on-PZ-Server"]], "Display metadata of a given data product of Photo-z Validation Results": [[8, "Display-metadata-of-a-given-data-product-of-Photo-z-Validation-Results"]], "Retrieve a given Photo-z Validation Results: download file": [[8, "Retrieve-a-given-Photo-z-Validation-Results:-download-file"]], "Users feedback": [[8, "Users-feedback"]]}, "indexentries": {"catalog (class in pzserver.catalog)": [[1, "pzserver.catalog.Catalog"]], "speczcatalog (class in pzserver.catalog)": [[1, "pzserver.catalog.SpeczCatalog"]], "trainingset (class in pzserver.catalog)": [[1, "pzserver.catalog.TrainingSet"]], "display_metadata() (catalog method)": [[1, "pzserver.catalog.Catalog.display_metadata"], [4, "pzserver.Catalog.display_metadata"]], "module": [[1, "module-pzserver.catalog"], [2, "module-pzserver.communicate"], [3, "module-pzserver.core"], [4, "module-pzserver"]], "plot() (speczcatalog method)": [[1, "pzserver.catalog.SpeczCatalog.plot"], [4, "pzserver.SpeczCatalog.plot"]], "plot() (trainingset method)": [[1, "pzserver.catalog.TrainingSet.plot"], [4, "pzserver.TrainingSet.plot"]], "pzserver.catalog": [[1, "module-pzserver.catalog"]], "pzrequests (class in pzserver.communicate)": [[2, "pzserver.communicate.PzRequests"]], "_base_api_url (pzrequests attribute)": [[2, "pzserver.communicate.PzRequests._base_api_url"]], "_check_filters() (pzrequests method)": [[2, "pzserver.communicate.PzRequests._check_filters"]], "_check_response() (pzrequests method)": [[2, "pzserver.communicate.PzRequests._check_response"]], "_check_token() (pzrequests method)": [[2, "pzserver.communicate.PzRequests._check_token"]], "_delete_request() (pzrequests method)": [[2, "pzserver.communicate.PzRequests._delete_request"]], "_download_request() (pzrequests method)": [[2, "pzserver.communicate.PzRequests._download_request"]], "_enviroments (pzrequests attribute)": [[2, "pzserver.communicate.PzRequests._enviroments"]], "_filter_options (pzrequests attribute)": [[2, "pzserver.communicate.PzRequests._filter_options"]], "_get_request() (pzrequests method)": [[2, "pzserver.communicate.PzRequests._get_request"]], "_mapping_filters (pzrequests attribute)": [[2, "pzserver.communicate.PzRequests._mapping_filters"]], "_options_request() (pzrequests method)": [[2, "pzserver.communicate.PzRequests._options_request"]], "_post_request() (pzrequests method)": [[2, "pzserver.communicate.PzRequests._post_request"]], "_reverse_filters() (pzrequests method)": [[2, "pzserver.communicate.PzRequests._reverse_filters"]], "_send_request() (pzrequests method)": [[2, "pzserver.communicate.PzRequests._send_request"]], "_token (pzrequests attribute)": [[2, "pzserver.communicate.PzRequests._token"]], "download_main_file() (pzrequests method)": [[2, "pzserver.communicate.PzRequests.download_main_file"]], "download_product() (pzrequests method)": [[2, "pzserver.communicate.PzRequests.download_product"]], "get() (pzrequests method)": [[2, "pzserver.communicate.PzRequests.get"]], "get_all() (pzrequests method)": [[2, "pzserver.communicate.PzRequests.get_all"]], "get_entities() (pzrequests method)": [[2, "pzserver.communicate.PzRequests.get_entities"]], "get_main_file_info() (pzrequests method)": [[2, "pzserver.communicate.PzRequests.get_main_file_info"]], "get_products() (pzrequests method)": [[2, "pzserver.communicate.PzRequests.get_products"]], "options() (pzrequests method)": [[2, "pzserver.communicate.PzRequests.options"]], "pzserver.communicate": [[2, "module-pzserver.communicate"]], "safe_list_get() (pzrequests static method)": [[2, "pzserver.communicate.PzRequests.safe_list_get"]], "fontcolorend (in module pzserver.core)": [[3, "pzserver.core.FONTCOLOREND"]], "fontcolorerr (in module pzserver.core)": [[3, "pzserver.core.FONTCOLORERR"]], "pzserver (class in pzserver.core)": [[3, "pzserver.core.PzServer"]], "__transform_df() (pzserver method)": [[3, "pzserver.core.PzServer.__transform_df"], [4, "pzserver.PzServer.__transform_df"]], "combine_specz_catalogs() (pzserver method)": [[3, "pzserver.core.PzServer.combine_specz_catalogs"], [4, "pzserver.PzServer.combine_specz_catalogs"]], "display_product_metadata() (pzserver method)": [[3, "pzserver.core.PzServer.display_product_metadata"], [4, "pzserver.PzServer.display_product_metadata"]], "display_product_types() (pzserver method)": [[3, "pzserver.core.PzServer.display_product_types"], [4, "pzserver.PzServer.display_product_types"]], "display_products_list() (pzserver method)": [[3, "pzserver.core.PzServer.display_products_list"], [4, "pzserver.PzServer.display_products_list"]], "display_releases() (pzserver method)": [[3, "pzserver.core.PzServer.display_releases"], [4, "pzserver.PzServer.display_releases"]], "display_users() (pzserver method)": [[3, "pzserver.core.PzServer.display_users"], [4, "pzserver.PzServer.display_users"]], "download_product() (pzserver method)": [[3, "pzserver.core.PzServer.download_product"], [4, "pzserver.PzServer.download_product"]], "get_product() (pzserver method)": [[3, "pzserver.core.PzServer.get_product"], [4, "pzserver.PzServer.get_product"]], "get_product_metadata() (pzserver method)": [[3, "pzserver.core.PzServer.get_product_metadata"], [4, "pzserver.PzServer.get_product_metadata"]], "get_product_types() (pzserver method)": [[3, "pzserver.core.PzServer.get_product_types"], [4, "pzserver.PzServer.get_product_types"]], "get_products_list() (pzserver method)": [[3, "pzserver.core.PzServer.get_products_list"], [4, "pzserver.PzServer.get_products_list"]], "get_releases() (pzserver method)": [[3, "pzserver.core.PzServer.get_releases"], [4, "pzserver.PzServer.get_releases"]], "get_users() (pzserver method)": [[3, "pzserver.core.PzServer.get_users"], [4, "pzserver.PzServer.get_users"]], "make_training_set() (pzserver method)": [[3, "pzserver.core.PzServer.make_training_set"], [4, "pzserver.PzServer.make_training_set"]], "pzserver.core": [[3, "module-pzserver.core"]], "catalog (class in pzserver)": [[4, "pzserver.Catalog"]], "pzserver (class in pzserver)": [[4, "pzserver.PzServer"]], "speczcatalog (class in pzserver)": [[4, "pzserver.SpeczCatalog"]], "trainingset (class in pzserver)": [[4, "pzserver.TrainingSet"]], "pzserver": [[4, "module-pzserver"]]}}) \ No newline at end of file +Search.setIndex({"docnames": ["autoapi/index", "autoapi/pzserver/catalog/index", "autoapi/pzserver/communicate/index", "autoapi/pzserver/core/index", "autoapi/pzserver/index", "index", "installation", "nbs", "notebooks/intro_notebook"], "filenames": ["autoapi/index.rst", "autoapi/pzserver/catalog/index.rst", "autoapi/pzserver/communicate/index.rst", "autoapi/pzserver/core/index.rst", "autoapi/pzserver/index.rst", "index.rst", "installation.rst", "nbs.rst", "notebooks/intro_notebook.ipynb"], "titles": ["API Reference", "pzserver.catalog", "pzserver.communicate", "pzserver.core", "pzserver", "Welcome to Photo-z Server Library\u2019s documentation!", "Installation", "Notebooks", "Photo-z Server - Tutorial Notebook"], "terms": {"thi": [0, 5, 8], "page": [0, 5, 8], "contain": [0, 3, 4, 8], "auto": 0, "gener": [0, 7], "document": [0, 8], "1": [0, 2, 3, 4, 8], "pzserver": [0, 5, 6, 8], "catalog": [0, 3, 4, 7], "commun": [0, 4, 8], "core": [0, 4, 8], "creat": [0, 8], "sphinx": 0, "autoapi": 0, "respons": [1, 2, 3, 4], "load": [1, 4], "dataset": [1, 8], "product": [1, 2, 3, 4, 5, 7], "pz": [1, 2, 3, 4, 5, 6, 7], "server": [1, 2, 3, 4, 6, 7], "app": [1, 2, 3, 4], "data": [1, 2, 3, 4, 5, 7], "none": [1, 2, 3, 4, 8], "metadata": [1, 2, 3, 4, 5, 7], "metadata_df": [1, 4], "sourc": [1, 2, 3, 4, 8], "main": [1, 2, 3, 4], "display_metadata": [1, 4, 8], "displai": [1, 3, 4, 7], "": [1, 3, 4, 8], "panda": [1, 3, 4, 8], "io": [1, 3, 4], "format": [1, 3, 4, 8], "style": [1, 3, 4, 8], "styler": [1, 3, 4], "object": [1, 2, 3, 4, 8], "inform": [1, 2, 3, 4, 8], "owner": [1, 3, 4, 8], "optim": [1, 3, 4, 8], "us": [1, 2, 3, 4, 8], "jupyt": [1, 3, 4, 8], "notebook": [1, 3, 4, 5], "speczcatalog": [1, 3, 4, 8], "base": [1, 4, 8], "paramet": [1, 2, 3, 4, 8], "_type_": [1, 3, 4], "_description_": [1, 3, 4], "plot": [1, 4, 8], "savefig": [1, 4], "fals": [1, 2, 4, 8], "veri": [1, 4, 8], "basic": [1, 4, 8], "character": [1, 4], "spec": [1, 3, 4, 7], "z": [1, 3, 4, 7], "option": [1, 2, 3, 4], "save": [1, 2, 3, 4, 8], "png": [1, 4], "figur": [1, 4], "boolean": [1, 2, 4], "trainingset": [1, 3, 4, 8], "mag_nam": [1, 4, 8], "train": [1, 3, 4, 7], "set": [1, 2, 3, 4, 7], "pzrequest": 2, "token": [2, 3, 4, 8], "host": [2, 3, 4, 5, 8], "manag": [2, 3, 4, 8], "all": [2, 3, 4, 8], "request": 2, "_token": 2, "_base_api_url": 2, "_filter_opt": 2, "_mapping_filt": 2, "_enviro": 2, "static": 2, "safe_list_get": 2, "_list": 2, "idx": 2, "default": [2, 3, 4, 8], "list": [2, 3, 4, 7], "get": [2, 7], "valu": [2, 8], "from": [2, 3, 4, 7], "exist": 2, "otherwis": 2, "return": [2, 3, 4, 8], "int": [2, 3, 4, 8], "index": [2, 5], "doesn": 2, "t": 2, "_check_filt": 2, "entiti": 2, "filter": [2, 3, 4, 8], "check": 2, "ar": [2, 8], "valid": [2, 3, 4, 7], "an": [2, 3, 4, 5, 8], "str": [2, 3, 4, 8], "name": [2, 3, 4, 8], "e": [2, 6, 8], "g": [2, 8], "releas": [2, 3, 4, 8], "type": [2, 3, 4, 5, 6, 7], "select": [2, 3, 4], "_reverse_filt": 2, "api_param": 2, "revert": 2, "map": [2, 3, 4, 8], "avail": [2, 3, 4, 5, 7], "match": [2, 8], "_check_respons": 2, "api_respons": 2, "dict": [2, 3, 4], "possibl": 2, "http": [2, 6, 8], "error": [2, 8], "_send_request": 2, "prerequest": 2, "stream": 2, "timeout": 2, "verifi": [2, 8], "true": [2, 3, 4, 8], "cert": 2, "proxi": 2, "send": 2, "preparedrequest": 2, "whether": 2, "float": [2, 3, 4, 8], "tupl": 2, "how": [2, 7], "long": 2, "wait": 2, "befor": [2, 8], "give": [2, 8], "up": [2, 8], "connect": [2, 3, 4, 8], "read": 2, "either": 2, "which": [2, 8], "case": [2, 8], "control": 2, "we": [2, 3, 4, 8], "tl": 2, "certif": 2, "string": [2, 3, 4, 8], "must": [2, 8], "path": [2, 8], "ca": 2, "bundl": 2, "ani": [2, 8], "user": [2, 3, 4, 5, 7], "provid": [2, 8], "ssl": 2, "trust": 2, "The": [2, 3, 4, 5, 6, 7], "dictionari": [2, 3, 4, 8], "appli": [2, 8], "_get_request": 2, "url": [2, 8], "param": 2, "record": 2, "api": [2, 5, 6, 7], "_options_request": 2, "given": [2, 3, 4, 7], "endpoint": 2, "_check_token": 2, "i": [2, 3, 4, 5, 6, 8], "stop": 2, "initi": 2, "_download_request": 2, "save_in": [2, 3, 4, 8], "download": [2, 3, 4, 7], "locat": [2, 3, 4], "where": [2, 3, 4, 8], "file": [2, 3, 4, 7], "_post_request": 2, "payload": 2, "post": 2, "_delete_request": 2, "remov": [2, 8], "delet": 2, "id": [2, 3, 4, 8], "statu": [2, 8], "messag": 2, "get_ent": 2, "get_al": 2, "_id": 2, "search": [2, 5, 8], "order": 2, "download_main_fil": 2, "upload": [2, 7], "get_main_file_info": 2, "column_associ": 2, "about": [2, 5, 8], "download_product": [2, 3, 4, 8], "local": [2, 3, 4, 8], "get_product": [2, 3, 4, 8], "accord": [2, 8], "ex": 2, "lsst": [2, 3, 4, 5, 8], "view": 2, "onli": [2, 8], "complet": 2, "interact": [3, 4], "fontcolorerr": 3, "x1b": 3, "38": 3, "2": [3, 8], "255": 3, "0": [3, 4, 8], "0m": 3, "fontcolorend": 3, "get_product_typ": [3, 4], "fetch": [3, 4, 8], "photo": [3, 4, 7], "administr": [3, 4], "databas": [3, 4, 8], "respect": [3, 4], "short": [3, 4, 8], "descript": [3, 4, 8], "display_product_typ": [3, 4, 8], "datafram": [3, 4, 8], "correspond": [3, 4], "get_us": [3, 4], "regist": [3, 4, 8], "first": [3, 4], "last": [3, 4, 8], "github": [3, 4, 6, 8], "usernam": [3, 4, 8], "display_us": [3, 4, 8], "get_releas": [3, 4], "result": [3, 4, 7], "expect": [3, 4, 8], "increas": [3, 4], "over": [3, 4], "year": [3, 4], "survei": [3, 4, 8], "oper": [3, 4, 8], "display_releas": [3, 4, 8], "tag": [3, 4], "full": [3, 4], "get_products_list": [3, 4, 8], "pattern": [3, 4, 8], "display_products_list": [3, 4, 8], "get_product_metadata": [3, 4, 8], "product_id": [3, 4], "mainfile_info": [3, 4], "particular": [3, 4, 8], "uniqu": [3, 4, 8], "identifi": [3, 4, 8], "number": [3, 4, 8], "internal_nam": [3, 4, 8], "bool": [3, 4], "addit": [3, 4, 8], "display_product_metadata": [3, 4, 8], "show": [3, 4, 8], "compress": [3, 4, 8], "zip": [3, 4, 7], "fmt": [3, 4, 8], "tabular": [3, 4, 8], "store": [3, 4, 8], "intern": [3, 4, 8], "output": [3, 4, 8], "tabl": [3, 4, 7], "astropi": [3, 4, 8], "py": [3, 4], "extens": [3, 4, 8], "pure": [3, 4, 8], "__transform_df": [3, 4], "transform": [3, 4], "its": [3, 4, 6, 8], "current": [3, 4, 8], "have": [3, 4, 8], "two": [3, 4, 8], "abstract": [3, 4], "combine_specz_catalog": [3, 4], "catalog_list": [3, 4], "duplicates_critera": [3, 4], "smallest": [3, 4], "flag": [3, 4, 8], "_summary_": [3, 4], "rais": [3, 4], "notimplementederror": [3, 4], "make_training_set": [3, 4], "specz_catalog": [3, 4], "photo_catalog": [3, 4], "search_radiu": [3, 4], "multiple_match_criteria": [3, 4], "closest": [3, 4], "python": [5, 7], "packag": 5, "support": [5, 8], "access": [5, 8], "via": [5, 8], "code": [5, 8], "home": 5, "instal": [5, 8], "pip": [5, 8], "For": [5, 8], "develop": [5, 8], "refer": 5, "tutori": [5, 7], "lib": [5, 7], "modul": 5, "work": [5, 7], "part": [5, 8], "kind": [5, 8], "contribut": [5, 8], "program": [5, 8], "bra": [5, 8], "lin": [5, 8], "between": [5, 8], "linea": [5, 6, 8], "rubin": [5, 8], "observatori": [5, 8], "onlin": [5, 8], "servic": [5, 8], "brazilian": [5, 8], "independ": 5, "center": 5, "scienc": [5, 8], "platform": [5, 8], "To": [5, 6, 8], "know": 5, "more": [5, 8], "other": [5, 7], "pleas": [5, 8], "visit": [5, 8], "s4": 5, "avalialbl": [6, 8], "depend": [6, 8], "termin": [6, 8], "altern": [6, 8], "you": [6, 8], "can": [6, 8], "clone": [6, 8], "repositori": [6, 8], "librari": [6, 7], "git": [6, 8], "com": [6, 8], "dev": [6, 8], "content": 7, "introduct": 7, "info": 7, "share": 7, "rsp": 7, "retriev": 7, "memori": 7, "feedback": 7, "contact": 8, "author": 8, "julia": 8, "gschwend": 8, "run": 8, "2023": 8, "mai": 8, "05": 8, "lightweight": 8, "relat": 8, "done": 8, "websit": 8, "org": 8, "br": 8, "dure": 8, "phase": 8, "test": 8, "environ": 8, "There": 8, "find": 8, "separ": 8, "each": 8, "one": 8, "ofici": 8, "also": 8, "directli": 8, "demonstr": 8, "below": 8, "deliv": 8, "idac": 8, "howev": 8, "requir": 8, "credenti": 8, "authent": 8, "comprehens": 8, "overview": 8, "function": 8, "back": 8, "top": 8, "click": 8, "button": 8, "new": 8, "left": 8, "fill": 8, "form": 8, "relev": 8, "organ": 8, "four": 8, "categori": 8, "spectroscop": 8, "redshift": 8, "posit": 8, "usual": 8, "equatori": 8, "coordin": 8, "algorithm": 8, "It": 8, "magnitud": 8, "procedur": 8, "free": 8, "estim": 8, "singl": 8, "pdf": 8, "metric": 8, "etc": 8, "ideal": 8, "same": 8, "dm": 8, "If": 8, "larger": 8, "than": 8, "limit": 8, "200mb": 8, "entri": 8, "instruct": 8, "should": 8, "field": 8, "go": 8, "card": 8, "offici": 8, "team": 8, "member": 8, "side": 8, "row": 8, "ob": 8, "might": 8, "need": 8, "restart": 8, "kernel": 8, "incorpor": 8, "import": 8, "matplotlib": 8, "pyplot": 8, "plt": 8, "reload_ext": 8, "autoreload": 8, "class": 8, "defin": 8, "instanc": 8, "right": 8, "menu": 8, "pz_server": 8, "your": 8, "temporari": 8, "just": 8, "abov": 8, "bring": 8, "method": 8, "navig": 8, "through": 8, "preffix": 8, "get_": 8, "queri": 8, "most": 8, "programat": 8, "see": 8, "detaial": 8, "those": 8, "display_": 8, "note": 8, "column": 8, "chang": 8, "version": 8, "3": 8, "who": 8, "4": 8, "crisingulani": 8, "cristiano": 8, "singulani": 8, "drewoldag": 8, "drew": 8, "oldag": 8, "glaubervila": 8, "glauber": 8, "costa": 8, "vila": 8, "verd": 8, "gverd": 8, "time": 8, "5": 8, "dp0": 8, "preview": 8, "warn": 8, "rapdli": 8, "grow": 8, "6": 8, "product_nam": 8, "product_typ": 8, "uploaded_bi": 8, "official_product": 8, "pz_code": 8, "created_at": 8, "14": 8, "14_gama_specz_subsampl": 8, "gama": 8, "subsampl": 8, "A": 8, "small": 8, "dr3": 8, "baldri": 8, "et": 8, "al": 8, "2018": 8, "exampl": 8, "typic": 8, "literatur": 8, "03": 8, "29t20": 8, "02": 8, "45": 8, "223568z": 8, "13": 8, "13_vvds_specz_subsampl": 8, "vvd": 8, "le": 8, "f\u00e8vre": 8, "2004": 8, "garilli": 8, "2008": 8, "29t19": 8, "50": 8, "27": 8, "593735z": 8, "12": 8, "12_goldenspike_knn": 8, "goldenspik": 8, "knn": 8, "photoz": 8, "mock": 8, "ipynb": 8, "rail": 8, "49": 8, "35": 8, "652295z": 8, "11": 8, "11_goldenspike_flexzboost": 8, "flexzboost": 8, "48": 8, "34": 8, "864629z": 8, "10": 8, "10_goldenspike_bpz": 8, "bpz": 8, "42": 8, "04": 8, "424990z": 8, "9": 8, "9_goldenspike_train_data_hdf5": 8, "hdf5": 8, "59": 8, "746096z": 8, "8": 8, "8_goldenspike_train_data_fit": 8, "fit": 8, "09": 8, "958883z": 8, "7": 8, "7_goldenspike_train_data_parquet": 8, "parquet": 8, "06": 8, "58": 8, "473920z": 8, "6_simple_training_set": 8, "simpl": 8, "simple_pz_training_set": 8, "melissa": 8, "graham": 8, "deleg": 8, "dp02": 8, "illustr": 8, "23t19": 8, "46": 8, "807872z": 8, "1_simple_true_z_catalog": 8, "23t13": 8, "19": 8, "32": 8, "050795z": 8, "shown": 8, "interest": 8, "list_product": 8, "receiv": 8, "argument": 8, "attribut": 8, "instead": 8, "allow": 8, "multipl": 8, "ad": 8, "suffix": 8, "__or": 8, "underscor": 8, "kei": 8, "notic": 8, "sensit": 8, "product_type__or": 8, "variabl": 8, "like": 8, "search_result": 8, "39": 8, "release_nam": 8, "product_type_nam": 8, "is_own": 8, "display_nam": 8, "attach": 8, "consult": 8, "call": 8, "automat": 8, "moment": 8, "concaten": 8, "replac": 8, "blank": 8, "space": 8, "_": 8, "lower": 8, "special": 8, "charact": 8, "attibut": 8, "equival": 8, "main_fil": 8, "csv": 8, "folder": 8, "contai": 8, "includ": 8, "anciliari": 8, "spent": 8, "internet": 8, "let": 8, "try": 8, "14_gama_specz_subsample_f15c0": 8, "imedi": 8, "visibl": 8, "peopl": 8, "besid": 8, "anoth": 8, "wai": 8, "lead": 8, "compos": 8, "address": 8, "still": 8, "featur": 8, "atribut": 8, "By": 8, "composit": 8, "coupl": 8, "lt": 8, "0x7f2f6912fc10": 8, "gt": 8, "goldenspike_train_data": 8, "aloc": 8, "15": 8, "mag_u_lsst": 8, "mag_err_u_lsst": 8, "mag_g_lsst": 8, "mag_err_g_lsst": 8, "mag_r_lsst": 8, "mag_err_r_lsst": 8, "mag_i_lsst": 8, "mag_err_i_lsst": 8, "mag_z_lsst": 8, "mag_err_z_lsst": 8, "mag_y_lsst": 8, "mag_err_y_lsst": 8, "769521": 8, "26": 8, "496852": 8, "288986": 8, "25": 8, "863170": 8, "056997": 8, "24": 8, "729555": 8, "020702": 8, "23": 8, "610683": 8, "012011": 8, "143518": 8, "013714": 8, "22": 8, "915156": 8, "024561": 8, "088857": 8, "258727": 8, "237964": 8, "509524": 8, "041668": 8, "469344": 8, "016648": 8, "532860": 8, "011344": 8, "546680": 8, "008992": 8, "070255": 8, "012282": 8, "333098": 8, "373855": 8, "112257": 8, "943293": 8, "025359": 8, "524998": 8, "017431": 8, "013649": 8, "016486": 8, "733274": 8, "022315": 8, "102123": 8, "028906": 8, "986374": 8, "050653": 8, "200164": 8, "641624": 8, "046837": 8, "161078": 8, "030090": 8, "460152": 8, "024047": 8, "977239": 8, "027567": 8, "831974": 8, "055121": 8, "60": 8, "474281": 8, "048056": 8, "444683": 8, "428211": 8, "093854": 8, "839984": 8, "022755": 8, "209226": 8, "019403": 8, "855082": 8, "024787": 8, "507456": 8, "041329": 8, "61": 8, "561923": 8, "680480": 8, "061182": 8, "958609": 8, "011430": 8, "900135": 8, "006346": 8, "143581": 8, "005820": 8, "21": 8, "867563": 8, "006465": 8, "612692": 8, "008967": 8, "62": 8, "16": 8, "frame": 8, "preserv": 8, "17": 8, "rangeindex": 8, "total": 8, "non": 8, "null": 8, "count": 8, "dtype": 8, "f8": 8, "float64": 8, "usag": 8, "kb": 8, "18": 8, "describ": 8, "000000": 8, "mean": 8, "780298": 8, "446008": 8, "188050": 8, "820000": 8, "038182": 8, "003970": 8, "018770": 8, "384804": 8, "016165": 8, "074481": 8, "021478": 8, "932354": 8, "054682": 8, "std": 8, "355365": 8, "269277": 8, "193747": 8, "314112": 8, "036398": 8, "387358": 8, "013750": 8, "381587": 8, "010069": 8, "400673": 8, "014961": 8, "540284": 8, "115875": 8, "764600": 8, "577029": 8, "133815": 8, "069970": 8, "028309": 8, "470215": 8, "016660": 8, "748506": 8, "013390": 8, "514185": 8, "018540": 8, "293384": 8, "034199": 8, "75": 8, "948494": 8, "263284": 8, "238859": 8, "705486": 8, "049576": 8, "985225": 8, "025802": 8, "488654": 8, "024650": 8, "165944": 8, "032557": 8, "993010": 8, "063585": 8, "max": 8, "755764": 8, "28": 8, "482391": 8, "154073": 8, "296152": 8, "198195": 8, "036958": 8, "065360": 8, "949645": 8, "036932": 8, "693132": 8, "051883": 8, "342151": 8, "909230": 8, "In": 8, "prod": 8, "detail": 8, "specif": 8, "prefer": 8, "flexibl": 8, "choos": 8, "print": 8, "20": 8, "length": 8, "redshiftmag_u_lsstmag_err_u_lsstmag_g_lsstmag_err_g_lsstmag_r_lsstmag_err_r_lsstmag_i_lsstmag_err_i_lsstmag_z_lsstmag_err_z_lsstmag_y_lsstmag_err_y_lsst": 8, "float64float64float64float64float64float64float64float64float64float64float64float64float64": 8, "769521057605743426": 8, "496851733359980": 8, "2889864016451496625": 8, "8631701801485930": 8, "056996849251325224": 8, "729555232665350": 8, "02070246989947576223": 8, "6106832612475230": 8, "01201139145700786723": 8, "143517979331420": 8, "01371427288818984422": 8, "9151560685081040": 8, "02456124411372624": 8, "474280714988708527": 8, "0480560874079860": 8, "444682506357735426": 8, "4282112805191750": 8, "0938543394596348124": 8, "839983603182140": 8, "0227549353128951224": 8, "20922601749360": 8, "0194026127508123923": 8, "8550822431599340": 8, "0247873017109994123": 8, "5074559295742880": 8, "041328512368478044": 8, "561922669410705624": 8, "6804795305431630": 8, "06118153192966563323": 8, "9586089979737020": 8, "0114295663681752622": 8, "9001349679331020": 8, "00634586977358199822": 8, "1435806332706240": 8, "00581963097081042821": 8, "8675628493294060": 8, "00646548086334226921": 8, "612691594536260": 8, "008966510628950788": 8, "clean": 8, "del": 8, "handl": 8, "recap": 8, "context": 8, "spheric": 8, "measur": 8, "analog": 8, "simul": 8, "combin": 8, "sever": 8, "consid": 8, "tool": 8, "multi": 8, "recommend": 8, "add": 8, "identif": 8, "extra": 8, "mandatori": 8, "ascens": 8, "degre": 8, "declin": 8, "qualiti": 8, "integ": 8, "compil": 8, "differ": 8, "specz_subsample_gama_exampl": 8, "statist": 8, "ra": 8, "dec": 8, "err_z": 8, "flag_d": 8, "576000e": 8, "2576": 8, "105526e": 8, "154": 8, "526343": 8, "101865": 8, "224811": 8, "99": 8, "949534": 8, "006668e": 8, "70": 8, "783868": 8, "995036": 8, "102571": 8, "218947": 8, "103558e": 8, "180": 8, "140145": 8, "480830": 8, "217804": 8, "140619e": 8, "215": 8, "836583": 8, "170363": 8, "291810": 8, "176440e": 8, "223": 8, "497080": 8, "998180": 8, "728717": 8, "ha": 8, "quick": 8, "visual": 8, "properti": 8, "x": 8, "y": 8, "scatter": 8, "ax": 8, "xlabel": 8, "ylabel": 8, "spatial": 8, "photometr": 8, "offer": 8, "maker": 8, "build": 8, "custom": 8, "companion": 8, "pz_tsm_tutori": 8, "commonli": 8, "split": 8, "subset": 8, "purpos": 8, "previous": 8, "belong": 8, "trainin": 8, "clear": 8, "reproduc": 8, "level": 8, "imag": 8, "deep": 8, "learn": 8, "yet": 8, "observ": 8, "color": 8, "flux": 8, "train_goldenspik": 8, "29": 8, "30": 8, "31": 8, "strongli": 8, "so": 8, "constraint": 8, "neural": 8, "net": 8, "weight": 8, "decis": 8, "tree": 8, "machin": 8, "sed": 8, "templat": 8, "transmiss": 8, "curv": 8, "theoret": 8, "grid": 8, "bayesian": 8, "prior": 8, "put": 8, "togeth": 8, "tar": 8, "gz": 8, "33": 8, "pz_valid_fzboost": 8, "necessarili": 8, "open": 8, "sampl": 8, "vari": 8, "phto": 8, "size": 8, "therefor": 8, "doe": 8, "larg": 8, "someth": 8, "miss": 8, "here": 8, "issu": 8}, "objects": {"": [[4, 0, 0, "-", "pzserver"]], "pzserver": [[4, 1, 1, "", "Catalog"], [4, 1, 1, "", "PzServer"], [4, 1, 1, "", "SpeczCatalog"], [4, 1, 1, "", "TrainingSet"], [1, 0, 0, "-", "catalog"], [2, 0, 0, "-", "communicate"], [3, 0, 0, "-", "core"]], "pzserver.Catalog": [[4, 2, 1, "", "display_metadata"]], "pzserver.PzServer": [[4, 2, 1, "", "__transform_df"], [4, 2, 1, "", "combine_specz_catalogs"], [4, 2, 1, "", "display_product_metadata"], [4, 2, 1, "", "display_product_types"], [4, 2, 1, "", "display_products_list"], [4, 2, 1, "", "display_releases"], [4, 2, 1, "", "display_users"], [4, 2, 1, "", "download_product"], [4, 2, 1, "", "get_product"], [4, 2, 1, "", "get_product_metadata"], [4, 2, 1, "", "get_product_types"], [4, 2, 1, "", "get_products_list"], [4, 2, 1, "", "get_releases"], [4, 2, 1, "", "get_users"], [4, 2, 1, "", "make_training_set"]], "pzserver.SpeczCatalog": [[4, 2, 1, "", "plot"]], "pzserver.TrainingSet": [[4, 2, 1, "", "plot"]], "pzserver.catalog": [[1, 1, 1, "", "Catalog"], [1, 1, 1, "", "SpeczCatalog"], [1, 1, 1, "", "TrainingSet"]], "pzserver.catalog.Catalog": [[1, 2, 1, "", "display_metadata"]], "pzserver.catalog.SpeczCatalog": [[1, 2, 1, "", "plot"]], "pzserver.catalog.TrainingSet": [[1, 2, 1, "", "plot"]], "pzserver.communicate": [[2, 1, 1, "", "PzRequests"]], "pzserver.communicate.PzRequests": [[2, 3, 1, "", "_base_api_url"], [2, 2, 1, "", "_check_filters"], [2, 2, 1, "", "_check_response"], [2, 2, 1, "", "_check_token"], [2, 2, 1, "", "_delete_request"], [2, 2, 1, "", "_download_request"], [2, 3, 1, "", "_enviroments"], [2, 3, 1, "", "_filter_options"], [2, 2, 1, "", "_get_request"], [2, 3, 1, "", "_mapping_filters"], [2, 2, 1, "", "_options_request"], [2, 2, 1, "", "_post_request"], [2, 2, 1, "", "_reverse_filters"], [2, 2, 1, "", "_send_request"], [2, 3, 1, "", "_token"], [2, 2, 1, "", "download_main_file"], [2, 2, 1, "", "download_product"], [2, 2, 1, "", "get"], [2, 2, 1, "", "get_all"], [2, 2, 1, "", "get_entities"], [2, 2, 1, "", "get_main_file_info"], [2, 2, 1, "", "get_products"], [2, 2, 1, "", "options"], [2, 2, 1, "", "safe_list_get"]], "pzserver.core": [[3, 4, 1, "", "FONTCOLOREND"], [3, 4, 1, "", "FONTCOLORERR"], [3, 1, 1, "", "PzServer"]], "pzserver.core.PzServer": [[3, 2, 1, "", "__transform_df"], [3, 2, 1, "", "combine_specz_catalogs"], [3, 2, 1, "", "display_product_metadata"], [3, 2, 1, "", "display_product_types"], [3, 2, 1, "", "display_products_list"], [3, 2, 1, "", "display_releases"], [3, 2, 1, "", "display_users"], [3, 2, 1, "", "download_product"], [3, 2, 1, "", "get_product"], [3, 2, 1, "", "get_product_metadata"], [3, 2, 1, "", "get_product_types"], [3, 2, 1, "", "get_products_list"], [3, 2, 1, "", "get_releases"], [3, 2, 1, "", "get_users"], [3, 2, 1, "", "make_training_set"]]}, "objtypes": {"0": "py:module", "1": "py:class", "2": "py:method", "3": "py:attribute", "4": "py:data"}, "objnames": {"0": ["py", "module", "Python module"], "1": ["py", "class", "Python class"], "2": ["py", "method", "Python method"], "3": ["py", "attribute", "Python attribute"], "4": ["py", "data", "Python data"]}, "titleterms": {"api": [0, 8], "refer": 0, "pzserver": [1, 2, 3, 4], "catalog": [1, 8], "modul": [1, 2, 3], "content": [1, 2, 3, 4, 5, 8], "class": [1, 2, 3, 4], "commun": 2, "core": 3, "attribut": 3, "submodul": 4, "packag": 4, "welcom": 5, "photo": [5, 8], "z": [5, 8], "server": [5, 8], "librari": [5, 8], "": 5, "document": 5, "indic": 5, "tabl": [5, 8], "acknowledg": 5, "instal": 6, "via": 6, "pip": 6, "For": 6, "develop": 6, "notebook": [7, 8], "tutori": 8, "The": 8, "pz": 8, "introduct": 8, "how": 8, "upload": 8, "data": 8, "product": 8, "download": 8, "from": 8, "python": 8, "lib": 8, "get": 8, "gener": 8, "info": 8, "displai": 8, "metadata": 8, "zip": 8, "file": 8, "share": 8, "other": 8, "rsp": 8, "user": 8, "retriev": 8, "work": 8, "memori": 8, "type": 8, "spec": 8, "train": 8, "set": 8, "valid": 8, "result": 8, "list": 8, "avail": 8, "given": 8, "feedback": 8}, "envversion": {"sphinx.domains.c": 2, "sphinx.domains.changeset": 1, "sphinx.domains.citation": 1, "sphinx.domains.cpp": 8, "sphinx.domains.index": 1, "sphinx.domains.javascript": 2, "sphinx.domains.math": 2, "sphinx.domains.python": 3, "sphinx.domains.rst": 2, "sphinx.domains.std": 2, "sphinx.ext.viewcode": 1, "nbsphinx": 4, "sphinx": 57}, "alltitles": {"API Reference": [[0, "api-reference"]], "pzserver.catalog": [[1, "module-pzserver.catalog"]], "Module Contents": [[1, "module-contents"], [2, "module-contents"], [3, "module-contents"]], "Classes": [[1, "classes"], [2, "classes"], [3, "classes"], [4, "classes"]], "pzserver.communicate": [[2, "module-pzserver.communicate"]], "pzserver.core": [[3, "module-pzserver.core"]], "Attributes": [[3, "attributes"]], "pzserver": [[4, "module-pzserver"]], "Submodules": [[4, "submodules"]], "Package Contents": [[4, "package-contents"]], "Welcome to Photo-z Server Library\u2019s documentation!": [[5, "welcome-to-photo-z-server-library-s-documentation"]], "Contents:": [[5, null]], "Indices and tables": [[5, "indices-and-tables"]], "Acknowledgments": [[5, "acknowledgments"]], "Installation": [[6, "installation"]], "Via pip": [[6, "via-pip"]], "For developers": [[6, "for-developers"]], "Notebooks": [[7, "notebooks"]], "Photo-z Server - Tutorial Notebook": [[8, "Photo-z-Server---Tutorial-Notebook"]], "Notebook contents": [[8, "Notebook-contents"]], "The PZ Server": [[8, "The-PZ-Server"]], "Introduction": [[8, "Introduction"]], "How to upload a data product to the PZ Server": [[8, "How-to-upload-a-data-product-to-the-PZ-Server"]], "How to download a data product from the PZ Server": [[8, "How-to-download-a-data-product-from-the-PZ-Server"]], "The PZ Server API (Python library pz-server-lib)": [[8, "The-PZ-Server-API-(Python-library-pz-server-lib)"]], "How to get general info from PZ Server": [[8, "How-to-get-general-info-from-PZ-Server"]], "How to display the metadata of a data product": [[8, "How-to-display-the-metadata-of-a-data-product"]], "How to download data products as .zip files": [[8, "How-to-download-data-products-as-.zip-files"]], "How to share data products with other RSP users": [[8, "How-to-share-data-products-with-other-RSP-users"]], "How to retrieve contents of data products (work on memory)": [[8, "How-to-retrieve-contents-of-data-products-(work-on-memory)"]], "Product types": [[8, "Product-types"]], "Spec-z Catalog": [[8, "Spec-z-Catalog"]], "Training Sets": [[8, "Training-Sets"]], "Photo-z Validation Results": [[8, "Photo-z-Validation-Results"]], "List Validation Results available on PZ Server": [[8, "List-Validation-Results-available-on-PZ-Server"]], "Display metadata of a given data product of Photo-z Validation Results": [[8, "Display-metadata-of-a-given-data-product-of-Photo-z-Validation-Results"]], "Retrieve a given Photo-z Validation Results: download file": [[8, "Retrieve-a-given-Photo-z-Validation-Results:-download-file"]], "Photo-z Tables": [[8, "Photo-z-Tables"]], "Users feedback": [[8, "Users-feedback"]]}, "indexentries": {"catalog (class in pzserver.catalog)": [[1, "pzserver.catalog.Catalog"]], "speczcatalog (class in pzserver.catalog)": [[1, "pzserver.catalog.SpeczCatalog"]], "trainingset (class in pzserver.catalog)": [[1, "pzserver.catalog.TrainingSet"]], "display_metadata() (catalog method)": [[1, "pzserver.catalog.Catalog.display_metadata"], [4, "pzserver.Catalog.display_metadata"]], "module": [[1, "module-pzserver.catalog"], [2, "module-pzserver.communicate"], [3, "module-pzserver.core"], [4, "module-pzserver"]], "plot() (speczcatalog method)": [[1, "pzserver.catalog.SpeczCatalog.plot"], [4, "pzserver.SpeczCatalog.plot"]], "plot() (trainingset method)": [[1, "pzserver.catalog.TrainingSet.plot"], [4, "pzserver.TrainingSet.plot"]], "pzserver.catalog": [[1, "module-pzserver.catalog"]], "pzrequests (class in pzserver.communicate)": [[2, "pzserver.communicate.PzRequests"]], "_base_api_url (pzrequests attribute)": [[2, "pzserver.communicate.PzRequests._base_api_url"]], "_check_filters() (pzrequests method)": [[2, "pzserver.communicate.PzRequests._check_filters"]], "_check_response() (pzrequests method)": [[2, "pzserver.communicate.PzRequests._check_response"]], "_check_token() (pzrequests method)": [[2, "pzserver.communicate.PzRequests._check_token"]], "_delete_request() (pzrequests method)": [[2, "pzserver.communicate.PzRequests._delete_request"]], "_download_request() (pzrequests method)": [[2, "pzserver.communicate.PzRequests._download_request"]], "_enviroments (pzrequests attribute)": [[2, "pzserver.communicate.PzRequests._enviroments"]], "_filter_options (pzrequests attribute)": [[2, "pzserver.communicate.PzRequests._filter_options"]], "_get_request() (pzrequests method)": [[2, "pzserver.communicate.PzRequests._get_request"]], "_mapping_filters (pzrequests attribute)": [[2, "pzserver.communicate.PzRequests._mapping_filters"]], "_options_request() (pzrequests method)": [[2, "pzserver.communicate.PzRequests._options_request"]], "_post_request() (pzrequests method)": [[2, "pzserver.communicate.PzRequests._post_request"]], "_reverse_filters() (pzrequests method)": [[2, "pzserver.communicate.PzRequests._reverse_filters"]], "_send_request() (pzrequests method)": [[2, "pzserver.communicate.PzRequests._send_request"]], "_token (pzrequests attribute)": [[2, "pzserver.communicate.PzRequests._token"]], "download_main_file() (pzrequests method)": [[2, "pzserver.communicate.PzRequests.download_main_file"]], "download_product() (pzrequests method)": [[2, "pzserver.communicate.PzRequests.download_product"]], "get() (pzrequests method)": [[2, "pzserver.communicate.PzRequests.get"]], "get_all() (pzrequests method)": [[2, "pzserver.communicate.PzRequests.get_all"]], "get_entities() (pzrequests method)": [[2, "pzserver.communicate.PzRequests.get_entities"]], "get_main_file_info() (pzrequests method)": [[2, "pzserver.communicate.PzRequests.get_main_file_info"]], "get_products() (pzrequests method)": [[2, "pzserver.communicate.PzRequests.get_products"]], "options() (pzrequests method)": [[2, "pzserver.communicate.PzRequests.options"]], "pzserver.communicate": [[2, "module-pzserver.communicate"]], "safe_list_get() (pzrequests static method)": [[2, "pzserver.communicate.PzRequests.safe_list_get"]], "fontcolorend (in module pzserver.core)": [[3, "pzserver.core.FONTCOLOREND"]], "fontcolorerr (in module pzserver.core)": [[3, "pzserver.core.FONTCOLORERR"]], "pzserver (class in pzserver.core)": [[3, "pzserver.core.PzServer"]], "__transform_df() (pzserver method)": [[3, "pzserver.core.PzServer.__transform_df"], [4, "pzserver.PzServer.__transform_df"]], "combine_specz_catalogs() (pzserver method)": [[3, "pzserver.core.PzServer.combine_specz_catalogs"], [4, "pzserver.PzServer.combine_specz_catalogs"]], "display_product_metadata() (pzserver method)": [[3, "pzserver.core.PzServer.display_product_metadata"], [4, "pzserver.PzServer.display_product_metadata"]], "display_product_types() (pzserver method)": [[3, "pzserver.core.PzServer.display_product_types"], [4, "pzserver.PzServer.display_product_types"]], "display_products_list() (pzserver method)": [[3, "pzserver.core.PzServer.display_products_list"], [4, "pzserver.PzServer.display_products_list"]], "display_releases() (pzserver method)": [[3, "pzserver.core.PzServer.display_releases"], [4, "pzserver.PzServer.display_releases"]], "display_users() (pzserver method)": [[3, "pzserver.core.PzServer.display_users"], [4, "pzserver.PzServer.display_users"]], "download_product() (pzserver method)": [[3, "pzserver.core.PzServer.download_product"], [4, "pzserver.PzServer.download_product"]], "get_product() (pzserver method)": [[3, "pzserver.core.PzServer.get_product"], [4, "pzserver.PzServer.get_product"]], "get_product_metadata() (pzserver method)": [[3, "pzserver.core.PzServer.get_product_metadata"], [4, "pzserver.PzServer.get_product_metadata"]], "get_product_types() (pzserver method)": [[3, "pzserver.core.PzServer.get_product_types"], [4, "pzserver.PzServer.get_product_types"]], "get_products_list() (pzserver method)": [[3, "pzserver.core.PzServer.get_products_list"], [4, "pzserver.PzServer.get_products_list"]], "get_releases() (pzserver method)": [[3, "pzserver.core.PzServer.get_releases"], [4, "pzserver.PzServer.get_releases"]], "get_users() (pzserver method)": [[3, "pzserver.core.PzServer.get_users"], [4, "pzserver.PzServer.get_users"]], "make_training_set() (pzserver method)": [[3, "pzserver.core.PzServer.make_training_set"], [4, "pzserver.PzServer.make_training_set"]], "pzserver.core": [[3, "module-pzserver.core"]], "catalog (class in pzserver)": [[4, "pzserver.Catalog"]], "pzserver (class in pzserver)": [[4, "pzserver.PzServer"]], "speczcatalog (class in pzserver)": [[4, "pzserver.SpeczCatalog"]], "trainingset (class in pzserver)": [[4, "pzserver.TrainingSet"]], "pzserver": [[4, "module-pzserver"]]}}) \ No newline at end of file