{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Color-magnitude diagram: narrowband filters" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "In this tutorial, we will compute synthetic photometry for the narrowband H2 and H3 filters of VLT/SPHERE. We will use empirical data from the [SpeX Prism Spectral Library](http://pono.ucsd.edu/~adam/browndwarfs/spexprism/index_old.html) and theoretical isochrones and spectra from the AMES-Cond and AMES-Dusty models. The synthetic colors and magnitudes are compared with the photometric data of directly imaged companions in a color-magnitude diagram." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Getting started" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We start by importing the required Python modules." ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "import urllib.request\n", "import numpy as np\n", "import species" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Next, we initiate the *species* workflow with `SpeciesInit`. This will create the configuration file with default values and the HDF5 database." ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Initiating species v0.3.1... [DONE]\n", "Creating species_config.ini... [DONE]\n", "Database: /Users/tomasstolker/applications/species/docs/tutorials/species_database.hdf5\n", "Data folder: /Users/tomasstolker/applications/species/docs/tutorials/data\n", "Working folder: /Users/tomasstolker/applications/species/docs/tutorials\n", "Creating species_database.hdf5... [DONE]\n", "Creating data folder... [DONE]\n" ] }, { "data": { "text/plain": [ "" ] }, "execution_count": 2, "metadata": {}, "output_type": "execute_result" } ], "source": [ "species.SpeciesInit()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Later on, we will interpolate the isochrone data at an age of 20 Myr for 100 logarithmically-spaced masses between 1 MJup and 1000 MJup." ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [], "source": [ "age = 20. # (Myr)\n", "masses = np.logspace(0., 3., 100) # (Mjup)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Adding data and models" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We will now add the required data to the database by first creating an instance of `Database`." ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [], "source": [ "database = species.Database()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The [photometric data of directly imaged companions](https://github.com/tomasstolker/species/blob/master/species/data/companions.py) that is available with *species* is added by using the `add_companion` method with `name=None`. Alternative, `add_object` can be used to manually add photometric and spectroscopic data of an individual object." ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Downloading Vega spectrum (270 kB)... [DONE]\n", "Adding Vega spectrum... [DONE]\n", "Adding filter: LCO/VisAO.Ys... [DONE]\n", "Adding filter: Paranal/NACO.J... [DONE]\n", "Adding filter: Gemini/NICI.ED286... [DONE]\n", "Adding filter: Paranal/NACO.H... [DONE]\n", "Adding filter: Paranal/NACO.Ks... [DONE]\n", "Adding filter: Paranal/NACO.NB374... [DONE]\n", "Adding filter: Paranal/NACO.Lp... [DONE]\n", "Adding filter: Paranal/NACO.NB405... [DONE]\n", "Adding filter: Paranal/NACO.Mp... [DONE]\n", "Adding filter: Paranal/SPHERE.IRDIS_D_K12_1... [DONE]\n", "Adding filter: Paranal/SPHERE.IRDIS_D_K12_2... [DONE]\n", "Adding object: beta Pic b\n", " - Distance (pc) = 19.75 +/- 0.13\n", " - LCO/VisAO.Ys:\n", " - Apparent magnitude = 15.53 +/- 0.34\n", " - Flux (W m-2 um-1) = 4.27e-15 +/- 1.36e-15\n", " - Paranal/NACO.J:\n", " - Apparent magnitude = 14.11 +/- 0.21\n", " - Flux (W m-2 um-1) = 6.87e-15 +/- 1.34e-15\n", " - Gemini/NICI.ED286:\n", " - Apparent magnitude = 13.18 +/- 0.15\n", " - Flux (W m-2 um-1) = 6.99e-15 +/- 9.69e-16\n", " - Paranal/NACO.H:\n", " - Apparent magnitude = 13.32 +/- 0.14\n", " - Flux (W m-2 um-1) = 5.47e-15 +/- 7.08e-16\n", " - Paranal/NACO.Ks:\n", " - Apparent magnitude = 12.64 +/- 0.11\n", " - Flux (W m-2 um-1) = 4.04e-15 +/- 4.10e-16\n", " - Paranal/NACO.NB374:\n", " - Apparent magnitude = 11.25 +/- 0.23\n", " - Flux (W m-2 um-1) = 1.69e-15 +/- 3.61e-16\n", " - Paranal/NACO.Lp:\n", " - Apparent magnitude = 11.30 +/- 0.06\n", " - Flux (W m-2 um-1) = 1.59e-15 +/- 8.79e-17\n", " - Paranal/NACO.NB405:\n", " - Apparent magnitude = 10.98 +/- 0.05\n", " - Flux (W m-2 um-1) = 1.61e-15 +/- 7.42e-17\n", " - Paranal/NACO.Mp:\n", " - Apparent magnitude = 11.10 +/- 0.12\n", " - Flux (W m-2 um-1) = 7.86e-16 +/- 8.70e-17\n", " - Paranal/SPHERE.IRDIS_D_K12_1:\n", " - Apparent magnitude = 12.57 +/- 0.00\n", " - Flux (W m-2 um-1) = 4.56e-15 +/- 1.26e-17\n", " - Paranal/SPHERE.IRDIS_D_K12_2:\n", " - Apparent magnitude = 12.21 +/- 0.00\n", " - Flux (W m-2 um-1) = 4.92e-15 +/- 9.05e-18\n", "Adding filter: Paranal/SPHERE.IRDIS_D_H23_2... [DONE]\n", "Adding filter: Paranal/SPHERE.IRDIS_D_H23_3... [DONE]\n", "Adding object: HIP 65426 b\n", " - Distance (pc) = 109.21 +/- 0.75\n", " - Paranal/SPHERE.IRDIS_D_H23_2:\n", " - Apparent magnitude = 17.94 +/- 0.05\n", " - Flux (W m-2 um-1) = 8.73e-17 +/- 4.02e-18\n", " - Paranal/SPHERE.IRDIS_D_H23_3:\n", " - Apparent magnitude = 17.58 +/- 0.06\n", " - Flux (W m-2 um-1) = 1.03e-16 +/- 5.70e-18\n", " - Paranal/SPHERE.IRDIS_D_K12_1:\n", " - Apparent magnitude = 17.01 +/- 0.09\n", " - Flux (W m-2 um-1) = 7.63e-17 +/- 6.33e-18\n", " - Paranal/SPHERE.IRDIS_D_K12_2:\n", " - Apparent magnitude = 16.79 +/- 0.09\n", " - Flux (W m-2 um-1) = 7.21e-17 +/- 5.98e-18\n", " - Paranal/NACO.Lp:\n", " - Apparent magnitude = 15.33 +/- 0.12\n", " - Flux (W m-2 um-1) = 3.88e-17 +/- 4.30e-18\n", " - Paranal/NACO.NB405:\n", " - Apparent magnitude = 15.23 +/- 0.22\n", " - Flux (W m-2 um-1) = 3.21e-17 +/- 6.55e-18\n", " - Paranal/NACO.Mp:\n", " - Apparent magnitude = 14.65 +/- 0.29\n", " - Flux (W m-2 um-1) = 2.99e-17 +/- 8.07e-18\n", "Adding filter: MKO/NSFCam.J... [DONE]\n", "Adding filter: MKO/NSFCam.H... [DONE]\n", "Adding filter: MKO/NSFCam.K... [DONE]\n", "Adding filter: Paranal/SPHERE.IRDIS_B_H... [DONE]\n", "Adding filter: Keck/NIRC2.Lp... [DONE]\n", "Adding filter: Keck/NIRC2.Ms... [DONE]\n", "Adding object: 51 Eri b\n", " - Distance (pc) = 29.78 +/- 0.12\n", " - MKO/NSFCam.J:\n", " - Apparent magnitude = 19.04 +/- 0.40\n", " - Flux (W m-2 um-1) = 7.52e-17 +/- 2.83e-17\n", " - MKO/NSFCam.H:\n", " - Apparent magnitude = 18.99 +/- 0.21\n", " - Flux (W m-2 um-1) = 3.12e-17 +/- 6.07e-18\n", " - MKO/NSFCam.K:\n", " - Apparent magnitude = 18.67 +/- 0.19\n", " - Flux (W m-2 um-1) = 1.42e-17 +/- 2.49e-18\n", " - Paranal/SPHERE.IRDIS_B_H:\n", " - Apparent magnitude = 19.45 +/- 0.29\n", " - Flux (W m-2 um-1) = 2.06e-17 +/- 5.57e-18\n", " - Paranal/SPHERE.IRDIS_D_H23_2:\n", " - Apparent magnitude = 18.41 +/- 0.26\n", " - Flux (W m-2 um-1) = 5.66e-17 +/- 1.37e-17\n", " - Paranal/SPHERE.IRDIS_D_K12_1:\n", " - Apparent magnitude = 17.55 +/- 0.14\n", " - Flux (W m-2 um-1) = 4.64e-17 +/- 6.00e-18\n", " - Keck/NIRC2.Lp:\n", " - Apparent magnitude = 16.20 +/- 0.11\n", " - Flux (W m-2 um-1) = 1.79e-17 +/- 1.81e-18\n", " - Keck/NIRC2.Ms:\n", " - Apparent magnitude = 16.10 +/- 0.50\n", " - Flux (W m-2 um-1) = 8.47e-18 +/- 4.04e-18\n", "Adding filter: Subaru/CIAO.z... [DONE]\n", "Adding filter: Paranal/SPHERE.IRDIS_B_J..." ] }, { "name": "stderr", "output_type": "stream", "text": [ "/Users/tomasstolker/applications/species/species/data/filters.py:170: UserWarning: The minimum transmission value of Subaru/CIAO.z is smaller than zero (-1.80e-03). Wavelengths with negative transmission values will be removed.\n", " warnings.warn(f'The minimum transmission value of {filter_id} is smaller than zero '\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ " [DONE]\n", "Adding filter: Keck/NIRC2.H... [DONE]\n", "Adding filter: Keck/NIRC2.Ks... [DONE]\n", "Adding object: HR 8799 b\n", " - Distance (pc) = 41.29 +/- 0.15\n", " - Subaru/CIAO.z:\n", " - Apparent magnitude = 21.22 +/- 0.29\n", " - Flux (W m-2 um-1) = 1.93e-17 +/- 5.22e-18\n", " - Paranal/SPHERE.IRDIS_B_J:\n", " - Apparent magnitude = 19.78 +/- 0.09\n", " - Flux (W m-2 um-1) = 3.90e-17 +/- 3.24e-18\n", " - Keck/NIRC2.H:\n", " - Apparent magnitude = 18.05 +/- 0.09\n", " - Flux (W m-2 um-1) = 7.32e-17 +/- 6.08e-18\n", " - Paranal/SPHERE.IRDIS_D_H23_2:\n", " - Apparent magnitude = 18.08 +/- 0.14\n", " - Flux (W m-2 um-1) = 7.67e-17 +/- 9.92e-18\n", " - Paranal/SPHERE.IRDIS_D_H23_3:\n", " - Apparent magnitude = 17.78 +/- 0.10\n", " - Flux (W m-2 um-1) = 8.57e-17 +/- 7.91e-18\n", " - Keck/NIRC2.Ks:\n", " - Apparent magnitude = 17.03 +/- 0.08\n", " - Flux (W m-2 um-1) = 6.98e-17 +/- 5.15e-18\n", " - Paranal/SPHERE.IRDIS_D_K12_1:\n", " - Apparent magnitude = 17.15 +/- 0.06\n", " - Flux (W m-2 um-1) = 6.71e-17 +/- 3.71e-18\n", " - Paranal/SPHERE.IRDIS_D_K12_2:\n", " - Apparent magnitude = 16.97 +/- 0.09\n", " - Flux (W m-2 um-1) = 6.11e-17 +/- 5.07e-18\n", " - Paranal/NACO.Lp:\n", " - Apparent magnitude = 15.52 +/- 0.10\n", " - Flux (W m-2 um-1) = 3.26e-17 +/- 3.01e-18\n", " - Paranal/NACO.NB405:\n", " - Apparent magnitude = 14.82 +/- 0.18\n", " - Flux (W m-2 um-1) = 4.69e-17 +/- 7.80e-18\n", " - Keck/NIRC2.Ms:\n", " - Apparent magnitude = 16.05 +/- 0.30\n", " - Flux (W m-2 um-1) = 8.87e-18 +/- 2.48e-18\n", "Adding object: HR 8799 c\n", " - Distance (pc) = 41.29 +/- 0.15\n", " - Paranal/SPHERE.IRDIS_B_J:\n", " - Apparent magnitude = 18.60 +/- 0.13\n", " - Flux (W m-2 um-1) = 1.16e-16 +/- 1.39e-17\n", " - Keck/NIRC2.H:\n", " - Apparent magnitude = 17.06 +/- 0.13\n", " - Flux (W m-2 um-1) = 1.82e-16 +/- 2.19e-17\n", " - Paranal/SPHERE.IRDIS_D_H23_2:\n", " - Apparent magnitude = 17.09 +/- 0.12\n", " - Flux (W m-2 um-1) = 1.91e-16 +/- 2.12e-17\n", " - Paranal/SPHERE.IRDIS_D_H23_3:\n", " - Apparent magnitude = 16.78 +/- 0.10\n", " - Flux (W m-2 um-1) = 2.15e-16 +/- 1.99e-17\n", " - Keck/NIRC2.Ks:\n", " - Apparent magnitude = 16.11 +/- 0.08\n", " - Flux (W m-2 um-1) = 1.63e-16 +/- 1.20e-17\n", " - Paranal/SPHERE.IRDIS_D_K12_1:\n", " - Apparent magnitude = 16.19 +/- 0.05\n", " - Flux (W m-2 um-1) = 1.62e-16 +/- 7.48e-18\n", " - Paranal/SPHERE.IRDIS_D_K12_2:\n", " - Apparent magnitude = 15.86 +/- 0.07\n", " - Flux (W m-2 um-1) = 1.70e-16 +/- 1.10e-17\n", " - Paranal/NACO.Lp:\n", " - Apparent magnitude = 14.65 +/- 0.11\n", " - Flux (W m-2 um-1) = 7.27e-17 +/- 7.38e-18\n", " - Paranal/NACO.NB405:\n", " - Apparent magnitude = 13.97 +/- 0.11\n", " - Flux (W m-2 um-1) = 1.03e-16 +/- 1.04e-17\n", " - Keck/NIRC2.Ms:\n", " - Apparent magnitude = 15.03 +/- 0.14\n", " - Flux (W m-2 um-1) = 2.27e-17 +/- 2.93e-18\n", "Adding object: HR 8799 d\n", " - Distance (pc) = 41.29 +/- 0.15\n", " - Paranal/SPHERE.IRDIS_B_J:\n", " - Apparent magnitude = 18.59 +/- 0.37\n", " - Flux (W m-2 um-1) = 1.17e-16 +/- 4.06e-17\n", " - Keck/NIRC2.H:\n", " - Apparent magnitude = 16.71 +/- 0.24\n", " - Flux (W m-2 um-1) = 2.52e-16 +/- 5.61e-17\n", " - Paranal/SPHERE.IRDIS_D_H23_2:\n", " - Apparent magnitude = 17.02 +/- 0.17\n", " - Flux (W m-2 um-1) = 2.04e-16 +/- 3.20e-17\n", " - Paranal/SPHERE.IRDIS_D_H23_3:\n", " - Apparent magnitude = 16.85 +/- 0.16\n", " - Flux (W m-2 um-1) = 2.02e-16 +/- 2.99e-17\n", " - Keck/NIRC2.Ks:\n", " - Apparent magnitude = 16.09 +/- 0.12\n", " - Flux (W m-2 um-1) = 1.66e-16 +/- 1.84e-17\n", " - Paranal/SPHERE.IRDIS_D_K12_1:\n", " - Apparent magnitude = 16.20 +/- 0.07\n", " - Flux (W m-2 um-1) = 1.61e-16 +/- 1.04e-17\n", " - Paranal/SPHERE.IRDIS_D_K12_2:\n", " - Apparent magnitude = 15.84 +/- 0.10\n", " - Flux (W m-2 um-1) = 1.73e-16 +/- 1.60e-17\n", " - Paranal/NACO.Lp:\n", " - Apparent magnitude = 14.55 +/- 0.14\n", " - Flux (W m-2 um-1) = 7.97e-17 +/- 1.03e-17\n", " - Paranal/NACO.NB405:\n", " - Apparent magnitude = 13.87 +/- 0.15\n", " - Flux (W m-2 um-1) = 1.12e-16 +/- 1.56e-17\n", " - Keck/NIRC2.Ms:\n", " - Apparent magnitude = 14.65 +/- 0.35\n", " - Flux (W m-2 um-1) = 3.22e-17 +/- 1.06e-17\n", "Adding object: HR 8799 e\n", " - Distance (pc) = 41.29 +/- 0.15\n", " - Paranal/SPHERE.IRDIS_B_J:\n", " - Apparent magnitude = 18.40 +/- 0.21\n", " - Flux (W m-2 um-1) = 1.39e-16 +/- 2.71e-17\n", " - Paranal/SPHERE.IRDIS_D_H23_2:\n", " - Apparent magnitude = 16.91 +/- 0.20\n", " - Flux (W m-2 um-1) = 2.25e-16 +/- 4.18e-17\n", " - Paranal/SPHERE.IRDIS_D_H23_3:\n", " - Apparent magnitude = 16.68 +/- 0.21\n", " - Flux (W m-2 um-1) = 2.36e-16 +/- 4.59e-17\n", " - Keck/NIRC2.Ks:\n", " - Apparent magnitude = 15.91 +/- 0.22\n", " - Flux (W m-2 um-1) = 1.96e-16 +/- 4.00e-17\n", " - Paranal/SPHERE.IRDIS_D_K12_1:\n", " - Apparent magnitude = 16.12 +/- 0.10\n", " - Flux (W m-2 um-1) = 1.73e-16 +/- 1.60e-17\n", " - Paranal/SPHERE.IRDIS_D_K12_2:\n", " - Apparent magnitude = 15.82 +/- 0.11\n", " - Flux (W m-2 um-1) = 1.76e-16 +/- 1.79e-17\n", " - Paranal/NACO.Lp:\n", " - Apparent magnitude = 14.49 +/- 0.21\n", " - Flux (W m-2 um-1) = 8.42e-17 +/- 1.64e-17\n", " - Paranal/NACO.NB405:\n", " - Apparent magnitude = 13.72 +/- 0.20\n", " - Flux (W m-2 um-1) = 1.29e-16 +/- 2.39e-17\n", "Adding filter: Gemini/GPI.H... [DONE]\n", "Adding filter: Gemini/GPI.K1... [DONE]\n", "Adding object: HD 95086 b\n", " - Distance (pc) = 86.44 +/- 0.24\n", " - Gemini/GPI.H:\n", " - Apparent magnitude = 20.51 +/- 0.25\n", " - Flux (W m-2 um-1) = 7.41e-18 +/- 1.72e-18\n", " - Gemini/GPI.K1:\n", " - Apparent magnitude = 18.99 +/- 0.20\n", " - Flux (W m-2 um-1) = 1.38e-17 +/- 2.56e-18\n", " - Paranal/NACO.Lp:\n", " - Apparent magnitude = 16.27 +/- 0.19\n", " - Flux (W m-2 um-1) = 1.63e-17 +/- 2.87e-18\n", "Adding object: PDS 70 b\n", " - Distance (pc) = 113.43 +/- 0.52\n", " - Paranal/SPHERE.IRDIS_D_H23_2:\n", " - Apparent magnitude = 18.12 +/- 0.21\n", " - Flux (W m-2 um-1) = 7.40e-17 +/- 1.44e-17\n", " - Paranal/SPHERE.IRDIS_D_H23_3:\n", " - Apparent magnitude = 17.97 +/- 0.18\n", " - Flux (W m-2 um-1) = 7.20e-17 +/- 1.20e-17\n", " - Paranal/SPHERE.IRDIS_D_K12_1:\n", " - Apparent magnitude = 16.66 +/- 0.04\n", " - Flux (W m-2 um-1) = 1.05e-16 +/- 3.88e-18\n", " - Paranal/SPHERE.IRDIS_D_K12_2:\n", " - Apparent magnitude = 16.37 +/- 0.06\n", " - Flux (W m-2 um-1) = 1.06e-16 +/- 5.87e-18\n", " - MKO/NSFCam.J:\n", " - Apparent magnitude = 20.04 +/- 0.09\n", " - Flux (W m-2 um-1) = 2.99e-17 +/- 2.48e-18\n", " - MKO/NSFCam.H:\n", " - Apparent magnitude = 18.24 +/- 0.04\n", " - Flux (W m-2 um-1) = 6.22e-17 +/- 2.29e-18\n", " - Paranal/NACO.Lp:\n", " - Apparent magnitude = 14.68 +/- 0.22\n", " - Flux (W m-2 um-1) = 7.07e-17 +/- 1.44e-17\n", " - Paranal/NACO.NB405:\n", " - Apparent magnitude = 14.68 +/- 0.27\n", " - Flux (W m-2 um-1) = 5.33e-17 +/- 1.34e-17\n", " - Paranal/NACO.Mp:\n", " - Apparent magnitude = 13.80 +/- 0.27\n", " - Flux (W m-2 um-1) = 6.53e-17 +/- 1.64e-17\n", " - Keck/NIRC2.Lp:\n", " - Apparent magnitude = 14.64 +/- 0.18\n", " - Flux (W m-2 um-1) = 7.52e-17 +/- 1.25e-17\n", "Adding object: PDS 70 c\n", " - Distance (pc) = 113.43 +/- 0.52\n", " - Paranal/NACO.NB405:\n", " - Apparent magnitude = 14.91 +/- 0.35\n", " - Flux (W m-2 um-1) = 4.31e-17 +/- 1.41e-17\n", " - Keck/NIRC2.Lp:\n", " - Apparent magnitude = 15.50 +/- 0.46\n", " - Flux (W m-2 um-1) = 3.40e-17 +/- 1.49e-17\n", "Adding filter: HST/NICMOS1.F090M... [DONE]\n", "Adding filter: HST/NICMOS1.F110M... [DONE]\n", "Adding filter: HST/NICMOS1.F145M... [DONE]\n", "Adding filter: HST/NICMOS1.F160W... [DONE]\n", "Adding object: 2M1207 b\n", " - Distance (pc) = 64.42 +/- 0.65\n", " - HST/NICMOS1.F090M:\n", " - Apparent magnitude = 22.58 +/- 0.35\n", " - Flux (W m-2 um-1) = 7.90e-18 +/- 2.59e-18\n", " - HST/NICMOS1.F110M:\n", " - Apparent magnitude = 20.61 +/- 0.15\n", " - Flux (W m-2 um-1) = 2.71e-17 +/- 3.76e-18\n", " - HST/NICMOS1.F145M:\n", " - Apparent magnitude = 19.05 +/- 0.03\n", " - Flux (W m-2 um-1) = 4.33e-17 +/- 1.20e-18\n", " - HST/NICMOS1.F160W:\n", " - Apparent magnitude = 18.27 +/- 0.02\n", " - Flux (W m-2 um-1) = 6.37e-17 +/- 1.17e-18\n", " - Paranal/NACO.J:\n", " - Apparent magnitude = 20.00 +/- 0.20\n", " - Flux (W m-2 um-1) = 3.03e-17 +/- 5.61e-18\n", " - Paranal/NACO.H:\n", " - Apparent magnitude = 18.09 +/- 0.21\n", " - Flux (W m-2 um-1) = 6.76e-17 +/- 1.32e-17\n", " - Paranal/NACO.Ks:\n", " - Apparent magnitude = 16.93 +/- 0.11\n", " - Flux (W m-2 um-1) = 7.78e-17 +/- 7.89e-18\n", " - Paranal/NACO.Lp:\n", " - Apparent magnitude = 15.28 +/- 0.14\n", " - Flux (W m-2 um-1) = 4.07e-17 +/- 5.26e-18\n", "Adding object: AB Pic B\n", " - Distance (pc) = 50.12 +/- 0.07\n", " - Paranal/NACO.J:\n", " - Apparent magnitude = 16.18 +/- 0.10\n", " - Flux (W m-2 um-1) = 1.02e-15 +/- 9.41e-17\n", " - Paranal/NACO.H:\n", " - Apparent magnitude = 14.69 +/- 0.10\n", " - Flux (W m-2 um-1) = 1.55e-15 +/- 1.43e-16\n", " - Paranal/NACO.Ks:\n", " - Apparent magnitude = 14.14 +/- 0.08\n", " - Flux (W m-2 um-1) = 1.02e-15 +/- 7.49e-17\n", "Adding object: HD 206893 B\n", " - Distance (pc) = 40.81 +/- 0.11\n", " - Paranal/SPHERE.IRDIS_B_H:\n", " - Apparent magnitude = 16.79 +/- 0.06\n", " - Flux (W m-2 um-1) = 2.39e-16 +/- 1.32e-17\n", " - Paranal/SPHERE.IRDIS_D_K12_1:\n", " - Apparent magnitude = 15.20 +/- 0.10\n", " - Flux (W m-2 um-1) = 4.04e-16 +/- 3.73e-17\n", " - Paranal/SPHERE.IRDIS_D_K12_2:\n", " - Apparent magnitude = 14.88 +/- 0.09\n", " - Flux (W m-2 um-1) = 4.19e-16 +/- 3.48e-17\n", " - Paranal/NACO.Lp:\n", " - Apparent magnitude = 13.79 +/- 0.31\n", " - Flux (W m-2 um-1) = 1.60e-16 +/- 4.64e-17\n", " - Paranal/NACO.NB405:\n", " - Apparent magnitude = 13.16 +/- 0.34\n", " - Flux (W m-2 um-1) = 2.16e-16 +/- 6.88e-17\n", " - Paranal/NACO.Mp:\n", " - Apparent magnitude = 12.77 +/- 0.27\n", " - Flux (W m-2 um-1) = 1.69e-16 +/- 4.24e-17\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Adding filter: Paranal/SPHERE.IRDIS_B_Ks... [DONE]\n", "Adding object: RZ Psc B\n", " - Distance (pc) = 195.86 +/- 4.03\n", " - Paranal/SPHERE.IRDIS_B_H (2 values):\n", " - Apparent magnitude = 13.71 +/- 0.14\n", " - Flux (W m-2 um-1) = 4.07e-15 +/- 5.26e-16\n", " - Apparent magnitude = 13.85 +/- 0.26\n", " - Flux (W m-2 um-1) = 3.58e-15 +/- 8.65e-16\n", " - Paranal/SPHERE.IRDIS_B_Ks:\n", " - Apparent magnitude = 13.51 +/- 0.20\n", " - Flux (W m-2 um-1) = 1.69e-15 +/- 3.12e-16\n", "Adding filter: HST/WFPC2-PC.F606W... [DONE]\n", "Adding filter: HST/WFPC2-PC.F814W... [DONE]\n", "Adding filter: HST/NICMOS2.F171M... [DONE]\n", "Adding filter: HST/NICMOS2.F190N... [DONE]\n", "Adding filter: HST/NICMOS2.F215N... [DONE]\n", "Adding filter: Magellan/VisAO.ip... [DONE]\n", "Adding filter: Magellan/VisAO.zp... [DONE]\n", "Adding filter: Magellan/VisAO.Ys... [DONE]\n", "Adding filter: Subaru/CIAO.CH4s... [DONE]\n", "Adding filter: Subaru/CIAO.K... [DONE]\n", "Adding filter: Subaru/CIAO.Lp... [DONE]\n", "Adding object: GQ Lup B\n", " - Distance (pc) = 151.82 +/- 1.10\n", " - HST/WFPC2-PC.F606W:\n", " - Apparent magnitude = 19.19 +/- 0.07\n", " - Flux (W m-2 um-1) = 5.94e-16 +/- 3.83e-17\n", " - HST/WFPC2-PC.F814W:\n", " - Apparent magnitude = 17.67 +/- 0.05\n", " - Flux (W m-2 um-1) = 1.02e-15 +/- 4.68e-17\n", " - HST/NICMOS2.F171M:\n", " - Apparent magnitude = 13.84 +/- 0.13\n", " - Flux (W m-2 um-1) = 2.91e-15 +/- 3.49e-16\n", " - HST/NICMOS2.F190N:\n", " - Apparent magnitude = 14.08 +/- 0.20\n", " - Flux (W m-2 um-1) = 1.65e-15 +/- 3.06e-16\n", " - HST/NICMOS2.F215N:\n", " - Apparent magnitude = 13.40 +/- 0.15\n", " - Flux (W m-2 um-1) = 1.94e-15 +/- 2.69e-16\n", " - Magellan/VisAO.ip:\n", " - Apparent magnitude = 18.89 +/- 0.24\n", " - Flux (W m-2 um-1) = 3.77e-16 +/- 8.40e-17\n", " - Magellan/VisAO.zp:\n", " - Apparent magnitude = 16.40 +/- 0.10\n", " - Flux (W m-2 um-1) = 2.33e-15 +/- 2.15e-16\n", " - Magellan/VisAO.Ys:\n", " - Apparent magnitude = 15.88 +/- 0.10\n", " - Flux (W m-2 um-1) = 3.09e-15 +/- 2.85e-16\n", " - Paranal/NACO.Ks (4 values):\n", " - Apparent magnitude = 13.47 +/- 0.03\n", " - Flux (W m-2 um-1) = 1.88e-15 +/- 5.36e-17\n", " - Apparent magnitude = 13.39 +/- 0.03\n", " - Flux (W m-2 um-1) = 2.03e-15 +/- 6.00e-17\n", " - Apparent magnitude = 13.50 +/- 0.05\n", " - Flux (W m-2 um-1) = 1.84e-15 +/- 8.47e-17\n", " - Apparent magnitude = 13.50 +/- 0.03\n", " - Flux (W m-2 um-1) = 1.83e-15 +/- 4.72e-17\n", " - Subaru/CIAO.CH4s:\n", " - Apparent magnitude = 13.76 +/- 0.26\n", " - Flux (W m-2 um-1) = 3.96e-15 +/- 9.58e-16\n", " - Subaru/CIAO.K:\n", " - Apparent magnitude = 13.37 +/- 0.12\n", " - Flux (W m-2 um-1) = 1.87e-15 +/- 2.07e-16\n", " - Subaru/CIAO.Lp:\n", " - Apparent magnitude = 12.44 +/- 0.22\n", " - Flux (W m-2 um-1) = 5.78e-16 +/- 1.18e-16\n", "Adding filter: Paranal/SPHERE.ZIMPOL_R_PRIM... [DONE]\n", "Adding filter: Paranal/SPHERE.ZIMPOL_I_PRIM... [DONE]\n", "Adding filter: Gemini/NIRI.H2S1v2-1-G0220... [DONE]\n", "Adding object: PZ Tel B\n", " - Distance (pc) = 47.13 +/- 0.13\n", " - Paranal/SPHERE.ZIMPOL_R_PRIM:\n", " - Apparent magnitude = 17.84 +/- 0.31\n", " - Flux (W m-2 um-1) = 1.83e-15 +/- 5.29e-16\n", " - Paranal/SPHERE.ZIMPOL_I_PRIM:\n", " - Apparent magnitude = 15.16 +/- 0.12\n", " - Flux (W m-2 um-1) = 1.09e-14 +/- 1.20e-15\n", " - Paranal/SPHERE.IRDIS_D_H23_2:\n", " - Apparent magnitude = 11.78 +/- 0.19\n", " - Flux (W m-2 um-1) = 2.54e-14 +/- 4.47e-15\n", " - Paranal/SPHERE.IRDIS_D_H23_3:\n", " - Apparent magnitude = 11.65 +/- 0.19\n", " - Flux (W m-2 um-1) = 2.43e-14 +/- 4.27e-15\n", " - Paranal/SPHERE.IRDIS_D_K12_1:\n", " - Apparent magnitude = 11.56 +/- 0.09\n", " - Flux (W m-2 um-1) = 1.15e-14 +/- 9.58e-16\n", " - Paranal/SPHERE.IRDIS_D_K12_2:\n", " - Apparent magnitude = 11.29 +/- 0.10\n", " - Flux (W m-2 um-1) = 1.14e-14 +/- 1.05e-15\n", " - Paranal/NACO.J:\n", " - Apparent magnitude = 12.47 +/- 0.20\n", " - Flux (W m-2 um-1) = 3.11e-14 +/- 5.76e-15\n", " - Paranal/NACO.H:\n", " - Apparent magnitude = 11.93 +/- 0.14\n", " - Flux (W m-2 um-1) = 1.97e-14 +/- 2.55e-15\n", " - Paranal/NACO.Ks:\n", " - Apparent magnitude = 11.53 +/- 0.07\n", " - Flux (W m-2 um-1) = 1.12e-14 +/- 7.25e-16\n", " - Paranal/NACO.Lp:\n", " - Apparent magnitude = 11.04 +/- 0.22\n", " - Flux (W m-2 um-1) = 2.02e-15 +/- 4.12e-16\n", " - Paranal/NACO.NB405:\n", " - Apparent magnitude = 10.94 +/- 0.07\n", " - Flux (W m-2 um-1) = 1.67e-15 +/- 1.08e-16\n", " - Paranal/NACO.Mp:\n", " - Apparent magnitude = 10.93 +/- 0.03\n", " - Flux (W m-2 um-1) = 9.19e-16 +/- 2.54e-17\n", " - Gemini/NICI.ED286:\n", " - Apparent magnitude = 11.68 +/- 0.14\n", " - Flux (W m-2 um-1) = 2.78e-14 +/- 3.60e-15\n", " - Gemini/NIRI.H2S1v2-1-G0220:\n", " - Apparent magnitude = 11.39 +/- 0.14\n", " - Flux (W m-2 um-1) = 1.06e-14 +/- 1.37e-15\n", "Adding filter: Subaru/CIAO.J... [DONE]\n", "Adding filter: Subaru/CIAO.H... [DONE]\n", "Adding filter: Subaru/CIAO.Ks... [DONE]\n", "Adding filter: LBT/LMIRCam.M_77K... [DONE]\n", "Adding object: kappa And b\n", " - Distance (pc) = 50.06 +/- 0.87\n", " - Subaru/CIAO.J:\n", " - Apparent magnitude = 15.86 +/- 0.21\n", " - Flux (W m-2 um-1) = 1.41e-15 +/- 2.74e-16\n", " - Subaru/CIAO.H:\n", " - Apparent magnitude = 14.95 +/- 0.13\n", " - Flux (W m-2 um-1) = 1.29e-15 +/- 1.55e-16\n", " - Subaru/CIAO.Ks:\n", " - Apparent magnitude = 14.32 +/- 0.09\n", " - Flux (W m-2 um-1) = 8.53e-16 +/- 7.08e-17\n", " - Keck/NIRC2.Lp:\n", " - Apparent magnitude = 13.12 +/- 0.10\n", " - Flux (W m-2 um-1) = 3.05e-16 +/- 2.81e-17\n", " - LBT/LMIRCam.M_77K:\n", " - Apparent magnitude = 13.30 +/- 0.30\n", " - Flux (W m-2 um-1) = 1.02e-16 +/- 2.86e-17\n", "Adding filter: MKO/NSFCam.Ks... [DONE]\n", "Adding object: HD 1160 B\n", " - Distance (pc) = 125.90 +/- 1.20\n", " - MKO/NSFCam.J:\n", " - Apparent magnitude = 14.69 +/- 0.05\n", " - Flux (W m-2 um-1) = 4.13e-15 +/- 1.90e-16\n", " - MKO/NSFCam.H:\n", " - Apparent magnitude = 14.21 +/- 0.02\n", " - Flux (W m-2 um-1) = 2.55e-15 +/- 4.69e-17\n", " - MKO/NSFCam.Ks:\n", " - Apparent magnitude = 14.12 +/- 0.05\n", " - Flux (W m-2 um-1) = 1.03e-15 +/- 4.73e-17\n", " - Paranal/NACO.Lp:\n", " - Apparent magnitude = 13.60 +/- 0.10\n", " - Flux (W m-2 um-1) = 1.91e-16 +/- 1.76e-17\n", " - Keck/NIRC2.Ms:\n", " - Apparent magnitude = 13.81 +/- 0.24\n", " - Flux (W m-2 um-1) = 6.98e-17 +/- 1.56e-17\n", "Adding filter: Keck/NIRC2.J... [DONE]\n", "Adding object: ROXs 42 Bb\n", " - Distance (pc) = 144.16 +/- 1.53\n", " - Keck/NIRC2.J:\n", " - Apparent magnitude = 16.91 +/- 0.11\n", " - Flux (W m-2 um-1) = 5.32e-16 +/- 5.40e-17\n", " - Keck/NIRC2.H:\n", " - Apparent magnitude = 15.88 +/- 0.05\n", " - Flux (W m-2 um-1) = 5.40e-16 +/- 2.49e-17\n", " - Keck/NIRC2.Ks:\n", " - Apparent magnitude = 15.01 +/- 0.06\n", " - Flux (W m-2 um-1) = 4.49e-16 +/- 2.48e-17\n", " - Keck/NIRC2.Lp:\n", " - Apparent magnitude = 13.97 +/- 0.06\n", " - Flux (W m-2 um-1) = 1.39e-16 +/- 7.70e-18\n", " - Keck/NIRC2.Ms:\n", " - Apparent magnitude = 14.01 +/- 0.23\n", " - Flux (W m-2 um-1) = 5.80e-17 +/- 1.24e-17\n", "Adding filter: Paranal/SPHERE.IRDIS_D_Y23_2... [DONE]\n", "Adding filter: Paranal/SPHERE.IRDIS_D_Y23_3... [DONE]\n", "Adding filter: Paranal/SPHERE.IRDIS_D_J23_3... [DONE]\n", "Adding filter: Subaru/IRCS.Lp... [DONE]\n", "Adding object: GJ 504 b\n", " - Distance (pc) = 17.54 +/- 0.08\n", " - Paranal/SPHERE.IRDIS_D_Y23_2:\n", " - Apparent magnitude = 20.98 +/- 0.20\n", " - Flux (W m-2 um-1) = 2.43e-17 +/- 4.51e-18\n", " - Paranal/SPHERE.IRDIS_D_Y23_3:\n", " - Apparent magnitude = 20.14 +/- 0.09\n", " - Flux (W m-2 um-1) = 4.45e-17 +/- 3.69e-18\n", " - Paranal/SPHERE.IRDIS_D_J23_3:\n", " - Apparent magnitude = 19.01 +/- 0.17\n", " - Flux (W m-2 um-1) = 7.08e-17 +/- 1.11e-17\n", " - Paranal/SPHERE.IRDIS_D_H23_2:\n", " - Apparent magnitude = 18.95 +/- 0.30\n", " - Flux (W m-2 um-1) = 3.44e-17 +/- 9.64e-18\n", " - Paranal/SPHERE.IRDIS_D_H23_3:\n", " - Apparent magnitude = 21.81 +/- 0.35\n", " - Flux (W m-2 um-1) = 2.09e-18 +/- 6.87e-19\n", " - Paranal/SPHERE.IRDIS_D_K12_1:\n", " - Apparent magnitude = 18.77 +/- 0.20\n", " - Flux (W m-2 um-1) = 1.51e-17 +/- 2.79e-18\n", " - Subaru/CIAO.J:\n", " - Apparent magnitude = 19.78 +/- 0.10\n", " - Flux (W m-2 um-1) = 3.80e-17 +/- 3.51e-18\n", " - Subaru/CIAO.H:\n", " - Apparent magnitude = 20.01 +/- 0.14\n", " - Flux (W m-2 um-1) = 1.22e-17 +/- 1.58e-18\n", " - Subaru/CIAO.Ks:\n", " - Apparent magnitude = 19.38 +/- 0.11\n", " - Flux (W m-2 um-1) = 8.07e-18 +/- 8.19e-19\n", " - Subaru/CIAO.CH4s:\n", " - Apparent magnitude = 19.58 +/- 0.13\n", " - Flux (W m-2 um-1) = 1.86e-17 +/- 2.23e-18\n", " - Subaru/IRCS.Lp:\n", " - Apparent magnitude = 16.70 +/- 0.17\n", " - Flux (W m-2 um-1) = 1.14e-17 +/- 1.80e-18\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Adding filter: Gemini/GMOS-S.z... [DONE]\n", "Adding filter: CFHT/Wircam.Y... [DONE]\n", "Adding filter: CFHT/Wircam.J... [DONE]\n", "Adding filter: CFHT/Wircam.H... [DONE]\n", "Adding filter: CFHT/Wircam.Ks... [DONE]\n", "Adding filter: WISE/WISE.W1... [DONE]\n", "Adding filter: WISE/WISE.W2... [DONE]\n", "Adding object: GU Psc b\n", " - Distance (pc) = 47.61 +/- 0.16\n", " - Gemini/GMOS-S.z:\n", " - Apparent magnitude = 21.75 +/- 0.07\n", " - Flux (W m-2 um-1) = 1.63e-17 +/- 1.05e-18\n", " - CFHT/Wircam.Y:\n", " - Apparent magnitude = 19.40 +/- 0.05\n", " - Flux (W m-2 um-1) = 1.06e-16 +/- 4.87e-18\n", " - CFHT/Wircam.J:\n", " - Apparent magnitude = 18.12 +/- 0.03\n", " - Flux (W m-2 um-1) = 1.72e-16 +/- 4.76e-18\n", " - CFHT/Wircam.H:\n", " - Apparent magnitude = 17.70 +/- 0.03\n", " - Flux (W m-2 um-1) = 1.02e-16 +/- 2.82e-18\n", " - CFHT/Wircam.Ks:\n", " - Apparent magnitude = 17.40 +/- 0.03\n", " - Flux (W m-2 um-1) = 4.98e-17 +/- 1.38e-18\n", " - WISE/WISE.W1:\n", " - Apparent magnitude = 17.17 +/- 0.33\n", " - Flux (W m-2 um-1) = 1.14e-17 +/- 3.52e-18\n", " - WISE/WISE.W2:\n", " - Apparent magnitude = 15.41 +/- 0.22\n", " - Flux (W m-2 um-1) = 1.70e-17 +/- 3.48e-18\n", "Adding object: 2M0103 ABb\n", " - Distance (pc) = 47.20 +/- 3.10\n", " - Paranal/NACO.J:\n", " - Apparent magnitude = 15.47 +/- 0.30\n", " - Flux (W m-2 um-1) = 1.96e-15 +/- 5.49e-16\n", " - Paranal/NACO.H:\n", " - Apparent magnitude = 14.27 +/- 0.20\n", " - Flux (W m-2 um-1) = 2.28e-15 +/- 4.23e-16\n", " - Paranal/NACO.Ks:\n", " - Apparent magnitude = 13.67 +/- 0.20\n", " - Flux (W m-2 um-1) = 1.57e-15 +/- 2.90e-16\n", " - Paranal/NACO.Lp:\n", " - Apparent magnitude = 12.67 +/- 0.10\n", " - Flux (W m-2 um-1) = 4.50e-16 +/- 4.15e-17\n", "Adding filter: Gemini/NIRI.J-G0202w... [DONE]\n", "Adding filter: Gemini/NIRI.H-G0203w... [DONE]\n", "Adding filter: Gemini/NIRI.K-G0204w... [DONE]\n", "Adding filter: Gemini/NIRI.Lprime-G0207w... [DONE]\n", "Adding object: 1RXS 1609 B\n", " - Distance (pc) = 139.67 +/- 1.33\n", " - Gemini/NIRI.J-G0202w:\n", " - Apparent magnitude = 17.90 +/- 0.12\n", " - Flux (W m-2 um-1) = 2.12e-16 +/- 2.35e-17\n", " - Gemini/NIRI.H-G0203w:\n", " - Apparent magnitude = 16.87 +/- 0.07\n", " - Flux (W m-2 um-1) = 2.11e-16 +/- 1.36e-17\n", " - Gemini/NIRI.K-G0204w:\n", " - Apparent magnitude = 16.17 +/- 0.18\n", " - Flux (W m-2 um-1) = 1.38e-16 +/- 2.30e-17\n", " - Gemini/NIRI.Lprime-G0207w:\n", " - Apparent magnitude = 14.80 +/- 0.30\n", " - Flux (W m-2 um-1) = 6.56e-17 +/- 1.84e-17\n", "Adding filter: MKO/NSFCam.Kp... [DONE]\n", "Adding filter: MKO/NSFCam.Lp... [DONE]\n", "Adding object: GSC 06214 B\n", " - Distance (pc) = 108.84 +/- 0.51\n", " - MKO/NSFCam.J:\n", " - Apparent magnitude = 16.24 +/- 0.04\n", " - Flux (W m-2 um-1) = 9.91e-16 +/- 3.65e-17\n", " - MKO/NSFCam.H:\n", " - Apparent magnitude = 15.55 +/- 0.04\n", " - Flux (W m-2 um-1) = 7.41e-16 +/- 2.73e-17\n", " - MKO/NSFCam.Kp:\n", " - Apparent magnitude = 14.95 +/- 0.05\n", " - Flux (W m-2 um-1) = 5.08e-16 +/- 2.34e-17\n", " - MKO/NSFCam.Lp:\n", " - Apparent magnitude = 13.75 +/- 0.07\n", " - Flux (W m-2 um-1) = 1.73e-16 +/- 1.12e-17\n", " - LBT/LMIRCam.M_77K:\n", " - Apparent magnitude = 13.75 +/- 0.30\n", " - Flux (W m-2 um-1) = 6.75e-17 +/- 1.89e-17\n", "Adding object: HD 72946 B\n", " - Distance (pc) = 25.87 +/- 0.03\n", " - Paranal/SPHERE.IRDIS_D_H23_2:\n", " - Apparent magnitude = 14.56 +/- 0.07\n", " - Flux (W m-2 um-1) = 1.96e-15 +/- 1.27e-16\n", " - Paranal/SPHERE.IRDIS_D_H23_3:\n", " - Apparent magnitude = 14.40 +/- 0.07\n", " - Flux (W m-2 um-1) = 1.93e-15 +/- 1.24e-16\n", "Adding object: HIP 64892 B\n", " - Distance (pc) = 125.20 +/- 1.42\n", " - Paranal/SPHERE.IRDIS_D_H23_2:\n", " - Apparent magnitude = 14.21 +/- 0.17\n", " - Flux (W m-2 um-1) = 2.71e-15 +/- 4.26e-16\n", " - Paranal/SPHERE.IRDIS_D_H23_3:\n", " - Apparent magnitude = 13.94 +/- 0.17\n", " - Flux (W m-2 um-1) = 2.94e-15 +/- 4.63e-16\n", " - Paranal/SPHERE.IRDIS_D_K12_1:\n", " - Apparent magnitude = 13.77 +/- 0.17\n", " - Flux (W m-2 um-1) = 1.51e-15 +/- 2.37e-16\n", " - Paranal/SPHERE.IRDIS_D_K12_2:\n", " - Apparent magnitude = 13.45 +/- 0.19\n", " - Flux (W m-2 um-1) = 1.56e-15 +/- 2.75e-16\n", " - Paranal/NACO.Lp:\n", " - Apparent magnitude = 13.09 +/- 0.17\n", " - Flux (W m-2 um-1) = 3.06e-16 +/- 4.81e-17\n" ] } ], "source": [ "database.add_companion(name=None)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The spectra from the SpeX Prism Spectral Library are also downloaded and added to the database. For each spectrum, the [SIMBAD Astronomical Database](http://simbad.u-strasbg.fr/simbad/) is queried for the SIMBAD identifier. The identifier is then used to extract the [distance](https://people.phys.ethz.ch/~stolkert/species/distance.dat) of the object (calculated from the parallax). A NaN value is stored for the distance if the object could not be identified in the SIMBAD database so these objects are not used in the color-magnitude diagram." ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Downloading SpeX Prism Spectral Library... [DONE] \n", "Adding filter: 2MASS/2MASS.H... [DONE]\n", "Adding SpeX Prism Spectral Library... 2MASSW J1645221-131951 " ] }, { "name": "stderr", "output_type": "stream", "text": [ "/Users/tomasstolker/.pyenv/versions/3.6.10/envs/general3.6/lib/python3.6/site-packages/astroquery/simbad/core.py:138: UserWarning: Warning: The script line number 3 raised an error (recorded in the `errors` attribute of the result table): Identifier not found in the database : 2MASS J21225635+3656002\n", " (error.line, error.msg))\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Adding SpeX Prism Spectral Library... 2MASS J05103520-4208140 " ] }, { "name": "stderr", "output_type": "stream", "text": [ "/Users/tomasstolker/.pyenv/versions/3.6.10/envs/general3.6/lib/python3.6/site-packages/astroquery/simbad/core.py:138: UserWarning: Warning: The script line number 3 raised an error (recorded in the `errors` attribute of the result table): Identifier not found in the database : 2MASS J14044941-3159329\n", " (error.line, error.msg))\n", "/Users/tomasstolker/.pyenv/versions/3.6.10/envs/general3.6/lib/python3.6/site-packages/astroquery/simbad/core.py:138: UserWarning: Warning: The script line number 3 raised an error (recorded in the `errors` attribute of the result table): Identifier not found in the database : 2MASS J05103520-4208140\n", " (error.line, error.msg))\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Adding SpeX Prism Spectral Library... SDSS J104335.08+121314.1 " ] }, { "name": "stderr", "output_type": "stream", "text": [ "/Users/tomasstolker/.pyenv/versions/3.6.10/envs/general3.6/lib/python3.6/site-packages/astroquery/simbad/core.py:138: UserWarning: Warning: The script line number 3 raised an error (recorded in the `errors` attribute of the result table): Identifier not found in the database : 2MASS J14162394+1348363\n", " (error.line, error.msg))\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Adding SpeX Prism Spectral Library... [DONE] \n" ] } ], "source": [ "database.add_spectrum('spex')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The AMES-Cond model spectra (i.e. for cloudless atmospheres) are also downloaded and imported into the database." ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Downloading AMES-Cond model spectra (150 MB)... [DONE]\n", "Unpacking AMES-Cond model spectra (150 MB)... [DONE]\n", "Adding AMES-Cond model spectra... [DONE] \n", "Grid points stored in the database:\n", " - Teff = [ 100. 200. 300. 400. 500. 600. 700. 800. 900. 1000. 1100. 1200.\n", " 1300. 1400. 1500. 1600. 1700. 1800. 1900. 2000. 2100. 2200. 2300. 2400.\n", " 2500. 2600. 2700. 2800. 2900. 3000. 3100. 3200. 3300. 3400. 3500. 3600.\n", " 3700. 3800. 3900. 4000. 4100. 4200. 4300. 4400. 4500. 4600. 4700. 4800.\n", " 5000. 5100. 5200. 5300. 5400. 5500. 5600. 5700. 5800. 5900. 6000. 6100.\n", " 6200. 6300. 6400. 6500. 6600.]\n", " - log(g) = [2.5 3. 3.5 4. 4.5 5. 5.5]\n", "Number of grid points per parameter:\n", " - teff: 65\n", " - logg: 7\n", "Fix missing grid points with a linear interpolation:\n", " - teff = 200.0, logg = 5.5\n", " - teff = 900.0, logg = 2.5\n", " - teff = 4700.0, logg = 4.5\n", " - teff = 4700.0, logg = 5.0\n", " - teff = 4700.0, logg = 5.5\n", " - teff = 4800.0, logg = 2.5\n", " - teff = 4800.0, logg = 3.0\n", " - teff = 4800.0, logg = 4.5\n", " - teff = 6100.0, logg = 2.5\n", " - teff = 6100.0, logg = 3.0\n", " - teff = 6100.0, logg = 3.5\n", " - teff = 6100.0, logg = 4.0\n", " - teff = 6100.0, logg = 4.5\n", " - teff = 6100.0, logg = 5.5\n", " - teff = 6200.0, logg = 3.5\n", " - teff = 6200.0, logg = 4.0\n", "Number of stored grid points: 455\n", "Number of interpolated grid points: 16\n", "Number of missing grid points: 0\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "/Users/tomasstolker/applications/species/species/util/data_util.py:275: RuntimeWarning: divide by zero encountered in log10\n", " flux = np.log10(flux)\n" ] } ], "source": [ "database.add_model('ames-cond')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "And also the AMES-Dusty model spectra (i.e. for dusty atmospheres) are downloaded and imported into the database." ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Downloading AMES-Dusty model spectra (59 MB)... [DONE]\n", "Unpacking AMES-Dusty model spectra (59 MB)... [DONE]\n", "Adding AMES-Dusty model spectra... [DONE] \n", "Grid points stored in the database:\n", " - Teff = [ 500. 600. 700. 800. 900. 1000. 1100. 1200. 1300. 1400. 1500. 1600.\n", " 1700. 1800. 1900. 2000. 2100. 2200. 2300. 2400. 2500. 2600. 2700. 2800.\n", " 2900. 3000. 3100. 3200. 3300. 3400. 3500. 3600. 3700. 3800. 3900. 4000.]\n", " - log(g) = [3.5 4. 4.5 5. 5.5 6. ]\n", "Number of grid points per parameter:\n", " - teff: 36\n", " - logg: 6\n", "Fix missing grid points with a linear interpolation:\n", " - teff = 900.0, logg = 6.0\n", " - teff = 1200.0, logg = 5.5\n", " - teff = 2100.0, logg = 3.5\n", " - teff = 2100.0, logg = 4.5\n", " - teff = 2200.0, logg = 3.5\n", " - teff = 2400.0, logg = 5.0\n", " - teff = 3100.0, logg = 3.5\n", " - teff = 3200.0, logg = 3.5\n", " - teff = 3300.0, logg = 3.5\n", " - teff = 3400.0, logg = 3.5\n", " - teff = 3500.0, logg = 3.5\n", " - teff = 3600.0, logg = 3.5\n", " - teff = 3700.0, logg = 3.5\n", " - teff = 3800.0, logg = 3.5\n", " - teff = 3900.0, logg = 3.5\n", " - teff = 3900.0, logg = 6.0\n", " - teff = 4000.0, logg = 3.5\n", " - teff = 4000.0, logg = 4.0\n", " - teff = 4000.0, logg = 4.5\n", " - teff = 4000.0, logg = 5.5\n", " - teff = 4000.0, logg = 6.0\n", "Could not interpolate 15 grid points so storing zeros instead. [WARNING]\n", "The grid points that are missing:\n", " - teff = 3100.0, logg = 3.5\n", " - teff = 3200.0, logg = 3.5\n", " - teff = 3300.0, logg = 3.5\n", " - teff = 3400.0, logg = 3.5\n", " - teff = 3500.0, logg = 3.5\n", " - teff = 3600.0, logg = 3.5\n", " - teff = 3700.0, logg = 3.5\n", " - teff = 3800.0, logg = 3.5\n", " - teff = 3900.0, logg = 3.5\n", " - teff = 3900.0, logg = 6.0\n", " - teff = 4000.0, logg = 3.5\n", " - teff = 4000.0, logg = 4.0\n", " - teff = 4000.0, logg = 4.5\n", " - teff = 4000.0, logg = 5.5\n", " - teff = 4000.0, logg = 6.0\n", "Number of stored grid points: 216\n", "Number of interpolated grid points: 6\n", "Number of missing grid points: 15\n" ] } ], "source": [ "database.add_model('ames-dusty')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The AMES-Cond and AMES-Dusty isochones are now downloaded. We note that the evolutionary data of these isochrones are identical and only the magnitudes are different, but for clarity we consider the isochrones from both AMES-Cond and AMES-Dusty." ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "('data/model.AMES-Cond-2000.M-0.0.NaCo.Vega',\n", " )" ] }, "execution_count": 9, "metadata": {}, "output_type": "execute_result" } ], "source": [ "urllib.request.urlretrieve('https://phoenix.ens-lyon.fr/Grids/AMES-Cond/ISOCHRONES/model.AMES-Cond-2000.M-0.0.NaCo.Vega',\n", " 'data/model.AMES-Cond-2000.M-0.0.NaCo.Vega')" ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "('data/model.AMES-dusty.M-0.0.NaCo.Vega',\n", " )" ] }, "execution_count": 10, "metadata": {}, "output_type": "execute_result" } ], "source": [ "urllib.request.urlretrieve('https://phoenix.ens-lyon.fr/Grids/AMES-Dusty/ISOCHRONES/model.AMES-dusty.M-0.0.NaCo.Vega',\n", " 'data/model.AMES-dusty.M-0.0.NaCo.Vega')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The isochrone data are added to the database with the `add_isochrones` method." ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Adding isochrones: iso_ames-cond... [DONE]\n" ] } ], "source": [ "database.add_isochrones(filename='data/model.AMES-Cond-2000.M-0.0.NaCo.Vega',\n", " tag='iso_ames-cond')" ] }, { "cell_type": "code", "execution_count": 12, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Adding isochrones: iso_ames-dusty... [DONE]\n" ] } ], "source": [ "database.add_isochrones(filename='data/model.AMES-dusty.M-0.0.NaCo.Vega',\n", " tag='iso_ames-dusty')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Synthetic colors and magnitudes" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "For the narrowband filters of SPHERE, the synthetic colors and magnitudes are computed from the SpeX spectra. We start by creating an instance of `ReadColorMagnitude`." ] }, { "cell_type": "code", "execution_count": 13, "metadata": {}, "outputs": [], "source": [ "read_color = species.ReadColorMagnitude(library='spex',\n", " filters_color=('Paranal/SPHERE.IRDIS_D_H23_2', 'Paranal/SPHERE.IRDIS_D_H23_3'),\n", " filter_mag='Paranal/SPHERE.IRDIS_D_H23_2')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "All spectra are used and the colors and magnitudes are stored in a `ColorMagObject`." ] }, { "cell_type": "code", "execution_count": 14, "metadata": {}, "outputs": [], "source": [ "colorbox = read_color.get_color_magnitude(object_type=None)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Next, the isochrone data is extracted by first creating and instance of `ReadIsochrone`." ] }, { "cell_type": "code", "execution_count": 15, "metadata": {}, "outputs": [], "source": [ "read_iso_cond = species.ReadIsochrone(tag='iso_ames-cond')\n", "read_iso_dusty = species.ReadIsochrone(tag='iso_ames-dusty')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "To interpolate the isochrones and compute synthetic photometry, we use the `get_color_magnitude` method and give the grid of model spectra (i.e. that was stored with `add_model`) as argument of `model`. The method will return a `ColorMagBox` object." ] }, { "cell_type": "code", "execution_count": 16, "metadata": {}, "outputs": [], "source": [ "modelcolor1 = read_iso_cond.get_color_magnitude(age=age,\n", " masses=masses,\n", " model='ames-cond',\n", " filters_color=('Paranal/SPHERE.IRDIS_D_H23_2', 'Paranal/SPHERE.IRDIS_D_H23_3'),\n", " filter_mag='Paranal/SPHERE.IRDIS_D_H23_2')" ] }, { "cell_type": "code", "execution_count": 17, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "/Users/tomasstolker/applications/species/species/read/read_isochrone.py:218: UserWarning: The value of logg is 2.917784581524866, which is below the lower bound of the model grid (3.5). Setting the magnitudes to NaN for the following isochrone sample: {'teff': 501.3728693602355, 'logg': 2.917784581524866, 'mass': 1.0, 'distance': 10.0}.\n", " warnings.warn(f'The value of {item_bounds} is {model_param[item_bounds]}, '\n", "/Users/tomasstolker/applications/species/species/read/read_isochrone.py:218: UserWarning: The value of logg is 2.972779343287681, which is below the lower bound of the model grid (3.5). Setting the magnitudes to NaN for the following isochrone sample: {'teff': 502.51561905255875, 'logg': 2.972779343287681, 'mass': 1.0722672220103233, 'distance': 10.0}.\n", " warnings.warn(f'The value of {item_bounds} is {model_param[item_bounds]}, '\n", "/Users/tomasstolker/applications/species/species/read/read_isochrone.py:218: UserWarning: The value of logg is 3.035244115774989, which is below the lower bound of the model grid (3.5). Setting the magnitudes to NaN for the following isochrone sample: {'teff': 504.9110749694396, 'logg': 3.035244115774989, 'mass': 1.1497569953977358, 'distance': 10.0}.\n", " warnings.warn(f'The value of {item_bounds} is {model_param[item_bounds]}, '\n", "/Users/tomasstolker/applications/species/species/read/read_isochrone.py:218: UserWarning: The value of logg is 3.1022230438434617, which is below the lower bound of the model grid (3.5). Setting the magnitudes to NaN for the following isochrone sample: {'teff': 507.4796438308816, 'logg': 3.1022230438434617, 'mass': 1.2328467394420661, 'distance': 10.0}.\n", " warnings.warn(f'The value of {item_bounds} is {model_param[item_bounds]}, '\n", "/Users/tomasstolker/applications/species/species/read/read_isochrone.py:218: UserWarning: The value of logg is 3.2067743991749165, which is below the lower bound of the model grid (3.5). Setting the magnitudes to NaN for the following isochrone sample: {'teff': 519.9830583907551, 'logg': 3.2067743991749165, 'mass': 1.321941148466029, 'distance': 10.0}.\n", " warnings.warn(f'The value of {item_bounds} is {model_param[item_bounds]}, '\n", "/Users/tomasstolker/applications/species/species/read/read_isochrone.py:218: UserWarning: The value of logg is 3.3063735241310974, which is below the lower bound of the model grid (3.5). Setting the magnitudes to NaN for the following isochrone sample: {'teff': 533.9699983677936, 'logg': 3.3063735241310974, 'mass': 1.4174741629268053, 'distance': 10.0}.\n", " warnings.warn(f'The value of {item_bounds} is {model_param[item_bounds]}, '\n", "/Users/tomasstolker/applications/species/species/read/read_isochrone.py:218: UserWarning: The value of logg is 3.338631698699009, which is below the lower bound of the model grid (3.5). Setting the magnitudes to NaN for the following isochrone sample: {'teff': 543.9407068706029, 'logg': 3.338631698699009, 'mass': 1.5199110829529336, 'distance': 10.0}.\n", " warnings.warn(f'The value of {item_bounds} is {model_param[item_bounds]}, '\n", "/Users/tomasstolker/applications/species/species/read/read_isochrone.py:218: UserWarning: The value of logg is 3.3721167739343065, which is below the lower bound of the model grid (3.5). Setting the magnitudes to NaN for the following isochrone sample: {'teff': 556.1780019724513, 'logg': 3.3721167739343065, 'mass': 1.6297508346206442, 'distance': 10.0}.\n", " warnings.warn(f'The value of {item_bounds} is {model_param[item_bounds]}, '\n", "/Users/tomasstolker/applications/species/species/read/read_isochrone.py:218: UserWarning: The value of logg is 3.406958013871118, which is below the lower bound of the model grid (3.5). Setting the magnitudes to NaN for the following isochrone sample: {'teff': 570.788844526598, 'logg': 3.406958013871118, 'mass': 1.7475284000076838, 'distance': 10.0}.\n", " warnings.warn(f'The value of {item_bounds} is {model_param[item_bounds]}, '\n", "/Users/tomasstolker/applications/species/species/read/read_isochrone.py:218: UserWarning: The value of logg is 3.444317133429558, which is below the lower bound of the model grid (3.5). Setting the magnitudes to NaN for the following isochrone sample: {'teff': 586.455572083363, 'logg': 3.444317133429558, 'mass': 1.8738174228603839, 'distance': 10.0}.\n", " warnings.warn(f'The value of {item_bounds} is {model_param[item_bounds]}, '\n", "/Users/tomasstolker/applications/species/species/read/read_isochrone.py:218: UserWarning: The value of logg is 3.484376092775238, which is below the lower bound of the model grid (3.5). Setting the magnitudes to NaN for the following isochrone sample: {'teff': 603.2544905186481, 'logg': 3.484376092775238, 'mass': 2.0092330025650473, 'distance': 10.0}.\n", " warnings.warn(f'The value of {item_bounds} is {model_param[item_bounds]}, '\n" ] } ], "source": [ "modelcolor2 = read_iso_dusty.get_color_magnitude(age=age,\n", " masses=masses,\n", " model='ames-dusty',\n", " filters_color=('Paranal/SPHERE.IRDIS_D_H23_2', 'Paranal/SPHERE.IRDIS_D_H23_3'),\n", " filter_mag='Paranal/SPHERE.IRDIS_D_H23_2')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Some warnings are printed for temperatures (i.e. masses) that are outside the grid of isochrone data and also when the log(g) from the isochrone data is outside the log(g) range of the grid with model spectra. In those case, the magnitudes and colors are set to NaN and will be ignored in the color-magnitude diagram." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Selecting directly imaged planets" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Let's have a look at the available companion data that were added to the database with `add_companion`." ] }, { "cell_type": "code", "execution_count": 18, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Object name = beta Pic b\n", "Distance (pc) = 19.75 +/- 0.13\n", "LCO/VisAO.Ys (mag) = 15.53 +/- 0.34\n", "Paranal/NACO.J (mag) = 14.11 +/- 0.21\n", "Gemini/NICI.ED286 (mag) = 13.18 +/- 0.15\n", "Paranal/NACO.H (mag) = 13.32 +/- 0.14\n", "Paranal/NACO.Ks (mag) = 12.64 +/- 0.11\n", "Paranal/NACO.NB374 (mag) = 11.25 +/- 0.23\n", "Paranal/NACO.Lp (mag) = 11.3 +/- 0.06\n", "Paranal/NACO.NB405 (mag) = 10.98 +/- 0.05\n", "Paranal/NACO.Mp (mag) = 11.1 +/- 0.12\n", "Paranal/SPHERE.IRDIS_D_K12_1 (mag) = 12.568 +/- 0.003\n", "Paranal/SPHERE.IRDIS_D_K12_2 (mag) = 12.206 +/- 0.002\n", "\n", "Object name = HIP 65426 b\n", "Distance (pc) = 109.21 +/- 0.75\n", "Paranal/SPHERE.IRDIS_D_H23_2 (mag) = 17.94 +/- 0.05\n", "Paranal/SPHERE.IRDIS_D_H23_3 (mag) = 17.58 +/- 0.06\n", "Paranal/SPHERE.IRDIS_D_K12_1 (mag) = 17.01 +/- 0.09\n", "Paranal/SPHERE.IRDIS_D_K12_2 (mag) = 16.79 +/- 0.09\n", "Paranal/NACO.Lp (mag) = 15.33 +/- 0.12\n", "Paranal/NACO.NB405 (mag) = 15.23 +/- 0.22\n", "Paranal/NACO.Mp (mag) = 14.65 +/- 0.29\n", "\n", "Object name = 51 Eri b\n", "Distance (pc) = 29.78 +/- 0.12\n", "MKO/NSFCam.J (mag) = 19.04 +/- 0.4\n", "MKO/NSFCam.H (mag) = 18.99 +/- 0.21\n", "MKO/NSFCam.K (mag) = 18.67 +/- 0.19\n", "Paranal/SPHERE.IRDIS_B_H (mag) = 19.45 +/- 0.29\n", "Paranal/SPHERE.IRDIS_D_H23_2 (mag) = 18.41 +/- 0.26\n", "Paranal/SPHERE.IRDIS_D_K12_1 (mag) = 17.55 +/- 0.14\n", "Keck/NIRC2.Lp (mag) = 16.2 +/- 0.11\n", "Keck/NIRC2.Ms (mag) = 16.1 +/- 0.5\n", "\n", "Object name = HR 8799 b\n", "Distance (pc) = 41.29 +/- 0.15\n", "Subaru/CIAO.z (mag) = 21.22 +/- 0.29\n", "Paranal/SPHERE.IRDIS_B_J (mag) = 19.78 +/- 0.09\n", "Keck/NIRC2.H (mag) = 18.05 +/- 0.09\n", "Paranal/SPHERE.IRDIS_D_H23_2 (mag) = 18.08 +/- 0.14\n", "Paranal/SPHERE.IRDIS_D_H23_3 (mag) = 17.78 +/- 0.1\n", "Keck/NIRC2.Ks (mag) = 17.03 +/- 0.08\n", "Paranal/SPHERE.IRDIS_D_K12_1 (mag) = 17.15 +/- 0.06\n", "Paranal/SPHERE.IRDIS_D_K12_2 (mag) = 16.97 +/- 0.09\n", "Paranal/NACO.Lp (mag) = 15.52 +/- 0.1\n", "Paranal/NACO.NB405 (mag) = 14.82 +/- 0.18\n", "Keck/NIRC2.Ms (mag) = 16.05 +/- 0.3\n", "\n", "Object name = HR 8799 c\n", "Distance (pc) = 41.29 +/- 0.15\n", "Paranal/SPHERE.IRDIS_B_J (mag) = 18.6 +/- 0.13\n", "Keck/NIRC2.H (mag) = 17.06 +/- 0.13\n", "Paranal/SPHERE.IRDIS_D_H23_2 (mag) = 17.09 +/- 0.12\n", "Paranal/SPHERE.IRDIS_D_H23_3 (mag) = 16.78 +/- 0.1\n", "Keck/NIRC2.Ks (mag) = 16.11 +/- 0.08\n", "Paranal/SPHERE.IRDIS_D_K12_1 (mag) = 16.19 +/- 0.05\n", "Paranal/SPHERE.IRDIS_D_K12_2 (mag) = 15.86 +/- 0.07\n", "Paranal/NACO.Lp (mag) = 14.65 +/- 0.11\n", "Paranal/NACO.NB405 (mag) = 13.97 +/- 0.11\n", "Keck/NIRC2.Ms (mag) = 15.03 +/- 0.14\n", "\n", "Object name = HR 8799 d\n", "Distance (pc) = 41.29 +/- 0.15\n", "Paranal/SPHERE.IRDIS_B_J (mag) = 18.59 +/- 0.37\n", "Keck/NIRC2.H (mag) = 16.71 +/- 0.24\n", "Paranal/SPHERE.IRDIS_D_H23_2 (mag) = 17.02 +/- 0.17\n", "Paranal/SPHERE.IRDIS_D_H23_3 (mag) = 16.85 +/- 0.16\n", "Keck/NIRC2.Ks (mag) = 16.09 +/- 0.12\n", "Paranal/SPHERE.IRDIS_D_K12_1 (mag) = 16.2 +/- 0.07\n", "Paranal/SPHERE.IRDIS_D_K12_2 (mag) = 15.84 +/- 0.1\n", "Paranal/NACO.Lp (mag) = 14.55 +/- 0.14\n", "Paranal/NACO.NB405 (mag) = 13.87 +/- 0.15\n", "Keck/NIRC2.Ms (mag) = 14.65 +/- 0.35\n", "\n", "Object name = HR 8799 e\n", "Distance (pc) = 41.29 +/- 0.15\n", "Paranal/SPHERE.IRDIS_B_J (mag) = 18.4 +/- 0.21\n", "Paranal/SPHERE.IRDIS_D_H23_2 (mag) = 16.91 +/- 0.2\n", "Paranal/SPHERE.IRDIS_D_H23_3 (mag) = 16.68 +/- 0.21\n", "Keck/NIRC2.Ks (mag) = 15.91 +/- 0.22\n", "Paranal/SPHERE.IRDIS_D_K12_1 (mag) = 16.12 +/- 0.1\n", "Paranal/SPHERE.IRDIS_D_K12_2 (mag) = 15.82 +/- 0.11\n", "Paranal/NACO.Lp (mag) = 14.49 +/- 0.21\n", "Paranal/NACO.NB405 (mag) = 13.72 +/- 0.2\n", "\n", "Object name = HD 95086 b\n", "Distance (pc) = 86.44 +/- 0.24\n", "Gemini/GPI.H (mag) = 20.51 +/- 0.25\n", "Gemini/GPI.K1 (mag) = 18.99 +/- 0.2\n", "Paranal/NACO.Lp (mag) = 16.27 +/- 0.19\n", "\n", "Object name = PDS 70 b\n", "Distance (pc) = 113.43 +/- 0.52\n", "Paranal/SPHERE.IRDIS_D_H23_2 (mag) = 18.12 +/- 0.21\n", "Paranal/SPHERE.IRDIS_D_H23_3 (mag) = 17.97 +/- 0.18\n", "Paranal/SPHERE.IRDIS_D_K12_1 (mag) = 16.66 +/- 0.04\n", "Paranal/SPHERE.IRDIS_D_K12_2 (mag) = 16.37 +/- 0.06\n", "MKO/NSFCam.J (mag) = 20.04 +/- 0.09\n", "MKO/NSFCam.H (mag) = 18.24 +/- 0.04\n", "Paranal/NACO.Lp (mag) = 14.68 +/- 0.22\n", "Paranal/NACO.NB405 (mag) = 14.68 +/- 0.27\n", "Paranal/NACO.Mp (mag) = 13.8 +/- 0.27\n", "Keck/NIRC2.Lp (mag) = 14.64 +/- 0.18\n", "\n", "Object name = PDS 70 c\n", "Distance (pc) = 113.43 +/- 0.52\n", "Paranal/NACO.NB405 (mag) = 14.91 +/- 0.35\n", "Keck/NIRC2.Lp (mag) = 15.5 +/- 0.46\n", "\n", "Object name = 2M1207 b\n", "Distance (pc) = 64.42 +/- 0.65\n", "HST/NICMOS1.F090M (mag) = 22.58 +/- 0.35\n", "HST/NICMOS1.F110M (mag) = 20.61 +/- 0.15\n", "HST/NICMOS1.F145M (mag) = 19.05 +/- 0.03\n", "HST/NICMOS1.F160W (mag) = 18.27 +/- 0.02\n", "Paranal/NACO.J (mag) = 20.0 +/- 0.2\n", "Paranal/NACO.H (mag) = 18.09 +/- 0.21\n", "Paranal/NACO.Ks (mag) = 16.93 +/- 0.11\n", "Paranal/NACO.Lp (mag) = 15.28 +/- 0.14\n", "\n", "Object name = AB Pic B\n", "Distance (pc) = 50.12 +/- 0.07\n", "Paranal/NACO.J (mag) = 16.18 +/- 0.1\n", "Paranal/NACO.H (mag) = 14.69 +/- 0.1\n", "Paranal/NACO.Ks (mag) = 14.14 +/- 0.08\n", "\n", "Object name = HD 206893 B\n", "Distance (pc) = 40.81 +/- 0.11\n", "Paranal/SPHERE.IRDIS_B_H (mag) = 16.79 +/- 0.06\n", "Paranal/SPHERE.IRDIS_D_K12_1 (mag) = 15.2 +/- 0.1\n", "Paranal/SPHERE.IRDIS_D_K12_2 (mag) = 14.88 +/- 0.09\n", "Paranal/NACO.Lp (mag) = 13.79 +/- 0.31\n", "Paranal/NACO.NB405 (mag) = 13.16 +/- 0.34\n", "Paranal/NACO.Mp (mag) = 12.77 +/- 0.27\n", "\n", "Object name = RZ Psc B\n", "Distance (pc) = 195.86 +/- 4.03\n", "Paranal/SPHERE.IRDIS_B_H (mag) = (13.71, 0.14) +/- (13.85, 0.26)\n", "Paranal/SPHERE.IRDIS_B_Ks (mag) = 13.51 +/- 0.2\n", "\n", "Object name = GQ Lup B\n", "Distance (pc) = 151.82 +/- 1.1\n", "HST/WFPC2-PC.F606W (mag) = 19.19 +/- 0.07\n", "HST/WFPC2-PC.F814W (mag) = 17.67 +/- 0.05\n", "HST/NICMOS2.F171M (mag) = 13.84 +/- 0.13\n", "HST/NICMOS2.F190N (mag) = 14.08 +/- 0.2\n", "HST/NICMOS2.F215N (mag) = 13.4 +/- 0.15\n", "Magellan/VisAO.ip (mag) = 18.89 +/- 0.24\n", "Magellan/VisAO.zp (mag) = 16.4 +/- 0.1\n", "Magellan/VisAO.Ys (mag) = 15.88 +/- 0.1\n", "Paranal/NACO.Ks (mag) = (13.474, 0.031) +/- (13.386, 0.032)\n", "Subaru/CIAO.CH4s (mag) = 13.76 +/- 0.26\n", "Subaru/CIAO.K (mag) = 13.37 +/- 0.12\n", "Subaru/CIAO.Lp (mag) = 12.44 +/- 0.22\n", "\n", "Object name = PZ Tel B\n", "Distance (pc) = 47.13 +/- 0.13\n", "Paranal/SPHERE.ZIMPOL_R_PRIM (mag) = 17.84 +/- 0.31\n", "Paranal/SPHERE.ZIMPOL_I_PRIM (mag) = 15.16 +/- 0.12\n", "Paranal/SPHERE.IRDIS_D_H23_2 (mag) = 11.78 +/- 0.19\n", "Paranal/SPHERE.IRDIS_D_H23_3 (mag) = 11.65 +/- 0.19\n", "Paranal/SPHERE.IRDIS_D_K12_1 (mag) = 11.56 +/- 0.09\n", "Paranal/SPHERE.IRDIS_D_K12_2 (mag) = 11.29 +/- 0.1\n", "Paranal/NACO.J (mag) = 12.47 +/- 0.2\n", "Paranal/NACO.H (mag) = 11.93 +/- 0.14\n", "Paranal/NACO.Ks (mag) = 11.53 +/- 0.07\n", "Paranal/NACO.Lp (mag) = 11.04 +/- 0.22\n", "Paranal/NACO.NB405 (mag) = 10.94 +/- 0.07\n", "Paranal/NACO.Mp (mag) = 10.93 +/- 0.03\n", "Gemini/NICI.ED286 (mag) = 11.68 +/- 0.14\n", "Gemini/NIRI.H2S1v2-1-G0220 (mag) = 11.39 +/- 0.14\n", "\n", "Object name = kappa And b\n", "Distance (pc) = 50.06 +/- 0.87\n", "Subaru/CIAO.J (mag) = 15.86 +/- 0.21\n", "Subaru/CIAO.H (mag) = 14.95 +/- 0.13\n", "Subaru/CIAO.Ks (mag) = 14.32 +/- 0.09\n", "Keck/NIRC2.Lp (mag) = 13.12 +/- 0.1\n", "LBT/LMIRCam.M_77K (mag) = 13.3 +/- 0.3\n", "\n", "Object name = HD 1160 B\n", "Distance (pc) = 125.9 +/- 1.2\n", "MKO/NSFCam.J (mag) = 14.69 +/- 0.05\n", "MKO/NSFCam.H (mag) = 14.21 +/- 0.02\n", "MKO/NSFCam.Ks (mag) = 14.12 +/- 0.05\n", "Paranal/NACO.Lp (mag) = 13.6 +/- 0.1\n", "Keck/NIRC2.Ms (mag) = 13.81 +/- 0.24\n", "\n", "Object name = ROXs 42 Bb\n", "Distance (pc) = 144.16 +/- 1.53\n", "Keck/NIRC2.J (mag) = 16.91 +/- 0.11\n", "Keck/NIRC2.H (mag) = 15.88 +/- 0.05\n", "Keck/NIRC2.Ks (mag) = 15.01 +/- 0.06\n", "Keck/NIRC2.Lp (mag) = 13.97 +/- 0.06\n", "Keck/NIRC2.Ms (mag) = 14.01 +/- 0.23\n", "\n", "Object name = GJ 504 b\n", "Distance (pc) = 17.54 +/- 0.08\n", "Paranal/SPHERE.IRDIS_D_Y23_2 (mag) = 20.98 +/- 0.2\n", "Paranal/SPHERE.IRDIS_D_Y23_3 (mag) = 20.14 +/- 0.09\n", "Paranal/SPHERE.IRDIS_D_J23_3 (mag) = 19.01 +/- 0.17\n", "Paranal/SPHERE.IRDIS_D_H23_2 (mag) = 18.95 +/- 0.3\n", "Paranal/SPHERE.IRDIS_D_H23_3 (mag) = 21.81 +/- 0.35\n", "Paranal/SPHERE.IRDIS_D_K12_1 (mag) = 18.77 +/- 0.2\n", "Subaru/CIAO.J (mag) = 19.78 +/- 0.1\n", "Subaru/CIAO.H (mag) = 20.01 +/- 0.14\n", "Subaru/CIAO.Ks (mag) = 19.38 +/- 0.11\n", "Subaru/CIAO.CH4s (mag) = 19.58 +/- 0.13\n", "Subaru/IRCS.Lp (mag) = 16.7 +/- 0.17\n", "\n", "Object name = GU Psc b\n", "Distance (pc) = 47.61 +/- 0.16\n", "Gemini/GMOS-S.z (mag) = 21.75 +/- 0.07\n", "CFHT/Wircam.Y (mag) = 19.4 +/- 0.05\n", "CFHT/Wircam.J (mag) = 18.12 +/- 0.03\n", "CFHT/Wircam.H (mag) = 17.7 +/- 0.03\n", "CFHT/Wircam.Ks (mag) = 17.4 +/- 0.03\n", "WISE/WISE.W1 (mag) = 17.17 +/- 0.33\n", "WISE/WISE.W2 (mag) = 15.41 +/- 0.22\n", "\n", "Object name = 2M0103 ABb\n", "Distance (pc) = 47.2 +/- 3.1\n", "Paranal/NACO.J (mag) = 15.47 +/- 0.3\n", "Paranal/NACO.H (mag) = 14.27 +/- 0.2\n", "Paranal/NACO.Ks (mag) = 13.67 +/- 0.2\n", "Paranal/NACO.Lp (mag) = 12.67 +/- 0.1\n", "\n", "Object name = 1RXS 1609 B\n", "Distance (pc) = 139.67 +/- 1.33\n", "Gemini/NIRI.J-G0202w (mag) = 17.9 +/- 0.12\n", "Gemini/NIRI.H-G0203w (mag) = 16.87 +/- 0.07\n", "Gemini/NIRI.K-G0204w (mag) = 16.17 +/- 0.18\n", "Gemini/NIRI.Lprime-G0207w (mag) = 14.8 +/- 0.3\n", "\n", "Object name = GSC 06214 B\n", "Distance (pc) = 108.84 +/- 0.51\n", "MKO/NSFCam.J (mag) = 16.24 +/- 0.04\n", "MKO/NSFCam.H (mag) = 15.55 +/- 0.04\n", "MKO/NSFCam.Kp (mag) = 14.95 +/- 0.05\n", "MKO/NSFCam.Lp (mag) = 13.75 +/- 0.07\n", "LBT/LMIRCam.M_77K (mag) = 13.75 +/- 0.3\n", "\n", "Object name = HD 72946 B\n", "Distance (pc) = 25.87 +/- 0.03\n", "Paranal/SPHERE.IRDIS_D_H23_2 (mag) = 14.56 +/- 0.07\n", "Paranal/SPHERE.IRDIS_D_H23_3 (mag) = 14.4 +/- 0.07\n", "\n", "Object name = HIP 64892 B\n", "Distance (pc) = 125.2 +/- 1.42\n", "Paranal/SPHERE.IRDIS_D_H23_2 (mag) = 14.21 +/- 0.17\n", "Paranal/SPHERE.IRDIS_D_H23_3 (mag) = 13.94 +/- 0.17\n", "Paranal/SPHERE.IRDIS_D_K12_1 (mag) = 13.77 +/- 0.17\n", "Paranal/SPHERE.IRDIS_D_K12_2 (mag) = 13.45 +/- 0.19\n", "Paranal/NACO.Lp (mag) = 13.09 +/- 0.17\n", "\n" ] } ], "source": [ "database.list_companions()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We select a few of these directly imaged planets and brown dwarfs for which SPHERE H2 and H3 photometry are available in the database. For each companion, a tuple needs to be provided with the name (as used in the database), the filter names for the color, and the filter name for the magnitude." ] }, { "cell_type": "code", "execution_count": 19, "metadata": {}, "outputs": [], "source": [ "objects = [('HIP 65426 b', 'Paranal/SPHERE.IRDIS_D_H23_2', 'Paranal/SPHERE.IRDIS_D_H23_3', 'Paranal/SPHERE.IRDIS_D_H23_2'),\n", " ('HR 8799 b', 'Paranal/SPHERE.IRDIS_D_H23_2', 'Paranal/SPHERE.IRDIS_D_H23_3', 'Paranal/SPHERE.IRDIS_D_H23_2'),\n", " ('HR 8799 d', 'Paranal/SPHERE.IRDIS_D_H23_2', 'Paranal/SPHERE.IRDIS_D_H23_3', 'Paranal/SPHERE.IRDIS_D_H23_2'),\n", " ('PZ Tel B', 'Paranal/SPHERE.IRDIS_D_H23_2', 'Paranal/SPHERE.IRDIS_D_H23_3', 'Paranal/SPHERE.IRDIS_D_H23_2')]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Plotting a color-magnitude diagram" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Finally, we will create the color-magnitude diagram by providing the `ColorMagBox` objects as list to the `boxes` parameter of `plot_color_magnitude`. Further details on the various parameters of this function can be found in the [API documentation](https://species.readthedocs.io/en/latest/species.plot.html?highlight=plot_color_mag#species.plot.plot_color.plot_color_magnitude)." ] }, { "cell_type": "code", "execution_count": 20, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Plotting color-magnitude diagram: color_mag.png... [DONE]\n" ] } ], "source": [ "species.plot_color_magnitude(boxes=[colorbox, modelcolor1, modelcolor2],\n", " objects=objects,\n", " mass_labels=[(3., 'left'), (5., 'left'), (10., 'left'), (20., 'right'), (50., 'right'), (100., 'right')],\n", " companion_labels=True,\n", " field_range=('late M', 'late T'),\n", " label_x='H2 $-$ H3',\n", " label_y='M$_\\mathregular{H2}$',\n", " xlim=(-2.7, 1.8),\n", " ylim=(17.3, 7),\n", " offset=(-0.07, -0.1),\n", " legend=(0.08, 0.8),\n", " output='color_mag.png')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Let's have a look at the plot! As expected, the colors become bluer towards lower masses/temperatures due to CH4 absorption in the H3 filter." ] }, { "cell_type": "code", "execution_count": 21, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "execution_count": 21, "metadata": {}, "output_type": "execute_result" } ], "source": [ "from IPython.display import Image\n", "Image('color_mag.png') " ] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.6.10" } }, "nbformat": 4, "nbformat_minor": 2 }