{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Color-magnitude diagram: broadband filters" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The tutorial shows how to create a color-magnitude diagram which combines the photometry from field and young/low-gravity objects, synthetic photometry computed from isochrones and model spectra, and photometry from directly imaged objects." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Initiating *species*" ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "import urllib.request\n", "import numpy as np\n", "import species" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Initiating species v0.1.4... [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" ] } ], "source": [ "species.SpeciesInit()\n", "database = species.Database()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Adding data to the database" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "All available photometric data of directly imaged planets and brown dwarfs is added with `add_companion` by setting `name=None`. These data are extracted from the [dictionary with apparent magnitudes](https://github.com/tomasstolker/species/blob/master/species/data/companions.py) in the `data.companions` module." ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Adding filter: LCO/VisAO.Ys... [DONE]\n", "Downloading Vega spectrum (270 kB)... [DONE]\n", "Adding Vega spectrum... [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 object: beta Pic b... [DONE]\n", "Adding filter: Paranal/SPHERE.IRDIS_D_H23_2... [DONE]\n", "Adding filter: Paranal/SPHERE.IRDIS_D_H23_3... [DONE]\n", "Adding filter: Paranal/SPHERE.IRDIS_D_K12_1... [DONE]\n", "Adding filter: Paranal/SPHERE.IRDIS_D_K12_2... [DONE]\n", "Adding object: HIP 65426 b... [DONE]\n", "Adding filter: MKO/NSFCam.J... [DONE]\n", "Adding filter: MKO/NSFCam.H... [DONE]\n", "Adding filter: MKO/NSFCam.K... [DONE]\n", "Adding filter: Keck/NIRC2.Lp... [DONE]\n", "Adding filter: Keck/NIRC2.Ms... [DONE]\n", "Adding object: 51 Eri b... [DONE]\n", "Adding filter: Subaru/CIAO.z... [DONE]\n", "Adding filter: Paranal/SPHERE.IRDIS_B_J... [DONE]\n", "Adding filter: Keck/NIRC2.H... [DONE]\n", "Adding filter: Keck/NIRC2.Ks... [DONE]\n", "Adding object: HR 8799 b... [DONE]\n", "Adding object: HR 8799 c... [DONE]\n", "Adding object: HR 8799 d... [DONE]\n", "Adding object: HR 8799 e... [DONE]\n", "Adding filter: Gemini/GPI.H... [DONE]\n", "Adding filter: Gemini/GPI.K1... [DONE]\n", "Adding object: HD 95086 b... [DONE]\n", "Adding object: PDS 70 b... [DONE]\n", "Adding object: PDS 70 c... [DONE]\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... [DONE]\n", "Adding object: AB Pic B... [DONE]\n", "Adding filter: Paranal/SPHERE.IRDIS_B_H... [DONE]\n", "Adding object: HD 206893 B... [DONE]\n", "Adding filter: HST/WFPC2.f606w... [DONE]\n", "Adding filter: HST/WFPC2.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: Subaru/CIAO.CH4s... [DONE]\n", "Adding filter: Subaru/CIAO.K... [DONE]\n", "Adding filter: Subaru/CIAO.Lp... [DONE]\n", "Adding object: GQ Lup B... [DONE]\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... [DONE]\n", "Adding filter: Subaru/CIAO.J... [DONE]\n", "Adding filter: Subaru/CIAO.H... [DONE]\n", "Adding filter: Subaru/CIAO.Ks... [DONE]\n", "Adding filter: Keck/NIRC2.NB_4.05...Adding filter: LBT/LMIRCam.M_77K... [DONE]\n", "Adding object: kappa And b... [DONE]\n", "Adding filter: Keck/NIRC2.J..." ] }, { "name": "stderr", "output_type": "stream", "text": [ "/Users/tomasstolker/applications/species/species/data/database.py:413: UserWarning: Filter 'Keck/NIRC2.NB_4.05' is not available on the SVO Filter Profile Service so a flux calibration can not be done. Please add the filter manually with the 'add_filter' function. For now, only the 'Keck/NIRC2.NB_4.05' magnitude of 'kappa And b' is stored.\n", " warnings.warn(f'Filter \\'{item}\\' is not available on the SVO Filter Profile '\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ " [DONE]\n", "Adding filter: Keck/NIRC2.NB_4.05...Adding object: ROXs 42 Bb... [DONE]\n", "Adding filter: Paranal/SPHERE.IRDIS_D_Y23_2... [DONE]\n", "Adding filter: Paranal/SPHERE.IRDIS_D_Y23_3..." ] }, { "name": "stderr", "output_type": "stream", "text": [ "/Users/tomasstolker/applications/species/species/data/database.py:413: UserWarning: Filter 'Keck/NIRC2.NB_4.05' is not available on the SVO Filter Profile Service so a flux calibration can not be done. Please add the filter manually with the 'add_filter' function. For now, only the 'Keck/NIRC2.NB_4.05' magnitude of 'ROXs 42 Bb' is stored.\n", " warnings.warn(f'Filter \\'{item}\\' is not available on the SVO Filter Profile '\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ " [DONE]\n", "Adding filter: Paranal/SPHERE.IRDIS_D_J23_3... [DONE]\n", "Adding filter: Subaru/IRCS.Lp... [DONE]\n", "Adding object: GJ 504 b... [DONE]\n", "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... [DONE]\n", "Adding object: 2M0103 ABb... [DONE]\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... [DONE]\n", "Adding filter: MKO/NSFCam.Kp... [DONE]\n", "Adding filter: MKO/NSFCam.Lp... [DONE]\n", "Adding object: GSC 06214 B... [DONE]\n", "Adding object: HD 72946 B... [DONE]\n" ] } ], "source": [ "database.add_companion(name=None)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The broadband photometry and parallaxes of the [Database of Ultracool Parallaxes](http://www.as.utexas.edu/~tdupuy/plx/Database_of_Ultracool_Parallaxes.html) is added." ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Downloading Database of Ultracool Parallaxes (307 kB)... [DONE]\n", "Adding Database of Ultracool Parallaxes... [DONE]\n" ] } ], "source": [ "database.add_photometry(phot_library='vlm-plx')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The isochrones from the AMES-Cond and AMES-Dusty evolutionary models are downloaded with `urllib.request`." ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "('data/model.AMES-Cond-2000.M-0.0.NaCo.Vega',\n", " )" ] }, "execution_count": 5, "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": 6, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "('data/model.AMES-dusty.M-0.0.NaCo.Vega',\n", " )" ] }, "execution_count": 6, "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": [ "And added to the HDF5 database." ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Adding isochrones: iso_cond... [DONE]\n", "Adding isochrones: iso_dusty... [DONE]\n" ] } ], "source": [ "database.add_isochrones(filename='data/model.AMES-Cond-2000.M-0.0.NaCo.Vega',\n", " tag='iso_cond',\n", " model='baraffe')\n", "\n", "database.add_isochrones(filename='data/model.AMES-dusty.M-0.0.NaCo.Vega',\n", " tag='iso_dusty',\n", " model='baraffe')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Also the synthetic spectra from the AMES-Cond and AMES-Dusty atmospheric models are dowloaded and added to the database. Some warnings will appear because the wavelength range is too narrow for several the spectra. Therefore, *species* will ignore these spectra and linearly interpolate from neighboring model parameters." ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Downloading AMES-Cond model spectra (823 MB)... [DONE]\n", "Unpacking AMES-Cond model spectra (823 MB)... [DONE]\n", "Adding AMES-Cond model spectra... [DONE] \n", "Downloading AMES-Dusty model spectra [Fe/H]=0.0 (106 MB)... [DONE]\n", "Unpacking AMES-Dusty model spectra [Fe/H]=0.0 (106 MB)... [DONE]\n", "Adding AMES-Dusty model spectra... lte09-6.0-0.0.AMES-dusty.7.gz " ] }, { "name": "stderr", "output_type": "stream", "text": [ "/Users/tomasstolker/applications/species/species/data/ames_dusty.py:145: UserWarning: The wavelength range (0.50-10.00 micron) should fall within the range of the original wavelength sampling (1.62-971.00 micron). Storing zeros for the flux of Teff=900.0 and log(g)=6.0, which will be corrected by the 'write_data' function afterwards.\n", " warnings.warn(f'The wavelength range ({wavelength[0]:.2f}-{wavelength[-1]:.2f}'\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Adding AMES-Dusty model spectra... lte13-3.5-0.0.AMES-dusty.7.gz " ] }, { "name": "stderr", "output_type": "stream", "text": [ "/Users/tomasstolker/applications/species/species/data/ames_dusty.py:145: UserWarning: The wavelength range (0.50-10.00 micron) should fall within the range of the original wavelength sampling (3.39-971.00 micron). Storing zeros for the flux of Teff=1200.0 and log(g)=5.5, which will be corrected by the 'write_data' function afterwards.\n", " warnings.warn(f'The wavelength range ({wavelength[0]:.2f}-{wavelength[-1]:.2f}'\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Adding AMES-Dusty model spectra... lte22-4.0-0.0.AMES-dusty.7.gz " ] }, { "name": "stderr", "output_type": "stream", "text": [ "/Users/tomasstolker/applications/species/species/data/ames_dusty.py:145: UserWarning: The wavelength range (0.50-10.00 micron) should fall within the range of the original wavelength sampling (0.01-3.37 micron). Storing zeros for the flux of Teff=2200.0 and log(g)=3.5, which will be corrected by the 'write_data' function afterwards.\n", " warnings.warn(f'The wavelength range ({wavelength[0]:.2f}-{wavelength[-1]:.2f}'\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Adding AMES-Dusty model spectra... [DONE] \n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "/Users/tomasstolker/applications/species/species/util/data_util.py:277: UserWarning: Interpolation is not possible at the edge of the parameter grid. A NaN value is stored for Teff = 4000.0 K.\n", " warnings.warn(f'Interpolation is not possible at the edge of the '\n" ] } ], "source": [ "database.add_model(model='ames-cond',\n", " wavel_range=(0.5, 10.),\n", " spec_res=1000.,\n", " teff_range=(100., 4000.))\n", "\n", "database.add_model(model='ames-dusty',\n", " wavel_range=(0.5, 10.),\n", " spec_res=1000.,\n", " teff_range=(100., 4000.))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Database content" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Let's have a look at all the data that is stored in the database." ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Database content:\n", "- filters: \n", "\t- CFHT: \n", "\t\t- Wircam.H: \n", "\t\t- Wircam.J: \n", "\t\t- Wircam.Ks: \n", "\t\t- Wircam.Y: \n", "\t- Gemini: \n", "\t\t- GMOS-S.z: \n", "\t\t- GPI.H: \n", "\t\t- GPI.K1: \n", "\t\t- NICI.ED286: \n", "\t\t- NIRI.H-G0203w: \n", "\t\t- NIRI.H2S1v2-1-G0220: \n", "\t\t- NIRI.J-G0202w: \n", "\t\t- NIRI.K-G0204w: \n", "\t\t- NIRI.Lprime-G0207w: \n", "\t- HST: \n", "\t\t- NICMOS1.F090M: \n", "\t\t- NICMOS1.F110M: \n", "\t\t- NICMOS1.F145M: \n", "\t\t- NICMOS1.F160W: \n", "\t\t- NICMOS2.F171M: \n", "\t\t- NICMOS2.F190N: \n", "\t\t- NICMOS2.F215N: \n", "\t\t- WFPC2.f606w: \n", "\t\t- WFPC2.f814w: \n", "\t- Keck: \n", "\t\t- NIRC2.H: \n", "\t\t- NIRC2.J: \n", "\t\t- NIRC2.Ks: \n", "\t\t- NIRC2.Lp: \n", "\t\t- NIRC2.Ms: \n", "\t- LBT: \n", "\t\t- LMIRCam.M_77K: \n", "\t- LCO: \n", "\t\t- VisAO.Ys: \n", "\t- MKO: \n", "\t\t- NSFCam.H: \n", "\t\t- NSFCam.J: \n", "\t\t- NSFCam.K: \n", "\t\t- NSFCam.Kp: \n", "\t\t- NSFCam.Lp: \n", "\t- Paranal: \n", "\t\t- NACO.H: \n", "\t\t- NACO.J: \n", "\t\t- NACO.Ks: \n", "\t\t- NACO.Lp: \n", "\t\t- NACO.Mp: \n", "\t\t- NACO.NB374: \n", "\t\t- NACO.NB405: \n", "\t\t- SPHERE.IRDIS_B_H: \n", "\t\t- SPHERE.IRDIS_B_J: \n", "\t\t- SPHERE.IRDIS_D_H23_2: \n", "\t\t- SPHERE.IRDIS_D_H23_3: \n", "\t\t- SPHERE.IRDIS_D_J23_3: \n", "\t\t- SPHERE.IRDIS_D_K12_1: \n", "\t\t- SPHERE.IRDIS_D_K12_2: \n", "\t\t- SPHERE.IRDIS_D_Y23_2: \n", "\t\t- SPHERE.IRDIS_D_Y23_3: \n", "\t\t- SPHERE.ZIMPOL_I_PRIM: \n", "\t\t- SPHERE.ZIMPOL_R_PRIM: \n", "\t- Subaru: \n", "\t\t- CIAO.CH4s: \n", "\t\t- CIAO.H: \n", "\t\t- CIAO.J: \n", "\t\t- CIAO.K: \n", "\t\t- CIAO.Ks: \n", "\t\t- CIAO.Lp: \n", "\t\t- CIAO.z: \n", "\t\t- IRCS.Lp: \n", "\t- WISE: \n", "\t\t- WISE.W1: \n", "\t\t- WISE.W2: \n", "- isochrones: \n", "\t- iso_cond: \n", "\t\t- evolution: \n", "\t\t\t- model: baraffe\n", "\t\t- filters: \n", "\t\t- magnitudes: \n", "\t- iso_dusty: \n", "\t\t- evolution: \n", "\t\t\t- model: baraffe\n", "\t\t- filters: \n", "\t\t- magnitudes: \n", "- models: \n", "\t- ames-cond: \n", "\t\t- flux: \n", "\t\t- logg: \n", "\t\t- teff: \n", "\t\t- wavelength: \n", "\t- ames-dusty: \n", "\t\t- flux: \n", "\t\t- logg: \n", "\t\t- teff: \n", "\t\t- wavelength: \n", "- objects: \n", "\t- 1RXS 1609 B: \n", "\t\t- Gemini: \n", "\t\t\t- NIRI.H-G0203w: \n", "\t\t\t- NIRI.J-G0202w: \n", "\t\t\t- NIRI.K-G0204w: \n", "\t\t\t- NIRI.Lprime-G0207w: \n", "\t\t- distance: \n", "\t- 2M0103 ABb: \n", "\t\t- Paranal: \n", "\t\t\t- NACO.H: \n", "\t\t\t- NACO.J: \n", "\t\t\t- NACO.Ks: \n", "\t\t\t- NACO.Lp: \n", "\t\t- distance: \n", "\t- 2M1207 b: \n", "\t\t- HST: \n", "\t\t\t- NICMOS1.F090M: \n", "\t\t\t- NICMOS1.F110M: \n", "\t\t\t- NICMOS1.F145M: \n", "\t\t\t- NICMOS1.F160W: \n", "\t\t- Paranal: \n", "\t\t\t- NACO.H: \n", "\t\t\t- NACO.J: \n", "\t\t\t- NACO.Ks: \n", "\t\t\t- NACO.Lp: \n", "\t\t- distance: \n", "\t- 51 Eri b: \n", "\t\t- Keck: \n", "\t\t\t- NIRC2.Lp: \n", "\t\t\t- NIRC2.Ms: \n", "\t\t- MKO: \n", "\t\t\t- NSFCam.H: \n", "\t\t\t- NSFCam.J: \n", "\t\t\t- NSFCam.K: \n", "\t\t- Paranal: \n", "\t\t\t- SPHERE.IRDIS_D_H23_2: \n", "\t\t\t- SPHERE.IRDIS_D_K12_1: \n", "\t\t- distance: \n", "\t- AB Pic B: \n", "\t\t- Paranal: \n", "\t\t\t- NACO.H: \n", "\t\t\t- NACO.J: \n", "\t\t\t- NACO.Ks: \n", "\t\t- distance: \n", "\t- GJ 504 b: \n", "\t\t- Paranal: \n", "\t\t\t- SPHERE.IRDIS_D_H23_2: \n", "\t\t\t- SPHERE.IRDIS_D_H23_3: \n", "\t\t\t- SPHERE.IRDIS_D_J23_3: \n", "\t\t\t- SPHERE.IRDIS_D_K12_1: \n", "\t\t\t- SPHERE.IRDIS_D_Y23_2: \n", "\t\t\t- SPHERE.IRDIS_D_Y23_3: \n", "\t\t- Subaru: \n", "\t\t\t- CIAO.CH4s: \n", "\t\t\t- CIAO.H: \n", "\t\t\t- CIAO.J: \n", "\t\t\t- CIAO.Ks: \n", "\t\t\t- IRCS.Lp: \n", "\t\t- distance: \n", "\t- GQ Lup B: \n", "\t\t- HST: \n", "\t\t\t- NICMOS2.F171M: \n", "\t\t\t- NICMOS2.F190N: \n", "\t\t\t- NICMOS2.F215N: \n", "\t\t\t- WFPC2.f606w: \n", "\t\t\t- WFPC2.f814w: \n", "\t\t- Subaru: \n", "\t\t\t- CIAO.CH4s: \n", "\t\t\t- CIAO.K: \n", "\t\t\t- CIAO.Lp: \n", "\t\t- distance: \n", "\t- GSC 06214 B: \n", "\t\t- LBT: \n", "\t\t\t- LMIRCam.M_77K: \n", "\t\t- MKO: \n", "\t\t\t- NSFCam.H: \n", "\t\t\t- NSFCam.J: \n", "\t\t\t- NSFCam.Kp: \n", "\t\t\t- NSFCam.Lp: \n", "\t\t- distance: \n", "\t- GU Psc b: \n", "\t\t- CFHT: \n", "\t\t\t- Wircam.H: \n", "\t\t\t- Wircam.J: \n", "\t\t\t- Wircam.Ks: \n", "\t\t\t- Wircam.Y: \n", "\t\t- Gemini: \n", "\t\t\t- GMOS-S.z: \n", "\t\t- WISE: \n", "\t\t\t- WISE.W1: \n", "\t\t\t- WISE.W2: \n", "\t\t- distance: \n", "\t- HD 206893 B: \n", "\t\t- Paranal: \n", "\t\t\t- NACO.Lp: \n", "\t\t\t- NACO.Mp: \n", "\t\t\t- NACO.NB405: \n", "\t\t\t- SPHERE.IRDIS_B_H: \n", "\t\t\t- SPHERE.IRDIS_D_K12_1: \n", "\t\t\t- SPHERE.IRDIS_D_K12_2: \n", "\t\t- distance: \n", "\t- HD 72946 B: \n", "\t\t- Paranal: \n", "\t\t\t- SPHERE.IRDIS_D_H23_2: \n", "\t\t\t- SPHERE.IRDIS_D_H23_3: \n", "\t\t- distance: \n", "\t- HD 95086 b: \n", "\t\t- Gemini: \n", "\t\t\t- GPI.H: \n", "\t\t\t- GPI.K1: \n", "\t\t- Paranal: \n", "\t\t\t- NACO.Lp: \n", "\t\t- distance: \n", "\t- HIP 65426 b: \n", "\t\t- Paranal: \n", "\t\t\t- NACO.Lp: \n", "\t\t\t- NACO.Mp: \n", "\t\t\t- NACO.NB405: \n", "\t\t\t- SPHERE.IRDIS_D_H23_2: \n", "\t\t\t- SPHERE.IRDIS_D_H23_3: \n", "\t\t\t- SPHERE.IRDIS_D_K12_1: \n", "\t\t\t- SPHERE.IRDIS_D_K12_2: \n", "\t\t- distance: \n", "\t- HR 8799 b: \n", "\t\t- Keck: \n", "\t\t\t- NIRC2.H: \n", "\t\t\t- NIRC2.Ks: \n", "\t\t\t- NIRC2.Ms: \n", "\t\t- Paranal: \n", "\t\t\t- NACO.Lp: \n", "\t\t\t- NACO.NB405: \n", "\t\t\t- SPHERE.IRDIS_B_J: \n", "\t\t\t- SPHERE.IRDIS_D_H23_2: \n", "\t\t\t- SPHERE.IRDIS_D_H23_3: \n", "\t\t\t- SPHERE.IRDIS_D_K12_1: \n", "\t\t\t- SPHERE.IRDIS_D_K12_2: \n", "\t\t- Subaru: \n", "\t\t\t- CIAO.z: \n", "\t\t- distance: \n", "\t- HR 8799 c: \n", "\t\t- Keck: \n", "\t\t\t- NIRC2.H: \n", "\t\t\t- NIRC2.Ks: \n", "\t\t\t- NIRC2.Ms: \n", "\t\t- Paranal: \n", "\t\t\t- NACO.Lp: \n", "\t\t\t- NACO.NB405: \n", "\t\t\t- SPHERE.IRDIS_B_J: \n", "\t\t\t- SPHERE.IRDIS_D_H23_2: \n", "\t\t\t- SPHERE.IRDIS_D_H23_3: \n", "\t\t\t- SPHERE.IRDIS_D_K12_1: \n", "\t\t\t- SPHERE.IRDIS_D_K12_2: \n", "\t\t- distance: \n", "\t- HR 8799 d: \n", "\t\t- Keck: \n", "\t\t\t- NIRC2.H: \n", "\t\t\t- NIRC2.Ks: \n", "\t\t\t- NIRC2.Ms: \n", "\t\t- Paranal: \n", "\t\t\t- NACO.Lp: \n", "\t\t\t- NACO.NB405: \n", "\t\t\t- SPHERE.IRDIS_B_J: \n", "\t\t\t- SPHERE.IRDIS_D_H23_2: \n", "\t\t\t- SPHERE.IRDIS_D_H23_3: \n", "\t\t\t- SPHERE.IRDIS_D_K12_1: \n", "\t\t\t- SPHERE.IRDIS_D_K12_2: \n", "\t\t- distance: \n", "\t- HR 8799 e: \n", "\t\t- Keck: \n", "\t\t\t- NIRC2.Ks: \n", "\t\t- Paranal: \n", "\t\t\t- NACO.Lp: \n", "\t\t\t- NACO.NB405: \n", "\t\t\t- SPHERE.IRDIS_B_J: \n", "\t\t\t- SPHERE.IRDIS_D_H23_2: \n", "\t\t\t- SPHERE.IRDIS_D_H23_3: \n", "\t\t\t- SPHERE.IRDIS_D_K12_1: \n", "\t\t\t- SPHERE.IRDIS_D_K12_2: \n", "\t\t- distance: \n", "\t- PDS 70 b: \n", "\t\t- Paranal: \n", "\t\t\t- SPHERE.IRDIS_D_H23_2: \n", "\t\t\t- SPHERE.IRDIS_D_H23_3: \n", "\t\t\t- SPHERE.IRDIS_D_K12_1: \n", "\t\t\t- SPHERE.IRDIS_D_K12_2: \n", "\t\t- distance: \n", "\t- PDS 70 c: \n", "\t\t- Paranal: \n", "\t\t\t- NACO.NB405: \n", "\t\t- distance: \n", "\t- PZ Tel B: \n", "\t\t- Gemini: \n", "\t\t\t- NICI.ED286: \n", "\t\t\t- NIRI.H2S1v2-1-G0220: \n", "\t\t- Paranal: \n", "\t\t\t- NACO.H: \n", "\t\t\t- NACO.J: \n", "\t\t\t- NACO.Ks: \n", "\t\t\t- NACO.Lp: \n", "\t\t\t- NACO.Mp: \n", "\t\t\t- NACO.NB405: \n", "\t\t\t- SPHERE.IRDIS_D_H23_2: \n", "\t\t\t- SPHERE.IRDIS_D_H23_3: \n", "\t\t\t- SPHERE.IRDIS_D_K12_1: \n", "\t\t\t- SPHERE.IRDIS_D_K12_2: \n", "\t\t\t- SPHERE.ZIMPOL_I_PRIM: \n", "\t\t\t- SPHERE.ZIMPOL_R_PRIM: \n", "\t\t- distance: \n", "\t- ROXs 42 Bb: \n", "\t\t- Keck: \n", "\t\t\t- NIRC2.H: \n", "\t\t\t- NIRC2.J: \n", "\t\t\t- NIRC2.Ks: \n", "\t\t\t- NIRC2.Lp: \n", "\t\t\t- NIRC2.Ms: \n", "\t\t\t- NIRC2.NB_4.05: \n", "\t\t- distance: \n", "\t- beta Pic b: \n", "\t\t- Gemini: \n", "\t\t\t- NICI.ED286: \n", "\t\t- LCO: \n", "\t\t\t- VisAO.Ys: \n", "\t\t- Paranal: \n", "\t\t\t- NACO.H: \n", "\t\t\t- NACO.J: \n", "\t\t\t- NACO.Ks: \n", "\t\t\t- NACO.Lp: \n", "\t\t\t- NACO.Mp: \n", "\t\t\t- NACO.NB374: \n", "\t\t\t- NACO.NB405: \n", "\t\t- distance: \n", "\t- kappa And b: \n", "\t\t- Keck: \n", "\t\t\t- NIRC2.Lp: \n", "\t\t\t- NIRC2.NB_4.05: \n", "\t\t- LBT: \n", "\t\t\t- LMIRCam.M_77K: \n", "\t\t- Subaru: \n", "\t\t\t- CIAO.H: \n", "\t\t\t- CIAO.J: \n", "\t\t\t- CIAO.Ks: \n", "\t\t- distance: \n", "- photometry: \n", "\t- vlm-plx: \n", "\t\t- 2MASS: \n", "\t\t\t- 2MASS.H: f4\">\n", "\t\t\t- 2MASS.J: f4\">\n", "\t\t\t- 2MASS.Ks: f4\">\n", "\t\t- MKO: \n", "\t\t\t- NSFCam.H: f4\">\n", "\t\t\t- NSFCam.J: f4\">\n", "\t\t\t- NSFCam.K: f4\">\n", "\t\t\t- NSFCam.Lp: f4\">\n", "\t\t\t- NSFCam.Mp: f4\">\n", "\t\t\t- NSFCam.Y: f4\">\n", "\t\t- dec: f8\">\n", "\t\t- distance: \n", "\t\t- distance_error: \n", "\t\t- flag: \n", "\t\t- name: \n", "\t\t- ra: f8\">\n", "\t\t- sptype: \n", "- spectra: \n", "\t- calibration: \n", "\t\t- vega: \n" ] } ], "source": [ "database.list_content()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Synthetic photometry from isochrones" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Magnitudes are available in the isochrone data which can be extracted with the `get_isochrone` function of `ReadIsochrone`. However, in this example, we consistently recompute the synthetic photometry by making use of both the isochrones and the model spectra." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The isochrones will be iterpolated for three different ages and the synthetic photometry is computed for 100 logarithmically spaced masses." ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [], "source": [ "ages = [20., 100., 1000.] # [Myr]\n", "masses = np.logspace(-1., 4., 100) # [Mjup]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Object of `ReadIsochones` are initiated for both the AMES-Cond and AMES-Dusty isochrones." ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [], "source": [ "read_iso_cond = species.ReadIsochrone(tag='iso_cond')\n", "read_iso_dusty = species.ReadIsochrone(tag='iso_dusty')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The colors and magnitudes are computed by chosing the corresponding model spectra that are stored in the database. The results of two models are stored in `ColorMagBox` objects for the three different ages." ] }, { "cell_type": "code", "execution_count": 12, "metadata": {}, "outputs": [], "source": [ "boxes = []\n", "\n", "for item in ages:\n", "\n", " modelcolor1 = read_iso_cond.get_color_magnitude(age=item,\n", " masses=masses,\n", " model='ames-cond',\n", " filters_color=('MKO/NSFCam.H', 'MKO/NSFCam.Lp'),\n", " filter_mag='MKO/NSFCam.Lp')\n", "\n", " modelcolor2 = read_iso_dusty.get_color_magnitude(age=item,\n", " masses=masses,\n", " model='ames-dusty',\n", " filters_color=('MKO/NSFCam.H', 'MKO/NSFCam.Lp'),\n", " filter_mag='MKO/NSFCam.Lp')\n", "\n", " boxes.append(modelcolor1)\n", " boxes.append(modelcolor2)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Photometry of directly imaged objects" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Before selecting the photometric data of the directly imaged planets and brown dwarfs, let's see which objects and magnitudes are stored in the database." ] }, { "cell_type": "code", "execution_count": 13, "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", "\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_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] = 17.94 +/- 0.24\n", "Paranal/SPHERE.IRDIS_D_H23_3 [mag] = 17.95 +/- 0.17\n", "Paranal/SPHERE.IRDIS_D_K12_1 [mag] = 16.65 +/- 0.06\n", "Paranal/SPHERE.IRDIS_D_K12_2 [mag] = 16.44 +/- 0.05\n", "\n", "Object name = PDS 70 c\n", "Distance [pc] = 113.43 +/- 0.52\n", "Paranal/NACO.NB405 [mag] = 15.05 +/- 0.59\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 = GQ Lup B\n", "Distance [pc] = 151.82 +/- 1.1\n", "HST/WFPC2.f606w [mag] = 19.19 +/- 0.07\n", "HST/WFPC2.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", "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", "Keck/NIRC2.NB_4.05 [mag] = 13.0 +/- 0.2\n", "LBT/LMIRCam.M_77K [mag] = 13.3 +/- 0.3\n", "\n", "Object name = ROXs 42 Bb\n", "Distance [pc] = 144.16 +/- 1.54\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.NB_4.05 [mag] = 13.9 +/- 0.08\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" ] } ], "source": [ "database.list_companions()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "A list with object names and filters for the colors and magnitudes is created." ] }, { "cell_type": "code", "execution_count": 14, "metadata": {}, "outputs": [], "source": [ "objects = [('HR 8799 b', 'Keck/NIRC2.H', 'Paranal/NACO.Lp', 'Paranal/NACO.Lp'),\n", " ('HR 8799 c', 'Keck/NIRC2.H', 'Paranal/NACO.Lp', 'Paranal/NACO.Lp'),\n", " ('HR 8799 d', 'Keck/NIRC2.H', 'Paranal/NACO.Lp', 'Paranal/NACO.Lp'),\n", " ('HR 8799 e', 'Paranal/SPHERE.IRDIS_D_H23_2', 'Paranal/NACO.Lp', 'Paranal/NACO.Lp'),\n", " ('kappa And b', 'Subaru/CIAO.H', 'Keck/NIRC2.Lp', 'Keck/NIRC2.Lp'),\n", " ('GSC 06214 B', 'MKO/NSFCam.H', 'MKO/NSFCam.Lp', 'MKO/NSFCam.Lp'),\n", " ('ROXs 42 Bb', 'Keck/NIRC2.H', 'Keck/NIRC2.Lp', 'Keck/NIRC2.Lp'),\n", " ('51 Eri b', 'MKO/NSFCam.H', 'Keck/NIRC2.Lp', 'Keck/NIRC2.Lp'),\n", " ('2M1207 b', 'Paranal/NACO.H', 'Paranal/NACO.Lp', 'Paranal/NACO.Lp'),\n", " ('2M0103 ABb', 'Paranal/NACO.H', 'Paranal/NACO.Lp', 'Paranal/NACO.Lp'),\n", " ('1RXS 1609 B', 'Gemini/NIRI.H-G0203w', 'Gemini/NIRI.Lprime-G0207w', 'Gemini/NIRI.Lprime-G0207w'),\n", " ('beta Pic b', 'Paranal/NACO.H', 'Paranal/NACO.Lp', 'Paranal/NACO.Lp'),\n", " ('HIP 65426 b', 'Paranal/SPHERE.IRDIS_D_H23_2', 'Paranal/NACO.Lp', 'Paranal/NACO.Lp'),\n", " ('PZ Tel B', 'Paranal/NACO.H', 'Paranal/NACO.Lp', 'Paranal/NACO.Lp'),\n", " ('HD 206893 B', 'Paranal/SPHERE.IRDIS_B_H', 'Paranal/NACO.Lp', 'Paranal/NACO.Lp')]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Reading color-magnitude data" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The colors and magnitude of the Database of Ultracool Parallaxes are read from the HDF5 database by first creating an object of `ReadColorMagnitude`." ] }, { "cell_type": "code", "execution_count": 15, "metadata": {}, "outputs": [], "source": [ "colormag = species.ReadColorMagnitude(library='vlm-plx',\n", " filters_color=('MKO/NSFCam.H', 'MKO/NSFCam.Lp'),\n", " filter_mag='MKO/NSFCam.Lp')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "And then extracting the `ColorMagBox` objects for field and young/low-gravity objects separately." ] }, { "cell_type": "code", "execution_count": 16, "metadata": {}, "outputs": [], "source": [ "color_field = colormag.get_color_magnitude(object_type='field')\n", "color_young = colormag.get_color_magnitude(object_type='young')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Plotting a color-magnitude diagram" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The color-magnitude diagram is plotted with the `plot_color_magnitude` function. The boxes with photometric data are provided as list to the `colorbox` parameter. The boxes with synthetic photometry are provided to the `models` parameter." ] }, { "cell_type": "code", "execution_count": 17, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Plotting color-magnitude diagram: color_mag.png... [DONE]\n" ] } ], "source": [ "species.plot_color_magnitude(boxes=[color_field, color_young],\n", " objects=objects,\n", " mass_labels=[1., 3., 5., 10., 20., 50., 100., 200.],\n", " companion_labels=False,\n", " field_range=('late M', 'late T'),\n", " label_x='H - L$^\\prime$ [mag]',\n", " label_y='M$_\\mathregular{L\\prime}$ [mag]',\n", " xlim=(0.3, 4.),\n", " ylim=(15., 7.1),\n", " offset=(-0.08, -0.09),\n", " legend=(0.04, 0.04),\n", " output='color_mag.png')" ] }, { "cell_type": "code", "execution_count": 18, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "execution_count": 18, "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.0" } }, "nbformat": 4, "nbformat_minor": 2 }