<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom" ><generator uri="https://jekyllrb.com/" version="3.10.0">Jekyll</generator><link href="https://dawn-cph.github.io/dja/feed.xml" rel="self" type="application/atom+xml" /><link href="https://dawn-cph.github.io/dja/" rel="alternate" type="text/html" /><updated>2026-07-15T04:52:24+00:00</updated><id>https://dawn-cph.github.io/dja/feed.xml</id><title type="html">DJA</title><subtitle>The DAWN JWST Archive, Science-ready public JWST data products</subtitle><entry><title type="html">ALMA archive data mining with ECOGAL</title><link href="https://dawn-cph.github.io/dja/blog/2025/11/20/ecogal-dja-showcase/" rel="alternate" type="text/html" title="ALMA archive data mining with ECOGAL" /><published>2025-11-20T14:00:32+00:00</published><updated>2025-11-20T14:00:32+00:00</updated><id>https://dawn-cph.github.io/dja/blog/2025/11/20/ecogal-dja-showcase</id><content type="html" xml:base="https://dawn-cph.github.io/dja/blog/2025/11/20/ecogal-dja-showcase/"><![CDATA[<p> 
    
    <a class="blog-category" href="/dja/blog/categories/#imaging"> imaging</a>
    
    <a class="blog-category" href="/dja/blog/categories/#ALMA"> ALMA</a>
    
    <a class="blog-category" href="/dja/blog/categories/#catalog"> catalog</a>
    
    <a class="blog-category" href="/dja/blog/categories/#release"> release</a>
    
    
        
        <a class="blog-tag" href="/dja/blog/tags/#demo"> demo</a>
              
    
</p>

<p>(This page is auto-generated from the Jupyter notebook <a href="/dja/assets/post_files/2025-11-20-ecogal-dja-showcase.ipynb">ecogal-dja-showcase.ipynb</a>.)</p>

<h2 id="short-description-of-the-project">Short description of the project:</h2>
<p>ECOGAL (<strong>ECO</strong>ology for <strong>G</strong>alaxies using <strong>A</strong>LMA archive and <strong>L</strong>egacy surveys) is an ALMA data-mining effort that uniformly reduces archival data, creates science-ready ALMA images, and links them to JWST/HST legacy datasets in well-studied survey fields.</p>

<p>This notebook provides an introduction to the ECOGAL catalogue, including how to query sources by position and retrieve the summary plots available for ALMA-detected galaxies with DJA spectra. The catalogue released with this post covers galaxies in the three ALMA-accessible CANDELS fields: COSMOS, GOODS-S, and UDS.</p>

<ul>
  <li>This notebook was tested on python 3.12 version</li>
  <li>Some functions that are used in this notebook can be installed from : <a href="https://github.com/mjastro/ecogal">https://github.com/mjastro/ecogal</a>
    <ul>
      <li>or on terminal:</li>
    </ul>

    <p><code class="language-plaintext highlighter-rouge">python -m pip install git+https://github.com/mjastro/ecogal.git</code></p>
  </li>
</ul>

<blockquote>
  <p>Additional documentation will be released soon. A complete description of the ALMA data reduction and catalogue construction is provided in <a href="https://doi.org/10.48550/arXiv.2511.20751">Lee et al. (2025)</a> [arXiv:2511.20751], and should be cited when using the ECOGAL data products. Users should also cite the appropriate survey references (including ALMA project IDs) when making use of the DJA data products.</p>
</blockquote>

<div class="language-python highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="o">%</span><span class="n">matplotlib</span> <span class="n">inline</span>
</code></pre></div></div>

<div class="language-python highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="c1"># libraries to install
</span><span class="k">if</span> <span class="mi">0</span><span class="p">:</span>
    <span class="err">!</span><span class="n">python</span> <span class="o">-</span><span class="n">m</span> <span class="n">pip</span> <span class="n">install</span> <span class="n">git</span><span class="o">+</span><span class="n">https</span><span class="p">:</span><span class="o">//</span><span class="n">github</span><span class="p">.</span><span class="n">com</span><span class="o">/</span><span class="n">mjastro</span><span class="o">/</span><span class="n">ecogal</span><span class="p">.</span><span class="n">git</span>
    <span class="err">!</span><span class="n">pip</span> <span class="n">install</span> <span class="n">tabulate</span>
    <span class="err">!</span><span class="n">pip</span> <span class="n">install</span> <span class="n">git</span><span class="o">+</span><span class="n">https</span><span class="p">:</span><span class="o">//</span><span class="n">github</span><span class="p">.</span><span class="n">com</span><span class="o">/</span><span class="n">karllark</span><span class="o">/</span><span class="n">dust_attenuation</span><span class="p">.</span><span class="n">git</span>
</code></pre></div></div>

<div class="language-python highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="c1"># setting the libraries
</span>
<span class="kn">import</span> <span class="nn">ecogal</span>

<span class="kn">import</span> <span class="nn">numpy</span> <span class="k">as</span> <span class="n">np</span>
<span class="kn">import</span> <span class="nn">astropy</span>
<span class="kn">import</span> <span class="nn">os</span><span class="p">,</span><span class="n">sys</span>
<span class="kn">from</span> <span class="nn">astropy.coordinates</span> <span class="kn">import</span> <span class="n">SkyCoord</span>
<span class="kn">from</span> <span class="nn">astropy</span> <span class="kn">import</span> <span class="n">units</span> <span class="k">as</span> <span class="n">u</span>
<span class="kn">from</span> <span class="nn">astropy.table</span> <span class="kn">import</span> <span class="n">Table</span>
<span class="kn">from</span> <span class="nn">astropy.utils.data</span> <span class="kn">import</span> <span class="n">download_file</span>
<span class="kn">import</span> <span class="nn">astropy.constants</span> <span class="k">as</span> <span class="n">const</span>

<span class="kn">import</span> <span class="nn">matplotlib</span> <span class="k">as</span> <span class="n">mpl</span>
<span class="kn">import</span> <span class="nn">cmasher</span> <span class="k">as</span> <span class="n">cmr</span>
<span class="kn">import</span> <span class="nn">matplotlib.pyplot</span> <span class="k">as</span> <span class="n">plt</span>
<span class="kn">import</span> <span class="nn">matplotlib.patches</span> <span class="k">as</span> <span class="n">mpatches</span>
<span class="kn">from</span> <span class="nn">astropy.coordinates</span> <span class="kn">import</span> <span class="n">Angle</span>


<span class="kn">import</span> <span class="nn">shapely</span>
<span class="kn">from</span> <span class="nn">shapely</span> <span class="kn">import</span> <span class="n">Point</span><span class="p">,</span> <span class="n">Polygon</span>


<span class="kn">import</span> <span class="nn">warnings</span>
<span class="kn">from</span> <span class="nn">astropy.io</span> <span class="kn">import</span> <span class="n">fits</span>
<span class="kn">from</span> <span class="nn">astropy.wcs</span> <span class="kn">import</span> <span class="n">WCS</span>
<span class="n">warnings</span><span class="p">.</span><span class="n">filterwarnings</span><span class="p">(</span><span class="s">'ignore'</span><span class="p">)</span>

<span class="kn">import</span> <span class="nn">pandas</span> <span class="k">as</span> <span class="n">pd</span>


<span class="c1"># cosmology
</span><span class="kn">from</span> <span class="nn">astropy.cosmology</span> <span class="kn">import</span> <span class="n">FlatLambdaCDM</span>
<span class="n">cosmo</span> <span class="o">=</span> <span class="n">FlatLambdaCDM</span><span class="p">(</span><span class="n">H0</span><span class="o">=</span><span class="mi">70</span><span class="p">,</span> <span class="n">Om0</span><span class="o">=</span><span class="mf">0.3</span><span class="p">,</span> <span class="n">Tcmb0</span><span class="o">=</span><span class="mf">2.725</span><span class="p">)</span>


<span class="n">CACHE_DOWNLOADS</span> <span class="o">=</span> <span class="bp">True</span>


<span class="k">print</span><span class="p">(</span><span class="sa">f</span><span class="s">'astropy version: </span><span class="si">{</span><span class="n">astropy</span><span class="p">.</span><span class="n">__version__</span><span class="si">}</span><span class="s">'</span><span class="p">)</span>
</code></pre></div></div>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>astropy version: 7.1.1
</code></pre></div></div>

<div class="language-python highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="c1"># Set plotting style
</span><span class="n">mpl</span><span class="p">.</span><span class="n">rcParams</span><span class="p">[</span><span class="s">'axes.linewidth'</span><span class="p">]</span> <span class="o">=</span> <span class="mi">2</span>
<span class="n">mpl</span><span class="p">.</span><span class="n">rcParams</span><span class="p">[</span><span class="s">'axes.labelsize'</span><span class="p">]</span> <span class="o">=</span> <span class="mi">20</span>
<span class="n">mpl</span><span class="p">.</span><span class="n">rcParams</span><span class="p">.</span><span class="n">update</span><span class="p">({</span><span class="s">'font.family'</span><span class="p">:</span><span class="s">'serif'</span><span class="p">})</span>
<span class="n">mpl</span><span class="p">.</span><span class="n">rcParams</span><span class="p">.</span><span class="n">update</span><span class="p">({</span><span class="s">'xtick.major.pad'</span><span class="p">:</span> <span class="s">'7.0'</span><span class="p">})</span>
<span class="n">mpl</span><span class="p">.</span><span class="n">rcParams</span><span class="p">.</span><span class="n">update</span><span class="p">({</span><span class="s">'xtick.major.size'</span><span class="p">:</span> <span class="s">'7.5'</span><span class="p">})</span>
<span class="n">mpl</span><span class="p">.</span><span class="n">rcParams</span><span class="p">.</span><span class="n">update</span><span class="p">({</span><span class="s">'xtick.major.width'</span><span class="p">:</span> <span class="s">'1.5'</span><span class="p">})</span>
<span class="n">mpl</span><span class="p">.</span><span class="n">rcParams</span><span class="p">.</span><span class="n">update</span><span class="p">({</span><span class="s">'xtick.minor.pad'</span><span class="p">:</span> <span class="s">'7.0'</span><span class="p">})</span>
<span class="n">mpl</span><span class="p">.</span><span class="n">rcParams</span><span class="p">.</span><span class="n">update</span><span class="p">({</span><span class="s">'xtick.minor.size'</span><span class="p">:</span> <span class="s">'3.5'</span><span class="p">})</span>
<span class="n">mpl</span><span class="p">.</span><span class="n">rcParams</span><span class="p">.</span><span class="n">update</span><span class="p">({</span><span class="s">'xtick.minor.width'</span><span class="p">:</span> <span class="s">'1.0'</span><span class="p">})</span>
<span class="n">mpl</span><span class="p">.</span><span class="n">rcParams</span><span class="p">.</span><span class="n">update</span><span class="p">({</span><span class="s">'ytick.major.pad'</span><span class="p">:</span> <span class="s">'7.0'</span><span class="p">})</span>
<span class="n">mpl</span><span class="p">.</span><span class="n">rcParams</span><span class="p">.</span><span class="n">update</span><span class="p">({</span><span class="s">'ytick.major.size'</span><span class="p">:</span> <span class="s">'7.5'</span><span class="p">})</span>
<span class="n">mpl</span><span class="p">.</span><span class="n">rcParams</span><span class="p">.</span><span class="n">update</span><span class="p">({</span><span class="s">'ytick.major.width'</span><span class="p">:</span> <span class="s">'1.5'</span><span class="p">})</span>
<span class="n">mpl</span><span class="p">.</span><span class="n">rcParams</span><span class="p">.</span><span class="n">update</span><span class="p">({</span><span class="s">'ytick.minor.pad'</span><span class="p">:</span> <span class="s">'7.0'</span><span class="p">})</span>
<span class="n">mpl</span><span class="p">.</span><span class="n">rcParams</span><span class="p">.</span><span class="n">update</span><span class="p">({</span><span class="s">'ytick.minor.size'</span><span class="p">:</span> <span class="s">'3.5'</span><span class="p">})</span>
<span class="n">mpl</span><span class="p">.</span><span class="n">rcParams</span><span class="p">.</span><span class="n">update</span><span class="p">({</span><span class="s">'ytick.minor.width'</span><span class="p">:</span> <span class="s">'1.0'</span><span class="p">})</span>
<span class="n">mpl</span><span class="p">.</span><span class="n">rcParams</span><span class="p">.</span><span class="n">update</span><span class="p">({</span><span class="s">'xtick.labelsize'</span><span class="p">:</span><span class="mi">14</span><span class="p">})</span>
<span class="n">mpl</span><span class="p">.</span><span class="n">rcParams</span><span class="p">.</span><span class="n">update</span><span class="p">({</span><span class="s">'ytick.labelsize'</span><span class="p">:</span><span class="mi">14</span><span class="p">})</span>

<span class="n">mpl</span><span class="p">.</span><span class="n">rcParams</span><span class="p">.</span><span class="n">update</span><span class="p">({</span><span class="s">'xtick.direction'</span><span class="p">:</span><span class="s">'in'</span><span class="p">})</span>
<span class="n">mpl</span><span class="p">.</span><span class="n">rcParams</span><span class="p">.</span><span class="n">update</span><span class="p">({</span><span class="s">'ytick.direction'</span><span class="p">:</span><span class="s">'in'</span><span class="p">})</span>

<span class="n">mpl</span><span class="p">.</span><span class="n">rcParams</span><span class="p">.</span><span class="n">update</span><span class="p">({</span><span class="s">'axes.labelsize'</span> <span class="p">:</span><span class="mi">18</span><span class="p">})</span>
</code></pre></div></div>

<div class="language-python highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="c1"># to get DJA spectra information
</span>
<span class="kn">from</span> <span class="nn">urllib</span> <span class="kn">import</span> <span class="n">request</span>

<span class="c1">####Needed to load spectra
</span><span class="kn">import</span> <span class="nn">msaexp</span>
<span class="kn">import</span> <span class="nn">msaexp.spectrum</span>

<span class="c1">#to get DJA slit information
</span>
<span class="kn">import</span> <span class="nn">grizli</span>
<span class="kn">from</span> <span class="nn">grizli</span> <span class="kn">import</span> <span class="n">utils</span>


<span class="k">print</span><span class="p">(</span><span class="sa">f</span><span class="s">'grizli version: </span><span class="si">{</span><span class="n">grizli</span><span class="p">.</span><span class="n">__version__</span><span class="si">}</span><span class="s">'</span><span class="p">)</span>

</code></pre></div></div>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>grizli version: 1.13.2
</code></pre></div></div>

<h1 id="catalogue-data-exploration">Catalogue data exploration</h1>

<h2 id="read-the-table">Read the table</h2>

<div class="language-python highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="c1"># prior catalogue which includes all sources with flux constraints (including non-detection) based on the source positions determined by JWST/HST detection
</span>
<span class="n">version</span> <span class="o">=</span><span class="s">'v1'</span> <span class="c1">#initial data release
</span>
<span class="n">URL_PREFIX</span> <span class="o">=</span> <span class="s">"https://s3.amazonaws.com/alma-ecogal/dr1"</span>
<span class="n">file_cat</span> <span class="o">=</span> <span class="s">"ecogal_all_priors_"</span><span class="o">+</span><span class="n">version</span><span class="o">+</span><span class="s">".csv"</span>

<span class="k">if</span> <span class="mi">0</span><span class="p">:</span>
    <span class="c1"># the latest zenodo (frozen) catalogue is available here (TBD)
</span>    <span class="c1"># this include blind catalogue, and detection catalogue
</span>    <span class="n">URL_PREFIX</span> <span class="o">=</span> <span class="s">"https://zenodo.org/records/XXX"</span>

<span class="n">table_url</span> <span class="o">=</span> <span class="sa">f</span><span class="s">"</span><span class="si">{</span><span class="n">URL_PREFIX</span><span class="si">}</span><span class="s">/catalogue/</span><span class="si">{</span><span class="n">file_cat</span><span class="si">}</span><span class="s">"</span>

<span class="n">tab</span> <span class="o">=</span> <span class="n">utils</span><span class="p">.</span><span class="n">read_catalog</span><span class="p">(</span><span class="n">download_file</span><span class="p">(</span><span class="n">table_url</span><span class="p">,</span> <span class="n">cache</span><span class="o">=</span><span class="n">CACHE_DOWNLOADS</span><span class="p">),</span> <span class="nb">format</span><span class="o">=</span><span class="s">'csv'</span><span class="p">)</span>

</code></pre></div></div>

<h3 id="column-descriptions">Column descriptions</h3>

<div class="language-python highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="n">columns_url</span> <span class="o">=</span> <span class="sa">f</span><span class="s">"</span><span class="si">{</span><span class="n">URL_PREFIX</span><span class="si">}</span><span class="s">/catalogue/ecogal_</span><span class="si">{</span><span class="n">version</span><span class="si">}</span><span class="s">.columns.csv"</span>
<span class="n">tab_columns</span> <span class="o">=</span> <span class="n">utils</span><span class="p">.</span><span class="n">read_catalog</span><span class="p">(</span><span class="n">download_file</span><span class="p">(</span><span class="n">columns_url</span><span class="p">,</span> <span class="n">cache</span><span class="o">=</span><span class="n">CACHE_DOWNLOADS</span><span class="p">),</span> <span class="nb">format</span><span class="o">=</span><span class="s">'csv'</span><span class="p">)</span>

<span class="c1"># Set column metadata
</span><span class="k">for</span> <span class="n">row</span> <span class="ow">in</span> <span class="n">tab_columns</span><span class="p">:</span>
    <span class="n">col</span> <span class="o">=</span> <span class="n">row</span><span class="p">[</span><span class="s">'column'</span><span class="p">]</span>
    <span class="k">if</span> <span class="n">row</span><span class="p">[</span><span class="s">'unit'</span><span class="p">]</span> <span class="o">!=</span> <span class="s">'--'</span><span class="p">:</span>
        <span class="n">tab</span><span class="p">[</span><span class="n">col</span><span class="p">].</span><span class="n">unit</span> <span class="o">=</span> <span class="n">row</span><span class="p">[</span><span class="s">'unit'</span><span class="p">]</span>
    <span class="k">if</span> <span class="n">row</span><span class="p">[</span><span class="s">'description'</span><span class="p">]</span> <span class="o">!=</span> <span class="s">'--'</span><span class="p">:</span>
        <span class="n">tab</span><span class="p">[</span><span class="n">col</span><span class="p">].</span><span class="n">description</span> <span class="o">=</span> <span class="n">row</span><span class="p">[</span><span class="s">'description'</span><span class="p">]</span>

<span class="n">tab</span><span class="p">.</span><span class="n">info</span><span class="p">()</span>
</code></pre></div></div>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>&lt;GTable length=258455&gt;
       name         dtype      unit                                                                                                     description                                                                                                     class     n_bad 
------------------ ------- ------------ ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ ------------ ------
         projectID   str14                                                                                                                                                                                                           ALMA project ID       Column      0
       target_alma   str23                                                                                           ALMA target names without space;if original ALMA program has a space for the target name this column does not include the space       Column      0
  small_mosaic_idx   int64                                                                                                                                                                   mosaic identifier if it was obtained in the mosaic mode       Column      0
             field    str6                                                                                                                                                                                                        legacy field names       Column      0
         id_ecogal   int64                                                                                                                                                                                                          ecogal parant ID       Column      0
            id_new   str13                                                                                                                                                                            ecogal parent full ID including the field name       Column      0
         frequency float64          GHz                                                                                                                                                                                           observed frequency       Column      0
              band    str2                                                                                                                                                                                                        observed ALMA band       Column      0
          beam_maj float64       arcsec                                                                                                                                                                        synthesized beam major axis in arcsec       Column      0
             frame    str4                                                                                                                                                                                                               image frame       Column      0
         RA_parent float64          deg                                                                                                                                                                  prior position from JWST/HST (RA) in degree       Column      0
        Dec_parent float64          deg                                                                                                                                                                 prior position from JWST/HST (DEC) in degree       Column      0
      RA_peak_alma float64          deg                                                                                                                                                                            ALMA peak position (RA) in degree       Column      0
     Dec_peak_alma float64          deg                                                                                                                                                                            ALMA pak position (DEC) in degree       Column      0
  separation_prior float64       arcsec                                                                                                                                                     position offset between ALMA peak and the prior position       Column      0
         flux_peak float64           Jy                                                                                                                                                                                         peak ALMA flux in Jy       Column      0
             noise float64           Jy                                                                                                                                         1-sigma noise level (after correcting for the primary beam response)       Column      0
                sn float64                                                                                                                                                                                                                  peak SNR       Column      0
         flux_aper float64           Jy                                                                                                                                                                            flux from the aperture photometry MaskedColumn   1707
        eflux_aper float64           Jy                                                                                                                                                                      flux error from the aperture photometry       Column      0
   flux_peak_imfit float64           Jy                                                                                                                                                           peak flux from the 2D Gaussian fitting using imfit       Column      0
        flux_imfit float64           Jy                                                                                                                                                                flux from the 2D Gaussian fitting using imfit       Column      0
       eflux_imfit float64           Jy                                                                                                                                                          flux error from the 2D Gaussian fitting using imfit       Column      0
         fac_pbcor float64                                                                                                                                                              primary beam response at the position of the source;1=center       Column      0
       id_3dhst_v4 float64                                                                                                                                                                                3D-HST(ver4.0) catalogue id when available MaskedColumn 142476
        ecogal_ver    str4                                                                                                                                                                                                            ecogal version       Column      0
    zsp_best_avail float64                                                                                                                                                                                     best available spectroscopic redshift       Column      0
   zsp_best_survey    str9                                                                                                                                                                                        selected spectroscopic survey name       Column      0
             z_ver    str4                                                                                                                                                                                                           DJA MSA version       Column      0
             objid float64                                                                                                                                                                                                  Unique source identifier MaskedColumn 248862
             srcid float64                                                                                                                                                                                                   Source ID from APT plan MaskedColumn 248862
              file   str55                                                                                                                                                                                                              DJA filename MaskedColumn 248862
           grating    str5                                                                                                                                                                                                           NIRSpec grating MaskedColumn 248862
         file_phot   str44                                                                                                                                                                                   Filename of the DJA photometric catalog MaskedColumn 249835
           id_phot float64                                                                                                                                                                                 ID number in the DJA photometric cadtalog MaskedColumn 249835
             valid    str5                                                                                                                                                                            Redshift matches best z from visual inspection       Column      0
       z_phot_eazy float64                                                                                                                                                          photometric redshift from eazypy combining 3D-HST+DJA photometry       Column      0
             restU float64                                                                                                                                                        flux density of the rest-frame U band from the photoz (eazypy) fit       Column      0
         restU_err float64                                                                                                                                                  flux density error of the rest-frame U band from the photoz (eazypy) fit       Column      0
             restV float64                                                                                                                                                        flux density of the rest-frame V band from the photoz (eazypy) fit       Column      0
         restV_err float64                                                                                                                                                        flux density of the rest-frame V band from the photoz (eazypy) fit       Column      0
             restJ float64                                                                                                                                                        flux density of the rest-frame J band from the photoz (eazypy) fit       Column      0
         restJ_err float64                                                                                                                                                        flux density of the rest-frame J band from the photoz (eazypy) fit       Column      0
           mass_ez float64      solMass                                                                                                                                                                    stellar mass from the photoz (eazypy) fit       Column      0
            sfr_ez float64 solMass / yr                                                                                                                                                             star-formation rate from the photoz (eazypy) fit       Column      0
             Av_ez float64          mag                                                                                                                                                                                   Av the photoz (eazypy) fit       Column      0
             lmass float64      solMass                                                                                                                                                     stellar mass in log from FAST++ fit (spec-z source only) MaskedColumn      8
         l68_lmass float64      solMass                                                                                                                               68% lower boundary of stellar mass in log from FAST++ run (spec-z source only) MaskedColumn      8
         u68_lmass float64      solMass                                                                                                                               68% upper boundary of stellar mass in log from FAST++ run (spec-z source only) MaskedColumn      8
              lsfr float64 solMass / yr                                                                                                                                              star-formation rate in log from FAST++ fit (spec-z source only) MaskedColumn      8
          l68_lsfr float64 solMass / yr                                                                                                                        68% lower boundary of star-formation rate in log from FAST++ fit (spec-z source only) MaskedColumn      8
          u68_lsfr float64 solMass / yr                                                                                                                        68% upper boundary of star-formation rate in log from FAST++ fit (spec-z source only) MaskedColumn      8
         file_alma  str137                                                                                                                                                                       ECOGAL ALMA fits file name (primary beam corrected)       Column      0
           RA_bdsf float64          deg                                                                                                                                                                        ALMA position(RA) based on PYBDSF fit MaskedColumn 255029
          DEC_bdsf float64          deg                                                                                                                                                                       ALMA position(Dec) based on PYBDSF fit MaskedColumn 255029
  Total_flux_pbcor float64           Jy                                                                                                                                     Total flux based on PYBDSF fit (corrected for the primary beam response) MaskedColumn 255029
E_Total_flux_pbcor float64           Jy                                                                                                                               Total flux error based on PYBDSF fit (corrected for the primary beam response) MaskedColumn 255029
             pbfac float64                                                                                                                                          ALMA primary beam response at the position of the detected source;1=phase center MaskedColumn 255029
         Peak_flux float64           Jy                                                                                                                                                 Peak flux from PYBDSF fit (before the primary beam response) MaskedColumn 255029
       E_Peak_flux float64           Jy                                                                                                                                           Peak flux error from PYBDSF fit (before the primary beam response) MaskedColumn 255029
               Maj float64          deg                                                                                                                                                                     the FWHM of the major axis of the source MaskedColumn 255029
             E_Maj float64          deg                                                                                                                                                the 1-sigma error on the FWHM of the major axis of the source MaskedColumn 255029
               Min float64          deg                                                                                                                                                                     the FWHM of the minor axis of the source MaskedColumn 255029
             E_Min float64          deg                                                                                                                                                the 1-sigma error on the FWHM of the minor axis of the source MaskedColumn 255029
                PA float64          deg                                                                                                                                    the position angle of the major axis of the source measured east of north MaskedColumn 255029
              E_PA float64          deg                                                                                                                                      the 1-sigma error on the position angle of the major axis of the source MaskedColumn 255029
     Maj_img_plane float64          deg                                                                                                                                                  the FWHM of the major axis of the source in the image plane MaskedColumn 255029
   E_Maj_img_plane float64          deg                                                                                                                                         the 1-sigma error of the major axis of the source in the image plane MaskedColumn 255029
     Min_img_plane float64          deg                                                                                                                                                  the FWHM of the minor axis of the source in the image plane MaskedColumn 255029
   E_Min_img_plane float64          deg                                                                                                                                         the 1-sigma error of the minor axis of the source in the image plane MaskedColumn 255029
      PA_img_plane float64          deg                                                                                                                 the position angle in the image plane of the major axis of the source measured east of north MaskedColumn 255029
    E_PA_img_plane float64          deg                                                                                                                  the 1-sigma error of the image plane of the major axis of the source measured east of north MaskedColumn 255029
    Isl_Total_flux float64           Jy                                                                                         the total integrated Stokes I flux density of the island in which the source is located (not primary beam corrected) MaskedColumn 255029
  E_Isl_Total_flux float64           Jy                                                                                                                     the 1-sigma error on the total flux density of the island in which the source is located MaskedColumn 255029
           Isl_rms float64    Jy / beam                                                                                                                                    the average background rms value of the island (derived from the rms map) MaskedColumn 255029
            S_Code    str1              a code that defines the source structure; ‘S’ = a single-Gaussian source that is the only source in the island; ‘C’ = a single-Gaussian source in an island with other sources;'M’ = a multi-Gaussian source MaskedColumn 255029
   Separation_bdsf float64       arcsec                                                                                                                                           offset between the optical counterpart (matched within 0.8 arcsec) MaskedColumn 255029
</code></pre></div></div>

<h2 id="zphot-zspec">zphot-zspec</h2>

<div class="language-python highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="c1">### -- getting the unique source and spec-z sources
</span><span class="n">con_dup</span> <span class="o">=</span> <span class="n">np</span><span class="p">.</span><span class="n">array</span><span class="p">(</span><span class="n">tab</span><span class="p">.</span><span class="n">to_pandas</span><span class="p">()[</span><span class="s">'id_new'</span><span class="p">].</span><span class="n">duplicated</span><span class="p">())</span>
<span class="n">tab0</span> <span class="o">=</span> <span class="n">tab</span><span class="p">[</span><span class="o">~</span><span class="n">con_dup</span><span class="p">]</span>
<span class="nb">len</span><span class="p">(</span><span class="n">tab0</span><span class="p">)</span>
</code></pre></div></div>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>128125
</code></pre></div></div>

<div class="language-python highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="n">con_z</span> <span class="o">=</span> <span class="n">tab0</span><span class="p">[</span><span class="s">'zsp_best_avail'</span><span class="p">]</span><span class="o">&gt;</span><span class="mi">0</span>
<span class="n">con_z</span> <span class="o">&amp;=</span> <span class="n">tab0</span><span class="p">[</span><span class="s">'z_phot_eazy'</span><span class="p">]</span><span class="o">&gt;</span><span class="mi">0</span>

<span class="n">con_dja</span> <span class="o">=</span> <span class="n">tab0</span><span class="p">[</span><span class="s">'zsp_best_survey'</span><span class="p">]</span><span class="o">==</span><span class="s">'dja'</span>
<span class="n">con_dja_z</span> <span class="o">=</span> <span class="n">np</span><span class="p">.</span><span class="n">logical_and</span><span class="p">(</span><span class="n">con_dja</span><span class="p">,</span><span class="n">con_z</span><span class="p">)</span>

<span class="n">plt</span><span class="p">.</span><span class="n">scatter</span><span class="p">(</span><span class="n">tab0</span><span class="p">[</span><span class="n">con_z</span><span class="p">][</span><span class="s">'zsp_best_avail'</span><span class="p">],</span> <span class="n">tab0</span><span class="p">[</span><span class="n">con_z</span><span class="p">][</span><span class="s">'z_phot_eazy'</span><span class="p">],</span> <span class="n">s</span><span class="o">=</span><span class="mi">1</span><span class="p">,</span> <span class="n">zorder</span><span class="o">=</span><span class="mi">100</span><span class="p">,</span> <span class="n">label</span><span class="o">=</span><span class="s">'All spec-z'</span><span class="p">)</span>
<span class="n">plt</span><span class="p">.</span><span class="n">scatter</span><span class="p">(</span><span class="n">tab0</span><span class="p">[</span><span class="n">con_dja_z</span><span class="p">][</span><span class="s">'zsp_best_avail'</span><span class="p">],</span> <span class="n">tab0</span><span class="p">[</span><span class="n">con_dja_z</span><span class="p">][</span><span class="s">'z_phot_eazy'</span><span class="p">],</span> <span class="n">marker</span><span class="o">=</span><span class="s">'s'</span><span class="p">,</span><span class="n">facecolor</span><span class="o">=</span><span class="s">'None'</span><span class="p">,</span><span class="n">edgecolor</span><span class="o">=</span><span class="s">'grey'</span><span class="p">,</span><span class="n">alpha</span><span class="o">=</span><span class="mf">0.5</span><span class="p">,</span> <span class="n">label</span><span class="o">=</span><span class="s">'DJA spec-z'</span><span class="p">)</span>

<span class="n">plt</span><span class="p">.</span><span class="n">xlabel</span><span class="p">(</span><span class="sa">r</span><span class="s">'$z_{\rm spec}$'</span><span class="p">)</span>
<span class="n">plt</span><span class="p">.</span><span class="n">ylabel</span><span class="p">(</span><span class="sa">r</span><span class="s">'$z_{\rm phot}$'</span><span class="p">)</span>
<span class="n">plt</span><span class="p">.</span><span class="n">legend</span><span class="p">()</span>
</code></pre></div></div>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>&lt;matplotlib.legend.Legend at 0x331825df0&gt;
</code></pre></div></div>

<p><img src="/dja/assets/post_files/2025-11-20-ecogal-dja-showcase_files/ecogal-dja-showcase_15_1.png" alt="png" /></p>

<h1 id="query-if-there-is-any-alma-coverage-given-the-position">Query if there is any ALMA coverage given the position</h1>

<ul>
  <li>
    <p>ALMA/ECOGAL metadata includes information of individual ALMA images such as regions, pixel scales, phase center position, etc.</p>
  </li>
  <li>
    <p>This will allow you to check the ALMA/ECOGAL coverage for your source of interest.</p>
  </li>
</ul>

<div class="language-python highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="c1"># A complete version of the metadata
</span>
<span class="n">version</span><span class="o">=</span><span class="s">'v1'</span>
<span class="n">meta_file</span> <span class="o">=</span> <span class="s">"ecogal_"</span><span class="o">+</span><span class="n">version</span><span class="o">+</span><span class="s">"_metadata.fits"</span>

<span class="n">table_url</span> <span class="o">=</span> <span class="sa">f</span><span class="s">"</span><span class="si">{</span><span class="n">URL_PREFIX</span><span class="si">}</span><span class="s">/ancillary/</span><span class="si">{</span><span class="n">meta_file</span><span class="si">}</span><span class="s">"</span>
<span class="n">meta</span> <span class="o">=</span> <span class="n">utils</span><span class="p">.</span><span class="n">read_catalog</span><span class="p">(</span><span class="n">download_file</span><span class="p">(</span><span class="n">table_url</span><span class="p">,</span> <span class="n">cache</span><span class="o">=</span><span class="n">CACHE_DOWNLOADS</span><span class="p">),</span> <span class="nb">format</span><span class="o">=</span><span class="s">'fits'</span><span class="p">)</span>
<span class="n">meta</span><span class="p">[:</span><span class="mi">3</span><span class="p">]</span>
</code></pre></div></div>

<div><i>GTable length=3</i>
<table id="table13186731280" class="table-striped table-bordered table-condensed">
<thead><tr><th>file_alma</th><th>version</th><th>simple</th><th>bitpix</th><th>naxis</th><th>naxis1</th><th>naxis2</th><th>naxis3</th><th>extend</th><th>bscale</th><th>bzero</th><th>bmaj</th><th>bmin</th><th>bpa</th><th>btype</th><th>object</th><th>bunit</th><th>equinox</th><th>radesys</th><th>lonpole</th><th>latpole</th><th>pc1_1</th><th>pc2_1</th><th>pc3_1</th><th>pc1_2</th><th>pc2_2</th><th>pc3_2</th><th>pc1_3</th><th>pc2_3</th><th>pc3_3</th><th>ctype1</th><th>crval1</th><th>cdelt1</th><th>crpix1</th><th>cunit1</th><th>ctype2</th><th>crval2</th><th>cdelt2</th><th>crpix2</th><th>cunit2</th><th>ctype3</th><th>crval3</th><th>cdelt3</th><th>crpix3</th><th>cunit3</th><th>pv2_1</th><th>pv2_2</th><th>restfrq</th><th>specsys</th><th>altrval</th><th>altrpix</th><th>velref</th><th>telescop</th><th>observer</th><th>date-obs</th><th>timesys</th><th>obsra</th><th>obsdec</th><th>obsgeo-x</th><th>obsgeo-y</th><th>obsgeo-z</th><th>instrume</th><th>distance</th><th>mpiprocs</th><th>chnchnks</th><th>memreq</th><th>memavail</th><th>useweigh</th><th>date</th><th>origin</th><th>almaid</th><th>is_mosaic</th><th>band</th><th>footprint</th><th>release</th><th>is_available</th><th>ra_center</th><th>dec_center</th><th>noise_fit</th><th>noise_tot</th><th>FoV_sigma</th></tr></thead>
<thead><tr><th>bytes137</th><th>bytes4</th><th>bool</th><th>int64</th><th>int64</th><th>int64</th><th>int64</th><th>int64</th><th>bool</th><th>float64</th><th>float64</th><th>float64</th><th>float64</th><th>float64</th><th>bytes9</th><th>bytes26</th><th>bytes7</th><th>float64</th><th>bytes4</th><th>float64</th><th>float64</th><th>float64</th><th>float64</th><th>float64</th><th>float64</th><th>float64</th><th>float64</th><th>float64</th><th>float64</th><th>float64</th><th>bytes8</th><th>float64</th><th>float64</th><th>float64</th><th>bytes3</th><th>bytes8</th><th>float64</th><th>float64</th><th>float64</th><th>bytes3</th><th>bytes4</th><th>float64</th><th>float64</th><th>float64</th><th>bytes2</th><th>float64</th><th>float64</th><th>float64</th><th>bytes4</th><th>float64</th><th>float64</th><th>int64</th><th>bytes4</th><th>bytes15</th><th>bytes26</th><th>bytes3</th><th>float64</th><th>float64</th><th>float64</th><th>float64</th><th>float64</th><th>bytes4</th><th>float64</th><th>int64</th><th>int64</th><th>float64</th><th>float64</th><th>bool</th><th>bytes26</th><th>bytes30</th><th>bytes14</th><th>bool</th><th>int64</th><th>bytes461</th><th>bytes3</th><th>bool</th><th>float64</th><th>float64</th><th>float64</th><th>float64</th><th>float64</th></tr></thead>
<tr><td>2011.0.00064.S___concat_all_6_AzTEC-3_0_b7_cont_noninter2sig.image.pbcor.fits</td><td>v1.0</td><td>True</td><td>-32</td><td>3</td><td>1600</td><td>1600</td><td>1</td><td>True</td><td>1.0</td><td>0.0</td><td>0.0002005813188023</td><td>0.0001579564147525</td><td>-53.50122070312</td><td>Intensity</td><td>AzTEC-3</td><td>Jy/beam</td><td>2000.0</td><td>FK5</td><td>180.0</td><td>2.586833336311</td><td>1.0</td><td>0.0</td><td>0.0</td><td>0.0</td><td>1.0</td><td>0.0</td><td>0.0</td><td>0.0</td><td>1.0</td><td>RA---SIN</td><td>150.0890000048</td><td>-2.777777777778e-05</td><td>801.0</td><td>deg</td><td>DEC--SIN</td><td>2.586833336311</td><td>2.777777777778e-05</td><td>801.0</td><td>deg</td><td>FREQ</td><td>296763686486.8</td><td>15646751913.56</td><td>1.0</td><td>Hz</td><td>0.0</td><td>0.0</td><td>296763686486.8</td><td>LSRK</td><td>-0.0</td><td>1.0</td><td>257</td><td>ALMA</td><td>riechers</td><td>2012-04-11T01:22:13.632000</td><td>UTC</td><td>150.0890000048</td><td>2.586833336311</td><td>2225142.180269</td><td>-5440307.370349</td><td>-2481029.851874</td><td>ALMA</td><td>0.0</td><td>1</td><td>1</td><td>0.12359619</td><td>150.23436</td><td>False</td><td>2023-11-14T12:19:42.442402</td><td>CASA 6.5.6-22 CASAtools:v1.0.0</td><td>2011.0.00064.S</td><td>False</td><td>7</td><td>((150.088583,2.582778),(150.085914,2.584167),(150.084940,2.587250),(150.086331,2.589917),(150.089417,2.590889),(150.092086,2.589500),(150.093060,2.586417),(150.091669,2.583750),(150.088583,2.582778))</td><td>N/A</td><td>True</td><td>150.0890000048</td><td>2.5868333363110025</td><td>4.46259777172499e-05</td><td>5.5606829846510664e-05</td><td>8.332485222950787</td></tr>
<tr><td>2011.0.00064.S___concat_all_6_AzTEC-3_1_b7_cont_noninter2sig.image.pbcor.fits</td><td>v1.0</td><td>True</td><td>-32</td><td>3</td><td>1600</td><td>1600</td><td>1</td><td>True</td><td>1.0</td><td>0.0</td><td>0.0002007880806923</td><td>0.0001580240825812</td><td>-53.53054428101</td><td>Intensity</td><td>AzTEC-3</td><td>Jy/beam</td><td>2000.0</td><td>FK5</td><td>180.0</td><td>2.588527777932</td><td>1.0</td><td>0.0</td><td>0.0</td><td>0.0</td><td>1.0</td><td>0.0</td><td>0.0</td><td>0.0</td><td>1.0</td><td>RA---SIN</td><td>150.0868750002</td><td>-2.777777777778e-05</td><td>801.0</td><td>deg</td><td>DEC--SIN</td><td>2.588527777932</td><td>2.777777777778e-05</td><td>801.0</td><td>deg</td><td>FREQ</td><td>296763687761.7</td><td>15646752334.74</td><td>1.0</td><td>Hz</td><td>0.0</td><td>0.0</td><td>296763687761.7</td><td>LSRK</td><td>-0.0</td><td>1.0</td><td>257</td><td>ALMA</td><td>riechers</td><td>2012-04-11T01:22:54.720000</td><td>UTC</td><td>150.0868750002</td><td>2.588527777932</td><td>2225142.180269</td><td>-5440307.370349</td><td>-2481029.851874</td><td>ALMA</td><td>0.0</td><td>1</td><td>1</td><td>0.12359619</td><td>150.1451</td><td>False</td><td>2023-11-14T13:30:14.601414</td><td>CASA 6.5.6-22 CASAtools:v1.0.0</td><td>2011.0.00064.S</td><td>False</td><td>7</td><td>((150.086458,2.584472),(150.083789,2.585861),(150.082815,2.588944),(150.084206,2.591611),(150.087292,2.592583),(150.089961,2.591194),(150.090935,2.588111),(150.089544,2.585444),(150.086458,2.584472))</td><td>N/A</td><td>True</td><td>150.0868750002</td><td>2.5885277779320006</td><td>6.49289000021855e-05</td><td>0.00011714215361280367</td><td>8.33248518715434</td></tr>
<tr><td>2011.0.00097.S___concat_all_10_COSMOSLowz_64_29_b7_cont_noninter2sig.image.pbcor.fits</td><td>v1.0</td><td>True</td><td>-32</td><td>3</td><td>1844</td><td>1844</td><td>1</td><td>True</td><td>1.0</td><td>0.0</td><td>0.0001445855862565</td><td>0.0001385951704449</td><td>32.57455062866</td><td>Intensity</td><td>COSMOSLowz_64</td><td>Jy/beam</td><td>2000.0</td><td>FK5</td><td>180.0</td><td>2.193778888889</td><td>1.0</td><td>0.0</td><td>0.0</td><td>0.0</td><td>1.0</td><td>0.0</td><td>0.0</td><td>0.0</td><td>1.0</td><td>RA---SIN</td><td>150.0951</td><td>-2.777777777778e-05</td><td>923.0</td><td>deg</td><td>DEC--SIN</td><td>2.193778888889</td><td>2.777777777778e-05</td><td>923.0</td><td>deg</td><td>FREQ</td><td>341959206917.1</td><td>15956638554.12</td><td>1.0</td><td>Hz</td><td>0.0</td><td>0.0</td><td>341959206917.1</td><td>LSRK</td><td>-0.0</td><td>1.0</td><td>257</td><td>ALMA</td><td>nscoville</td><td>2012-04-22T02:13:22.032000</td><td>UTC</td><td>150.0951</td><td>2.193778888889</td><td>2225142.180269</td><td>-5440307.370349</td><td>-2481029.851874</td><td>ALMA</td><td>0.0</td><td>--</td><td>--</td><td>--</td><td>--</td><td>False</td><td>2022-01-18T10:06:48.750999</td><td>CASA 5.6.1-8</td><td>2011.0.00097.S</td><td>True</td><td>7</td><td>((150.094822,2.190251),(150.092487,2.191390),(150.091570,2.194057),(150.092709,2.196390),(150.095378,2.197307),(150.097713,2.196168),(150.098630,2.193501),(150.097491,2.191168),(150.094822,2.190251))</td><td>dr1</td><td>True</td><td>150.0951</td><td>2.1937788888889997</td><td>0.00013968738028111863</td><td>0.00014185431064106524</td><td>7.231210572315804</td></tr>
</table></div>

<h3 id="use-ecogal-function--query-metata-data-based-on-the-coordinates">Use <code class="language-plaintext highlighter-rouge">ecogal</code> function : query metata data based on the coordinates</h3>

<p>Use <a href="https://github.com/mjastro/ecogal/blob/7afe6412e2309356766ab7fd702a1831214abf5e/ecogal/visualcheck.py#L34">visualcheck.get_footprint</a> function.</p>

<div class="language-python highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kn">import</span> <span class="nn">ecogal.visualcheck</span> <span class="k">as</span> <span class="n">visualcheck</span>
</code></pre></div></div>

<div class="language-python highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="c1"># get the metadata via DJA
</span><span class="n">ra</span><span class="p">,</span> <span class="n">dec</span> <span class="o">=</span> <span class="mf">34.41887</span><span class="p">,</span> <span class="o">-</span><span class="mf">5.21965</span>
<span class="n">fp</span><span class="p">,</span><span class="n">_</span> <span class="o">=</span> <span class="n">visualcheck</span><span class="p">.</span><span class="n">get_footprint</span><span class="p">(</span><span class="n">ra</span><span class="p">,</span><span class="n">dec</span><span class="p">)</span>
</code></pre></div></div>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>There are #15 ALMA projects overlapping
</code></pre></div></div>

<div class="language-python highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="n">fp</span><span class="p">[</span><span class="s">'file_alma'</span><span class="p">,</span><span class="s">'almaid'</span><span class="p">,</span><span class="s">'object'</span><span class="p">,</span><span class="s">'band'</span><span class="p">]</span>
</code></pre></div></div>

<div><i>GTable length=15</i>
<table id="table13202810800" class="table-striped table-bordered table-condensed">
<thead><tr><th>file_alma</th><th>almaid</th><th>object</th><th>band</th></tr></thead>
<thead><tr><th>bytes137</th><th>bytes14</th><th>bytes26</th><th>int64</th></tr></thead>
<tr><td>2012.1.00245.S__all_SXDF-NB2315-2_b7_cont_noninter2sig.image.pbcor.fits</td><td>2012.1.00245.S</td><td>SXDF-NB2315-2</td><td>7</td></tr>
<tr><td>2012.1.00245.S__all_SXDF-NB2315-3_b7_cont_noninter2sig.image.pbcor.fits</td><td>2012.1.00245.S</td><td>SXDF-NB2315-3</td><td>7</td></tr>
<tr><td>2013.1.00742.S__all_SXDF-B3-NB2315-FoV1_b3_cont_noninter2sig.image.pbcor.fits</td><td>2013.1.00742.S</td><td>SXDF-B3-NB2315-FoV1</td><td>3</td></tr>
<tr><td>2013.1.00781.S__all_SXDS-AzTEC23_b6_cont_noninter2sig.image.pbcor.fits</td><td>2013.1.00781.S</td><td>SXDS-AzTEC23</td><td>6</td></tr>
<tr><td>2015.1.00442.S__all_SXDS-AzTEC28_b6_cont_noninter2sig.image.pbcor.fits</td><td>2015.1.00442.S</td><td>SXDS-AzTEC28</td><td>6</td></tr>
<tr><td>2015.1.01074.S__all_UDSp_17_b7_cont_noninter2sig.image.pbcor.fits</td><td>2015.1.01074.S</td><td>UDSp_17</td><td>7</td></tr>
<tr><td>2015.1.01528.S__all_UDS.0113_b7_cont_noninter2sig.image.pbcor.fits</td><td>2015.1.01528.S</td><td>UDS.0113</td><td>7</td></tr>
<tr><td>2016.1.00434.S__all_UDS.0113_b7_cont_noninter2sig.image.pbcor.fits</td><td>2016.1.00434.S</td><td>UDS.0113</td><td>7</td></tr>
<tr><td>2017.1.00562.S__all_NB2315_b3_cont_noninter2sig.image.pbcor.fits</td><td>2017.1.00562.S</td><td>NB2315</td><td>3</td></tr>
<tr><td>2017.1.00562.S__all_NB2315_b6_cont_noninter2sig.image.pbcor.fits</td><td>2017.1.00562.S</td><td>NB2315</td><td>6</td></tr>
<tr><td>2017.1.00562.S__all_U4-16795_b9_cont_noninter2sig.image.pbcor.fits</td><td>2017.1.00562.S</td><td>U4-16795</td><td>9</td></tr>
<tr><td>2017.1.01027.S__all_U4-16504_b7_cont_noninter2sig.image.pbcor.fits</td><td>2017.1.01027.S</td><td>U4-16504</td><td>7</td></tr>
<tr><td>2017.1.01027.S__all_U4-16795_b7_cont_noninter2sig.image.pbcor.fits</td><td>2017.1.01027.S</td><td>U4-16795</td><td>7</td></tr>
<tr><td>2019.1.00337.S__all_AS2UDS0113.1_b3_cont_noninter2sig.image.pbcor.fits</td><td>2019.1.00337.S</td><td>AS2UDS0113.1</td><td>3</td></tr>
<tr><td>2021.1.00705.S__all_UDS.0113_b4_cont_noninter2sig.image.pbcor.fits</td><td>2021.1.00705.S</td><td>UDS.0113</td><td>4</td></tr>
</table></div>

<h1 id="get-almaecogal-cutouts">Get ALMA/ECOGAL cutouts</h1>

<h2 id="method-1-using-ecogal">Method 1. Using <code class="language-plaintext highlighter-rouge">ecogal</code></h2>

<p>Use <a href="https://github.com/mjastro/ecogal/blob/b8f1f842a3447aecc3ed365953184cd66a9bab98/ecogal/pbcor.py#L95">ecogal.pbcor.show_all_cutouts</a> function.</p>

<div class="language-python highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kn">import</span> <span class="nn">ecogal.pbcor</span> <span class="k">as</span> <span class="n">ecogal_plot</span>
</code></pre></div></div>

<h3 id="1-jwst-rgb--alma-cutout">[1] JWST RGB + ALMA cutout</h3>

<div class="language-python highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="c1"># an example of many ALMA coverage
</span><span class="n">ra</span><span class="p">,</span> <span class="n">dec</span> <span class="o">=</span> <span class="mf">34.41887</span><span class="p">,</span> <span class="o">-</span><span class="mf">5.21965</span>
</code></pre></div></div>

<div class="language-python highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="c1"># this example can take a while because it downloads a lot of fits files
</span><span class="n">summary_cutouts</span> <span class="o">=</span> <span class="n">ecogal_plot</span><span class="p">.</span><span class="n">show_all_cutouts</span><span class="p">(</span><span class="n">ra</span><span class="p">,</span><span class="n">dec</span><span class="p">)</span>
</code></pre></div></div>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>N=15
2013.1.00742.S__all_SXDF-B3-NB2315-FoV1_b3       b3   157x 157  0.04  dx=7.57"
2017.1.00562.S__all_NB2315_b3                    b3   313x 313  0.02  dx=7.57"
2019.1.00337.S__all_AS2UDS0113.1_b3              b3    63x  63  0.10  dx=9.84"
2021.1.00705.S__all_UDS.0113_b4                  b4    33x  33  0.20  dx=6.65"
2015.1.00442.S__all_SXDS-AzTEC28_b6              b6   157x 157  0.04  dx=8.32"
2013.1.00781.S__all_SXDS-AzTEC23_b6              b6   313x 313  0.02  dx=8.33"
2017.1.00562.S__all_NB2315_b6                    b6   313x 313  0.02  dx=4.83"
2016.1.00434.S__all_UDS.0113_b7                  b7   157x 157  0.04  dx=6.65"
2012.1.00245.S__all_SXDF-NB2315-3_b7             b7   313x 313  0.02  dx=9.65"
2015.1.01074.S__all_UDSp_17_b7                   b7   313x 313  0.02  dx=9.75"
2015.1.01528.S__all_UDS.0113_b7                  b7   313x 313  0.02  dx=6.66"
2012.1.00245.S__all_SXDF-NB2315-2_b7             b7   313x 313  0.02  dx=0.15"
2017.1.01027.S__all_U4-16504_b7                  b7    63x  63  0.10  dx=9.77"
2017.1.01027.S__all_U4-16795_b7                  b7    63x  63  0.10  dx=0.42"
2017.1.00562.S__all_U4-16795_b9                  b9   313x 313  0.02  dx=0.06"
</code></pre></div></div>

<p><img src="/dja/assets/post_files/2025-11-20-ecogal-dja-showcase_files/ecogal-dja-showcase_29_1.png" alt="png" /></p>

<h3 id="2-ready-made-summary-file">[2] Ready-made summary file</h3>

<p>There are some summary png files in the repository made for sources with ALMA detection and DJA spectra (~120 unique sources in total with the first data release), which can be queried by the source position.</p>

<ul>
  <li>the default searching area is 0.4 arcsec, that you can change with <code class="language-plaintext highlighter-rouge">r_search</code></li>
</ul>

<div class="language-python highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="n">ra</span><span class="p">,</span> <span class="n">dec</span> <span class="o">=</span> <span class="mf">150.14325</span><span class="p">,</span> <span class="mf">2.35599</span>	
<span class="n">_</span> <span class="o">=</span> <span class="n">visualcheck</span><span class="p">.</span><span class="n">get_summary</span><span class="p">(</span><span class="n">ra</span><span class="p">,</span><span class="n">dec</span><span class="p">,</span> <span class="n">r_search</span><span class="o">=</span><span class="mf">0.5</span><span class="p">)</span>
</code></pre></div></div>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>There are #10 ALMA projects overlapping
There are 9 ECOGAL+DJA cross-match!
https://s3.amazonaws.com/alma-ecogal/dr1/pngs/ecogal__0_all_filters_COSMOS.60520.png
A source found at a distance of = 0.13 arcsec
</code></pre></div></div>

<p><img src="https://s3.amazonaws.com/alma-ecogal/dr1/pngs/ecogal__0_all_filters_COSMOS.60520.png" width="70%" /></p>

<div class="language-python highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="n">ra</span><span class="p">,</span> <span class="n">dec</span> <span class="o">=</span> <span class="mf">34.27751</span><span class="p">,</span> <span class="o">-</span><span class="mf">5.22819</span>
<span class="n">_</span> <span class="o">=</span> <span class="n">visualcheck</span><span class="p">.</span><span class="n">get_summary</span><span class="p">(</span><span class="n">ra</span><span class="p">,</span><span class="n">dec</span><span class="p">)</span>
</code></pre></div></div>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>There are #1 ALMA projects overlapping
There are 1 ECOGAL+DJA cross-match!
https://s3.amazonaws.com/alma-ecogal/dr1/pngs/ecogal__0_all_filters_UDS.104633.png
A source found at a distance of = 0.13 arcsec
</code></pre></div></div>

<p><img src="https://s3.amazonaws.com/alma-ecogal/dr1/pngs/ecogal__0_all_filters_UDS.104633.png" width="70%" /></p>

<h2 id="method-2-getting-cutouts-and-footprint-via-dja-api">Method 2: Getting cutouts and footprint via DJA API</h2>

<ul>
  <li>ALMA footprint can also be retrieved via DJA API: <a href="https://grizli-cutout.herokuapp.com/">https://grizli-cutout.herokuapp.com/</a>
    <ul>
      <li>See also the instructions for accessing API (for other projects) : <a href="https://dawn-cph.github.io/dja/general/api_summary/">https://dawn-cph.github.io/dja/general/api_summary/</a></li>
    </ul>
  </li>
  <li>The identifier for ECOCAL is <code class="language-plaintext highlighter-rouge">ecogal</code>, followed by the output mode and coordinate information <code class="language-plaintext highlighter-rouge">?ra=&amp;dec=</code>.</li>
</ul>

<p>There are three different output modes:</p>

<ul>
  <li><code class="language-plaintext highlighter-rouge">output=footprint</code> : footprint for ALMA coverage</li>
  <li><code class="language-plaintext highlighter-rouge">output=csv</code> : metadata</li>
  <li><code class="language-plaintext highlighter-rouge">output=cutout</code> : making a cutout image
    <ul>
      <li>for cutout module: specify ALMA file names. The file name is available in the ECOGAL catalogue or from the metadata, and the column name is <code class="language-plaintext highlighter-rouge">file_alma</code></li>
    </ul>
  </li>
</ul>

<h3 id="footprint-mode"><code class="language-plaintext highlighter-rouge">footprint</code> mode</h3>
<p><a href="https://grizli-cutout.herokuapp.com/ecogal?output=footprint&amp;ra=34.48016&amp;dec=-5.11252">https://grizli-cutout.herokuapp.com/ecogal?output=footprint&amp;ra=34.48016&amp;dec=-5.11252</a></p>
<h3 id="cutout-mode"><code class="language-plaintext highlighter-rouge">cutout</code> mode</h3>
<p>Given the ALMA file name of 2015.1.01528.S__all_UDS.0424_b7_cont_noninter2sig.image.pbcor.fits</p>

<p><a href="https://grizli-cutout.herokuapp.com/ecogal?output=cutout&amp;sx=3.&amp;cutout_size=2.0&amp;ra=34.48016&amp;dec=-5.11252&amp;file_alma=2015.1.01528.S__all_UDS.0424_b7_cont_noninter2sig.image.pbcor.fits">https://grizli-cutout.herokuapp.com/ecogal?output=cutout&amp;sx=3.&amp;cutout_size=2.0&amp;ra=34.48016&amp;dec=-5.11252&amp;file_alma=2015.1.01528.S__all_UDS.0424_b7_cont_noninter2sig.image.pbcor.fits</a></p>

<div class="language-python highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kn">from</span> <span class="nn">IPython.display</span> <span class="kn">import</span> <span class="n">display</span><span class="p">,</span> <span class="n">Markdown</span><span class="p">,</span> <span class="n">Latex</span>
</code></pre></div></div>

<div class="language-python highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="c1"># getting the summary of the footprint for a given ra, dec
</span><span class="n">ra</span><span class="p">,</span> <span class="n">dec</span> <span class="o">=</span> <span class="mf">34.48016</span><span class="p">,</span><span class="o">-</span><span class="mf">5.11252</span>
<span class="n">cord</span> <span class="o">=</span> <span class="n">SkyCoord</span><span class="p">(</span><span class="n">ra</span><span class="p">,</span><span class="n">dec</span><span class="p">,</span> <span class="n">unit</span><span class="o">=</span><span class="p">(</span><span class="n">u</span><span class="p">.</span><span class="n">degree</span><span class="p">,</span> <span class="n">u</span><span class="p">.</span><span class="n">degree</span><span class="p">))</span>
<span class="n">ara</span> <span class="o">=</span> <span class="n">tab</span><span class="p">[</span><span class="s">'RA_peak_alma'</span><span class="p">]</span>
<span class="n">adec</span> <span class="o">=</span> <span class="n">tab</span><span class="p">[</span><span class="s">'Dec_peak_alma'</span><span class="p">]</span>
<span class="n">acord</span> <span class="o">=</span> <span class="n">SkyCoord</span><span class="p">(</span><span class="n">ara</span><span class="p">,</span> <span class="n">adec</span><span class="p">,</span> <span class="n">unit</span><span class="o">=</span><span class="p">(</span><span class="n">u</span><span class="p">.</span><span class="n">degree</span><span class="p">,</span> <span class="n">u</span><span class="p">.</span><span class="n">degree</span><span class="p">))</span>
<span class="c1">#search for the matching source within 0.1 arcsec
</span><span class="n">con_pos</span> <span class="o">=</span> <span class="n">acord</span><span class="p">.</span><span class="n">separation</span><span class="p">(</span><span class="n">cord</span><span class="p">).</span><span class="n">arcsec</span><span class="o">&lt;</span><span class="mf">0.15</span>
<span class="n">ecotb</span><span class="o">=</span><span class="n">tab</span><span class="p">[</span><span class="n">con_pos</span><span class="p">]</span>
</code></pre></div></div>

<div class="language-python highlighter-rouge"><div class="highlight"><pre class="highlight"><code>
<span class="c1">#  see also the description in the https://dawn-cph.github.io/dja/blog/2025/05/01/nirspec-merged-table-v4/
#  
</span><span class="n">cutout_URL</span> <span class="o">=</span> <span class="sa">f</span><span class="s">"https://grizli-cutout.herokuapp.com/ecogal?output=footprint&amp;ra=</span><span class="si">{</span><span class="n">ra</span><span class="si">}</span><span class="s">&amp;dec=</span><span class="si">{</span><span class="n">dec</span><span class="si">}</span><span class="s">"</span>

<span class="n">ecotb</span><span class="p">[</span><span class="s">'Thumb'</span><span class="p">]</span> <span class="o">=</span> <span class="p">[</span>
    <span class="s">"&lt;img src=</span><span class="se">\"</span><span class="s">{0}</span><span class="se">\"</span><span class="s"> height=200px&gt;"</span><span class="p">.</span><span class="nb">format</span><span class="p">(</span>
        <span class="n">cutout_URL</span><span class="p">.</span><span class="nb">format</span><span class="p">(</span><span class="n">ra</span><span class="p">,</span><span class="n">dec</span><span class="p">)</span>
    <span class="p">)</span>
    <span class="k">for</span> <span class="n">row</span> <span class="ow">in</span> <span class="n">ecotb</span>
<span class="p">]</span>

<span class="n">df</span> <span class="o">=</span> <span class="n">ecotb</span><span class="p">[</span><span class="s">'projectID'</span><span class="p">,</span><span class="s">'target_alma'</span><span class="p">,</span><span class="s">'id_new'</span><span class="p">,</span><span class="s">'band'</span><span class="p">,</span><span class="s">'beam_maj'</span><span class="p">,</span><span class="s">'sn'</span><span class="p">,</span><span class="s">'separation_prior'</span><span class="p">,</span><span class="s">'zsp_best_avail'</span><span class="p">,</span><span class="s">'z_phot_eazy'</span><span class="p">,</span><span class="s">'Thumb'</span><span class="p">,</span><span class="s">'file_alma'</span><span class="p">].</span><span class="n">to_pandas</span><span class="p">()</span>

<span class="n">display</span><span class="p">(</span><span class="n">Markdown</span><span class="p">(</span><span class="n">df</span><span class="p">.</span><span class="n">to_markdown</span><span class="p">()))</span>
</code></pre></div></div>

<table>
  <thead>
    <tr>
      <th style="text-align: right"> </th>
      <th style="text-align: left">projectID</th>
      <th style="text-align: left">target_alma</th>
      <th style="text-align: left">id_new</th>
      <th style="text-align: left">band</th>
      <th style="text-align: right">beam_maj</th>
      <th style="text-align: right">sn</th>
      <th style="text-align: right">separation_prior</th>
      <th style="text-align: right">zsp_best_avail</th>
      <th style="text-align: right">z_phot_eazy</th>
      <th style="text-align: left">Thumb</th>
      <th style="text-align: left">file_alma</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td style="text-align: right">0</td>
      <td style="text-align: left">2023.1.01520.S</td>
      <td style="text-align: left">0424.0</td>
      <td style="text-align: left">UDS.105062</td>
      <td style="text-align: left">b4</td>
      <td style="text-align: right">0.69</td>
      <td style="text-align: right">7.08</td>
      <td style="text-align: right">0.09</td>
      <td style="text-align: right">3.5433</td>
      <td style="text-align: right">3.47313</td>
      <td style="text-align: left"><img src="https://grizli-cutout.herokuapp.com/ecogal?output=footprint&amp;ra=34.48016&amp;dec=-5.11252" height="200px" /></td>
      <td style="text-align: left">2023.1.01520.S__all_0424.0_b4_cont_noninter2sig.image.pbcor.fits</td>
    </tr>
    <tr>
      <td style="text-align: right">1</td>
      <td style="text-align: left">2015.1.01528.S</td>
      <td style="text-align: left">UDS.0424</td>
      <td style="text-align: left">UDS.105062</td>
      <td style="text-align: left">b7</td>
      <td style="text-align: right">0.21</td>
      <td style="text-align: right">19.15</td>
      <td style="text-align: right">0.05</td>
      <td style="text-align: right">3.5433</td>
      <td style="text-align: right">3.47313</td>
      <td style="text-align: left"><img src="https://grizli-cutout.herokuapp.com/ecogal?output=footprint&amp;ra=34.48016&amp;dec=-5.11252" height="200px" /></td>
      <td style="text-align: left">2015.1.01528.S__all_UDS.0424_b7_cont_noninter2sig.image.pbcor.fits</td>
    </tr>
    <tr>
      <td style="text-align: right">2</td>
      <td style="text-align: left">2013.1.00781.S</td>
      <td style="text-align: left">SXDS-AzTEC28</td>
      <td style="text-align: left">UDS.105062</td>
      <td style="text-align: left">b6</td>
      <td style="text-align: right">0.32</td>
      <td style="text-align: right">18.72</td>
      <td style="text-align: right">0.06</td>
      <td style="text-align: right">3.5433</td>
      <td style="text-align: right">3.47313</td>
      <td style="text-align: left"><img src="https://grizli-cutout.herokuapp.com/ecogal?output=footprint&amp;ra=34.48016&amp;dec=-5.11252" height="200px" /></td>
      <td style="text-align: left">2013.1.00781.S__all_SXDS-AzTEC28_b6_cont_noninter2sig.image.pbcor.fits</td>
    </tr>
  </tbody>
</table>

<h1 id="access-the-almaecogal-image-fits-files">Access the ALMA/ECOGAL image fits files</h1>
<ul>
  <li>All fits files (primary beam corrected) are available from the DJA repository (on AWS server) and a frozen version will be available on Zenodo.</li>
</ul>

<div class="language-python highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="c1">#getting the corresponding file name from the catalogue
#some times the file name includes special string like "+", which should be parsed to download the fits file
</span>
<span class="n">idx</span> <span class="o">=</span> <span class="mi">2</span>
<span class="n">file_alma</span> <span class="o">=</span> <span class="n">ecotb</span><span class="p">[</span><span class="s">'file_alma'</span><span class="p">][</span><span class="n">idx</span><span class="p">]</span>
<span class="n">encoded_filename</span> <span class="o">=</span> <span class="n">file_alma</span><span class="p">.</span><span class="n">replace</span><span class="p">(</span><span class="s">"+"</span><span class="p">,</span> <span class="s">"%2B"</span><span class="p">)</span>
</code></pre></div></div>

<div class="language-python highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="n">fits_URL</span> <span class="o">=</span> <span class="s">"https://s3.amazonaws.com/alma-ecogal/dr1/pbcor/"</span>

<span class="n">almafits</span> <span class="o">=</span> <span class="n">fits</span><span class="p">.</span><span class="nb">open</span><span class="p">(</span>
    <span class="n">download_file</span><span class="p">(</span><span class="nb">str</span><span class="p">(</span><span class="n">os</span><span class="p">.</span><span class="n">path</span><span class="p">.</span><span class="n">join</span><span class="p">(</span><span class="n">fits_URL</span><span class="p">,</span> <span class="n">encoded_filename</span><span class="p">)),</span> <span class="n">cache</span><span class="o">=</span><span class="bp">True</span><span class="p">)</span>
                    <span class="p">)</span>
</code></pre></div></div>

<div class="language-python highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="n">img</span> <span class="o">=</span> <span class="n">almafits</span><span class="p">[</span><span class="mi">0</span><span class="p">].</span><span class="n">data</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span>
<span class="n">hdr</span> <span class="o">=</span> <span class="n">almafits</span><span class="p">[</span><span class="mi">0</span><span class="p">].</span><span class="n">header</span>
<span class="n">wcs_alma</span> <span class="o">=</span> <span class="n">WCS</span><span class="p">(</span><span class="n">hdr</span><span class="p">)</span>

<span class="n">gid</span> <span class="o">=</span> <span class="n">tab</span><span class="p">[</span><span class="n">con_pos</span><span class="p">][</span><span class="s">'id_new'</span><span class="p">][</span><span class="n">idx</span><span class="p">]</span>
<span class="n">band</span> <span class="o">=</span> <span class="n">tab</span><span class="p">[</span><span class="n">con_pos</span><span class="p">][</span><span class="s">'band'</span><span class="p">][</span><span class="n">idx</span><span class="p">]</span>
<span class="n">zgal</span> <span class="o">=</span> <span class="n">tab</span><span class="p">[</span><span class="n">con_pos</span><span class="p">][</span><span class="s">'zsp_best_avail'</span><span class="p">][</span><span class="n">idx</span><span class="p">]</span>
<span class="n">lmass</span> <span class="o">=</span> <span class="n">np</span><span class="p">.</span><span class="n">log10</span><span class="p">(</span><span class="n">tab</span><span class="p">[</span><span class="n">con_pos</span><span class="p">][</span><span class="s">'mass_ez'</span><span class="p">][</span><span class="n">idx</span><span class="p">])</span>
<span class="n">sfr</span> <span class="o">=</span> <span class="n">tab</span><span class="p">[</span><span class="n">con_pos</span><span class="p">][</span><span class="s">'sfr_ez'</span><span class="p">][</span><span class="n">idx</span><span class="p">]</span>

<span class="c1">#get the noise of the map (after pb-correction)
</span><span class="n">noise</span> <span class="o">=</span> <span class="n">tab</span><span class="p">[</span><span class="n">con_pos</span><span class="p">][</span><span class="s">'noise'</span><span class="p">][</span><span class="n">idx</span><span class="p">]</span>
</code></pre></div></div>

<div class="language-python highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="c1">##################
## plotting; think about adding a function
##################
</span>
<span class="n">x</span><span class="p">,</span><span class="n">y</span><span class="p">,</span><span class="n">_</span><span class="o">=</span> <span class="n">wcs_alma</span><span class="p">.</span><span class="n">wcs_world2pix</span><span class="p">(</span><span class="n">ra</span><span class="p">,</span><span class="n">dec</span><span class="p">,</span><span class="mi">0</span><span class="p">,</span><span class="mi">0</span><span class="p">)</span>
<span class="n">pixsz</span> <span class="o">=</span> <span class="n">np</span><span class="p">.</span><span class="nb">abs</span><span class="p">(</span><span class="n">hdr</span><span class="p">[</span><span class="s">'CDELT1'</span><span class="p">]</span><span class="o">*</span><span class="mi">3600</span><span class="p">)</span>
<span class="n">imsz</span> <span class="o">=</span> <span class="mi">1</span><span class="o">/</span><span class="n">pixsz</span>

<span class="n">noise_array</span> <span class="o">=</span> <span class="n">noise</span><span class="o">*</span><span class="n">np</span><span class="p">.</span><span class="n">arange</span><span class="p">(</span><span class="mi">4</span><span class="p">,</span><span class="mi">30</span><span class="p">,</span><span class="mi">3</span><span class="p">)</span>
<span class="n">cutout</span> <span class="o">=</span> <span class="n">img</span><span class="p">[</span><span class="nb">int</span><span class="p">(</span><span class="n">y</span><span class="o">-</span><span class="n">imsz</span><span class="p">):</span><span class="nb">int</span><span class="p">(</span><span class="n">y</span><span class="o">+</span><span class="n">imsz</span><span class="p">),</span><span class="nb">int</span><span class="p">(</span><span class="n">x</span><span class="o">-</span><span class="n">imsz</span><span class="p">):</span><span class="nb">int</span><span class="p">(</span><span class="n">x</span><span class="o">+</span><span class="n">imsz</span><span class="p">)]</span>

<span class="n">fig</span><span class="o">=</span><span class="n">plt</span><span class="p">.</span><span class="n">figure</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span><span class="n">figsize</span><span class="o">=</span><span class="p">(</span><span class="mi">5</span><span class="p">,</span><span class="mi">5</span><span class="p">))</span>
<span class="n">ax</span><span class="o">=</span><span class="n">plt</span><span class="p">.</span><span class="n">subplot</span><span class="p">(</span><span class="mi">111</span><span class="p">)</span>

<span class="n">ax</span><span class="p">.</span><span class="n">imshow</span><span class="p">(</span><span class="n">cutout</span><span class="p">,</span> <span class="n">origin</span><span class="o">=</span><span class="s">'lower'</span><span class="p">)</span>
<span class="n">ax</span><span class="p">.</span><span class="n">contour</span><span class="p">(</span><span class="n">cutout</span><span class="p">,</span> <span class="n">levels</span> <span class="o">=</span> <span class="n">noise_array</span><span class="p">,</span> <span class="n">colors</span><span class="o">=</span><span class="s">'white'</span><span class="p">)</span>
<span class="n">ax</span><span class="p">.</span><span class="n">set_title</span><span class="p">(</span><span class="sa">f</span><span class="s">'</span><span class="si">{</span><span class="n">gid</span><span class="si">}</span><span class="s">,</span><span class="si">{</span><span class="n">band</span><span class="si">}</span><span class="s">'</span><span class="p">)</span>
<span class="n">ax</span><span class="p">.</span><span class="n">text</span><span class="p">(</span><span class="mf">0.55</span><span class="p">,</span><span class="mf">0.95</span><span class="p">,</span> <span class="sa">f</span><span class="s">'z=</span><span class="si">{</span><span class="n">zgal</span><span class="si">}</span><span class="s">'</span><span class="p">,</span> <span class="n">transform</span><span class="o">=</span><span class="n">ax</span><span class="p">.</span><span class="n">transAxes</span><span class="p">,</span> <span class="n">c</span><span class="o">=</span><span class="s">'white'</span><span class="p">)</span>
<span class="n">ax</span><span class="p">.</span><span class="n">text</span><span class="p">(</span><span class="mf">0.55</span><span class="p">,</span><span class="mf">0.90</span><span class="p">,</span> <span class="sa">f</span><span class="s">'log(Mstar/Msun)=</span><span class="si">{</span><span class="n">lmass</span><span class="si">:</span><span class="p">.</span><span class="mi">2</span><span class="n">f</span><span class="si">}</span><span class="s">'</span><span class="p">,</span> <span class="n">transform</span><span class="o">=</span><span class="n">ax</span><span class="p">.</span><span class="n">transAxes</span><span class="p">,</span> <span class="n">c</span><span class="o">=</span><span class="s">'white'</span><span class="p">)</span>
<span class="n">ax</span><span class="p">.</span><span class="n">text</span><span class="p">(</span><span class="mf">0.55</span><span class="p">,</span><span class="mf">0.85</span><span class="p">,</span> <span class="sa">f</span><span class="s">'sfr=</span><span class="si">{</span><span class="n">sfr</span><span class="si">:</span><span class="p">.</span><span class="mi">2</span><span class="n">f</span><span class="si">}</span><span class="s"> Msun/yr'</span><span class="p">,</span> <span class="n">transform</span><span class="o">=</span><span class="n">ax</span><span class="p">.</span><span class="n">transAxes</span><span class="p">,</span> <span class="n">c</span><span class="o">=</span><span class="s">'white'</span><span class="p">)</span>



<span class="c1">#get beam size 
</span><span class="n">bmaj</span> <span class="o">=</span> <span class="n">hdr</span><span class="p">[</span><span class="s">'BMAJ'</span><span class="p">]</span><span class="o">*</span><span class="mi">3600</span>
<span class="n">bmin</span> <span class="o">=</span> <span class="n">hdr</span><span class="p">[</span><span class="s">'BMIN'</span><span class="p">]</span><span class="o">*</span><span class="mi">3600</span>
<span class="n">pa</span> <span class="o">=</span> <span class="n">hdr</span><span class="p">[</span><span class="s">'BPA'</span><span class="p">]</span>
<span class="n">theta</span> <span class="o">=</span> <span class="n">Angle</span><span class="p">(</span><span class="mi">90</span><span class="o">+</span><span class="n">pa</span><span class="p">,</span><span class="s">'deg'</span><span class="p">)</span> 
<span class="n">be</span><span class="o">=</span><span class="n">mpatches</span><span class="p">.</span><span class="n">Ellipse</span><span class="p">((</span><span class="n">imsz</span><span class="o">/</span><span class="mf">6.</span><span class="p">,</span><span class="n">imsz</span><span class="o">/</span><span class="mf">6.</span><span class="p">),</span><span class="n">bmaj</span><span class="o">/</span><span class="n">pixsz</span><span class="p">,</span><span class="n">bmin</span><span class="o">/</span><span class="n">pixsz</span><span class="p">,</span><span class="n">angle</span><span class="o">=</span><span class="n">theta</span><span class="p">.</span><span class="n">degree</span><span class="p">,</span><span class="n">lw</span><span class="o">=</span><span class="mi">1</span><span class="p">,</span><span class="n">facecolor</span><span class="o">=</span><span class="s">'grey'</span><span class="p">,</span><span class="n">edgecolor</span><span class="o">=</span><span class="s">'black'</span><span class="p">,</span><span class="n">hatch</span><span class="o">=</span><span class="s">'//'</span><span class="p">)</span>
<span class="n">ax</span><span class="p">.</span><span class="n">add_patch</span><span class="p">(</span><span class="n">be</span><span class="p">)</span>

</code></pre></div></div>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>&lt;matplotlib.patches.Ellipse at 0x346f95010&gt;
</code></pre></div></div>

<p><img src="/dja/assets/post_files/2025-11-20-ecogal-dja-showcase_files/ecogal-dja-showcase_46_1.png" alt="png" /></p>

<h1 id="access-the-dja-files-from-the-information-available-in-the-catalogue">Access the DJA files from the information available in the catalogue</h1>

<div class="language-python highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="c1">## consider peak SNR&gt;15 and DJA spectra at z&gt;5
</span>
<span class="n">con_sn</span> <span class="o">=</span> <span class="n">tab0</span><span class="p">[</span><span class="s">'sn'</span><span class="p">]</span><span class="o">&gt;</span><span class="mi">15</span>
<span class="n">con_sn</span> <span class="o">&amp;=</span> <span class="n">tab0</span><span class="p">[</span><span class="s">'zsp_best_survey'</span><span class="p">]</span><span class="o">==</span><span class="s">'dja'</span>
<span class="n">con_sn</span> <span class="o">&amp;=</span> <span class="n">tab0</span><span class="p">[</span><span class="s">'zsp_best_avail'</span><span class="p">]</span><span class="o">&gt;</span><span class="mi">5</span>

<span class="n">tab1</span> <span class="o">=</span> <span class="n">tab0</span><span class="p">[</span><span class="n">con_sn</span><span class="p">]</span>
<span class="n">filename</span> <span class="o">=</span> <span class="n">tab1</span><span class="p">[</span><span class="s">'file'</span><span class="p">][</span><span class="mi">0</span><span class="p">]</span>
<span class="n">zgal</span> <span class="o">=</span> <span class="n">tab1</span><span class="p">[</span><span class="s">'zsp_best_avail'</span><span class="p">][</span><span class="mi">0</span><span class="p">]</span>
<span class="n">filename</span><span class="p">,</span> <span class="n">zgal</span>
</code></pre></div></div>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>('capers-cos01-v4_prism-clear_6368_52597.spec.fits', 5.8351)
</code></pre></div></div>

<div class="language-python highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="c1"># prepare a line detectionary
# ** line dictionary -- for plot purpose (you can add more)
# ** lines in AA to overplot the emission lines
</span>
<span class="n">lam_file</span> <span class="o">=</span> <span class="n">Table</span><span class="p">.</span><span class="n">read</span><span class="p">(</span><span class="s">"""line, wavelength_nm
H-alpha,656.46
H-beta,486.271
H-delta,410.1734
H-gamma,434.0472
Ly-alpha,121.567
[OII],372.71
[OII],372.986
[OII],733.1
[OII],732.0
[NeIII],386.986
[OIII],496.03
[OIII],500.824
[NII],654.986
[NII],658.527
[SII],671.827
[SII],673.267
Pa-alpha,1875
Pa-beta,1282
Pa-gamma,1093.8
Br-beta,2626
HeI,1083.0
[SIII],906.9
[SIII],953.0
[CI],985.0
[PII],1188
[FeII],1257
[FeII],1640      
"""</span><span class="p">,</span> <span class="nb">format</span><span class="o">=</span><span class="s">"csv"</span><span class="p">)</span>

<span class="c1">#lam_file = Table.read('opt_emission_lines.csv')
</span>
<span class="n">lines_dic</span> <span class="o">=</span> <span class="p">{</span><span class="s">'Ly-alpha'</span><span class="p">:</span><span class="sa">r</span><span class="s">'Ly$\alpha$'</span><span class="p">,</span> <span class="s">'H-beta'</span><span class="p">:</span><span class="sa">r</span><span class="s">'H$\beta$'</span><span class="p">,</span> <span class="s">'H-alpha'</span><span class="p">:</span> <span class="sa">r</span><span class="s">'H$\alpha$ + [NII]'</span><span class="p">,</span> 
             <span class="s">'H-delta'</span><span class="p">:</span><span class="sa">r</span><span class="s">'H$\delta$'</span><span class="p">,</span><span class="s">'H-gamma'</span><span class="p">:</span><span class="sa">r</span><span class="s">'H$\gamma$'</span><span class="p">,</span> <span class="s">'Na1D'</span><span class="p">:</span><span class="s">'NaID'</span><span class="p">,</span>
             <span class="s">'Pa-alpha'</span><span class="p">:</span><span class="sa">r</span><span class="s">'Pa$\alpha$'</span><span class="p">,</span><span class="s">'Pa-beta'</span><span class="p">:</span><span class="sa">r</span><span class="s">'Pa$\beta$'</span><span class="p">,</span><span class="s">'Pa-gamma'</span><span class="p">:</span><span class="sa">r</span><span class="s">'Pa$\gamma$'</span><span class="p">,</span><span class="s">'CaIIK'</span><span class="p">:</span><span class="s">'Ca II K'</span><span class="p">,</span>
             <span class="s">'[SiVI]'</span><span class="p">:</span><span class="s">'[SiVI]'</span><span class="p">,</span><span class="s">'H2'</span><span class="p">:</span><span class="sa">r</span><span class="s">'H$_2$'</span><span class="p">,</span>
             <span class="s">'Br-beta'</span><span class="p">:</span><span class="sa">r</span><span class="s">'Br$\gamma$'</span><span class="p">,</span><span class="s">'MgI'</span><span class="p">:</span><span class="s">'MgI'</span><span class="p">,</span><span class="s">'NaI'</span><span class="p">:</span><span class="s">'NaI'</span><span class="p">,</span><span class="s">'SiI'</span><span class="p">:</span><span class="s">'SiI'</span><span class="p">,</span><span class="s">'HI'</span><span class="p">:</span><span class="s">'[FeII]+HI+FeII'</span><span class="p">,</span><span class="c1">#'HI':'HI'-- for grating
</span>             <span class="s">'HeI'</span><span class="p">:</span><span class="s">'HeI'</span><span class="p">,</span><span class="s">'FeII'</span><span class="p">:</span><span class="s">'FeII'</span><span class="p">,</span><span class="s">'[FeII]'</span><span class="p">:</span><span class="s">'[FeII]'</span><span class="p">,</span><span class="s">'[CI]'</span><span class="p">:</span><span class="s">'[CI]'</span><span class="p">,</span><span class="s">'[PII]'</span><span class="p">:</span><span class="s">'[PII]'</span><span class="p">,</span>
             <span class="s">'[OII]'</span><span class="p">:</span> <span class="s">'[OII]'</span><span class="p">,</span> <span class="s">'[NII]'</span><span class="p">:</span><span class="s">'[NII]'</span><span class="p">,</span> <span class="s">'[SII]'</span><span class="p">:</span><span class="s">'[SII]'</span><span class="p">,</span> <span class="s">'[OIII]'</span><span class="p">:</span><span class="s">'[OIII]'</span><span class="p">,</span><span class="s">'[NeIII]'</span><span class="p">:</span><span class="s">'[NeIII]'</span><span class="p">,</span>
             <span class="s">'[SIII]'</span><span class="p">:</span><span class="s">'[SIII]'</span><span class="p">}</span>
</code></pre></div></div>

<div class="language-python highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="n">lam_file</span>
</code></pre></div></div>

<div><i>Table length=27</i>
<table id="table13184612736" class="table-striped table-bordered table-condensed">
<thead><tr><th>line</th><th>wavelength_nm</th></tr></thead>
<thead><tr><th>str8</th><th>float64</th></tr></thead>
<tr><td>H-alpha</td><td>656.46</td></tr>
<tr><td>H-beta</td><td>486.271</td></tr>
<tr><td>H-delta</td><td>410.1734</td></tr>
<tr><td>H-gamma</td><td>434.0472</td></tr>
<tr><td>Ly-alpha</td><td>121.567</td></tr>
<tr><td>[OII]</td><td>372.71</td></tr>
<tr><td>[OII]</td><td>372.986</td></tr>
<tr><td>[OII]</td><td>733.1</td></tr>
<tr><td>[OII]</td><td>732.0</td></tr>
<tr><td>...</td><td>...</td></tr>
<tr><td>Pa-beta</td><td>1282.0</td></tr>
<tr><td>Pa-gamma</td><td>1093.8</td></tr>
<tr><td>Br-beta</td><td>2626.0</td></tr>
<tr><td>HeI</td><td>1083.0</td></tr>
<tr><td>[SIII]</td><td>906.9</td></tr>
<tr><td>[SIII]</td><td>953.0</td></tr>
<tr><td>[CI]</td><td>985.0</td></tr>
<tr><td>[PII]</td><td>1188.0</td></tr>
<tr><td>[FeII]</td><td>1257.0</td></tr>
<tr><td>[FeII]</td><td>1640.0</td></tr>
</table></div>

<h3 id="set-some-functions-to-get-dja-spectra">set some functions to get DJA spectra</h3>

<div class="language-python highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="c1">########################################
### Load the DJA spectra information:
########################################
</span>
<span class="k">def</span> <span class="nf">loadDJAspec</span><span class="p">(</span><span class="n">file_fullpath</span><span class="p">):</span>
    <span class="n">sh</span> <span class="o">=</span> <span class="n">msaexp</span><span class="p">.</span><span class="n">spectrum</span><span class="p">.</span><span class="n">SpectrumSampler</span><span class="p">(</span><span class="n">file_fullpath</span><span class="p">,</span> <span class="n">err_median_filter</span><span class="o">=</span><span class="bp">None</span><span class="p">)</span>
    <span class="n">wave</span> <span class="o">=</span> <span class="n">np</span><span class="p">.</span><span class="n">array</span><span class="p">(</span><span class="n">sh</span><span class="p">.</span><span class="n">spec</span><span class="p">[</span><span class="s">"wave"</span><span class="p">])</span><span class="o">*</span><span class="mf">1e4</span> <span class="c1">###in AA
</span>    <span class="n">fnu</span> <span class="o">=</span> <span class="n">sh</span><span class="p">.</span><span class="n">spec</span><span class="p">[</span><span class="s">"flux"</span><span class="p">]</span> <span class="c1">##uJy
</span>    <span class="n">fnu_err</span> <span class="o">=</span> <span class="n">sh</span><span class="p">.</span><span class="n">spec</span><span class="p">[</span><span class="s">"full_err"</span><span class="p">]</span> <span class="c1">##uJy
</span>
    <span class="n">spec_flambda</span> <span class="o">=</span> <span class="n">np</span><span class="p">.</span><span class="n">array</span><span class="p">((</span><span class="n">fnu</span><span class="o">*</span><span class="n">u</span><span class="p">.</span><span class="n">uJy</span><span class="o">/</span><span class="p">(</span><span class="n">wave</span><span class="o">*</span><span class="n">u</span><span class="p">.</span><span class="n">AA</span><span class="p">)</span><span class="o">**</span><span class="mi">2</span><span class="o">*</span><span class="n">const</span><span class="p">.</span><span class="n">c</span><span class="p">).</span><span class="n">to</span><span class="p">(</span><span class="n">u</span><span class="p">.</span><span class="n">erg</span><span class="o">/</span><span class="n">u</span><span class="p">.</span><span class="n">s</span><span class="o">/</span><span class="n">u</span><span class="p">.</span><span class="n">cm</span><span class="o">**</span><span class="mi">2</span><span class="o">/</span><span class="n">u</span><span class="p">.</span><span class="n">AA</span><span class="p">)</span><span class="o">/</span><span class="p">(</span><span class="n">u</span><span class="p">.</span><span class="n">erg</span><span class="o">/</span><span class="n">u</span><span class="p">.</span><span class="n">s</span><span class="o">/</span><span class="n">u</span><span class="p">.</span><span class="n">cm</span><span class="o">**</span><span class="mi">2</span><span class="o">/</span><span class="n">u</span><span class="p">.</span><span class="n">AA</span><span class="p">))</span>
    <span class="n">spec_flambda_err</span> <span class="o">=</span> <span class="n">np</span><span class="p">.</span><span class="n">array</span><span class="p">((</span><span class="n">fnu_err</span><span class="o">/</span><span class="p">(</span><span class="n">wave</span><span class="o">*</span><span class="n">u</span><span class="p">.</span><span class="n">AA</span><span class="p">)</span><span class="o">**</span><span class="mi">2</span><span class="o">*</span><span class="n">const</span><span class="p">.</span><span class="n">c</span><span class="p">).</span><span class="n">to</span><span class="p">(</span><span class="n">u</span><span class="p">.</span><span class="n">erg</span><span class="o">/</span><span class="n">u</span><span class="p">.</span><span class="n">s</span><span class="o">/</span><span class="n">u</span><span class="p">.</span><span class="n">cm</span><span class="o">**</span><span class="mi">2</span><span class="o">/</span><span class="n">u</span><span class="p">.</span><span class="n">AA</span><span class="p">)</span><span class="o">/</span><span class="p">(</span><span class="n">u</span><span class="p">.</span><span class="n">erg</span><span class="o">/</span><span class="n">u</span><span class="p">.</span><span class="n">s</span><span class="o">/</span><span class="n">u</span><span class="p">.</span><span class="n">cm</span><span class="o">**</span><span class="mi">2</span><span class="o">/</span><span class="n">u</span><span class="p">.</span><span class="n">AA</span><span class="p">))</span>
    <span class="k">return</span><span class="p">(</span><span class="n">sh</span><span class="p">,</span><span class="n">wave</span><span class="p">,</span><span class="n">spec_flambda</span><span class="p">,</span><span class="n">spec_flambda_err</span><span class="p">)</span>
</code></pre></div></div>

<div class="language-python highlighter-rouge"><div class="highlight"><pre class="highlight"><code>
<span class="c1">#################################################
### settting up the DJA spectra information
#################################################
</span>
<span class="k">def</span> <span class="nf">get_dja_spectra</span><span class="p">(</span><span class="nb">file</span><span class="p">,</span> <span class="n">zsp</span><span class="p">,</span> <span class="n">restframe</span><span class="o">=</span><span class="bp">False</span><span class="p">):</span>
    <span class="c1">#plotting in the restframe
</span>    
    <span class="n">root</span> <span class="o">=</span> <span class="nb">file</span><span class="p">.</span><span class="n">split</span><span class="p">(</span><span class="s">'_'</span><span class="p">)[</span><span class="mi">0</span><span class="p">]</span><span class="o">+</span><span class="s">'/'</span>
    <span class="n">basename</span> <span class="o">=</span> <span class="s">'https://s3.amazonaws.com/msaexp-nirspec/extractions/'</span>
    <span class="n">fullname</span> <span class="o">=</span> <span class="n">basename</span><span class="o">+</span><span class="n">root</span><span class="o">+</span><span class="nb">file</span>

    <span class="k">print</span><span class="p">(</span><span class="sa">f</span><span class="s">'A galaxy at z=</span><span class="si">{</span><span class="n">zsp</span><span class="si">}</span><span class="s">'</span><span class="p">)</span>
    <span class="n">sampled</span><span class="p">,</span><span class="n">lam</span><span class="p">,</span><span class="n">galaxy</span><span class="p">,</span><span class="n">noise</span> <span class="o">=</span> <span class="n">loadDJAspec</span><span class="p">(</span><span class="n">fullname</span><span class="p">)</span>

    <span class="c1">#deredshift
</span>    <span class="n">lam0</span> <span class="o">=</span> <span class="n">lam</span><span class="o">/</span><span class="p">(</span><span class="mi">1</span> <span class="o">+</span> <span class="n">zsp</span><span class="p">)</span>
    <span class="k">if</span> <span class="n">restframe</span><span class="p">:</span>
        <span class="n">lam</span> <span class="o">/=</span><span class="p">(</span><span class="mi">1</span> <span class="o">+</span> <span class="n">zsp</span><span class="p">)</span> <span class="c1"># Compute approximate restframe wavelength
</span>    

    <span class="c1">####mask areas
</span>    <span class="n">con_mask</span> <span class="o">=</span> <span class="n">noise</span><span class="o">==</span><span class="mi">0</span> 
    <span class="n">con_mask</span> <span class="o">|=</span> <span class="n">noise</span><span class="o">&gt;</span><span class="n">galaxy</span><span class="p">[</span><span class="n">lam</span> <span class="o">&gt;</span> <span class="mi">1100</span><span class="p">].</span><span class="nb">max</span><span class="p">()</span>
    <span class="n">galaxy_masked</span> <span class="o">=</span> <span class="n">np</span><span class="p">.</span><span class="n">ma</span><span class="p">.</span><span class="n">masked_where</span><span class="p">(</span><span class="n">con_mask</span><span class="p">,</span> <span class="n">galaxy</span><span class="p">)</span>


    <span class="n">galaxy0</span><span class="o">=</span><span class="n">galaxy_masked</span>
    <span class="n">noise0</span><span class="o">=</span><span class="n">noise</span>
    <span class="n">lam0</span><span class="o">=</span><span class="n">lam</span> <span class="c1">#in AA
</span>    <span class="k">return</span> <span class="n">lam0</span><span class="p">,</span> <span class="n">galaxy0</span><span class="p">,</span> <span class="n">noise0</span>



        
</code></pre></div></div>

<div class="language-python highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="n">lam0</span><span class="p">,</span> <span class="n">galaxy0</span><span class="p">,</span> <span class="n">noise0</span> <span class="o">=</span> <span class="n">get_dja_spectra</span><span class="p">(</span><span class="n">filename</span><span class="p">,</span> <span class="n">zgal</span><span class="p">,</span> <span class="n">restframe</span><span class="o">=</span><span class="bp">True</span><span class="p">)</span>
<span class="n">plt</span><span class="p">.</span><span class="n">plot</span><span class="p">(</span><span class="n">lam0</span><span class="p">[</span><span class="n">lam0</span><span class="o">&gt;</span><span class="mi">1300</span><span class="p">],</span><span class="n">galaxy0</span><span class="p">[</span><span class="n">lam0</span><span class="o">&gt;</span><span class="mi">1300</span><span class="p">])</span>
<span class="n">plt</span><span class="p">.</span><span class="n">xlabel</span><span class="p">(</span><span class="sa">f</span><span class="s">'Rest-Wavelength ($\AA$)'</span><span class="p">)</span>
<span class="n">plt</span><span class="p">.</span><span class="n">ylabel</span><span class="p">(</span><span class="sa">f</span><span class="s">'Flux (erg/s/cm$^2$/$\AA$)'</span><span class="p">)</span>

<span class="c1">##adding line identifiers
</span><span class="n">lines_plotted</span><span class="o">=</span><span class="p">[]</span>
<span class="n">ticker_max</span> <span class="o">=</span> <span class="n">galaxy0</span><span class="p">.</span><span class="nb">max</span><span class="p">()</span>
<span class="n">text_hi</span> <span class="o">=</span> <span class="n">ticker_max</span><span class="o">+</span><span class="mf">1e-20</span>
<span class="k">for</span> <span class="n">kk</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="nb">len</span><span class="p">(</span><span class="n">lam_file</span><span class="p">)):</span>
    <span class="n">lam_idx</span> <span class="o">=</span> <span class="n">np</span><span class="p">.</span><span class="n">argmin</span><span class="p">(</span><span class="n">np</span><span class="p">.</span><span class="nb">abs</span><span class="p">(</span><span class="n">lam_file</span><span class="p">[</span><span class="s">'wavelength_nm'</span><span class="p">][</span><span class="n">kk</span><span class="p">]</span><span class="o">*</span><span class="mi">10</span><span class="o">-</span><span class="n">lam0</span><span class="p">))</span>
    
    <span class="k">if</span> <span class="n">lam_file</span><span class="p">[</span><span class="s">'wavelength_nm'</span><span class="p">][</span><span class="n">kk</span><span class="p">]</span><span class="o">*</span><span class="mi">10</span><span class="o">&gt;</span> <span class="n">lam0</span><span class="p">.</span><span class="nb">min</span><span class="p">()</span> <span class="ow">and</span> <span class="n">lam_file</span><span class="p">[</span><span class="s">'wavelength_nm'</span><span class="p">][</span><span class="n">kk</span><span class="p">]</span><span class="o">*</span><span class="mi">10</span><span class="o">&lt;</span><span class="n">lam0</span><span class="p">.</span><span class="nb">max</span><span class="p">()</span> <span class="ow">and</span> <span class="n">noise0</span><span class="p">[</span><span class="n">lam_idx</span><span class="p">]</span><span class="o">&gt;</span><span class="mi">0</span><span class="p">:</span>
        <span class="n">plt</span><span class="p">.</span><span class="n">axvline</span><span class="p">(</span><span class="n">lam_file</span><span class="p">[</span><span class="s">'wavelength_nm'</span><span class="p">][</span><span class="n">kk</span><span class="p">]</span><span class="o">*</span><span class="mi">10</span><span class="p">,</span> <span class="n">linestyle</span><span class="o">=</span><span class="s">':'</span><span class="p">,</span> <span class="n">color</span><span class="o">=</span><span class="s">'darkgrey'</span><span class="p">)</span>
        <span class="k">if</span> <span class="n">lam_file</span><span class="p">[</span><span class="s">'line'</span><span class="p">][</span><span class="n">kk</span><span class="p">]</span> <span class="ow">not</span> <span class="ow">in</span> <span class="n">lines_plotted</span><span class="p">:</span>
            <span class="c1">#lines_plotted.append(lam_file['line'][kk])
</span>            <span class="k">if</span> <span class="n">lam_file</span><span class="p">[</span><span class="s">'line'</span><span class="p">][</span><span class="n">kk</span><span class="p">]</span> <span class="ow">not</span> <span class="ow">in</span> <span class="p">[</span><span class="s">'[NII]'</span><span class="p">]:</span><span class="c1">#if PRISM #'[FeII]','FeII'
</span>                <span class="n">plt</span><span class="p">.</span><span class="n">text</span><span class="p">(</span><span class="n">lam_file</span><span class="p">[</span><span class="s">'wavelength_nm'</span><span class="p">][</span><span class="n">kk</span><span class="p">]</span><span class="o">*</span><span class="mi">10</span><span class="o">+</span><span class="mf">0.01</span><span class="p">,</span> <span class="n">text_hi</span><span class="o">*</span><span class="p">(</span><span class="mf">0.9</span><span class="o">-</span><span class="mf">0.1</span><span class="o">*</span><span class="n">np</span><span class="p">.</span><span class="n">mod</span><span class="p">(</span><span class="n">kk</span><span class="p">,</span><span class="mi">3</span><span class="p">)),</span> <span class="n">lines_dic</span><span class="p">[</span><span class="n">lam_file</span><span class="p">[</span><span class="s">'line'</span><span class="p">][</span><span class="n">kk</span><span class="p">]],</span> <span class="n">rotation</span><span class="o">=</span><span class="s">'vertical'</span><span class="p">,</span> <span class="n">fontsize</span><span class="o">=</span><span class="mi">9</span><span class="p">)</span>

</code></pre></div></div>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>A galaxy at z=5.8351
</code></pre></div></div>

<p><img src="/dja/assets/post_files/2025-11-20-ecogal-dja-showcase_files/ecogal-dja-showcase_54_1.png" alt="png" /></p>

<h2 id="get-source-information-with-multiple-dja-spectra">get source information with multiple DJA spectra</h2>

<div class="language-python highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="c1"># Full DJA table
</span>
<span class="n">table_url</span> <span class="o">=</span> <span class="s">"https://s3.amazonaws.com/msaexp-nirspec/extractions/dja_msaexp_emission_lines_v4.4.csv.gz"</span>
<span class="n">tab00</span> <span class="o">=</span> <span class="n">utils</span><span class="p">.</span><span class="n">read_catalog</span><span class="p">(</span><span class="n">download_file</span><span class="p">(</span><span class="n">table_url</span><span class="p">,</span> <span class="n">cache</span><span class="o">=</span><span class="bp">True</span><span class="p">),</span> <span class="nb">format</span><span class="o">=</span><span class="s">'csv'</span><span class="p">)</span>


</code></pre></div></div>

<div class="language-python highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="n">con_sn</span> <span class="o">=</span> <span class="n">tab0</span><span class="p">[</span><span class="s">'sn'</span><span class="p">]</span><span class="o">&gt;</span><span class="mi">10</span>
<span class="n">con_sn</span> <span class="o">&amp;=</span> <span class="n">tab0</span><span class="p">[</span><span class="s">'zsp_best_survey'</span><span class="p">]</span><span class="o">==</span><span class="s">'dja'</span>
<span class="n">con_sn</span> <span class="o">&amp;=</span> <span class="n">tab0</span><span class="p">[</span><span class="s">'zsp_best_avail'</span><span class="p">]</span><span class="o">&gt;</span><span class="mi">4</span>

<span class="n">tab0</span><span class="p">[</span><span class="n">con_sn</span><span class="p">][</span><span class="s">'file'</span><span class="p">,</span><span class="s">'objid'</span><span class="p">]</span>
</code></pre></div></div>

<div><i>GTable length=6</i>
<table id="table13184605776" class="table-striped table-bordered table-condensed">
<thead><tr><th>file</th><th>objid</th></tr></thead>
<thead><tr><th>str55</th><th>float64</th></tr></thead>
<tr><td>gto-wide-uds13-v4_prism-clear_1215_1951.spec.fits</td><td>172449.0</td></tr>
<tr><td>capers-cos01-v4_prism-clear_6368_52597.spec.fits</td><td>141884.0</td></tr>
<tr><td>rubies-uds23-v4_prism-clear_4233_166691.spec.fits</td><td>149974.0</td></tr>
<tr><td>capers-cos04-v4_prism-clear_6368_36571.spec.fits</td><td>143258.0</td></tr>
<tr><td>rubies-uds1-v4_prism-clear_4233_37108.spec.fits</td><td>151060.0</td></tr>
<tr><td>gto-wide-uds13-v4_prism-clear_1215_1472.spec.fits</td><td>162424.0</td></tr>
</table></div>

<div class="language-python highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="c1">## check the alternative spectra information
</span>
<span class="n">dja_uniq_id</span> <span class="o">=</span> <span class="mi">172449</span>
<span class="k">print</span><span class="p">(</span><span class="n">dja_uniq_id</span><span class="p">)</span>

<span class="c1">#search for other dja spectra
</span><span class="n">msa</span> <span class="o">=</span> <span class="n">tab00</span><span class="p">[</span><span class="n">tab00</span><span class="p">[</span><span class="s">'objid'</span><span class="p">]</span> <span class="o">==</span> <span class="n">dja_uniq_id</span><span class="p">]</span>
<span class="n">msa</span>
</code></pre></div></div>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>172449
</code></pre></div></div>

<div><i>GTable length=4</i>
<table id="table13210052288" class="table-striped table-bordered table-condensed">
<thead><tr><th>file</th><th>srcid</th><th>ra</th><th>dec</th><th>grating</th><th>filter</th><th>effexptm</th><th>nfiles</th><th>dataset</th><th>msamet</th><th>msaid</th><th>msacnf</th><th>dithn</th><th>slitid</th><th>root</th><th>npix</th><th>ndet</th><th>wmin</th><th>wmax</th><th>wmaxsn</th><th>sn10</th><th>flux10</th><th>err10</th><th>sn50</th><th>flux50</th><th>err50</th><th>sn90</th><th>flux90</th><th>err90</th><th>xstart</th><th>ystart</th><th>xsize</th><th>ysize</th><th>slit_pa</th><th>pa_v3</th><th>srcypix</th><th>profcen</th><th>profsig</th><th>ctime</th><th>version</th><th>exptime</th><th>contchi2</th><th>dof</th><th>fullchi2</th><th>line_ariii_7138</th><th>line_ariii_7138_err</th><th>line_ariii_7753</th><th>line_ariii_7753_err</th><th>line_bra</th><th>line_bra_err</th><th>line_brb</th><th>line_brb_err</th><th>line_brd</th><th>line_brd_err</th><th>line_brg</th><th>line_brg_err</th><th>line_hb</th><th>line_hb_err</th><th>line_hd</th><th>line_hd_err</th><th>line_hei_1083</th><th>line_hei_1083_err</th><th>line_hei_3889</th><th>line_hei_3889_err</th><th>line_hei_5877</th><th>line_hei_5877_err</th><th>line_hei_7065</th><th>line_hei_7065_err</th><th>line_hei_8446</th><th>line_hei_8446_err</th><th>line_heii_4687</th><th>line_heii_4687_err</th><th>line_hg</th><th>line_hg_err</th><th>line_lya</th><th>line_lya_err</th><th>line_mgii</th><th>line_mgii_err</th><th>line_neiii_3867</th><th>line_neiii_3867_err</th><th>line_neiii_3968</th><th>line_neiii_3968_err</th><th>line_nev_3346</th><th>line_nev_3346_err</th><th>line_nevi_3426</th><th>line_nevi_3426_err</th><th>line_niii_1750</th><th>line_niii_1750_err</th><th>line_oi_6302</th><th>line_oi_6302_err</th><th>line_oii</th><th>line_oii_7325</th><th>line_oii_7325_err</th><th>line_oii_err</th><th>line_oiii</th><th>line_oiii_1663</th><th>line_oiii_1663_err</th><th>line_oiii_4363</th><th>line_oiii_4363_err</th><th>line_oiii_4959</th><th>line_oiii_4959_err</th><th>line_oiii_5007</th><th>line_oiii_5007_err</th><th>line_oiii_err</th><th>line_pa10</th><th>line_pa10_err</th><th>line_pa8</th><th>line_pa8_err</th><th>line_pa9</th><th>line_pa9_err</th><th>line_paa</th><th>line_paa_err</th><th>line_pab</th><th>line_pab_err</th><th>line_pad</th><th>line_pad_err</th><th>line_pag</th><th>line_pag_err</th><th>line_pfb</th><th>line_pfb_err</th><th>line_pfd</th><th>line_pfd_err</th><th>line_pfe</th><th>line_pfe_err</th><th>line_pfg</th><th>line_pfg_err</th><th>line_sii</th><th>line_sii_err</th><th>line_siii_9068</th><th>line_siii_9068_err</th><th>line_siii_9531</th><th>line_siii_9531_err</th><th>spl_0</th><th>spl_0_err</th><th>spl_1</th><th>spl_10</th><th>spl_10_err</th><th>spl_11</th><th>spl_11_err</th><th>spl_12</th><th>spl_12_err</th><th>spl_13</th><th>spl_13_err</th><th>spl_14</th><th>spl_14_err</th><th>spl_15</th><th>spl_15_err</th><th>spl_16</th><th>spl_16_err</th><th>spl_17</th><th>spl_17_err</th><th>spl_18</th><th>spl_18_err</th><th>spl_19</th><th>spl_19_err</th><th>spl_1_err</th><th>spl_2</th><th>spl_20</th><th>spl_20_err</th><th>spl_21</th><th>spl_21_err</th><th>spl_22</th><th>spl_22_err</th><th>spl_2_err</th><th>spl_3</th><th>spl_3_err</th><th>spl_4</th><th>spl_4_err</th><th>spl_5</th><th>spl_5_err</th><th>spl_6</th><th>spl_6_err</th><th>spl_7</th><th>spl_7_err</th><th>spl_8</th><th>spl_8_err</th><th>spl_9</th><th>spl_9_err</th><th>zline</th><th>line_civ_1549</th><th>line_civ_1549_err</th><th>line_h10</th><th>line_h10_err</th><th>line_h11</th><th>line_h11_err</th><th>line_h12</th><th>line_h12_err</th><th>line_h7</th><th>line_h7_err</th><th>line_h8</th><th>line_h8_err</th><th>line_h9</th><th>line_h9_err</th><th>line_ha</th><th>line_ha_err</th><th>line_hei_6680</th><th>line_hei_6680_err</th><th>line_heii_1640</th><th>line_heii_1640_err</th><th>line_nii_6549</th><th>line_nii_6549_err</th><th>line_nii_6584</th><th>line_nii_6584_err</th><th>line_oii_7323</th><th>line_oii_7323_err</th><th>line_oii_7332</th><th>line_oii_7332_err</th><th>line_sii_6717</th><th>line_sii_6717_err</th><th>line_sii_6731</th><th>line_sii_6731_err</th><th>line_siii_6314</th><th>line_siii_6314_err</th><th>escale0</th><th>escale1</th><th>line_ciii_1906</th><th>line_ciii_1906_err</th><th>line_niv_1487</th><th>line_niv_1487_err</th><th>line_pah_3p29</th><th>line_pah_3p29_err</th><th>line_pah_3p40</th><th>line_pah_3p40_err</th><th>eqw_ariii_7138</th><th>eqw_ariii_7753</th><th>eqw_bra</th><th>eqw_brb</th><th>eqw_brd</th><th>eqw_brg</th><th>eqw_ciii_1906</th><th>eqw_civ_1549</th><th>eqw_ha_nii</th><th>eqw_hb</th><th>eqw_hd</th><th>eqw_hei_1083</th><th>eqw_hei_3889</th><th>eqw_hei_5877</th><th>eqw_hei_7065</th><th>eqw_hei_8446</th><th>eqw_heii_1640</th><th>eqw_heii_4687</th><th>eqw_hg</th><th>eqw_lya</th><th>eqw_mgii</th><th>eqw_neiii_3867</th><th>eqw_neiii_3968</th><th>eqw_nev_3346</th><th>eqw_nevi_3426</th><th>eqw_niii_1750</th><th>eqw_niv_1487</th><th>eqw_oi_6302</th><th>eqw_oii</th><th>eqw_oii_7325</th><th>eqw_oiii</th><th>eqw_oiii_1663</th><th>eqw_oiii_4363</th><th>eqw_oiii_4959</th><th>eqw_oiii_5007</th><th>eqw_pa10</th><th>eqw_pa8</th><th>eqw_pa9</th><th>eqw_paa</th><th>eqw_pab</th><th>eqw_pad</th><th>eqw_pag</th><th>eqw_pfb</th><th>eqw_pfd</th><th>eqw_pfe</th><th>eqw_pfg</th><th>eqw_sii</th><th>eqw_siii_9068</th><th>eqw_siii_9531</th><th>line_ha_nii</th><th>line_ha_nii_err</th><th>eqw_h10</th><th>eqw_h11</th><th>eqw_h12</th><th>eqw_h7</th><th>eqw_h8</th><th>eqw_h9</th><th>eqw_ha</th><th>eqw_hei_6680</th><th>eqw_nii_6549</th><th>eqw_nii_6584</th><th>eqw_oii_7323</th><th>eqw_oii_7332</th><th>eqw_sii_6717</th><th>eqw_sii_6731</th><th>eqw_siii_6314</th><th>sn_line</th><th>ztime</th><th>line_ci_9850</th><th>line_ci_9850_err</th><th>line_feii_11128</th><th>line_feii_11128_err</th><th>line_pii_11886</th><th>line_pii_11886_err</th><th>line_feii_12570</th><th>line_feii_12570_err</th><th>eqw_ci_9850</th><th>eqw_feii_11128</th><th>eqw_pii_11886</th><th>eqw_feii_12570</th><th>line_feii_16440</th><th>line_feii_16440_err</th><th>line_feii_16877</th><th>line_feii_16877_err</th><th>line_brf</th><th>line_brf_err</th><th>line_feii_17418</th><th>line_feii_17418_err</th><th>line_bre</th><th>line_bre_err</th><th>line_feii_18362</th><th>line_feii_18362_err</th><th>eqw_feii_16440</th><th>eqw_feii_16877</th><th>eqw_brf</th><th>eqw_feii_17418</th><th>eqw_bre</th><th>eqw_feii_18362</th><th>valid</th><th>objid</th><th>z_best</th><th>ztype</th><th>z_prism</th><th>z_grating</th><th>phot_correction</th><th>phot_flux_radius</th><th>phot_dr</th><th>file_phot</th><th>id_phot</th><th>phot_mag_auto</th><th>phot_f090w_tot_1</th><th>phot_f090w_etot_1</th><th>phot_f115w_tot_1</th><th>phot_f115w_etot_1</th><th>phot_f150w_tot_1</th><th>phot_f150w_etot_1</th><th>phot_f200w_tot_1</th><th>phot_f200w_etot_1</th><th>phot_f277w_tot_1</th><th>phot_f277w_etot_1</th><th>phot_f356w_tot_1</th><th>phot_f356w_etot_1</th><th>phot_f410m_tot_1</th><th>phot_f410m_etot_1</th><th>phot_f444w_tot_1</th><th>phot_f444w_etot_1</th><th>phot_Av</th><th>phot_mass</th><th>phot_restU</th><th>phot_restV</th><th>phot_restJ</th><th>z_phot</th><th>phot_LHa</th><th>phot_LOIII</th><th>phot_LOII</th><th>grade</th><th>zgrade</th><th>reviewer</th><th>comment</th><th>zrf</th><th>escale</th><th>obs_239_valid</th><th>obs_239_frac</th><th>obs_239_flux</th><th>obs_239_err</th><th>obs_239_full_err</th><th>obs_205_valid</th><th>obs_205_frac</th><th>obs_205_flux</th><th>obs_205_err</th><th>obs_205_full_err</th><th>obs_362_valid</th><th>obs_362_frac</th><th>obs_362_flux</th><th>obs_362_err</th><th>obs_362_full_err</th><th>obs_363_valid</th><th>obs_363_frac</th><th>obs_363_flux</th><th>obs_363_err</th><th>obs_363_full_err</th><th>obs_364_valid</th><th>obs_364_frac</th><th>obs_364_flux</th><th>obs_364_err</th><th>obs_364_full_err</th><th>obs_365_valid</th><th>obs_365_frac</th><th>obs_365_flux</th><th>obs_365_err</th><th>obs_365_full_err</th><th>obs_366_valid</th><th>obs_366_frac</th><th>obs_366_flux</th><th>obs_366_err</th><th>obs_366_full_err</th><th>obs_370_valid</th><th>obs_370_frac</th><th>obs_370_flux</th><th>obs_370_err</th><th>obs_370_full_err</th><th>obs_371_valid</th><th>obs_371_frac</th><th>obs_371_flux</th><th>obs_371_err</th><th>obs_371_full_err</th><th>obs_375_valid</th><th>obs_375_frac</th><th>obs_375_flux</th><th>obs_375_err</th><th>obs_375_full_err</th><th>obs_376_valid</th><th>obs_376_frac</th><th>obs_376_flux</th><th>obs_376_err</th><th>obs_376_full_err</th><th>obs_377_valid</th><th>obs_377_frac</th><th>obs_377_flux</th><th>obs_377_err</th><th>obs_377_full_err</th><th>obs_379_valid</th><th>obs_379_frac</th><th>obs_379_flux</th><th>obs_379_err</th><th>obs_379_full_err</th><th>obs_380_valid</th><th>obs_380_frac</th><th>obs_380_flux</th><th>obs_380_err</th><th>obs_380_full_err</th><th>obs_381_valid</th><th>obs_381_frac</th><th>obs_381_flux</th><th>obs_381_err</th><th>obs_381_full_err</th><th>obs_382_valid</th><th>obs_382_frac</th><th>obs_382_flux</th><th>obs_382_err</th><th>obs_382_full_err</th><th>obs_383_valid</th><th>obs_383_frac</th><th>obs_383_flux</th><th>obs_383_err</th><th>obs_383_full_err</th><th>obs_384_valid</th><th>obs_384_frac</th><th>obs_384_flux</th><th>obs_384_err</th><th>obs_384_full_err</th><th>obs_385_valid</th><th>obs_385_frac</th><th>obs_385_flux</th><th>obs_385_err</th><th>obs_385_full_err</th><th>obs_386_valid</th><th>obs_386_frac</th><th>obs_386_flux</th><th>obs_386_err</th><th>obs_386_full_err</th><th>rest_120_valid</th><th>rest_120_frac</th><th>rest_120_flux</th><th>rest_120_err</th><th>rest_120_full_err</th><th>rest_121_valid</th><th>rest_121_frac</th><th>rest_121_flux</th><th>rest_121_err</th><th>rest_121_full_err</th><th>rest_218_valid</th><th>rest_218_frac</th><th>rest_218_flux</th><th>rest_218_err</th><th>rest_218_full_err</th><th>rest_219_valid</th><th>rest_219_frac</th><th>rest_219_flux</th><th>rest_219_err</th><th>rest_219_full_err</th><th>rest_270_valid</th><th>rest_270_frac</th><th>rest_270_flux</th><th>rest_270_err</th><th>rest_270_full_err</th><th>rest_271_valid</th><th>rest_271_frac</th><th>rest_271_flux</th><th>rest_271_err</th><th>rest_271_full_err</th><th>rest_272_valid</th><th>rest_272_frac</th><th>rest_272_flux</th><th>rest_272_err</th><th>rest_272_full_err</th><th>rest_274_valid</th><th>rest_274_frac</th><th>rest_274_flux</th><th>rest_274_err</th><th>rest_274_full_err</th><th>rest_153_valid</th><th>rest_153_frac</th><th>rest_153_flux</th><th>rest_153_err</th><th>rest_153_full_err</th><th>rest_154_valid</th><th>rest_154_frac</th><th>rest_154_flux</th><th>rest_154_err</th><th>rest_154_full_err</th><th>rest_155_valid</th><th>rest_155_frac</th><th>rest_155_flux</th><th>rest_155_err</th><th>rest_155_full_err</th><th>rest_156_valid</th><th>rest_156_frac</th><th>rest_156_flux</th><th>rest_156_err</th><th>rest_156_full_err</th><th>rest_157_valid</th><th>rest_157_frac</th><th>rest_157_flux</th><th>rest_157_err</th><th>rest_157_full_err</th><th>rest_158_valid</th><th>rest_158_frac</th><th>rest_158_flux</th><th>rest_158_err</th><th>rest_158_full_err</th><th>rest_159_valid</th><th>rest_159_frac</th><th>rest_159_flux</th><th>rest_159_err</th><th>rest_159_full_err</th><th>rest_160_valid</th><th>rest_160_frac</th><th>rest_160_flux</th><th>rest_160_err</th><th>rest_160_full_err</th><th>rest_161_valid</th><th>rest_161_frac</th><th>rest_161_flux</th><th>rest_161_err</th><th>rest_161_full_err</th><th>rest_162_valid</th><th>rest_162_frac</th><th>rest_162_flux</th><th>rest_162_err</th><th>rest_162_full_err</th><th>rest_163_valid</th><th>rest_163_frac</th><th>rest_163_flux</th><th>rest_163_err</th><th>rest_163_full_err</th><th>rest_414_valid</th><th>rest_414_frac</th><th>rest_414_flux</th><th>rest_414_err</th><th>rest_414_full_err</th><th>rest_415_valid</th><th>rest_415_frac</th><th>rest_415_flux</th><th>rest_415_err</th><th>rest_415_full_err</th><th>rest_416_valid</th><th>rest_416_frac</th><th>rest_416_flux</th><th>rest_416_err</th><th>rest_416_full_err</th><th>beta</th><th>beta_ref_flux</th><th>beta_npix</th><th>beta_wlo</th><th>beta_whi</th><th>beta_nmad</th><th>dla_npix</th><th>dla_value</th><th>dla_unc</th><th>beta_cov_00</th><th>beta_cov_01</th><th>beta_cov_10</th><th>beta_cov_11</th></tr></thead>
<thead><tr><th>str57</th><th>int64</th><th>float64</th><th>float64</th><th>str5</th><th>str6</th><th>float64</th><th>int64</th><th>str72</th><th>str25</th><th>int64</th><th>int64</th><th>int64</th><th>int64</th><th>str24</th><th>int64</th><th>int64</th><th>float64</th><th>float64</th><th>float64</th><th>float64</th><th>float64</th><th>float64</th><th>float64</th><th>float64</th><th>float64</th><th>float64</th><th>float64</th><th>float64</th><th>int64</th><th>int64</th><th>int64</th><th>int64</th><th>float64</th><th>float64</th><th>float64</th><th>float64</th><th>float64</th><th>float64</th><th>str30</th><th>float64</th><th>float64</th><th>int64</th><th>float64</th><th>float64</th><th>float64</th><th>float64</th><th>float64</th><th>float64</th><th>float64</th><th>float64</th><th>float64</th><th>float64</th><th>float64</th><th>float64</th><th>float64</th><th>float64</th><th>float64</th><th>float64</th><th>float64</th><th>float64</th><th>float64</th><th>float64</th><th>float64</th><th>float64</th><th>float64</th><th>float64</th><th>float64</th><th>float64</th><th>float64</th><th>float64</th><th>float64</th><th>float64</th><th>float64</th><th>float64</th><th>float64</th><th>float64</th><th>float64</th><th>float64</th><th>float64</th><th>float64</th><th>float64</th><th>float64</th><th>float64</th><th>float64</th><th>float64</th><th>float64</th><th>float64</th><th>float64</th><th>float64</th><th>float64</th><th>float64</th><th>float64</th><th>float64</th><th>float64</th><th>float64</th><th>float64</th><th>float64</th><th>float64</th><th>float64</th><th>float64</th><th>float64</th><th>float64</th><th>float64</th><th>float64</th><th>float64</th><th>float64</th><th>float64</th><th>float64</th><th>float64</th><th>float64</th><th>float64</th><th>float64</th><th>float64</th><th>float64</th><th>float64</th><th>float64</th><th>float64</th><th>float64</th><th>float64</th><th>float64</th><th>float64</th><th>float64</th><th>float64</th><th>float64</th><th>float64</th><th>float64</th><th>float64</th><th>float64</th><th>float64</th><th>float64</th><th>float64</th><th>float64</th><th>float64</th><th>float64</th><th>float64</th><th>float64</th><th>float64</th><th>float64</th><th>float64</th><th>float64</th><th>float64</th><th>float64</th><th>float64</th><th>float64</th><th>float64</th><th>float64</th><th>float64</th><th>float64</th><th>float64</th><th>float64</th><th>float64</th><th>float64</th><th>float64</th><th>float64</th><th>float64</th><th>float64</th><th>float64</th><th>float64</th><th>float64</th><th>float64</th><th>float64</th><th>float64</th><th>float64</th><th>float64</th><th>float64</th><th>float64</th><th>float64</th><th>float64</th><th>float64</th><th>float64</th><th>float64</th><th>float64</th><th>float64</th><th>float64</th><th>float64</th><th>float64</th><th>float64</th><th>float64</th><th>float64</th><th>float64</th><th>float64</th><th>float64</th><th>float64</th><th>float64</th><th>float64</th><th>float64</th><th>float64</th><th>float64</th><th>float64</th><th>float64</th><th>float64</th><th>float64</th><th>float64</th><th>float64</th><th>float64</th><th>float64</th><th>float64</th><th>float64</th><th>float64</th><th>float64</th><th>float64</th><th>float64</th><th>float64</th><th>float64</th><th>float64</th><th>float64</th><th>float64</th><th>float64</th><th>float64</th><th>float64</th><th>float64</th><th>float64</th><th>float64</th><th>float64</th><th>float64</th><th>float64</th><th>float64</th><th>float64</th><th>float64</th><th>float64</th><th>float64</th><th>float64</th><th>float64</th><th>float64</th><th>float64</th><th>float64</th><th>float64</th><th>float64</th><th>float64</th><th>float64</th><th>float64</th><th>float64</th><th>float64</th><th>float64</th><th>float64</th><th>float64</th><th>float64</th><th>float64</th><th>float64</th><th>float64</th><th>float64</th><th>float64</th><th>float64</th><th>float64</th><th>float64</th><th>float64</th><th>float64</th><th>float64</th><th>float64</th><th>float64</th><th>float64</th><th>float64</th><th>float64</th><th>float64</th><th>float64</th><th>float64</th><th>float64</th><th>float64</th><th>float64</th><th>float64</th><th>float64</th><th>float64</th><th>float64</th><th>float64</th><th>float64</th><th>float64</th><th>float64</th><th>float64</th><th>float64</th><th>float64</th><th>float64</th><th>float64</th><th>float64</th><th>float64</th><th>float64</th><th>float64</th><th>float64</th><th>float64</th><th>float64</th><th>float64</th><th>float64</th><th>float64</th><th>float64</th><th>float64</th><th>float64</th><th>float64</th><th>float64</th><th>float64</th><th>float64</th><th>float64</th><th>float64</th><th>float64</th><th>float64</th><th>float64</th><th>float64</th><th>float64</th><th>float64</th><th>float64</th><th>float64</th><th>float64</th><th>float64</th><th>float64</th><th>float64</th><th>float64</th><th>float64</th><th>float64</th><th>float64</th><th>float64</th><th>float64</th><th>float64</th><th>float64</th><th>float64</th><th>float64</th><th>float64</th><th>float64</th><th>float64</th><th>float64</th><th>float64</th><th>float64</th><th>float64</th><th>str5</th><th>int64</th><th>float64</th><th>str1</th><th>float64</th><th>float64</th><th>float64</th><th>float64</th><th>float64</th><th>str44</th><th>int64</th><th>float64</th><th>float64</th><th>float64</th><th>float64</th><th>float64</th><th>float64</th><th>float64</th><th>float64</th><th>float64</th><th>float64</th><th>float64</th><th>float64</th><th>float64</th><th>float64</th><th>float64</th><th>float64</th><th>float64</th><th>float64</th><th>float64</th><th>float64</th><th>float64</th><th>float64</th><th>float64</th><th>float64</th><th>float64</th><th>float64</th><th>int64</th><th>float64</th><th>str4</th><th>str93</th><th>float64</th><th>float64</th><th>int64</th><th>float64</th><th>float64</th><th>float64</th><th>float64</th><th>int64</th><th>float64</th><th>float64</th><th>float64</th><th>float64</th><th>int64</th><th>float64</th><th>float64</th><th>float64</th><th>float64</th><th>int64</th><th>float64</th><th>float64</th><th>float64</th><th>float64</th><th>int64</th><th>float64</th><th>float64</th><th>float64</th><th>float64</th><th>int64</th><th>float64</th><th>float64</th><th>float64</th><th>float64</th><th>int64</th><th>float64</th><th>float64</th><th>float64</th><th>float64</th><th>int64</th><th>float64</th><th>float64</th><th>float64</th><th>float64</th><th>int64</th><th>float64</th><th>float64</th><th>float64</th><th>float64</th><th>int64</th><th>float64</th><th>float64</th><th>float64</th><th>float64</th><th>int64</th><th>float64</th><th>float64</th><th>float64</th><th>float64</th><th>int64</th><th>float64</th><th>float64</th><th>float64</th><th>float64</th><th>int64</th><th>float64</th><th>float64</th><th>float64</th><th>float64</th><th>int64</th><th>float64</th><th>float64</th><th>float64</th><th>float64</th><th>int64</th><th>float64</th><th>float64</th><th>float64</th><th>float64</th><th>int64</th><th>float64</th><th>float64</th><th>float64</th><th>float64</th><th>int64</th><th>float64</th><th>float64</th><th>float64</th><th>float64</th><th>int64</th><th>float64</th><th>float64</th><th>float64</th><th>float64</th><th>int64</th><th>float64</th><th>float64</th><th>float64</th><th>float64</th><th>int64</th><th>float64</th><th>float64</th><th>float64</th><th>float64</th><th>int64</th><th>float64</th><th>float64</th><th>float64</th><th>float64</th><th>int64</th><th>float64</th><th>float64</th><th>float64</th><th>float64</th><th>int64</th><th>float64</th><th>float64</th><th>float64</th><th>float64</th><th>int64</th><th>float64</th><th>float64</th><th>float64</th><th>float64</th><th>int64</th><th>float64</th><th>float64</th><th>float64</th><th>float64</th><th>int64</th><th>float64</th><th>float64</th><th>float64</th><th>float64</th><th>int64</th><th>float64</th><th>float64</th><th>float64</th><th>float64</th><th>int64</th><th>float64</th><th>float64</th><th>float64</th><th>float64</th><th>int64</th><th>float64</th><th>float64</th><th>float64</th><th>float64</th><th>int64</th><th>float64</th><th>float64</th><th>float64</th><th>float64</th><th>int64</th><th>float64</th><th>float64</th><th>float64</th><th>float64</th><th>int64</th><th>float64</th><th>float64</th><th>float64</th><th>float64</th><th>int64</th><th>float64</th><th>float64</th><th>float64</th><th>float64</th><th>int64</th><th>float64</th><th>float64</th><th>float64</th><th>float64</th><th>int64</th><th>float64</th><th>float64</th><th>float64</th><th>float64</th><th>int64</th><th>float64</th><th>float64</th><th>float64</th><th>float64</th><th>int64</th><th>float64</th><th>float64</th><th>float64</th><th>float64</th><th>int64</th><th>float64</th><th>float64</th><th>float64</th><th>float64</th><th>int64</th><th>float64</th><th>float64</th><th>float64</th><th>float64</th><th>int64</th><th>float64</th><th>float64</th><th>float64</th><th>float64</th><th>int64</th><th>float64</th><th>float64</th><th>float64</th><th>float64</th><th>int64</th><th>float64</th><th>float64</th><th>float64</th><th>float64</th><th>float64</th><th>float64</th><th>int64</th><th>float64</th><th>float64</th><th>float64</th><th>float64</th><th>float64</th><th>float64</th><th>float64</th><th>float64</th><th>float64</th><th>float64</th></tr></thead>
<tr><td>excels-uds01-v4_g235m-f170lp_3543_109269.spec.fits</td><td>109269</td><td>34.35062413</td><td>-5.14987821</td><td>G235M</td><td>F170LP</td><td>6565.0</td><td>6</td><td>jw03543001001_05101_00002_nrs1_f170lp_g235m_raw.113.3543_109269.fits</td><td>jw03543001001_02_msa.fits</td><td>61</td><td>2</td><td>1</td><td>113</td><td>excels-uds01-v4</td><td>2775</td><td>1</td><td>1.6052381</td><td>4.5752573</td><td>2.8156571</td><td>0.6637892</td><td>0.18690835</td><td>0.105276756</td><td>2.2439482</td><td>0.42614815</td><td>0.17913413</td><td>4.0894103</td><td>0.8803835</td><td>0.55858326</td><td>505</td><td>1434</td><td>1544</td><td>34</td><td>0.0</td><td>56.909737</td><td>0.0</td><td>0.001</td><td>0.7432314</td><td>1737361758.0337665</td><td>0.9.4.dev7+g92b1aa6</td><td>39390.0</td><td>21056.38</td><td>2775</td><td>4609.6426</td><td>38.13521</td><td>13.5339</td><td>6.23057</td><td>15.9514675</td><td>--</td><td>--</td><td>--</td><td>--</td><td>--</td><td>--</td><td>--</td><td>--</td><td>421.78845</td><td>12.253539</td><td>40.8329</td><td>9.549703</td><td>--</td><td>--</td><td>--</td><td>--</td><td>77.94422</td><td>11.366782</td><td>-18.494478</td><td>14.979722</td><td>--</td><td>--</td><td>10.297021</td><td>8.836235</td><td>160.58878</td><td>9.798167</td><td>--</td><td>--</td><td>--</td><td>--</td><td>99.20305</td><td>11.2175455</td><td>33.67219</td><td>13.387148</td><td>5.13252</td><td>14.60536</td><td>-8.739283</td><td>12.896657</td><td>--</td><td>--</td><td>45.190254</td><td>16.34102</td><td>760.06665</td><td>--</td><td>--</td><td>17.633625</td><td>--</td><td>--</td><td>--</td><td>31.543615</td><td>8.97263</td><td>475.65164</td><td>12.492301</td><td>1478.7195</td><td>20.716312</td><td>--</td><td>--</td><td>--</td><td>--</td><td>--</td><td>--</td><td>--</td><td>--</td><td>--</td><td>--</td><td>--</td><td>--</td><td>--</td><td>--</td><td>--</td><td>--</td><td>--</td><td>--</td><td>--</td><td>--</td><td>--</td><td>--</td><td>--</td><td>--</td><td>--</td><td>--</td><td>--</td><td>--</td><td>--</td><td>2.6916635</td><td>1.0292606</td><td>1.7623694</td><td>1.2084138</td><td>0.15936823</td><td>0.7734618</td><td>0.109258264</td><td>1.507685</td><td>0.09797959</td><td>0.94181395</td><td>0.09681845</td><td>1.1777208</td><td>0.101651385</td><td>0.77827024</td><td>0.1148971</td><td>1.0161806</td><td>0.15089206</td><td>0.77205783</td><td>0.29294607</td><td>-0.36806196</td><td>1.5045673</td><td>-4700.389</td><td>2830.5718</td><td>0.3863113</td><td>2.5191631</td><td>0.0</td><td>0.0</td><td>0.0</td><td>0.0</td><td>0.0</td><td>0.0</td><td>0.22010241</td><td>1.9552373</td><td>0.1284232</td><td>2.357576</td><td>0.10218456</td><td>2.2045765</td><td>0.080455534</td><td>1.839689</td><td>0.07207858</td><td>1.9590814</td><td>0.071644664</td><td>1.7162542</td><td>0.07768974</td><td>1.4521762</td><td>0.08238754</td><td>4.622439</td><td>--</td><td>--</td><td>-23.880041</td><td>10.763638</td><td>-4.216068</td><td>10.945385</td><td>-10.380039</td><td>10.463703</td><td>34.730713</td><td>12.585057</td><td>63.86072</td><td>11.191996</td><td>-11.493438</td><td>10.910542</td><td>1681.4718</td><td>22.707413</td><td>-3.8843367</td><td>13.712671</td><td>--</td><td>--</td><td>92.769104</td><td>13.244619</td><td>303.3422</td><td>14.018277</td><td>32.40743</td><td>14.736954</td><td>16.250576</td><td>15.096581</td><td>101.71479</td><td>13.087306</td><td>102.27705</td><td>12.364596</td><td>-1.5309846</td><td>11.467584</td><td>-0.009823302</td><td>-0.121039405</td><td>--</td><td>--</td><td>--</td><td>--</td><td>--</td><td>--</td><td>--</td><td>--</td><td>33.2399</td><td>6.5497913</td><td>--</td><td>--</td><td>--</td><td>--</td><td>--</td><td>--</td><td>--</td><td>224.49889</td><td>18.628468</td><td>--</td><td>--</td><td>48.388504</td><td>-15.68925</td><td>--</td><td>--</td><td>5.4066896</td><td>80.58066</td><td>--</td><td>--</td><td>43.52189</td><td>14.867565</td><td>2.3390548</td><td>-4.0933743</td><td>--</td><td>--</td><td>30.003298</td><td>341.56543</td><td>--</td><td>--</td><td>--</td><td>15.96317</td><td>259.9941</td><td>822.1586</td><td>--</td><td>--</td><td>--</td><td>--</td><td>--</td><td>--</td><td>--</td><td>--</td><td>--</td><td>--</td><td>--</td><td>--</td><td>--</td><td>--</td><td>--</td><td>--</td><td>-10.549018</td><td>-1.8727355</td><td>-4.633839</td><td>15.341046</td><td>28.01381</td><td>-5.052083</td><td>1117.2476</td><td>-2.8325858</td><td>61.117584</td><td>204.48856</td><td>32.12791</td><td>16.236942</td><td>77.48471</td><td>79.08182</td><td>-1.009964</td><td>74.0</td><td>1737501800.0</td><td>--</td><td>--</td><td>--</td><td>--</td><td>--</td><td>--</td><td>--</td><td>--</td><td>--</td><td>--</td><td>--</td><td>--</td><td>--</td><td>--</td><td>--</td><td>--</td><td>--</td><td>--</td><td>--</td><td>--</td><td>--</td><td>--</td><td>--</td><td>--</td><td>--</td><td>--</td><td>--</td><td>--</td><td>--</td><td>--</td><td>True</td><td>172449</td><td>4.6228543</td><td>G</td><td>4.621582</td><td>4.6228543</td><td>1.42</td><td>5.58</td><td>0.07257426</td><td>primer-uds-north-grizli-v7.2-fix_phot.fits</td><td>39787</td><td>23.86</td><td>0.2917665994332862</td><td>0.0074583520942602035</td><td>0.375822323338598</td><td>0.007474258631804441</td><td>0.4462115844556865</td><td>0.006440427649332001</td><td>0.5739798944677847</td><td>0.0055131230600766225</td><td>0.8435675923509218</td><td>0.004741583591371624</td><td>1.0094882735221247</td><td>0.0047143753686044055</td><td>0.8893053372138517</td><td>0.007319798398806998</td><td>0.9324802470703117</td><td>0.006405565944800626</td><td>1.7697781011450084</td><td>32809883821.644165</td><td>0.50983775</td><td>0.8515203</td><td>1.7189896</td><td>4.3906884</td><td>1693531123.1206756</td><td>2439001724.140659</td><td>491718980.0611007</td><td>3</td><td>4.62244</td><td>GBr</td><td>--</td><td>4.622438759007668</td><td>0.746566883923777</td><td>2775</td><td>0.0</td><td>0.0</td><td>-1.0</td><td>-1.0</td><td>2775</td><td>0.25734946334707326</td><td>0.1074029218392234</td><td>0.13636944110351917</td><td>0.10877193379102598</td><td>2775</td><td>0.0001394147781913819</td><td>0.0</td><td>-1.0</td><td>-1.0</td><td>2775</td><td>7.565232436087342e-05</td><td>0.0</td><td>-1.0</td><td>-1.0</td><td>2775</td><td>3.422394938541863e-05</td><td>0.0</td><td>-1.0</td><td>-1.0</td><td>2775</td><td>0.18365482662141527</td><td>0.08209852978824275</td><td>0.16733941953045023</td><td>0.13347483195853058</td><td>2775</td><td>0.9999855948537121</td><td>0.3193219632664132</td><td>0.005046263733122996</td><td>0.003990200871756824</td><td>2775</td><td>0.9999941843069329</td><td>0.2537792256940876</td><td>0.007393142686722595</td><td>0.0058590486168480374</td><td>2775</td><td>0.9999997834578057</td><td>0.38033510071734095</td><td>0.007166974424120975</td><td>0.005662438935784687</td><td>2775</td><td>1.0445811860385603</td><td>0.5174015331443249</td><td>0.005326151990107252</td><td>0.004123053610335878</td><td>2775</td><td>0.9592728684084484</td><td>0.674501855000472</td><td>0.010566295717687798</td><td>0.007890078518426866</td><td>2775</td><td>0.6864766461295206</td><td>0.5792201942495757</td><td>0.020225125958432014</td><td>0.014654466478661369</td><td>2775</td><td>0.9999202045997251</td><td>0.42909751937482243</td><td>0.008124019535932383</td><td>0.006308060928818762</td><td>2775</td><td>1.1339807135904223</td><td>0.39599140714595715</td><td>0.009180965975024354</td><td>0.006979044758972154</td><td>2775</td><td>0.9155759349124712</td><td>0.4344144049679926</td><td>0.012006150861982732</td><td>0.008986950271338471</td><td>2775</td><td>1.0003708102100584</td><td>0.9253913925579329</td><td>0.01587640316376797</td><td>0.011945629668644334</td><td>2775</td><td>0.9999629444372514</td><td>0.6012130410382595</td><td>0.020954229679142105</td><td>0.015287445913223813</td><td>2775</td><td>0.999952382768961</td><td>0.5847551343491033</td><td>0.034596802984993714</td><td>0.025068505153244595</td><td>2775</td><td>0.271742948888724</td><td>0.385786571762731</td><td>0.09041192951455833</td><td>0.06486283568862884</td><td>2775</td><td>0.000870765250533563</td><td>0.0</td><td>-1.0</td><td>-1.0</td><td>2775</td><td>0.0</td><td>0.0</td><td>-1.0</td><td>-1.0</td><td>2775</td><td>0.0042335255686836125</td><td>0.0</td><td>-1.0</td><td>-1.0</td><td>2775</td><td>0.0</td><td>0.0</td><td>-1.0</td><td>-1.0</td><td>2775</td><td>0.30297438438353747</td><td>0.0729137126199859</td><td>0.17875572974377257</td><td>0.1425808222110095</td><td>2775</td><td>0.0</td><td>0.0</td><td>-1.0</td><td>-1.0</td><td>2775</td><td>0.0</td><td>0.0</td><td>-1.0</td><td>-1.0</td><td>2775</td><td>0.0</td><td>0.0</td><td>-1.0</td><td>-1.0</td><td>2775</td><td>0.2211925775581921</td><td>-0.10563051622940384</td><td>0.4136296577937412</td><td>0.3299245935603866</td><td>2775</td><td>1.0000337085333644</td><td>0.33738668400013666</td><td>0.004950199713314884</td><td>0.003915120681098042</td><td>2775</td><td>1.0001181069105798</td><td>0.4548665953094292</td><td>0.0043750033335366945</td><td>0.0034114654722886342</td><td>2775</td><td>1.001699616190192</td><td>0.4504944699708305</td><td>0.007085518684495233</td><td>0.005398401794143544</td><td>2775</td><td>1.0000088989496112</td><td>0.32547592596442326</td><td>0.005407843553604075</td><td>0.004276370382439811</td><td>2775</td><td>1.0004391319019352</td><td>0.5330539495518211</td><td>0.004904124090599388</td><td>0.0038212765386505553</td><td>2775</td><td>0.9675655946156906</td><td>0.6715857097916574</td><td>0.010553795880270628</td><td>0.00794324809030287</td><td>2775</td><td>0.9587468093273036</td><td>0.5833624760823622</td><td>0.019415353864716576</td><td>0.014090356633500783</td><td>2775</td><td>0.010634676241646013</td><td>0.0</td><td>-1.0</td><td>-1.0</td><td>2775</td><td>0.0</td><td>0.0</td><td>-1.0</td><td>-1.0</td><td>2775</td><td>0.0</td><td>0.0</td><td>-1.0</td><td>-1.0</td><td>2775</td><td>0.0</td><td>0.0</td><td>-1.0</td><td>-1.0</td><td>2775</td><td>0.5946532185930513</td><td>0.14378560988350406</td><td>0.08065630650619657</td><td>0.06433176255255493</td><td>2775</td><td>0.9991700000926202</td><td>0.43613237675563177</td><td>0.007582746197806663</td><td>0.0058824222012783854</td><td>2775</td><td>0.9993484777878848</td><td>0.5972217145015718</td><td>0.022166001353858905</td><td>0.016079926523872485</td><td>--</td><td>--</td><td>0</td><td>--</td><td>--</td><td>--</td><td>--</td><td>--</td><td>--</td><td>--</td><td>--</td><td>--</td><td>--</td></tr>
<tr><td>gto-wide-uds13-v4_g235h-f170lp_1215_1951.spec.fits</td><td>1951</td><td>34.35065901</td><td>-5.14988767</td><td>G235H</td><td>F170LP</td><td>802.389</td><td>4</td><td>jw01215013001_04101_00001_nrs2_f170lp_g235h_raw.70.1215_1951.fits</td><td>jw01215013001_01_msa.fits</td><td>205</td><td>1</td><td>1</td><td>70</td><td>gto-wide-uds13-v4</td><td>2243</td><td>1</td><td>1.66</td><td>2.5689142</td><td>2.0963542</td><td>-0.4861431</td><td>-0.7656741</td><td>1.2593989</td><td>0.49343532</td><td>0.8224826</td><td>1.5858558</td><td>1.5304534</td><td>2.459035</td><td>2.1690035</td><td>1</td><td>1367</td><td>2048</td><td>40</td><td>0.0</td><td>253.84996</td><td>0.0</td><td>-0.001</td><td>0.4917679</td><td>1738073094.4070385</td><td>0.9.5.dev2+g80b81b4</td><td>1604.778</td><td>2913.6748</td><td>2243</td><td>2811.6072</td><td>--</td><td>--</td><td>--</td><td>--</td><td>--</td><td>--</td><td>--</td><td>--</td><td>--</td><td>--</td><td>--</td><td>--</td><td>--</td><td>--</td><td>139.03279</td><td>84.556435</td><td>--</td><td>--</td><td>--</td><td>--</td><td>--</td><td>--</td><td>--</td><td>--</td><td>--</td><td>--</td><td>--</td><td>--</td><td>153.81612</td><td>61.984585</td><td>--</td><td>--</td><td>--</td><td>--</td><td>4.0369225</td><td>78.60983</td><td>45.681705</td><td>80.60967</td><td>-50.989677</td><td>87.71492</td><td>73.9701</td><td>77.34231</td><td>--</td><td>--</td><td>--</td><td>--</td><td>853.96075</td><td>--</td><td>--</td><td>94.13828</td><td>--</td><td>--</td><td>--</td><td>-30.710531</td><td>61.72949</td><td>--</td><td>--</td><td>--</td><td>--</td><td>--</td><td>--</td><td>--</td><td>--</td><td>--</td><td>--</td><td>--</td><td>--</td><td>--</td><td>--</td><td>--</td><td>--</td><td>--</td><td>--</td><td>--</td><td>--</td><td>--</td><td>--</td><td>--</td><td>--</td><td>--</td><td>--</td><td>--</td><td>--</td><td>--</td><td>--</td><td>--</td><td>--</td><td>--</td><td>-1.0793935</td><td>2.6578977</td><td>16.855896</td><td>6.094411</td><td>1.0531783</td><td>5.0059447</td><td>1.0905654</td><td>3.1887467</td><td>1.2597305</td><td>4.4599857</td><td>2.4125624</td><td>-0.024661088</td><td>12.698964</td><td>0.0</td><td>0.0</td><td>0.0</td><td>0.0</td><td>0.0</td><td>0.0</td><td>0.0</td><td>0.0</td><td>0.0</td><td>0.0</td><td>3.1934314</td><td>-15.388187</td><td>0.0</td><td>0.0</td><td>0.0</td><td>0.0</td><td>0.0</td><td>0.0</td><td>4.417971</td><td>9.601779</td><td>2.1934223</td><td>8.963685</td><td>1.6506367</td><td>7.166141</td><td>1.3367475</td><td>8.372035</td><td>1.2125107</td><td>4.2663774</td><td>1.2317595</td><td>4.6491623</td><td>1.1557022</td><td>3.8828688</td><td>1.0895466</td><td>4.6232686</td><td>--</td><td>--</td><td>47.9303</td><td>61.00501</td><td>-43.66452</td><td>73.04057</td><td>-52.864967</td><td>69.1943</td><td>49.73135</td><td>74.62461</td><td>-10.002572</td><td>82.228905</td><td>-74.391235</td><td>64.71364</td><td>--</td><td>--</td><td>--</td><td>--</td><td>--</td><td>--</td><td>--</td><td>--</td><td>--</td><td>--</td><td>--</td><td>--</td><td>--</td><td>--</td><td>--</td><td>--</td><td>--</td><td>--</td><td>--</td><td>--</td><td>0.008058175</td><td>-0.11264437</td><td>--</td><td>--</td><td>--</td><td>--</td><td>--</td><td>--</td><td>--</td><td>--</td><td>--</td><td>--</td><td>--</td><td>--</td><td>--</td><td>--</td><td>--</td><td>--</td><td>--</td><td>--</td><td>27.334742</td><td>--</td><td>--</td><td>--</td><td>--</td><td>--</td><td>--</td><td>--</td><td>35.321674</td><td>--</td><td>--</td><td>0.9015683</td><td>10.652017</td><td>-5.7512264</td><td>9.181498</td><td>--</td><td>--</td><td>--</td><td>154.39067</td><td>--</td><td>--</td><td>--</td><td>-7.458391</td><td>--</td><td>--</td><td>--</td><td>--</td><td>--</td><td>--</td><td>--</td><td>--</td><td>--</td><td>--</td><td>--</td><td>--</td><td>--</td><td>--</td><td>--</td><td>--</td><td>--</td><td>--</td><td>10.362592</td><td>-9.0206</td><td>-10.356026</td><td>11.604869</td><td>-2.242879</td><td>-16.51436</td><td>--</td><td>--</td><td>--</td><td>--</td><td>--</td><td>--</td><td>--</td><td>--</td><td>--</td><td>9.1</td><td>1737732200.0</td><td>--</td><td>--</td><td>--</td><td>--</td><td>--</td><td>--</td><td>--</td><td>--</td><td>--</td><td>--</td><td>--</td><td>--</td><td>--</td><td>--</td><td>--</td><td>--</td><td>--</td><td>--</td><td>--</td><td>--</td><td>--</td><td>--</td><td>--</td><td>--</td><td>--</td><td>--</td><td>--</td><td>--</td><td>--</td><td>--</td><td>True</td><td>172449</td><td>4.6228543</td><td>G</td><td>4.621582</td><td>4.6228543</td><td>1.85</td><td>5.58</td><td>0.07257426</td><td>primer-uds-north-grizli-v7.2-fix_phot.fits</td><td>39787</td><td>23.86</td><td>0.2917665994332862</td><td>0.0074583520942602035</td><td>0.375822323338598</td><td>0.007474258631804441</td><td>0.4462115844556865</td><td>0.006440427649332001</td><td>0.5739798944677847</td><td>0.0055131230600766225</td><td>0.8435675923509218</td><td>0.004741583591371624</td><td>1.0094882735221247</td><td>0.0047143753686044055</td><td>0.8893053372138517</td><td>0.007319798398806998</td><td>0.9324802470703117</td><td>0.006405565944800626</td><td>1.7697781011450084</td><td>32809883821.644165</td><td>0.50983775</td><td>0.8515203</td><td>1.7189896</td><td>4.3906884</td><td>1693531123.1206756</td><td>2439001724.140659</td><td>491718980.0611007</td><td>3</td><td>4.62327</td><td>Auto</td><td>Redshift matches gto-wide-uds13-v3_g395h-f290lp_1215_1951 z=4.6200</td><td>4.623268549909802</td><td>0.7094566388815146</td><td>2243</td><td>0.0</td><td>0.0</td><td>-1.0</td><td>-1.0</td><td>2243</td><td>0.08369159014504489</td><td>0.0</td><td>-1.0</td><td>-1.0</td><td>2243</td><td>0.00013475212131107387</td><td>0.0</td><td>-1.0</td><td>-1.0</td><td>2243</td><td>7.249783264163463e-05</td><td>0.0</td><td>-1.0</td><td>-1.0</td><td>2243</td><td>3.2292668859647866e-05</td><td>0.0</td><td>-1.0</td><td>-1.0</td><td>2243</td><td>0.028256245773143007</td><td>0.0</td><td>-1.0</td><td>-1.0</td><td>2243</td><td>1.0330607810946189</td><td>0.751829671429764</td><td>0.04973013977286707</td><td>0.035054140773913674</td><td>2243</td><td>0.9524084506838898</td><td>0.6207777286405767</td><td>0.0736573840182249</td><td>0.051825351649700924</td><td>2243</td><td>0.9999932511778588</td><td>0.8908527089506119</td><td>0.07184763333844787</td><td>0.05074208178806568</td><td>2243</td><td>0.23310679085591418</td><td>0.8177757649943135</td><td>0.08566965046817829</td><td>0.06086890897960933</td><td>2243</td><td>5.297289023649329e-06</td><td>0.0</td><td>-1.0</td><td>-1.0</td><td>2243</td><td>8.489538935327642e-05</td><td>0.0</td><td>-1.0</td><td>-1.0</td><td>2243</td><td>0.8606606796384908</td><td>0.8178803577738383</td><td>0.08737503479687701</td><td>0.062074657324958316</td><td>2243</td><td>8.430932664970874e-06</td><td>0.0</td><td>-1.0</td><td>-1.0</td><td>2243</td><td>6.407891996424609e-06</td><td>0.0</td><td>-1.0</td><td>-1.0</td><td>2243</td><td>5.218707652222712e-06</td><td>0.0</td><td>-1.0</td><td>-1.0</td><td>2243</td><td>2.556004809596254e-06</td><td>0.0</td><td>-1.0</td><td>-1.0</td><td>2243</td><td>4.739559277072582e-06</td><td>0.0</td><td>-1.0</td><td>-1.0</td><td>2243</td><td>5.993161422598339e-05</td><td>0.0</td><td>-1.0</td><td>-1.0</td><td>2243</td><td>0.00014867000081443158</td><td>0.0</td><td>-1.0</td><td>-1.0</td><td>2243</td><td>0.0</td><td>0.0</td><td>-1.0</td><td>-1.0</td><td>2243</td><td>0.0013584849835228</td><td>0.0</td><td>-1.0</td><td>-1.0</td><td>2243</td><td>0.0</td><td>0.0</td><td>-1.0</td><td>-1.0</td><td>2243</td><td>0.029087078393880368</td><td>0.0</td><td>-1.0</td><td>-1.0</td><td>2243</td><td>0.0</td><td>0.0</td><td>-1.0</td><td>-1.0</td><td>2243</td><td>0.0</td><td>0.0</td><td>-1.0</td><td>-1.0</td><td>2243</td><td>0.0</td><td>0.0</td><td>-1.0</td><td>-1.0</td><td>2243</td><td>0.0</td><td>0.0</td><td>-1.0</td><td>-1.0</td><td>2243</td><td>1.0046545627105983</td><td>0.7927240292799647</td><td>0.04908729006152204</td><td>0.03463403896219283</td><td>2243</td><td>0.7380643184262548</td><td>0.8502884964905775</td><td>0.0557017349117636</td><td>0.039493381601504375</td><td>2243</td><td>0.0</td><td>0.0</td><td>-1.0</td><td>-1.0</td><td>2243</td><td>1.0047200185225604</td><td>0.9022653741644692</td><td>0.05394973630312748</td><td>0.03805450115900114</td><td>2243</td><td>0.397884286922348</td><td>0.8632327999257797</td><td>0.05918354837837783</td><td>0.04200758750271939</td><td>2243</td><td>0.0</td><td>0.0</td><td>-1.0</td><td>-1.0</td><td>2243</td><td>0.0</td><td>0.0</td><td>-1.0</td><td>-1.0</td><td>2243</td><td>0.0</td><td>0.0</td><td>-1.0</td><td>-1.0</td><td>2243</td><td>0.0</td><td>0.0</td><td>-1.0</td><td>-1.0</td><td>2243</td><td>0.0</td><td>0.0</td><td>-1.0</td><td>-1.0</td><td>2243</td><td>0.0</td><td>0.0</td><td>-1.0</td><td>-1.0</td><td>2243</td><td>0.31974527018089305</td><td>0.307244370316466</td><td>0.08745301357320409</td><td>0.06138968979032876</td><td>2243</td><td>0.6803023023793408</td><td>0.8133101267723994</td><td>0.09038907933801991</td><td>0.06421638157582743</td><td>2243</td><td>0.0</td><td>0.0</td><td>-1.0</td><td>-1.0</td><td>--</td><td>--</td><td>0</td><td>--</td><td>--</td><td>--</td><td>--</td><td>--</td><td>--</td><td>--</td><td>--</td><td>--</td><td>--</td></tr>
<tr><td>gto-wide-uds13-v4_g395h-f290lp_1215_1951.spec.fits</td><td>1951</td><td>34.35065901</td><td>-5.14988767</td><td>G395H</td><td>F290LP</td><td>875.333</td><td>4</td><td>jw01215013001_07101_00001_nrs1_f290lp_g395h_raw.70.1215_1951.fits</td><td>jw01215013001_01_msa.fits</td><td>207</td><td>1</td><td>1</td><td>70</td><td>gto-wide-uds13-v4</td><td>2181</td><td>1</td><td>2.83</td><td>4.333257</td><td>3.0323372</td><td>-0.78633463</td><td>-15.713539</td><td>12.172805</td><td>0.023815606</td><td>0.3733426</td><td>18.183922</td><td>0.86755025</td><td>16.770237</td><td>29.427864</td><td>1613</td><td>1366</td><td>436</td><td>24</td><td>0.0</td><td>253.8499</td><td>0.0</td><td>0.0009999998</td><td>0.4917679</td><td>1738073098.9230382</td><td>0.9.5.dev2+g80b81b4</td><td>1750.666</td><td>2725.7173</td><td>2181</td><td>2691.6755</td><td>23.426165</td><td>412.583</td><td>19.938076</td><td>307.09857</td><td>--</td><td>--</td><td>--</td><td>--</td><td>--</td><td>--</td><td>--</td><td>--</td><td>--</td><td>--</td><td>--</td><td>--</td><td>--</td><td>--</td><td>--</td><td>--</td><td>1451.3488</td><td>428.4478</td><td>99.84564</td><td>273.67517</td><td>--</td><td>--</td><td>--</td><td>--</td><td>--</td><td>--</td><td>--</td><td>--</td><td>--</td><td>--</td><td>--</td><td>--</td><td>--</td><td>--</td><td>--</td><td>--</td><td>--</td><td>--</td><td>--</td><td>--</td><td>845.74225</td><td>630.42847</td><td>--</td><td>--</td><td>--</td><td>--</td><td>--</td><td>--</td><td>--</td><td>--</td><td>--</td><td>--</td><td>--</td><td>--</td><td>--</td><td>--</td><td>--</td><td>--</td><td>--</td><td>--</td><td>--</td><td>--</td><td>--</td><td>--</td><td>--</td><td>--</td><td>--</td><td>--</td><td>--</td><td>--</td><td>--</td><td>--</td><td>--</td><td>--</td><td>--</td><td>--</td><td>--</td><td>--</td><td>--</td><td>--</td><td>--</td><td>--</td><td>--</td><td>--</td><td>-14.739792</td><td>16.296173</td><td>12.941133</td><td>1.0238339</td><td>3.397932</td><td>-3.8911495</td><td>3.7097752</td><td>7.1149216</td><td>3.9599311</td><td>-7.7766714</td><td>6.362927</td><td>37.82434</td><td>21.133274</td><td>-1564.3295</td><td>707.8916</td><td>0.0</td><td>0.0</td><td>0.0</td><td>0.0</td><td>0.0</td><td>0.0</td><td>0.0</td><td>0.0</td><td>20.102354</td><td>9.97284</td><td>0.0</td><td>0.0</td><td>0.0</td><td>0.0</td><td>0.0</td><td>0.0</td><td>16.226713</td><td>-5.647535</td><td>6.8985815</td><td>19.841732</td><td>5.6790743</td><td>-17.208584</td><td>4.4015408</td><td>12.006447</td><td>3.8504024</td><td>-5.2901826</td><td>3.5769703</td><td>10.483284</td><td>3.5806997</td><td>-0.044838645</td><td>3.3536315</td><td>4.5170674</td><td>--</td><td>--</td><td>--</td><td>--</td><td>--</td><td>--</td><td>--</td><td>--</td><td>--</td><td>--</td><td>--</td><td>--</td><td>--</td><td>--</td><td>-6.600751</td><td>413.02917</td><td>35.67981</td><td>398.38538</td><td>--</td><td>--</td><td>261.49884</td><td>355.15863</td><td>129.73485</td><td>455.60483</td><td>-77.98808</td><td>304.73105</td><td>1188.4515</td><td>320.5895</td><td>-734.2784</td><td>440.50098</td><td>-461.14597</td><td>403.66617</td><td>-347.5903</td><td>561.14636</td><td>-0.05869624</td><td>-0.35027233</td><td>--</td><td>--</td><td>--</td><td>--</td><td>--</td><td>--</td><td>--</td><td>--</td><td>-53.510654</td><td>7.888203</td><td>--</td><td>--</td><td>--</td><td>--</td><td>--</td><td>--</td><td>--</td><td>--</td><td>--</td><td>--</td><td>--</td><td>486.24625</td><td>435.344</td><td>--</td><td>--</td><td>--</td><td>--</td><td>--</td><td>--</td><td>--</td><td>--</td><td>--</td><td>--</td><td>--</td><td>--</td><td>213.96024</td><td>--</td><td>--</td><td>--</td><td>--</td><td>--</td><td>--</td><td>--</td><td>--</td><td>--</td><td>--</td><td>--</td><td>--</td><td>--</td><td>--</td><td>--</td><td>--</td><td>--</td><td>--</td><td>--</td><td>--</td><td>--</td><td>--</td><td>--</td><td>--</td><td>--</td><td>--</td><td>--</td><td>--</td><td>--</td><td>-1.9749123</td><td>5.7209954</td><td>94.409485</td><td>31.447783</td><td>70.47738</td><td>-1292.1211</td><td>-123.25613</td><td>-80.68548</td><td>-96.06516</td><td>3.7</td><td>1737732200.0</td><td>--</td><td>--</td><td>--</td><td>--</td><td>--</td><td>--</td><td>--</td><td>--</td><td>--</td><td>--</td><td>--</td><td>--</td><td>--</td><td>--</td><td>--</td><td>--</td><td>--</td><td>--</td><td>--</td><td>--</td><td>--</td><td>--</td><td>--</td><td>--</td><td>--</td><td>--</td><td>--</td><td>--</td><td>--</td><td>--</td><td>False</td><td>172449</td><td>4.6228543</td><td>G</td><td>4.621582</td><td>4.6228543</td><td>1.85</td><td>5.58</td><td>0.07257426</td><td>primer-uds-north-grizli-v7.2-fix_phot.fits</td><td>39787</td><td>23.86</td><td>0.2917665994332862</td><td>0.0074583520942602035</td><td>0.375822323338598</td><td>0.007474258631804441</td><td>0.4462115844556865</td><td>0.006440427649332001</td><td>0.5739798944677847</td><td>0.0055131230600766225</td><td>0.8435675923509218</td><td>0.004741583591371624</td><td>1.0094882735221247</td><td>0.0047143753686044055</td><td>0.8893053372138517</td><td>0.007319798398806998</td><td>0.9324802470703117</td><td>0.006405565944800626</td><td>1.7697781011450084</td><td>32809883821.644165</td><td>0.50983775</td><td>0.8515203</td><td>1.7189896</td><td>4.3906884</td><td>1693531123.1206756</td><td>2439001724.140659</td><td>491718980.0611007</td><td>--</td><td>--</td><td>--</td><td>--</td><td>4.517067232777931</td><td>0.5648607884785078</td><td>2181</td><td>0.0</td><td>0.0</td><td>-1.0</td><td>-1.0</td><td>2181</td><td>0.0</td><td>0.0</td><td>-1.0</td><td>-1.0</td><td>2181</td><td>0.0</td><td>0.0</td><td>-1.0</td><td>-1.0</td><td>2181</td><td>0.0</td><td>0.0</td><td>-1.0</td><td>-1.0</td><td>2181</td><td>0.0</td><td>0.0</td><td>-1.0</td><td>-1.0</td><td>2181</td><td>0.0</td><td>0.0</td><td>-1.0</td><td>-1.0</td><td>2181</td><td>0.0</td><td>0.0</td><td>-1.0</td><td>-1.0</td><td>2181</td><td>0.0</td><td>0.0</td><td>-1.0</td><td>-1.0</td><td>2181</td><td>0.0</td><td>0.0</td><td>-1.0</td><td>-1.0</td><td>2181</td><td>0.37837280603318735</td><td>0.3007337887735032</td><td>0.7444602012873731</td><td>0.4907047701126011</td><td>2181</td><td>0.9999772581563087</td><td>1.084959056058827</td><td>0.5379013681410073</td><td>0.32585015996468586</td><td>2181</td><td>0.4657190608823929</td><td>0.31645612242976445</td><td>0.9023031161466659</td><td>0.5029371099616546</td><td>2181</td><td>0.00010345898399421568</td><td>0.0</td><td>-1.0</td><td>-1.0</td><td>2181</td><td>0.9713751020322826</td><td>0.45741863229009794</td><td>0.6887062354330475</td><td>0.4520323682998193</td><td>2181</td><td>0.9999788368443016</td><td>0.6306389182611222</td><td>0.8378392845863539</td><td>0.5215868519557816</td><td>2181</td><td>0.9999177797792165</td><td>1.5695825550910243</td><td>0.7339878408469604</td><td>0.4392704336981855</td><td>2181</td><td>0.9899288507048044</td><td>0.3378114355915089</td><td>0.8727410400891275</td><td>0.4888449496559451</td><td>2181</td><td>0.7262410592787684</td><td>0.7287832570032731</td><td>1.6251451026126238</td><td>0.8896363318577546</td><td>2181</td><td>0.0002046558169208894</td><td>0.0</td><td>-1.0</td><td>-1.0</td><td>2181</td><td>8.095252757928491e-05</td><td>0.0</td><td>-1.0</td><td>-1.0</td><td>2181</td><td>0.0</td><td>0.0</td><td>-1.0</td><td>-1.0</td><td>2181</td><td>0.0</td><td>0.0</td><td>-1.0</td><td>-1.0</td><td>2181</td><td>0.0</td><td>0.0</td><td>-1.0</td><td>-1.0</td><td>2181</td><td>0.0</td><td>0.0</td><td>-1.0</td><td>-1.0</td><td>2181</td><td>0.0</td><td>0.0</td><td>-1.0</td><td>-1.0</td><td>2181</td><td>0.0</td><td>0.0</td><td>-1.0</td><td>-1.0</td><td>2181</td><td>0.0</td><td>0.0</td><td>-1.0</td><td>-1.0</td><td>2181</td><td>0.0</td><td>0.0</td><td>-1.0</td><td>-1.0</td><td>2181</td><td>0.0</td><td>0.0</td><td>-1.0</td><td>-1.0</td><td>2181</td><td>0.025478101225164525</td><td>0.0</td><td>-1.0</td><td>-1.0</td><td>2181</td><td>0.8291742799690571</td><td>0.46436990342848333</td><td>0.585386872116059</td><td>0.38255718808494726</td><td>2181</td><td>0.0</td><td>0.0</td><td>-1.0</td><td>-1.0</td><td>2181</td><td>0.15580905088338265</td><td>-0.12238282400133234</td><td>1.1890295304975842</td><td>0.795285131134417</td><td>2181</td><td>1.000795535675803</td><td>0.9472319776531377</td><td>0.5981600454935136</td><td>0.37015996906099646</td><td>2181</td><td>0.788454047968125</td><td>0.4860997689158019</td><td>0.7950771131455208</td><td>0.4469232974920383</td><td>2181</td><td>3.0335519041963066e-05</td><td>0.0</td><td>-1.0</td><td>-1.0</td><td>2181</td><td>0.0</td><td>0.0</td><td>-1.0</td><td>-1.0</td><td>2181</td><td>0.0</td><td>0.0</td><td>-1.0</td><td>-1.0</td><td>2181</td><td>0.0</td><td>0.0</td><td>-1.0</td><td>-1.0</td><td>2181</td><td>0.0</td><td>0.0</td><td>-1.0</td><td>-1.0</td><td>2181</td><td>0.0</td><td>0.0</td><td>-1.0</td><td>-1.0</td><td>2181</td><td>0.8620101263997639</td><td>0.32700304883301073</td><td>0.8894654801456295</td><td>0.4967532214376828</td><td>--</td><td>--</td><td>0</td><td>--</td><td>--</td><td>--</td><td>--</td><td>--</td><td>--</td><td>--</td><td>--</td><td>--</td><td>--</td></tr>
<tr><td>gto-wide-uds13-v4_prism-clear_1215_1951.spec.fits</td><td>1951</td><td>34.35065901</td><td>-5.14988767</td><td>PRISM</td><td>CLEAR</td><td>802.389</td><td>3</td><td>jw01215013001_03101_00002_nrs2_clear_prism_raw.70.1215_1951.fits</td><td>jw01215013001_01_msa.fits</td><td>1</td><td>1</td><td>1</td><td>70</td><td>gto-wide-uds13-v4</td><td>468</td><td>1</td><td>0.54912597</td><td>5.5018334</td><td>3.6847322</td><td>2.3243139</td><td>0.25463933</td><td>0.02617235</td><td>9.302495</td><td>0.52588886</td><td>0.056728948</td><td>15.833174</td><td>0.81377536</td><td>0.24621214</td><td>1</td><td>1359</td><td>506</td><td>28</td><td>0.0</td><td>253.85</td><td>0.0</td><td>0.001</td><td>0.4917679</td><td>1738073090.4590383</td><td>0.9.5.dev2+g80b81b4</td><td>2407.167</td><td>5617.831</td><td>468</td><td>613.4004</td><td>48.812813</td><td>22.620071</td><td>-2.438987</td><td>20.292538</td><td>--</td><td>--</td><td>--</td><td>--</td><td>--</td><td>--</td><td>--</td><td>--</td><td>560.37775</td><td>46.52388</td><td>71.51085</td><td>62.164665</td><td>--</td><td>--</td><td>-209.0797</td><td>133.7496</td><td>80.514854</td><td>28.133654</td><td>40.78571</td><td>23.218676</td><td>60.545902</td><td>23.915543</td><td>96.50616</td><td>43.993908</td><td>291.39352</td><td>75.85304</td><td>-716.07837</td><td>280.87146</td><td>57.39623</td><td>118.88307</td><td>514.75586</td><td>138.25935</td><td>124.91836</td><td>69.47591</td><td>16.877195</td><td>89.80219</td><td>-47.70294</td><td>94.665474</td><td>47.62188</td><td>198.28189</td><td>99.01638</td><td>32.63919</td><td>733.29956</td><td>52.67196</td><td>21.678513</td><td>83.931694</td><td>--</td><td>202.1944</td><td>241.93048</td><td>-169.24973</td><td>72.94585</td><td>932.3925</td><td>51.213474</td><td>2339.1604</td><td>70.73323</td><td>--</td><td>-12.027637</td><td>30.294546</td><td>260.65622</td><td>45.92269</td><td>-66.22304</td><td>32.629578</td><td>--</td><td>--</td><td>--</td><td>--</td><td>--</td><td>--</td><td>--</td><td>--</td><td>--</td><td>--</td><td>--</td><td>--</td><td>--</td><td>--</td><td>--</td><td>--</td><td>241.58337</td><td>27.795877</td><td>126.88221</td><td>33.298237</td><td>228.29633</td><td>42.907158</td><td>40.989212</td><td>24.233473</td><td>13.529544</td><td>1.5309826</td><td>0.066841386</td><td>1.214747</td><td>0.065447986</td><td>1.278438</td><td>0.06856148</td><td>1.1027563</td><td>0.070816785</td><td>1.0249417</td><td>0.063015215</td><td>0.89060324</td><td>0.06667906</td><td>0.86389846</td><td>0.07108439</td><td>0.651814</td><td>0.08272743</td><td>0.89211535</td><td>0.098206654</td><td>0.799955</td><td>0.1357211</td><td>7.2655287</td><td>22.44103</td><td>0.5588701</td><td>0.20240332</td><td>0.870177</td><td>0.2691064</td><td>0.25699463</td><td>0.49232814</td><td>2.700355</td><td>14.098136</td><td>0.95429015</td><td>10.180353</td><td>0.3941978</td><td>5.217168</td><td>0.22023936</td><td>3.3910584</td><td>0.15795249</td><td>2.8573809</td><td>0.12847427</td><td>2.1295457</td><td>0.094936535</td><td>1.6646644</td><td>0.06834415</td><td>4.621582</td><td>-649.9793</td><td>196.06087</td><td>--</td><td>--</td><td>--</td><td>--</td><td>--</td><td>--</td><td>--</td><td>--</td><td>--</td><td>--</td><td>--</td><td>--</td><td>--</td><td>--</td><td>--</td><td>--</td><td>-323.86383</td><td>244.54553</td><td>--</td><td>--</td><td>--</td><td>--</td><td>--</td><td>--</td><td>--</td><td>--</td><td>--</td><td>--</td><td>--</td><td>--</td><td>--</td><td>--</td><td>-0.020892859</td><td>-0.019805139</td><td>164.59029</td><td>193.0386</td><td>363.44467</td><td>219.52042</td><td>--</td><td>--</td><td>--</td><td>--</td><td>43.720543</td><td>-2.5788078</td><td>--</td><td>--</td><td>--</td><td>--</td><td>17.805237</td><td>-53.11091</td><td>2274.049</td><td>278.24475</td><td>25.7951</td><td>--</td><td>-70.51571</td><td>55.215572</td><td>35.792576</td><td>80.42899</td><td>-28.525156</td><td>44.31549</td><td>115.00771</td><td>-52.42033</td><td>12.157452</td><td>172.58456</td><td>43.14509</td><td>4.735929</td><td>-13.835131</td><td>4.564733</td><td>28.052313</td><td>77.97484</td><td>235.53954</td><td>49.396652</td><td>--</td><td>18.168468</td><td>-67.426506</td><td>482.79144</td><td>1235.6241</td><td>-14.254797</td><td>377.87656</td><td>-86.09008</td><td>--</td><td>--</td><td>--</td><td>--</td><td>--</td><td>--</td><td>--</td><td>--</td><td>195.16728</td><td>151.96198</td><td>334.70682</td><td>2837.5889</td><td>58.07976</td><td>--</td><td>--</td><td>--</td><td>--</td><td>--</td><td>--</td><td>--</td><td>--</td><td>--</td><td>--</td><td>--</td><td>--</td><td>--</td><td>--</td><td>--</td><td>48.9</td><td>1737732200.0</td><td>--</td><td>--</td><td>--</td><td>--</td><td>--</td><td>--</td><td>--</td><td>--</td><td>--</td><td>--</td><td>--</td><td>--</td><td>--</td><td>--</td><td>--</td><td>--</td><td>--</td><td>--</td><td>--</td><td>--</td><td>--</td><td>--</td><td>--</td><td>--</td><td>--</td><td>--</td><td>--</td><td>--</td><td>--</td><td>--</td><td>True</td><td>172449</td><td>4.6228543</td><td>G</td><td>4.621582</td><td>4.6228543</td><td>1.85</td><td>5.58</td><td>0.07257426</td><td>primer-uds-north-grizli-v7.2-fix_phot.fits</td><td>39787</td><td>23.86</td><td>0.2917665994332862</td><td>0.0074583520942602035</td><td>0.375822323338598</td><td>0.007474258631804441</td><td>0.4462115844556865</td><td>0.006440427649332001</td><td>0.5739798944677847</td><td>0.0055131230600766225</td><td>0.8435675923509218</td><td>0.004741583591371624</td><td>1.0094882735221247</td><td>0.0047143753686044055</td><td>0.8893053372138517</td><td>0.007319798398806998</td><td>0.9324802470703117</td><td>0.006405565944800626</td><td>1.7697781011450084</td><td>32809883821.644165</td><td>0.50983775</td><td>0.8515203</td><td>1.7189896</td><td>4.3906884</td><td>1693531123.1206756</td><td>2439001724.140659</td><td>491718980.0611007</td><td>3</td><td>4.62158</td><td>Auto</td><td>Redshift matches gto-wide-uds13-v3_g395h-f290lp_1215_1951 z=4.6200</td><td>4.621581822366623</td><td>0.9710891829132017</td><td>468</td><td>0.9993118773223624</td><td>0.29734528736854304</td><td>0.005072510088040735</td><td>0.005767177676298873</td><td>468</td><td>1.0049920554790184</td><td>0.39358077725769736</td><td>0.006754919246597596</td><td>0.007532034658250185</td><td>468</td><td>0.9994121589090459</td><td>0.2105169070779525</td><td>0.005740663780735214</td><td>0.006500276615422723</td><td>468</td><td>1.0048331387204024</td><td>0.3142774578677898</td><td>0.0056972625518462</td><td>0.006475589632160145</td><td>468</td><td>1.0057802954242325</td><td>0.3633855175643899</td><td>0.005552140260213317</td><td>0.0063232330890943475</td><td>468</td><td>0.9969378740446078</td><td>0.390086461267687</td><td>0.006031948428263683</td><td>0.006740462634462128</td><td>468</td><td>0.9995545389631847</td><td>0.47428699929668094</td><td>0.006087252864125372</td><td>0.006644708782519558</td><td>468</td><td>0.9949583358463919</td><td>0.4221695478639817</td><td>0.008193361034636096</td><td>0.008954026097921097</td><td>468</td><td>0.9966398915013757</td><td>0.5330687735195239</td><td>0.00920935617242841</td><td>0.010074424705055462</td><td>468</td><td>1.000135743102705</td><td>0.6585727186306961</td><td>0.00540349388040512</td><td>0.005876314991454699</td><td>468</td><td>1.0001377456066418</td><td>0.7394149423240386</td><td>0.006323697221645326</td><td>0.0065784364741576125</td><td>468</td><td>1.000013567062085</td><td>0.6166311528474346</td><td>0.008695988683221448</td><td>0.008120834396306063</td><td>468</td><td>0.9973999343526664</td><td>0.5123215054081025</td><td>0.009529315724051777</td><td>0.010162216289208869</td><td>468</td><td>0.9998409327402623</td><td>0.5626509249823465</td><td>0.007773287358672584</td><td>0.008041947249691669</td><td>468</td><td>0.9995329666665248</td><td>0.5396141362524208</td><td>0.008187183943740751</td><td>0.008220709080628089</td><td>468</td><td>0.9999658710844571</td><td>0.9343532785573141</td><td>0.009678591326381328</td><td>0.010472675567219238</td><td>468</td><td>1.0000143039433227</td><td>0.6198705997379221</td><td>0.010520714370935278</td><td>0.010078224493847163</td><td>468</td><td>0.9997544208857447</td><td>0.6046318093271135</td><td>0.016583968030603233</td><td>0.015668615213923796</td><td>468</td><td>1.0004403138230038</td><td>0.6104681852342965</td><td>0.020620481299690376</td><td>0.01906515776929085</td><td>468</td><td>0.9997586216471691</td><td>0.6181443627182708</td><td>0.02107673853011141</td><td>0.019261352578809964</td><td>468</td><td>1.0005685988794546</td><td>0.3069343338892747</td><td>0.005583251896278126</td><td>0.006349944821663527</td><td>468</td><td>1.0003104619770644</td><td>0.3761750772827621</td><td>0.004312906982944125</td><td>0.004881883975885983</td><td>468</td><td>0.9904131708376346</td><td>0.31802241951276733</td><td>0.006028062674911858</td><td>0.006853123554938171</td><td>468</td><td>1.0107784320042819</td><td>0.389690293439562</td><td>0.008403419750412264</td><td>0.009342099415807005</td><td>468</td><td>1.0065232768365464</td><td>0.29651259700246846</td><td>0.006942986285491834</td><td>0.007903390037513149</td><td>468</td><td>0.9847564979575222</td><td>0.32320605184509554</td><td>0.008470150253087333</td><td>0.009614490334158416</td><td>468</td><td>1.0157188080544226</td><td>0.35958587157221905</td><td>0.00870528122208533</td><td>0.009880207569668304</td><td>468</td><td>1.0088670429538373</td><td>0.3976870900143664</td><td>0.010650006076162495</td><td>0.011869349833618707</td><td>468</td><td>0.9996170106520132</td><td>0.490647426381474</td><td>0.006174141010544129</td><td>0.006749864291928956</td><td>468</td><td>1.000184752460022</td><td>0.5686809441913387</td><td>0.005280487501663225</td><td>0.005684499640823398</td><td>468</td><td>1.0001471164580011</td><td>0.617824119776292</td><td>0.005899318910584339</td><td>0.00616102326630729</td><td>468</td><td>1.0001279166565336</td><td>0.4770255075760639</td><td>0.0066422708680174735</td><td>0.00725540569775386</td><td>468</td><td>0.9999969865492299</td><td>0.6548236950365218</td><td>0.005124902270081213</td><td>0.005617270097245955</td><td>468</td><td>0.9999998515125955</td><td>0.7575954360860535</td><td>0.006838287497065963</td><td>0.007237138306888876</td><td>468</td><td>0.9997355434741737</td><td>0.6194714287917443</td><td>0.009074522727257303</td><td>0.008616895171326298</td><td>468</td><td>0.9214708571648356</td><td>0.668345653523944</td><td>0.02038897155485026</td><td>0.01830167340888231</td><td>468</td><td>0.0</td><td>0.0</td><td>-1.0</td><td>-1.0</td><td>468</td><td>0.0</td><td>0.0</td><td>-1.0</td><td>-1.0</td><td>468</td><td>0.0</td><td>0.0</td><td>-1.0</td><td>-1.0</td><td>468</td><td>1.027102687446468</td><td>0.3910516613690073</td><td>0.007945509661014401</td><td>0.008788183019400268</td><td>468</td><td>0.9984309746369571</td><td>0.5230435541267343</td><td>0.00887556980792251</td><td>0.009462919431837948</td><td>468</td><td>1.0043779357206608</td><td>0.6176813660935505</td><td>0.010698828562773089</td><td>0.010147776185419594</td><td>-1.4565206479365085</td><td>0.3061252990650476</td><td>44</td><td>0.140362119861813</td><td>0.2567145919520727</td><td>1.195405434175183</td><td>15.0</td><td>18.563167366575303</td><td>5.144609137022997</td><td>0.0021474377023419544</td><td>-0.0001561310838130919</td><td>-0.00015613108381309188</td><td>1.803142058546427e-05</td></tr>
</table></div>

<div class="language-python highlighter-rouge"><div class="highlight"><pre class="highlight"><code>
<span class="c1">#  see the description in the https://dawn-cph.github.io/dja/blog/2025/05/01/nirspec-merged-table-v4/
#  
</span><span class="n">RGB_URL</span> <span class="o">=</span> <span class="s">"https://grizli-cutout.herokuapp.com/thumb?size=1.5&amp;scl=2.0&amp;asinh=True&amp;filters=f115w-clear%2Cf277w-clear%2Cf444w-clear&amp;rgb_scl=1.5%2C0.74%2C1.3&amp;pl=2&amp;coord={ra}%2C{dec}"</span>
<span class="n">msa</span><span class="p">[</span><span class="s">'metafile'</span><span class="p">]</span> <span class="o">=</span> <span class="p">[</span><span class="n">m</span><span class="p">.</span><span class="n">split</span><span class="p">(</span><span class="s">'_'</span><span class="p">)[</span><span class="mi">0</span><span class="p">]</span> <span class="k">for</span> <span class="n">m</span> <span class="ow">in</span> <span class="n">msa</span><span class="p">[</span><span class="s">'msamet'</span><span class="p">]]</span>
<span class="n">SLIT_URL</span> <span class="o">=</span> <span class="s">"https://grizli-cutout.herokuapp.com/thumb?size=1.5&amp;scl=4.0&amp;invert=True&amp;filters=f444w-clear&amp;rgb_scl=1.5%2C0.74%2C1.3&amp;pl=2&amp;coord={ra}%2C{dec}&amp;nirspec=True&amp;dpi_scale=6&amp;nrs_lw=0.5&amp;nrs_alpha=0.8&amp;metafile={metafile}"</span>
<span class="n">FITS_URL</span> <span class="o">=</span> <span class="s">"https://s3.amazonaws.com/msaexp-nirspec/extractions/{root}/{file}"</span>

<span class="n">msa</span><span class="p">[</span><span class="s">'Thumb'</span><span class="p">]</span> <span class="o">=</span> <span class="p">[</span>
    <span class="s">"&lt;img src=</span><span class="se">\"</span><span class="s">{0}</span><span class="se">\"</span><span class="s"> height=200px&gt;"</span><span class="p">.</span><span class="nb">format</span><span class="p">(</span>
        <span class="n">RGB_URL</span><span class="p">.</span><span class="nb">format</span><span class="p">(</span><span class="o">**</span><span class="n">row</span><span class="p">[</span><span class="s">'ra'</span><span class="p">,</span><span class="s">'dec'</span><span class="p">])</span>
    <span class="p">)</span>
    <span class="k">for</span> <span class="n">row</span> <span class="ow">in</span> <span class="n">msa</span>
<span class="p">]</span>

<span class="n">msa</span><span class="p">[</span><span class="s">'Slit_Thumb'</span><span class="p">]</span> <span class="o">=</span> <span class="p">[</span>
    <span class="s">"&lt;img src=</span><span class="se">\"</span><span class="s">{0}</span><span class="se">\"</span><span class="s"> height=200px&gt;"</span><span class="p">.</span><span class="nb">format</span><span class="p">(</span>
        <span class="n">SLIT_URL</span><span class="p">.</span><span class="nb">format</span><span class="p">(</span><span class="o">**</span><span class="n">row</span><span class="p">[</span><span class="s">'ra'</span><span class="p">,</span><span class="s">'dec'</span><span class="p">,</span><span class="s">'metafile'</span><span class="p">])</span>
    <span class="p">)</span>
    <span class="k">for</span> <span class="n">row</span> <span class="ow">in</span> <span class="n">msa</span>
<span class="p">]</span>

<span class="n">msa</span><span class="p">[</span><span class="s">'Spectrum_fnu'</span><span class="p">]</span> <span class="o">=</span> <span class="p">[</span>
    <span class="s">"&lt;img src=</span><span class="se">\"</span><span class="s">{0}</span><span class="se">\"</span><span class="s"> height=200px&gt;"</span><span class="p">.</span><span class="nb">format</span><span class="p">(</span>
        <span class="n">FITS_URL</span><span class="p">.</span><span class="nb">format</span><span class="p">(</span><span class="o">**</span><span class="n">row</span><span class="p">[</span><span class="s">'root'</span><span class="p">,</span><span class="s">'file'</span><span class="p">]).</span><span class="n">replace</span><span class="p">(</span><span class="s">'.spec.fits'</span><span class="p">,</span> <span class="s">'.fnu.png'</span><span class="p">)</span>
    <span class="p">)</span>
    <span class="k">for</span> <span class="n">row</span> <span class="ow">in</span> <span class="n">msa</span>
<span class="p">]</span>

<span class="n">msa</span><span class="p">[</span><span class="s">'Spectrum_flam'</span><span class="p">]</span> <span class="o">=</span> <span class="p">[</span>
    <span class="s">"&lt;img src=</span><span class="se">\"</span><span class="s">{0}</span><span class="se">\"</span><span class="s"> height=200px&gt;"</span><span class="p">.</span><span class="nb">format</span><span class="p">(</span>
        <span class="n">FITS_URL</span><span class="p">.</span><span class="nb">format</span><span class="p">(</span><span class="o">**</span><span class="n">row</span><span class="p">[</span><span class="s">'root'</span><span class="p">,</span><span class="s">'file'</span><span class="p">]).</span><span class="n">replace</span><span class="p">(</span><span class="s">'.spec.fits'</span><span class="p">,</span> <span class="s">'.flam.png'</span><span class="p">)</span>
    <span class="p">)</span>
    <span class="k">for</span> <span class="n">row</span> <span class="ow">in</span> <span class="n">msa</span>
<span class="p">]</span>

</code></pre></div></div>

<div class="language-python highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="n">df</span> <span class="o">=</span> <span class="n">msa</span><span class="p">[</span><span class="s">'root'</span><span class="p">,</span><span class="s">'file'</span><span class="p">,</span><span class="s">'z_best'</span><span class="p">,</span><span class="s">'phot_mass'</span><span class="p">,</span><span class="s">'eqw_ha_nii'</span><span class="p">,</span><span class="s">'Thumb'</span><span class="p">,</span><span class="s">'Slit_Thumb'</span><span class="p">,</span><span class="s">'Spectrum_fnu'</span><span class="p">,</span> <span class="s">'Spectrum_flam'</span><span class="p">].</span><span class="n">to_pandas</span><span class="p">()</span>

<span class="n">display</span><span class="p">(</span><span class="n">Markdown</span><span class="p">(</span><span class="n">df</span><span class="p">.</span><span class="n">to_markdown</span><span class="p">()))</span>
</code></pre></div></div>

<table>
  <thead>
    <tr>
      <th style="text-align: right"> </th>
      <th style="text-align: left">root</th>
      <th style="text-align: left">file</th>
      <th style="text-align: right">z_best</th>
      <th style="text-align: right">phot_mass</th>
      <th style="text-align: right">eqw_ha_nii</th>
      <th style="text-align: left">Thumb</th>
      <th style="text-align: left">Slit_Thumb</th>
      <th style="text-align: left">Spectrum_fnu</th>
      <th style="text-align: left">Spectrum_flam</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td style="text-align: right">0</td>
      <td style="text-align: left">excels-uds01-v4</td>
      <td style="text-align: left">excels-uds01-v4_g235m-f170lp_3543_109269.spec.fits</td>
      <td style="text-align: right">4.62285</td>
      <td style="text-align: right">3.28099e+10</td>
      <td style="text-align: right">nan</td>
      <td style="text-align: left"><img src="https://grizli-cutout.herokuapp.com/thumb?size=1.5&amp;scl=2.0&amp;asinh=True&amp;filters=f115w-clear%2Cf277w-clear%2Cf444w-clear&amp;rgb_scl=1.5%2C0.74%2C1.3&amp;pl=2&amp;coord=34.35062413%2C-5.14987821" height="200px" /></td>
      <td style="text-align: left"><img src="https://grizli-cutout.herokuapp.com/thumb?size=1.5&amp;scl=4.0&amp;invert=True&amp;filters=f444w-clear&amp;rgb_scl=1.5%2C0.74%2C1.3&amp;pl=2&amp;coord=34.35062413%2C-5.14987821&amp;nirspec=True&amp;dpi_scale=6&amp;nrs_lw=0.5&amp;nrs_alpha=0.8&amp;metafile=jw03543001001" height="200px" /></td>
      <td style="text-align: left"><img src="https://s3.amazonaws.com/msaexp-nirspec/extractions/excels-uds01-v4/excels-uds01-v4_g235m-f170lp_3543_109269.fnu.png" height="200px" /></td>
      <td style="text-align: left"><img src="https://s3.amazonaws.com/msaexp-nirspec/extractions/excels-uds01-v4/excels-uds01-v4_g235m-f170lp_3543_109269.flam.png" height="200px" /></td>
    </tr>
    <tr>
      <td style="text-align: right">1</td>
      <td style="text-align: left">gto-wide-uds13-v4</td>
      <td style="text-align: left">gto-wide-uds13-v4_g235h-f170lp_1215_1951.spec.fits</td>
      <td style="text-align: right">4.62285</td>
      <td style="text-align: right">3.28099e+10</td>
      <td style="text-align: right">nan</td>
      <td style="text-align: left"><img src="https://grizli-cutout.herokuapp.com/thumb?size=1.5&amp;scl=2.0&amp;asinh=True&amp;filters=f115w-clear%2Cf277w-clear%2Cf444w-clear&amp;rgb_scl=1.5%2C0.74%2C1.3&amp;pl=2&amp;coord=34.35065901%2C-5.14988767" height="200px" /></td>
      <td style="text-align: left"><img src="https://grizli-cutout.herokuapp.com/thumb?size=1.5&amp;scl=4.0&amp;invert=True&amp;filters=f444w-clear&amp;rgb_scl=1.5%2C0.74%2C1.3&amp;pl=2&amp;coord=34.35065901%2C-5.14988767&amp;nirspec=True&amp;dpi_scale=6&amp;nrs_lw=0.5&amp;nrs_alpha=0.8&amp;metafile=jw01215013001" height="200px" /></td>
      <td style="text-align: left"><img src="https://s3.amazonaws.com/msaexp-nirspec/extractions/gto-wide-uds13-v4/gto-wide-uds13-v4_g235h-f170lp_1215_1951.fnu.png" height="200px" /></td>
      <td style="text-align: left"><img src="https://s3.amazonaws.com/msaexp-nirspec/extractions/gto-wide-uds13-v4/gto-wide-uds13-v4_g235h-f170lp_1215_1951.flam.png" height="200px" /></td>
    </tr>
    <tr>
      <td style="text-align: right">2</td>
      <td style="text-align: left">gto-wide-uds13-v4</td>
      <td style="text-align: left">gto-wide-uds13-v4_g395h-f290lp_1215_1951.spec.fits</td>
      <td style="text-align: right">4.62285</td>
      <td style="text-align: right">3.28099e+10</td>
      <td style="text-align: right">nan</td>
      <td style="text-align: left"><img src="https://grizli-cutout.herokuapp.com/thumb?size=1.5&amp;scl=2.0&amp;asinh=True&amp;filters=f115w-clear%2Cf277w-clear%2Cf444w-clear&amp;rgb_scl=1.5%2C0.74%2C1.3&amp;pl=2&amp;coord=34.35065901%2C-5.14988767" height="200px" /></td>
      <td style="text-align: left"><img src="https://grizli-cutout.herokuapp.com/thumb?size=1.5&amp;scl=4.0&amp;invert=True&amp;filters=f444w-clear&amp;rgb_scl=1.5%2C0.74%2C1.3&amp;pl=2&amp;coord=34.35065901%2C-5.14988767&amp;nirspec=True&amp;dpi_scale=6&amp;nrs_lw=0.5&amp;nrs_alpha=0.8&amp;metafile=jw01215013001" height="200px" /></td>
      <td style="text-align: left"><img src="https://s3.amazonaws.com/msaexp-nirspec/extractions/gto-wide-uds13-v4/gto-wide-uds13-v4_g395h-f290lp_1215_1951.fnu.png" height="200px" /></td>
      <td style="text-align: left"><img src="https://s3.amazonaws.com/msaexp-nirspec/extractions/gto-wide-uds13-v4/gto-wide-uds13-v4_g395h-f290lp_1215_1951.flam.png" height="200px" /></td>
    </tr>
    <tr>
      <td style="text-align: right">3</td>
      <td style="text-align: left">gto-wide-uds13-v4</td>
      <td style="text-align: left">gto-wide-uds13-v4_prism-clear_1215_1951.spec.fits</td>
      <td style="text-align: right">4.62285</td>
      <td style="text-align: right">3.28099e+10</td>
      <td style="text-align: right">2274.05</td>
      <td style="text-align: left"><img src="https://grizli-cutout.herokuapp.com/thumb?size=1.5&amp;scl=2.0&amp;asinh=True&amp;filters=f115w-clear%2Cf277w-clear%2Cf444w-clear&amp;rgb_scl=1.5%2C0.74%2C1.3&amp;pl=2&amp;coord=34.35065901%2C-5.14988767" height="200px" /></td>
      <td style="text-align: left"><img src="https://grizli-cutout.herokuapp.com/thumb?size=1.5&amp;scl=4.0&amp;invert=True&amp;filters=f444w-clear&amp;rgb_scl=1.5%2C0.74%2C1.3&amp;pl=2&amp;coord=34.35065901%2C-5.14988767&amp;nirspec=True&amp;dpi_scale=6&amp;nrs_lw=0.5&amp;nrs_alpha=0.8&amp;metafile=jw01215013001" height="200px" /></td>
      <td style="text-align: left"><img src="https://s3.amazonaws.com/msaexp-nirspec/extractions/gto-wide-uds13-v4/gto-wide-uds13-v4_prism-clear_1215_1951.fnu.png" height="200px" /></td>
      <td style="text-align: left"><img src="https://s3.amazonaws.com/msaexp-nirspec/extractions/gto-wide-uds13-v4/gto-wide-uds13-v4_prism-clear_1215_1951.flam.png" height="200px" /></td>
    </tr>
  </tbody>
</table>

<div class="language-python highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="c1"># Reading the spectrum
</span>
<span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="nb">len</span><span class="p">(</span><span class="n">df</span><span class="p">)):</span>
    <span class="n">spec_file</span> <span class="o">=</span> <span class="n">df</span><span class="p">[</span><span class="s">'file'</span><span class="p">][</span><span class="n">i</span><span class="p">]</span>
    <span class="n">row</span> <span class="o">=</span> <span class="n">msa</span><span class="p">[</span><span class="n">msa</span><span class="p">[</span><span class="s">'file'</span><span class="p">]</span> <span class="o">==</span> <span class="n">spec_file</span><span class="p">][</span><span class="mi">0</span><span class="p">]</span>
    <span class="n">spec</span> <span class="o">=</span> <span class="n">msaexp</span><span class="p">.</span><span class="n">spectrum</span><span class="p">.</span><span class="n">SpectrumSampler</span><span class="p">(</span><span class="n">FITS_URL</span><span class="p">.</span><span class="nb">format</span><span class="p">(</span><span class="o">**</span><span class="n">row</span><span class="p">))</span>

    <span class="c1">## 
</span>    <span class="n">con_mask</span> <span class="o">=</span> <span class="n">spec</span><span class="p">[</span><span class="s">'full_err'</span><span class="p">]</span><span class="o">==</span><span class="mi">0</span> 
    <span class="n">con_mask</span> <span class="o">|=</span> <span class="n">spec</span><span class="p">[</span><span class="s">'full_err'</span><span class="p">]</span><span class="o">&gt;</span> <span class="n">spec</span><span class="p">[</span><span class="s">'flux'</span><span class="p">]</span>

    <span class="n">galaxy_masked</span> <span class="o">=</span> <span class="n">np</span><span class="p">.</span><span class="n">ma</span><span class="p">.</span><span class="n">masked_where</span><span class="p">(</span><span class="n">con_mask</span><span class="p">,</span> <span class="n">spec</span><span class="p">[</span><span class="s">'flux'</span><span class="p">])</span>
    <span class="n">plt</span><span class="p">.</span><span class="n">plot</span><span class="p">(</span><span class="n">spec</span><span class="p">[</span><span class="s">'wave'</span><span class="p">],</span> <span class="n">galaxy_masked</span><span class="p">,</span>
         <span class="n">label</span><span class="o">=</span><span class="s">"{file}</span><span class="se">\n</span><span class="s">z={z_best:.3f}"</span><span class="p">.</span><span class="nb">format</span><span class="p">(</span><span class="o">**</span><span class="n">row</span><span class="p">),</span> <span class="n">alpha</span><span class="o">=</span><span class="mf">0.5</span><span class="p">)</span>


<span class="n">plt</span><span class="p">.</span><span class="n">xlim</span><span class="p">([</span><span class="mf">0.8</span><span class="p">,</span><span class="mi">6</span><span class="p">])</span>
<span class="n">plt</span><span class="p">.</span><span class="n">ylim</span><span class="p">(</span><span class="n">top</span><span class="o">=</span><span class="n">galaxy_masked</span><span class="p">.</span><span class="nb">max</span><span class="p">()</span><span class="o">*</span><span class="mi">2</span><span class="p">)</span>
<span class="n">plt</span><span class="p">.</span><span class="n">semilogx</span><span class="p">()</span>
<span class="n">plt</span><span class="p">.</span><span class="n">legend</span><span class="p">(</span><span class="n">fontsize</span><span class="o">=</span><span class="mi">7</span><span class="p">,</span> <span class="n">ncol</span><span class="o">=</span><span class="mi">1</span><span class="p">)</span>
</code></pre></div></div>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>&lt;matplotlib.legend.Legend at 0x3117895e0&gt;
</code></pre></div></div>

<p><img src="/dja/assets/post_files/2025-11-20-ecogal-dja-showcase_files/ecogal-dja-showcase_61_1.png" alt="png" /></p>]]></content><author><name>Minju Lee</name></author><category term="imaging" /><category term="ALMA" /><category term="catalog" /><category term="release" /><category term="demo" /><summary type="html"><![CDATA[imaging ALMA catalog release demo (This page is auto-generated from the Jupyter notebook ecogal-dja-showcase.ipynb.)]]></summary></entry><entry><title type="html">API Documentation Posted</title><link href="https://dawn-cph.github.io/dja/blog/2025/11/07/api-documentation-posted/" rel="alternate" type="text/html" title="API Documentation Posted" /><published>2025-11-07T21:36:13+00:00</published><updated>2025-11-07T21:36:13+00:00</updated><id>https://dawn-cph.github.io/dja/blog/2025/11/07/api-documentation-posted</id><content type="html" xml:base="https://dawn-cph.github.io/dja/blog/2025/11/07/api-documentation-posted/"><![CDATA[<p> 
    
    <a class="blog-category" href="/dja/blog/categories/#news"> news</a>
    
    
        
        <a class="blog-tag" href="/dja/blog/tags/#documentation"> documentation</a>
              
    
</p>

<p>Comprehensive documentation on the API functionality at https://grizli-cutout.herokuapp.com/ is now available at <a href="https://dawn-cph.github.io/dja/general/api_summary/">https://dawn-cph.github.io/dja/general/api_summary/</a>.</p>

<p><img src="http://grizli-cutout.herokuapp.com/thumb?filters=f090w-clear,f115w-clear,f150w-clear,f200w-clear,f277w-clear,f356w-clear,f444w-clear&amp;all_filters=True&amp;rgb_scl=1.4,0.7,1.2" alt="Image thumbnails" /></p>]]></content><author><name>Gabriel Brammer</name></author><category term="news" /><category term="documentation" /><summary type="html"><![CDATA[news documentation]]></summary></entry><entry><title type="html">DJA+Grizli Cutout WFSS spectra</title><link href="https://dawn-cph.github.io/dja/blog/2025/05/16/simplified_cutout_wfss/" rel="alternate" type="text/html" title="DJA+Grizli Cutout WFSS spectra" /><published>2025-05-16T20:59:38+00:00</published><updated>2025-05-16T20:59:38+00:00</updated><id>https://dawn-cph.github.io/dja/blog/2025/05/16/simplified_cutout_wfss</id><content type="html" xml:base="https://dawn-cph.github.io/dja/blog/2025/05/16/simplified_cutout_wfss/"><![CDATA[<p> 
    
    <a class="blog-category" href="/dja/blog/categories/#spectroscopy"> spectroscopy</a>
    
    
        
        <a class="blog-tag" href="/dja/blog/tags/#wfss"> wfss</a>
        
        <a class="blog-tag" href="/dja/blog/tags/#grism"> grism</a>
        
        <a class="blog-tag" href="/dja/blog/tags/#demo"> demo</a>
              
    
</p>

<h1 id="djagrizli-cutout-wfss-spectra">DJA+Grizli Cutout WFSS spectra</h1>

<p>Simplified extraction of the grism spectrum for an arbitrary sky position within some WFSS exposure processed with DJA/Grizli.</p>

<p>Totally ignore the full-field contamination model and fit the 2D spectra with flexible spline components to model out continuum / contamination and isolate emission lines.  <strong>No detection image, catalog, segmentation image required!.</strong></p>

<p><a href="https://github.com/dawn-cph/dja/blob/master/assets/post_files/2025-05-16-simplified_cutout_wfss.ipynb">2025-05-16-simplified_cutout_wfss.ipynb</a> Notebook</p>

<p><a href="https://colab.research.google.com/github/dawn-cph/dja/blob/master/assets/post_files/2025-05-16-simplified_cutout_wfss.ipynb"> <img src="https://colab.research.google.com/assets/colab-badge.svg" /> </a></p>

<div class="language-python highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kn">import</span> <span class="nn">os</span>
<span class="n">os</span><span class="p">.</span><span class="n">environ</span><span class="p">[</span><span class="s">'CRDS_CONTEXT'</span><span class="p">]</span> <span class="o">=</span> <span class="s">"jwst_1322.pmap"</span>
<span class="n">os</span><span class="p">.</span><span class="n">environ</span><span class="p">[</span><span class="s">'NIRCAM_CONF_VERSION'</span><span class="p">]</span> <span class="o">=</span> <span class="s">"V9"</span>
</code></pre></div></div>

<h1 id="build-dependencies">Build dependencies</h1>

<p>E.g., on Google Colab.</p>

<p>Restart runtime if dependencies installed.</p>

<div class="language-python highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="k">try</span><span class="p">:</span>
    <span class="kn">import</span> <span class="nn">grizli</span>
<span class="k">except</span> <span class="nb">ImportError</span><span class="p">:</span>
    <span class="c1"># Install dependencies - restart runtime if performed
</span>    <span class="err">!</span> <span class="n">pip</span> <span class="n">install</span> <span class="n">grizli</span><span class="p">[</span><span class="n">aws</span><span class="p">,</span><span class="n">jwst</span><span class="p">]</span> <span class="n">msaexp</span>
    <span class="err">!</span> <span class="n">pip</span> <span class="n">install</span> <span class="n">git</span><span class="o">+</span><span class="n">https</span><span class="p">:</span><span class="o">//</span><span class="n">github</span><span class="p">.</span><span class="n">com</span><span class="o">/</span><span class="n">karllark</span><span class="o">/</span><span class="n">dust_attenuation</span><span class="p">.</span><span class="n">git</span>
</code></pre></div></div>

<h2 id="environment-variables">Environment variables</h2>

<p>Requires an AWS account for downloading exposures, though the functionality shouldn’t generate any charges.  If running in Google Colab, set the AWS credentials variables in the “Secrets” tab at the left with the key icon.</p>

<div class="language-python highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kn">import</span> <span class="nn">os</span>

<span class="n">env</span> <span class="o">=</span> <span class="p">{</span>
    <span class="s">'CRDS_PATH'</span><span class="p">:</span> <span class="s">'/tmp/crds_cache'</span><span class="p">,</span>
    <span class="s">'CRDS_SERVER_URL'</span><span class="p">:</span> <span class="s">'https://jwst-crds.stsci.edu'</span>
<span class="p">}</span>
<span class="k">for</span> <span class="n">k</span> <span class="ow">in</span> <span class="n">env</span><span class="p">:</span>
    <span class="k">if</span> <span class="n">os</span><span class="p">.</span><span class="n">getenv</span><span class="p">(</span><span class="n">k</span><span class="p">)</span> <span class="ow">is</span> <span class="bp">None</span><span class="p">:</span>
        <span class="k">print</span><span class="p">(</span><span class="sa">f</span><span class="s">'set </span><span class="si">{</span><span class="n">k</span><span class="si">}</span><span class="s"> = </span><span class="si">{</span><span class="n">env</span><span class="p">[</span><span class="n">k</span><span class="p">]</span><span class="si">}</span><span class="s">'</span><span class="p">)</span>
        <span class="n">os</span><span class="p">.</span><span class="n">environ</span><span class="p">[</span><span class="n">k</span><span class="p">]</span> <span class="o">=</span> <span class="n">env</span><span class="p">[</span><span class="n">k</span><span class="p">]</span>

<span class="k">try</span><span class="p">:</span>
    <span class="kn">from</span> <span class="nn">google.colab</span> <span class="kn">import</span> <span class="n">userdata</span>
    <span class="k">for</span> <span class="n">k</span> <span class="ow">in</span> <span class="p">[</span><span class="s">'AWS_ACCESS_KEY_ID'</span><span class="p">,</span> <span class="s">'AWS_SECRET_ACCESS_KEY'</span><span class="p">]:</span>
        <span class="n">os</span><span class="p">.</span><span class="n">environ</span><span class="p">[</span><span class="n">k</span><span class="p">]</span> <span class="o">=</span> <span class="n">userdata</span><span class="p">.</span><span class="n">get</span><span class="p">(</span><span class="n">k</span><span class="p">)</span>
<span class="k">except</span> <span class="nb">ImportError</span><span class="p">:</span>
    <span class="k">pass</span>

<span class="k">if</span> <span class="n">os</span><span class="p">.</span><span class="n">getenv</span><span class="p">(</span><span class="s">'AWS_ACCESS_KEY_ID'</span><span class="p">)</span> <span class="ow">is</span> <span class="bp">None</span><span class="p">:</span>
    <span class="k">print</span><span class="p">(</span><span class="s">'AWS credentials not found.  Set them in the AWS_ACCESS_KEY_ID and AWS_SECRET_ACCESS_KEY environment variables'</span><span class="p">)</span>
</code></pre></div></div>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>set CRDS_PATH = /tmp/crds_cache
set CRDS_SERVER_URL = https://jwst-crds.stsci.edu
</code></pre></div></div>

<h2 id="download-config-files">Download config files</h2>

<div class="language-python highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kn">from</span> <span class="nn">grizli</span> <span class="kn">import</span> <span class="n">utils</span>
<span class="kn">from</span> <span class="nn">grizli.aws</span> <span class="kn">import</span> <span class="n">db</span>

<span class="n">CONF_DIR</span> <span class="o">=</span> <span class="n">os</span><span class="p">.</span><span class="n">path</span><span class="p">.</span><span class="n">join</span><span class="p">(</span><span class="n">utils</span><span class="p">.</span><span class="n">GRIZLI_PATH</span><span class="p">,</span> <span class="s">"CONF"</span><span class="p">)</span>
<span class="k">if</span> <span class="ow">not</span> <span class="n">os</span><span class="p">.</span><span class="n">path</span><span class="p">.</span><span class="n">exists</span><span class="p">(</span><span class="n">CONF_DIR</span><span class="p">):</span>
    <span class="n">os</span><span class="p">.</span><span class="n">makedirs</span><span class="p">(</span><span class="n">CONF_DIR</span><span class="p">)</span>

<span class="n">utils</span><span class="p">.</span><span class="n">fetch_config_files</span><span class="p">(</span><span class="n">get_sky</span><span class="o">=</span><span class="bp">False</span><span class="p">,</span> <span class="n">get_wfc3</span><span class="o">=</span><span class="bp">False</span><span class="p">,</span> <span class="n">get_jwst</span><span class="o">=</span><span class="bp">True</span><span class="p">)</span>

<span class="k">if</span> <span class="ow">not</span> <span class="n">os</span><span class="p">.</span><span class="n">path</span><span class="p">.</span><span class="n">exists</span><span class="p">(</span><span class="s">"fsps_line_templ.fits"</span><span class="p">):</span>
    <span class="n">db</span><span class="p">.</span><span class="n">download_s3_file</span><span class="p">(</span><span class="s">"s3://grizli-v2/junk/fsps_line_templ.fits"</span><span class="p">)</span>
</code></pre></div></div>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>Set ROOT_PATH=/content
Config directory: /usr/local/lib/python3.11/dist-packages/grizli/data//CONF
Get jwst-grism-conf.tar.gz
Get niriss.conf.220725.tar.gz
Get WFC3IR_extended_PSF.v1.tar.gz
Get PSFSTD_WFC3IR_F105W.fits


WARNING: VerifyWarning: Verification reported errors: [astropy.io.fits.verify]
WARNING:astropy:VerifyWarning: Verification reported errors:
WARNING: VerifyWarning: HDU 0: [astropy.io.fits.verify]
WARNING:astropy:VerifyWarning: HDU 0:
WARNING: VerifyWarning:     Card 10: [astropy.io.fits.verify]
WARNING:astropy:VerifyWarning:     Card 10:
WARNING: VerifyWarning:         Card keyword 'NXPSFs' is not upper case.  Fixed 'NXPSFS' card to meet the FITS standard. [astropy.io.fits.verify]
WARNING:astropy:VerifyWarning:         Card keyword 'NXPSFs' is not upper case.  Fixed 'NXPSFS' card to meet the FITS standard.
WARNING: VerifyWarning:     Card 11: [astropy.io.fits.verify]
WARNING:astropy:VerifyWarning:     Card 11:
WARNING: VerifyWarning:         Card keyword 'NYPSFs' is not upper case.  Fixed 'NYPSFS' card to meet the FITS standard. [astropy.io.fits.verify]
WARNING:astropy:VerifyWarning:         Card keyword 'NYPSFs' is not upper case.  Fixed 'NYPSFS' card to meet the FITS standard.
WARNING: VerifyWarning: Note: astropy.io.fits uses zero-based indexing.
 [astropy.io.fits.verify]
WARNING:astropy:VerifyWarning: Note: astropy.io.fits uses zero-based indexing.



Get PSFSTD_WFC3IR_F125W.fits
Get PSFSTD_WFC3IR_F140W.fits
Get PSFSTD_WFC3IR_F160W.fits
Get PSFSTD_WFC3IR_F110W.fits
Get PSFSTD_WFC3IR_F127M.fits


WARNING: VerifyWarning:     Card 12: [astropy.io.fits.verify]
WARNING:astropy:VerifyWarning:     Card 12:


Templates directory: /usr/local/lib/python3.11/dist-packages/grizli/data//templates
Get stars_pickles.npy
Get stars_bpgs.npy
ln -s stars_pickles.npy stars.npy
s3://grizli-v2/junk/fsps_line_templ.fits &gt; ./fsps_line_templ.fits
</code></pre></div></div>

<div class="language-python highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="c1"># GRISM_NIRCAM (N. Pirzkal) for NIRCam
</span><span class="k">if</span> <span class="mi">1</span><span class="p">:</span>
    <span class="n">prev</span> <span class="o">=</span> <span class="n">os</span><span class="p">.</span><span class="n">getcwd</span><span class="p">()</span>

    <span class="n">os</span><span class="p">.</span><span class="n">chdir</span><span class="p">(</span><span class="n">os</span><span class="p">.</span><span class="n">path</span><span class="p">.</span><span class="n">join</span><span class="p">(</span><span class="n">CONF_DIR</span><span class="p">,</span> <span class="s">'GRISM_NIRCAM'</span><span class="p">))</span>

    <span class="k">if</span> <span class="ow">not</span> <span class="n">os</span><span class="p">.</span><span class="n">path</span><span class="p">.</span><span class="n">exists</span><span class="p">(</span><span class="s">'V9'</span><span class="p">):</span>
        <span class="err">!</span> <span class="n">git</span> <span class="n">clone</span> <span class="n">https</span><span class="p">:</span><span class="o">//</span><span class="n">github</span><span class="p">.</span><span class="n">com</span><span class="o">/</span><span class="n">npirzkal</span><span class="o">/</span><span class="n">GRISM_NIRCAM</span><span class="p">.</span><span class="n">git</span> <span class="n">GRISM_NIRCAM_repo</span>
        <span class="err">!</span> <span class="n">ln</span> <span class="o">-</span><span class="n">s</span> <span class="n">GRISM_NIRCAM_repo</span><span class="o">/*</span> <span class="p">.</span><span class="o">/</span>
    <span class="k">else</span><span class="p">:</span>
        <span class="k">print</span><span class="p">(</span><span class="s">'GRISM_NIRCAM files found'</span><span class="p">)</span>

    <span class="n">os</span><span class="p">.</span><span class="n">chdir</span><span class="p">(</span><span class="n">prev</span><span class="p">)</span>
</code></pre></div></div>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>Cloning into 'GRISM_NIRCAM_repo'...
remote: Enumerating objects: 1491, done.
remote: Counting objects: 100% (353/353), done.
remote: Compressing objects: 100% (194/194), done.
remote: Total 1491 (delta 159), reused 353 (delta 159), pack-reused 1138 (from 1)
Receiving objects: 100% (1491/1491), 219.22 MiB | 2.69 MiB/s, done.
Resolving deltas: 100% (710/710), done.
Updating files: 100% (986/986), done.
</code></pre></div></div>

<div class="language-python highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kn">from</span> <span class="nn">grizli</span> <span class="kn">import</span> <span class="n">utils</span><span class="p">,</span> <span class="n">grismconf</span>
<span class="n">grismconf</span><span class="p">.</span><span class="n">download_jwst_crds_references</span><span class="p">()</span>
</code></pre></div></div>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>Use NIRCAM_CONF_VERSION = V9
ENV CRDS_CONTEXT = jwst_1322.pmap


CRDS - INFO -  Fetching  /tmp/crds_cache/mappings/jwst/jwst_system_datalvl_0002.rmap      694 bytes  (1 / 202 files) (0 / 722.8 K bytes)
CRDS - INFO -  Fetching  /tmp/crds_cache/mappings/jwst/jwst_system_calver_0046.rmap    5.2 K bytes  (2 / 202 files) (694 / 722.8 K bytes)
CRDS - INFO -  Fetching  /tmp/crds_cache/mappings/jwst/jwst_system_0045.imap          385 bytes  (3 / 202 files) (5.9 K / 722.8 K bytes)
CRDS - INFO -  Fetching  /tmp/crds_cache/mappings/jwst/jwst_nirspec_wavelengthrange_0024.rmap    1.4 K bytes  (4 / 202 files) (6.3 K / 722.8 K bytes)
CRDS - INFO -  Fetching  /tmp/crds_cache/mappings/jwst/jwst_nirspec_wavecorr_0005.rmap      884 bytes  (5 / 202 files) (7.7 K / 722.8 K bytes)
CRDS - INFO -  Fetching  /tmp/crds_cache/mappings/jwst/jwst_nirspec_superbias_0074.rmap   33.8 K bytes  (6 / 202 files) (8.5 K / 722.8 K bytes)
CRDS - INFO -  Fetching  /tmp/crds_cache/mappings/jwst/jwst_nirspec_sflat_0026.rmap   20.6 K bytes  (7 / 202 files) (42.3 K / 722.8 K bytes)
CRDS - INFO -  Fetching  /tmp/crds_cache/mappings/jwst/jwst_nirspec_saturation_0018.rmap    2.0 K bytes  (8 / 202 files) (62.9 K / 722.8 K bytes)
CRDS - INFO -  Fetching  /tmp/crds_cache/mappings/jwst/jwst_nirspec_refpix_0015.rmap    1.6 K bytes  (9 / 202 files) (64.9 K / 722.8 K bytes)
CRDS - INFO -  Fetching  /tmp/crds_cache/mappings/jwst/jwst_nirspec_readnoise_0025.rmap    2.6 K bytes  (10 / 202 files) (66.5 K / 722.8 K bytes)
CRDS - INFO -  Fetching  /tmp/crds_cache/mappings/jwst/jwst_nirspec_photom_0013.rmap      958 bytes  (11 / 202 files) (69.1 K / 722.8 K bytes)
CRDS - INFO -  Fetching  /tmp/crds_cache/mappings/jwst/jwst_nirspec_pathloss_0008.rmap    1.2 K bytes  (12 / 202 files) (70.0 K / 722.8 K bytes)
CRDS - INFO -  Fetching  /tmp/crds_cache/mappings/jwst/jwst_nirspec_pars-whitelightstep_0001.rmap      777 bytes  (13 / 202 files) (71.2 K / 722.8 K bytes)
CRDS - INFO -  Fetching  /tmp/crds_cache/mappings/jwst/jwst_nirspec_pars-spec2pipeline_0013.rmap    2.1 K bytes  (14 / 202 files) (72.0 K / 722.8 K bytes)
CRDS - INFO -  Fetching  /tmp/crds_cache/mappings/jwst/jwst_nirspec_pars-resamplespecstep_0002.rmap      709 bytes  (15 / 202 files) (74.1 K / 722.8 K bytes)
CRDS - INFO -  Fetching  /tmp/crds_cache/mappings/jwst/jwst_nirspec_pars-outlierdetectionstep_0005.rmap    1.1 K bytes  (16 / 202 files) (74.8 K / 722.8 K bytes)
CRDS - INFO -  Fetching  /tmp/crds_cache/mappings/jwst/jwst_nirspec_pars-jumpstep_0005.rmap      810 bytes  (17 / 202 files) (76.0 K / 722.8 K bytes)
CRDS - INFO -  Fetching  /tmp/crds_cache/mappings/jwst/jwst_nirspec_pars-image2pipeline_0008.rmap    1.0 K bytes  (18 / 202 files) (76.8 K / 722.8 K bytes)
CRDS - INFO -  Fetching  /tmp/crds_cache/mappings/jwst/jwst_nirspec_pars-detector1pipeline_0003.rmap    1.1 K bytes  (19 / 202 files) (77.8 K / 722.8 K bytes)
CRDS - INFO -  Fetching  /tmp/crds_cache/mappings/jwst/jwst_nirspec_pars-darkpipeline_0003.rmap      872 bytes  (20 / 202 files) (78.8 K / 722.8 K bytes)
CRDS - INFO -  Fetching  /tmp/crds_cache/mappings/jwst/jwst_nirspec_pars-darkcurrentstep_0001.rmap      622 bytes  (21 / 202 files) (79.7 K / 722.8 K bytes)
CRDS - INFO -  Fetching  /tmp/crds_cache/mappings/jwst/jwst_nirspec_ote_0030.rmap    1.3 K bytes  (22 / 202 files) (80.3 K / 722.8 K bytes)
CRDS - INFO -  Fetching  /tmp/crds_cache/mappings/jwst/jwst_nirspec_msaoper_0016.rmap    1.5 K bytes  (23 / 202 files) (81.6 K / 722.8 K bytes)
CRDS - INFO -  Fetching  /tmp/crds_cache/mappings/jwst/jwst_nirspec_msa_0027.rmap    1.3 K bytes  (24 / 202 files) (83.1 K / 722.8 K bytes)
CRDS - INFO -  Fetching  /tmp/crds_cache/mappings/jwst/jwst_nirspec_mask_0039.rmap    2.7 K bytes  (25 / 202 files) (84.3 K / 722.8 K bytes)
CRDS - INFO -  Fetching  /tmp/crds_cache/mappings/jwst/jwst_nirspec_linearity_0017.rmap    1.6 K bytes  (26 / 202 files) (87.0 K / 722.8 K bytes)
CRDS - INFO -  Fetching  /tmp/crds_cache/mappings/jwst/jwst_nirspec_ipc_0006.rmap      876 bytes  (27 / 202 files) (88.6 K / 722.8 K bytes)
CRDS - INFO -  Fetching  /tmp/crds_cache/mappings/jwst/jwst_nirspec_ifuslicer_0017.rmap    1.5 K bytes  (28 / 202 files) (89.5 K / 722.8 K bytes)
CRDS - INFO -  Fetching  /tmp/crds_cache/mappings/jwst/jwst_nirspec_ifupost_0019.rmap    1.5 K bytes  (29 / 202 files) (91.0 K / 722.8 K bytes)
CRDS - INFO -  Fetching  /tmp/crds_cache/mappings/jwst/jwst_nirspec_ifufore_0017.rmap    1.5 K bytes  (30 / 202 files) (92.5 K / 722.8 K bytes)
CRDS - INFO -  Fetching  /tmp/crds_cache/mappings/jwst/jwst_nirspec_gain_0023.rmap    1.8 K bytes  (31 / 202 files) (94.0 K / 722.8 K bytes)
CRDS - INFO -  Fetching  /tmp/crds_cache/mappings/jwst/jwst_nirspec_fpa_0028.rmap    1.3 K bytes  (32 / 202 files) (95.7 K / 722.8 K bytes)
CRDS - INFO -  Fetching  /tmp/crds_cache/mappings/jwst/jwst_nirspec_fore_0026.rmap    5.0 K bytes  (33 / 202 files) (97.0 K / 722.8 K bytes)
CRDS - INFO -  Fetching  /tmp/crds_cache/mappings/jwst/jwst_nirspec_flat_0015.rmap    3.8 K bytes  (34 / 202 files) (102.0 K / 722.8 K bytes)
CRDS - INFO -  Fetching  /tmp/crds_cache/mappings/jwst/jwst_nirspec_fflat_0026.rmap    7.2 K bytes  (35 / 202 files) (105.8 K / 722.8 K bytes)
CRDS - INFO -  Fetching  /tmp/crds_cache/mappings/jwst/jwst_nirspec_extract1d_0018.rmap    2.3 K bytes  (36 / 202 files) (113.0 K / 722.8 K bytes)
CRDS - INFO -  Fetching  /tmp/crds_cache/mappings/jwst/jwst_nirspec_disperser_0028.rmap    5.7 K bytes  (37 / 202 files) (115.3 K / 722.8 K bytes)
CRDS - INFO -  Fetching  /tmp/crds_cache/mappings/jwst/jwst_nirspec_dflat_0007.rmap    1.1 K bytes  (38 / 202 files) (121.0 K / 722.8 K bytes)
CRDS - INFO -  Fetching  /tmp/crds_cache/mappings/jwst/jwst_nirspec_dark_0069.rmap   32.6 K bytes  (39 / 202 files) (122.1 K / 722.8 K bytes)
CRDS - INFO -  Fetching  /tmp/crds_cache/mappings/jwst/jwst_nirspec_cubepar_0015.rmap      966 bytes  (40 / 202 files) (154.7 K / 722.8 K bytes)
CRDS - INFO -  Fetching  /tmp/crds_cache/mappings/jwst/jwst_nirspec_collimator_0026.rmap    1.3 K bytes  (41 / 202 files) (155.7 K / 722.8 K bytes)
CRDS - INFO -  Fetching  /tmp/crds_cache/mappings/jwst/jwst_nirspec_camera_0026.rmap    1.3 K bytes  (42 / 202 files) (157.0 K / 722.8 K bytes)
CRDS - INFO -  Fetching  /tmp/crds_cache/mappings/jwst/jwst_nirspec_barshadow_0007.rmap    1.8 K bytes  (43 / 202 files) (158.3 K / 722.8 K bytes)
CRDS - INFO -  Fetching  /tmp/crds_cache/mappings/jwst/jwst_nirspec_area_0018.rmap    6.3 K bytes  (44 / 202 files) (160.1 K / 722.8 K bytes)
CRDS - INFO -  Fetching  /tmp/crds_cache/mappings/jwst/jwst_nirspec_apcorr_0009.rmap    5.6 K bytes  (45 / 202 files) (166.4 K / 722.8 K bytes)
CRDS - INFO -  Fetching  /tmp/crds_cache/mappings/jwst/jwst_nirspec_0387.imap       5.7 K bytes  (46 / 202 files) (171.9 K / 722.8 K bytes)
CRDS - INFO -  Fetching  /tmp/crds_cache/mappings/jwst/jwst_niriss_wfssbkg_0008.rmap    3.1 K bytes  (47 / 202 files) (177.7 K / 722.8 K bytes)
CRDS - INFO -  Fetching  /tmp/crds_cache/mappings/jwst/jwst_niriss_wavemap_0008.rmap    2.2 K bytes  (48 / 202 files) (180.8 K / 722.8 K bytes)
CRDS - INFO -  Fetching  /tmp/crds_cache/mappings/jwst/jwst_niriss_wavelengthrange_0006.rmap      862 bytes  (49 / 202 files) (183.0 K / 722.8 K bytes)
CRDS - INFO -  Fetching  /tmp/crds_cache/mappings/jwst/jwst_niriss_trappars_0004.rmap      753 bytes  (50 / 202 files) (183.9 K / 722.8 K bytes)
CRDS - INFO -  Fetching  /tmp/crds_cache/mappings/jwst/jwst_niriss_trapdensity_0005.rmap      705 bytes  (51 / 202 files) (184.6 K / 722.8 K bytes)
CRDS - INFO -  Fetching  /tmp/crds_cache/mappings/jwst/jwst_niriss_throughput_0005.rmap    1.3 K bytes  (52 / 202 files) (185.3 K / 722.8 K bytes)
CRDS - INFO -  Fetching  /tmp/crds_cache/mappings/jwst/jwst_niriss_superbias_0030.rmap    7.4 K bytes  (53 / 202 files) (186.6 K / 722.8 K bytes)
CRDS - INFO -  Fetching  /tmp/crds_cache/mappings/jwst/jwst_niriss_specwcs_0014.rmap    3.1 K bytes  (54 / 202 files) (194.0 K / 722.8 K bytes)
CRDS - INFO -  Fetching  /tmp/crds_cache/mappings/jwst/jwst_niriss_spectrace_0008.rmap    2.3 K bytes  (55 / 202 files) (197.1 K / 722.8 K bytes)
CRDS - INFO -  Fetching  /tmp/crds_cache/mappings/jwst/jwst_niriss_specprofile_0008.rmap    2.4 K bytes  (56 / 202 files) (199.5 K / 722.8 K bytes)
CRDS - INFO -  Fetching  /tmp/crds_cache/mappings/jwst/jwst_niriss_speckernel_0006.rmap    1.0 K bytes  (57 / 202 files) (201.8 K / 722.8 K bytes)
CRDS - INFO -  Fetching  /tmp/crds_cache/mappings/jwst/jwst_niriss_saturation_0015.rmap      829 bytes  (58 / 202 files) (202.9 K / 722.8 K bytes)
CRDS - INFO -  Fetching  /tmp/crds_cache/mappings/jwst/jwst_niriss_readnoise_0011.rmap      987 bytes  (59 / 202 files) (203.7 K / 722.8 K bytes)
CRDS - INFO -  Fetching  /tmp/crds_cache/mappings/jwst/jwst_niriss_photom_0036.rmap    1.3 K bytes  (60 / 202 files) (204.7 K / 722.8 K bytes)
CRDS - INFO -  Fetching  /tmp/crds_cache/mappings/jwst/jwst_niriss_persat_0007.rmap      674 bytes  (61 / 202 files) (205.9 K / 722.8 K bytes)
CRDS - INFO -  Fetching  /tmp/crds_cache/mappings/jwst/jwst_niriss_pathloss_0003.rmap      758 bytes  (62 / 202 files) (206.6 K / 722.8 K bytes)
CRDS - INFO -  Fetching  /tmp/crds_cache/mappings/jwst/jwst_niriss_pastasoss_0004.rmap      818 bytes  (63 / 202 files) (207.4 K / 722.8 K bytes)
CRDS - INFO -  Fetching  /tmp/crds_cache/mappings/jwst/jwst_niriss_pars-undersamplecorrectionstep_0001.rmap      904 bytes  (64 / 202 files) (208.2 K / 722.8 K bytes)
CRDS - INFO -  Fetching  /tmp/crds_cache/mappings/jwst/jwst_niriss_pars-tweakregstep_0012.rmap    3.1 K bytes  (65 / 202 files) (209.1 K / 722.8 K bytes)
CRDS - INFO -  Fetching  /tmp/crds_cache/mappings/jwst/jwst_niriss_pars-spec2pipeline_0008.rmap      984 bytes  (66 / 202 files) (212.2 K / 722.8 K bytes)
CRDS - INFO -  Fetching  /tmp/crds_cache/mappings/jwst/jwst_niriss_pars-sourcecatalogstep_0002.rmap    2.3 K bytes  (67 / 202 files) (213.2 K / 722.8 K bytes)
CRDS - INFO -  Fetching  /tmp/crds_cache/mappings/jwst/jwst_niriss_pars-resamplestep_0002.rmap      687 bytes  (68 / 202 files) (215.5 K / 722.8 K bytes)
CRDS - INFO -  Fetching  /tmp/crds_cache/mappings/jwst/jwst_niriss_pars-outlierdetectionstep_0004.rmap    2.7 K bytes  (69 / 202 files) (216.2 K / 722.8 K bytes)
CRDS - INFO -  Fetching  /tmp/crds_cache/mappings/jwst/jwst_niriss_pars-jumpstep_0007.rmap    6.4 K bytes  (70 / 202 files) (218.9 K / 722.8 K bytes)
CRDS - INFO -  Fetching  /tmp/crds_cache/mappings/jwst/jwst_niriss_pars-image2pipeline_0005.rmap    1.0 K bytes  (71 / 202 files) (225.2 K / 722.8 K bytes)
CRDS - INFO -  Fetching  /tmp/crds_cache/mappings/jwst/jwst_niriss_pars-detector1pipeline_0002.rmap    1.0 K bytes  (72 / 202 files) (226.3 K / 722.8 K bytes)
CRDS - INFO -  Fetching  /tmp/crds_cache/mappings/jwst/jwst_niriss_pars-darkpipeline_0002.rmap      868 bytes  (73 / 202 files) (227.3 K / 722.8 K bytes)
CRDS - INFO -  Fetching  /tmp/crds_cache/mappings/jwst/jwst_niriss_pars-darkcurrentstep_0001.rmap      591 bytes  (74 / 202 files) (228.2 K / 722.8 K bytes)
CRDS - INFO -  Fetching  /tmp/crds_cache/mappings/jwst/jwst_niriss_pars-chargemigrationstep_0004.rmap    5.7 K bytes  (75 / 202 files) (228.8 K / 722.8 K bytes)
CRDS - INFO -  Fetching  /tmp/crds_cache/mappings/jwst/jwst_niriss_nrm_0005.rmap      663 bytes  (76 / 202 files) (234.4 K / 722.8 K bytes)
CRDS - INFO -  Fetching  /tmp/crds_cache/mappings/jwst/jwst_niriss_mask_0022.rmap    1.3 K bytes  (77 / 202 files) (235.1 K / 722.8 K bytes)
CRDS - INFO -  Fetching  /tmp/crds_cache/mappings/jwst/jwst_niriss_linearity_0022.rmap      961 bytes  (78 / 202 files) (236.4 K / 722.8 K bytes)
CRDS - INFO -  Fetching  /tmp/crds_cache/mappings/jwst/jwst_niriss_ipc_0007.rmap      651 bytes  (79 / 202 files) (237.3 K / 722.8 K bytes)
CRDS - INFO -  Fetching  /tmp/crds_cache/mappings/jwst/jwst_niriss_gain_0011.rmap      797 bytes  (80 / 202 files) (238.0 K / 722.8 K bytes)
CRDS - INFO -  Fetching  /tmp/crds_cache/mappings/jwst/jwst_niriss_flat_0023.rmap    5.9 K bytes  (81 / 202 files) (238.8 K / 722.8 K bytes)
CRDS - INFO -  Fetching  /tmp/crds_cache/mappings/jwst/jwst_niriss_filteroffset_0010.rmap      853 bytes  (82 / 202 files) (244.6 K / 722.8 K bytes)
CRDS - INFO -  Fetching  /tmp/crds_cache/mappings/jwst/jwst_niriss_extract1d_0007.rmap      905 bytes  (83 / 202 files) (245.5 K / 722.8 K bytes)
CRDS - INFO -  Fetching  /tmp/crds_cache/mappings/jwst/jwst_niriss_drizpars_0004.rmap      519 bytes  (84 / 202 files) (246.4 K / 722.8 K bytes)
CRDS - INFO -  Fetching  /tmp/crds_cache/mappings/jwst/jwst_niriss_distortion_0025.rmap    3.4 K bytes  (85 / 202 files) (246.9 K / 722.8 K bytes)
CRDS - INFO -  Fetching  /tmp/crds_cache/mappings/jwst/jwst_niriss_dark_0034.rmap    7.5 K bytes  (86 / 202 files) (250.4 K / 722.8 K bytes)
CRDS - INFO -  Fetching  /tmp/crds_cache/mappings/jwst/jwst_niriss_area_0014.rmap    2.7 K bytes  (87 / 202 files) (257.9 K / 722.8 K bytes)
CRDS - INFO -  Fetching  /tmp/crds_cache/mappings/jwst/jwst_niriss_apcorr_0010.rmap    4.3 K bytes  (88 / 202 files) (260.6 K / 722.8 K bytes)
CRDS - INFO -  Fetching  /tmp/crds_cache/mappings/jwst/jwst_niriss_abvegaoffset_0004.rmap    1.4 K bytes  (89 / 202 files) (264.9 K / 722.8 K bytes)
CRDS - INFO -  Fetching  /tmp/crds_cache/mappings/jwst/jwst_niriss_0267.imap        5.8 K bytes  (90 / 202 files) (266.2 K / 722.8 K bytes)
CRDS - INFO -  Fetching  /tmp/crds_cache/mappings/jwst/jwst_nircam_wfssbkg_0004.rmap    7.2 K bytes  (91 / 202 files) (272.0 K / 722.8 K bytes)
CRDS - INFO -  Fetching  /tmp/crds_cache/mappings/jwst/jwst_nircam_wavelengthrange_0010.rmap      996 bytes  (92 / 202 files) (279.2 K / 722.8 K bytes)
CRDS - INFO -  Fetching  /tmp/crds_cache/mappings/jwst/jwst_nircam_tsophot_0003.rmap      896 bytes  (93 / 202 files) (280.2 K / 722.8 K bytes)
CRDS - INFO -  Fetching  /tmp/crds_cache/mappings/jwst/jwst_nircam_trappars_0003.rmap    1.6 K bytes  (94 / 202 files) (281.1 K / 722.8 K bytes)
CRDS - INFO -  Fetching  /tmp/crds_cache/mappings/jwst/jwst_nircam_trapdensity_0003.rmap    1.6 K bytes  (95 / 202 files) (282.7 K / 722.8 K bytes)
CRDS - INFO -  Fetching  /tmp/crds_cache/mappings/jwst/jwst_nircam_superbias_0018.rmap   16.2 K bytes  (96 / 202 files) (284.4 K / 722.8 K bytes)
CRDS - INFO -  Fetching  /tmp/crds_cache/mappings/jwst/jwst_nircam_specwcs_0022.rmap    7.1 K bytes  (97 / 202 files) (300.5 K / 722.8 K bytes)
CRDS - INFO -  Fetching  /tmp/crds_cache/mappings/jwst/jwst_nircam_sirskernel_0002.rmap      671 bytes  (98 / 202 files) (307.7 K / 722.8 K bytes)
CRDS - INFO -  Fetching  /tmp/crds_cache/mappings/jwst/jwst_nircam_saturation_0010.rmap    2.2 K bytes  (99 / 202 files) (308.3 K / 722.8 K bytes)
CRDS - INFO -  Fetching  /tmp/crds_cache/mappings/jwst/jwst_nircam_readnoise_0025.rmap   23.2 K bytes  (100 / 202 files) (310.5 K / 722.8 K bytes)
CRDS - INFO -  Fetching  /tmp/crds_cache/mappings/jwst/jwst_nircam_psfmask_0008.rmap   28.4 K bytes  (101 / 202 files) (333.7 K / 722.8 K bytes)
CRDS - INFO -  Fetching  /tmp/crds_cache/mappings/jwst/jwst_nircam_photom_0028.rmap    3.4 K bytes  (102 / 202 files) (362.0 K / 722.8 K bytes)
CRDS - INFO -  Fetching  /tmp/crds_cache/mappings/jwst/jwst_nircam_persat_0005.rmap    1.6 K bytes  (103 / 202 files) (365.4 K / 722.8 K bytes)
CRDS - INFO -  Fetching  /tmp/crds_cache/mappings/jwst/jwst_nircam_pars-whitelightstep_0003.rmap    1.5 K bytes  (104 / 202 files) (367.0 K / 722.8 K bytes)
CRDS - INFO -  Fetching  /tmp/crds_cache/mappings/jwst/jwst_nircam_pars-tweakregstep_0003.rmap    4.5 K bytes  (105 / 202 files) (368.4 K / 722.8 K bytes)
CRDS - INFO -  Fetching  /tmp/crds_cache/mappings/jwst/jwst_nircam_pars-spec2pipeline_0008.rmap      984 bytes  (106 / 202 files) (372.9 K / 722.8 K bytes)
CRDS - INFO -  Fetching  /tmp/crds_cache/mappings/jwst/jwst_nircam_pars-sourcecatalogstep_0002.rmap    4.6 K bytes  (107 / 202 files) (373.9 K / 722.8 K bytes)
CRDS - INFO -  Fetching  /tmp/crds_cache/mappings/jwst/jwst_nircam_pars-resamplestep_0002.rmap      687 bytes  (108 / 202 files) (378.5 K / 722.8 K bytes)
CRDS - INFO -  Fetching  /tmp/crds_cache/mappings/jwst/jwst_nircam_pars-outlierdetectionstep_0003.rmap      940 bytes  (109 / 202 files) (379.2 K / 722.8 K bytes)
CRDS - INFO -  Fetching  /tmp/crds_cache/mappings/jwst/jwst_nircam_pars-jumpstep_0005.rmap      806 bytes  (110 / 202 files) (380.2 K / 722.8 K bytes)
CRDS - INFO -  Fetching  /tmp/crds_cache/mappings/jwst/jwst_nircam_pars-image2pipeline_0003.rmap    1.0 K bytes  (111 / 202 files) (381.0 K / 722.8 K bytes)
CRDS - INFO -  Fetching  /tmp/crds_cache/mappings/jwst/jwst_nircam_pars-detector1pipeline_0003.rmap    1.0 K bytes  (112 / 202 files) (382.0 K / 722.8 K bytes)
CRDS - INFO -  Fetching  /tmp/crds_cache/mappings/jwst/jwst_nircam_pars-darkpipeline_0002.rmap      868 bytes  (113 / 202 files) (383.0 K / 722.8 K bytes)
CRDS - INFO -  Fetching  /tmp/crds_cache/mappings/jwst/jwst_nircam_pars-darkcurrentstep_0001.rmap      618 bytes  (114 / 202 files) (383.9 K / 722.8 K bytes)
CRDS - INFO -  Fetching  /tmp/crds_cache/mappings/jwst/jwst_nircam_mask_0011.rmap    3.5 K bytes  (115 / 202 files) (384.5 K / 722.8 K bytes)
CRDS - INFO -  Fetching  /tmp/crds_cache/mappings/jwst/jwst_nircam_linearity_0011.rmap    2.4 K bytes  (116 / 202 files) (388.0 K / 722.8 K bytes)
CRDS - INFO -  Fetching  /tmp/crds_cache/mappings/jwst/jwst_nircam_ipc_0003.rmap    2.0 K bytes  (117 / 202 files) (390.4 K / 722.8 K bytes)
CRDS - INFO -  Fetching  /tmp/crds_cache/mappings/jwst/jwst_nircam_gain_0016.rmap    2.1 K bytes  (118 / 202 files) (392.4 K / 722.8 K bytes)
CRDS - INFO -  Fetching  /tmp/crds_cache/mappings/jwst/jwst_nircam_flat_0027.rmap   51.7 K bytes  (119 / 202 files) (394.5 K / 722.8 K bytes)
CRDS - INFO -  Fetching  /tmp/crds_cache/mappings/jwst/jwst_nircam_filteroffset_0004.rmap    1.4 K bytes  (120 / 202 files) (446.2 K / 722.8 K bytes)
CRDS - INFO -  Fetching  /tmp/crds_cache/mappings/jwst/jwst_nircam_extract1d_0004.rmap      842 bytes  (121 / 202 files) (447.6 K / 722.8 K bytes)
CRDS - INFO -  Fetching  /tmp/crds_cache/mappings/jwst/jwst_nircam_drizpars_0001.rmap      519 bytes  (122 / 202 files) (448.5 K / 722.8 K bytes)
CRDS - INFO -  Fetching  /tmp/crds_cache/mappings/jwst/jwst_nircam_distortion_0033.rmap   53.4 K bytes  (123 / 202 files) (449.0 K / 722.8 K bytes)
CRDS - INFO -  Fetching  /tmp/crds_cache/mappings/jwst/jwst_nircam_dark_0046.rmap   26.4 K bytes  (124 / 202 files) (502.3 K / 722.8 K bytes)
CRDS - INFO -  Fetching  /tmp/crds_cache/mappings/jwst/jwst_nircam_area_0012.rmap   33.5 K bytes  (125 / 202 files) (528.7 K / 722.8 K bytes)
CRDS - INFO -  Fetching  /tmp/crds_cache/mappings/jwst/jwst_nircam_apcorr_0008.rmap    4.3 K bytes  (126 / 202 files) (562.2 K / 722.8 K bytes)
CRDS - INFO -  Fetching  /tmp/crds_cache/mappings/jwst/jwst_nircam_abvegaoffset_0003.rmap    1.3 K bytes  (127 / 202 files) (566.5 K / 722.8 K bytes)
CRDS - INFO -  Fetching  /tmp/crds_cache/mappings/jwst/jwst_nircam_0301.imap        5.6 K bytes  (128 / 202 files) (567.8 K / 722.8 K bytes)
CRDS - INFO -  Fetching  /tmp/crds_cache/mappings/jwst/jwst_miri_wavelengthrange_0027.rmap      929 bytes  (129 / 202 files) (573.4 K / 722.8 K bytes)
CRDS - INFO -  Fetching  /tmp/crds_cache/mappings/jwst/jwst_miri_tsophot_0004.rmap      882 bytes  (130 / 202 files) (574.3 K / 722.8 K bytes)
CRDS - INFO -  Fetching  /tmp/crds_cache/mappings/jwst/jwst_miri_straymask_0009.rmap      987 bytes  (131 / 202 files) (575.2 K / 722.8 K bytes)
CRDS - INFO -  Fetching  /tmp/crds_cache/mappings/jwst/jwst_miri_specwcs_0042.rmap    5.8 K bytes  (132 / 202 files) (576.2 K / 722.8 K bytes)
CRDS - INFO -  Fetching  /tmp/crds_cache/mappings/jwst/jwst_miri_saturation_0015.rmap    1.2 K bytes  (133 / 202 files) (582.0 K / 722.8 K bytes)
CRDS - INFO -  Fetching  /tmp/crds_cache/mappings/jwst/jwst_miri_rscd_0008.rmap     1.0 K bytes  (134 / 202 files) (583.1 K / 722.8 K bytes)
CRDS - INFO -  Fetching  /tmp/crds_cache/mappings/jwst/jwst_miri_resol_0006.rmap      790 bytes  (135 / 202 files) (584.2 K / 722.8 K bytes)
CRDS - INFO -  Fetching  /tmp/crds_cache/mappings/jwst/jwst_miri_reset_0026.rmap    3.9 K bytes  (136 / 202 files) (585.0 K / 722.8 K bytes)
CRDS - INFO -  Fetching  /tmp/crds_cache/mappings/jwst/jwst_miri_regions_0033.rmap    5.2 K bytes  (137 / 202 files) (588.8 K / 722.8 K bytes)
CRDS - INFO -  Fetching  /tmp/crds_cache/mappings/jwst/jwst_miri_readnoise_0023.rmap    1.6 K bytes  (138 / 202 files) (594.0 K / 722.8 K bytes)
CRDS - INFO -  Fetching  /tmp/crds_cache/mappings/jwst/jwst_miri_psfmask_0009.rmap    2.1 K bytes  (139 / 202 files) (595.7 K / 722.8 K bytes)
CRDS - INFO -  Fetching  /tmp/crds_cache/mappings/jwst/jwst_miri_psf_0002.rmap        753 bytes  (140 / 202 files) (597.8 K / 722.8 K bytes)
CRDS - INFO -  Fetching  /tmp/crds_cache/mappings/jwst/jwst_miri_photom_0056.rmap    3.7 K bytes  (141 / 202 files) (598.5 K / 722.8 K bytes)
CRDS - INFO -  Fetching  /tmp/crds_cache/mappings/jwst/jwst_miri_pathloss_0005.rmap      866 bytes  (142 / 202 files) (602.3 K / 722.8 K bytes)
CRDS - INFO -  Fetching  /tmp/crds_cache/mappings/jwst/jwst_miri_pars-whitelightstep_0003.rmap      912 bytes  (143 / 202 files) (603.2 K / 722.8 K bytes)
CRDS - INFO -  Fetching  /tmp/crds_cache/mappings/jwst/jwst_miri_pars-tweakregstep_0003.rmap    1.8 K bytes  (144 / 202 files) (604.1 K / 722.8 K bytes)
CRDS - INFO -  Fetching  /tmp/crds_cache/mappings/jwst/jwst_miri_pars-spec3pipeline_0009.rmap      816 bytes  (145 / 202 files) (605.9 K / 722.8 K bytes)
CRDS - INFO -  Fetching  /tmp/crds_cache/mappings/jwst/jwst_miri_pars-spec2pipeline_0012.rmap    1.3 K bytes  (146 / 202 files) (606.7 K / 722.8 K bytes)
CRDS - INFO -  Fetching  /tmp/crds_cache/mappings/jwst/jwst_miri_pars-sourcecatalogstep_0003.rmap    1.9 K bytes  (147 / 202 files) (608.0 K / 722.8 K bytes)
CRDS - INFO -  Fetching  /tmp/crds_cache/mappings/jwst/jwst_miri_pars-resamplestep_0002.rmap      677 bytes  (148 / 202 files) (610.0 K / 722.8 K bytes)
CRDS - INFO -  Fetching  /tmp/crds_cache/mappings/jwst/jwst_miri_pars-resamplespecstep_0002.rmap      706 bytes  (149 / 202 files) (610.6 K / 722.8 K bytes)
CRDS - INFO -  Fetching  /tmp/crds_cache/mappings/jwst/jwst_miri_pars-outlierdetectionstep_0017.rmap    3.4 K bytes  (150 / 202 files) (611.3 K / 722.8 K bytes)
CRDS - INFO -  Fetching  /tmp/crds_cache/mappings/jwst/jwst_miri_pars-jumpstep_0011.rmap    1.6 K bytes  (151 / 202 files) (614.7 K / 722.8 K bytes)
CRDS - INFO -  Fetching  /tmp/crds_cache/mappings/jwst/jwst_miri_pars-image2pipeline_0007.rmap      983 bytes  (152 / 202 files) (616.3 K / 722.8 K bytes)
CRDS - INFO -  Fetching  /tmp/crds_cache/mappings/jwst/jwst_miri_pars-extract1dstep_0003.rmap      807 bytes  (153 / 202 files) (617.3 K / 722.8 K bytes)
CRDS - INFO -  Fetching  /tmp/crds_cache/mappings/jwst/jwst_miri_pars-emicorrstep_0003.rmap      796 bytes  (154 / 202 files) (618.1 K / 722.8 K bytes)
CRDS - INFO -  Fetching  /tmp/crds_cache/mappings/jwst/jwst_miri_pars-detector1pipeline_0010.rmap    1.6 K bytes  (155 / 202 files) (618.9 K / 722.8 K bytes)
CRDS - INFO -  Fetching  /tmp/crds_cache/mappings/jwst/jwst_miri_pars-darkpipeline_0002.rmap      860 bytes  (156 / 202 files) (620.5 K / 722.8 K bytes)
CRDS - INFO -  Fetching  /tmp/crds_cache/mappings/jwst/jwst_miri_pars-darkcurrentstep_0002.rmap      683 bytes  (157 / 202 files) (621.3 K / 722.8 K bytes)
CRDS - INFO -  Fetching  /tmp/crds_cache/mappings/jwst/jwst_miri_mrsxartcorr_0002.rmap    2.2 K bytes  (158 / 202 files) (622.0 K / 722.8 K bytes)
CRDS - INFO -  Fetching  /tmp/crds_cache/mappings/jwst/jwst_miri_mrsptcorr_0005.rmap    2.0 K bytes  (159 / 202 files) (624.1 K / 722.8 K bytes)
CRDS - INFO -  Fetching  /tmp/crds_cache/mappings/jwst/jwst_miri_mask_0023.rmap     3.5 K bytes  (160 / 202 files) (626.1 K / 722.8 K bytes)
CRDS - INFO -  Fetching  /tmp/crds_cache/mappings/jwst/jwst_miri_linearity_0018.rmap    2.8 K bytes  (161 / 202 files) (629.6 K / 722.8 K bytes)
CRDS - INFO -  Fetching  /tmp/crds_cache/mappings/jwst/jwst_miri_ipc_0008.rmap        700 bytes  (162 / 202 files) (632.4 K / 722.8 K bytes)
CRDS - INFO -  Fetching  /tmp/crds_cache/mappings/jwst/jwst_miri_gain_0013.rmap     3.9 K bytes  (163 / 202 files) (633.1 K / 722.8 K bytes)
CRDS - INFO -  Fetching  /tmp/crds_cache/mappings/jwst/jwst_miri_fringefreq_0003.rmap    1.4 K bytes  (164 / 202 files) (637.0 K / 722.8 K bytes)
CRDS - INFO -  Fetching  /tmp/crds_cache/mappings/jwst/jwst_miri_fringe_0019.rmap    3.9 K bytes  (165 / 202 files) (638.5 K / 722.8 K bytes)
CRDS - INFO -  Fetching  /tmp/crds_cache/mappings/jwst/jwst_miri_flat_0065.rmap    15.5 K bytes  (166 / 202 files) (642.4 K / 722.8 K bytes)
CRDS - INFO -  Fetching  /tmp/crds_cache/mappings/jwst/jwst_miri_filteroffset_0025.rmap    2.5 K bytes  (167 / 202 files) (657.9 K / 722.8 K bytes)
CRDS - INFO -  Fetching  /tmp/crds_cache/mappings/jwst/jwst_miri_extract1d_0020.rmap    1.4 K bytes  (168 / 202 files) (660.4 K / 722.8 K bytes)
CRDS - INFO -  Fetching  /tmp/crds_cache/mappings/jwst/jwst_miri_emicorr_0003.rmap      663 bytes  (169 / 202 files) (661.7 K / 722.8 K bytes)
CRDS - INFO -  Fetching  /tmp/crds_cache/mappings/jwst/jwst_miri_drizpars_0002.rmap      511 bytes  (170 / 202 files) (662.4 K / 722.8 K bytes)
CRDS - INFO -  Fetching  /tmp/crds_cache/mappings/jwst/jwst_miri_distortion_0040.rmap    4.9 K bytes  (171 / 202 files) (662.9 K / 722.8 K bytes)
CRDS - INFO -  Fetching  /tmp/crds_cache/mappings/jwst/jwst_miri_dark_0036.rmap     4.4 K bytes  (172 / 202 files) (667.8 K / 722.8 K bytes)
CRDS - INFO -  Fetching  /tmp/crds_cache/mappings/jwst/jwst_miri_cubepar_0017.rmap      800 bytes  (173 / 202 files) (672.2 K / 722.8 K bytes)
CRDS - INFO -  Fetching  /tmp/crds_cache/mappings/jwst/jwst_miri_area_0015.rmap       866 bytes  (174 / 202 files) (673.0 K / 722.8 K bytes)
CRDS - INFO -  Fetching  /tmp/crds_cache/mappings/jwst/jwst_miri_apcorr_0019.rmap    5.0 K bytes  (175 / 202 files) (673.8 K / 722.8 K bytes)
CRDS - INFO -  Fetching  /tmp/crds_cache/mappings/jwst/jwst_miri_abvegaoffset_0003.rmap    1.3 K bytes  (176 / 202 files) (678.8 K / 722.8 K bytes)
CRDS - INFO -  Fetching  /tmp/crds_cache/mappings/jwst/jwst_miri_0423.imap          5.8 K bytes  (177 / 202 files) (680.1 K / 722.8 K bytes)
CRDS - INFO -  Fetching  /tmp/crds_cache/mappings/jwst/jwst_fgs_trappars_0004.rmap      903 bytes  (178 / 202 files) (685.9 K / 722.8 K bytes)
CRDS - INFO -  Fetching  /tmp/crds_cache/mappings/jwst/jwst_fgs_trapdensity_0006.rmap      930 bytes  (179 / 202 files) (686.8 K / 722.8 K bytes)
CRDS - INFO -  Fetching  /tmp/crds_cache/mappings/jwst/jwst_fgs_superbias_0017.rmap    3.8 K bytes  (180 / 202 files) (687.8 K / 722.8 K bytes)
CRDS - INFO -  Fetching  /tmp/crds_cache/mappings/jwst/jwst_fgs_saturation_0009.rmap      779 bytes  (181 / 202 files) (691.5 K / 722.8 K bytes)
CRDS - INFO -  Fetching  /tmp/crds_cache/mappings/jwst/jwst_fgs_readnoise_0011.rmap    1.3 K bytes  (182 / 202 files) (692.3 K / 722.8 K bytes)
CRDS - INFO -  Fetching  /tmp/crds_cache/mappings/jwst/jwst_fgs_photom_0014.rmap    1.1 K bytes  (183 / 202 files) (693.6 K / 722.8 K bytes)
CRDS - INFO -  Fetching  /tmp/crds_cache/mappings/jwst/jwst_fgs_persat_0006.rmap      884 bytes  (184 / 202 files) (694.7 K / 722.8 K bytes)
CRDS - INFO -  Fetching  /tmp/crds_cache/mappings/jwst/jwst_fgs_pars-tweakregstep_0002.rmap      850 bytes  (185 / 202 files) (695.6 K / 722.8 K bytes)
CRDS - INFO -  Fetching  /tmp/crds_cache/mappings/jwst/jwst_fgs_pars-sourcecatalogstep_0001.rmap      636 bytes  (186 / 202 files) (696.4 K / 722.8 K bytes)
CRDS - INFO -  Fetching  /tmp/crds_cache/mappings/jwst/jwst_fgs_pars-outlierdetectionstep_0001.rmap      654 bytes  (187 / 202 files) (697.1 K / 722.8 K bytes)
CRDS - INFO -  Fetching  /tmp/crds_cache/mappings/jwst/jwst_fgs_pars-image2pipeline_0005.rmap      974 bytes  (188 / 202 files) (697.7 K / 722.8 K bytes)
CRDS - INFO -  Fetching  /tmp/crds_cache/mappings/jwst/jwst_fgs_pars-detector1pipeline_0002.rmap    1.0 K bytes  (189 / 202 files) (698.7 K / 722.8 K bytes)
CRDS - INFO -  Fetching  /tmp/crds_cache/mappings/jwst/jwst_fgs_pars-darkpipeline_0002.rmap      856 bytes  (190 / 202 files) (699.7 K / 722.8 K bytes)
CRDS - INFO -  Fetching  /tmp/crds_cache/mappings/jwst/jwst_fgs_mask_0023.rmap      1.1 K bytes  (191 / 202 files) (700.6 K / 722.8 K bytes)
CRDS - INFO -  Fetching  /tmp/crds_cache/mappings/jwst/jwst_fgs_linearity_0015.rmap      925 bytes  (192 / 202 files) (701.6 K / 722.8 K bytes)
CRDS - INFO -  Fetching  /tmp/crds_cache/mappings/jwst/jwst_fgs_ipc_0003.rmap         614 bytes  (193 / 202 files) (702.6 K / 722.8 K bytes)
CRDS - INFO -  Fetching  /tmp/crds_cache/mappings/jwst/jwst_fgs_gain_0010.rmap        890 bytes  (194 / 202 files) (703.2 K / 722.8 K bytes)
CRDS - INFO -  Fetching  /tmp/crds_cache/mappings/jwst/jwst_fgs_flat_0009.rmap      1.1 K bytes  (195 / 202 files) (704.1 K / 722.8 K bytes)
CRDS - INFO -  Fetching  /tmp/crds_cache/mappings/jwst/jwst_fgs_distortion_0011.rmap    1.2 K bytes  (196 / 202 files) (705.2 K / 722.8 K bytes)
CRDS - INFO -  Fetching  /tmp/crds_cache/mappings/jwst/jwst_fgs_dark_0017.rmap      4.3 K bytes  (197 / 202 files) (706.4 K / 722.8 K bytes)
CRDS - INFO -  Fetching  /tmp/crds_cache/mappings/jwst/jwst_fgs_area_0010.rmap      1.2 K bytes  (198 / 202 files) (710.7 K / 722.8 K bytes)
CRDS - INFO -  Fetching  /tmp/crds_cache/mappings/jwst/jwst_fgs_apcorr_0004.rmap    4.0 K bytes  (199 / 202 files) (711.9 K / 722.8 K bytes)
CRDS - INFO -  Fetching  /tmp/crds_cache/mappings/jwst/jwst_fgs_abvegaoffset_0002.rmap    1.3 K bytes  (200 / 202 files) (715.8 K / 722.8 K bytes)
CRDS - INFO -  Fetching  /tmp/crds_cache/mappings/jwst/jwst_fgs_0118.imap           5.1 K bytes  (201 / 202 files) (717.1 K / 722.8 K bytes)
CRDS - INFO -  Fetching  /tmp/crds_cache/mappings/jwst/jwst_1322.pmap                 580 bytes  (202 / 202 files) (722.2 K / 722.8 K bytes)
CRDS - INFO -  Fetching  /tmp/crds_cache/references/jwst/nircam/jwst_nircam_photom_0162.fits    1.7 M bytes  (1 / 2 files) (0 / 1.7 M bytes)
CRDS - INFO -  Fetching  /tmp/crds_cache/references/jwst/nircam/jwst_nircam_specwcs_0186.asdf    9.3 K bytes  (2 / 2 files) (1.7 M / 1.7 M bytes)
CRDS - INFO -  Fetching  /tmp/crds_cache/references/jwst/nircam/jwst_nircam_photom_0163.fits    1.7 M bytes  (1 / 2 files) (0 / 1.7 M bytes)


crds_reffiles: NIRCAM F277W GRISMR A (jwst_1322.pmap)
crds_reffiles: jwst_nircam_photom_0162.fits jwst_nircam_specwcs_0186.asdf
ENV CRDS_CONTEXT = jwst_1322.pmap


CRDS - INFO -  Fetching  /tmp/crds_cache/references/jwst/nircam/jwst_nircam_specwcs_0160.asdf    9.3 K bytes  (2 / 2 files) (1.7 M / 1.7 M bytes)
CRDS - INFO -  Fetching  /tmp/crds_cache/references/jwst/nircam/jwst_nircam_specwcs_0171.asdf    9.3 K bytes  (1 / 1 files) (0 / 9.3 K bytes)


crds_reffiles: NIRCAM F277W GRISMR B (jwst_1322.pmap)
crds_reffiles: jwst_nircam_photom_0163.fits jwst_nircam_specwcs_0160.asdf
ENV CRDS_CONTEXT = jwst_1322.pmap


CRDS - INFO -  Fetching  /tmp/crds_cache/references/jwst/nircam/jwst_nircam_specwcs_0174.asdf    9.3 K bytes  (1 / 1 files) (0 / 9.3 K bytes)


crds_reffiles: NIRCAM F277W GRISMC A (jwst_1322.pmap)
crds_reffiles: jwst_nircam_photom_0162.fits jwst_nircam_specwcs_0171.asdf
ENV CRDS_CONTEXT = jwst_1322.pmap


CRDS - INFO -  Fetching  /tmp/crds_cache/references/jwst/nircam/jwst_nircam_specwcs_0184.asdf    9.3 K bytes  (1 / 1 files) (0 / 9.3 K bytes)


crds_reffiles: NIRCAM F277W GRISMC B (jwst_1322.pmap)
crds_reffiles: jwst_nircam_photom_0163.fits jwst_nircam_specwcs_0174.asdf
ENV CRDS_CONTEXT = jwst_1322.pmap


CRDS - INFO -  Fetching  /tmp/crds_cache/references/jwst/nircam/jwst_nircam_specwcs_0199.asdf    9.3 K bytes  (1 / 1 files) (0 / 9.3 K bytes)


crds_reffiles: NIRCAM F356W GRISMR A (jwst_1322.pmap)
crds_reffiles: jwst_nircam_photom_0162.fits jwst_nircam_specwcs_0184.asdf
ENV CRDS_CONTEXT = jwst_1322.pmap


CRDS - INFO -  Fetching  /tmp/crds_cache/references/jwst/nircam/jwst_nircam_specwcs_0165.asdf    9.3 K bytes  (1 / 1 files) (0 / 9.3 K bytes)


crds_reffiles: NIRCAM F356W GRISMR B (jwst_1322.pmap)
crds_reffiles: jwst_nircam_photom_0163.fits jwst_nircam_specwcs_0199.asdf
ENV CRDS_CONTEXT = jwst_1322.pmap


CRDS - INFO -  Fetching  /tmp/crds_cache/references/jwst/nircam/jwst_nircam_specwcs_0182.asdf    9.3 K bytes  (1 / 1 files) (0 / 9.3 K bytes)


crds_reffiles: NIRCAM F356W GRISMC A (jwst_1322.pmap)
crds_reffiles: jwst_nircam_photom_0162.fits jwst_nircam_specwcs_0165.asdf
ENV CRDS_CONTEXT = jwst_1322.pmap


CRDS - INFO -  Fetching  /tmp/crds_cache/references/jwst/nircam/jwst_nircam_specwcs_0178.asdf    9.3 K bytes  (1 / 1 files) (0 / 9.3 K bytes)


crds_reffiles: NIRCAM F356W GRISMC B (jwst_1322.pmap)
crds_reffiles: jwst_nircam_photom_0163.fits jwst_nircam_specwcs_0182.asdf
ENV CRDS_CONTEXT = jwst_1322.pmap


CRDS - INFO -  Fetching  /tmp/crds_cache/references/jwst/nircam/jwst_nircam_specwcs_0164.asdf    9.3 K bytes  (1 / 1 files) (0 / 9.3 K bytes)


crds_reffiles: NIRCAM F410M GRISMR A (jwst_1322.pmap)
crds_reffiles: jwst_nircam_photom_0162.fits jwst_nircam_specwcs_0178.asdf
ENV CRDS_CONTEXT = jwst_1322.pmap


CRDS - INFO -  Fetching  /tmp/crds_cache/references/jwst/nircam/jwst_nircam_specwcs_0181.asdf    9.3 K bytes  (1 / 1 files) (0 / 9.3 K bytes)


crds_reffiles: NIRCAM F410M GRISMR B (jwst_1322.pmap)
crds_reffiles: jwst_nircam_photom_0163.fits jwst_nircam_specwcs_0164.asdf
ENV CRDS_CONTEXT = jwst_1322.pmap
crds_reffiles: NIRCAM F410M GRISMC A (jwst_1322.pmap)
crds_reffiles: jwst_nircam_photom_0162.fits jwst_nircam_specwcs_0181.asdf
ENV CRDS_CONTEXT = jwst_1322.pmap


CRDS - INFO -  Fetching  /tmp/crds_cache/references/jwst/nircam/jwst_nircam_specwcs_0159.asdf    9.3 K bytes  (1 / 1 files) (0 / 9.3 K bytes)
CRDS - INFO -  Fetching  /tmp/crds_cache/references/jwst/nircam/jwst_nircam_specwcs_0190.asdf    9.3 K bytes  (1 / 1 files) (0 / 9.3 K bytes)


crds_reffiles: NIRCAM F410M GRISMC B (jwst_1322.pmap)
crds_reffiles: jwst_nircam_photom_0163.fits jwst_nircam_specwcs_0159.asdf
ENV CRDS_CONTEXT = jwst_1322.pmap
crds_reffiles: NIRCAM F444W GRISMR A (jwst_1322.pmap)
crds_reffiles: jwst_nircam_photom_0162.fits jwst_nircam_specwcs_0190.asdf
ENV CRDS_CONTEXT = jwst_1322.pmap


CRDS - INFO -  Fetching  /tmp/crds_cache/references/jwst/nircam/jwst_nircam_specwcs_0187.asdf    9.3 K bytes  (1 / 1 files) (0 / 9.3 K bytes)
CRDS - INFO -  Fetching  /tmp/crds_cache/references/jwst/nircam/jwst_nircam_specwcs_0173.asdf    9.3 K bytes  (1 / 1 files) (0 / 9.3 K bytes)


crds_reffiles: NIRCAM F444W GRISMR B (jwst_1322.pmap)
crds_reffiles: jwst_nircam_photom_0163.fits jwst_nircam_specwcs_0187.asdf
ENV CRDS_CONTEXT = jwst_1322.pmap


CRDS - INFO -  Fetching  /tmp/crds_cache/references/jwst/nircam/jwst_nircam_specwcs_0203.asdf    9.3 K bytes  (1 / 1 files) (0 / 9.3 K bytes)


crds_reffiles: NIRCAM F444W GRISMC A (jwst_1322.pmap)
crds_reffiles: jwst_nircam_photom_0162.fits jwst_nircam_specwcs_0173.asdf
ENV CRDS_CONTEXT = jwst_1322.pmap


CRDS - INFO -  Fetching  /tmp/crds_cache/references/jwst/nircam/jwst_nircam_specwcs_0191.asdf    9.3 K bytes  (1 / 1 files) (0 / 9.3 K bytes)


crds_reffiles: NIRCAM F444W GRISMC B (jwst_1322.pmap)
crds_reffiles: jwst_nircam_photom_0163.fits jwst_nircam_specwcs_0203.asdf
ENV CRDS_CONTEXT = jwst_1322.pmap


CRDS - INFO -  Fetching  /tmp/crds_cache/references/jwst/nircam/jwst_nircam_specwcs_0179.asdf    9.3 K bytes  (1 / 1 files) (0 / 9.3 K bytes)


crds_reffiles: NIRCAM F460M GRISMR A (jwst_1322.pmap)
crds_reffiles: jwst_nircam_photom_0162.fits jwst_nircam_specwcs_0191.asdf
ENV CRDS_CONTEXT = jwst_1322.pmap


CRDS - INFO -  Fetching  /tmp/crds_cache/references/jwst/nircam/jwst_nircam_specwcs_0195.asdf    9.3 K bytes  (1 / 1 files) (0 / 9.3 K bytes)


crds_reffiles: NIRCAM F460M GRISMR B (jwst_1322.pmap)
crds_reffiles: jwst_nircam_photom_0163.fits jwst_nircam_specwcs_0179.asdf
ENV CRDS_CONTEXT = jwst_1322.pmap


CRDS - INFO -  Fetching  /tmp/crds_cache/references/jwst/nircam/jwst_nircam_specwcs_0169.asdf    9.3 K bytes  (1 / 1 files) (0 / 9.3 K bytes)


crds_reffiles: NIRCAM F460M GRISMC A (jwst_1322.pmap)
crds_reffiles: jwst_nircam_photom_0162.fits jwst_nircam_specwcs_0195.asdf
ENV CRDS_CONTEXT = jwst_1322.pmap


CRDS - INFO -  Fetching  /tmp/crds_cache/references/jwst/nircam/jwst_nircam_specwcs_0192.asdf    9.3 K bytes  (1 / 1 files) (0 / 9.3 K bytes)


crds_reffiles: NIRCAM F460M GRISMC B (jwst_1322.pmap)
crds_reffiles: jwst_nircam_photom_0163.fits jwst_nircam_specwcs_0169.asdf
ENV CRDS_CONTEXT = jwst_1322.pmap


CRDS - INFO -  Fetching  /tmp/crds_cache/references/jwst/nircam/jwst_nircam_specwcs_0197.asdf    9.3 K bytes  (1 / 1 files) (0 / 9.3 K bytes)


crds_reffiles: NIRCAM F480M GRISMR A (jwst_1322.pmap)
crds_reffiles: jwst_nircam_photom_0162.fits jwst_nircam_specwcs_0192.asdf
ENV CRDS_CONTEXT = jwst_1322.pmap


CRDS - INFO -  Fetching  /tmp/crds_cache/references/jwst/nircam/jwst_nircam_specwcs_0180.asdf    9.3 K bytes  (1 / 1 files) (0 / 9.3 K bytes)


crds_reffiles: NIRCAM F480M GRISMR B (jwst_1322.pmap)
crds_reffiles: jwst_nircam_photom_0163.fits jwst_nircam_specwcs_0197.asdf
ENV CRDS_CONTEXT = jwst_1322.pmap


CRDS - INFO -  Fetching  /tmp/crds_cache/references/jwst/nircam/jwst_nircam_specwcs_0168.asdf    9.3 K bytes  (1 / 1 files) (0 / 9.3 K bytes)


crds_reffiles: NIRCAM F480M GRISMC A (jwst_1322.pmap)
crds_reffiles: jwst_nircam_photom_0162.fits jwst_nircam_specwcs_0180.asdf
ENV CRDS_CONTEXT = jwst_1322.pmap
crds_reffiles: NIRCAM F480M GRISMC B (jwst_1322.pmap)
crds_reffiles: jwst_nircam_photom_0163.fits jwst_nircam_specwcs_0168.asdf
ENV CRDS_CONTEXT = jwst_1322.pmap


CRDS - INFO -  Fetching  /tmp/crds_cache/references/jwst/niriss/jwst_niriss_photom_0041.fits    3.6 M bytes  (1 / 2 files) (0 / 3.6 M bytes)
CRDS - INFO -  Fetching  /tmp/crds_cache/references/jwst/niriss/jwst_niriss_specwcs_0050.asdf   20.6 K bytes  (2 / 2 files) (3.6 M / 3.6 M bytes)
CRDS - INFO -  Fetching  /tmp/crds_cache/references/jwst/niriss/jwst_niriss_specwcs_0047.asdf   20.6 K bytes  (1 / 1 files) (0 / 20.6 K bytes)


crds_reffiles: NIRISS GR150R F090W A (jwst_1322.pmap)
crds_reffiles: jwst_niriss_photom_0041.fits jwst_niriss_specwcs_0050.asdf
ENV CRDS_CONTEXT = jwst_1322.pmap


CRDS - INFO -  Fetching  /tmp/crds_cache/references/jwst/niriss/jwst_niriss_specwcs_0054.asdf   24.4 K bytes  (1 / 1 files) (0 / 24.4 K bytes)


crds_reffiles: NIRISS GR150C F090W A (jwst_1322.pmap)
crds_reffiles: jwst_niriss_photom_0041.fits jwst_niriss_specwcs_0047.asdf
ENV CRDS_CONTEXT = jwst_1322.pmap


CRDS - INFO -  Fetching  /tmp/crds_cache/references/jwst/niriss/jwst_niriss_specwcs_0053.asdf   27.4 K bytes  (1 / 1 files) (0 / 27.4 K bytes)


crds_reffiles: NIRISS GR150R F115W A (jwst_1322.pmap)
crds_reffiles: jwst_niriss_photom_0041.fits jwst_niriss_specwcs_0054.asdf
ENV CRDS_CONTEXT = jwst_1322.pmap


CRDS - INFO -  Fetching  /tmp/crds_cache/references/jwst/niriss/jwst_niriss_specwcs_0056.asdf   27.5 K bytes  (1 / 1 files) (0 / 27.5 K bytes)


crds_reffiles: NIRISS GR150C F115W A (jwst_1322.pmap)
crds_reffiles: jwst_niriss_photom_0041.fits jwst_niriss_specwcs_0053.asdf
ENV CRDS_CONTEXT = jwst_1322.pmap


CRDS - INFO -  Fetching  /tmp/crds_cache/references/jwst/niriss/jwst_niriss_specwcs_0055.asdf   30.5 K bytes  (1 / 1 files) (0 / 30.5 K bytes)


crds_reffiles: NIRISS GR150R F150W A (jwst_1322.pmap)
crds_reffiles: jwst_niriss_photom_0041.fits jwst_niriss_specwcs_0056.asdf
ENV CRDS_CONTEXT = jwst_1322.pmap


CRDS - INFO -  Fetching  /tmp/crds_cache/references/jwst/niriss/jwst_niriss_specwcs_0052.asdf   27.5 K bytes  (1 / 1 files) (0 / 27.5 K bytes)


crds_reffiles: NIRISS GR150C F150W A (jwst_1322.pmap)
crds_reffiles: jwst_niriss_photom_0041.fits jwst_niriss_specwcs_0055.asdf
ENV CRDS_CONTEXT = jwst_1322.pmap


CRDS - INFO -  Fetching  /tmp/crds_cache/references/jwst/niriss/jwst_niriss_specwcs_0051.asdf   30.5 K bytes  (1 / 1 files) (0 / 30.5 K bytes)


crds_reffiles: NIRISS GR150R F200W A (jwst_1322.pmap)
crds_reffiles: jwst_niriss_photom_0041.fits jwst_niriss_specwcs_0052.asdf
ENV CRDS_CONTEXT = jwst_1322.pmap
crds_reffiles: NIRISS GR150C F200W A (jwst_1322.pmap)
crds_reffiles: jwst_niriss_photom_0041.fits jwst_niriss_specwcs_0051.asdf
</code></pre></div></div>

<h1 id="imports">Imports</h1>

<p>Can skip to here if config files and dependencies already installed above.</p>

<div class="language-python highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kn">import</span> <span class="nn">os</span>

<span class="kn">import</span> <span class="nn">numpy</span> <span class="k">as</span> <span class="n">np</span>
<span class="kn">import</span> <span class="nn">matplotlib.pyplot</span> <span class="k">as</span> <span class="n">plt</span>

<span class="kn">import</span> <span class="nn">astropy.io.fits</span> <span class="k">as</span> <span class="n">pyfits</span>
<span class="kn">import</span> <span class="nn">astropy.wcs</span> <span class="k">as</span> <span class="n">pywcs</span>

<span class="kn">import</span> <span class="nn">grizli.jwst_utils</span>
<span class="n">grizli</span><span class="p">.</span><span class="n">jwst_utils</span><span class="p">.</span><span class="n">set_quiet_logging</span><span class="p">()</span>

<span class="kn">from</span> <span class="nn">grizli.aws</span> <span class="kn">import</span> <span class="n">db</span>
<span class="kn">from</span> <span class="nn">grizli</span> <span class="kn">import</span> <span class="n">utils</span><span class="p">,</span> <span class="n">grismconf</span>
<span class="kn">from</span> <span class="nn">grizli.aws</span> <span class="kn">import</span> <span class="n">sky_wfss</span>

<span class="n">utils</span><span class="p">.</span><span class="n">set_warnings</span><span class="p">()</span>

<span class="kn">import</span> <span class="nn">grizli</span>
<span class="kn">import</span> <span class="nn">msaexp</span>

<span class="kn">from</span> <span class="nn">IPython.display</span> <span class="kn">import</span> <span class="n">Image</span>

<span class="k">print</span><span class="p">(</span><span class="s">'grizli version: '</span><span class="p">,</span> <span class="n">grizli</span><span class="p">.</span><span class="n">__version__</span><span class="p">)</span>
<span class="k">print</span><span class="p">(</span><span class="s">'msaexp version: '</span><span class="p">,</span> <span class="n">msaexp</span><span class="p">.</span><span class="n">__version__</span><span class="p">)</span>

</code></pre></div></div>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>grizli version:  1.12.14
msaexp version:  0.9.8
</code></pre></div></div>

<div class="language-python highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kn">from</span> <span class="nn">importlib</span> <span class="kn">import</span> <span class="nb">reload</span>
<span class="nb">reload</span><span class="p">(</span><span class="n">sky_wfss</span><span class="p">)</span>

<span class="n">prefix</span> <span class="o">=</span> <span class="s">'dja-grism'</span>
<span class="n">kwargs</span> <span class="o">=</span> <span class="p">{}</span>

<span class="c1"># Segmentation image for NIRISS demo
</span><span class="k">if</span> <span class="ow">not</span> <span class="n">os</span><span class="p">.</span><span class="n">path</span><span class="p">.</span><span class="n">exists</span><span class="p">(</span><span class="s">'gds-sw-grizli-v7.0-ir_seg.fits'</span><span class="p">):</span>
    <span class="err">!</span> <span class="n">wget</span> <span class="n">https</span><span class="p">:</span><span class="o">//</span><span class="n">s3</span><span class="p">.</span><span class="n">amazonaws</span><span class="p">.</span><span class="n">com</span><span class="o">/</span><span class="n">grizli</span><span class="o">-</span><span class="n">v2</span><span class="o">/</span><span class="n">JwstMosaics</span><span class="o">/</span><span class="n">v7</span><span class="o">/</span><span class="n">gds</span><span class="o">-</span><span class="n">sw</span><span class="o">-</span><span class="n">grizli</span><span class="o">-</span><span class="n">v7</span><span class="p">.</span><span class="mi">0</span><span class="o">-</span><span class="n">ir_seg</span><span class="p">.</span><span class="n">fits</span><span class="p">.</span><span class="n">gz</span>
    <span class="err">!</span> <span class="n">gunzip</span> <span class="n">gds</span><span class="o">-</span><span class="n">sw</span><span class="o">-</span><span class="n">grizli</span><span class="o">-</span><span class="n">v7</span><span class="p">.</span><span class="mi">0</span><span class="o">-</span><span class="n">ir_seg</span><span class="p">.</span><span class="n">fits</span><span class="p">.</span><span class="n">gz</span>
</code></pre></div></div>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>--2025-05-16 19:27:21--  https://s3.amazonaws.com/grizli-v2/JwstMosaics/v7/gds-sw-grizli-v7.0-ir_seg.fits.gz
Resolving s3.amazonaws.com (s3.amazonaws.com)... 3.5.9.70, 54.231.192.120, 16.182.105.32, ...
Connecting to s3.amazonaws.com (s3.amazonaws.com)|3.5.9.70|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 5996324 (5.7M) [binary/octet-stream]
Saving to: ‘gds-sw-grizli-v7.0-ir_seg.fits.gz’

gds-sw-grizli-v7.0- 100%[===================&gt;]   5.72M  14.4MB/s    in 0.4s    

2025-05-16 19:27:22 (14.4 MB/s) - ‘gds-sw-grizli-v7.0-ir_seg.fits.gz’ saved [5996324/5996324]
</code></pre></div></div>

<h1 id="set-source-and-extract-spectrum">Set source and extract spectrum</h1>

<p>All you really need to specify is a set of target coordinates <code class="language-plaintext highlighter-rouge">(ra, dec)</code> and a list of the desired grism names to search for.</p>

<p>The script</p>
<ol>
  <li>Queries and downloads all DJA-processed exposures whose corner footprint contains the requested point.  Note that there might not be a usable spectrum in a particular exposure if the nominal coordinate is within the WCS “footprint” of the grism exposure but the dispersed spectrum falls off of the detector.</li>
  <li>Pulls a FITS cutout from the DJA/grizli API to use for the direct image.  No direct image is needed for the basic extraction and redshift fitting, which here uses a simplified Gaussian model for the optimal extractions, but the direct image is needed for the full grizli functionality (line maps, etc.)</li>
  <li>Generates a <code class="language-plaintext highlighter-rouge">grizli.multifit.MultiBeam</code> object of 2D cutouts from the grism exposures.</li>
</ol>

<h2 id="niriss">NIRISS</h2>

<p>If a <code class="language-plaintext highlighter-rouge">segmentation_image</code> is provided, the source ID will be read from the specified target coordinates and the segmentation image will be used for a crude zeroth-order mask.</p>

<div class="language-python highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nb">reload</span><span class="p">(</span><span class="n">sky_wfss</span><span class="p">)</span>

<span class="c1">## NIRISS test
</span><span class="n">ra</span><span class="p">,</span> <span class="n">dec</span> <span class="o">=</span> <span class="mf">53.1666323</span><span class="p">,</span> <span class="o">-</span><span class="mf">27.8690371</span> <span class="c1"># multiple lines
</span>
<span class="c1"># segmentation_image = "gds-sw-grizli-v7.0-ir_seg.fits"
</span><span class="n">segmentation_image</span> <span class="o">=</span> <span class="bp">None</span>

<span class="n">mb</span> <span class="o">=</span> <span class="n">sky_wfss</span><span class="p">.</span><span class="n">extract_from_coords</span><span class="p">(</span>
    <span class="n">ra</span><span class="o">=</span><span class="n">ra</span><span class="p">,</span> <span class="n">dec</span><span class="o">=</span><span class="n">dec</span><span class="p">,</span>
    <span class="n">grisms</span><span class="o">=</span><span class="p">[</span><span class="s">'F115W-GR150R'</span><span class="p">,</span><span class="s">'F115W-GR150C'</span><span class="p">,</span><span class="s">'F150W-GR150R'</span><span class="p">,</span><span class="s">'F150W-GR150C'</span><span class="p">,</span><span class="s">'F200W-GR150R'</span><span class="p">,</span><span class="s">'F200W-GR150C'</span><span class="p">][</span><span class="mi">0</span><span class="p">::</span><span class="mi">2</span><span class="p">],</span>
    <span class="n">size</span><span class="o">=</span><span class="mi">24</span><span class="p">,</span>
    <span class="n">grp</span><span class="o">=</span><span class="bp">None</span><span class="p">,</span>
    <span class="n">clean</span><span class="o">=</span><span class="bp">False</span><span class="p">,</span>
    <span class="n">get_cutout</span><span class="o">=</span><span class="mi">1</span><span class="p">,</span>
    <span class="n">cutout_filter</span><span class="o">=</span><span class="s">','</span><span class="p">.</span><span class="n">join</span><span class="p">([</span><span class="s">'F150W-CLEAR'</span><span class="p">,</span><span class="s">'F150WN-CLEAR'</span><span class="p">,</span><span class="s">'F200W-CLEAR'</span><span class="p">,</span><span class="s">'F200WN-CLEAR'</span><span class="p">][:]),</span> <span class="c1"># Direct image filters
</span>    <span class="n">thumbnail_size</span><span class="o">=</span><span class="mf">0.8</span> <span class="o">*</span> <span class="mi">4</span><span class="p">,</span>
    <span class="n">prefix</span><span class="o">=</span><span class="n">prefix</span><span class="p">,</span>
    <span class="n">mb_kwargs</span><span class="o">=</span><span class="p">{</span><span class="s">"min_sens"</span><span class="p">:</span> <span class="mf">0.0</span><span class="p">,</span> <span class="s">"min_mask"</span><span class="p">:</span> <span class="mf">0.0</span><span class="p">},</span>
    <span class="n">filter_kwargs</span><span class="o">=</span><span class="p">[{},</span> <span class="bp">None</span><span class="p">][</span><span class="mi">1</span><span class="p">],</span>
    <span class="n">verbose</span><span class="o">=</span><span class="bp">True</span><span class="p">,</span>
    <span class="n">local</span><span class="o">=</span><span class="bp">False</span><span class="p">,</span>
    <span class="n">segmentation_image</span><span class="o">=</span><span class="n">segmentation_image</span><span class="p">,</span>
    <span class="n">use_jwst_crds</span><span class="o">=</span><span class="bp">True</span><span class="p">,</span>
    <span class="o">**</span><span class="n">kwargs</span>
<span class="p">)</span>
</code></pre></div></div>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>https://grizli-cutout.herokuapp.com/exposures?polygon=rect(53.166632,-27.869037,0.25)&amp;filters=F115W-GR150R,F150W-GR150R,F200W-GR150R&amp;output=csv
extract_from_coords: dja-grism_033239.99-275208.53 27 exposures
./jw01283005001_04201_00001_nis_rate.fits exists
./jw01283005001_04201_00002_nis_rate.fits exists
./jw01283005001_04201_00003_nis_rate.fits exists
./jw01283005001_04201_00004_nis_rate.fits exists
./jw01283005001_04201_00005_nis_rate.fits exists
./jw01283005001_04201_00006_nis_rate.fits exists
./jw01283005001_04201_00007_nis_rate.fits exists
./jw01283005001_04201_00008_nis_rate.fits exists
./jw01283005001_04201_00009_nis_rate.fits exists
./jw01283005001_09201_00001_nis_rate.fits exists
./jw01283005001_09201_00002_nis_rate.fits exists
./jw01283005001_09201_00003_nis_rate.fits exists
./jw01283005001_09201_00004_nis_rate.fits exists
./jw01283005001_09201_00005_nis_rate.fits exists
./jw01283005001_09201_00006_nis_rate.fits exists
./jw01283005001_09201_00007_nis_rate.fits exists
./jw01283005001_09201_00008_nis_rate.fits exists
./jw01283005001_09201_00009_nis_rate.fits exists
./jw01283005001_14201_00001_nis_rate.fits exists
./jw01283005001_14201_00002_nis_rate.fits exists
./jw01283005001_14201_00003_nis_rate.fits exists
./jw01283005001_14201_00004_nis_rate.fits exists
./jw01283005001_14201_00005_nis_rate.fits exists
./jw01283005001_14201_00006_nis_rate.fits exists
./jw01283005001_14201_00007_nis_rate.fits exists
./jw01283005001_14201_00008_nis_rate.fits exists
./jw01283005001_14201_00009_nis_rate.fits exists
https://grizli-cutout.herokuapp.com/thumb?all_filters=False&amp;filters=f150w-clear,f150wn-clear,f200w-clear,f200wn-clear&amp;ra=53.1666323&amp;dec=-27.8690371&amp;size=3.2&amp;output=fits_weight -&gt; dja-grism_033239.99-275208.53_ir.fits
thumbnail: F150W-CLEAR
thumbnail: F150WN-CLEAR
thumbnail: F200W-CLEAR
thumbnail: F200WN-CLEAR
extract_from_coords: direct image = dja-grism_033239.99-275208.53_ir.fits
 1 / 27 GroupFLT jw01283005001_04201_00001_nis_rate.fits
get_conf: xxx /tmp/crds_cache/references/jwst/niriss/jwst_niriss_specwcs_0054.asdf GR150R F115W F115W None NIRISS
load_new_sensitivity_curve: only defined for NIRCAM (NIRISS)
Using default C-based coordinate transformation...
load_new_sensitivity_curve: only defined for NIRCAM (NIRISS)
 2 / 27 GroupFLT jw01283005001_04201_00002_nis_rate.fits
get_conf: xxx /tmp/crds_cache/references/jwst/niriss/jwst_niriss_specwcs_0054.asdf GR150R F115W F115W None NIRISS
load_new_sensitivity_curve: only defined for NIRCAM (NIRISS)
Using default C-based coordinate transformation...
load_new_sensitivity_curve: only defined for NIRCAM (NIRISS)
 3 / 27 GroupFLT jw01283005001_04201_00003_nis_rate.fits
get_conf: xxx /tmp/crds_cache/references/jwst/niriss/jwst_niriss_specwcs_0054.asdf GR150R F115W F115W None NIRISS
load_new_sensitivity_curve: only defined for NIRCAM (NIRISS)
Using default C-based coordinate transformation...
load_new_sensitivity_curve: only defined for NIRCAM (NIRISS)
 4 / 27 GroupFLT jw01283005001_04201_00004_nis_rate.fits
get_conf: xxx /tmp/crds_cache/references/jwst/niriss/jwst_niriss_specwcs_0054.asdf GR150R F115W F115W None NIRISS
load_new_sensitivity_curve: only defined for NIRCAM (NIRISS)
Using default C-based coordinate transformation...
load_new_sensitivity_curve: only defined for NIRCAM (NIRISS)
 5 / 27 GroupFLT jw01283005001_04201_00005_nis_rate.fits
get_conf: xxx /tmp/crds_cache/references/jwst/niriss/jwst_niriss_specwcs_0054.asdf GR150R F115W F115W None NIRISS
load_new_sensitivity_curve: only defined for NIRCAM (NIRISS)
Using default C-based coordinate transformation...
load_new_sensitivity_curve: only defined for NIRCAM (NIRISS)
 6 / 27 GroupFLT jw01283005001_04201_00006_nis_rate.fits
get_conf: xxx /tmp/crds_cache/references/jwst/niriss/jwst_niriss_specwcs_0054.asdf GR150R F115W F115W None NIRISS
load_new_sensitivity_curve: only defined for NIRCAM (NIRISS)
Using default C-based coordinate transformation...
load_new_sensitivity_curve: only defined for NIRCAM (NIRISS)
 7 / 27 GroupFLT jw01283005001_04201_00007_nis_rate.fits
get_conf: xxx /tmp/crds_cache/references/jwst/niriss/jwst_niriss_specwcs_0054.asdf GR150R F115W F115W None NIRISS
load_new_sensitivity_curve: only defined for NIRCAM (NIRISS)
Using default C-based coordinate transformation...
load_new_sensitivity_curve: only defined for NIRCAM (NIRISS)
 8 / 27 GroupFLT jw01283005001_04201_00008_nis_rate.fits
get_conf: xxx /tmp/crds_cache/references/jwst/niriss/jwst_niriss_specwcs_0054.asdf GR150R F115W F115W None NIRISS
load_new_sensitivity_curve: only defined for NIRCAM (NIRISS)
Using default C-based coordinate transformation...
load_new_sensitivity_curve: only defined for NIRCAM (NIRISS)
 9 / 27 GroupFLT jw01283005001_04201_00009_nis_rate.fits
get_conf: xxx /tmp/crds_cache/references/jwst/niriss/jwst_niriss_specwcs_0054.asdf GR150R F115W F115W None NIRISS
load_new_sensitivity_curve: only defined for NIRCAM (NIRISS)
Using default C-based coordinate transformation...
load_new_sensitivity_curve: only defined for NIRCAM (NIRISS)
10 / 27 GroupFLT jw01283005001_09201_00001_nis_rate.fits
get_conf: xxx /tmp/crds_cache/references/jwst/niriss/jwst_niriss_specwcs_0056.asdf GR150R F150W F150W None NIRISS
load_new_sensitivity_curve: only defined for NIRCAM (NIRISS)
Using default C-based coordinate transformation...
load_new_sensitivity_curve: only defined for NIRCAM (NIRISS)
11 / 27 GroupFLT jw01283005001_09201_00002_nis_rate.fits
get_conf: xxx /tmp/crds_cache/references/jwst/niriss/jwst_niriss_specwcs_0056.asdf GR150R F150W F150W None NIRISS
load_new_sensitivity_curve: only defined for NIRCAM (NIRISS)
Using default C-based coordinate transformation...
load_new_sensitivity_curve: only defined for NIRCAM (NIRISS)
12 / 27 GroupFLT jw01283005001_09201_00003_nis_rate.fits
get_conf: xxx /tmp/crds_cache/references/jwst/niriss/jwst_niriss_specwcs_0056.asdf GR150R F150W F150W None NIRISS
load_new_sensitivity_curve: only defined for NIRCAM (NIRISS)
Using default C-based coordinate transformation...
load_new_sensitivity_curve: only defined for NIRCAM (NIRISS)
13 / 27 GroupFLT jw01283005001_09201_00004_nis_rate.fits
get_conf: xxx /tmp/crds_cache/references/jwst/niriss/jwst_niriss_specwcs_0056.asdf GR150R F150W F150W None NIRISS
load_new_sensitivity_curve: only defined for NIRCAM (NIRISS)
Using default C-based coordinate transformation...
load_new_sensitivity_curve: only defined for NIRCAM (NIRISS)
14 / 27 GroupFLT jw01283005001_09201_00005_nis_rate.fits
get_conf: xxx /tmp/crds_cache/references/jwst/niriss/jwst_niriss_specwcs_0056.asdf GR150R F150W F150W None NIRISS
load_new_sensitivity_curve: only defined for NIRCAM (NIRISS)
Using default C-based coordinate transformation...
load_new_sensitivity_curve: only defined for NIRCAM (NIRISS)
15 / 27 GroupFLT jw01283005001_09201_00006_nis_rate.fits
get_conf: xxx /tmp/crds_cache/references/jwst/niriss/jwst_niriss_specwcs_0056.asdf GR150R F150W F150W None NIRISS
load_new_sensitivity_curve: only defined for NIRCAM (NIRISS)
Using default C-based coordinate transformation...
load_new_sensitivity_curve: only defined for NIRCAM (NIRISS)
16 / 27 GroupFLT jw01283005001_09201_00007_nis_rate.fits
get_conf: xxx /tmp/crds_cache/references/jwst/niriss/jwst_niriss_specwcs_0056.asdf GR150R F150W F150W None NIRISS
load_new_sensitivity_curve: only defined for NIRCAM (NIRISS)
Using default C-based coordinate transformation...
load_new_sensitivity_curve: only defined for NIRCAM (NIRISS)
17 / 27 GroupFLT jw01283005001_09201_00008_nis_rate.fits
get_conf: xxx /tmp/crds_cache/references/jwst/niriss/jwst_niriss_specwcs_0056.asdf GR150R F150W F150W None NIRISS
load_new_sensitivity_curve: only defined for NIRCAM (NIRISS)
Using default C-based coordinate transformation...
load_new_sensitivity_curve: only defined for NIRCAM (NIRISS)
18 / 27 GroupFLT jw01283005001_09201_00009_nis_rate.fits
get_conf: xxx /tmp/crds_cache/references/jwst/niriss/jwst_niriss_specwcs_0056.asdf GR150R F150W F150W None NIRISS
load_new_sensitivity_curve: only defined for NIRCAM (NIRISS)
Using default C-based coordinate transformation...
load_new_sensitivity_curve: only defined for NIRCAM (NIRISS)
19 / 27 GroupFLT jw01283005001_14201_00001_nis_rate.fits
get_conf: xxx /tmp/crds_cache/references/jwst/niriss/jwst_niriss_specwcs_0052.asdf GR150R F200W F200W None NIRISS
load_new_sensitivity_curve: only defined for NIRCAM (NIRISS)
Using default C-based coordinate transformation...
load_new_sensitivity_curve: only defined for NIRCAM (NIRISS)
20 / 27 GroupFLT jw01283005001_14201_00002_nis_rate.fits
get_conf: xxx /tmp/crds_cache/references/jwst/niriss/jwst_niriss_specwcs_0052.asdf GR150R F200W F200W None NIRISS
load_new_sensitivity_curve: only defined for NIRCAM (NIRISS)
Using default C-based coordinate transformation...
load_new_sensitivity_curve: only defined for NIRCAM (NIRISS)
21 / 27 GroupFLT jw01283005001_14201_00003_nis_rate.fits
get_conf: xxx /tmp/crds_cache/references/jwst/niriss/jwst_niriss_specwcs_0052.asdf GR150R F200W F200W None NIRISS
load_new_sensitivity_curve: only defined for NIRCAM (NIRISS)
Using default C-based coordinate transformation...
load_new_sensitivity_curve: only defined for NIRCAM (NIRISS)
22 / 27 GroupFLT jw01283005001_14201_00004_nis_rate.fits
get_conf: xxx /tmp/crds_cache/references/jwst/niriss/jwst_niriss_specwcs_0052.asdf GR150R F200W F200W None NIRISS
load_new_sensitivity_curve: only defined for NIRCAM (NIRISS)
Using default C-based coordinate transformation...
load_new_sensitivity_curve: only defined for NIRCAM (NIRISS)
23 / 27 GroupFLT jw01283005001_14201_00005_nis_rate.fits
get_conf: xxx /tmp/crds_cache/references/jwst/niriss/jwst_niriss_specwcs_0052.asdf GR150R F200W F200W None NIRISS
load_new_sensitivity_curve: only defined for NIRCAM (NIRISS)
Using default C-based coordinate transformation...
load_new_sensitivity_curve: only defined for NIRCAM (NIRISS)
24 / 27 GroupFLT jw01283005001_14201_00006_nis_rate.fits
get_conf: xxx /tmp/crds_cache/references/jwst/niriss/jwst_niriss_specwcs_0052.asdf GR150R F200W F200W None NIRISS
load_new_sensitivity_curve: only defined for NIRCAM (NIRISS)
Using default C-based coordinate transformation...
load_new_sensitivity_curve: only defined for NIRCAM (NIRISS)
25 / 27 GroupFLT jw01283005001_14201_00007_nis_rate.fits
get_conf: xxx /tmp/crds_cache/references/jwst/niriss/jwst_niriss_specwcs_0052.asdf GR150R F200W F200W None NIRISS
load_new_sensitivity_curve: only defined for NIRCAM (NIRISS)
Using default C-based coordinate transformation...
load_new_sensitivity_curve: only defined for NIRCAM (NIRISS)
26 / 27 GroupFLT jw01283005001_14201_00008_nis_rate.fits
get_conf: xxx /tmp/crds_cache/references/jwst/niriss/jwst_niriss_specwcs_0052.asdf GR150R F200W F200W None NIRISS
load_new_sensitivity_curve: only defined for NIRCAM (NIRISS)
Using default C-based coordinate transformation...
load_new_sensitivity_curve: only defined for NIRCAM (NIRISS)
27 / 27 GroupFLT jw01283005001_14201_00009_nis_rate.fits
get_conf: xxx /tmp/crds_cache/references/jwst/niriss/jwst_niriss_specwcs_0052.asdf GR150R F200W F200W None NIRISS
load_new_sensitivity_curve: only defined for NIRCAM (NIRISS)
Using default C-based coordinate transformation...
load_new_sensitivity_curve: only defined for NIRCAM (NIRISS)
extract_from_coords: dja-grism_033239.99-275208.53 27 beam cutouts
</code></pre></div></div>

<p><img src="/dja/assets/post_files/2025-05-16-simplified_cutout_wfss_files/simplified_cutout_wfss_16_1.png" alt="png" /></p>

<p><img src="/dja/assets/post_files/2025-05-16-simplified_cutout_wfss_files/simplified_cutout_wfss_16_2.png" alt="png" /></p>

<h3 id="fit-redshift">Fit redshift</h3>

<p>This script tries to fit flexible functions to account for the contamination, and uses a simplified compact Gaussian profile to use for the optimal extraction.  These are crude approximations, but actually tend to work acceptably for emission lines with reasonable S/N.</p>

<div class="language-python highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kn">from</span> <span class="nn">importlib</span> <span class="kn">import</span> <span class="nb">reload</span>
<span class="nb">reload</span><span class="p">(</span><span class="n">sky_wfss</span><span class="p">)</span>

<span class="n">dv</span> <span class="o">=</span> <span class="mi">800</span> <span class="c1"># line width for fitting, km/s
</span>
<span class="n">b2d</span><span class="p">,</span> <span class="n">zres</span> <span class="o">=</span> <span class="n">sky_wfss</span><span class="p">.</span><span class="n">combine_beams_2d</span><span class="p">(</span>
    <span class="n">mb</span><span class="p">,</span>
    <span class="n">step</span><span class="o">=</span><span class="mf">0.5</span><span class="p">,</span> <span class="n">pixfrac</span><span class="o">=</span><span class="mf">0.75</span><span class="p">,</span> <span class="c1"># 2D "pseudodrizzle" parameters
</span>    <span class="n">ymax</span><span class="o">=</span><span class="mf">12.5</span><span class="p">,</span>
    <span class="n">profile_sigma</span><span class="o">=</span><span class="mf">1.5</span><span class="p">,</span> <span class="n">profile_offset</span><span class="o">=-</span><span class="mf">0.5</span><span class="p">,</span> <span class="n">profile_type</span><span class="o">=</span><span class="s">"gaussian"</span><span class="p">,</span>     <span class="c1"># Gaussian cross-dispersion model
</span>    <span class="c1"># profile_type="grizli",                                             # Estimate a profile using the direct image
</span>    <span class="n">bkg_percentile</span><span class="o">=</span><span class="bp">None</span><span class="p">,</span>
    <span class="c1"># cont_spline=11, zfit_nspline=-1,  # Remove all contamination *before* fitting
</span>    <span class="n">cont_spline</span><span class="o">=</span><span class="mi">0</span><span class="p">,</span> <span class="n">zfit_nspline</span><span class="o">=</span><span class="mi">11</span><span class="p">,</span>     <span class="c1"># Fit with flexible splines to model contamination
</span>    <span class="n">zfit_kwargs</span><span class="o">=</span><span class="nb">dict</span><span class="p">(</span>
        <span class="n">rest_wave</span><span class="o">=</span><span class="p">[</span><span class="mi">6500</span><span class="p">,</span> <span class="mi">4400</span><span class="p">],</span> <span class="c1"># Halpha - OIII
</span>        <span class="n">velocity_sigma</span><span class="o">=</span><span class="n">dv</span><span class="p">,</span>
        <span class="n">dz</span><span class="o">=</span><span class="n">dv</span><span class="o">/</span><span class="mf">3.e5</span><span class="o">/</span><span class="mi">2</span><span class="p">,</span>
    <span class="p">),</span>
    <span class="n">ylim</span><span class="o">=</span><span class="p">(</span><span class="o">-</span><span class="mi">3</span><span class="p">,</span> <span class="mi">20</span><span class="p">),</span> <span class="n">yticks</span><span class="o">=</span><span class="p">[</span><span class="mi">0</span><span class="p">,</span> <span class="mi">5</span><span class="p">,</span> <span class="mi">10</span><span class="p">,</span> <span class="mi">20</span><span class="p">],</span>
    <span class="n">auto_niriss</span><span class="o">=</span><span class="bp">False</span><span class="p">,</span>
<span class="p">)</span>

</code></pre></div></div>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>final spectrum file: dja-grism_033239.99-275208.53.f115w.spec.fits
final spectrum file: dja-grism_033239.99-275208.53.f150w.spec.fits
final spectrum file: dja-grism_033239.99-275208.53.f200w.spec.fits
redshift_fit_1d dja-grism_033239.99-275208.53 z=[0.492, 4.226] dz=0.0013333333333333333  nsteps=941
redshift_fit_1d dja-grism_033239.99-275208.53 best z=1.41168  dlnP=2526.9
redshift_fit_1d dja-grism_033239.99-275208.53 F115W dlnP=1375.5
redshift_fit_1d dja-grism_033239.99-275208.53 F150W dlnP=1151.6
redshift_fit_1d dja-grism_033239.99-275208.53 F200W dlnP=-0.1
</code></pre></div></div>

<p><img src="/dja/assets/post_files/2025-05-16-simplified_cutout_wfss_files/simplified_cutout_wfss_18_1.png" alt="png" /></p>

<p><img src="/dja/assets/post_files/2025-05-16-simplified_cutout_wfss_files/simplified_cutout_wfss_18_2.png" alt="png" /></p>

<p><img src="/dja/assets/post_files/2025-05-16-simplified_cutout_wfss_files/simplified_cutout_wfss_18_3.png" alt="png" /></p>

<p><img src="/dja/assets/post_files/2025-05-16-simplified_cutout_wfss_files/simplified_cutout_wfss_18_4.png" alt="png" /></p>

<h3 id="use-original-grizli-tools-to-make-line-maps-measure-line-fluxes-etc">Use original grizli tools to make line maps, measure line fluxes, etc.</h3>

<p>Though it still doesn’t have a full contamination model….</p>

<div class="language-python highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="n">templ</span> <span class="o">=</span> <span class="n">utils</span><span class="p">.</span><span class="n">load_templates</span><span class="p">(</span><span class="n">line_complexes</span><span class="o">=</span><span class="bp">False</span><span class="p">,</span> <span class="n">fwhm</span><span class="o">=</span><span class="mi">1500</span><span class="p">)</span>
<span class="n">splw</span> <span class="o">=</span> <span class="n">np</span><span class="p">.</span><span class="n">arange</span><span class="p">(</span><span class="mi">9000</span><span class="p">,</span> <span class="mf">3.e4</span><span class="p">,</span> <span class="mi">5</span><span class="p">)</span>
<span class="n">bspl</span> <span class="o">=</span> <span class="n">utils</span><span class="p">.</span><span class="n">bspline_templates</span><span class="p">(</span><span class="n">splw</span><span class="p">,</span> <span class="n">df</span><span class="o">=</span><span class="mi">31</span><span class="p">)</span>
<span class="k">for</span> <span class="n">t</span> <span class="ow">in</span> <span class="n">templ</span><span class="p">:</span>
    <span class="k">if</span> <span class="n">t</span><span class="p">.</span><span class="n">startswith</span><span class="p">(</span><span class="s">'line'</span><span class="p">):</span>
        <span class="n">bspl</span><span class="p">[</span><span class="n">t</span><span class="p">]</span> <span class="o">=</span> <span class="n">templ</span><span class="p">[</span><span class="n">t</span><span class="p">]</span>

<span class="n">tfit</span> <span class="o">=</span> <span class="n">mb</span><span class="p">.</span><span class="n">template_at_z</span><span class="p">(</span><span class="n">z</span><span class="o">=</span><span class="n">zres</span><span class="p">[</span><span class="s">'z'</span><span class="p">],</span> <span class="n">templates</span><span class="o">=</span><span class="n">bspl</span><span class="p">,</span> <span class="n">fitter</span><span class="o">=</span><span class="s">'lstsq'</span><span class="p">)</span>
<span class="n">_</span> <span class="o">=</span> <span class="n">mb</span><span class="p">.</span><span class="n">drizzle_grisms_and_PAs</span><span class="p">(</span><span class="n">tfit</span><span class="o">=</span><span class="n">tfit</span><span class="p">,</span> <span class="n">diff</span><span class="o">=</span><span class="bp">True</span><span class="p">,</span> <span class="n">kernel</span><span class="o">=</span><span class="s">'point'</span><span class="p">,)</span>

<span class="k">if</span> <span class="ow">not</span> <span class="n">os</span><span class="p">.</span><span class="n">path</span><span class="p">.</span><span class="n">exists</span><span class="p">(</span><span class="s">'fit_args.npy'</span><span class="p">):</span>
    <span class="kn">from</span> <span class="nn">grizli.pipeline</span> <span class="kn">import</span> <span class="n">auto_script</span>
    <span class="n">fit_args</span> <span class="o">=</span> <span class="n">auto_script</span><span class="p">.</span><span class="n">generate_fit_params</span><span class="p">(</span><span class="n">include_photometry</span><span class="o">=</span><span class="bp">False</span><span class="p">)</span>

</code></pre></div></div>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>Saved arguments to fit_args.npy.
</code></pre></div></div>

<p><img src="/dja/assets/post_files/2025-05-16-simplified_cutout_wfss_files/simplified_cutout_wfss_20_1.png" alt="png" /></p>

<div class="language-python highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="c1"># Line map
# mb.drizzle_fit_lines?
# ! ls dja-grism_100014.21+021311.88*
</span>
<span class="n">dz</span> <span class="o">=</span> <span class="mf">0.01</span><span class="o">*</span><span class="p">(</span><span class="mi">1</span><span class="o">+</span><span class="n">zres</span><span class="p">[</span><span class="s">'z'</span><span class="p">])</span>

<span class="kn">from</span> <span class="nn">grizli</span> <span class="kn">import</span> <span class="n">fitting</span><span class="p">,</span> <span class="n">multifit</span>
<span class="n">_</span> <span class="o">=</span> <span class="n">fitting</span><span class="p">.</span><span class="n">run_all_parallel</span><span class="p">(</span>
    <span class="mi">0</span><span class="p">,</span>
    <span class="n">file_pattern</span><span class="o">=</span><span class="n">mb</span><span class="p">.</span><span class="n">group_name</span><span class="p">,</span>
    <span class="n">group_name</span><span class="o">=</span><span class="n">mb</span><span class="p">.</span><span class="n">group_name</span><span class="p">,</span>
    <span class="n">get_output_data</span><span class="o">=</span><span class="bp">True</span><span class="p">,</span>
    <span class="n">fit_trace_shift</span><span class="o">=</span><span class="bp">False</span><span class="p">,</span>
    <span class="c1"># zr=(zres['z'], ),                                 # Fix redshift
</span>    <span class="n">zr</span><span class="o">=</span><span class="n">zres</span><span class="p">[</span><span class="s">'z'</span><span class="p">]</span> <span class="o">+</span> <span class="n">np</span><span class="p">.</span><span class="n">array</span><span class="p">([</span><span class="o">-</span><span class="mi">1</span><span class="p">,</span><span class="mi">1</span><span class="p">])</span><span class="o">*</span><span class="mf">0.01</span><span class="o">*</span><span class="p">(</span><span class="mi">1</span><span class="o">+</span><span class="n">zres</span><span class="p">[</span><span class="s">'z'</span><span class="p">]),</span> <span class="c1"># Refit redshift in small range around best fit from above
</span>    <span class="n">verbose</span><span class="o">=</span><span class="bp">True</span><span class="p">,</span>
    <span class="n">protect</span><span class="o">=</span><span class="bp">False</span><span class="p">,</span>
    <span class="c1"># dscale=1./16/8, scale_linemap=4 / 4,
</span>    <span class="n">min_sens</span><span class="o">=</span><span class="mf">1.e-4</span><span class="p">,</span> <span class="n">min_cont</span><span class="o">=</span><span class="mf">1.e-4</span><span class="p">,</span>
    <span class="n">t0</span><span class="o">=</span><span class="n">bspl</span><span class="p">,</span>
    <span class="n">t1</span><span class="o">=</span><span class="n">bspl</span><span class="p">,</span>
    <span class="n">pline</span><span class="o">=</span><span class="p">{</span>
        <span class="s">'kernel'</span><span class="p">:</span> <span class="s">'square'</span><span class="p">,</span>
        <span class="s">'pixfrac'</span><span class="p">:</span> <span class="mf">0.5</span><span class="p">,</span>
        <span class="s">'pixscale'</span><span class="p">:</span> <span class="mf">0.05</span><span class="p">,</span>
        <span class="s">'size'</span><span class="p">:</span> <span class="mi">8</span><span class="p">,</span>
        <span class="s">'wcs'</span><span class="p">:</span> <span class="bp">None</span><span class="p">,</span>
        <span class="c1"># aligned with dispersion
</span>        <span class="s">'theta'</span><span class="p">:</span> <span class="mi">270</span> <span class="o">-</span> <span class="n">mb</span><span class="p">.</span><span class="n">beams</span><span class="p">[</span><span class="mi">0</span><span class="p">].</span><span class="n">get_dispersion_PA</span><span class="p">(</span><span class="n">decimals</span><span class="o">=</span><span class="mi">2</span><span class="p">),</span>
    <span class="p">},</span>
<span class="p">)</span>
</code></pre></div></div>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>Run id=0 with fit_args.npy
load_master_fits: dja-grism_033239.99-275208.53.beams.fits
load_new_sensitivity_curve: only defined for NIRCAM (NIRISS)
1 ./jw01283005001_04201_00001_nis_rate.fits GR150R
load_new_sensitivity_curve: only defined for NIRCAM (NIRISS)
2 ./jw01283005001_04201_00002_nis_rate.fits GR150R
load_new_sensitivity_curve: only defined for NIRCAM (NIRISS)
3 ./jw01283005001_04201_00003_nis_rate.fits GR150R
load_new_sensitivity_curve: only defined for NIRCAM (NIRISS)
4 ./jw01283005001_04201_00004_nis_rate.fits GR150R
load_new_sensitivity_curve: only defined for NIRCAM (NIRISS)
5 ./jw01283005001_04201_00005_nis_rate.fits GR150R
load_new_sensitivity_curve: only defined for NIRCAM (NIRISS)
6 ./jw01283005001_04201_00006_nis_rate.fits GR150R
load_new_sensitivity_curve: only defined for NIRCAM (NIRISS)
7 ./jw01283005001_04201_00007_nis_rate.fits GR150R
load_new_sensitivity_curve: only defined for NIRCAM (NIRISS)
8 ./jw01283005001_04201_00008_nis_rate.fits GR150R
load_new_sensitivity_curve: only defined for NIRCAM (NIRISS)
9 ./jw01283005001_04201_00009_nis_rate.fits GR150R
load_new_sensitivity_curve: only defined for NIRCAM (NIRISS)
10 ./jw01283005001_09201_00001_nis_rate.fits GR150R
load_new_sensitivity_curve: only defined for NIRCAM (NIRISS)
11 ./jw01283005001_09201_00002_nis_rate.fits GR150R
load_new_sensitivity_curve: only defined for NIRCAM (NIRISS)
12 ./jw01283005001_09201_00003_nis_rate.fits GR150R
load_new_sensitivity_curve: only defined for NIRCAM (NIRISS)
13 ./jw01283005001_09201_00004_nis_rate.fits GR150R
load_new_sensitivity_curve: only defined for NIRCAM (NIRISS)
14 ./jw01283005001_09201_00005_nis_rate.fits GR150R
load_new_sensitivity_curve: only defined for NIRCAM (NIRISS)
15 ./jw01283005001_09201_00006_nis_rate.fits GR150R
load_new_sensitivity_curve: only defined for NIRCAM (NIRISS)
16 ./jw01283005001_09201_00007_nis_rate.fits GR150R
load_new_sensitivity_curve: only defined for NIRCAM (NIRISS)
17 ./jw01283005001_09201_00008_nis_rate.fits GR150R
load_new_sensitivity_curve: only defined for NIRCAM (NIRISS)
18 ./jw01283005001_09201_00009_nis_rate.fits GR150R
load_new_sensitivity_curve: only defined for NIRCAM (NIRISS)
19 ./jw01283005001_14201_00001_nis_rate.fits GR150R
load_new_sensitivity_curve: only defined for NIRCAM (NIRISS)
20 ./jw01283005001_14201_00002_nis_rate.fits GR150R
load_new_sensitivity_curve: only defined for NIRCAM (NIRISS)
21 ./jw01283005001_14201_00003_nis_rate.fits GR150R
load_new_sensitivity_curve: only defined for NIRCAM (NIRISS)
22 ./jw01283005001_14201_00004_nis_rate.fits GR150R
load_new_sensitivity_curve: only defined for NIRCAM (NIRISS)
23 ./jw01283005001_14201_00005_nis_rate.fits GR150R
load_new_sensitivity_curve: only defined for NIRCAM (NIRISS)
24 ./jw01283005001_14201_00006_nis_rate.fits GR150R
load_new_sensitivity_curve: only defined for NIRCAM (NIRISS)
25 ./jw01283005001_14201_00007_nis_rate.fits GR150R
load_new_sensitivity_curve: only defined for NIRCAM (NIRISS)
26 ./jw01283005001_14201_00008_nis_rate.fits GR150R
load_new_sensitivity_curve: only defined for NIRCAM (NIRISS)
27 ./jw01283005001_14201_00009_nis_rate.fits GR150R
User templates! N=71 

Cache rest-frame template:  bspl 0 9000
Cache rest-frame template:  bspl 1 9340
Cache rest-frame template:  bspl 2 9830
Cache rest-frame template:  bspl 3 10500
Cache rest-frame template:  bspl 4 11250
Cache rest-frame template:  bspl 5 12000
Cache rest-frame template:  bspl 6 12750
Cache rest-frame template:  bspl 7 13500
Cache rest-frame template:  bspl 8 14250
Cache rest-frame template:  bspl 9 15000
Cache rest-frame template:  bspl 10 15750
Cache rest-frame template:  bspl 11 16500
Cache rest-frame template:  bspl 12 17250
Cache rest-frame template:  bspl 13 18000
Cache rest-frame template:  bspl 14 18750
Cache rest-frame template:  bspl 15 19495
Cache rest-frame template:  bspl 16 20245
Cache rest-frame template:  bspl 17 20995
Cache rest-frame template:  bspl 18 21745
Cache rest-frame template:  bspl 19 22495
Cache rest-frame template:  bspl 20 23245
Cache rest-frame template:  bspl 21 23995
Cache rest-frame template:  bspl 22 24745
Cache rest-frame template:  bspl 23 25495
Cache rest-frame template:  bspl 24 26245
Cache rest-frame template:  bspl 25 26995
Cache rest-frame template:  bspl 26 27745
Cache rest-frame template:  bspl 27 28495
Cache rest-frame template:  bspl 28 29165
Cache rest-frame template:  bspl 29 29655
Cache rest-frame template:  bspl 30 29995
  1.3876   40508.8 (1.3876) 1/6
  1.3971   38867.2 (1.3971) 2/6
  1.4067   34276.1 (1.4067) 3/6
  1.4164   30047.1 (1.4164) 4/6
  1.4261   35646.2 (1.4164) 5/6
  1.4358   39717.1 (1.4164) 6/6
First iteration: z_best=1.4164

zgrid_zoom: 1.4164 [1.4058, 1.4270] N=23
- 1.4058   34882.7 (1.4058) 1/23
- 1.4067   34287.2 (1.4067) 2/23
- 1.4077   33889.2 (1.4077) 3/23
- 1.4086   33474.8 (1.4086) 4/23
- 1.4096   33041.9 (1.4096) 5/23
- 1.4106   32585.3 (1.4106) 6/23
- 1.4115   31762.5 (1.4115) 7/23
- 1.4125   30673.6 (1.4125) 8/23
- 1.4135   30055.3 (1.4135) 9/23
- 1.4144   29995.7 (1.4144) 10/23
- 1.4154   30066.1 (1.4144) 11/23
- 1.4164   30048.4 (1.4144) 12/23
- 1.4173   30065.4 (1.4144) 13/23
- 1.4183   30625.2 (1.4144) 14/23
- 1.4193   31929.9 (1.4144) 15/23
- 1.4202   33209.7 (1.4144) 16/23
- 1.4212   33871.7 (1.4144) 17/23
- 1.4222   34117.9 (1.4144) 18/23
- 1.4231   34283.6 (1.4144) 19/23
- 1.4241   34515.7 (1.4144) 20/23
- 1.4251   34909.4 (1.4144) 21/23
- 1.4260   35624.6 (1.4144) 22/23
- 1.4270   36608.0 (1.4144) 23/23
Cache rest-frame template:  bspl 0 9000
Cache rest-frame template:  bspl 1 9340
Cache rest-frame template:  bspl 2 9830
Cache rest-frame template:  bspl 3 10500
Cache rest-frame template:  bspl 4 11250
Cache rest-frame template:  bspl 5 12000
Cache rest-frame template:  bspl 6 12750
Cache rest-frame template:  bspl 7 13500
Cache rest-frame template:  bspl 8 14250
Cache rest-frame template:  bspl 9 15000
Cache rest-frame template:  bspl 10 15750
Cache rest-frame template:  bspl 11 16500
Cache rest-frame template:  bspl 12 17250
Cache rest-frame template:  bspl 13 18000
Cache rest-frame template:  bspl 14 18750
Cache rest-frame template:  bspl 15 19495
Cache rest-frame template:  bspl 16 20245
Cache rest-frame template:  bspl 17 20995
Cache rest-frame template:  bspl 18 21745
Cache rest-frame template:  bspl 19 22495
Cache rest-frame template:  bspl 20 23245
Cache rest-frame template:  bspl 21 23995
Cache rest-frame template:  bspl 22 24745
Cache rest-frame template:  bspl 23 25495
Cache rest-frame template:  bspl 24 26245
Cache rest-frame template:  bspl 25 26995
Cache rest-frame template:  bspl 26 27745
Cache rest-frame template:  bspl 27 28495
Cache rest-frame template:  bspl 28 29165
Cache rest-frame template:  bspl 29 29655
Cache rest-frame template:  bspl 30 29995
Drizzle line -&gt; SIII (1.54 0.35)
Drizzle line -&gt; OII-7325 (0.90 0.35)
Drizzle line -&gt; ArIII-7138 (8.61 12.55)
Drizzle line -&gt; SII  (0.63 0.14)
Drizzle line -&gt; Ha   (10.24 0.13)
Drizzle line -&gt; OI-6302 (0.63 0.12)
Drizzle line -&gt; HeI-5877 (0.57 0.10)
Drizzle line -&gt; OIII (21.49 0.27)
Drizzle line -&gt; Hb   (3.09 0.14)
Drizzle line -&gt; OIII-4363 (1.29 0.63)
Drizzle line -&gt; Hg   (0.09 0.76)
dja-grism_033239.99-275208.53_00000.full.fits
</code></pre></div></div>

<p><img src="/dja/assets/post_files/2025-05-16-simplified_cutout_wfss_files/simplified_cutout_wfss_21_1.png" alt="png" /></p>

<p><img src="/dja/assets/post_files/2025-05-16-simplified_cutout_wfss_files/simplified_cutout_wfss_21_2.png" alt="png" /></p>

<p><img src="/dja/assets/post_files/2025-05-16-simplified_cutout_wfss_files/simplified_cutout_wfss_21_3.png" alt="png" /></p>

<h2 id="nircam">NIRCam</h2>

<p>Example [OIII] / H$\alpha$ emitters with a PRISM spectrum.</p>

<div class="language-python highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="n">ra</span><span class="p">,</span> <span class="n">dec</span><span class="p">,</span> <span class="n">prism_file</span> <span class="o">=</span> <span class="mf">150.1069005</span><span class="p">,</span> <span class="mf">2.36004609</span><span class="p">,</span> <span class="s">"cosmos-transients-v4_prism-clear_6585_61234.spec.fits"</span>
<span class="n">ra</span><span class="p">,</span> <span class="n">dec</span><span class="p">,</span> <span class="n">prism_file</span> <span class="o">=</span> <span class="mf">150.09900755</span><span class="p">,</span> <span class="mf">2.34362213</span><span class="p">,</span> <span class="s">"glazebrook-cos-obs2-v4_prism-clear_2565_15420.spec.fits"</span>
<span class="n">prism_file</span><span class="p">,</span> <span class="n">ra</span><span class="p">,</span> <span class="n">dec</span> <span class="o">=</span> <span class="s">'gto-wide-cos02-v4_prism-clear_1214_727.spec.fits'</span><span class="p">,</span> <span class="mf">150.07850493</span><span class="p">,</span> <span class="mf">2.35235787</span>

<span class="c1"># Show the prism spectrum
</span><span class="n">prism_mask</span> <span class="o">=</span> <span class="n">prism_file</span><span class="p">.</span><span class="n">split</span><span class="p">(</span><span class="s">"_prism"</span><span class="p">)[</span><span class="mi">0</span><span class="p">]</span>

<span class="n">Image</span><span class="p">(</span><span class="sa">f</span><span class="s">"https://s3.amazonaws.com/msaexp-nirspec/extractions/</span><span class="si">{</span><span class="n">prism_mask</span><span class="si">}</span><span class="s">/</span><span class="si">{</span><span class="n">prism_file</span><span class="p">.</span><span class="n">replace</span><span class="p">(</span><span class="s">'spec.fits'</span><span class="p">,</span> <span class="s">'fnu.png'</span><span class="p">)</span><span class="si">}</span><span class="s">"</span><span class="p">)</span>
</code></pre></div></div>

<p><img src="/dja/assets/post_files/2025-05-16-simplified_cutout_wfss_files/simplified_cutout_wfss_23_0.png" alt="png" /></p>

<div class="language-python highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="n">mb</span> <span class="o">=</span> <span class="n">sky_wfss</span><span class="p">.</span><span class="n">extract_from_coords</span><span class="p">(</span>
    <span class="n">ra</span><span class="o">=</span><span class="n">ra</span><span class="p">,</span>
    <span class="n">dec</span><span class="o">=</span><span class="n">dec</span><span class="p">,</span>
    <span class="n">grisms</span><span class="o">=</span><span class="p">[</span><span class="s">'F356W-GRISMR'</span><span class="p">,</span><span class="s">'F430M-GRISMR'</span><span class="p">,</span><span class="s">'F410M-GRISMR'</span><span class="p">,</span><span class="s">'F444W-GRISMR'</span><span class="p">,</span><span class="s">'F444W-GRISMC'</span><span class="p">,</span><span class="s">'F480M-GRISMR'</span><span class="p">,</span><span class="s">'F480M-GRISMC'</span><span class="p">],</span>
    <span class="n">size</span><span class="o">=</span><span class="mi">48</span><span class="o">+</span><span class="mi">32</span><span class="o">*</span><span class="mi">1</span><span class="p">,</span>
    <span class="n">grp</span><span class="o">=</span><span class="bp">None</span><span class="p">,</span>
    <span class="n">clean</span><span class="o">=</span><span class="bp">False</span><span class="p">,</span>
    <span class="n">get_cutout</span><span class="o">=</span><span class="mi">1</span><span class="p">,</span>
    <span class="n">cutout_filter</span><span class="o">=</span><span class="s">','</span><span class="p">.</span><span class="n">join</span><span class="p">([</span><span class="s">'F200W-CLEAR'</span><span class="p">,</span><span class="s">'F277W-CLEAR'</span><span class="p">,</span><span class="s">'F356W-CLEAR'</span><span class="p">,</span><span class="s">'F444W-CLEAR'</span><span class="p">][</span><span class="o">-</span><span class="mi">3</span><span class="p">:]),</span> <span class="c1">#[::1][-1:]),
</span>    <span class="n">thumbnail_size</span><span class="o">=</span><span class="mf">0.8</span> <span class="o">*</span> <span class="mi">2</span><span class="p">,</span>
    <span class="n">prefix</span><span class="o">=</span><span class="n">prefix</span><span class="p">,</span>
    <span class="n">mb_kwargs</span><span class="o">=</span><span class="p">{},</span>
    <span class="n">filter_kwargs</span><span class="o">=</span><span class="p">[{},</span> <span class="bp">None</span><span class="p">][</span><span class="mi">1</span><span class="p">],</span>
    <span class="n">verbose</span><span class="o">=</span><span class="bp">True</span><span class="p">,</span>
    <span class="n">local</span><span class="o">=</span><span class="bp">False</span><span class="p">,</span>
    <span class="n">use_jwst_crds</span><span class="o">=</span><span class="bp">False</span><span class="p">,</span>
    <span class="o">**</span><span class="n">kwargs</span>
<span class="p">)</span>
</code></pre></div></div>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>https://grizli-cutout.herokuapp.com/exposures?polygon=rect(150.078505,2.352358,0.25)&amp;filters=F356W-GRISMR,F430M-GRISMR,F410M-GRISMR,F444W-GRISMR,F444W-GRISMC,F480M-GRISMR,F480M-GRISMC&amp;output=csv
extract_from_coords: dja-grism_100018.84+022108.49 10 exposures
./jw05893014003_02101_00001_nrcblong_rate.fits exists
./jw05893014004_02101_00003_nrcblong_rate.fits exists
./jw05893014004_02101_00004_nrcblong_rate.fits exists
./jw05893014004_02101_00005_nrcblong_rate.fits exists
./jw05893014004_02101_00006_nrcblong_rate.fits exists
./jw05893014003_02101_00002_nrcblong_rate.fits exists
./jw05893014003_02101_00003_nrcblong_rate.fits exists
./jw05893014003_02101_00004_nrcblong_rate.fits exists
./jw05893014003_02101_00005_nrcblong_rate.fits exists
./jw05893014003_02101_00006_nrcblong_rate.fits exists
https://grizli-cutout.herokuapp.com/thumb?all_filters=False&amp;filters=f277w-clear,f356w-clear,f444w-clear&amp;ra=150.07850493&amp;dec=2.35235787&amp;size=1.6&amp;output=fits_weight -&gt; dja-grism_100018.84+022108.49_ir.fits
thumbnail: F277W-CLEAR
thumbnail: F356W-CLEAR
thumbnail: F444W-CLEAR
extract_from_coords: direct image = dja-grism_100018.84+022108.49_ir.fits
 1 / 10 GroupFLT jw05893014003_02101_00001_nrcblong_rate.fits
Using default C-based coordinate transformation...
 2 / 10 GroupFLT jw05893014004_02101_00003_nrcblong_rate.fits
Using default C-based coordinate transformation...
 3 / 10 GroupFLT jw05893014004_02101_00004_nrcblong_rate.fits
Using default C-based coordinate transformation...
 4 / 10 GroupFLT jw05893014004_02101_00005_nrcblong_rate.fits
Using default C-based coordinate transformation...
 5 / 10 GroupFLT jw05893014004_02101_00006_nrcblong_rate.fits
Using default C-based coordinate transformation...
 6 / 10 GroupFLT jw05893014003_02101_00002_nrcblong_rate.fits
Using default C-based coordinate transformation...
 7 / 10 GroupFLT jw05893014003_02101_00003_nrcblong_rate.fits
Using default C-based coordinate transformation...
 8 / 10 GroupFLT jw05893014003_02101_00004_nrcblong_rate.fits
Using default C-based coordinate transformation...
 9 / 10 GroupFLT jw05893014003_02101_00005_nrcblong_rate.fits
Using default C-based coordinate transformation...
10 / 10 GroupFLT jw05893014003_02101_00006_nrcblong_rate.fits
Using default C-based coordinate transformation...
extract_from_coords: dja-grism_100018.84+022108.49 6 beam cutouts
</code></pre></div></div>

<p><img src="/dja/assets/post_files/2025-05-16-simplified_cutout_wfss_files/simplified_cutout_wfss_24_1.png" alt="png" /></p>

<p><img src="/dja/assets/post_files/2025-05-16-simplified_cutout_wfss_files/simplified_cutout_wfss_24_2.png" alt="png" /></p>

<p>Contamination or background over-subtraction can look troublesome, but can still find the line using the flexible contamination / continuum model</p>

<div class="language-python highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="c1"># Just show the simplified 1D extraction
</span>
<span class="kn">from</span> <span class="nn">importlib</span> <span class="kn">import</span> <span class="nb">reload</span>
<span class="nb">reload</span><span class="p">(</span><span class="n">sky_wfss</span><span class="p">)</span>

<span class="n">dv</span> <span class="o">=</span> <span class="mi">50</span> <span class="o">*</span> <span class="mi">3</span>

<span class="n">b2d</span><span class="p">,</span> <span class="n">zres</span> <span class="o">=</span> <span class="n">sky_wfss</span><span class="p">.</span><span class="n">combine_beams_2d</span><span class="p">(</span>
    <span class="n">mb</span><span class="p">,</span>
    <span class="n">step</span><span class="o">=</span><span class="mf">0.5</span><span class="p">,</span> <span class="n">pixfrac</span><span class="o">=</span><span class="mf">0.75</span><span class="p">,</span>
    <span class="n">ymax</span><span class="o">=</span><span class="mf">12.5</span><span class="p">,</span>
    <span class="n">profile_sigma</span><span class="o">=</span><span class="mf">1.5</span><span class="p">,</span> <span class="n">profile_offset</span><span class="o">=-</span><span class="mf">0.5</span><span class="p">,</span> <span class="n">profile_type</span><span class="o">=</span><span class="s">"gaussian"</span><span class="p">,</span>     <span class="c1"># Gaussian cross-dispersion model
</span>    <span class="c1"># profile_type="grizli",                                   # Use the direct image thumbnail
</span>    <span class="n">bkg_percentile</span><span class="o">=</span><span class="bp">None</span><span class="p">,</span>
    <span class="n">cont_spline</span><span class="o">=</span><span class="mi">31</span><span class="o">*</span><span class="mi">1</span><span class="p">,</span> <span class="n">zfit_nspline</span><span class="o">=-</span><span class="mi">1</span><span class="p">,</span>
    <span class="n">zfit_kwargs</span><span class="o">=</span><span class="bp">None</span><span class="p">,</span>
<span class="p">)</span>

</code></pre></div></div>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>final spectrum file: dja-grism_100018.84+022108.49.f444w.spec.fits
</code></pre></div></div>

<p><img src="/dja/assets/post_files/2025-05-16-simplified_cutout_wfss_files/simplified_cutout_wfss_26_1.png" alt="png" /></p>

<div class="language-python highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="c1"># Do the redshift fit
</span>
<span class="n">dv</span> <span class="o">=</span> <span class="mi">150</span> <span class="c1"># km/s
</span>
<span class="n">b2d</span><span class="p">,</span> <span class="n">zres</span> <span class="o">=</span> <span class="n">sky_wfss</span><span class="p">.</span><span class="n">combine_beams_2d</span><span class="p">(</span>
    <span class="n">mb</span><span class="p">,</span>
    <span class="n">step</span><span class="o">=</span><span class="mf">0.5</span><span class="p">,</span> <span class="n">pixfrac</span><span class="o">=</span><span class="mf">0.75</span><span class="p">,</span>
    <span class="n">ymax</span><span class="o">=</span><span class="mf">12.5</span><span class="p">,</span>
    <span class="n">profile_sigma</span><span class="o">=</span><span class="mf">1.5</span><span class="p">,</span> <span class="n">profile_offset</span><span class="o">=-</span><span class="mf">0.5</span><span class="p">,</span> <span class="n">profile_type</span><span class="o">=</span><span class="s">"gaussian"</span><span class="p">,</span>     <span class="c1"># Gaussian cross-dispersion model
</span>    <span class="c1"># profile_type="grizli",                                   # Use the direct image thumbnail
</span>    <span class="n">bkg_percentile</span><span class="o">=</span><span class="bp">None</span><span class="p">,</span>
    <span class="n">cont_spline</span><span class="o">=</span><span class="mi">31</span><span class="o">*</span><span class="mi">1</span><span class="p">,</span> <span class="n">zfit_nspline</span><span class="o">=-</span><span class="mi">1</span><span class="p">,</span>
    <span class="c1"># cont_spline=0, zfit_nspline=31,
</span>    <span class="n">zfit_kwargs</span><span class="o">=</span><span class="nb">dict</span><span class="p">(</span>
        <span class="n">rest_wave</span><span class="o">=</span><span class="p">[</span><span class="mi">6800</span><span class="p">,</span> <span class="mi">4800</span><span class="p">],</span> <span class="c1"># Halpha - OIII
</span>        <span class="n">velocity_sigma</span><span class="o">=</span><span class="n">dv</span><span class="p">,</span>
        <span class="n">dz</span><span class="o">=</span><span class="n">dv</span><span class="o">/</span><span class="mf">3.e5</span><span class="o">/</span><span class="mi">2</span><span class="p">,</span>
    <span class="p">),</span>
<span class="p">)</span>
</code></pre></div></div>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>final spectrum file: dja-grism_100018.84+022108.49.f444w.spec.fits
redshift_fit_1d dja-grism_100018.84+022108.49 z=[4.618, 9.582] dz=0.00025  nsteps=2534
redshift_fit_1d dja-grism_100018.84+022108.49 best z=5.25520  dlnP=113.8
redshift_fit_1d dja-grism_100018.84+022108.49 F444W dlnP=113.8
</code></pre></div></div>

<p><img src="/dja/assets/post_files/2025-05-16-simplified_cutout_wfss_files/simplified_cutout_wfss_27_1.png" alt="png" /></p>

<p><img src="/dja/assets/post_files/2025-05-16-simplified_cutout_wfss_files/simplified_cutout_wfss_27_2.png" alt="png" /></p>

<h3 id="compare-to-prism-spectrum">Compare to PRISM spectrum</h3>

<div class="language-python highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="c1"># Prism spectrum
</span><span class="kn">import</span> <span class="nn">msaexp.spectrum</span>
<span class="n">prism</span> <span class="o">=</span> <span class="n">msaexp</span><span class="p">.</span><span class="n">spectrum</span><span class="p">.</span><span class="n">SpectrumSampler</span><span class="p">(</span>
    <span class="sa">f</span><span class="s">"https://s3.amazonaws.com/msaexp-nirspec/extractions/</span><span class="si">{</span><span class="n">prism_mask</span><span class="si">}</span><span class="s">/</span><span class="si">{</span><span class="n">prism_file</span><span class="si">}</span><span class="s">"</span>
<span class="p">)</span>
</code></pre></div></div>

<div class="language-python highlighter-rouge"><div class="highlight"><pre class="highlight"><code>
<span class="n">fig</span><span class="p">,</span> <span class="n">axes</span> <span class="o">=</span> <span class="n">plt</span><span class="p">.</span><span class="n">subplots</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span><span class="mi">2</span><span class="p">,</span><span class="n">figsize</span><span class="o">=</span><span class="p">(</span><span class="mi">10</span><span class="p">,</span> <span class="mi">4</span><span class="p">),</span> <span class="n">sharey</span><span class="o">=</span><span class="bp">True</span><span class="p">)</span>
<span class="k">for</span> <span class="n">ax</span> <span class="ow">in</span> <span class="n">axes</span><span class="p">:</span>
    <span class="n">ax</span><span class="p">.</span><span class="n">plot</span><span class="p">(</span><span class="n">prism</span><span class="p">[</span><span class="s">'wave'</span><span class="p">],</span> <span class="n">prism</span><span class="p">[</span><span class="s">'flux'</span><span class="p">]</span> <span class="o">*</span> <span class="n">prism</span><span class="p">[</span><span class="s">'to_flam'</span><span class="p">],</span> <span class="n">label</span><span class="o">=</span><span class="n">prism_file</span><span class="p">,</span> <span class="n">color</span><span class="o">=</span><span class="s">'k'</span><span class="p">,</span> <span class="n">alpha</span><span class="o">=</span><span class="mf">0.5</span><span class="p">)</span>

    <span class="k">for</span> <span class="n">gr</span> <span class="ow">in</span> <span class="n">b2d</span><span class="p">:</span>
        <span class="n">grism</span> <span class="o">=</span> <span class="n">b2d</span><span class="p">[</span><span class="n">gr</span><span class="p">][</span><span class="s">'spec'</span><span class="p">]</span>
        <span class="k">for</span> <span class="n">PA</span> <span class="ow">in</span> <span class="n">mb</span><span class="p">.</span><span class="n">PA</span><span class="p">[</span><span class="n">gr</span><span class="p">]:</span>
            <span class="n">ix</span> <span class="o">=</span> <span class="n">mb</span><span class="p">.</span><span class="n">PA</span><span class="p">[</span><span class="n">gr</span><span class="p">][</span><span class="n">PA</span><span class="p">][</span><span class="mi">0</span><span class="p">]</span>
            <span class="k">break</span>

        <span class="n">sens</span> <span class="o">=</span> <span class="n">np</span><span class="p">.</span><span class="n">interp</span><span class="p">(</span><span class="n">grism</span><span class="p">[</span><span class="s">'wave'</span><span class="p">]</span><span class="o">*</span><span class="mf">1.e4</span><span class="p">,</span> <span class="n">mb</span><span class="p">.</span><span class="n">beams</span><span class="p">[</span><span class="n">ix</span><span class="p">].</span><span class="n">beam</span><span class="p">.</span><span class="n">lam</span><span class="p">,</span> <span class="n">mb</span><span class="p">.</span><span class="n">beams</span><span class="p">[</span><span class="n">ix</span><span class="p">].</span><span class="n">beam</span><span class="p">.</span><span class="n">sensitivity</span><span class="p">)</span>
        <span class="n">trim</span> <span class="o">=</span> <span class="n">sens</span> <span class="o">&gt;</span> <span class="mf">0.05</span><span class="o">*</span><span class="n">sens</span><span class="p">.</span><span class="nb">max</span><span class="p">()</span>
        <span class="n">ax</span><span class="p">.</span><span class="n">plot</span><span class="p">(</span><span class="n">grism</span><span class="p">[</span><span class="s">'wave'</span><span class="p">][</span><span class="n">trim</span><span class="p">],</span> <span class="p">(</span><span class="n">grism</span><span class="p">[</span><span class="s">'flux'</span><span class="p">]</span> <span class="o">/</span> <span class="n">sens</span><span class="p">)[</span><span class="n">trim</span><span class="p">]</span> <span class="o">*</span> <span class="mf">1.e20</span><span class="p">,</span> <span class="n">label</span><span class="o">=</span><span class="n">gr</span><span class="p">,</span> <span class="n">alpha</span><span class="o">=</span><span class="mf">0.5</span><span class="p">)</span>

    <span class="n">ax</span><span class="p">.</span><span class="n">set_ylim</span><span class="p">(</span><span class="o">-</span><span class="mi">5</span><span class="p">,</span> <span class="mi">25</span><span class="p">)</span>
    <span class="n">ax</span><span class="p">.</span><span class="n">grid</span><span class="p">()</span>

<span class="k">for</span> <span class="n">lrest</span> <span class="ow">in</span> <span class="p">[</span><span class="mi">5008</span><span class="p">,</span> <span class="mf">6564.</span><span class="p">]:</span>
    <span class="n">lobs</span> <span class="o">=</span> <span class="n">lrest</span> <span class="o">*</span> <span class="p">(</span><span class="mi">1</span> <span class="o">+</span> <span class="n">zres</span><span class="p">[</span><span class="s">'z'</span><span class="p">])</span> <span class="o">/</span> <span class="mf">1.e4</span>
    <span class="k">if</span> <span class="n">lobs</span> <span class="o">&gt;</span> <span class="n">grism</span><span class="p">[</span><span class="s">'wave'</span><span class="p">].</span><span class="nb">min</span><span class="p">():</span>
        <span class="n">ax</span><span class="p">.</span><span class="n">set_xlim</span><span class="p">(</span><span class="n">lobs</span> <span class="o">-</span> <span class="mf">0.1</span><span class="p">,</span> <span class="n">lobs</span> <span class="o">+</span> <span class="mf">0.1</span><span class="p">)</span>
        <span class="k">break</span>

<span class="n">axes</span><span class="p">[</span><span class="mi">0</span><span class="p">].</span><span class="n">set_ylabel</span><span class="p">(</span><span class="sa">r</span><span class="s">'$f_\lambda$ [$10^{-20}$ erg$~$/$~$s$~$/$~$cm$^2~$/$~\mathrm{\AA}$]'</span><span class="p">)</span>
<span class="c1"># ax.set_xlim(3.8, 4.2)
# ax.set_xlim(4.5, 5.0)
</span><span class="n">fig</span><span class="p">.</span><span class="n">tight_layout</span><span class="p">(</span><span class="n">pad</span><span class="o">=</span><span class="mi">1</span><span class="p">)</span>
</code></pre></div></div>

<p><img src="/dja/assets/post_files/2025-05-16-simplified_cutout_wfss_files/simplified_cutout_wfss_30_0.png" alt="png" /></p>

<h3 id="line-map">Line map</h3>

<div class="language-python highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="n">templ</span> <span class="o">=</span> <span class="n">utils</span><span class="p">.</span><span class="n">load_templates</span><span class="p">(</span><span class="n">line_complexes</span><span class="o">=</span><span class="bp">False</span><span class="p">,</span> <span class="n">fwhm</span><span class="o">=</span><span class="mi">150</span><span class="p">)</span>
<span class="n">splw</span> <span class="o">=</span> <span class="n">np</span><span class="p">.</span><span class="n">arange</span><span class="p">(</span><span class="mi">9000</span><span class="p">,</span> <span class="mf">3.e4</span><span class="p">,</span> <span class="mi">5</span><span class="p">)</span>
<span class="n">bspl</span> <span class="o">=</span> <span class="n">utils</span><span class="p">.</span><span class="n">bspline_templates</span><span class="p">(</span><span class="n">splw</span><span class="p">,</span> <span class="n">df</span><span class="o">=</span><span class="mi">31</span><span class="p">)</span>
<span class="k">for</span> <span class="n">t</span> <span class="ow">in</span> <span class="n">templ</span><span class="p">:</span>
    <span class="k">if</span> <span class="n">t</span><span class="p">.</span><span class="n">startswith</span><span class="p">(</span><span class="s">'line'</span><span class="p">):</span>
        <span class="n">bspl</span><span class="p">[</span><span class="n">t</span><span class="p">]</span> <span class="o">=</span> <span class="n">templ</span><span class="p">[</span><span class="n">t</span><span class="p">]</span>

<span class="n">tfit</span> <span class="o">=</span> <span class="n">mb</span><span class="p">.</span><span class="n">template_at_z</span><span class="p">(</span><span class="n">z</span><span class="o">=</span><span class="n">zres</span><span class="p">[</span><span class="s">'z'</span><span class="p">],</span> <span class="n">templates</span><span class="o">=</span><span class="n">bspl</span><span class="p">,</span> <span class="n">fitter</span><span class="o">=</span><span class="s">'lstsq'</span><span class="p">)</span>
<span class="n">_</span> <span class="o">=</span> <span class="n">mb</span><span class="p">.</span><span class="n">drizzle_grisms_and_PAs</span><span class="p">(</span><span class="n">tfit</span><span class="o">=</span><span class="n">tfit</span><span class="p">,</span> <span class="n">diff</span><span class="o">=</span><span class="bp">True</span><span class="p">,</span> <span class="n">kernel</span><span class="o">=</span><span class="s">'point'</span><span class="p">,)</span>

<span class="k">if</span> <span class="ow">not</span> <span class="n">os</span><span class="p">.</span><span class="n">path</span><span class="p">.</span><span class="n">exists</span><span class="p">(</span><span class="s">'fit_args.npy'</span><span class="p">):</span>
    <span class="kn">from</span> <span class="nn">grizli.pipeline</span> <span class="kn">import</span> <span class="n">auto_script</span>
    <span class="n">fit_args</span> <span class="o">=</span> <span class="n">auto_script</span><span class="p">.</span><span class="n">generate_fit_params</span><span class="p">(</span><span class="n">include_photometry</span><span class="o">=</span><span class="bp">False</span><span class="p">)</span>

</code></pre></div></div>

<p><img src="/dja/assets/post_files/2025-05-16-simplified_cutout_wfss_files/simplified_cutout_wfss_32_0.png" alt="png" /></p>

<div class="language-python highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="c1"># Line map
# mb.drizzle_fit_lines?
# ! ls dja-grism_100014.21+021311.88*
</span>
<span class="n">fit_res</span> <span class="o">=</span> <span class="n">fitting</span><span class="p">.</span><span class="n">run_all_parallel</span><span class="p">(</span>
    <span class="mi">0</span><span class="p">,</span>
    <span class="n">file_pattern</span><span class="o">=</span><span class="n">mb</span><span class="p">.</span><span class="n">group_name</span><span class="p">,</span>
    <span class="n">group_name</span><span class="o">=</span><span class="n">mb</span><span class="p">.</span><span class="n">group_name</span><span class="p">,</span>
    <span class="n">get_output_data</span><span class="o">=</span><span class="bp">True</span><span class="p">,</span>
    <span class="n">fit_trace_shift</span><span class="o">=</span><span class="bp">False</span><span class="p">,</span>
    <span class="n">zr</span><span class="o">=</span><span class="p">(</span><span class="n">zres</span><span class="p">[</span><span class="s">'z'</span><span class="p">],</span> <span class="p">),</span>                                 <span class="c1"># Fix redshift
</span>    <span class="c1"># zr=zres['z'] + np.array([-1,1])*0.001*(1+zres['z']), # Refit redshift in small range around best fit from above
</span>    <span class="n">verbose</span><span class="o">=</span><span class="bp">True</span><span class="p">,</span>
    <span class="n">protect</span><span class="o">=</span><span class="bp">False</span><span class="p">,</span>
    <span class="c1"># dscale=1./16/8, scale_linemap=4 / 4,
</span>    <span class="n">min_sens</span><span class="o">=</span><span class="mf">1.e-4</span><span class="p">,</span> <span class="n">min_cont</span><span class="o">=</span><span class="mf">1.e-4</span><span class="p">,</span>
    <span class="n">t0</span><span class="o">=</span><span class="n">bspl</span><span class="p">,</span>
    <span class="n">t1</span><span class="o">=</span><span class="n">bspl</span><span class="p">,</span>
    <span class="n">pline</span><span class="o">=</span><span class="p">{</span>
        <span class="s">'kernel'</span><span class="p">:</span> <span class="s">'square'</span><span class="p">,</span>
        <span class="s">'pixfrac'</span><span class="p">:</span> <span class="mf">0.5</span><span class="p">,</span>
        <span class="s">'pixscale'</span><span class="p">:</span> <span class="mf">0.05</span><span class="p">,</span>
        <span class="s">'size'</span><span class="p">:</span> <span class="mi">8</span><span class="p">,</span>
        <span class="s">'wcs'</span><span class="p">:</span> <span class="bp">None</span><span class="p">,</span>
        <span class="c1"># aligned with dispersion
</span>        <span class="s">'theta'</span><span class="p">:</span> <span class="mi">270</span> <span class="o">-</span> <span class="n">mb</span><span class="p">.</span><span class="n">beams</span><span class="p">[</span><span class="mi">0</span><span class="p">].</span><span class="n">get_dispersion_PA</span><span class="p">(</span><span class="n">decimals</span><span class="o">=</span><span class="mi">2</span><span class="p">),</span>
    <span class="p">},</span>
<span class="p">)</span>
</code></pre></div></div>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>Run id=0 with fit_args.npy
load_master_fits: dja-grism_100018.84+022108.49.beams.fits
1 ./jw05893014003_02101_00001_nrcblong_rate.fits F444W
2 ./jw05893014003_02101_00002_nrcblong_rate.fits F444W
3 ./jw05893014003_02101_00003_nrcblong_rate.fits F444W
4 ./jw05893014003_02101_00004_nrcblong_rate.fits F444W
5 ./jw05893014003_02101_00005_nrcblong_rate.fits F444W
6 ./jw05893014003_02101_00006_nrcblong_rate.fits F444W
User templates! N=71 

Cache rest-frame template:  bspl 0 9000
Cache rest-frame template:  bspl 1 9340
Cache rest-frame template:  bspl 2 9830
Cache rest-frame template:  bspl 3 10500
Cache rest-frame template:  bspl 4 11250
Cache rest-frame template:  bspl 5 12000
Cache rest-frame template:  bspl 6 12750
Cache rest-frame template:  bspl 7 13500
Cache rest-frame template:  bspl 8 14250
Cache rest-frame template:  bspl 9 15000
Cache rest-frame template:  bspl 10 15750
Cache rest-frame template:  bspl 11 16500
Cache rest-frame template:  bspl 12 17250
Cache rest-frame template:  bspl 13 18000
Cache rest-frame template:  bspl 14 18750
Cache rest-frame template:  bspl 15 19495
Cache rest-frame template:  bspl 16 20245
Cache rest-frame template:  bspl 17 20995
Cache rest-frame template:  bspl 18 21745
Cache rest-frame template:  bspl 19 22495
Cache rest-frame template:  bspl 20 23245
Cache rest-frame template:  bspl 21 23995
Cache rest-frame template:  bspl 22 24745
Cache rest-frame template:  bspl 23 25495
Cache rest-frame template:  bspl 24 26245
Cache rest-frame template:  bspl 25 26995
Cache rest-frame template:  bspl 26 27745
Cache rest-frame template:  bspl 27 28495
Cache rest-frame template:  bspl 28 29165
Cache rest-frame template:  bspl 29 29655
Cache rest-frame template:  bspl 30 29995
  5.2552  196564.9 (5.2552) 1/1
First iteration: z_best=5.2552

Cache rest-frame template:  bspl 0 9000
Cache rest-frame template:  bspl 1 9340
Cache rest-frame template:  bspl 2 9830
Cache rest-frame template:  bspl 3 10500
Cache rest-frame template:  bspl 4 11250
Cache rest-frame template:  bspl 5 12000
Cache rest-frame template:  bspl 6 12750
Cache rest-frame template:  bspl 7 13500
Cache rest-frame template:  bspl 8 14250
Cache rest-frame template:  bspl 9 15000
Cache rest-frame template:  bspl 10 15750
Cache rest-frame template:  bspl 11 16500
Cache rest-frame template:  bspl 12 17250
Cache rest-frame template:  bspl 13 18000
Cache rest-frame template:  bspl 14 18750
Cache rest-frame template:  bspl 15 19495
Cache rest-frame template:  bspl 16 20245
Cache rest-frame template:  bspl 17 20995
Cache rest-frame template:  bspl 18 21745
Cache rest-frame template:  bspl 19 22495
Cache rest-frame template:  bspl 20 23245
Cache rest-frame template:  bspl 21 23995
Cache rest-frame template:  bspl 22 24745
Cache rest-frame template:  bspl 23 25495
Cache rest-frame template:  bspl 24 26245
Cache rest-frame template:  bspl 25 26995
Cache rest-frame template:  bspl 26 27745
Cache rest-frame template:  bspl 27 28495
Cache rest-frame template:  bspl 28 29165
Cache rest-frame template:  bspl 29 29655
Cache rest-frame template:  bspl 30 29995


WARNING:py.warnings:/usr/local/lib/python3.11/dist-packages/grizli/fitting.py:4217: UserWarning: Attempting to set identical low and high xlims makes transformation singular; automatically expanding.
  axz.set_xlim(zmi, zma)

2025-05-16 20:52:17,962 - stpipe - WARNING - /usr/local/lib/python3.11/dist-packages/grizli/fitting.py:4217: UserWarning: Attempting to set identical low and high xlims makes transformation singular; automatically expanding.
  axz.set_xlim(zmi, zma)

WARNING:stpipe:/usr/local/lib/python3.11/dist-packages/grizli/fitting.py:4217: UserWarning: Attempting to set identical low and high xlims makes transformation singular; automatically expanding.
  axz.set_xlim(zmi, zma)

WARNING:py.warnings:/usr/local/lib/python3.11/dist-packages/grizli/fitting.py:944: UserWarning: Attempting to set identical low and high xlims makes transformation singular; automatically expanding.
  axz.set_xlim(zmi, zma)

2025-05-16 20:52:19,515 - stpipe - WARNING - /usr/local/lib/python3.11/dist-packages/grizli/fitting.py:944: UserWarning: Attempting to set identical low and high xlims makes transformation singular; automatically expanding.
  axz.set_xlim(zmi, zma)

WARNING:stpipe:/usr/local/lib/python3.11/dist-packages/grizli/fitting.py:944: UserWarning: Attempting to set identical low and high xlims makes transformation singular; automatically expanding.
  axz.set_xlim(zmi, zma)



Drizzle line -&gt; OII-7325 (-0.85 0.23)
Drizzle line -&gt; ArIII-7138 (-0.41 0.18)
Drizzle line -&gt; SII  (0.01 0.22)
Drizzle line -&gt; Ha   (2.97 0.16)
Drizzle line -&gt; OI-6302 (-1.05 0.19)
dja-grism_100018.84+022108.49_00000.full.fits
</code></pre></div></div>

<p><img src="/dja/assets/post_files/2025-05-16-simplified_cutout_wfss_files/simplified_cutout_wfss_33_3.png" alt="png" /></p>

<p><img src="/dja/assets/post_files/2025-05-16-simplified_cutout_wfss_files/simplified_cutout_wfss_33_4.png" alt="png" /></p>

<p><img src="/dja/assets/post_files/2025-05-16-simplified_cutout_wfss_files/simplified_cutout_wfss_33_5.png" alt="png" /></p>]]></content><author><name>Gabriel Brammer</name></author><category term="spectroscopy" /><category term="wfss" /><category term="grism" /><category term="demo" /><summary type="html"><![CDATA[spectroscopy wfss grism demo DJA+Grizli Cutout WFSS spectra]]></summary></entry><entry><title type="html">NIRSpec Merged Table</title><link href="https://dawn-cph.github.io/dja/blog/2025/05/01/nirspec-merged-table-v4/" rel="alternate" type="text/html" title="NIRSpec Merged Table" /><published>2025-05-01T08:11:28+00:00</published><updated>2025-05-01T08:11:28+00:00</updated><id>https://dawn-cph.github.io/dja/blog/2025/05/01/nirspec-merged-table-v4</id><content type="html" xml:base="https://dawn-cph.github.io/dja/blog/2025/05/01/nirspec-merged-table-v4/"><![CDATA[<p> 
    
    <a class="blog-category" href="/dja/blog/categories/#spectroscopy"> spectroscopy</a>
    
    
        
        <a class="blog-tag" href="/dja/blog/tags/#nirspec"> nirspec</a>
        
        <a class="blog-tag" href="/dja/blog/tags/#release"> release</a>
        
        <a class="blog-tag" href="/dja/blog/tags/#catalog"> catalog</a>
              
    
</p>

<p>(This page is auto-generated from the Jupyter notebook <a href="/dja/assets/post_files/2025-05-01-nirspec-merged-table-v4.ipynb">nirspec-merged-table-v4.ipynb</a>.)</p>

<p><a href="https://colab.research.google.com/github/dawn-cph/dja/blob/master/assets/post_files/2025-05-01-nirspec-merged-table-v4.ipynb"> <img src="https://colab.research.google.com/assets/colab-badge.svg" /> </a></p>

<p>Demo of full merged table of NIRSpec spectra reduced with <a href="http://github.com/gbrammer/msaexp">msaexp</a>.  The merged columns are taken from the database tables</p>

<ul>
  <li><code class="language-plaintext highlighter-rouge">nirspec_extractions</code> - Basic spectrum parameters (grating, mask, exposure time, etc.)</li>
  <li><code class="language-plaintext highlighter-rouge">nirspec_redshifts</code> - Redshift fit results, emission line fluxes</li>
  <li><code class="language-plaintext highlighter-rouge">nirspec_redshifts_manual</code> - Grades and comments from visual inspection</li>
  <li><code class="language-plaintext highlighter-rouge">nirspec_integrated</code> - Observed- and rest-frame filters integrated through the spectra at the derived redshift</li>
  <li><code class="language-plaintext highlighter-rouge">grizli_photometry</code> - Photometry and some eazy outputs of the nearest counterpart in the DJA/grizli photometric catalogs</li>
</ul>

<p>The public spectra are shown in a large overview table at <a href="https://s3.amazonaws.com/msaexp-nirspec/extractions/public_prelim_v4.2.html">public_prelim_v4.2.html</a>.</p>

<h2 id="5-september-2025">5 September 2025</h2>

<p>The notebook has been updated to use a new version <code class="language-plaintext highlighter-rouge">v4.4</code> of the merged table.</p>

<ul>
  <li>Includes PRISM spectra from the <a href="https://niriss.github.io/data_release1.html">CANUCS GTO</a> program, along with a number of additional public datasets</li>
  <li>Merged files of the 1D spectra in all gratings are now available, with some <a href="#Merged-1D-grating-spectra">grating examples</a> added at the end of the demo.</li>
  <li>The summary table and tables of compiled spectra now include <em>all</em> available spectra, whether or not they had been processed with the redshift fit algorithm.</li>
  <li>Companion overview table at <a href="https://s3.amazonaws.com/msaexp-nirspec/extractions/nirspec_public_v4.4.html?&amp;grade_min=2.5&amp;grade_max=3.5">nirspec_public_v4.4.html</a>.  (Now has the same length as the summary table here.)</li>
  <li>All files provided at the static <a href="https://zenodo.org/records/15472354">DOI 10.5281/zenodo.1547235</a>.  See README.md at the zenodo page for more information on the release contents.</li>
</ul>

<h1 id="readme">README</h1>

<p>This repository is a snapshot of the public JWST NIRSpec spectra processed with the msaexp pipeline. Please refer to and cite <a href="https://www.aanda.org/articles/aa/abs/2025/05/aa52186-24/aa52186-24.html">de Graaff et al. (2024)</a> and <a href="https://www.aanda.org/articles/aa/abs/2025/01/aa50243-24/aa50243-24.html">Heintz et al. (2025)</a> for the main presentation of the <code class="language-plaintext highlighter-rouge">msaexp</code> pipeline.</p>

<p>This release corresponds to the <code class="language-plaintext highlighter-rouge">v4</code> version of the spectral extractions, which significantly extends the wavelength range of the extracted spectra to regions that may suffer contamination of overlapping spectral orders.  The sensitivity of the higher orders is strongly weighted toward the blue side of the spectrum for all gratings, so, in practice, relatively red galaxies often suffer relatively minor order contamination.</p>

<p>Please refer to and cite this <a href="https://zenodo.org/records/15472354">DOI 10.5281/zenodo.1547235</a> and <a href="https://ui.adsabs.harvard.edu/abs/2025A&amp;A...699A.358V">Valentino et al. (2025)</a> when using this specific data release and the <code class="language-plaintext highlighter-rouge">v4</code> spectra for a presentation of the extended extractions. For more information and updates, please refer to the DJA Blog Post: https://dawn-cph.github.io/dja/blog/2025/05/01/nirspec-merged-table-v4/</p>

<h2 id="data-content">Data Content</h2>

<p>This release provides version 4 of the NIRSpec Merged Table, a comprehensive catalog of uniformly reduced and analyzed JWST/NIRSpec spectra.
The data have been processed using the <a href="https://github.com/gbrammer/msaexp">msaexp</a> and <a href="https://github.com/gbrammer/grizli">grizli</a> pipelines and are publicly available through the DAWN JWST Archive (DJA).
The catalog integrates multiple data products, including spectral extractions, redshift measurements, emission line fluxes, and photometric associations.</p>

<p>The merged table consolidates information from several database tables:</p>

<ul>
  <li><code class="language-plaintext highlighter-rouge">nirspec_extractions</code>: Basic spectrum parameters (e.g., grating, mask, exposure time).</li>
  <li><code class="language-plaintext highlighter-rouge">nirspec_redshifts</code>: Redshift fit results and emission line fluxes.</li>
  <li><code class="language-plaintext highlighter-rouge">nirspec_redshifts_manual</code>: Grades and comments from visual inspection.</li>
  <li><code class="language-plaintext highlighter-rouge">nirspec_integrated</code>: Observed- and rest-frame filters integrated through the spectra at the derived redshift.</li>
  <li><code class="language-plaintext highlighter-rouge">grizli_photometry</code>: Photometry and some EAZY outputs of the nearest counterpart in the DJA/grizli photometric catalogs.</li>
</ul>

<p>The catalog includes 80,367 entries, each corresponding to a unique NIRSpec spectrum.
Each entry contains metadata such as source ID, coordinates, grating/filter configuration, exposure time, redshift estimates, emission line measurements, and photometric associations.</p>

<table>
  <thead>
    <tr>
      <th style="text-align: right">N</th>
      <th style="text-align: center">Grating-Filter</th>
      <th style="text-align: left">Concatenated 1D spectrum file</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td style="text-align: right">113</td>
      <td style="text-align: center">G140H-F070LP</td>
      <td style="text-align: left">dja_msaexp_emission_lines_v4.4.g140h-f070lp_spectra.fits</td>
    </tr>
    <tr>
      <td style="text-align: right">684</td>
      <td style="text-align: center">G140H-F100LP</td>
      <td style="text-align: left">dja_msaexp_emission_lines_v4.4.g140h-f100lp_spectra.fits</td>
    </tr>
    <tr>
      <td style="text-align: right">5851</td>
      <td style="text-align: center">G140M-F070LP</td>
      <td style="text-align: left">dja_msaexp_emission_lines_v4.4.g140m-f070lp_spectra.fits</td>
    </tr>
    <tr>
      <td style="text-align: right">2165</td>
      <td style="text-align: center">G140M-F100LP</td>
      <td style="text-align: left">dja_msaexp_emission_lines_v4.4.g140m-f100lp_spectra.fits</td>
    </tr>
    <tr>
      <td style="text-align: right">6179</td>
      <td style="text-align: center">G235H-F170LP</td>
      <td style="text-align: left">dja_msaexp_emission_lines_v4.4.g235h-f170lp_spectra.fits</td>
    </tr>
    <tr>
      <td style="text-align: right">8000</td>
      <td style="text-align: center">G235M-F170LP</td>
      <td style="text-align: left">dja_msaexp_emission_lines_v4.4.g235m-f170lp_spectra.fits</td>
    </tr>
    <tr>
      <td style="text-align: right">8820</td>
      <td style="text-align: center">G395H-F290LP</td>
      <td style="text-align: left">dja_msaexp_emission_lines_v4.4.g395h-f290lp_spectra.fits</td>
    </tr>
    <tr>
      <td style="text-align: right">13606</td>
      <td style="text-align: center">G395M-F290LP</td>
      <td style="text-align: left">dja_msaexp_emission_lines_v4.4.g395m-f290lp_spectra.fits</td>
    </tr>
    <tr>
      <td style="text-align: right">34949</td>
      <td style="text-align: center">PRISM-CLEAR</td>
      <td style="text-align: left">dja_msaexp_emission_lines_v4.4.prism_spectra.fits</td>
    </tr>
  </tbody>
</table>

<h2 id="usage-notes">Usage Notes</h2>

<ul>
  <li>Data Format: The main catalog is provided in compressed CSV format. Column descriptions, including units and formats, are detailed in the accompanying columns CSV file.</li>
</ul>

<p>The redshift and line fluxes are derived with the functions msaexp.fit_redshift and msaexp.plot_spectrum. The continuum is modelled as a combination of splines, whose coefficient are listed in the table. Emission lines are superimposed as Gaussian profiles, smoothed by the instrumental resolution (increased by a factor of 1.3x compared with the nominal line spread functions in the JWST User Documentation, JDox, see de Graaff+2025) and a fixed line velocity width of 100 km/s. Equivalent widths in angstrom in the observed frame are also reported. A dictionary with the available lines and their rest-frame wavelengths in vacuum can be generated with <code class="language-plaintext highlighter-rouge">grizli.utils.get_line_wavelengths()</code>. The fit is performed with a least square template method. The uncertainties are rescaled with a polynomial curve prior to fitting such that <code class="language-plaintext highlighter-rouge">(flux - model) / (err * scl)</code> residuals are <code class="language-plaintext highlighter-rouge">N(0,1)</code> using <code class="language-plaintext highlighter-rouge">msaexp.spectrum.calc_uncertainty_scale</code>. A systematic uncertainty floor of 2% is introduced. The robustness of the redshift solution is flagged with visual inspection according to the following scheme:</p>
<ul>
  <li><strong>Grade 3</strong>: Robust redshift from one or more emission absorption features</li>
  <li><strong>Grade 2</strong>: Ambiguous continuum features, perhaps only one line or low confidence lines</li>
  <li><strong>Grade 1</strong>: No clear features in the spectrum to constrain the redshift</li>
  <li><strong>Grade 0</strong>: Spectrum suffers some data quality issue and should</li>
  <li><strong>Grade -1</strong>: Fit not performed or graded</li>
</ul>

<p>If multiple spectra of the same sources are available, a common best redshift solution is stored in the z_best column.</p>

<ul>
  <li>
    <p>Spectral Data: Each entry includes links to the corresponding 2D spectra in fits and png format, which can be accessed through the DJA interface or the public spectra overview page at: <a href="https://s3.amazonaws.com/msaexp-nirspec/extractions/nirspec_public_v4.4.html">nirspec_public_v4.4.html</a>
The 1D spectra in the fits tables in this release are in the format generated by <code class="language-plaintext highlighter-rouge">msaexp</code>. The columns are described in <a href="#Column-descriptions">dja_msaexp_emission_lines_v4.4.columns.csv</a>.</p>
  </li>
  <li>
    <p>Some masks that provide spectra of predominantly local sources in the MW or in nearby
galaxies were not processed through the redshift fitting procedure. The general spectrum metadata
is included in the summary table and the spectra are include in the compiled tables, but the columns
of quantities derived from the redshift fit (e.g., emission line fluxes) are not populated.</p>
  </li>
  <li>
    <p>If existing, a comparison with the previous v3 version the spectra generated with msaexp is available at the same link on the DJA interface.</p>
  </li>
  <li>
    <p>Photometric Associations: Photometric data are matched to the nearest counterparts in the DJA/grizli catalogs, providing additional context for each spectroscopic observation. The latest public versions of the DJA/grizli catalogs can are described here: <a href="https://dawn-cph.github.io/dja/imaging/v7/">https://dawn-cph.github.io/dja/imaging/v7/</a>
The latest <code class="language-plaintext highlighter-rouge">v7*</code> version of the imaging mosaics and catalogs can be retrieved here: <a href="https://s3.amazonaws.com/grizli-v2/JwstMosaics/v7/index.html">https://s3.amazonaws.com/grizli-v2/JwstMosaics/v7/index.html</a>
A description of the data reduction and catalog creation is available on the DJA interface and in Valentino+2023.</p>
  </li>
</ul>

<h2 id="caveats">Caveats</h2>

<ul>
  <li>An effective extended-source path-loss correction for light outside of the slitlet for each source using the a priori position within the shutter and assuming an azimuthally symmetric Gaussian profile is applied to each spectrum in this release (de Graaff et al. 2025, Section 3). However, the spectra are not rescaled to match the observed photometry in the “phot_” columns.</li>
  <li>The flux calibration is derived from calibration, monitoring, and scientific programs (Valentino et al. 2025). However, residual features in spectra due to an imperfect cross-calibration of different overlapping orders are still present in the released spectra.</li>
  <li>Examples of second order corrections are presented in Ito et al. (2025), where medium-resolution grating spectra beyond their nominal coverage deviate from the prism counterpart (Figure C.1 in appendix in Ito et al. 2025). Moreover, a significant downturn is present in prism spectra at wavelengths longer than 5.2 µm. These second order corrections are largely mitigated cross-calibrating all the available spectra and photometry by means of simple low-order polynomial corrections, for example available in spectrophotometric modeling codes. Future calibration programs dedicated to reconstruction of the sensitivity curves in the extended spectra at different location of the MSA will allow for refined absolute calibrations.</li>
</ul>

<h2 id="software">Software</h2>

<p>The data processing and analysis utilized the following software packages:</p>

<ul>
  <li>msaexp: <code class="language-plaintext highlighter-rouge">v0.9.8.dev3+ge0e3f39.d20250429</code></li>
  <li>grizli: <code class="language-plaintext highlighter-rouge">v1.12.12.dev5+g5896d62.d20250426</code></li>
  <li>eazy-py: <code class="language-plaintext highlighter-rouge">v0.8.5</code></li>
</ul>

<h2 id="citations">Citations</h2>

<p>We encourage users to refer to the original works describing the datasets collected in this release. Relevant references, compiled to the best of our knowledge, are available here: <a href="https://dawn-cph.github.io/dja/spectroscopy/nirspec/">https://dawn-cph.github.io/dja/spectroscopy/nirspec/</a>.  Please file an <a href="https://github.com/dawn-cph/dja/issues">Issue</a> on the DJA website repository if you would prefer a different citation for your own dataset.</p>

<p>Works that make use of the products of the DJA should cite this DOI and relevant articles describing them:</p>

<p>1) Msaexp pipeline and methods, v3 and previous spectroscopic compilation releases:</p>
<ul>
  <li>de Graaff, A., Brammer, G., Weibel, A.,  et al., “RUBIES: a complete census of the bright and red distant Universe with JWST/NIRSpec”, A&amp;A, 697, 189 (2025)</li>
  <li>Heintz, K. E., Brammer, G., Watson, D., et al., “The JWST-PRIMAL archival survey: A JWST/NIRSpec reference sample for the physical properties and Lyman-α absorption and emission of ∼600 galaxies at z = 5.0−13.4”, A&amp;A, 693, 60 (2025)</li>
  <li>Brammer G., “msaexp: NIRSpec analyis tools”, 10.5281/zenodo.7299500 (2022)</li>
</ul>

<p>2) Spectroscopic release v4 and extended spectra:</p>
<ul>
  <li>Valentino, F., Heintz, K. E., Brammer, G. et al., “Gas outflows in two recently quenched galaxies at z = 4 and 7”, A&amp;A, 699, 358 (2025)</li>
  <li>Pollock, C., Gottumukkala, R., Heintz, K. E. et al., “Novel z~10 auroral line measurements extend the gradual offset of the FMR deep into the first Gyr of cosmic time “, arXiv:2506.15779 (2025)</li>
</ul>

<p>3) Grizli pipeline:</p>
<ul>
  <li>Brammer G., “grizli”, https://zenodo.org/records/8370018 (2023)</li>
</ul>

<p>4) Imaging release:</p>
<ul>
  <li>Valentino, F., Brammer, G., Gould, K. M. L. et al., “An Atlas of Color-selected Quiescent Galaxies at z &gt; 3 in Public JWST Fields”, ApJ, 947, 20 (2023)</li>
</ul>

<h1 id="demo">Demo</h1>

<div class="language-python highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="c1"># Install dependencies, e.g., on Google Colab
</span><span class="k">try</span><span class="p">:</span>
    <span class="kn">import</span> <span class="nn">msaexp</span>

<span class="k">except</span> <span class="nb">ImportError</span><span class="p">:</span>

    <span class="err">!</span> <span class="n">pip</span> <span class="n">install</span> <span class="n">msaexp</span>
    <span class="err">!</span> <span class="n">pip</span> <span class="n">install</span> <span class="n">git</span><span class="o">+</span><span class="n">https</span><span class="p">:</span><span class="o">//</span><span class="n">github</span><span class="p">.</span><span class="n">com</span><span class="o">/</span><span class="n">karllark</span><span class="o">/</span><span class="n">dust_attenuation</span><span class="p">.</span><span class="n">git</span>
    
    <span class="kn">import</span> <span class="nn">eazy</span>
    <span class="n">eazy</span><span class="p">.</span><span class="n">fetch_eazy_photoz</span><span class="p">()</span>
</code></pre></div></div>

<div class="language-python highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="o">%</span><span class="n">matplotlib</span> <span class="n">inline</span>

<span class="kn">import</span> <span class="nn">os</span>
<span class="kn">import</span> <span class="nn">yaml</span>

<span class="kn">import</span> <span class="nn">numpy</span> <span class="k">as</span> <span class="n">np</span>
<span class="kn">import</span> <span class="nn">matplotlib.pyplot</span> <span class="k">as</span> <span class="n">plt</span>
<span class="kn">from</span> <span class="nn">tqdm</span> <span class="kn">import</span> <span class="n">tqdm</span>

<span class="kn">import</span> <span class="nn">warnings</span>
<span class="n">warnings</span><span class="p">.</span><span class="n">filterwarnings</span><span class="p">(</span><span class="s">'ignore'</span><span class="p">)</span>

<span class="kn">from</span> <span class="nn">scipy.spatial</span> <span class="kn">import</span> <span class="n">cKDTree</span>

<span class="kn">import</span> <span class="nn">astropy.io.fits</span> <span class="k">as</span> <span class="n">pyfits</span>
<span class="kn">from</span> <span class="nn">astropy.utils.data</span> <span class="kn">import</span> <span class="n">download_file</span>
<span class="kn">from</span> <span class="nn">astropy.cosmology</span> <span class="kn">import</span> <span class="n">WMAP9</span>
<span class="kn">import</span> <span class="nn">astropy.units</span> <span class="k">as</span> <span class="n">u</span>

<span class="kn">import</span> <span class="nn">grizli</span>
<span class="kn">import</span> <span class="nn">grizli.catalog</span>
<span class="kn">from</span> <span class="nn">grizli</span> <span class="kn">import</span> <span class="n">utils</span>

<span class="kn">import</span> <span class="nn">eazy</span>
<span class="kn">import</span> <span class="nn">msaexp</span>

<span class="n">CACHE_DOWNLOADS</span> <span class="o">=</span> <span class="bp">True</span>

<span class="k">print</span><span class="p">(</span><span class="sa">f</span><span class="s">'grizli version: </span><span class="si">{</span><span class="n">grizli</span><span class="p">.</span><span class="n">__version__</span><span class="si">}</span><span class="s">'</span><span class="p">)</span>
<span class="k">print</span><span class="p">(</span><span class="sa">f</span><span class="s">'eazy-py version: </span><span class="si">{</span><span class="n">eazy</span><span class="p">.</span><span class="n">__version__</span><span class="si">}</span><span class="s">'</span><span class="p">)</span>
<span class="k">print</span><span class="p">(</span><span class="sa">f</span><span class="s">'msaexp version: </span><span class="si">{</span><span class="n">msaexp</span><span class="p">.</span><span class="n">__version__</span><span class="si">}</span><span class="s">'</span><span class="p">)</span>
</code></pre></div></div>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>grizli version: 1.13.2.dev1+g1439c13c5.d20250908
eazy-py version: 0.8.5
msaexp version: 0.9.12.dev20+g2d24ffa54.d20250903
</code></pre></div></div>

<h2 id="read-the-table">Read the table</h2>

<div class="language-python highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="c1"># Full table
</span><span class="n">version</span> <span class="o">=</span> <span class="s">"v4.0"</span> <span class="c1"># Original notebook release
</span><span class="n">version</span> <span class="o">=</span> <span class="s">"v4.3"</span> <span class="c1"># Updated August 11, 2025.  Includes CANUCS and some other additional masks.
</span><span class="n">version</span> <span class="o">=</span> <span class="s">"v4.4"</span> <span class="c1"># Updated September 5, 2025.  Include all public spectra even without redshift / line fits
</span>
<span class="n">URL_PREFIX</span> <span class="o">=</span> <span class="s">"https://s3.amazonaws.com/msaexp-nirspec/extractions"</span>

<span class="c1"># Use the Zenodo release
</span><span class="k">if</span> <span class="n">version</span> <span class="o">==</span> <span class="s">"v4.4"</span><span class="p">:</span>
    <span class="n">URL_PREFIX</span> <span class="o">=</span> <span class="s">"https://zenodo.org/records/15472354/files/"</span>

<span class="n">table_url</span> <span class="o">=</span> <span class="sa">f</span><span class="s">"</span><span class="si">{</span><span class="n">URL_PREFIX</span><span class="si">}</span><span class="s">/dja_msaexp_emission_lines_</span><span class="si">{</span><span class="n">version</span><span class="si">}</span><span class="s">.csv.gz"</span>

<span class="n">tab</span> <span class="o">=</span> <span class="n">utils</span><span class="p">.</span><span class="n">read_catalog</span><span class="p">(</span><span class="n">download_file</span><span class="p">(</span><span class="n">table_url</span><span class="p">,</span> <span class="n">cache</span><span class="o">=</span><span class="n">CACHE_DOWNLOADS</span><span class="p">),</span> <span class="nb">format</span><span class="o">=</span><span class="s">'csv'</span><span class="p">)</span>
</code></pre></div></div>

<h3 id="column-descriptions">Column descriptions</h3>

<div class="language-python highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="n">columns_url</span> <span class="o">=</span> <span class="sa">f</span><span class="s">"</span><span class="si">{</span><span class="n">URL_PREFIX</span><span class="si">}</span><span class="s">/dja_msaexp_emission_lines_</span><span class="si">{</span><span class="n">version</span><span class="si">}</span><span class="s">.columns.csv"</span>
<span class="n">tab_columns</span> <span class="o">=</span> <span class="n">utils</span><span class="p">.</span><span class="n">read_catalog</span><span class="p">(</span><span class="n">download_file</span><span class="p">(</span><span class="n">columns_url</span><span class="p">,</span> <span class="n">cache</span><span class="o">=</span><span class="n">CACHE_DOWNLOADS</span><span class="p">),</span> <span class="nb">format</span><span class="o">=</span><span class="s">'csv'</span><span class="p">)</span>

<span class="c1"># Set column metadata
</span><span class="k">for</span> <span class="n">row</span> <span class="ow">in</span> <span class="n">tab_columns</span><span class="p">:</span>
    <span class="n">c</span> <span class="o">=</span> <span class="n">row</span><span class="p">[</span><span class="s">'column'</span><span class="p">]</span>
    <span class="k">if</span> <span class="n">row</span><span class="p">[</span><span class="s">'unit'</span><span class="p">]</span> <span class="o">!=</span> <span class="s">'--'</span><span class="p">:</span>
        <span class="n">tab</span><span class="p">[</span><span class="n">c</span><span class="p">].</span><span class="n">unit</span> <span class="o">=</span> <span class="n">row</span><span class="p">[</span><span class="s">'unit'</span><span class="p">]</span>
    <span class="k">if</span> <span class="n">row</span><span class="p">[</span><span class="s">'format'</span><span class="p">]</span> <span class="o">!=</span> <span class="s">'--'</span><span class="p">:</span>
        <span class="n">tab</span><span class="p">[</span><span class="n">c</span><span class="p">].</span><span class="nb">format</span> <span class="o">=</span> <span class="n">row</span><span class="p">[</span><span class="s">'format'</span><span class="p">]</span>
    <span class="k">if</span> <span class="n">row</span><span class="p">[</span><span class="s">'description'</span><span class="p">]</span> <span class="o">!=</span> <span class="s">'--'</span><span class="p">:</span>
        <span class="n">tab</span><span class="p">[</span><span class="n">c</span><span class="p">].</span><span class="n">description</span> <span class="o">=</span> <span class="n">row</span><span class="p">[</span><span class="s">'description'</span><span class="p">]</span>

<span class="n">tab</span><span class="p">.</span><span class="n">info</span><span class="p">()</span>
</code></pre></div></div>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>&lt;GTable length=80367&gt;
        name         dtype   unit  format                                       description                                           class     n_bad
------------------- ------- ------ ------ ---------------------------------------------------------------------------------------- ------------ -----
               file   str57                                                                                           DJA filename       Column     0
              srcid   int64                                                                                Source ID from APT plan       Column     0
                 ra float64    deg    .8f                                                                         RA from APT plan       Column     0
                dec float64    deg    .8f                                                                        Dec from APT plan       Column     0
            grating    str5                                                                                        NIRSpec grating       Column     0
             filter    str6                                                                                        Blocking filter       Column     0
           effexptm float64                                                               Effective exposure time of each exposure       Column     0
             nfiles   int64                                                             Number of files combined in final spectrum       Column     0
            dataset   str72                                                                             Filename of first exposure       Column     0
             msamet   str25                                                                                      MSA metadata file       Column     0
              msaid   int64                                                                                        MSA metadata ID       Column     0
             msacnf   int64                                                                                    MSA metadata config       Column     0
              dithn   int64                                                                                          Dither number       Column     0
             slitid   int64                                                                                       MSA plan slit ID       Column     0
               root   str24                                                                            DJA program + mask rootname       Column     0
               npix   int64                                                                    Number of pixels in the 2D spectrum       Column     0
               ndet   int64                                                             Number of detectors contributing to output       Column     0
               wmin float64 micron                                                     Minimum wavelength of the combined spectrum       Column     0
               wmax float64 micron                                                     Maximum wavelength of the combined spectrum       Column     0
             wmaxsn float64 micron                                                           Wavelength of maximum signal to noise       Column     0
               sn10 float64                                                                                     10th percentile SN       Column     0
             flux10 float64                                                                                           Flux at sn10       Column     0
              err10 float64                                                                                    Uncertainty at sn50       Column     0
               sn50 float64                                                                                     50th percentile SN       Column     0
             flux50 float64                                                                                           Flux at sn50       Column     0
              err50 float64                                                                                    Uncertainty at sn90       Column     0
               sn90 float64                                                                                     90th percentile SN       Column     0
             flux90 float64                                                                                           Flux at sn90       Column     0
              err90 float64                                                                                    Uncertainty at sn90       Column     0
             xstart   int64                                                            Starting detector x coordinate of 2D cutout       Column     0
             ystart   int64                                                            Starting detector y coordinate of 2D cutout       Column     0
              xsize   int64                                                                                    x size of 2D cutout       Column     0
              ysize   int64                                                                                    y size of 2D cutout       Column     0
            slit_pa float64                                                                            Estimated PA of the slitlet       Column     0
              pa_v3 float64                                                                 Estimated PA of the spacecraft V3 axis       Column     0
            srcypix float64                                                              Location of the source in the 2D spectrum       Column     0
            profcen float64                                                         Profile offset relative to the expected center       Column     0
            profsig float64                                                           Derived profile width in pixels added to PSF       Column     0
              ctime float64                                                                      UNIX time when file was generated       Column     0
            version   str30                                                                                    MSAEXP code version       Column     0
            exptime float64                                                                          Estimated total exposure time       Column     0
           contchi2 float64                                                                       Chi2 of the spline continuum fit MaskedColumn 18242
                dof   int64                                                      Total number of pixels in the redshift + line fit MaskedColumn 18242
           fullchi2 float64                                                                  Chi2 of the full continuum + line fit MaskedColumn 18242
    line_ariii_7138 float64                                                                Line flux of ariii_7138 1e-20 erg/s/cm2 MaskedColumn 35864
line_ariii_7138_err float64                                                                                                        MaskedColumn 35868
    line_ariii_7753 float64                                                                Line flux of ariii_7753 1e-20 erg/s/cm2 MaskedColumn 37381
line_ariii_7753_err float64                                                                                                        MaskedColumn 37382
           line_bra float64                                                                       Line flux of bra 1e-20 erg/s/cm2 MaskedColumn 77651
       line_bra_err float64                                                                                                        MaskedColumn 77651
           line_brb float64                                                                       Line flux of brb 1e-20 erg/s/cm2 MaskedColumn 71170
       line_brb_err float64                                                                                                        MaskedColumn 71170
           line_brd float64                                                                       Line flux of brd 1e-20 erg/s/cm2 MaskedColumn 64722
       line_brd_err float64                                                                                                        MaskedColumn 64722
           line_brg float64                                                                       Line flux of brg 1e-20 erg/s/cm2 MaskedColumn 67432
       line_brg_err float64                                                                                                        MaskedColumn 67432
            line_hb float64                                                                        Line flux of hb 1e-20 erg/s/cm2 MaskedColumn 36409
        line_hb_err float64                                                                                                        MaskedColumn 36409
            line_hd float64                                                                        Line flux of hd 1e-20 erg/s/cm2 MaskedColumn 40270
        line_hd_err float64                                                                                                        MaskedColumn 40270
      line_hei_1083 float64                                                                  Line flux of hei_1083 1e-20 erg/s/cm2 MaskedColumn 46220
  line_hei_1083_err float64                                                                                                        MaskedColumn 46223
      line_hei_3889 float64                                                                  Line flux of hei_3889 1e-20 erg/s/cm2 MaskedColumn 51316
  line_hei_3889_err float64                                                                                                        MaskedColumn 51319
      line_hei_5877 float64                                                                  Line flux of hei_5877 1e-20 erg/s/cm2 MaskedColumn 34474
  line_hei_5877_err float64                                                                                                        MaskedColumn 34474
      line_hei_7065 float64                                                                  Line flux of hei_7065 1e-20 erg/s/cm2 MaskedColumn 35664
  line_hei_7065_err float64                                                                                                        MaskedColumn 35669
      line_hei_8446 float64                                                                  Line flux of hei_8446 1e-20 erg/s/cm2 MaskedColumn 39420
  line_hei_8446_err float64                                                                                                        MaskedColumn 39420
     line_heii_4687 float64                                                                 Line flux of heii_4687 1e-20 erg/s/cm2 MaskedColumn 59306
 line_heii_4687_err float64                                                                                                        MaskedColumn 59306
            line_hg float64                                                                        Line flux of hg 1e-20 erg/s/cm2 MaskedColumn 38897
        line_hg_err float64                                                                                                        MaskedColumn 38897
           line_lya float64                                                                       Line flux of lya 1e-20 erg/s/cm2 MaskedColumn 68665
       line_lya_err float64                                                                                                        MaskedColumn 68665
          line_mgii float64                                                                      Line flux of mgii 1e-20 erg/s/cm2 MaskedColumn 49321
      line_mgii_err float64                                                                                                        MaskedColumn 49321
    line_neiii_3867 float64                                                                Line flux of neiii_3867 1e-20 erg/s/cm2 MaskedColumn 61857
line_neiii_3867_err float64                                                                                                        MaskedColumn 61858
    line_neiii_3968 float64                                                                Line flux of neiii_3968 1e-20 erg/s/cm2 MaskedColumn 41226
line_neiii_3968_err float64                                                                                                        MaskedColumn 41228
      line_nev_3346 float64                                                                  Line flux of nev_3346 1e-20 erg/s/cm2 MaskedColumn 45488
  line_nev_3346_err float64                                                                                                        MaskedColumn 45488
     line_nevi_3426 float64                                                                 Line flux of nevi_3426 1e-20 erg/s/cm2 MaskedColumn 44940
 line_nevi_3426_err float64                                                                                                        MaskedColumn 44941
     line_niii_1750 float64                                                                 Line flux of niii_1750 1e-20 erg/s/cm2 MaskedColumn 59941
 line_niii_1750_err float64                                                                                                        MaskedColumn 59941
       line_oi_6302 float64                                                                   Line flux of oi_6302 1e-20 erg/s/cm2 MaskedColumn 34327
   line_oi_6302_err float64                                                                                                        MaskedColumn 34327
           line_oii float64                                                                       Line flux of oii 1e-20 erg/s/cm2 MaskedColumn 42821
      line_oii_7325 float64                                                                  Line flux of oii_7325 1e-20 erg/s/cm2 MaskedColumn 50553
  line_oii_7325_err float64                                                                                                        MaskedColumn 50554
       line_oii_err float64                                                                                                        MaskedColumn 42822
          line_oiii float64                                                 Line flux of combined OIII 4959+5007 1e-20 erg/s/cm2/A MaskedColumn 57718
     line_oiii_1663 float64                                                                 Line flux of oiii_1663 1e-20 erg/s/cm2 MaskedColumn 61062
 line_oiii_1663_err float64                                                                                                        MaskedColumn 61062
     line_oiii_4363 float64                                                                 Line flux of oiii_4363 1e-20 erg/s/cm2 MaskedColumn 60229
 line_oiii_4363_err float64                                                                                                        MaskedColumn 60229
     line_oiii_4959 float64                                                                 Line flux of oiii_4959 1e-20 erg/s/cm2 MaskedColumn 58726
 line_oiii_4959_err float64                                                                                                        MaskedColumn 58726
     line_oiii_5007 float64                                                                 Line flux of oiii_5007 1e-20 erg/s/cm2 MaskedColumn 58598
 line_oiii_5007_err float64                                                                                                        MaskedColumn 58598
      line_oiii_err float64                                                                                                        MaskedColumn 57718
          line_pa10 float64                                                                      Line flux of pa10 1e-20 erg/s/cm2 MaskedColumn 41147
      line_pa10_err float64                                                                                                        MaskedColumn 41152
           line_pa8 float64                                                                       Line flux of pa8 1e-20 erg/s/cm2 MaskedColumn 42686
       line_pa8_err float64                                                                                                        MaskedColumn 42691
           line_pa9 float64                                                                       Line flux of pa9 1e-20 erg/s/cm2 MaskedColumn 41764
       line_pa9_err float64                                                                                                        MaskedColumn 41767
           line_paa float64                                                                       Line flux of paa 1e-20 erg/s/cm2 MaskedColumn 63659
       line_paa_err float64                                                                                                        MaskedColumn 63659
           line_pab float64                                                                       Line flux of pab 1e-20 erg/s/cm2 MaskedColumn 52440
       line_pab_err float64                                                                                                        MaskedColumn 52441
           line_pad float64                                                                       Line flux of pad 1e-20 erg/s/cm2 MaskedColumn 44197
       line_pad_err float64                                                                                                        MaskedColumn 44201
           line_pag float64                                                                       Line flux of pag 1e-20 erg/s/cm2 MaskedColumn 46554
       line_pag_err float64                                                                                                        MaskedColumn 46557
           line_pfb float64                                                                       Line flux of pfb 1e-20 erg/s/cm2 MaskedColumn 79212
       line_pfb_err float64                                                                                                        MaskedColumn 79212
           line_pfd float64                                                                       Line flux of pfd 1e-20 erg/s/cm2 MaskedColumn 74917
       line_pfd_err float64                                                                                                        MaskedColumn 74918
           line_pfe float64                                                                       Line flux of pfe 1e-20 erg/s/cm2 MaskedColumn 73676
       line_pfe_err float64                                                                                                        MaskedColumn 73676
           line_pfg float64                                                                       Line flux of pfg 1e-20 erg/s/cm2 MaskedColumn 76553
       line_pfg_err float64                                                                                                        MaskedColumn 76553
           line_sii float64                                                                       Line flux of sii 1e-20 erg/s/cm2 MaskedColumn 49475
       line_sii_err float64                                                                                                        MaskedColumn 49480
     line_siii_9068 float64                                                                 Line flux of siii_9068 1e-20 erg/s/cm2 MaskedColumn 41324
 line_siii_9068_err float64                                                                                                        MaskedColumn 41329
     line_siii_9531 float64                                                                 Line flux of siii_9531 1e-20 erg/s/cm2 MaskedColumn 42649
 line_siii_9531_err float64                                                                                                        MaskedColumn 42654
              spl_0 float64                                                                         Spline continuum coefficient 0 MaskedColumn 18242
          spl_0_err float64                                                                                                        MaskedColumn 18242
              spl_1 float64                                                                         Spline continuum coefficient 1 MaskedColumn 18242
             spl_10 float64                                                                        Spline continuum coefficient 10 MaskedColumn 18242
         spl_10_err float64                                                                                                        MaskedColumn 18242
             spl_11 float64                                                                        Spline continuum coefficient 11 MaskedColumn 18242
         spl_11_err float64                                                                                                        MaskedColumn 18243
             spl_12 float64                                                                        Spline continuum coefficient 12 MaskedColumn 18242
         spl_12_err float64                                                                                                        MaskedColumn 18245
             spl_13 float64                                                                        Spline continuum coefficient 13 MaskedColumn 18242
         spl_13_err float64                                                                                                        MaskedColumn 18244
             spl_14 float64                                                                        Spline continuum coefficient 14 MaskedColumn 18242
         spl_14_err float64                                                                                                        MaskedColumn 18244
             spl_15 float64                                                                        Spline continuum coefficient 15 MaskedColumn 18242
         spl_15_err float64                                                                                                        MaskedColumn 18244
             spl_16 float64                                                                        Spline continuum coefficient 16 MaskedColumn 18242
         spl_16_err float64                                                                                                        MaskedColumn 18243
             spl_17 float64                                                                        Spline continuum coefficient 17 MaskedColumn 18242
         spl_17_err float64                                                                                                        MaskedColumn 18243
             spl_18 float64                                                                        Spline continuum coefficient 18 MaskedColumn 18242
         spl_18_err float64                                                                                                        MaskedColumn 18242
             spl_19 float64                                                                        Spline continuum coefficient 19 MaskedColumn 18242
         spl_19_err float64                                                                                                        MaskedColumn 18242
          spl_1_err float64                                                                                                        MaskedColumn 18242
              spl_2 float64                                                                         Spline continuum coefficient 2 MaskedColumn 18242
             spl_20 float64                                                                        Spline continuum coefficient 20 MaskedColumn 18242
         spl_20_err float64                                                                                                        MaskedColumn 18242
             spl_21 float64                                                                        Spline continuum coefficient 21 MaskedColumn 18242
         spl_21_err float64                                                                                                        MaskedColumn 18242
             spl_22 float64                                                                        Spline continuum coefficient 22 MaskedColumn 18242
         spl_22_err float64                                                                                                        MaskedColumn 18242
          spl_2_err float64                                                                                                        MaskedColumn 18242
              spl_3 float64                                                                         Spline continuum coefficient 3 MaskedColumn 18242
          spl_3_err float64                                                                                                        MaskedColumn 18242
              spl_4 float64                                                                         Spline continuum coefficient 4 MaskedColumn 18242
          spl_4_err float64                                                                                                        MaskedColumn 18242
              spl_5 float64                                                                         Spline continuum coefficient 5 MaskedColumn 18242
          spl_5_err float64                                                                                                        MaskedColumn 18243
              spl_6 float64                                                                         Spline continuum coefficient 6 MaskedColumn 18242
          spl_6_err float64                                                                                                        MaskedColumn 18243
              spl_7 float64                                                                         Spline continuum coefficient 7 MaskedColumn 18242
          spl_7_err float64                                                                                                        MaskedColumn 18247
              spl_8 float64                                                                         Spline continuum coefficient 8 MaskedColumn 18242
          spl_8_err float64                                                                                                        MaskedColumn 18243
              spl_9 float64                                                                         Spline continuum coefficient 9 MaskedColumn 18242
          spl_9_err float64                                                                                                        MaskedColumn 18245
              zline float64                                                                     Redshift where the lines where fit MaskedColumn 18242
      line_civ_1549 float64                                                                  Line flux of civ_1549 1e-20 erg/s/cm2 MaskedColumn 62960
  line_civ_1549_err float64                                                                                                        MaskedColumn 62960
           line_h10 float64                                                                       Line flux of h10 1e-20 erg/s/cm2 MaskedColumn 71081
       line_h10_err float64                                                                                                        MaskedColumn 71081
           line_h11 float64                                                                       Line flux of h11 1e-20 erg/s/cm2 MaskedColumn 71209
       line_h11_err float64                                                                                                        MaskedColumn 71209
           line_h12 float64                                                                       Line flux of h12 1e-20 erg/s/cm2 MaskedColumn 71254
       line_h12_err float64                                                                                                        MaskedColumn 71254
            line_h7 float64                                                                        Line flux of h7 1e-20 erg/s/cm2 MaskedColumn 70536
        line_h7_err float64                                                                                                        MaskedColumn 70536
            line_h8 float64                                                                        Line flux of h8 1e-20 erg/s/cm2 MaskedColumn 70806
        line_h8_err float64                                                                                                        MaskedColumn 70806
            line_h9 float64                                                                        Line flux of h9 1e-20 erg/s/cm2 MaskedColumn 70958
        line_h9_err float64                                                                                                        MaskedColumn 70958
            line_ha float64                                                                        Line flux of ha 1e-20 erg/s/cm2 MaskedColumn 65641
        line_ha_err float64                                                                                                        MaskedColumn 65641
      line_hei_6680 float64                                                                  Line flux of hei_6680 1e-20 erg/s/cm2 MaskedColumn 65749
  line_hei_6680_err float64                                                                                                        MaskedColumn 65749
     line_heii_1640 float64                                                                 Line flux of heii_1640 1e-20 erg/s/cm2 MaskedColumn 61662
 line_heii_1640_err float64                                                                                                        MaskedColumn 61662
      line_nii_6549 float64                                                                  Line flux of nii_6549 1e-20 erg/s/cm2 MaskedColumn 65634
  line_nii_6549_err float64                                                                                                        MaskedColumn 65634
      line_nii_6584 float64                                                                  Line flux of nii_6584 1e-20 erg/s/cm2 MaskedColumn 65646
  line_nii_6584_err float64                                                                                                        MaskedColumn 65646
      line_oii_7323 float64                                                                  Line flux of oii_7323 1e-20 erg/s/cm2 MaskedColumn 66230
  line_oii_7323_err float64                                                                                                        MaskedColumn 66230
      line_oii_7332 float64                                                                  Line flux of oii_7332 1e-20 erg/s/cm2 MaskedColumn 66244
  line_oii_7332_err float64                                                                                                        MaskedColumn 66244
      line_sii_6717 float64                                                                  Line flux of sii_6717 1e-20 erg/s/cm2 MaskedColumn 65776
  line_sii_6717_err float64                                                                                                        MaskedColumn 65776
      line_sii_6731 float64                                                                  Line flux of sii_6731 1e-20 erg/s/cm2 MaskedColumn 65760
  line_sii_6731_err float64                                                                                                        MaskedColumn 65760
     line_siii_6314 float64                                                                 Line flux of siii_6314 1e-20 erg/s/cm2 MaskedColumn 65692
 line_siii_6314_err float64                                                                                                        MaskedColumn 65692
            escale0 float64                                                             0th coefficient of the uncertainty scaling MaskedColumn 18242
            escale1 float64                                                             1st coefficient of the uncertainty scaling MaskedColumn 18242
     line_ciii_1906 float64                                                                 Line flux of ciii_1906 1e-20 erg/s/cm2 MaskedColumn 57937
 line_ciii_1906_err float64                                                                                                        MaskedColumn 57937
      line_niv_1487 float64                                                                  Line flux of niv_1487 1e-20 erg/s/cm2 MaskedColumn 65762
  line_niv_1487_err float64                                                                                                        MaskedColumn 65762
      line_pah_3p29 float64                                                                  Line flux of pah_3p29 1e-20 erg/s/cm2 MaskedColumn 74940
  line_pah_3p29_err float64                                                                                                        MaskedColumn 74940
      line_pah_3p40 float64                                                                  Line flux of pah_3p40 1e-20 erg/s/cm2 MaskedColumn 74940
  line_pah_3p40_err float64                                                                                                        MaskedColumn 74940
     eqw_ariii_7138 float64                                                          Observed-frame equivalent width in ariii_7138 MaskedColumn 35897
     eqw_ariii_7753 float64                                                          Observed-frame equivalent width in ariii_7753 MaskedColumn 37422
            eqw_bra float64                                                                 Observed-frame equivalent width in bra MaskedColumn 77651
            eqw_brb float64                                                                 Observed-frame equivalent width in brb MaskedColumn 71180
            eqw_brd float64                                                                 Observed-frame equivalent width in brd MaskedColumn 64731
            eqw_brg float64                                                                 Observed-frame equivalent width in brg MaskedColumn 67448
      eqw_ciii_1906 float64                                                           Observed-frame equivalent width in ciii_1906 MaskedColumn 57948
       eqw_civ_1549 float64                                                            Observed-frame equivalent width in civ_1549 MaskedColumn 62963
         eqw_ha_nii float64                                                              Observed-frame equivalent width in ha_nii MaskedColumn 49293
             eqw_hb float64                                                                  Observed-frame equivalent width in hb MaskedColumn 36439
             eqw_hd float64                                                                  Observed-frame equivalent width in hd MaskedColumn 40299
       eqw_hei_1083 float64                                                            Observed-frame equivalent width in hei_1083 MaskedColumn 46257
       eqw_hei_3889 float64                                                            Observed-frame equivalent width in hei_3889 MaskedColumn 51346
       eqw_hei_5877 float64                                                            Observed-frame equivalent width in hei_5877 MaskedColumn 34498
       eqw_hei_7065 float64                                                            Observed-frame equivalent width in hei_7065 MaskedColumn 35702
       eqw_hei_8446 float64                                                            Observed-frame equivalent width in hei_8446 MaskedColumn 39455
      eqw_heii_1640 float64                                                           Observed-frame equivalent width in heii_1640 MaskedColumn 61666
      eqw_heii_4687 float64                                                           Observed-frame equivalent width in heii_4687 MaskedColumn 59316
             eqw_hg float64                                                                  Observed-frame equivalent width in hg MaskedColumn 38924
            eqw_lya float64                                                                 Observed-frame equivalent width in lya MaskedColumn 68665
           eqw_mgii float64                                                                Observed-frame equivalent width in mgii MaskedColumn 49348
     eqw_neiii_3867 float64                                                          Observed-frame equivalent width in neiii_3867 MaskedColumn 61873
     eqw_neiii_3968 float64                                                          Observed-frame equivalent width in neiii_3968 MaskedColumn 41256
       eqw_nev_3346 float64                                                            Observed-frame equivalent width in nev_3346 MaskedColumn 45515
      eqw_nevi_3426 float64                                                           Observed-frame equivalent width in nevi_3426 MaskedColumn 44964
      eqw_niii_1750 float64                                                           Observed-frame equivalent width in niii_1750 MaskedColumn 59948
       eqw_niv_1487 float64                                                            Observed-frame equivalent width in niv_1487 MaskedColumn 65764
        eqw_oi_6302 float64                                                             Observed-frame equivalent width in oi_6302 MaskedColumn 34357
            eqw_oii float64                                                                 Observed-frame equivalent width in oii MaskedColumn 42852
       eqw_oii_7325 float64                                                            Observed-frame equivalent width in oii_7325 MaskedColumn 50584
           eqw_oiii float64                                                                Observed-frame equivalent width in oiii MaskedColumn 57734
      eqw_oiii_1663 float64                                                           Observed-frame equivalent width in oiii_1663 MaskedColumn 61065
      eqw_oiii_4363 float64                                                           Observed-frame equivalent width in oiii_4363 MaskedColumn 60240
      eqw_oiii_4959 float64                                                           Observed-frame equivalent width in oiii_4959 MaskedColumn 58736
      eqw_oiii_5007 float64                                                           Observed-frame equivalent width in oiii_5007 MaskedColumn 58608
           eqw_pa10 float64                                                                Observed-frame equivalent width in pa10 MaskedColumn 41179
            eqw_pa8 float64                                                                 Observed-frame equivalent width in pa8 MaskedColumn 42725
            eqw_pa9 float64                                                                 Observed-frame equivalent width in pa9 MaskedColumn 41798
            eqw_paa float64                                                                 Observed-frame equivalent width in paa MaskedColumn 63671
            eqw_pab float64                                                                 Observed-frame equivalent width in pab MaskedColumn 52477
            eqw_pad float64                                                                 Observed-frame equivalent width in pad MaskedColumn 44239
            eqw_pag float64                                                                 Observed-frame equivalent width in pag MaskedColumn 46592
            eqw_pfb float64                                                                 Observed-frame equivalent width in pfb MaskedColumn 79212
            eqw_pfd float64                                                                 Observed-frame equivalent width in pfd MaskedColumn 74920
            eqw_pfe float64                                                                 Observed-frame equivalent width in pfe MaskedColumn 73680
            eqw_pfg float64                                                                 Observed-frame equivalent width in pfg MaskedColumn 76556
            eqw_sii float64                                                                 Observed-frame equivalent width in sii MaskedColumn 49501
      eqw_siii_9068 float64                                                           Observed-frame equivalent width in siii_9068 MaskedColumn 41361
      eqw_siii_9531 float64                                                           Observed-frame equivalent width in siii_9531 MaskedColumn 42685
        line_ha_nii float64                                                            Line flux of combined Ha+NII with 3:1 ratio MaskedColumn 49269
    line_ha_nii_err float64                                                                                                        MaskedColumn 49273
            eqw_h10 float64                                                                 Observed-frame equivalent width in h10 MaskedColumn 71081
            eqw_h11 float64                                                                 Observed-frame equivalent width in h11 MaskedColumn 71209
            eqw_h12 float64                                                                 Observed-frame equivalent width in h12 MaskedColumn 71254
             eqw_h7 float64                                                                  Observed-frame equivalent width in h7 MaskedColumn 70536
             eqw_h8 float64                                                                  Observed-frame equivalent width in h8 MaskedColumn 70806
             eqw_h9 float64                                                                  Observed-frame equivalent width in h9 MaskedColumn 70958
             eqw_ha float64                                                                  Observed-frame equivalent width in ha MaskedColumn 65643
       eqw_hei_6680 float64                                                            Observed-frame equivalent width in hei_6680 MaskedColumn 65749
       eqw_nii_6549 float64                                                            Observed-frame equivalent width in nii_6549 MaskedColumn 65635
       eqw_nii_6584 float64                                                            Observed-frame equivalent width in nii_6584 MaskedColumn 65647
       eqw_oii_7323 float64                                                            Observed-frame equivalent width in oii_7323 MaskedColumn 66230
       eqw_oii_7332 float64                                                            Observed-frame equivalent width in oii_7332 MaskedColumn 66244
       eqw_sii_6717 float64                                                            Observed-frame equivalent width in sii_6717 MaskedColumn 65776
       eqw_sii_6731 float64                                                            Observed-frame equivalent width in sii_6731 MaskedColumn 65760
      eqw_siii_6314 float64                                                           Observed-frame equivalent width in siii_6314 MaskedColumn 65692
            sn_line float64           .1f                                                                 Maximum emission line SN MaskedColumn 18242
              ztime float64                                                                              UNIX time of redshift fit MaskedColumn 18242
       line_ci_9850 float64                                                                   Line flux of ci_9850 1e-20 erg/s/cm2 MaskedColumn 43554
   line_ci_9850_err float64                                                                                                        MaskedColumn 43558
    line_feii_11128 float64                                                                Line flux of feii_11128 1e-20 erg/s/cm2 MaskedColumn 47164
line_feii_11128_err float64                                                                                                        MaskedColumn 47167
     line_pii_11886 float64                                                                 Line flux of pii_11886 1e-20 erg/s/cm2 MaskedColumn 49532
 line_pii_11886_err float64                                                                                                        MaskedColumn 49532
    line_feii_12570 float64                                                                Line flux of feii_12570 1e-20 erg/s/cm2 MaskedColumn 51790
line_feii_12570_err float64                                                                                                        MaskedColumn 51790
        eqw_ci_9850 float64                                                             Observed-frame equivalent width in ci_9850 MaskedColumn 43588
     eqw_feii_11128 float64                                                          Observed-frame equivalent width in feii_11128 MaskedColumn 47206
      eqw_pii_11886 float64                                                           Observed-frame equivalent width in pii_11886 MaskedColumn 49563
     eqw_feii_12570 float64                                                          Observed-frame equivalent width in feii_12570 MaskedColumn 51827
    line_feii_16440 float64                                                                Line flux of feii_16440 1e-20 erg/s/cm2 MaskedColumn 59928
line_feii_16440_err float64                                                                                                        MaskedColumn 59928
    line_feii_16877 float64                                                                Line flux of feii_16877 1e-20 erg/s/cm2 MaskedColumn 60978
line_feii_16877_err float64                                                                                                        MaskedColumn 60978
           line_brf float64                                                                       Line flux of brf 1e-20 erg/s/cm2 MaskedColumn 61730
       line_brf_err float64                                                                                                        MaskedColumn 61730
    line_feii_17418 float64                                                                Line flux of feii_17418 1e-20 erg/s/cm2 MaskedColumn 61813
line_feii_17418_err float64                                                                                                        MaskedColumn 61813
           line_bre float64                                                                       Line flux of bre 1e-20 erg/s/cm2 MaskedColumn 62881
       line_bre_err float64                                                                                                        MaskedColumn 62882
    line_feii_18362 float64                                                                Line flux of feii_18362 1e-20 erg/s/cm2 MaskedColumn 63211
line_feii_18362_err float64                                                                                                        MaskedColumn 63211
     eqw_feii_16440 float64                                                          Observed-frame equivalent width in feii_16440 MaskedColumn 59946
     eqw_feii_16877 float64                                                          Observed-frame equivalent width in feii_16877 MaskedColumn 60995
            eqw_brf float64                                                                 Observed-frame equivalent width in brf MaskedColumn 61749
     eqw_feii_17418 float64                                                          Observed-frame equivalent width in feii_17418 MaskedColumn 61829
            eqw_bre float64                                                                 Observed-frame equivalent width in bre MaskedColumn 62895
     eqw_feii_18362 float64                                                          Observed-frame equivalent width in feii_18362 MaskedColumn 63227
              valid    str5                                                         Redshift matches best z from visual inspection MaskedColumn 38983
              objid   int64                                                                               Unique source identifier       Column     0
             z_best float64                                                              Best redshift estimate for unique sources       Column     0
              ztype    str1                                                                 Source for z_best (G)rating or (P)rism MaskedColumn 38728
            z_prism float64                                                              Best redshift estimate from prism spectra       Column     0
          z_grating float64                                                            Best redshift estiamte from grating spectra       Column     0
    phot_correction float64           .2f Scale to photometry -log10(c) = -0.902 log10(flux_radius) + 0.649 log10(profsig) + 0.605 MaskedColumn 29922
   phot_flux_radius float64           .2f                                                      FLUX_RADIUS from photometric source MaskedColumn 29922
            phot_dr float64                                      Offset to the nearest source in the photometric catalog in arcsec MaskedColumn 29922
          file_phot   str44                                                                    Filename of the photometric catalog MaskedColumn 29922
            id_phot   int64                                                                  ID number in the photometric cadtalog MaskedColumn 29922
      phot_mag_auto float64           .2f                                         Kron MAG_AUTO in the photometric detection image MaskedColumn 29922
   phot_f090w_tot_1 float64                                                  Total f090w flux density from the photometric catalog MaskedColumn 29922
  phot_f090w_etot_1 float64                                                                                                        MaskedColumn 29922
   phot_f115w_tot_1 float64                                                  Total f115w flux density from the photometric catalog MaskedColumn 29922
  phot_f115w_etot_1 float64                                                                                                        MaskedColumn 29922
   phot_f150w_tot_1 float64                                                  Total f150w flux density from the photometric catalog MaskedColumn 29922
  phot_f150w_etot_1 float64                                                                                                        MaskedColumn 29922
   phot_f200w_tot_1 float64                                                  Total f200w flux density from the photometric catalog MaskedColumn 29922
  phot_f200w_etot_1 float64                                                                                                        MaskedColumn 29922
   phot_f277w_tot_1 float64                                                  Total f277w flux density from the photometric catalog MaskedColumn 29922
  phot_f277w_etot_1 float64                                                                                                        MaskedColumn 29922
   phot_f356w_tot_1 float64                                                  Total f356w flux density from the photometric catalog MaskedColumn 29922
  phot_f356w_etot_1 float64                                                                                                        MaskedColumn 29922
   phot_f410m_tot_1 float64                                                  Total f410m flux density from the photometric catalog MaskedColumn 29922
  phot_f410m_etot_1 float64                                                                                                        MaskedColumn 29922
   phot_f444w_tot_1 float64                                                  Total f444w flux density from the photometric catalog MaskedColumn 29922
  phot_f444w_etot_1 float64                                                                                                        MaskedColumn 29922
            phot_Av float64                                                                                 Av from the photoz fit MaskedColumn 29922
          phot_mass float64                                                                       stellar mass from the photoz fit MaskedColumn 29922
         phot_restU float64                                              flux density of the redshifted U band from the photoz fit MaskedColumn 29922
         phot_restV float64                                              flux density of the redshifted V band from the photoz fit MaskedColumn 29922
         phot_restJ float64                                              flux density of the redshifted J band from the photoz fit MaskedColumn 29922
             z_phot float64                                                                                   photometric redshift MaskedColumn 29922
           phot_LHa float64                                                                 Halpha luminosity from the photo-z fit MaskedColumn 29922
         phot_LOIII float64                                                                   OIII luminosity from the photo-z fit MaskedColumn 29922
          phot_LOII float64                                                                    OII luminosity from the photo-z fit MaskedColumn 29922
              grade   int64                                                                           Grade from visual inspection MaskedColumn 38015
             zgrade float64          9.5f                                                          Redshift from visual inspection MaskedColumn 38015
           reviewer    str4                                                             Initials of the visual inspection reviewer MaskedColumn 38015
            comment   str93                                                                         Comment from visual inspection MaskedColumn 48371
                zrf float64                                                         Redshift used for integrated rest-frame filter MaskedColumn 18242
             escale float64                                                                                                        MaskedColumn 18242
      obs_239_valid   int64                                                                                                        MaskedColumn 18242
       obs_239_frac float64                                                      Fraction of wfc_f814w_t81.dat covered by spectrum MaskedColumn 18242
       obs_239_flux float64                                                                     Spectrum flux in wfc_f814w_t81.dat MaskedColumn 18242
        obs_239_err float64                                                                      Spectrum err in wfc_f814w_t81.dat MaskedColumn 18242
   obs_239_full_err float64                                                                      Spectrum err in wfc_f814w_t81.dat MaskedColumn 18242
      obs_205_valid   int64                                                                                                        MaskedColumn 18242
       obs_205_frac float64                                                              Fraction of f160w.dat covered by spectrum MaskedColumn 18242
       obs_205_flux float64                                                                             Spectrum flux in f160w.dat MaskedColumn 18242
        obs_205_err float64                                                                              Spectrum err in f160w.dat MaskedColumn 18242
   obs_205_full_err float64                                                                              Spectrum err in f160w.dat MaskedColumn 18242
      obs_362_valid   int64                                                                                                        MaskedColumn 18242
       obs_362_frac float64                                                      Fraction of jwst_nircam_f070w covered by spectrum MaskedColumn 18242
       obs_362_flux float64                                                                     Spectrum flux in jwst_nircam_f070w MaskedColumn 18242
        obs_362_err float64                                                                      Spectrum err in jwst_nircam_f070w MaskedColumn 18242
   obs_362_full_err float64                                                                      Spectrum err in jwst_nircam_f070w MaskedColumn 18242
      obs_363_valid   int64                                                                                                        MaskedColumn 18242
       obs_363_frac float64                                                      Fraction of jwst_nircam_f090w covered by spectrum MaskedColumn 18242
       obs_363_flux float64                                                                     Spectrum flux in jwst_nircam_f090w MaskedColumn 18242
        obs_363_err float64                                                                      Spectrum err in jwst_nircam_f090w MaskedColumn 18242
   obs_363_full_err float64                                                                      Spectrum err in jwst_nircam_f090w MaskedColumn 18242
      obs_364_valid   int64                                                                                                        MaskedColumn 18242
       obs_364_frac float64                                                      Fraction of jwst_nircam_f115w covered by spectrum MaskedColumn 18242
       obs_364_flux float64                                                                     Spectrum flux in jwst_nircam_f115w MaskedColumn 18242
        obs_364_err float64                                                                      Spectrum err in jwst_nircam_f115w MaskedColumn 18242
   obs_364_full_err float64                                                                      Spectrum err in jwst_nircam_f115w MaskedColumn 18242
      obs_365_valid   int64                                                                                                        MaskedColumn 18242
       obs_365_frac float64                                                      Fraction of jwst_nircam_f150w covered by spectrum MaskedColumn 18242
       obs_365_flux float64                                                                     Spectrum flux in jwst_nircam_f150w MaskedColumn 18242
        obs_365_err float64                                                                      Spectrum err in jwst_nircam_f150w MaskedColumn 18242
   obs_365_full_err float64                                                                      Spectrum err in jwst_nircam_f150w MaskedColumn 18242
      obs_366_valid   int64                                                                                                        MaskedColumn 18242
       obs_366_frac float64                                                      Fraction of jwst_nircam_f200w covered by spectrum MaskedColumn 18242
       obs_366_flux float64                                                                     Spectrum flux in jwst_nircam_f200w MaskedColumn 18242
        obs_366_err float64                                                                      Spectrum err in jwst_nircam_f200w MaskedColumn 18242
   obs_366_full_err float64                                                                      Spectrum err in jwst_nircam_f200w MaskedColumn 18242
      obs_370_valid   int64                                                                                                        MaskedColumn 18242
       obs_370_frac float64                                                      Fraction of jwst_nircam_f182m covered by spectrum MaskedColumn 18242
       obs_370_flux float64                                                                     Spectrum flux in jwst_nircam_f182m MaskedColumn 18242
        obs_370_err float64                                                                      Spectrum err in jwst_nircam_f182m MaskedColumn 18242
   obs_370_full_err float64                                                                      Spectrum err in jwst_nircam_f182m MaskedColumn 18242
      obs_371_valid   int64                                                                                                        MaskedColumn 18242
       obs_371_frac float64                                                      Fraction of jwst_nircam_f210m covered by spectrum MaskedColumn 18242
       obs_371_flux float64                                                                     Spectrum flux in jwst_nircam_f210m MaskedColumn 18242
        obs_371_err float64                                                                      Spectrum err in jwst_nircam_f210m MaskedColumn 18242
   obs_371_full_err float64                                                                      Spectrum err in jwst_nircam_f210m MaskedColumn 18242
      obs_375_valid   int64                                                                                                        MaskedColumn 18242
       obs_375_frac float64                                                      Fraction of jwst_nircam_f277w covered by spectrum MaskedColumn 18242
       obs_375_flux float64                                                                     Spectrum flux in jwst_nircam_f277w MaskedColumn 18242
        obs_375_err float64                                                                      Spectrum err in jwst_nircam_f277w MaskedColumn 18242
   obs_375_full_err float64                                                                      Spectrum err in jwst_nircam_f277w MaskedColumn 18242
      obs_376_valid   int64                                                                                                        MaskedColumn 18242
       obs_376_frac float64                                                      Fraction of jwst_nircam_f356w covered by spectrum MaskedColumn 18242
       obs_376_flux float64                                                                     Spectrum flux in jwst_nircam_f356w MaskedColumn 18242
        obs_376_err float64                                                                      Spectrum err in jwst_nircam_f356w MaskedColumn 18242
   obs_376_full_err float64                                                                      Spectrum err in jwst_nircam_f356w MaskedColumn 18242
      obs_377_valid   int64                                                                                                        MaskedColumn 18242
       obs_377_frac float64                                                      Fraction of jwst_nircam_f444w covered by spectrum MaskedColumn 18242
       obs_377_flux float64                                                                     Spectrum flux in jwst_nircam_f444w MaskedColumn 18242
        obs_377_err float64                                                                      Spectrum err in jwst_nircam_f444w MaskedColumn 18242
   obs_377_full_err float64                                                                      Spectrum err in jwst_nircam_f444w MaskedColumn 18242
      obs_379_valid   int64                                                                                                        MaskedColumn 18242
       obs_379_frac float64                                                      Fraction of jwst_nircam_f250m covered by spectrum MaskedColumn 18242
       obs_379_flux float64                                                                     Spectrum flux in jwst_nircam_f250m MaskedColumn 18242
        obs_379_err float64                                                                      Spectrum err in jwst_nircam_f250m MaskedColumn 18242
   obs_379_full_err float64                                                                      Spectrum err in jwst_nircam_f250m MaskedColumn 18242
      obs_380_valid   int64                                                                                                        MaskedColumn 18242
       obs_380_frac float64                                                      Fraction of jwst_nircam_f300m covered by spectrum MaskedColumn 18242
       obs_380_flux float64                                                                     Spectrum flux in jwst_nircam_f300m MaskedColumn 18242
        obs_380_err float64                                                                      Spectrum err in jwst_nircam_f300m MaskedColumn 18242
   obs_380_full_err float64                                                                      Spectrum err in jwst_nircam_f300m MaskedColumn 18242
      obs_381_valid   int64                                                                                                        MaskedColumn 18242
       obs_381_frac float64                                                      Fraction of jwst_nircam_f335m covered by spectrum MaskedColumn 18242
       obs_381_flux float64                                                                     Spectrum flux in jwst_nircam_f335m MaskedColumn 18242
        obs_381_err float64                                                                      Spectrum err in jwst_nircam_f335m MaskedColumn 18242
   obs_381_full_err float64                                                                      Spectrum err in jwst_nircam_f335m MaskedColumn 18242
      obs_382_valid   int64                                                                                                        MaskedColumn 18242
       obs_382_frac float64                                                      Fraction of jwst_nircam_f360m covered by spectrum MaskedColumn 18242
       obs_382_flux float64                                                                     Spectrum flux in jwst_nircam_f360m MaskedColumn 18242
        obs_382_err float64                                                                      Spectrum err in jwst_nircam_f360m MaskedColumn 18242
   obs_382_full_err float64                                                                      Spectrum err in jwst_nircam_f360m MaskedColumn 18242
      obs_383_valid   int64                                                                                                        MaskedColumn 18242
       obs_383_frac float64                                                      Fraction of jwst_nircam_f410m covered by spectrum MaskedColumn 18242
       obs_383_flux float64                                                                     Spectrum flux in jwst_nircam_f410m MaskedColumn 18242
        obs_383_err float64                                                                      Spectrum err in jwst_nircam_f410m MaskedColumn 18242
   obs_383_full_err float64                                                                      Spectrum err in jwst_nircam_f410m MaskedColumn 18242
      obs_384_valid   int64                                                                                                        MaskedColumn 18242
       obs_384_frac float64                                                      Fraction of jwst_nircam_f430m covered by spectrum MaskedColumn 18242
       obs_384_flux float64                                                                     Spectrum flux in jwst_nircam_f430m MaskedColumn 18242
        obs_384_err float64                                                                      Spectrum err in jwst_nircam_f430m MaskedColumn 18242
   obs_384_full_err float64                                                                      Spectrum err in jwst_nircam_f430m MaskedColumn 18242
      obs_385_valid   int64                                                                                                        MaskedColumn 18242
       obs_385_frac float64                                                      Fraction of jwst_nircam_f460m covered by spectrum MaskedColumn 18242
       obs_385_flux float64                                                                     Spectrum flux in jwst_nircam_f460m MaskedColumn 18242
        obs_385_err float64                                                                      Spectrum err in jwst_nircam_f460m MaskedColumn 18242
   obs_385_full_err float64                                                                      Spectrum err in jwst_nircam_f460m MaskedColumn 18242
      obs_386_valid   int64                                                                                                        MaskedColumn 18242
       obs_386_frac float64                                                      Fraction of jwst_nircam_f480m covered by spectrum MaskedColumn 18242
       obs_386_flux float64                                                                     Spectrum flux in jwst_nircam_f480m MaskedColumn 18242
        obs_386_err float64                                                                      Spectrum err in jwst_nircam_f480m MaskedColumn 18242
   obs_386_full_err float64                                                                      Spectrum err in jwst_nircam_f480m MaskedColumn 18242
     rest_120_valid   int64                                                                                                        MaskedColumn 18242
      rest_120_frac float64                                                          Fraction of galex1500.res covered by spectrum MaskedColumn 18242
      rest_120_flux float64                                                                         Spectrum flux in galex1500.res MaskedColumn 18242
       rest_120_err float64                                                                          Spectrum err in galex1500.res MaskedColumn 18242
  rest_120_full_err float64                                                                          Spectrum err in galex1500.res MaskedColumn 18242
     rest_121_valid   int64                                                                                                        MaskedColumn 18242
      rest_121_frac float64                                                          Fraction of galex2500.res covered by spectrum MaskedColumn 18242
      rest_121_flux float64                                                                         Spectrum flux in galex2500.res MaskedColumn 18242
       rest_121_err float64                                                                          Spectrum err in galex2500.res MaskedColumn 18242
  rest_121_full_err float64                                                                          Spectrum err in galex2500.res MaskedColumn 18242
     rest_218_valid   int64                                                                                                        MaskedColumn 18242
      rest_218_frac float64                                                             Fraction of UV1600.dat covered by spectrum MaskedColumn 18242
      rest_218_flux float64                                                                            Spectrum flux in UV1600.dat MaskedColumn 18242
       rest_218_err float64                                                                             Spectrum err in UV1600.dat MaskedColumn 18242
  rest_218_full_err float64                                                                             Spectrum err in UV1600.dat MaskedColumn 18242
     rest_219_valid   int64                                                                                                        MaskedColumn 18242
      rest_219_frac float64                                                             Fraction of UV2800.dat covered by spectrum MaskedColumn 18242
      rest_219_flux float64                                                                            Spectrum flux in UV2800.dat MaskedColumn 18242
       rest_219_err float64                                                                             Spectrum err in UV2800.dat MaskedColumn 18242
  rest_219_full_err float64                                                                             Spectrum err in UV2800.dat MaskedColumn 18242
     rest_270_valid   int64                                                                                                        MaskedColumn 18242
      rest_270_frac float64                                                    Fraction of Tophat_1400_200.dat covered by spectrum MaskedColumn 18242
      rest_270_flux float64                                                                   Spectrum flux in Tophat_1400_200.dat MaskedColumn 18242
       rest_270_err float64                                                                    Spectrum err in Tophat_1400_200.dat MaskedColumn 18242
  rest_270_full_err float64                                                                    Spectrum err in Tophat_1400_200.dat MaskedColumn 18242
     rest_271_valid   int64                                                                                                        MaskedColumn 18242
      rest_271_frac float64                                                    Fraction of Tophat_1700_200.dat covered by spectrum MaskedColumn 18242
      rest_271_flux float64                                                                   Spectrum flux in Tophat_1700_200.dat MaskedColumn 18242
       rest_271_err float64                                                                    Spectrum err in Tophat_1700_200.dat MaskedColumn 18242
  rest_271_full_err float64                                                                    Spectrum err in Tophat_1700_200.dat MaskedColumn 18242
     rest_272_valid   int64                                                                                                        MaskedColumn 18242
      rest_272_frac float64                                                    Fraction of Tophat_2200_200.dat covered by spectrum MaskedColumn 18242
      rest_272_flux float64                                                                   Spectrum flux in Tophat_2200_200.dat MaskedColumn 18242
       rest_272_err float64                                                                    Spectrum err in Tophat_2200_200.dat MaskedColumn 18242
  rest_272_full_err float64                                                                    Spectrum err in Tophat_2200_200.dat MaskedColumn 18242
     rest_274_valid   int64                                                                                                        MaskedColumn 18242
      rest_274_frac float64                                                    Fraction of Tophat_2800_200.dat covered by spectrum MaskedColumn 18242
      rest_274_flux float64                                                                   Spectrum flux in Tophat_2800_200.dat MaskedColumn 18242
       rest_274_err float64                                                                    Spectrum err in Tophat_2800_200.dat MaskedColumn 18242
  rest_274_full_err float64                                                                    Spectrum err in Tophat_2800_200.dat MaskedColumn 18242
     rest_153_valid   int64                                                                                                        MaskedColumn 18242
      rest_153_frac float64                                           Fraction of maiz-apellaniz_Johnson_U.res covered by spectrum MaskedColumn 18242
      rest_153_flux float64                                                          Spectrum flux in maiz-apellaniz_Johnson_U.res MaskedColumn 18242
       rest_153_err float64                                                           Spectrum err in maiz-apellaniz_Johnson_U.res MaskedColumn 18242
  rest_153_full_err float64                                                           Spectrum err in maiz-apellaniz_Johnson_U.res MaskedColumn 18242
     rest_154_valid   int64                                                                                                        MaskedColumn 18242
      rest_154_frac float64                                           Fraction of maiz-apellaniz_Johnson_B.res covered by spectrum MaskedColumn 18242
      rest_154_flux float64                                                          Spectrum flux in maiz-apellaniz_Johnson_B.res MaskedColumn 18242
       rest_154_err float64                                                           Spectrum err in maiz-apellaniz_Johnson_B.res MaskedColumn 18242
  rest_154_full_err float64                                                           Spectrum err in maiz-apellaniz_Johnson_B.res MaskedColumn 18242
     rest_155_valid   int64                                                                                                        MaskedColumn 18242
      rest_155_frac float64                                           Fraction of maiz-apellaniz_Johnson_V.res covered by spectrum MaskedColumn 18242
      rest_155_flux float64                                                          Spectrum flux in maiz-apellaniz_Johnson_V.res MaskedColumn 18242
       rest_155_err float64                                                           Spectrum err in maiz-apellaniz_Johnson_V.res MaskedColumn 18242
  rest_155_full_err float64                                                           Spectrum err in maiz-apellaniz_Johnson_V.res MaskedColumn 18242
     rest_156_valid   int64                                                                                                        MaskedColumn 18242
      rest_156_frac float64                                                                  Fraction of u.dat covered by spectrum MaskedColumn 18242
      rest_156_flux float64                                                                                 Spectrum flux in u.dat MaskedColumn 18242
       rest_156_err float64                                                                                  Spectrum err in u.dat MaskedColumn 18242
  rest_156_full_err float64                                                                                  Spectrum err in u.dat MaskedColumn 18242
     rest_157_valid   int64                                                                                                        MaskedColumn 18242
      rest_157_frac float64                                                                  Fraction of g.dat covered by spectrum MaskedColumn 18242
      rest_157_flux float64                                                                                 Spectrum flux in g.dat MaskedColumn 18242
       rest_157_err float64                                                                                  Spectrum err in g.dat MaskedColumn 18242
  rest_157_full_err float64                                                                                  Spectrum err in g.dat MaskedColumn 18242
     rest_158_valid   int64                                                                                                        MaskedColumn 18242
      rest_158_frac float64                                                                  Fraction of r.dat covered by spectrum MaskedColumn 18242
      rest_158_flux float64                                                                                 Spectrum flux in r.dat MaskedColumn 18242
       rest_158_err float64                                                                                  Spectrum err in r.dat MaskedColumn 18242
  rest_158_full_err float64                                                                                  Spectrum err in r.dat MaskedColumn 18242
     rest_159_valid   int64                                                                                                        MaskedColumn 18242
      rest_159_frac float64                                                                  Fraction of i.dat covered by spectrum MaskedColumn 18242
      rest_159_flux float64                                                                                 Spectrum flux in i.dat MaskedColumn 18242
       rest_159_err float64                                                                                  Spectrum err in i.dat MaskedColumn 18242
  rest_159_full_err float64                                                                                  Spectrum err in i.dat MaskedColumn 18242
     rest_160_valid   int64                                                                                                        MaskedColumn 18242
      rest_160_frac float64                                                                  Fraction of z.dat covered by spectrum MaskedColumn 18242
      rest_160_flux float64                                                                                 Spectrum flux in z.dat MaskedColumn 18242
       rest_160_err float64                                                                                  Spectrum err in z.dat MaskedColumn 18242
  rest_160_full_err float64                                                                                  Spectrum err in z.dat MaskedColumn 18242
     rest_161_valid   int64                                                                                                        MaskedColumn 18242
      rest_161_frac float64                                                                  Fraction of J.res covered by spectrum MaskedColumn 18242
      rest_161_flux float64                                                                                 Spectrum flux in J.res MaskedColumn 18242
       rest_161_err float64                                                                                  Spectrum err in J.res MaskedColumn 18242
  rest_161_full_err float64                                                                                  Spectrum err in J.res MaskedColumn 18242
     rest_162_valid   int64                                                                                                        MaskedColumn 18242
      rest_162_frac float64                                                                  Fraction of H.res covered by spectrum MaskedColumn 18242
      rest_162_flux float64                                                                                 Spectrum flux in H.res MaskedColumn 18242
       rest_162_err float64                                                                                  Spectrum err in H.res MaskedColumn 18242
  rest_162_full_err float64                                                                                  Spectrum err in H.res MaskedColumn 18242
     rest_163_valid   int64                                                                                                        MaskedColumn 18242
      rest_163_frac float64                                                                  Fraction of K.res covered by spectrum MaskedColumn 18242
      rest_163_flux float64                                                                                 Spectrum flux in K.res MaskedColumn 18242
       rest_163_err float64                                                                                  Spectrum err in K.res MaskedColumn 18242
  rest_163_full_err float64                                                                                  Spectrum err in K.res MaskedColumn 18242
     rest_414_valid   int64                                                                                                        MaskedColumn 18242
      rest_414_frac float64                                                            Fraction of synthetic_u covered by spectrum MaskedColumn 18242
      rest_414_flux float64                                                                           Spectrum flux in synthetic_u MaskedColumn 18242
       rest_414_err float64                                                                            Spectrum err in synthetic_u MaskedColumn 18242
  rest_414_full_err float64                                                                            Spectrum err in synthetic_u MaskedColumn 18242
     rest_415_valid   int64                                                                                                        MaskedColumn 18242
      rest_415_frac float64                                                            Fraction of synthetic_g covered by spectrum MaskedColumn 18242
      rest_415_flux float64                                                                           Spectrum flux in synthetic_g MaskedColumn 18242
       rest_415_err float64                                                                            Spectrum err in synthetic_g MaskedColumn 18242
  rest_415_full_err float64                                                                            Spectrum err in synthetic_g MaskedColumn 18242
     rest_416_valid   int64                                                                                                        MaskedColumn 18242
      rest_416_frac float64                                                            Fraction of synthetic_i covered by spectrum MaskedColumn 18242
      rest_416_flux float64                                                                           Spectrum flux in synthetic_i MaskedColumn 18242
       rest_416_err float64                                                                            Spectrum err in synthetic_i MaskedColumn 18242
  rest_416_full_err float64                                                                            Spectrum err in synthetic_i MaskedColumn 18242
               beta float64                                                                                Estimated UV slope beta MaskedColumn 51222
      beta_ref_flux float64                                                                                                        MaskedColumn 51221
          beta_npix   int64                                                                          Number of pixels for beta fit MaskedColumn 18242
           beta_wlo float64                                                                   Minimum wavelength used for beta fit MaskedColumn 51221
           beta_whi float64                                                                   Maximum wavelength used for beta fit MaskedColumn 51221
          beta_nmad float64                                                                                   NMAD of the beta fit MaskedColumn 51225
           dla_npix float64                                                                       Number of pixels for the DLA fit MaskedColumn 51221
          dla_value float64                                                                       DLA parameter from Heintz et al. MaskedColumn 51221
            dla_unc float64                                                                           Uncertainty on DLA parameter MaskedColumn 51221
        beta_cov_00 float64                                                               Components of the beta covariance matrix MaskedColumn 51221
        beta_cov_01 float64                                                               Components of the beta covariance matrix MaskedColumn 51221
        beta_cov_10 float64                                                               Components of the beta covariance matrix MaskedColumn 51221
        beta_cov_11 float64                                                               Components of the beta covariance matrix MaskedColumn 51221
</code></pre></div></div>

<h2 id="add-some-preview-columns-to-the-table">Add some preview columns to the table</h2>

<div class="language-python highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="n">RGB_URL</span> <span class="o">=</span> <span class="s">"https://grizli-cutout.herokuapp.com/thumb?size=1.5&amp;scl=2.0&amp;asinh=True&amp;filters=f115w-clear%2Cf277w-clear%2Cf444w-clear&amp;rgb_scl=1.5%2C0.74%2C1.3&amp;pl=2&amp;coord={ra}%2C{dec}"</span>
<span class="n">tab</span><span class="p">[</span><span class="s">'metafile'</span><span class="p">]</span> <span class="o">=</span> <span class="p">[</span><span class="n">m</span><span class="p">.</span><span class="n">split</span><span class="p">(</span><span class="s">'_'</span><span class="p">)[</span><span class="mi">0</span><span class="p">]</span> <span class="k">for</span> <span class="n">m</span> <span class="ow">in</span> <span class="n">tab</span><span class="p">[</span><span class="s">'msamet'</span><span class="p">]]</span>
<span class="n">SLIT_URL</span> <span class="o">=</span> <span class="s">"https://grizli-cutout.herokuapp.com/thumb?size=1.5&amp;scl=4.0&amp;invert=True&amp;filters=f444w-clear&amp;rgb_scl=1.5%2C0.74%2C1.3&amp;pl=2&amp;coord={ra}%2C{dec}&amp;nirspec=True&amp;dpi_scale=6&amp;nrs_lw=0.5&amp;nrs_alpha=0.8&amp;metafile={metafile}"</span>
<span class="n">FITS_URL</span> <span class="o">=</span> <span class="s">"https://s3.amazonaws.com/msaexp-nirspec/extractions/{root}/{file}"</span>

<span class="n">tab</span><span class="p">[</span><span class="s">'Thumb'</span><span class="p">]</span> <span class="o">=</span> <span class="p">[</span>
    <span class="s">"&lt;img src=</span><span class="se">\"</span><span class="s">{0}</span><span class="se">\"</span><span class="s"> height=200px&gt;"</span><span class="p">.</span><span class="nb">format</span><span class="p">(</span>
        <span class="n">RGB_URL</span><span class="p">.</span><span class="nb">format</span><span class="p">(</span><span class="o">**</span><span class="n">row</span><span class="p">[</span><span class="s">'ra'</span><span class="p">,</span><span class="s">'dec'</span><span class="p">])</span>
    <span class="p">)</span>
    <span class="k">for</span> <span class="n">row</span> <span class="ow">in</span> <span class="n">tab</span>
<span class="p">]</span>

<span class="n">tab</span><span class="p">[</span><span class="s">'Slit_Thumb'</span><span class="p">]</span> <span class="o">=</span> <span class="p">[</span>
    <span class="s">"&lt;img src=</span><span class="se">\"</span><span class="s">{0}</span><span class="se">\"</span><span class="s"> height=200px&gt;"</span><span class="p">.</span><span class="nb">format</span><span class="p">(</span>
        <span class="n">SLIT_URL</span><span class="p">.</span><span class="nb">format</span><span class="p">(</span><span class="o">**</span><span class="n">row</span><span class="p">[</span><span class="s">'ra'</span><span class="p">,</span><span class="s">'dec'</span><span class="p">,</span><span class="s">'metafile'</span><span class="p">])</span>
    <span class="p">)</span>
    <span class="k">for</span> <span class="n">row</span> <span class="ow">in</span> <span class="n">tab</span>
<span class="p">]</span>

<span class="n">tab</span><span class="p">[</span><span class="s">'Spectrum_fnu'</span><span class="p">]</span> <span class="o">=</span> <span class="p">[</span>
    <span class="s">"&lt;img src=</span><span class="se">\"</span><span class="s">{0}</span><span class="se">\"</span><span class="s"> height=200px&gt;"</span><span class="p">.</span><span class="nb">format</span><span class="p">(</span>
        <span class="n">FITS_URL</span><span class="p">.</span><span class="nb">format</span><span class="p">(</span><span class="o">**</span><span class="n">row</span><span class="p">[</span><span class="s">'root'</span><span class="p">,</span><span class="s">'file'</span><span class="p">]).</span><span class="n">replace</span><span class="p">(</span><span class="s">'.spec.fits'</span><span class="p">,</span> <span class="s">'.fnu.png'</span><span class="p">)</span>
    <span class="p">)</span>
    <span class="k">for</span> <span class="n">row</span> <span class="ow">in</span> <span class="n">tab</span>
<span class="p">]</span>

<span class="n">tab</span><span class="p">[</span><span class="s">'Spectrum_flam'</span><span class="p">]</span> <span class="o">=</span> <span class="p">[</span>
    <span class="s">"&lt;img src=</span><span class="se">\"</span><span class="s">{0}</span><span class="se">\"</span><span class="s"> height=200px&gt;"</span><span class="p">.</span><span class="nb">format</span><span class="p">(</span>
        <span class="n">FITS_URL</span><span class="p">.</span><span class="nb">format</span><span class="p">(</span><span class="o">**</span><span class="n">row</span><span class="p">[</span><span class="s">'root'</span><span class="p">,</span><span class="s">'file'</span><span class="p">]).</span><span class="n">replace</span><span class="p">(</span><span class="s">'.spec.fits'</span><span class="p">,</span> <span class="s">'.flam.png'</span><span class="p">)</span>
    <span class="p">)</span>
    <span class="k">for</span> <span class="n">row</span> <span class="ow">in</span> <span class="n">tab</span>
<span class="p">]</span>

<span class="c1"># CANUCS in a different bucket
</span><span class="n">canucs</span> <span class="o">=</span> <span class="n">np</span><span class="p">.</span><span class="n">isin</span><span class="p">(</span>
    <span class="n">tab</span><span class="p">[</span><span class="s">'root'</span><span class="p">],</span>
    <span class="p">[</span><span class="s">'abell370-v4'</span><span class="p">,</span> <span class="s">'macs0416-v4'</span><span class="p">,</span> <span class="s">'macs0417-v4'</span><span class="p">,</span> <span class="s">'macs1149-v4'</span><span class="p">,</span> <span class="s">'macs1423-v4'</span><span class="p">]</span>
<span class="p">)</span>

<span class="k">for</span> <span class="n">j</span> <span class="ow">in</span> <span class="n">tqdm</span><span class="p">(</span><span class="n">np</span><span class="p">.</span><span class="n">where</span><span class="p">(</span><span class="n">canucs</span><span class="p">)[</span><span class="mi">0</span><span class="p">]):</span>
    <span class="k">for</span> <span class="n">c</span> <span class="ow">in</span> <span class="p">[</span><span class="s">'Spectrum_fnu'</span><span class="p">,</span> <span class="s">'Spectrum_flam'</span><span class="p">]:</span>
        <span class="n">tab</span><span class="p">[</span><span class="n">c</span><span class="p">][</span><span class="n">j</span><span class="p">]</span> <span class="o">=</span> <span class="n">tab</span><span class="p">[</span><span class="n">c</span><span class="p">][</span><span class="n">j</span><span class="p">].</span><span class="n">replace</span><span class="p">(</span>
            <span class="s">'msaexp-nirspec/extractions'</span><span class="p">,</span>
            <span class="s">'grizli-canucs/nirspec'</span>
        <span class="p">)</span>
</code></pre></div></div>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>100%|██████████████████████████████████████████████████████████████████████████████████████████████████████████| 1534/1534 [00:00&lt;00:00, 97100.33it/s]
</code></pre></div></div>

<h2 id="zphot---zspec">zphot - zspec</h2>

<p>Compare the “best” NIRSpec redshift with <code class="language-plaintext highlighter-rouge">grade=3</code> (grating if available, prism otherwise) to the photometric redshift in the matched catalogs.</p>

<div class="language-python highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kn">import</span> <span class="nn">eazy.utils</span>
<span class="n">test</span> <span class="o">=</span> <span class="p">(</span><span class="n">tab</span><span class="p">[</span><span class="s">'grade'</span><span class="p">]</span> <span class="o">==</span> <span class="mi">3</span><span class="p">)</span> <span class="o">&amp;</span> <span class="p">(</span><span class="n">tab</span><span class="p">[</span><span class="s">'z_phot'</span><span class="p">].</span><span class="n">filled</span><span class="p">(</span><span class="o">-</span><span class="mf">1.</span><span class="p">)</span> <span class="o">&gt;</span> <span class="mi">0</span><span class="p">)</span>
<span class="n">test</span> <span class="o">&amp;=</span> <span class="p">(</span><span class="n">tab</span><span class="p">[</span><span class="s">'grating'</span><span class="p">]</span> <span class="o">==</span> <span class="s">'PRISM'</span><span class="p">)</span>
<span class="k">print</span><span class="p">(</span><span class="n">test</span><span class="p">.</span><span class="nb">sum</span><span class="p">())</span>
<span class="n">_</span> <span class="o">=</span> <span class="n">eazy</span><span class="p">.</span><span class="n">utils</span><span class="p">.</span><span class="n">zphot_zspec</span><span class="p">(</span><span class="n">tab</span><span class="p">[</span><span class="s">'z_phot'</span><span class="p">][</span><span class="n">test</span><span class="p">],</span> <span class="n">tab</span><span class="p">[</span><span class="s">'z_best'</span><span class="p">][</span><span class="n">test</span><span class="p">],</span> <span class="n">zmax</span><span class="o">=</span><span class="mi">14</span><span class="p">)</span>

</code></pre></div></div>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>13703
</code></pre></div></div>

<p><img src="/dja/assets/post_files/2025-05-01-nirspec-merged-table-v4_files/nirspec-merged-table-v4_13_1.png" alt="png" /></p>

<div class="language-python highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="c1"># Counts by mask / program
</span><span class="n">utils</span><span class="p">.</span><span class="n">Unique</span><span class="p">(</span><span class="n">tab</span><span class="p">[</span><span class="s">'root'</span><span class="p">],</span> <span class="n">sort_counts</span><span class="o">=</span><span class="bp">False</span><span class="p">)</span>
</code></pre></div></div>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>   N  value     
====  ==========
 314  abell2744-castellano1-v4
 613  abell2744-castellano2-v4
 114  abell2744-ddt-v4
 462  abell2744-glass-v4
 299  abell370-v4
 141  aurora-gdn01-v4
 153  aurora-gdn02-v4
   9  bd-ic348-gto-v4
  25  bd-orion-gto-v4
 344  bd-orion-gto2-v4
 219  bluejay-north-v4
 224  bluejay-south-v4
  52  borg-0037m3337-v4
  39  borg-0314m6712-v4
  37  borg-0409m5317-v4
  36  borg-0440m5244-v4
  38  borg-0859p4114-v4
  48  borg-0955p4528-v4
  38  borg-1033p5051-v4
  43  borg-1437p5044-v4
  31  borg-2203p1851-v4
1107  cal-m31-pn2538-v4
 414  cal-ocen-degraaff-v4
  63  cantalupo-filament-02-v4
 338  capers-cos01-v4
 286  capers-cos04-v4
 377  capers-cos07-v4
 417  capers-cos10-v4
 292  capers-cos13-v4
 306  capers-cos16-v4
 377  capers-cos19-v4
 376  capers-egs44-v4
 396  capers-egs47-v4
 408  capers-egs49-v4
 415  capers-egs53-v4
 328  capers-egs55-v4
 389  capers-egs61-v4
 372  capers-egs65-v4
 351  capers-udsp1-v4
 302  capers-udsp2-v4
 281  capers-udsp3-v4
 170  capers-udsp5-v4
 102  cecilia-v4
 259  ceers-ddt-v4
1818  ceers-v4  
  96  cosmos-alpha-v4
 367  cosmos-curti-v4
  71  cosmos-lae-martin-v4
 307  cosmos-transients-v4
  84  cristal-cos01-v4
 342  egs-mason-v4
 272  egs-nelsonx-v4
 127  excels-uds01-v4
 128  excels-uds02-v4
 136  excels-uds03-v4
 142  excels-uds04-v4
  44  gdn-chisholm-v4
 580  gdn-fujimoto-v4
 190  gdn-pah123-v4
  66  gdn-pah4-v4
  57  gds-barrufet-s156-v4
  82  gds-barrufet-s67-v4
1236  gds-deep-v4
 356  gds-egami-ddt-v4
 256  gds-maseda-v4
 724  gds-rieke-v4
 825  gds-udeep-v4
  96  glazebrook-cos-obs1-v4
 110  glazebrook-cos-obs2-v4
 108  glazebrook-cos-obs3-v4
 122  glazebrook-egs-v4
 238  glazebrook-v4
 129  glimpse-obs01-v4
 118  glimpse-obs01b-v4
 135  glimpse-obs02-v4
 192  goodsn-wide-v4
 594  goodsn-wide0-v4
 198  goodsn-wide1-v4
 581  goodsn-wide2-v4
 587  goodsn-wide3-v4
 565  goodsn-wide6-v4
 581  goodsn-wide66-v4
 567  goodsn-wide7-v4
 572  goodsn-wide8-v4
 610  gto-wide-cos01-v4
 570  gto-wide-cos02-v4
 589  gto-wide-cos03-v4
 575  gto-wide-cos04-v4
 573  gto-wide-cos05-v4
2034  gto-wide-egs1-v4
 594  gto-wide-egs2-v4
 596  gto-wide-uds10-v4
 592  gto-wide-uds11-v4
 594  gto-wide-uds12-v4
 609  gto-wide-uds13-v4
 583  gto-wide-uds14-v4
 126  iras16293-v4
 512  j0226-wang-v4
 161  j0252m0503-hennawi-02-v4
 159  j0252m0503-hennawi-07-v4
 399  j0910-wang-v4
 234  j1007p2115-hennawi-v4
  92  j1148-eilers-v4
  34  j1342-msa-v4
 774  jades-gdn-v4
1253  jades-gdn09-v4
1286  jades-gdn10-v4
1284  jades-gdn11-v4
 837  jades-gdn198-v4
3473  jades-gdn2-v4
 570  jades-gds-w03-v4
 600  jades-gds-w04-v4
 578  jades-gds-w05-v4
 579  jades-gds-w06-v4
 570  jades-gds-w07-v4
 588  jades-gds-w08-v4
 724  jades-gds-w09-v4
2979  jades-gds-wide-v4
1853  jades-gds-wide2-v4
 953  jades-gds-wide3-v4
 983  jades-gds02-v4
 970  jades-gds03-v4
1014  jades-gds04-v4
1148  jades-gds05-v4
 968  jades-gds06-v4
 978  jades-gds07-v4
1008  jades-gds08-v4
 924  jades-gds1-v4
 835  jades-gds10-v4
 100  lyc22-schaerer-01-v4
  80  lyc22-schaerer-03-v4
 104  lyc22-schaerer-12-v4
 583  macs0416-nakajima-v4
 284  macs0416-v4
 318  macs0417-v4
 404  macs1149-stiavelli-v4
 149  macs1149-stiavelli2-v4
 381  macs1149-v4
 252  macs1423-v4
  44  macsj0647-hr-v4
 137  macsj0647-single-v4
 142  macsj0647-v4
 178  mom-uds01-v4
 182  mom-uds02-v4
 755  nexus-obs3-v4
 958  nexus-obs5-v4
 426  ngc628-adamo-v4
  28  pearls-transients-v4
 325  rubies-egs51-v4
 439  rubies-egs52-v4
 450  rubies-egs53-v4
 406  rubies-egs61-v4
 497  rubies-egs62-v4
 479  rubies-egs63-v4
 516  rubies-uds1-v4
 478  rubies-uds2-v4
 433  rubies-uds21-v4
 437  rubies-uds22-v4
 405  rubies-uds23-v4
 496  rubies-uds3-v4
 443  rubies-uds31-v4
 512  rubies-uds32-v4
 491  rubies-uds33-v4
 496  rubies-uds41-v4
 471  rubies-uds42-v4
 465  rubies-uds43-v4
 225  rxj2129-ddt-v4
  86  smacs0723-ero-v4
 123  snh0pe-v4 
  78  spt0615-v4
  92  stark-a1703-v4
 147  stark-rxcj2248-v4
  62  suspense-kriek-v4
 192  ulas-j1120-gto-v4
 154  uncover-61-v4
 188  uncover-62-v4
 559  uncover-v4
  62  valentino-cosmos02-v4
  46  valentino-cosmos03-v4
  67  valentino-cosmos04-v4
 184  valentino-egs-v4
  47  valentino-obs08-v4
  99  valentino-obs10-v4
  68  valentino-obs12-v4
  58  valentino-obs15-v4
  55  valentino-obs19-v4
 106  weisz-leoa-v4
  77  weisz-tucana-v4
 225  westerlund2-imf-v4
 454  whl0137-v4





&lt;grizli.utils.Unique at 0x307cc9130&gt;
</code></pre></div></div>

<h2 id="source-counts-by-grade">Source counts by <code class="language-plaintext highlighter-rouge">grade</code></h2>

<p>Show magnitude, color, redshift distribution as a function of the visual classification <code class="language-plaintext highlighter-rouge">grade</code>:</p>

<ul>
  <li><code class="language-plaintext highlighter-rouge">3</code>: Robust redshift from one or more emission absorption features</li>
  <li><code class="language-plaintext highlighter-rouge">2</code>: Ambiguous continuum features, perhaps only one line or low confidence lines</li>
  <li><code class="language-plaintext highlighter-rouge">1</code>: No clear features in the spetrum to constrain the redshift</li>
  <li><code class="language-plaintext highlighter-rouge">0</code>: Spectrum suffers some data quality issue and should</li>
  <li><code class="language-plaintext highlighter-rouge">-1</code>: (Spectrum did not have grade from visual inspection)</li>
</ul>

<div class="language-python highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="n">fig</span><span class="p">,</span> <span class="n">axes</span> <span class="o">=</span> <span class="n">plt</span><span class="p">.</span><span class="n">subplots</span><span class="p">(</span><span class="mi">4</span><span class="p">,</span><span class="mi">2</span><span class="p">,</span><span class="n">figsize</span><span class="o">=</span><span class="p">(</span><span class="mi">8</span><span class="p">,</span><span class="mi">10</span><span class="p">),</span> <span class="n">sharex</span><span class="o">=</span><span class="bp">False</span><span class="p">,</span> <span class="n">sharey</span><span class="o">=</span><span class="bp">True</span><span class="p">)</span>

<span class="n">colors</span> <span class="o">=</span> <span class="p">{</span><span class="mi">0</span><span class="p">:</span> <span class="s">'magenta'</span><span class="p">,</span> <span class="mi">1</span><span class="p">:</span> <span class="s">'0.5'</span><span class="p">,</span> <span class="mi">2</span><span class="p">:</span> <span class="s">'coral'</span><span class="p">,</span> <span class="mi">3</span><span class="p">:</span> <span class="s">'olive'</span><span class="p">}</span>

<span class="c1"># sub = is_rubies
</span><span class="n">sub</span> <span class="o">=</span> <span class="n">tab</span><span class="p">[</span><span class="s">'ra'</span><span class="p">]</span> <span class="o">&gt;</span> <span class="mi">0</span>

<span class="n">sub</span> <span class="o">=</span> <span class="n">sub</span> <span class="o">&amp;</span> <span class="bp">True</span>

<span class="n">sub</span> <span class="o">&amp;=</span> <span class="n">tab</span><span class="p">[</span><span class="s">'z_phot'</span><span class="p">].</span><span class="n">filled</span><span class="p">(</span><span class="o">-</span><span class="mi">1</span><span class="p">)</span> <span class="o">&gt;</span> <span class="mi">0</span>
<span class="n">sub</span> <span class="o">&amp;=</span> <span class="n">tab</span><span class="p">[</span><span class="s">'grating'</span><span class="p">]</span> <span class="o">==</span> <span class="s">'PRISM'</span>

<span class="n">un</span> <span class="o">=</span> <span class="n">utils</span><span class="p">.</span><span class="n">Unique</span><span class="p">(</span><span class="n">tab</span><span class="p">[</span><span class="n">sub</span><span class="p">][</span><span class="s">'grade'</span><span class="p">].</span><span class="n">filled</span><span class="p">(</span><span class="o">-</span><span class="mi">1</span><span class="p">))</span>

<span class="n">blue</span> <span class="o">=</span> <span class="o">-</span><span class="mf">2.5</span><span class="o">*</span><span class="n">np</span><span class="p">.</span><span class="n">log10</span><span class="p">(</span><span class="n">tab</span><span class="p">[</span><span class="s">'phot_f150w_tot_1'</span><span class="p">]</span> <span class="o">/</span> <span class="n">tab</span><span class="p">[</span><span class="s">'phot_f444w_tot_1'</span><span class="p">])</span>

<span class="k">for</span> <span class="n">i</span><span class="p">,</span> <span class="n">c</span> <span class="ow">in</span> <span class="nb">enumerate</span><span class="p">([</span><span class="mi">3</span><span class="p">,</span><span class="mi">2</span><span class="p">,</span><span class="mi">1</span><span class="p">,</span><span class="mi">0</span><span class="p">]):</span>

    <span class="n">kws</span> <span class="o">=</span> <span class="nb">dict</span><span class="p">(</span>
        <span class="n">c</span> <span class="o">=</span> <span class="n">np</span><span class="p">.</span><span class="n">sqrt</span><span class="p">(</span><span class="n">tab</span><span class="p">[</span><span class="n">sub</span><span class="p">][</span><span class="n">un</span><span class="p">[</span><span class="n">c</span><span class="p">]][</span><span class="s">'exptime'</span><span class="p">]),</span> <span class="n">vmin</span><span class="o">=</span><span class="mi">900</span><span class="o">**</span><span class="mf">0.5</span><span class="p">,</span> <span class="n">vmax</span><span class="o">=</span><span class="p">(</span><span class="mi">5</span><span class="o">*</span><span class="mi">3600</span><span class="p">)</span><span class="o">**</span><span class="mf">0.5</span><span class="p">,</span> <span class="n">cmap</span><span class="o">=</span><span class="s">'magma_r'</span><span class="p">,</span>
        <span class="c1"># c = 'magenta',
</span>        <span class="n">alpha</span><span class="o">=</span><span class="mf">0.5</span><span class="p">,</span> 
        <span class="n">label</span><span class="o">=</span><span class="sa">f</span><span class="s">'Grade = </span><span class="si">{</span><span class="n">c</span><span class="si">}</span><span class="s">'</span><span class="p">,</span>
    <span class="p">)</span>
    
    <span class="n">ax</span> <span class="o">=</span> <span class="n">axes</span><span class="p">[</span><span class="n">i</span><span class="p">][</span><span class="mi">1</span><span class="p">]</span>
    <span class="n">ax</span><span class="p">.</span><span class="n">scatter</span><span class="p">(</span><span class="n">blue</span><span class="p">,</span>
               <span class="mf">23.9</span> <span class="o">-</span> <span class="mf">2.5</span><span class="o">*</span><span class="n">np</span><span class="p">.</span><span class="n">log10</span><span class="p">(</span><span class="n">tab</span><span class="p">[</span><span class="s">'phot_f444w_tot_1'</span><span class="p">]),</span>
               <span class="n">c</span><span class="o">=</span><span class="s">'0.8'</span><span class="p">,</span>
               <span class="n">alpha</span><span class="o">=</span><span class="mf">0.2</span><span class="p">,</span> 
               <span class="n">label</span><span class="o">=</span><span class="sa">f</span><span class="s">'Grade = </span><span class="si">{</span><span class="n">c</span><span class="si">}</span><span class="s">'</span><span class="p">,</span>
    <span class="p">)</span>

    <span class="n">sc</span> <span class="o">=</span> <span class="n">ax</span><span class="p">.</span><span class="n">scatter</span><span class="p">(</span><span class="n">blue</span><span class="p">[</span><span class="n">sub</span><span class="p">][</span><span class="n">un</span><span class="p">[</span><span class="n">c</span><span class="p">]],</span>
               <span class="mf">23.9</span> <span class="o">-</span> <span class="mf">2.5</span><span class="o">*</span><span class="n">np</span><span class="p">.</span><span class="n">log10</span><span class="p">(</span><span class="n">tab</span><span class="p">[</span><span class="n">sub</span><span class="p">][</span><span class="s">'phot_f444w_tot_1'</span><span class="p">])[</span><span class="n">un</span><span class="p">[</span><span class="n">c</span><span class="p">]],</span>
               <span class="o">**</span><span class="n">kws</span><span class="p">,</span>
    <span class="p">)</span>
    <span class="n">ax</span><span class="p">.</span><span class="n">grid</span><span class="p">()</span>

    <span class="k">if</span> <span class="n">i</span> <span class="o">&lt;</span> <span class="mi">3</span><span class="p">:</span>
        <span class="n">ax</span><span class="p">.</span><span class="n">set_xticklabels</span><span class="p">([])</span>

    <span class="n">ax</span><span class="p">.</span><span class="n">set_xlim</span><span class="p">(</span><span class="o">-</span><span class="mf">2.2</span><span class="p">,</span> <span class="mf">5.2</span><span class="p">)</span>
        
    <span class="n">ax</span> <span class="o">=</span> <span class="n">axes</span><span class="p">[</span><span class="n">i</span><span class="p">][</span><span class="mi">0</span><span class="p">]</span>
    
    <span class="n">ax</span><span class="p">.</span><span class="n">scatter</span><span class="p">(</span><span class="n">np</span><span class="p">.</span><span class="n">log</span><span class="p">(</span><span class="mi">1</span><span class="o">+</span><span class="n">tab</span><span class="p">[</span><span class="s">'z_phot'</span><span class="p">]),</span>
               <span class="mf">23.9</span> <span class="o">-</span> <span class="mf">2.5</span><span class="o">*</span><span class="n">np</span><span class="p">.</span><span class="n">log10</span><span class="p">(</span><span class="n">tab</span><span class="p">[</span><span class="s">'phot_f444w_tot_1'</span><span class="p">]),</span>
               <span class="n">c</span><span class="o">=</span><span class="s">'0.8'</span><span class="p">,</span>
               <span class="n">alpha</span><span class="o">=</span><span class="mf">0.2</span><span class="p">,</span> 
               <span class="n">label</span><span class="o">=</span><span class="sa">f</span><span class="s">'Grade = </span><span class="si">{</span><span class="n">c</span><span class="si">}</span><span class="s">'</span> <span class="o">+</span> <span class="s">'</span><span class="se">\n</span><span class="s">'</span> <span class="o">+</span> <span class="sa">f</span><span class="s">'N = </span><span class="si">{</span><span class="n">un</span><span class="p">[</span><span class="n">c</span><span class="p">].</span><span class="nb">sum</span><span class="p">()</span><span class="si">}</span><span class="s">'</span><span class="p">,</span>
    <span class="p">)</span>

    <span class="n">ax</span><span class="p">.</span><span class="n">scatter</span><span class="p">(</span><span class="n">np</span><span class="p">.</span><span class="n">log</span><span class="p">(</span><span class="mi">1</span><span class="o">+</span><span class="n">tab</span><span class="p">[</span><span class="n">sub</span><span class="p">][</span><span class="s">'z_phot'</span><span class="p">][</span><span class="n">un</span><span class="p">[</span><span class="n">c</span><span class="p">]]),</span>
               <span class="mf">23.9</span> <span class="o">-</span> <span class="mf">2.5</span><span class="o">*</span><span class="n">np</span><span class="p">.</span><span class="n">log10</span><span class="p">(</span><span class="n">tab</span><span class="p">[</span><span class="n">sub</span><span class="p">][</span><span class="s">'phot_f444w_tot_1'</span><span class="p">])[</span><span class="n">un</span><span class="p">[</span><span class="n">c</span><span class="p">]],</span>
               <span class="o">**</span><span class="n">kws</span><span class="p">,</span>
    <span class="p">)</span>
    
    <span class="n">ax</span><span class="p">.</span><span class="n">grid</span><span class="p">()</span>
    <span class="n">ax</span><span class="p">.</span><span class="n">text</span><span class="p">(</span>
        <span class="mf">0.95</span><span class="p">,</span> <span class="mf">0.05</span><span class="p">,</span>
        <span class="c1"># f'Grade = {c}',
</span>        <span class="sa">f</span><span class="s">'Grade = </span><span class="si">{</span><span class="n">c</span><span class="si">}</span><span class="s">'</span> <span class="o">+</span> <span class="s">'</span><span class="se">\n</span><span class="s">'</span> <span class="o">+</span> <span class="sa">f</span><span class="s">'N = </span><span class="si">{</span><span class="n">un</span><span class="p">[</span><span class="n">c</span><span class="p">].</span><span class="nb">sum</span><span class="p">()</span><span class="si">}</span><span class="s">'</span><span class="p">,</span>
        <span class="n">ha</span><span class="o">=</span><span class="s">'right'</span><span class="p">,</span> <span class="n">va</span><span class="o">=</span><span class="s">'bottom'</span><span class="p">,</span> <span class="n">fontsize</span><span class="o">=</span><span class="mi">9</span><span class="p">,</span> <span class="n">transform</span><span class="o">=</span><span class="n">ax</span><span class="p">.</span><span class="n">transAxes</span><span class="p">)</span>

    <span class="k">if</span> <span class="n">i</span> <span class="o">&lt;</span> <span class="mi">3</span><span class="p">:</span>
        <span class="n">ax</span><span class="p">.</span><span class="n">set_xticklabels</span><span class="p">([])</span>
    
    <span class="n">xt</span> <span class="o">=</span> <span class="p">[</span><span class="mi">0</span><span class="p">,</span> <span class="mi">1</span><span class="p">,</span> <span class="mi">2</span><span class="p">,</span> <span class="mi">3</span><span class="p">,</span> <span class="mi">4</span><span class="p">,</span> <span class="mi">5</span><span class="p">,</span> <span class="mi">6</span><span class="p">,</span> <span class="mi">8</span><span class="p">,</span> <span class="mi">10</span><span class="p">,</span> <span class="mi">12</span><span class="p">,</span> <span class="mi">16</span><span class="p">]</span>
    <span class="n">ax</span><span class="p">.</span><span class="n">set_xlim</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="n">np</span><span class="p">.</span><span class="n">log</span><span class="p">(</span><span class="mi">1</span><span class="o">+</span><span class="mi">17</span><span class="p">))</span>

<span class="n">ax</span><span class="p">.</span><span class="n">set_ylabel</span><span class="p">(</span><span class="s">'mag F444W'</span><span class="p">)</span>

<span class="n">cax</span> <span class="o">=</span> <span class="n">fig</span><span class="p">.</span><span class="n">add_axes</span>

<span class="n">cax</span> <span class="o">=</span> <span class="n">fig</span><span class="p">.</span><span class="n">add_axes</span><span class="p">((</span><span class="mf">0.9</span><span class="p">,</span> <span class="mf">0.1</span><span class="p">,</span> <span class="mf">0.02</span><span class="p">,</span> <span class="mf">0.15</span><span class="p">))</span>
<span class="n">cb</span> <span class="o">=</span> <span class="n">plt</span><span class="p">.</span><span class="n">colorbar</span><span class="p">(</span><span class="n">sc</span><span class="p">,</span> <span class="n">cax</span><span class="o">=</span><span class="n">cax</span><span class="p">,</span> <span class="n">orientation</span><span class="o">=</span><span class="s">'vertical'</span><span class="p">)</span>
<span class="n">ct</span> <span class="o">=</span> <span class="p">[</span><span class="mf">0.5</span><span class="p">,</span> <span class="mi">1</span><span class="p">,</span> <span class="mi">2</span><span class="p">,</span> <span class="mi">4</span><span class="p">]</span>
<span class="n">cb</span><span class="p">.</span><span class="n">set_ticks</span><span class="p">(</span><span class="n">np</span><span class="p">.</span><span class="n">sqrt</span><span class="p">(</span><span class="n">np</span><span class="p">.</span><span class="n">array</span><span class="p">(</span><span class="n">ct</span><span class="p">)</span><span class="o">*</span><span class="mi">3600</span><span class="p">))</span>
<span class="n">cb</span><span class="p">.</span><span class="n">set_ticklabels</span><span class="p">(</span><span class="n">ct</span><span class="p">)</span>
<span class="n">cb</span><span class="p">.</span><span class="n">set_label</span><span class="p">(</span><span class="s">'EXPTIME (h)'</span><span class="p">)</span>

<span class="n">ax</span><span class="p">.</span><span class="n">set_ylim</span><span class="p">(</span><span class="mi">19</span><span class="p">,</span> <span class="mi">31</span><span class="p">)</span>

<span class="n">ax</span><span class="p">.</span><span class="n">set_xticks</span><span class="p">(</span><span class="n">np</span><span class="p">.</span><span class="n">log</span><span class="p">(</span><span class="mi">1</span><span class="o">+</span><span class="n">np</span><span class="p">.</span><span class="n">array</span><span class="p">(</span><span class="n">xt</span><span class="p">)))</span>
<span class="n">ax</span><span class="p">.</span><span class="n">set_xticklabels</span><span class="p">(</span><span class="n">xt</span><span class="p">)</span>
<span class="n">ax</span><span class="p">.</span><span class="n">set_xlabel</span><span class="p">(</span><span class="sa">r</span><span class="s">'$z_\mathrm{phot}$'</span><span class="p">)</span>

<span class="n">ax</span> <span class="o">=</span> <span class="n">axes</span><span class="p">[</span><span class="mi">3</span><span class="p">][</span><span class="mi">1</span><span class="p">]</span>

<span class="n">ax</span><span class="p">.</span><span class="n">set_xlabel</span><span class="p">(</span><span class="s">'F150W - F444W'</span><span class="p">)</span>

<span class="c1"># ax.legend()
</span>
<span class="n">fig</span><span class="p">.</span><span class="n">tight_layout</span><span class="p">(</span><span class="n">pad</span><span class="o">=</span><span class="mi">1</span><span class="p">)</span>

</code></pre></div></div>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>   N  value     
====  ==========
4799          -1
 114           0
1697           1
 815           2
13703           3
</code></pre></div></div>

<p><img src="/dja/assets/post_files/2025-05-01-nirspec-merged-table-v4_files/nirspec-merged-table-v4_16_1.png" alt="png" /></p>

<h2 id="prism-sample-for-comparision">PRISM sample for comparision</h2>

<div class="language-python highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="n">is_prism</span> <span class="o">=</span> <span class="p">(</span><span class="n">tab</span><span class="p">[</span><span class="s">'grating'</span><span class="p">]</span> <span class="o">==</span> <span class="s">'PRISM'</span><span class="p">)</span>

<span class="n">sample</span> <span class="o">=</span> <span class="n">is_prism</span> <span class="o">&amp;</span> <span class="p">(</span><span class="n">tab</span><span class="p">[</span><span class="s">'grade'</span><span class="p">]</span> <span class="o">==</span> <span class="mi">3</span><span class="p">)</span>
<span class="n">sample</span> <span class="o">&amp;=</span> <span class="p">(</span><span class="n">tab</span><span class="p">[</span><span class="s">'z_best'</span><span class="p">]</span> <span class="o">&lt;</span> <span class="mi">7</span><span class="p">)</span>
<span class="n">sample</span> <span class="o">&amp;=</span> <span class="p">(</span><span class="n">tab</span><span class="p">[</span><span class="s">'zrf'</span><span class="p">]</span> <span class="o">&gt;</span> <span class="mi">0</span><span class="p">)</span> <span class="o">&amp;</span> <span class="p">(</span><span class="n">tab</span><span class="p">[</span><span class="s">'z_best'</span><span class="p">]</span> <span class="o">&gt;</span> <span class="mi">0</span><span class="p">)</span>
<span class="n">sample</span> <span class="o">&amp;=</span> <span class="n">tab</span><span class="p">[</span><span class="s">'rest_153_frac'</span><span class="p">]</span> <span class="o">&gt;</span> <span class="mf">0.8</span>
<span class="n">sample</span> <span class="o">&amp;=</span> <span class="n">tab</span><span class="p">[</span><span class="s">'rest_154_frac'</span><span class="p">]</span> <span class="o">&gt;</span> <span class="mf">0.8</span>
<span class="n">sample</span> <span class="o">&amp;=</span> <span class="n">tab</span><span class="p">[</span><span class="s">'rest_155_frac'</span><span class="p">]</span> <span class="o">&gt;</span> <span class="mf">0.8</span>
<span class="n">sample</span><span class="p">.</span><span class="nb">sum</span><span class="p">()</span>
</code></pre></div></div>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>15468
</code></pre></div></div>

<div class="language-python highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="c1"># Compare the redshift where the emission line fits were performed to the 
# "best" redshift calculated for discrete unique sources
</span><span class="n">_</span> <span class="o">=</span> <span class="n">eazy</span><span class="p">.</span><span class="n">utils</span><span class="p">.</span><span class="n">zphot_zspec</span><span class="p">(</span><span class="n">tab</span><span class="p">[</span><span class="s">'zrf'</span><span class="p">][</span><span class="n">is_prism</span><span class="p">],</span> <span class="n">tab</span><span class="p">[</span><span class="s">'z_best'</span><span class="p">][</span><span class="n">is_prism</span><span class="p">],</span> <span class="n">zmax</span><span class="o">=</span><span class="mi">8</span><span class="p">)</span>
</code></pre></div></div>

<p><img src="/dja/assets/post_files/2025-05-01-nirspec-merged-table-v4_files/nirspec-merged-table-v4_19_0.png" alt="png" /></p>

<h2 id="interpolate-halpha-eqw-from-nearby-filters">Interpolate Halpha EQW from nearby filters</h2>

<div class="language-python highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kn">import</span> <span class="nn">eazy.filters</span>
<span class="n">RES</span> <span class="o">=</span> <span class="n">eazy</span><span class="p">.</span><span class="n">filters</span><span class="p">.</span><span class="n">FilterFile</span><span class="p">()</span>

<span class="n">fb</span><span class="p">,</span> <span class="n">fr</span> <span class="o">=</span> <span class="mi">415</span><span class="p">,</span> <span class="mi">416</span>
<span class="c1">#fb, fr = 155, 416
</span><span class="n">wb</span> <span class="o">=</span> <span class="n">RES</span><span class="p">[</span><span class="n">fb</span><span class="p">].</span><span class="n">pivot</span>
<span class="n">wr</span> <span class="o">=</span> <span class="n">RES</span><span class="p">[</span><span class="n">fr</span><span class="p">].</span><span class="n">pivot</span>

<span class="n">flamb</span> <span class="o">=</span> <span class="p">(</span><span class="mi">1</span><span class="o">*</span><span class="n">u</span><span class="p">.</span><span class="n">microJansky</span><span class="p">).</span><span class="n">to</span><span class="p">(</span><span class="n">u</span><span class="p">.</span><span class="n">erg</span><span class="o">/</span><span class="n">u</span><span class="p">.</span><span class="n">second</span><span class="o">/</span><span class="n">u</span><span class="p">.</span><span class="n">cm</span><span class="o">**</span><span class="mi">2</span><span class="o">/</span><span class="n">u</span><span class="p">.</span><span class="n">Angstrom</span><span class="p">,</span> <span class="n">equivalencies</span><span class="o">=</span><span class="n">u</span><span class="p">.</span><span class="n">spectral_density</span><span class="p">(</span><span class="n">wb</span><span class="o">*</span><span class="n">u</span><span class="p">.</span><span class="n">Angstrom</span><span class="p">))</span>
<span class="n">flamr</span> <span class="o">=</span> <span class="p">(</span><span class="mi">1</span><span class="o">*</span><span class="n">u</span><span class="p">.</span><span class="n">microJansky</span><span class="p">).</span><span class="n">to</span><span class="p">(</span><span class="n">u</span><span class="p">.</span><span class="n">erg</span><span class="o">/</span><span class="n">u</span><span class="p">.</span><span class="n">second</span><span class="o">/</span><span class="n">u</span><span class="p">.</span><span class="n">cm</span><span class="o">**</span><span class="mi">2</span><span class="o">/</span><span class="n">u</span><span class="p">.</span><span class="n">Angstrom</span><span class="p">,</span> <span class="n">equivalencies</span><span class="o">=</span><span class="n">u</span><span class="p">.</span><span class="n">spectral_density</span><span class="p">(</span><span class="n">wr</span><span class="o">*</span><span class="n">u</span><span class="p">.</span><span class="n">Angstrom</span><span class="p">))</span>

<span class="n">whtb</span> <span class="o">=</span> <span class="p">(</span><span class="mi">1</span> <span class="o">-</span> <span class="n">np</span><span class="p">.</span><span class="nb">abs</span><span class="p">(</span><span class="n">wb</span> <span class="o">-</span> <span class="mf">6564.</span><span class="p">)</span><span class="o">/</span><span class="p">(</span><span class="n">wr</span><span class="o">-</span><span class="n">wb</span><span class="p">))</span><span class="c1"># *flamb
</span><span class="n">whtr</span> <span class="o">=</span> <span class="p">(</span><span class="mi">1</span> <span class="o">-</span> <span class="n">np</span><span class="p">.</span><span class="nb">abs</span><span class="p">(</span><span class="n">wr</span> <span class="o">-</span> <span class="mf">6564.</span><span class="p">)</span><span class="o">/</span><span class="p">(</span><span class="n">wr</span><span class="o">-</span><span class="n">wb</span><span class="p">))</span><span class="c1"># *flamr
</span>
<span class="n">interp_flux</span> <span class="o">=</span> <span class="n">tab</span><span class="p">[</span><span class="sa">f</span><span class="s">'rest_</span><span class="si">{</span><span class="n">fb</span><span class="si">}</span><span class="s">_flux'</span><span class="p">]</span><span class="o">*</span><span class="n">whtb</span><span class="o">*</span><span class="n">flamb</span> <span class="o">+</span> <span class="n">tab</span><span class="p">[</span><span class="sa">f</span><span class="s">'rest_</span><span class="si">{</span><span class="n">fr</span><span class="si">}</span><span class="s">_flux'</span><span class="p">]</span><span class="o">*</span><span class="n">whtr</span><span class="o">*</span><span class="n">flamr</span>

<span class="n">eqw</span> <span class="o">=</span> <span class="p">((</span><span class="n">tab</span><span class="p">[</span><span class="s">'line_ha_nii'</span><span class="p">]</span><span class="o">*</span><span class="mf">1.e-20</span><span class="o">*</span><span class="n">u</span><span class="p">.</span><span class="n">erg</span><span class="o">/</span><span class="n">u</span><span class="p">.</span><span class="n">second</span><span class="o">/</span><span class="n">u</span><span class="p">.</span><span class="n">cm</span><span class="o">**</span><span class="mi">2</span> <span class="o">/</span> <span class="p">(</span><span class="n">interp_flux</span> <span class="o">/</span> <span class="p">(</span><span class="mi">1</span><span class="o">+</span><span class="n">tab</span><span class="p">[</span><span class="s">'zline'</span><span class="p">])</span><span class="o">**</span><span class="mi">1</span><span class="p">))).</span><span class="n">value</span>

<span class="n">plt</span><span class="p">.</span><span class="n">scatter</span><span class="p">(</span>
    <span class="p">(</span><span class="n">np</span><span class="p">.</span><span class="n">maximum</span><span class="p">(</span><span class="n">tab</span><span class="p">[</span><span class="s">'eqw_ha_nii'</span><span class="p">],</span> <span class="o">-</span><span class="mi">100</span><span class="p">)</span> <span class="o">/</span> <span class="p">(</span><span class="mi">1</span><span class="o">+</span><span class="n">tab</span><span class="p">[</span><span class="s">'zline'</span><span class="p">])</span><span class="o">**</span><span class="mi">1</span><span class="p">)[</span><span class="n">sample</span><span class="p">],</span>
    <span class="n">eqw</span><span class="p">[</span><span class="n">sample</span><span class="p">],</span> <span class="n">alpha</span><span class="o">=</span><span class="mf">0.02</span>
<span class="p">)</span>
<span class="n">plt</span><span class="p">.</span><span class="n">plot</span><span class="p">([</span><span class="mf">0.1</span><span class="p">,</span> <span class="mf">1e7</span><span class="p">],</span> <span class="p">[</span><span class="mf">0.1</span><span class="p">,</span> <span class="mf">1e7</span><span class="p">],</span> <span class="n">color</span><span class="o">=</span><span class="s">'r'</span><span class="p">,</span> <span class="n">alpha</span><span class="o">=</span><span class="mf">0.5</span><span class="p">)</span>
<span class="n">plt</span><span class="p">.</span><span class="n">loglog</span><span class="p">()</span>
<span class="n">plt</span><span class="p">.</span><span class="n">grid</span><span class="p">()</span>
<span class="n">plt</span><span class="p">.</span><span class="n">xlim</span><span class="p">(</span><span class="mf">0.02</span><span class="p">,</span> <span class="mf">1.e5</span><span class="p">);</span> <span class="n">plt</span><span class="p">.</span><span class="n">ylim</span><span class="p">(</span><span class="mf">0.02</span><span class="p">,</span> <span class="mf">1.e5</span><span class="p">)</span>
<span class="n">plt</span><span class="p">.</span><span class="n">xlabel</span><span class="p">(</span><span class="sa">r</span><span class="s">'H$\alpha$ EQW, template fit'</span><span class="p">)</span>
<span class="n">plt</span><span class="p">.</span><span class="n">ylabel</span><span class="p">(</span><span class="sa">r</span><span class="s">'H$\alpha$ EQW, line flux / estimated continuum'</span><span class="p">)</span>

<span class="k">if</span> <span class="mi">1</span><span class="p">:</span>
    <span class="k">print</span><span class="p">(</span><span class="s">'Use interpolated EQW'</span><span class="p">)</span>
    <span class="n">eqw_lim</span> <span class="o">=</span> <span class="n">np</span><span class="p">.</span><span class="n">maximum</span><span class="p">(</span><span class="n">tab</span><span class="p">[</span><span class="s">'line_ha_nii'</span><span class="p">],</span> <span class="n">tab</span><span class="p">[</span><span class="s">'line_ha_nii_err'</span><span class="p">]</span><span class="o">*</span><span class="mi">2</span><span class="p">)</span> <span class="o">*</span> <span class="mf">1.e-20</span><span class="o">*</span><span class="n">u</span><span class="p">.</span><span class="n">erg</span><span class="o">/</span><span class="n">u</span><span class="p">.</span><span class="n">second</span><span class="o">/</span><span class="n">u</span><span class="p">.</span><span class="n">cm</span><span class="o">**</span><span class="mi">2</span> <span class="o">/</span> <span class="p">(</span><span class="n">interp_flux</span> <span class="o">/</span> <span class="p">(</span><span class="mi">1</span><span class="o">+</span><span class="n">tab</span><span class="p">[</span><span class="s">'zline'</span><span class="p">]))</span>
    <span class="n">is_eqw_lim</span> <span class="o">=</span> <span class="n">tab</span><span class="p">[</span><span class="s">'line_ha_nii_err'</span><span class="p">]</span><span class="o">*</span><span class="mi">2</span> <span class="o">&gt;</span> <span class="n">tab</span><span class="p">[</span><span class="s">'line_ha_nii'</span><span class="p">]</span>
    <span class="n">eqw</span><span class="p">[</span><span class="n">is_eqw_lim</span><span class="p">]</span> <span class="o">=</span> <span class="n">eqw_lim</span><span class="p">.</span><span class="n">value</span><span class="p">[</span><span class="n">is_eqw_lim</span><span class="p">]</span>
    <span class="n">tab</span><span class="p">[</span><span class="s">'ha_eqw_with_limits'</span><span class="p">]</span> <span class="o">=</span> <span class="n">eqw</span>
    <span class="n">tab</span><span class="p">[</span><span class="s">'ha_eqw_is_limit'</span><span class="p">]</span> <span class="o">=</span> <span class="n">is_eqw_lim</span>
    
</code></pre></div></div>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>Use interpolated EQW
</code></pre></div></div>

<p><img src="/dja/assets/post_files/2025-05-01-nirspec-merged-table-v4_files/nirspec-merged-table-v4_21_1.png" alt="png" /></p>

<h2 id="stellar-population-properties">Stellar population properties</h2>

<ul>
  <li>Rest-frame colors</li>
  <li>Stellar masses</li>
  <li>…</li>
</ul>

<div class="language-python highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="n">UV</span> <span class="o">=</span> <span class="o">-</span><span class="mf">2.5</span><span class="o">*</span><span class="n">np</span><span class="p">.</span><span class="n">log10</span><span class="p">(</span><span class="n">tab</span><span class="p">[</span><span class="s">'phot_restU'</span><span class="p">]</span> <span class="o">/</span> <span class="n">tab</span><span class="p">[</span><span class="s">'phot_restV'</span><span class="p">])</span>
<span class="n">VJ</span> <span class="o">=</span> <span class="o">-</span><span class="mf">2.5</span><span class="o">*</span><span class="n">np</span><span class="p">.</span><span class="n">log10</span><span class="p">(</span><span class="n">tab</span><span class="p">[</span><span class="s">'phot_restV'</span><span class="p">]</span> <span class="o">/</span> <span class="n">tab</span><span class="p">[</span><span class="s">'phot_restJ'</span><span class="p">])</span>

<span class="n">UVs</span> <span class="o">=</span> <span class="o">-</span><span class="mf">2.5</span><span class="o">*</span><span class="n">np</span><span class="p">.</span><span class="n">log10</span><span class="p">(</span><span class="n">tab</span><span class="p">[</span><span class="s">'rest_153_flux'</span><span class="p">]</span> <span class="o">/</span> <span class="n">tab</span><span class="p">[</span><span class="s">'rest_155_flux'</span><span class="p">])</span>
<span class="n">BVs</span> <span class="o">=</span> <span class="o">-</span><span class="mf">2.5</span><span class="o">*</span><span class="n">np</span><span class="p">.</span><span class="n">log10</span><span class="p">(</span><span class="n">tab</span><span class="p">[</span><span class="s">'rest_154_flux'</span><span class="p">]</span> <span class="o">/</span> <span class="n">tab</span><span class="p">[</span><span class="s">'rest_155_flux'</span><span class="p">])</span>
<span class="n">VJs</span> <span class="o">=</span> <span class="o">-</span><span class="mf">2.5</span><span class="o">*</span><span class="n">np</span><span class="p">.</span><span class="n">log10</span><span class="p">(</span><span class="n">tab</span><span class="p">[</span><span class="s">'rest_155_flux'</span><span class="p">]</span> <span class="o">/</span> <span class="n">tab</span><span class="p">[</span><span class="s">'rest_161_flux'</span><span class="p">])</span>

<span class="n">eBVs</span> <span class="o">=</span> <span class="mf">2.5</span><span class="o">/</span><span class="n">np</span><span class="p">.</span><span class="n">log</span><span class="p">(</span><span class="mi">10</span><span class="p">)</span> <span class="o">*</span> <span class="n">np</span><span class="p">.</span><span class="n">sqrt</span><span class="p">(</span>
    <span class="p">(</span><span class="n">tab</span><span class="p">[</span><span class="s">'rest_154_full_err'</span><span class="p">]</span> <span class="o">/</span> <span class="n">tab</span><span class="p">[</span><span class="s">'rest_154_flux'</span><span class="p">])</span><span class="o">**</span><span class="mi">2</span>
    <span class="o">+</span> <span class="p">(</span><span class="n">tab</span><span class="p">[</span><span class="s">'rest_155_full_err'</span><span class="p">]</span> <span class="o">/</span> <span class="n">tab</span><span class="p">[</span><span class="s">'rest_155_flux'</span><span class="p">])</span><span class="o">**</span><span class="mi">2</span>
<span class="p">)</span>

<span class="n">ugs</span> <span class="o">=</span> <span class="o">-</span><span class="mf">2.5</span><span class="o">*</span><span class="n">np</span><span class="p">.</span><span class="n">log10</span><span class="p">(</span><span class="n">tab</span><span class="p">[</span><span class="s">'rest_414_flux'</span><span class="p">]</span> <span class="o">/</span> <span class="n">tab</span><span class="p">[</span><span class="s">'rest_415_flux'</span><span class="p">])</span>
<span class="n">gis</span> <span class="o">=</span> <span class="o">-</span><span class="mf">2.5</span><span class="o">*</span><span class="n">np</span><span class="p">.</span><span class="n">log10</span><span class="p">(</span><span class="n">tab</span><span class="p">[</span><span class="s">'rest_415_flux'</span><span class="p">]</span> <span class="o">/</span> <span class="n">tab</span><span class="p">[</span><span class="s">'rest_416_flux'</span><span class="p">])</span>

<span class="n">ok_BVs</span> <span class="o">=</span> <span class="p">(</span><span class="n">tab</span><span class="p">[</span><span class="s">'rest_154_frac'</span><span class="p">]</span> <span class="o">&gt;</span> <span class="mf">0.8</span><span class="p">)</span> <span class="o">&amp;</span> <span class="p">(</span><span class="n">tab</span><span class="p">[</span><span class="s">'rest_155_frac'</span><span class="p">]</span> <span class="o">&gt;</span> <span class="mf">0.8</span><span class="p">)</span>
<span class="n">ok_gis</span> <span class="o">=</span> <span class="p">(</span><span class="n">tab</span><span class="p">[</span><span class="s">'rest_415_frac'</span><span class="p">]</span> <span class="o">&gt;</span> <span class="mf">0.8</span><span class="p">)</span> <span class="o">&amp;</span> <span class="p">(</span><span class="n">tab</span><span class="p">[</span><span class="s">'rest_416_frac'</span><span class="p">]</span> <span class="o">&gt;</span> <span class="mf">0.8</span><span class="p">)</span>

<span class="n">ok_BVs</span> <span class="o">&amp;=</span> <span class="n">eBVs</span> <span class="o">&lt;</span> <span class="mf">0.1</span>

<span class="n">dL</span> <span class="o">=</span> <span class="n">WMAP9</span><span class="p">.</span><span class="n">luminosity_distance</span><span class="p">(</span><span class="n">tab</span><span class="p">[</span><span class="s">'zrf'</span><span class="p">]).</span><span class="n">to</span><span class="p">(</span><span class="s">'cm'</span><span class="p">)</span>

<span class="n">rest_fV</span> <span class="o">=</span> <span class="p">(</span><span class="n">tab</span><span class="p">[</span><span class="s">'rest_155_flux'</span><span class="p">]</span><span class="o">*</span><span class="n">u</span><span class="p">.</span><span class="n">microJansky</span><span class="p">).</span><span class="n">to</span><span class="p">(</span>
    <span class="n">u</span><span class="p">.</span><span class="n">erg</span><span class="o">/</span><span class="n">u</span><span class="p">.</span><span class="n">second</span><span class="o">/</span><span class="n">u</span><span class="p">.</span><span class="n">cm</span><span class="o">**</span><span class="mi">2</span><span class="o">/</span><span class="n">u</span><span class="p">.</span><span class="n">Angstrom</span><span class="p">,</span>
    <span class="n">equivalencies</span><span class="o">=</span><span class="n">u</span><span class="p">.</span><span class="n">spectral_density</span><span class="p">(</span><span class="mf">5500.</span><span class="o">*</span><span class="p">(</span><span class="mi">1</span><span class="o">+</span><span class="n">tab</span><span class="p">[</span><span class="s">'zrf'</span><span class="p">])</span><span class="o">*</span><span class="n">u</span><span class="p">.</span><span class="n">Angstrom</span><span class="p">)</span>
<span class="p">)</span>

<span class="n">rest_fi</span> <span class="o">=</span> <span class="p">(</span><span class="n">tab</span><span class="p">[</span><span class="s">'rest_416_flux'</span><span class="p">]</span><span class="o">*</span><span class="n">u</span><span class="p">.</span><span class="n">microJansky</span><span class="p">).</span><span class="n">to</span><span class="p">(</span>
    <span class="n">u</span><span class="p">.</span><span class="n">erg</span><span class="o">/</span><span class="n">u</span><span class="p">.</span><span class="n">second</span><span class="o">/</span><span class="n">u</span><span class="p">.</span><span class="n">cm</span><span class="o">**</span><span class="mi">2</span><span class="o">/</span><span class="n">u</span><span class="p">.</span><span class="n">Angstrom</span><span class="p">,</span>
    <span class="n">equivalencies</span><span class="o">=</span><span class="n">u</span><span class="p">.</span><span class="n">spectral_density</span><span class="p">(</span><span class="n">RES</span><span class="p">[</span><span class="mi">416</span><span class="p">].</span><span class="n">pivot</span> <span class="o">*</span> <span class="p">(</span><span class="mi">1</span><span class="o">+</span><span class="n">tab</span><span class="p">[</span><span class="s">'zrf'</span><span class="p">])</span><span class="o">*</span><span class="n">u</span><span class="p">.</span><span class="n">Angstrom</span><span class="p">)</span>
<span class="p">)</span>

<span class="n">LV</span> <span class="o">=</span> <span class="p">(</span><span class="n">rest_fV</span> <span class="o">*</span> <span class="mf">5500.</span> <span class="o">*</span> <span class="n">u</span><span class="p">.</span><span class="n">Angstrom</span> <span class="o">*</span> <span class="p">(</span><span class="mi">1</span> <span class="o">+</span> <span class="n">tab</span><span class="p">[</span><span class="s">'zrf'</span><span class="p">])</span> <span class="o">*</span> <span class="mi">4</span> <span class="o">*</span> <span class="n">np</span><span class="p">.</span><span class="n">pi</span> <span class="o">*</span> <span class="n">dL</span><span class="o">**</span><span class="mi">2</span><span class="p">).</span><span class="n">to</span><span class="p">(</span><span class="n">u</span><span class="p">.</span><span class="n">Lsun</span><span class="p">)</span>
<span class="n">Li</span> <span class="o">=</span> <span class="p">(</span><span class="n">rest_fi</span> <span class="o">*</span> <span class="n">RES</span><span class="p">[</span><span class="mi">416</span><span class="p">].</span><span class="n">pivot</span> <span class="o">*</span> <span class="n">u</span><span class="p">.</span><span class="n">Angstrom</span> <span class="o">*</span> <span class="p">(</span><span class="mi">1</span> <span class="o">+</span> <span class="n">tab</span><span class="p">[</span><span class="s">'zrf'</span><span class="p">])</span> <span class="o">*</span> <span class="mi">4</span> <span class="o">*</span> <span class="n">np</span><span class="p">.</span><span class="n">pi</span> <span class="o">*</span> <span class="n">dL</span><span class="o">**</span><span class="mi">2</span><span class="p">).</span><span class="n">to</span><span class="p">(</span><span class="n">u</span><span class="p">.</span><span class="n">Lsun</span><span class="p">)</span>

</code></pre></div></div>

<div class="language-python highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="c1"># Crude M/Lv ~ B-V from Taylor et al. 2009 for getting a quick stellar mass from the spectrum
</span>
<span class="n">log_MLv</span> <span class="o">=</span> <span class="o">-</span><span class="mf">0.734</span> <span class="o">+</span> <span class="mf">1.404</span> <span class="o">*</span> <span class="p">(</span><span class="n">BVs</span> <span class="o">+</span> <span class="mf">0.084</span><span class="p">)</span>
<span class="n">MassV</span> <span class="o">=</span> <span class="n">log_MLv</span> <span class="o">+</span> <span class="n">np</span><span class="p">.</span><span class="n">log10</span><span class="p">(</span><span class="n">LV</span><span class="p">.</span><span class="n">value</span><span class="p">)</span>

<span class="n">tab</span><span class="p">[</span><span class="s">'Mass'</span><span class="p">]</span> <span class="o">=</span> <span class="n">MassV</span>
<span class="n">tab</span><span class="p">[</span><span class="s">'Mass'</span><span class="p">].</span><span class="nb">format</span> <span class="o">=</span> <span class="s">'.2f'</span>
<span class="n">tab</span><span class="p">[</span><span class="s">'ok_Mass'</span><span class="p">]</span> <span class="o">=</span> <span class="n">ok_BVs</span>

<span class="n">plt</span><span class="p">.</span><span class="n">scatter</span><span class="p">(</span>
    <span class="n">np</span><span class="p">.</span><span class="n">log10</span><span class="p">(</span><span class="n">tab</span><span class="p">[</span><span class="s">'phot_mass'</span><span class="p">][</span><span class="n">sample</span> <span class="o">&amp;</span> <span class="n">ok_BVs</span><span class="p">]),</span>
    <span class="n">MassV</span><span class="p">[</span><span class="n">sample</span> <span class="o">&amp;</span> <span class="n">ok_BVs</span><span class="p">],</span>
    <span class="n">alpha</span><span class="o">=</span><span class="mf">0.1</span><span class="p">,</span>
    <span class="n">c</span><span class="o">=</span><span class="n">tab</span><span class="p">[</span><span class="s">'phot_Av'</span><span class="p">][</span><span class="n">sample</span> <span class="o">&amp;</span> <span class="n">ok_BVs</span><span class="p">]</span>
<span class="p">)</span>

<span class="n">plt</span><span class="p">.</span><span class="n">plot</span><span class="p">([</span><span class="mi">5</span><span class="p">,</span> <span class="mi">12</span><span class="p">],</span> <span class="p">[</span><span class="mi">5</span><span class="p">,</span> <span class="mi">12</span><span class="p">],</span> <span class="n">color</span><span class="o">=</span><span class="s">'magenta'</span><span class="p">)</span>
<span class="n">plt</span><span class="p">.</span><span class="n">grid</span><span class="p">()</span>
<span class="n">plt</span><span class="p">.</span><span class="n">xlim</span><span class="p">(</span><span class="mi">6</span><span class="p">,</span> <span class="mi">12</span><span class="p">)</span>
<span class="n">plt</span><span class="p">.</span><span class="n">ylim</span><span class="p">(</span><span class="mi">6</span><span class="p">,</span> <span class="mi">12</span><span class="p">)</span>
<span class="n">plt</span><span class="p">.</span><span class="n">xlabel</span><span class="p">(</span><span class="s">'stellar mass,  eazy photometry'</span><span class="p">)</span>
<span class="n">plt</span><span class="p">.</span><span class="n">ylabel</span><span class="p">(</span><span class="sa">r</span><span class="s">'$\log M = \log L_V + \log M/L_V$'</span> <span class="o">+</span> <span class="s">'</span><span class="se">\n</span><span class="s">'</span> <span class="o">+</span> <span class="sa">r</span><span class="s">'$\log M/L_V \propto (B-V)$'</span><span class="p">)</span>
</code></pre></div></div>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>Text(0, 0.5, '$\\log M = \\log L_V + \\log M/L_V$\n$\\log M/L_V \\propto (B-V)$')
</code></pre></div></div>

<p><img src="/dja/assets/post_files/2025-05-01-nirspec-merged-table-v4_files/nirspec-merged-table-v4_24_1.png" alt="png" /></p>

<h2 id="compare-rest-frame-colors">Compare rest-frame colors</h2>

<p>The table includes rest-frame bandpass flux densities 1) estimated from the broad-band photometry (at the photo-z) and 2) integrated directly through the spectra at the measured redshift.</p>

<p>The colors derived from the  grizli/DJA <em>photometry</em> are those of the best-fit photo-z template combination, not a noisy interpolation, so they can show banding effects resulting from the discrete combination of templates.</p>

<div class="language-python highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="n">fig</span><span class="p">,</span> <span class="n">axes</span> <span class="o">=</span> <span class="n">plt</span><span class="p">.</span><span class="n">subplots</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span><span class="mi">2</span><span class="p">,</span><span class="n">figsize</span><span class="o">=</span><span class="p">(</span><span class="mi">8</span><span class="p">,</span><span class="mi">5</span><span class="p">),</span> <span class="n">sharex</span><span class="o">=</span><span class="bp">True</span><span class="p">,</span> <span class="n">sharey</span><span class="o">=</span><span class="bp">True</span><span class="p">)</span>

<span class="n">axes</span><span class="p">[</span><span class="mi">0</span><span class="p">].</span><span class="n">scatter</span><span class="p">(</span>
    <span class="n">VJ</span><span class="p">[</span><span class="n">sample</span><span class="p">],</span> <span class="n">UV</span><span class="p">[</span><span class="n">sample</span><span class="p">],</span> <span class="n">alpha</span><span class="o">=</span><span class="mf">0.1</span><span class="p">,</span>
    <span class="n">c</span><span class="o">=</span><span class="n">tab</span><span class="p">[</span><span class="s">'ha_eqw_with_limits'</span><span class="p">][</span><span class="n">sample</span><span class="p">],</span> <span class="n">vmin</span><span class="o">=</span><span class="mi">0</span><span class="p">,</span> <span class="n">vmax</span><span class="o">=</span><span class="mi">200</span><span class="p">,</span> <span class="n">cmap</span><span class="o">=</span><span class="s">'RdYlBu'</span>
<span class="p">)</span>
<span class="n">axes</span><span class="p">[</span><span class="mi">0</span><span class="p">].</span><span class="n">set_xlabel</span><span class="p">(</span><span class="sa">r</span><span class="s">'$(V-J)$'</span> <span class="o">+</span> <span class="s">', eazy template'</span><span class="p">)</span>
<span class="n">axes</span><span class="p">[</span><span class="mi">0</span><span class="p">].</span><span class="n">set_ylabel</span><span class="p">(</span><span class="sa">r</span><span class="s">'$(U-V)$'</span><span class="p">)</span>

<span class="n">axes</span><span class="p">[</span><span class="mi">1</span><span class="p">].</span><span class="n">scatter</span><span class="p">(</span>
    <span class="n">VJs</span><span class="p">[</span><span class="n">sample</span><span class="p">],</span> <span class="n">UVs</span><span class="p">[</span><span class="n">sample</span><span class="p">],</span> <span class="n">alpha</span><span class="o">=</span><span class="mf">0.1</span><span class="p">,</span>
    <span class="n">c</span><span class="o">=</span><span class="n">tab</span><span class="p">[</span><span class="s">'ha_eqw_with_limits'</span><span class="p">][</span><span class="n">sample</span><span class="p">],</span> <span class="n">vmin</span><span class="o">=</span><span class="mi">0</span><span class="p">,</span> <span class="n">vmax</span><span class="o">=</span><span class="mi">200</span><span class="p">,</span> <span class="n">cmap</span><span class="o">=</span><span class="s">'RdYlBu'</span>
<span class="p">)</span>

<span class="n">sc</span> <span class="o">=</span> <span class="n">axes</span><span class="p">[</span><span class="mi">1</span><span class="p">].</span><span class="n">scatter</span><span class="p">(</span>
    <span class="n">VJs</span><span class="p">[</span><span class="n">sample</span><span class="p">][:</span><span class="mi">1</span><span class="p">],</span> <span class="n">UVs</span><span class="p">[</span><span class="n">sample</span><span class="p">][:</span><span class="mi">1</span><span class="p">],</span> <span class="n">alpha</span><span class="o">=</span><span class="mf">0.5</span><span class="p">,</span>
    <span class="n">c</span><span class="o">=</span><span class="n">tab</span><span class="p">[</span><span class="s">'ha_eqw_with_limits'</span><span class="p">][</span><span class="n">sample</span><span class="p">][:</span><span class="mi">1</span><span class="p">],</span> <span class="n">vmin</span><span class="o">=</span><span class="mi">0</span><span class="p">,</span> <span class="n">vmax</span><span class="o">=</span><span class="mi">200</span><span class="p">,</span> <span class="n">cmap</span><span class="o">=</span><span class="s">'RdYlBu'</span>
<span class="p">)</span>

<span class="n">axes</span><span class="p">[</span><span class="mi">1</span><span class="p">].</span><span class="n">set_xlabel</span><span class="p">(</span><span class="sa">r</span><span class="s">'$(V-J)$'</span> <span class="o">+</span> <span class="s">', spectrum'</span><span class="p">)</span>

<span class="k">for</span> <span class="n">ax</span> <span class="ow">in</span> <span class="n">axes</span><span class="p">:</span>
    <span class="n">ax</span><span class="p">.</span><span class="n">set_xlim</span><span class="p">(</span><span class="o">-</span><span class="mf">1.2</span><span class="p">,</span> <span class="mf">4.2</span><span class="p">)</span>
    <span class="n">ax</span><span class="p">.</span><span class="n">set_ylim</span><span class="p">(</span><span class="o">-</span><span class="mf">0.8</span><span class="p">,</span> <span class="mf">4.2</span><span class="p">)</span>
    <span class="n">ax</span><span class="p">.</span><span class="n">grid</span><span class="p">()</span>

<span class="n">cax</span> <span class="o">=</span> <span class="n">fig</span><span class="p">.</span><span class="n">add_axes</span><span class="p">((</span><span class="mf">0.85</span><span class="p">,</span> <span class="mf">0.2</span><span class="p">,</span> <span class="mf">0.02</span><span class="p">,</span> <span class="mf">0.25</span><span class="p">))</span>
<span class="n">cb</span> <span class="o">=</span> <span class="n">plt</span><span class="p">.</span><span class="n">colorbar</span><span class="p">(</span><span class="n">sc</span><span class="p">,</span> <span class="n">cax</span><span class="o">=</span><span class="n">cax</span><span class="p">,</span> <span class="n">orientation</span><span class="o">=</span><span class="s">'vertical'</span><span class="p">)</span>
<span class="n">cb</span><span class="p">.</span><span class="n">set_label</span><span class="p">(</span><span class="sa">r</span><span class="s">'EQW H$\alpha$'</span><span class="p">)</span>

<span class="n">fig</span><span class="p">.</span><span class="n">tight_layout</span><span class="p">(</span><span class="n">pad</span><span class="o">=</span><span class="mi">1</span><span class="p">)</span>
</code></pre></div></div>

<p><img src="/dja/assets/post_files/2025-05-01-nirspec-merged-table-v4_files/nirspec-merged-table-v4_26_0.png" alt="png" /></p>

<div class="language-python highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="n">plt</span><span class="p">.</span><span class="n">scatter</span><span class="p">(</span>
    <span class="n">tab</span><span class="p">[</span><span class="s">'z_best'</span><span class="p">][</span><span class="n">sample</span><span class="p">],</span>
    <span class="c1"># np.log10(tab['phot_mass'])[sample],
</span>    <span class="n">tab</span><span class="p">[</span><span class="s">'Mass'</span><span class="p">][</span><span class="n">sample</span><span class="p">],</span>
    <span class="n">alpha</span><span class="o">=</span><span class="mf">0.1</span><span class="p">,</span>
    <span class="n">c</span><span class="o">=</span><span class="n">tab</span><span class="p">[</span><span class="s">'ha_eqw_with_limits'</span><span class="p">][</span><span class="n">sample</span><span class="p">],</span> <span class="n">vmin</span><span class="o">=</span><span class="mi">0</span><span class="p">,</span> <span class="n">vmax</span><span class="o">=</span><span class="mi">200</span><span class="p">,</span> <span class="n">cmap</span><span class="o">=</span><span class="s">'RdYlBu'</span>
<span class="p">)</span>
<span class="n">plt</span><span class="p">.</span><span class="n">ylim</span><span class="p">(</span><span class="mi">7</span><span class="p">,</span> <span class="mi">12</span><span class="p">)</span>
<span class="n">plt</span><span class="p">.</span><span class="n">grid</span><span class="p">()</span>
<span class="n">plt</span><span class="p">.</span><span class="n">xlabel</span><span class="p">(</span><span class="s">'redshift'</span><span class="p">)</span>
<span class="n">plt</span><span class="p">.</span><span class="n">ylabel</span><span class="p">(</span><span class="s">'rough stellar mass'</span><span class="p">)</span>
</code></pre></div></div>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>Text(0, 0.5, 'rough stellar mass')
</code></pre></div></div>

<p><img src="/dja/assets/post_files/2025-05-01-nirspec-merged-table-v4_files/nirspec-merged-table-v4_27_1.png" alt="png" /></p>

<h2 id="make-a-table-showing-thumbnail-and-spectrum-previews-of-a-selected-subsample">Make a table showing thumbnail and spectrum previews of a selected subsample</h2>

<p>Here make a “massive galaxies” subsample with</p>

<ul>
  <li><code class="language-plaintext highlighter-rouge">grating=PRISM</code></li>
  <li><code class="language-plaintext highlighter-rouge">z &gt; 3</code></li>
  <li><code class="language-plaintext highlighter-rouge">log M &gt; 10.5</code></li>
  <li>Spectrum covers rest-frame $B-V$</li>
</ul>

<p>The preview table shows the first 32 of these, which actually tend to be quasars / LRDs where the stellar mass is likely incorrect….</p>

<div class="language-python highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="n">massive</span> <span class="o">=</span> <span class="n">sample</span> <span class="o">&amp;</span> <span class="p">(</span><span class="n">tab</span><span class="p">[</span><span class="s">'z_best'</span><span class="p">]</span> <span class="o">&gt;</span> <span class="mf">3.</span><span class="p">)</span> <span class="o">&amp;</span> <span class="p">(</span><span class="n">MassV</span> <span class="o">&gt;</span> <span class="mf">10.5</span><span class="p">)</span> <span class="o">&amp;</span> <span class="p">(</span><span class="n">tab</span><span class="p">[</span><span class="s">'grating'</span><span class="p">]</span> <span class="o">==</span> <span class="s">'PRISM'</span><span class="p">)</span> <span class="o">&amp;</span> <span class="n">ok_BVs</span>

<span class="k">if</span> <span class="mi">0</span><span class="p">:</span>
    <span class="n">tab</span><span class="p">[</span><span class="s">'root'</span><span class="p">,</span><span class="s">'file'</span><span class="p">,</span><span class="s">'z_best'</span><span class="p">,</span><span class="s">'Mass'</span><span class="p">,</span><span class="s">'ha_eqw_with_limits'</span><span class="p">,</span><span class="s">'Thumb'</span><span class="p">,</span><span class="s">'Slit_Thumb'</span><span class="p">,</span><span class="s">'Spectrum_fnu'</span><span class="p">,</span> <span class="s">'Spectrum_flam'</span><span class="p">][</span><span class="n">massive</span><span class="p">].</span><span class="n">write_sortable_html</span><span class="p">(</span>
        <span class="s">'/tmp/massive.html'</span><span class="p">,</span>
        <span class="n">max_lines</span><span class="o">=</span><span class="mi">1000</span><span class="p">,</span>
        <span class="n">localhost</span><span class="o">=</span><span class="bp">False</span><span class="p">,</span>
    <span class="p">)</span>
    
<span class="k">print</span><span class="p">(</span><span class="sa">f</span><span class="s">"massive test sample: </span><span class="si">{</span><span class="n">massive</span><span class="p">.</span><span class="nb">sum</span><span class="p">()</span><span class="si">}</span><span class="s">"</span><span class="p">)</span>
</code></pre></div></div>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>massive test sample: 235
</code></pre></div></div>

<div class="language-python highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kn">from</span> <span class="nn">IPython.display</span> <span class="kn">import</span> <span class="n">display</span><span class="p">,</span> <span class="n">Markdown</span><span class="p">,</span> <span class="n">Latex</span>

<span class="n">so</span> <span class="o">=</span> <span class="n">np</span><span class="p">.</span><span class="n">argsort</span><span class="p">(</span><span class="n">tab</span><span class="p">[</span><span class="s">'Mass'</span><span class="p">][</span><span class="n">massive</span><span class="p">])[::</span><span class="o">-</span><span class="mi">1</span><span class="p">]</span>
<span class="n">so</span> <span class="o">=</span> <span class="n">so</span><span class="p">[:</span><span class="mi">32</span><span class="p">]</span>

<span class="n">df</span> <span class="o">=</span> <span class="n">tab</span><span class="p">[</span><span class="s">'root'</span><span class="p">,</span><span class="s">'file'</span><span class="p">,</span><span class="s">'z_best'</span><span class="p">,</span><span class="s">'Mass'</span><span class="p">,</span><span class="s">'ha_eqw_with_limits'</span><span class="p">,</span><span class="s">'Thumb'</span><span class="p">,</span><span class="s">'Slit_Thumb'</span><span class="p">,</span><span class="s">'Spectrum_fnu'</span><span class="p">,</span> <span class="s">'Spectrum_flam'</span><span class="p">][</span><span class="n">massive</span><span class="p">][</span><span class="n">so</span><span class="p">].</span><span class="n">to_pandas</span><span class="p">()</span>

<span class="n">display</span><span class="p">(</span><span class="n">Markdown</span><span class="p">(</span><span class="n">df</span><span class="p">.</span><span class="n">to_markdown</span><span class="p">()))</span>
</code></pre></div></div>

<table>
  <thead>
    <tr>
      <th style="text-align: right"> </th>
      <th style="text-align: left">root</th>
      <th style="text-align: left">file</th>
      <th style="text-align: right">z_best</th>
      <th style="text-align: right">Mass</th>
      <th style="text-align: right">ha_eqw_with_limits</th>
      <th style="text-align: left">Thumb</th>
      <th style="text-align: left">Slit_Thumb</th>
      <th style="text-align: left">Spectrum_fnu</th>
      <th style="text-align: left">Spectrum_flam</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td style="text-align: right">0</td>
      <td style="text-align: left">j0910-wang-v4</td>
      <td style="text-align: left">j0910-wang-v4_prism-clear_2028_12910.spec.fits</td>
      <td style="text-align: right">6.62142</td>
      <td style="text-align: right">12.0515</td>
      <td style="text-align: right">54.4902</td>
      <td style="text-align: left"><img src="https://grizli-cutout.herokuapp.com/thumb?size=1.5&amp;scl=2.0&amp;asinh=True&amp;filters=f115w-clear%2Cf277w-clear%2Cf444w-clear&amp;rgb_scl=1.5%2C0.74%2C1.3&amp;pl=2&amp;coord=137.72721162%2C-4.23520691" height="200px" /></td>
      <td style="text-align: left"><img src="https://grizli-cutout.herokuapp.com/thumb?size=1.5&amp;scl=4.0&amp;invert=True&amp;filters=f444w-clear&amp;rgb_scl=1.5%2C0.74%2C1.3&amp;pl=2&amp;coord=137.72721162%2C-4.23520691&amp;nirspec=True&amp;dpi_scale=6&amp;nrs_lw=0.5&amp;nrs_alpha=0.8&amp;metafile=jw02028001001" height="200px" /></td>
      <td style="text-align: left"><img src="https://s3.amazonaws.com/msaexp-nirspec/extractions/j0910-wang-v4/j0910-wang-v4_prism-clear_2028_12910.fnu.png" height="200px" /></td>
      <td style="text-align: left"><img src="https://s3.amazonaws.com/msaexp-nirspec/extractions/j0910-wang-v4/j0910-wang-v4_prism-clear_2028_12910.flam.png" height="200px" /></td>
    </tr>
    <tr>
      <td style="text-align: right">1</td>
      <td style="text-align: left">rubies-uds23-v4</td>
      <td style="text-align: left">rubies-uds23-v4_prism-clear_4233_166691.spec.fits</td>
      <td style="text-align: right">4.06673</td>
      <td style="text-align: right">11.9254</td>
      <td style="text-align: right">11.4969</td>
      <td style="text-align: left"><img src="https://grizli-cutout.herokuapp.com/thumb?size=1.5&amp;scl=2.0&amp;asinh=True&amp;filters=f115w-clear%2Cf277w-clear%2Cf444w-clear&amp;rgb_scl=1.5%2C0.74%2C1.3&amp;pl=2&amp;coord=34.36378034%2C-5.11191402" height="200px" /></td>
      <td style="text-align: left"><img src="https://grizli-cutout.herokuapp.com/thumb?size=1.5&amp;scl=4.0&amp;invert=True&amp;filters=f444w-clear&amp;rgb_scl=1.5%2C0.74%2C1.3&amp;pl=2&amp;coord=34.36378034%2C-5.11191402&amp;nirspec=True&amp;dpi_scale=6&amp;nrs_lw=0.5&amp;nrs_alpha=0.8&amp;metafile=jw04233002003" height="200px" /></td>
      <td style="text-align: left"><img src="https://s3.amazonaws.com/msaexp-nirspec/extractions/rubies-uds23-v4/rubies-uds23-v4_prism-clear_4233_166691.fnu.png" height="200px" /></td>
      <td style="text-align: left"><img src="https://s3.amazonaws.com/msaexp-nirspec/extractions/rubies-uds23-v4/rubies-uds23-v4_prism-clear_4233_166691.flam.png" height="200px" /></td>
    </tr>
    <tr>
      <td style="text-align: right">2</td>
      <td style="text-align: left">uncover-61-v4</td>
      <td style="text-align: left">uncover-61-v4_prism-clear_2561_13416.spec.fits</td>
      <td style="text-align: right">4.02262</td>
      <td style="text-align: right">11.7896</td>
      <td style="text-align: right">114.235</td>
      <td style="text-align: left"><img src="https://grizli-cutout.herokuapp.com/thumb?size=1.5&amp;scl=2.0&amp;asinh=True&amp;filters=f115w-clear%2Cf277w-clear%2Cf444w-clear&amp;rgb_scl=1.5%2C0.74%2C1.3&amp;pl=2&amp;coord=3.57556471%2C-30.42438021" height="200px" /></td>
      <td style="text-align: left"><img src="https://grizli-cutout.herokuapp.com/thumb?size=1.5&amp;scl=4.0&amp;invert=True&amp;filters=f444w-clear&amp;rgb_scl=1.5%2C0.74%2C1.3&amp;pl=2&amp;coord=3.57556471%2C-30.42438021&amp;nirspec=True&amp;dpi_scale=6&amp;nrs_lw=0.5&amp;nrs_alpha=0.8&amp;metafile=jw02561006001" height="200px" /></td>
      <td style="text-align: left"><img src="https://s3.amazonaws.com/msaexp-nirspec/extractions/uncover-61-v4/uncover-61-v4_prism-clear_2561_13416.fnu.png" height="200px" /></td>
      <td style="text-align: left"><img src="https://s3.amazonaws.com/msaexp-nirspec/extractions/uncover-61-v4/uncover-61-v4_prism-clear_2561_13416.flam.png" height="200px" /></td>
    </tr>
    <tr>
      <td style="text-align: right">3</td>
      <td style="text-align: left">jades-gdn198-v4</td>
      <td style="text-align: left">jades-gdn198-v4_prism-clear_1181_68797.spec.fits</td>
      <td style="text-align: right">5.0398</td>
      <td style="text-align: right">11.7363</td>
      <td style="text-align: right">1029.12</td>
      <td style="text-align: left"><img src="https://grizli-cutout.herokuapp.com/thumb?size=1.5&amp;scl=2.0&amp;asinh=True&amp;filters=f115w-clear%2Cf277w-clear%2Cf444w-clear&amp;rgb_scl=1.5%2C0.74%2C1.3&amp;pl=2&amp;coord=189.2291371%2C62.1461898" height="200px" /></td>
      <td style="text-align: left"><img src="https://grizli-cutout.herokuapp.com/thumb?size=1.5&amp;scl=4.0&amp;invert=True&amp;filters=f444w-clear&amp;rgb_scl=1.5%2C0.74%2C1.3&amp;pl=2&amp;coord=189.2291371%2C62.1461898&amp;nirspec=True&amp;dpi_scale=6&amp;nrs_lw=0.5&amp;nrs_alpha=0.8&amp;metafile=jw01181198001" height="200px" /></td>
      <td style="text-align: left"><img src="https://s3.amazonaws.com/msaexp-nirspec/extractions/jades-gdn198-v4/jades-gdn198-v4_prism-clear_1181_68797.fnu.png" height="200px" /></td>
      <td style="text-align: left"><img src="https://s3.amazonaws.com/msaexp-nirspec/extractions/jades-gdn198-v4/jades-gdn198-v4_prism-clear_1181_68797.flam.png" height="200px" /></td>
    </tr>
    <tr>
      <td style="text-align: right">4</td>
      <td style="text-align: left">rubies-egs52-v4</td>
      <td style="text-align: left">rubies-egs52-v4_prism-clear_4233_9809.spec.fits</td>
      <td style="text-align: right">5.68123</td>
      <td style="text-align: right">11.6563</td>
      <td style="text-align: right">197.61</td>
      <td style="text-align: left"><img src="https://grizli-cutout.herokuapp.com/thumb?size=1.5&amp;scl=2.0&amp;asinh=True&amp;filters=f115w-clear%2Cf277w-clear%2Cf444w-clear&amp;rgb_scl=1.5%2C0.74%2C1.3&amp;pl=2&amp;coord=215.01729764%2C52.88015836" height="200px" /></td>
      <td style="text-align: left"><img src="https://grizli-cutout.herokuapp.com/thumb?size=1.5&amp;scl=4.0&amp;invert=True&amp;filters=f444w-clear&amp;rgb_scl=1.5%2C0.74%2C1.3&amp;pl=2&amp;coord=215.01729764%2C52.88015836&amp;nirspec=True&amp;dpi_scale=6&amp;nrs_lw=0.5&amp;nrs_alpha=0.8&amp;metafile=jw04233005002" height="200px" /></td>
      <td style="text-align: left"><img src="https://s3.amazonaws.com/msaexp-nirspec/extractions/rubies-egs52-v4/rubies-egs52-v4_prism-clear_4233_9809.fnu.png" height="200px" /></td>
      <td style="text-align: left"><img src="https://s3.amazonaws.com/msaexp-nirspec/extractions/rubies-egs52-v4/rubies-egs52-v4_prism-clear_4233_9809.flam.png" height="200px" /></td>
    </tr>
    <tr>
      <td style="text-align: right">5</td>
      <td style="text-align: left">jades-gdn-v4</td>
      <td style="text-align: left">jades-gdn-v4_prism-clear_1181_68797.spec.fits</td>
      <td style="text-align: right">5.0398</td>
      <td style="text-align: right">11.6303</td>
      <td style="text-align: right">1054.65</td>
      <td style="text-align: left"><img src="https://grizli-cutout.herokuapp.com/thumb?size=1.5&amp;scl=2.0&amp;asinh=True&amp;filters=f115w-clear%2Cf277w-clear%2Cf444w-clear&amp;rgb_scl=1.5%2C0.74%2C1.3&amp;pl=2&amp;coord=189.2291371%2C62.1461898" height="200px" /></td>
      <td style="text-align: left"><img src="https://grizli-cutout.herokuapp.com/thumb?size=1.5&amp;scl=4.0&amp;invert=True&amp;filters=f444w-clear&amp;rgb_scl=1.5%2C0.74%2C1.3&amp;pl=2&amp;coord=189.2291371%2C62.1461898&amp;nirspec=True&amp;dpi_scale=6&amp;nrs_lw=0.5&amp;nrs_alpha=0.8&amp;metafile=jw01181098001" height="200px" /></td>
      <td style="text-align: left"><img src="https://s3.amazonaws.com/msaexp-nirspec/extractions/jades-gdn-v4/jades-gdn-v4_prism-clear_1181_68797.fnu.png" height="200px" /></td>
      <td style="text-align: left"><img src="https://s3.amazonaws.com/msaexp-nirspec/extractions/jades-gdn-v4/jades-gdn-v4_prism-clear_1181_68797.flam.png" height="200px" /></td>
    </tr>
    <tr>
      <td style="text-align: right">6</td>
      <td style="text-align: left">rubies-uds22-v4</td>
      <td style="text-align: left">rubies-uds22-v4_prism-clear_4233_114988.spec.fits</td>
      <td style="text-align: right">4.36474</td>
      <td style="text-align: right">11.5051</td>
      <td style="text-align: right">94.5801</td>
      <td style="text-align: left"><img src="https://grizli-cutout.herokuapp.com/thumb?size=1.5&amp;scl=2.0&amp;asinh=True&amp;filters=f115w-clear%2Cf277w-clear%2Cf444w-clear&amp;rgb_scl=1.5%2C0.74%2C1.3&amp;pl=2&amp;coord=34.29794136%2C-5.18436854" height="200px" /></td>
      <td style="text-align: left"><img src="https://grizli-cutout.herokuapp.com/thumb?size=1.5&amp;scl=4.0&amp;invert=True&amp;filters=f444w-clear&amp;rgb_scl=1.5%2C0.74%2C1.3&amp;pl=2&amp;coord=34.29794136%2C-5.18436854&amp;nirspec=True&amp;dpi_scale=6&amp;nrs_lw=0.5&amp;nrs_alpha=0.8&amp;metafile=jw04233002002" height="200px" /></td>
      <td style="text-align: left"><img src="https://s3.amazonaws.com/msaexp-nirspec/extractions/rubies-uds22-v4/rubies-uds22-v4_prism-clear_4233_114988.fnu.png" height="200px" /></td>
      <td style="text-align: left"><img src="https://s3.amazonaws.com/msaexp-nirspec/extractions/rubies-uds22-v4/rubies-uds22-v4_prism-clear_4233_114988.flam.png" height="200px" /></td>
    </tr>
    <tr>
      <td style="text-align: right">7</td>
      <td style="text-align: left">rubies-uds1-v4</td>
      <td style="text-align: left">rubies-uds1-v4_prism-clear_4233_40579.spec.fits</td>
      <td style="text-align: right">3.10671</td>
      <td style="text-align: right">11.4453</td>
      <td style="text-align: right">1206.13</td>
      <td style="text-align: left"><img src="https://grizli-cutout.herokuapp.com/thumb?size=1.5&amp;scl=2.0&amp;asinh=True&amp;filters=f115w-clear%2Cf277w-clear%2Cf444w-clear&amp;rgb_scl=1.5%2C0.74%2C1.3&amp;pl=2&amp;coord=34.2441997%2C-5.2458714" height="200px" /></td>
      <td style="text-align: left"><img src="https://grizli-cutout.herokuapp.com/thumb?size=1.5&amp;scl=4.0&amp;invert=True&amp;filters=f444w-clear&amp;rgb_scl=1.5%2C0.74%2C1.3&amp;pl=2&amp;coord=34.2441997%2C-5.2458714&amp;nirspec=True&amp;dpi_scale=6&amp;nrs_lw=0.5&amp;nrs_alpha=0.8&amp;metafile=jw04233001001" height="200px" /></td>
      <td style="text-align: left"><img src="https://s3.amazonaws.com/msaexp-nirspec/extractions/rubies-uds1-v4/rubies-uds1-v4_prism-clear_4233_40579.fnu.png" height="200px" /></td>
      <td style="text-align: left"><img src="https://s3.amazonaws.com/msaexp-nirspec/extractions/rubies-uds1-v4/rubies-uds1-v4_prism-clear_4233_40579.flam.png" height="200px" /></td>
    </tr>
    <tr>
      <td style="text-align: right">8</td>
      <td style="text-align: left">gto-wide-uds13-v4</td>
      <td style="text-align: left">gto-wide-uds13-v4_prism-clear_1215_1472.spec.fits</td>
      <td style="text-align: right">4.55596</td>
      <td style="text-align: right">11.4348</td>
      <td style="text-align: right">14.736</td>
      <td style="text-align: left"><img src="https://grizli-cutout.herokuapp.com/thumb?size=1.5&amp;scl=2.0&amp;asinh=True&amp;filters=f115w-clear%2Cf277w-clear%2Cf444w-clear&amp;rgb_scl=1.5%2C0.74%2C1.3&amp;pl=2&amp;coord=34.33731548%2C-5.1436736" height="200px" /></td>
      <td style="text-align: left"><img src="https://grizli-cutout.herokuapp.com/thumb?size=1.5&amp;scl=4.0&amp;invert=True&amp;filters=f444w-clear&amp;rgb_scl=1.5%2C0.74%2C1.3&amp;pl=2&amp;coord=34.33731548%2C-5.1436736&amp;nirspec=True&amp;dpi_scale=6&amp;nrs_lw=0.5&amp;nrs_alpha=0.8&amp;metafile=jw01215013001" height="200px" /></td>
      <td style="text-align: left"><img src="https://s3.amazonaws.com/msaexp-nirspec/extractions/gto-wide-uds13-v4/gto-wide-uds13-v4_prism-clear_1215_1472.fnu.png" height="200px" /></td>
      <td style="text-align: left"><img src="https://s3.amazonaws.com/msaexp-nirspec/extractions/gto-wide-uds13-v4/gto-wide-uds13-v4_prism-clear_1215_1472.flam.png" height="200px" /></td>
    </tr>
    <tr>
      <td style="text-align: right">9</td>
      <td style="text-align: left">jades-gds-w05-v4</td>
      <td style="text-align: left">jades-gds-w05-v4_prism-clear_1212_4582.spec.fits</td>
      <td style="text-align: right">3.06306</td>
      <td style="text-align: right">11.3624</td>
      <td style="text-align: right">79.7105</td>
      <td style="text-align: left"><img src="https://grizli-cutout.herokuapp.com/thumb?size=1.5&amp;scl=2.0&amp;asinh=True&amp;filters=f115w-clear%2Cf277w-clear%2Cf444w-clear&amp;rgb_scl=1.5%2C0.74%2C1.3&amp;pl=2&amp;coord=53.16529438%2C-27.81415679" height="200px" /></td>
      <td style="text-align: left"><img src="https://grizli-cutout.herokuapp.com/thumb?size=1.5&amp;scl=4.0&amp;invert=True&amp;filters=f444w-clear&amp;rgb_scl=1.5%2C0.74%2C1.3&amp;pl=2&amp;coord=53.16529438%2C-27.81415679&amp;nirspec=True&amp;dpi_scale=6&amp;nrs_lw=0.5&amp;nrs_alpha=0.8&amp;metafile=jw01212005001" height="200px" /></td>
      <td style="text-align: left"><img src="https://s3.amazonaws.com/msaexp-nirspec/extractions/jades-gds-w05-v4/jades-gds-w05-v4_prism-clear_1212_4582.fnu.png" height="200px" /></td>
      <td style="text-align: left"><img src="https://s3.amazonaws.com/msaexp-nirspec/extractions/jades-gds-w05-v4/jades-gds-w05-v4_prism-clear_1212_4582.flam.png" height="200px" /></td>
    </tr>
    <tr>
      <td style="text-align: right">10</td>
      <td style="text-align: left">jades-gds-wide3-v4</td>
      <td style="text-align: left">jades-gds-wide3-v4_prism-clear_1180_197911.spec.fits</td>
      <td style="text-align: right">3.06306</td>
      <td style="text-align: right">11.3613</td>
      <td style="text-align: right">80.9861</td>
      <td style="text-align: left"><img src="https://grizli-cutout.herokuapp.com/thumb?size=1.5&amp;scl=2.0&amp;asinh=True&amp;filters=f115w-clear%2Cf277w-clear%2Cf444w-clear&amp;rgb_scl=1.5%2C0.74%2C1.3&amp;pl=2&amp;coord=53.1653142%2C-27.8141396" height="200px" /></td>
      <td style="text-align: left"><img src="https://grizli-cutout.herokuapp.com/thumb?size=1.5&amp;scl=4.0&amp;invert=True&amp;filters=f444w-clear&amp;rgb_scl=1.5%2C0.74%2C1.3&amp;pl=2&amp;coord=53.1653142%2C-27.8141396&amp;nirspec=True&amp;dpi_scale=6&amp;nrs_lw=0.5&amp;nrs_alpha=0.8&amp;metafile=jw01180136001" height="200px" /></td>
      <td style="text-align: left"><img src="https://s3.amazonaws.com/msaexp-nirspec/extractions/jades-gds-wide3-v4/jades-gds-wide3-v4_prism-clear_1180_197911.fnu.png" height="200px" /></td>
      <td style="text-align: left"><img src="https://s3.amazonaws.com/msaexp-nirspec/extractions/jades-gds-wide3-v4/jades-gds-wide3-v4_prism-clear_1180_197911.flam.png" height="200px" /></td>
    </tr>
    <tr>
      <td style="text-align: right">11</td>
      <td style="text-align: left">uncover-v4</td>
      <td style="text-align: left">uncover-v4_prism-clear_2561_45924.spec.fits</td>
      <td style="text-align: right">4.4673</td>
      <td style="text-align: right">11.3522</td>
      <td style="text-align: right">104.309</td>
      <td style="text-align: left"><img src="https://grizli-cutout.herokuapp.com/thumb?size=1.5&amp;scl=2.0&amp;asinh=True&amp;filters=f115w-clear%2Cf277w-clear%2Cf444w-clear&amp;rgb_scl=1.5%2C0.74%2C1.3&amp;pl=2&amp;coord=3.58476007%2C-30.34362753" height="200px" /></td>
      <td style="text-align: left"><img src="https://grizli-cutout.herokuapp.com/thumb?size=1.5&amp;scl=4.0&amp;invert=True&amp;filters=f444w-clear&amp;rgb_scl=1.5%2C0.74%2C1.3&amp;pl=2&amp;coord=3.58476007%2C-30.34362753&amp;nirspec=True&amp;dpi_scale=6&amp;nrs_lw=0.5&amp;nrs_alpha=0.8&amp;metafile=jw02561002004" height="200px" /></td>
      <td style="text-align: left"><img src="https://s3.amazonaws.com/msaexp-nirspec/extractions/uncover-v4/uncover-v4_prism-clear_2561_45924.fnu.png" height="200px" /></td>
      <td style="text-align: left"><img src="https://s3.amazonaws.com/msaexp-nirspec/extractions/uncover-v4/uncover-v4_prism-clear_2561_45924.flam.png" height="200px" /></td>
    </tr>
    <tr>
      <td style="text-align: right">12</td>
      <td style="text-align: left">rubies-uds2-v4</td>
      <td style="text-align: left">rubies-uds2-v4_prism-clear_4233_40579.spec.fits</td>
      <td style="text-align: right">3.10671</td>
      <td style="text-align: right">11.3515</td>
      <td style="text-align: right">1369.53</td>
      <td style="text-align: left"><img src="https://grizli-cutout.herokuapp.com/thumb?size=1.5&amp;scl=2.0&amp;asinh=True&amp;filters=f115w-clear%2Cf277w-clear%2Cf444w-clear&amp;rgb_scl=1.5%2C0.74%2C1.3&amp;pl=2&amp;coord=34.2441997%2C-5.2458714" height="200px" /></td>
      <td style="text-align: left"><img src="https://grizli-cutout.herokuapp.com/thumb?size=1.5&amp;scl=4.0&amp;invert=True&amp;filters=f444w-clear&amp;rgb_scl=1.5%2C0.74%2C1.3&amp;pl=2&amp;coord=34.2441997%2C-5.2458714&amp;nirspec=True&amp;dpi_scale=6&amp;nrs_lw=0.5&amp;nrs_alpha=0.8&amp;metafile=jw04233001002" height="200px" /></td>
      <td style="text-align: left"><img src="https://s3.amazonaws.com/msaexp-nirspec/extractions/rubies-uds2-v4/rubies-uds2-v4_prism-clear_4233_40579.fnu.png" height="200px" /></td>
      <td style="text-align: left"><img src="https://s3.amazonaws.com/msaexp-nirspec/extractions/rubies-uds2-v4/rubies-uds2-v4_prism-clear_4233_40579.flam.png" height="200px" /></td>
    </tr>
    <tr>
      <td style="text-align: right">13</td>
      <td style="text-align: left">capers-cos07-v4</td>
      <td style="text-align: left">capers-cos07-v4_prism-clear_6368_105080.spec.fits</td>
      <td style="text-align: right">5.58011</td>
      <td style="text-align: right">11.3182</td>
      <td style="text-align: right">138.384</td>
      <td style="text-align: left"><img src="https://grizli-cutout.herokuapp.com/thumb?size=1.5&amp;scl=2.0&amp;asinh=True&amp;filters=f115w-clear%2Cf277w-clear%2Cf444w-clear&amp;rgb_scl=1.5%2C0.74%2C1.3&amp;pl=2&amp;coord=150.0649238%2C2.2780575" height="200px" /></td>
      <td style="text-align: left"><img src="https://grizli-cutout.herokuapp.com/thumb?size=1.5&amp;scl=4.0&amp;invert=True&amp;filters=f444w-clear&amp;rgb_scl=1.5%2C0.74%2C1.3&amp;pl=2&amp;coord=150.0649238%2C2.2780575&amp;nirspec=True&amp;dpi_scale=6&amp;nrs_lw=0.5&amp;nrs_alpha=0.8&amp;metafile=jw06368007001" height="200px" /></td>
      <td style="text-align: left"><img src="https://s3.amazonaws.com/msaexp-nirspec/extractions/capers-cos07-v4/capers-cos07-v4_prism-clear_6368_105080.fnu.png" height="200px" /></td>
      <td style="text-align: left"><img src="https://s3.amazonaws.com/msaexp-nirspec/extractions/capers-cos07-v4/capers-cos07-v4_prism-clear_6368_105080.flam.png" height="200px" /></td>
    </tr>
    <tr>
      <td style="text-align: right">14</td>
      <td style="text-align: left">glazebrook-v4</td>
      <td style="text-align: left">glazebrook-v4_prism-clear_2565_41232.spec.fits</td>
      <td style="text-align: right">3.12015</td>
      <td style="text-align: right">11.2815</td>
      <td style="text-align: right">17.5962</td>
      <td style="text-align: left"><img src="https://grizli-cutout.herokuapp.com/thumb?size=1.5&amp;scl=2.0&amp;asinh=True&amp;filters=f115w-clear%2Cf277w-clear%2Cf444w-clear&amp;rgb_scl=1.5%2C0.74%2C1.3&amp;pl=2&amp;coord=34.52662%2C-5.13606" height="200px" /></td>
      <td style="text-align: left"><img src="https://grizli-cutout.herokuapp.com/thumb?size=1.5&amp;scl=4.0&amp;invert=True&amp;filters=f444w-clear&amp;rgb_scl=1.5%2C0.74%2C1.3&amp;pl=2&amp;coord=34.52662%2C-5.13606&amp;nirspec=True&amp;dpi_scale=6&amp;nrs_lw=0.5&amp;nrs_alpha=0.8&amp;metafile=jw02565300001" height="200px" /></td>
      <td style="text-align: left"><img src="https://s3.amazonaws.com/msaexp-nirspec/extractions/glazebrook-v4/glazebrook-v4_prism-clear_2565_41232.fnu.png" height="200px" /></td>
      <td style="text-align: left"><img src="https://s3.amazonaws.com/msaexp-nirspec/extractions/glazebrook-v4/glazebrook-v4_prism-clear_2565_41232.flam.png" height="200px" /></td>
    </tr>
    <tr>
      <td style="text-align: right">15</td>
      <td style="text-align: left">nexus-obs3-v4</td>
      <td style="text-align: left">nexus-obs3-v4_prism-clear_5105_23192.spec.fits</td>
      <td style="text-align: right">4.52105</td>
      <td style="text-align: right">11.2767</td>
      <td style="text-align: right">1058.6</td>
      <td style="text-align: left"><img src="https://grizli-cutout.herokuapp.com/thumb?size=1.5&amp;scl=2.0&amp;asinh=True&amp;filters=f115w-clear%2Cf277w-clear%2Cf444w-clear&amp;rgb_scl=1.5%2C0.74%2C1.3&amp;pl=2&amp;coord=268.522548%2C65.2626446" height="200px" /></td>
      <td style="text-align: left"><img src="https://grizli-cutout.herokuapp.com/thumb?size=1.5&amp;scl=4.0&amp;invert=True&amp;filters=f444w-clear&amp;rgb_scl=1.5%2C0.74%2C1.3&amp;pl=2&amp;coord=268.522548%2C65.2626446&amp;nirspec=True&amp;dpi_scale=6&amp;nrs_lw=0.5&amp;nrs_alpha=0.8&amp;metafile=jw05105003002" height="200px" /></td>
      <td style="text-align: left"><img src="https://s3.amazonaws.com/msaexp-nirspec/extractions/nexus-obs3-v4/nexus-obs3-v4_prism-clear_5105_23192.fnu.png" height="200px" /></td>
      <td style="text-align: left"><img src="https://s3.amazonaws.com/msaexp-nirspec/extractions/nexus-obs3-v4/nexus-obs3-v4_prism-clear_5105_23192.flam.png" height="200px" /></td>
    </tr>
    <tr>
      <td style="text-align: right">16</td>
      <td style="text-align: left">capers-egs65-v4</td>
      <td style="text-align: left">capers-egs65-v4_prism-clear_6368_27615.spec.fits</td>
      <td style="text-align: right">5.68123</td>
      <td style="text-align: right">11.2409</td>
      <td style="text-align: right">241.543</td>
      <td style="text-align: left"><img src="https://grizli-cutout.herokuapp.com/thumb?size=1.5&amp;scl=2.0&amp;asinh=True&amp;filters=f115w-clear%2Cf277w-clear%2Cf444w-clear&amp;rgb_scl=1.5%2C0.74%2C1.3&amp;pl=2&amp;coord=215.0172984%2C52.8801574" height="200px" /></td>
      <td style="text-align: left"><img src="https://grizli-cutout.herokuapp.com/thumb?size=1.5&amp;scl=4.0&amp;invert=True&amp;filters=f444w-clear&amp;rgb_scl=1.5%2C0.74%2C1.3&amp;pl=2&amp;coord=215.0172984%2C52.8801574&amp;nirspec=True&amp;dpi_scale=6&amp;nrs_lw=0.5&amp;nrs_alpha=0.8&amp;metafile=jw06368065001" height="200px" /></td>
      <td style="text-align: left"><img src="https://s3.amazonaws.com/msaexp-nirspec/extractions/capers-egs65-v4/capers-egs65-v4_prism-clear_6368_27615.fnu.png" height="200px" /></td>
      <td style="text-align: left"><img src="https://s3.amazonaws.com/msaexp-nirspec/extractions/capers-egs65-v4/capers-egs65-v4_prism-clear_6368_27615.flam.png" height="200px" /></td>
    </tr>
    <tr>
      <td style="text-align: right">17</td>
      <td style="text-align: left">uncover-v4</td>
      <td style="text-align: left">uncover-v4_prism-clear_2561_45092.spec.fits</td>
      <td style="text-align: right">3.46158</td>
      <td style="text-align: right">11.2391</td>
      <td style="text-align: right">98.5119</td>
      <td style="text-align: left"><img src="https://grizli-cutout.herokuapp.com/thumb?size=1.5&amp;scl=2.0&amp;asinh=True&amp;filters=f115w-clear%2Cf277w-clear%2Cf444w-clear&amp;rgb_scl=1.5%2C0.74%2C1.3&amp;pl=2&amp;coord=3.56691993%2C-30.34727124" height="200px" /></td>
      <td style="text-align: left"><img src="https://grizli-cutout.herokuapp.com/thumb?size=1.5&amp;scl=4.0&amp;invert=True&amp;filters=f444w-clear&amp;rgb_scl=1.5%2C0.74%2C1.3&amp;pl=2&amp;coord=3.56691993%2C-30.34727124&amp;nirspec=True&amp;dpi_scale=6&amp;nrs_lw=0.5&amp;nrs_alpha=0.8&amp;metafile=jw02561002005" height="200px" /></td>
      <td style="text-align: left"><img src="https://s3.amazonaws.com/msaexp-nirspec/extractions/uncover-v4/uncover-v4_prism-clear_2561_45092.fnu.png" height="200px" /></td>
      <td style="text-align: left"><img src="https://s3.amazonaws.com/msaexp-nirspec/extractions/uncover-v4/uncover-v4_prism-clear_2561_45092.flam.png" height="200px" /></td>
    </tr>
    <tr>
      <td style="text-align: right">18</td>
      <td style="text-align: left">uncover-62-v4</td>
      <td style="text-align: left">uncover-62-v4_prism-clear_2561_57618.spec.fits</td>
      <td style="text-align: right">3.46158</td>
      <td style="text-align: right">11.2264</td>
      <td style="text-align: right">82.8891</td>
      <td style="text-align: left"><img src="https://grizli-cutout.herokuapp.com/thumb?size=1.5&amp;scl=2.0&amp;asinh=True&amp;filters=f115w-clear%2Cf277w-clear%2Cf444w-clear&amp;rgb_scl=1.5%2C0.74%2C1.3&amp;pl=2&amp;coord=3.5669232%2C-30.34727297" height="200px" /></td>
      <td style="text-align: left"><img src="https://grizli-cutout.herokuapp.com/thumb?size=1.5&amp;scl=4.0&amp;invert=True&amp;filters=f444w-clear&amp;rgb_scl=1.5%2C0.74%2C1.3&amp;pl=2&amp;coord=3.5669232%2C-30.34727297&amp;nirspec=True&amp;dpi_scale=6&amp;nrs_lw=0.5&amp;nrs_alpha=0.8&amp;metafile=jw02561006002" height="200px" /></td>
      <td style="text-align: left"><img src="https://s3.amazonaws.com/msaexp-nirspec/extractions/uncover-62-v4/uncover-62-v4_prism-clear_2561_57618.fnu.png" height="200px" /></td>
      <td style="text-align: left"><img src="https://s3.amazonaws.com/msaexp-nirspec/extractions/uncover-62-v4/uncover-62-v4_prism-clear_2561_57618.flam.png" height="200px" /></td>
    </tr>
    <tr>
      <td style="text-align: right">19</td>
      <td style="text-align: left">uncover-62-v4</td>
      <td style="text-align: left">uncover-62-v4_prism-clear_2561_58453.spec.fits</td>
      <td style="text-align: right">4.4673</td>
      <td style="text-align: right">11.2252</td>
      <td style="text-align: right">969.994</td>
      <td style="text-align: left"><img src="https://grizli-cutout.herokuapp.com/thumb?size=1.5&amp;scl=2.0&amp;asinh=True&amp;filters=f115w-clear%2Cf277w-clear%2Cf444w-clear&amp;rgb_scl=1.5%2C0.74%2C1.3&amp;pl=2&amp;coord=3.58475839%2C-30.34362894" height="200px" /></td>
      <td style="text-align: left"><img src="https://grizli-cutout.herokuapp.com/thumb?size=1.5&amp;scl=4.0&amp;invert=True&amp;filters=f444w-clear&amp;rgb_scl=1.5%2C0.74%2C1.3&amp;pl=2&amp;coord=3.58475839%2C-30.34362894&amp;nirspec=True&amp;dpi_scale=6&amp;nrs_lw=0.5&amp;nrs_alpha=0.8&amp;metafile=jw02561006002" height="200px" /></td>
      <td style="text-align: left"><img src="https://s3.amazonaws.com/msaexp-nirspec/extractions/uncover-62-v4/uncover-62-v4_prism-clear_2561_58453.fnu.png" height="200px" /></td>
      <td style="text-align: left"><img src="https://s3.amazonaws.com/msaexp-nirspec/extractions/uncover-62-v4/uncover-62-v4_prism-clear_2561_58453.flam.png" height="200px" /></td>
    </tr>
    <tr>
      <td style="text-align: right">20</td>
      <td style="text-align: left">gds-barrufet-s67-v4</td>
      <td style="text-align: left">gds-barrufet-s67-v4_prism-clear_2198_1260.spec.fits</td>
      <td style="text-align: right">4.4319</td>
      <td style="text-align: right">11.2251</td>
      <td style="text-align: right">72.7017</td>
      <td style="text-align: left"><img src="https://grizli-cutout.herokuapp.com/thumb?size=1.5&amp;scl=2.0&amp;asinh=True&amp;filters=f115w-clear%2Cf277w-clear%2Cf444w-clear&amp;rgb_scl=1.5%2C0.74%2C1.3&amp;pl=2&amp;coord=53.07485578%2C-27.87589702" height="200px" /></td>
      <td style="text-align: left"><img src="https://grizli-cutout.herokuapp.com/thumb?size=1.5&amp;scl=4.0&amp;invert=True&amp;filters=f444w-clear&amp;rgb_scl=1.5%2C0.74%2C1.3&amp;pl=2&amp;coord=53.07485578%2C-27.87589702&amp;nirspec=True&amp;dpi_scale=6&amp;nrs_lw=0.5&amp;nrs_alpha=0.8&amp;metafile=jw02198003001" height="200px" /></td>
      <td style="text-align: left"><img src="https://s3.amazonaws.com/msaexp-nirspec/extractions/gds-barrufet-s67-v4/gds-barrufet-s67-v4_prism-clear_2198_1260.fnu.png" height="200px" /></td>
      <td style="text-align: left"><img src="https://s3.amazonaws.com/msaexp-nirspec/extractions/gds-barrufet-s67-v4/gds-barrufet-s67-v4_prism-clear_2198_1260.flam.png" height="200px" /></td>
    </tr>
    <tr>
      <td style="text-align: right">21</td>
      <td style="text-align: left">glazebrook-cos-obs3-v4</td>
      <td style="text-align: left">glazebrook-cos-obs3-v4_prism-clear_2565_20115.spec.fits</td>
      <td style="text-align: right">3.71293</td>
      <td style="text-align: right">11.2231</td>
      <td style="text-align: right">2.61723</td>
      <td style="text-align: left"><img src="https://grizli-cutout.herokuapp.com/thumb?size=1.5&amp;scl=2.0&amp;asinh=True&amp;filters=f115w-clear%2Cf277w-clear%2Cf444w-clear&amp;rgb_scl=1.5%2C0.74%2C1.3&amp;pl=2&amp;coord=150.06146711%2C2.37868632" height="200px" /></td>
      <td style="text-align: left"><img src="https://grizli-cutout.herokuapp.com/thumb?size=1.5&amp;scl=4.0&amp;invert=True&amp;filters=f444w-clear&amp;rgb_scl=1.5%2C0.74%2C1.3&amp;pl=2&amp;coord=150.06146711%2C2.37868632&amp;nirspec=True&amp;dpi_scale=6&amp;nrs_lw=0.5&amp;nrs_alpha=0.8&amp;metafile=jw02565007001" height="200px" /></td>
      <td style="text-align: left"><img src="https://s3.amazonaws.com/msaexp-nirspec/extractions/glazebrook-cos-obs3-v4/glazebrook-cos-obs3-v4_prism-clear_2565_20115.fnu.png" height="200px" /></td>
      <td style="text-align: left"><img src="https://s3.amazonaws.com/msaexp-nirspec/extractions/glazebrook-cos-obs3-v4/glazebrook-cos-obs3-v4_prism-clear_2565_20115.flam.png" height="200px" /></td>
    </tr>
    <tr>
      <td style="text-align: right">22</td>
      <td style="text-align: left">glazebrook-v4</td>
      <td style="text-align: left">glazebrook-v4_prism-clear_2565_12629.spec.fits</td>
      <td style="text-align: right">3.19399</td>
      <td style="text-align: right">11.2039</td>
      <td style="text-align: right">5.4745</td>
      <td style="text-align: left"><img src="https://grizli-cutout.herokuapp.com/thumb?size=1.5&amp;scl=2.0&amp;asinh=True&amp;filters=f115w-clear%2Cf277w-clear%2Cf444w-clear&amp;rgb_scl=1.5%2C0.74%2C1.3&amp;pl=2&amp;coord=34.25588536%2C-5.23387142" height="200px" /></td>
      <td style="text-align: left"><img src="https://grizli-cutout.herokuapp.com/thumb?size=1.5&amp;scl=4.0&amp;invert=True&amp;filters=f444w-clear&amp;rgb_scl=1.5%2C0.74%2C1.3&amp;pl=2&amp;coord=34.25588536%2C-5.23387142&amp;nirspec=True&amp;dpi_scale=6&amp;nrs_lw=0.5&amp;nrs_alpha=0.8&amp;metafile=jw02565200001" height="200px" /></td>
      <td style="text-align: left"><img src="https://s3.amazonaws.com/msaexp-nirspec/extractions/glazebrook-v4/glazebrook-v4_prism-clear_2565_12629.fnu.png" height="200px" /></td>
      <td style="text-align: left"><img src="https://s3.amazonaws.com/msaexp-nirspec/extractions/glazebrook-v4/glazebrook-v4_prism-clear_2565_12629.flam.png" height="200px" /></td>
    </tr>
    <tr>
      <td style="text-align: right">23</td>
      <td style="text-align: left">rubies-egs63-v4</td>
      <td style="text-align: left">rubies-egs63-v4_prism-clear_4233_49140.spec.fits</td>
      <td style="text-align: right">6.68847</td>
      <td style="text-align: right">11.1816</td>
      <td style="text-align: right">657.49</td>
      <td style="text-align: left"><img src="https://grizli-cutout.herokuapp.com/thumb?size=1.5&amp;scl=2.0&amp;asinh=True&amp;filters=f115w-clear%2Cf277w-clear%2Cf444w-clear&amp;rgb_scl=1.5%2C0.74%2C1.3&amp;pl=2&amp;coord=214.89224786%2C52.87740968" height="200px" /></td>
      <td style="text-align: left"><img src="https://grizli-cutout.herokuapp.com/thumb?size=1.5&amp;scl=4.0&amp;invert=True&amp;filters=f444w-clear&amp;rgb_scl=1.5%2C0.74%2C1.3&amp;pl=2&amp;coord=214.89224786%2C52.87740968&amp;nirspec=True&amp;dpi_scale=6&amp;nrs_lw=0.5&amp;nrs_alpha=0.8&amp;metafile=jw04233006003" height="200px" /></td>
      <td style="text-align: left"><img src="https://s3.amazonaws.com/msaexp-nirspec/extractions/rubies-egs63-v4/rubies-egs63-v4_prism-clear_4233_49140.fnu.png" height="200px" /></td>
      <td style="text-align: left"><img src="https://s3.amazonaws.com/msaexp-nirspec/extractions/rubies-egs63-v4/rubies-egs63-v4_prism-clear_4233_49140.flam.png" height="200px" /></td>
    </tr>
    <tr>
      <td style="text-align: right">24</td>
      <td style="text-align: left">jades-gds-w08-v4</td>
      <td style="text-align: left">jades-gds-w08-v4_prism-clear_1212_792.spec.fits</td>
      <td style="text-align: right">3.67516</td>
      <td style="text-align: right">11.173</td>
      <td style="text-align: right">341.192</td>
      <td style="text-align: left"><img src="https://grizli-cutout.herokuapp.com/thumb?size=1.5&amp;scl=2.0&amp;asinh=True&amp;filters=f115w-clear%2Cf277w-clear%2Cf444w-clear&amp;rgb_scl=1.5%2C0.74%2C1.3&amp;pl=2&amp;coord=53.15832903%2C-27.73360515" height="200px" /></td>
      <td style="text-align: left"><img src="https://grizli-cutout.herokuapp.com/thumb?size=1.5&amp;scl=4.0&amp;invert=True&amp;filters=f444w-clear&amp;rgb_scl=1.5%2C0.74%2C1.3&amp;pl=2&amp;coord=53.15832903%2C-27.73360515&amp;nirspec=True&amp;dpi_scale=6&amp;nrs_lw=0.5&amp;nrs_alpha=0.8&amp;metafile=jw01212008001" height="200px" /></td>
      <td style="text-align: left"><img src="https://s3.amazonaws.com/msaexp-nirspec/extractions/jades-gds-w08-v4/jades-gds-w08-v4_prism-clear_1212_792.fnu.png" height="200px" /></td>
      <td style="text-align: left"><img src="https://s3.amazonaws.com/msaexp-nirspec/extractions/jades-gds-w08-v4/jades-gds-w08-v4_prism-clear_1212_792.flam.png" height="200px" /></td>
    </tr>
    <tr>
      <td style="text-align: right">25</td>
      <td style="text-align: left">rubies-uds42-v4</td>
      <td style="text-align: left">rubies-uds42-v4_prism-clear_4233_807469.spec.fits</td>
      <td style="text-align: right">6.77538</td>
      <td style="text-align: right">11.1462</td>
      <td style="text-align: right">4951.05</td>
      <td style="text-align: left"><img src="https://grizli-cutout.herokuapp.com/thumb?size=1.5&amp;scl=2.0&amp;asinh=True&amp;filters=f115w-clear%2Cf277w-clear%2Cf444w-clear&amp;rgb_scl=1.5%2C0.74%2C1.3&amp;pl=2&amp;coord=34.3761391%2C-5.3103658" height="200px" /></td>
      <td style="text-align: left"><img src="https://grizli-cutout.herokuapp.com/thumb?size=1.5&amp;scl=4.0&amp;invert=True&amp;filters=f444w-clear&amp;rgb_scl=1.5%2C0.74%2C1.3&amp;pl=2&amp;coord=34.3761391%2C-5.3103658&amp;nirspec=True&amp;dpi_scale=6&amp;nrs_lw=0.5&amp;nrs_alpha=0.8&amp;metafile=jw04233004002" height="200px" /></td>
      <td style="text-align: left"><img src="https://s3.amazonaws.com/msaexp-nirspec/extractions/rubies-uds42-v4/rubies-uds42-v4_prism-clear_4233_807469.fnu.png" height="200px" /></td>
      <td style="text-align: left"><img src="https://s3.amazonaws.com/msaexp-nirspec/extractions/rubies-uds42-v4/rubies-uds42-v4_prism-clear_4233_807469.flam.png" height="200px" /></td>
    </tr>
    <tr>
      <td style="text-align: right">26</td>
      <td style="text-align: left">rubies-egs53-v4</td>
      <td style="text-align: left">rubies-egs53-v4_prism-clear_4233_25712.spec.fits</td>
      <td style="text-align: right">3.89179</td>
      <td style="text-align: right">11.1396</td>
      <td style="text-align: right">120.361</td>
      <td style="text-align: left"><img src="https://grizli-cutout.herokuapp.com/thumb?size=1.5&amp;scl=2.0&amp;asinh=True&amp;filters=f115w-clear%2Cf277w-clear%2Cf444w-clear&amp;rgb_scl=1.5%2C0.74%2C1.3&amp;pl=2&amp;coord=214.86074535%2C52.7968307" height="200px" /></td>
      <td style="text-align: left"><img src="https://grizli-cutout.herokuapp.com/thumb?size=1.5&amp;scl=4.0&amp;invert=True&amp;filters=f444w-clear&amp;rgb_scl=1.5%2C0.74%2C1.3&amp;pl=2&amp;coord=214.86074535%2C52.7968307&amp;nirspec=True&amp;dpi_scale=6&amp;nrs_lw=0.5&amp;nrs_alpha=0.8&amp;metafile=jw04233005003" height="200px" /></td>
      <td style="text-align: left"><img src="https://s3.amazonaws.com/msaexp-nirspec/extractions/rubies-egs53-v4/rubies-egs53-v4_prism-clear_4233_25712.fnu.png" height="200px" /></td>
      <td style="text-align: left"><img src="https://s3.amazonaws.com/msaexp-nirspec/extractions/rubies-egs53-v4/rubies-egs53-v4_prism-clear_4233_25712.flam.png" height="200px" /></td>
    </tr>
    <tr>
      <td style="text-align: right">27</td>
      <td style="text-align: left">uncover-v4</td>
      <td style="text-align: left">uncover-v4_prism-clear_2561_23955.spec.fits</td>
      <td style="text-align: right">3.47275</td>
      <td style="text-align: right">11.1197</td>
      <td style="text-align: right">131.122</td>
      <td style="text-align: left"><img src="https://grizli-cutout.herokuapp.com/thumb?size=1.5&amp;scl=2.0&amp;asinh=True&amp;filters=f115w-clear%2Cf277w-clear%2Cf444w-clear&amp;rgb_scl=1.5%2C0.74%2C1.3&amp;pl=2&amp;coord=3.5812724%2C-30.38022784" height="200px" /></td>
      <td style="text-align: left"><img src="https://grizli-cutout.herokuapp.com/thumb?size=1.5&amp;scl=4.0&amp;invert=True&amp;filters=f444w-clear&amp;rgb_scl=1.5%2C0.74%2C1.3&amp;pl=2&amp;coord=3.5812724%2C-30.38022784&amp;nirspec=True&amp;dpi_scale=6&amp;nrs_lw=0.5&amp;nrs_alpha=0.8&amp;metafile=jw02561002002" height="200px" /></td>
      <td style="text-align: left"><img src="https://s3.amazonaws.com/msaexp-nirspec/extractions/uncover-v4/uncover-v4_prism-clear_2561_23955.fnu.png" height="200px" /></td>
      <td style="text-align: left"><img src="https://s3.amazonaws.com/msaexp-nirspec/extractions/uncover-v4/uncover-v4_prism-clear_2561_23955.flam.png" height="200px" /></td>
    </tr>
    <tr>
      <td style="text-align: right">28</td>
      <td style="text-align: left">goodsn-wide66-v4</td>
      <td style="text-align: left">goodsn-wide66-v4_prism-clear_1211_3184.spec.fits</td>
      <td style="text-align: right">3.4402</td>
      <td style="text-align: right">11.1181</td>
      <td style="text-align: right">59.2013</td>
      <td style="text-align: left"><img src="https://grizli-cutout.herokuapp.com/thumb?size=1.5&amp;scl=2.0&amp;asinh=True&amp;filters=f115w-clear%2Cf277w-clear%2Cf444w-clear&amp;rgb_scl=1.5%2C0.74%2C1.3&amp;pl=2&amp;coord=189.3822962%2C62.28430388" height="200px" /></td>
      <td style="text-align: left"><img src="https://grizli-cutout.herokuapp.com/thumb?size=1.5&amp;scl=4.0&amp;invert=True&amp;filters=f444w-clear&amp;rgb_scl=1.5%2C0.74%2C1.3&amp;pl=2&amp;coord=189.3822962%2C62.28430388&amp;nirspec=True&amp;dpi_scale=6&amp;nrs_lw=0.5&amp;nrs_alpha=0.8&amp;metafile=jw01211066001" height="200px" /></td>
      <td style="text-align: left"><img src="https://s3.amazonaws.com/msaexp-nirspec/extractions/goodsn-wide66-v4/goodsn-wide66-v4_prism-clear_1211_3184.fnu.png" height="200px" /></td>
      <td style="text-align: left"><img src="https://s3.amazonaws.com/msaexp-nirspec/extractions/goodsn-wide66-v4/goodsn-wide66-v4_prism-clear_1211_3184.flam.png" height="200px" /></td>
    </tr>
    <tr>
      <td style="text-align: right">29</td>
      <td style="text-align: left">rubies-egs61-v4</td>
      <td style="text-align: left">rubies-egs61-v4_prism-clear_4233_55604.spec.fits</td>
      <td style="text-align: right">6.98435</td>
      <td style="text-align: right">11.1174</td>
      <td style="text-align: right">2762.98</td>
      <td style="text-align: left"><img src="https://grizli-cutout.herokuapp.com/thumb?size=1.5&amp;scl=2.0&amp;asinh=True&amp;filters=f115w-clear%2Cf277w-clear%2Cf444w-clear&amp;rgb_scl=1.5%2C0.74%2C1.3&amp;pl=2&amp;coord=214.98302557%2C52.9560013" height="200px" /></td>
      <td style="text-align: left"><img src="https://grizli-cutout.herokuapp.com/thumb?size=1.5&amp;scl=4.0&amp;invert=True&amp;filters=f444w-clear&amp;rgb_scl=1.5%2C0.74%2C1.3&amp;pl=2&amp;coord=214.98302557%2C52.9560013&amp;nirspec=True&amp;dpi_scale=6&amp;nrs_lw=0.5&amp;nrs_alpha=0.8&amp;metafile=jw04233006001" height="200px" /></td>
      <td style="text-align: left"><img src="https://s3.amazonaws.com/msaexp-nirspec/extractions/rubies-egs61-v4/rubies-egs61-v4_prism-clear_4233_55604.fnu.png" height="200px" /></td>
      <td style="text-align: left"><img src="https://s3.amazonaws.com/msaexp-nirspec/extractions/rubies-egs61-v4/rubies-egs61-v4_prism-clear_4233_55604.flam.png" height="200px" /></td>
    </tr>
    <tr>
      <td style="text-align: right">30</td>
      <td style="text-align: left">uncover-61-v4</td>
      <td style="text-align: left">uncover-61-v4_prism-clear_2561_32864.spec.fits</td>
      <td style="text-align: right">3.05744</td>
      <td style="text-align: right">11.1156</td>
      <td style="text-align: right">148.446</td>
      <td style="text-align: left"><img src="https://grizli-cutout.herokuapp.com/thumb?size=1.5&amp;scl=2.0&amp;asinh=True&amp;filters=f115w-clear%2Cf277w-clear%2Cf444w-clear&amp;rgb_scl=1.5%2C0.74%2C1.3&amp;pl=2&amp;coord=3.58249928%2C-30.3854592" height="200px" /></td>
      <td style="text-align: left"><img src="https://grizli-cutout.herokuapp.com/thumb?size=1.5&amp;scl=4.0&amp;invert=True&amp;filters=f444w-clear&amp;rgb_scl=1.5%2C0.74%2C1.3&amp;pl=2&amp;coord=3.58249928%2C-30.3854592&amp;nirspec=True&amp;dpi_scale=6&amp;nrs_lw=0.5&amp;nrs_alpha=0.8&amp;metafile=jw02561006001" height="200px" /></td>
      <td style="text-align: left"><img src="https://s3.amazonaws.com/msaexp-nirspec/extractions/uncover-61-v4/uncover-61-v4_prism-clear_2561_32864.fnu.png" height="200px" /></td>
      <td style="text-align: left"><img src="https://s3.amazonaws.com/msaexp-nirspec/extractions/uncover-61-v4/uncover-61-v4_prism-clear_2561_32864.flam.png" height="200px" /></td>
    </tr>
    <tr>
      <td style="text-align: right">31</td>
      <td style="text-align: left">jades-gds-wide3-v4</td>
      <td style="text-align: left">jades-gds-wide3-v4_prism-clear_1180_209777.spec.fits</td>
      <td style="text-align: right">3.70992</td>
      <td style="text-align: right">11.1048</td>
      <td style="text-align: right">244.425</td>
      <td style="text-align: left"><img src="https://grizli-cutout.herokuapp.com/thumb?size=1.5&amp;scl=2.0&amp;asinh=True&amp;filters=f115w-clear%2Cf277w-clear%2Cf444w-clear&amp;rgb_scl=1.5%2C0.74%2C1.3&amp;pl=2&amp;coord=53.1584709%2C-27.7740461" height="200px" /></td>
      <td style="text-align: left"><img src="https://grizli-cutout.herokuapp.com/thumb?size=1.5&amp;scl=4.0&amp;invert=True&amp;filters=f444w-clear&amp;rgb_scl=1.5%2C0.74%2C1.3&amp;pl=2&amp;coord=53.1584709%2C-27.7740461&amp;nirspec=True&amp;dpi_scale=6&amp;nrs_lw=0.5&amp;nrs_alpha=0.8&amp;metafile=jw01180136001" height="200px" /></td>
      <td style="text-align: left"><img src="https://s3.amazonaws.com/msaexp-nirspec/extractions/jades-gds-wide3-v4/jades-gds-wide3-v4_prism-clear_1180_209777.fnu.png" height="200px" /></td>
      <td style="text-align: left"><img src="https://s3.amazonaws.com/msaexp-nirspec/extractions/jades-gds-wide3-v4/jades-gds-wide3-v4_prism-clear_1180_209777.flam.png" height="200px" /></td>
    </tr>
  </tbody>
</table>

<h2 id="read-a-spectrum">Read a spectrum</h2>

<p>The spectra can be accessed based on the <code class="language-plaintext highlighter-rouge">root</code> and <code class="language-plaintext highlighter-rouge">file</code> columns in the summary table.</p>

<p><img src="https://s3.amazonaws.com/msaexp-nirspec/extractions/rubies-egs61-v4/rubies-egs61-v4_prism-clear_4233_75646.fnu.png" alt="ruby" /></p>

<div class="language-python highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kn">import</span> <span class="nn">msaexp.spectrum</span>

<span class="c1"># Set spec_file here, will be used below in NN demo
</span><span class="n">spec_file</span> <span class="o">=</span> <span class="s">'rubies-egs61-v4_prism-clear_4233_75646.spec.fits'</span>

<span class="n">row</span> <span class="o">=</span> <span class="n">tab</span><span class="p">[</span><span class="n">tab</span><span class="p">[</span><span class="s">'file'</span><span class="p">]</span> <span class="o">==</span> <span class="n">spec_file</span><span class="p">][</span><span class="mi">0</span><span class="p">]</span>
<span class="n">spec</span> <span class="o">=</span> <span class="n">msaexp</span><span class="p">.</span><span class="n">spectrum</span><span class="p">.</span><span class="n">SpectrumSampler</span><span class="p">(</span><span class="n">FITS_URL</span><span class="p">.</span><span class="nb">format</span><span class="p">(</span><span class="o">**</span><span class="n">row</span><span class="p">))</span>
</code></pre></div></div>

<div class="language-python highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="n">row</span><span class="p">[</span><span class="s">'Mass'</span><span class="p">]</span>
</code></pre></div></div>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>10.873998434439217
</code></pre></div></div>

<div class="language-python highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="n">spec</span><span class="p">.</span><span class="n">spec</span><span class="p">.</span><span class="n">info</span>
</code></pre></div></div>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>&lt;GTable length=473&gt;
    name     dtype  unit                description                   class     n_bad
----------- ------- ---- ----------------------------------------- ------------ -----
       wave float64                                                      Column     0
       flux float64                                                      Column     0
        err float64                                                      Column     0
        sky float64  uJy                                           MaskedColumn     5
  path_corr float64                                                MaskedColumn     5
       npix float64                                                      Column     0
   flux_sum float64                                                      Column     0
profile_sum float64                                                      Column     0
    var_sum float64                                                      Column     0
       corr float64                                                      Column     0
     escale float64                                                      Column     0
   full_err float64  uJy                                                 Column     0
      valid    bool                                                      Column     0
          R float64      Spectral resolution from tabulated curves       Column     0
    to_flam float64                                                      Column     0
</code></pre></div></div>

<div class="language-python highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="n">plt</span><span class="p">.</span><span class="n">plot</span><span class="p">(</span><span class="n">spec</span><span class="p">[</span><span class="s">'wave'</span><span class="p">],</span> <span class="n">spec</span><span class="p">[</span><span class="s">'flux'</span><span class="p">],</span>
         <span class="n">label</span><span class="o">=</span><span class="s">"{file}</span><span class="se">\n</span><span class="s">z={z_best:.3f}"</span><span class="p">.</span><span class="nb">format</span><span class="p">(</span><span class="o">**</span><span class="n">row</span><span class="p">))</span>
<span class="n">plt</span><span class="p">.</span><span class="n">legend</span><span class="p">()</span>
</code></pre></div></div>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>&lt;matplotlib.legend.Legend at 0x1046e1940&gt;
</code></pre></div></div>

<p><img src="/dja/assets/post_files/2025-05-01-nirspec-merged-table-v4_files/nirspec-merged-table-v4_35_1.png" alt="png" /></p>

<h1 id="all-msaexp-prism-spectra-in-a-single-table">All <code class="language-plaintext highlighter-rouge">msaexp</code> PRISM spectra in a single table</h1>

<p>All of the 1D extracted spectra have been collated into single FITS tables.</p>

<div class="language-python highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="n">combined_spectra_file</span> <span class="o">=</span> <span class="sa">f</span><span class="s">"dja_msaexp_emission_lines_</span><span class="si">{</span><span class="n">version</span><span class="si">}</span><span class="s">.prism_spectra.fits"</span>

<span class="k">if</span> <span class="n">os</span><span class="p">.</span><span class="n">path</span><span class="p">.</span><span class="n">exists</span><span class="p">(</span><span class="n">combined_spectra_file</span><span class="p">):</span>
    <span class="n">prism_spectra</span> <span class="o">=</span> <span class="n">utils</span><span class="p">.</span><span class="n">read_catalog</span><span class="p">(</span><span class="n">combined_spectra_file</span><span class="p">)</span>
<span class="k">else</span><span class="p">:</span>
    <span class="c1"># Combined prism spectra in a single big table (595 Mb)
</span>    <span class="n">prism_spectra</span> <span class="o">=</span> <span class="n">utils</span><span class="p">.</span><span class="n">read_catalog</span><span class="p">(</span>
        <span class="n">download_file</span><span class="p">(</span>
            <span class="sa">f</span><span class="s">"</span><span class="si">{</span><span class="n">URL_PREFIX</span><span class="si">}</span><span class="s">/</span><span class="si">{</span><span class="n">combined_spectra_file</span><span class="si">}</span><span class="s">"</span><span class="p">,</span>
            <span class="n">cache</span><span class="o">=</span><span class="n">CACHE_DOWNLOADS</span>
        <span class="p">),</span>
        <span class="nb">format</span><span class="o">=</span><span class="s">'fits'</span><span class="p">,</span>
    <span class="p">)</span>
</code></pre></div></div>

<div class="language-python highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="n">prism_spectra</span><span class="p">.</span><span class="n">info</span><span class="p">()</span>
</code></pre></div></div>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>&lt;GTable length=473&gt;
   name    dtype   shape      class     n_bad 
--------- ------- -------- ------------ ------
     wave float64                Column      0
     flux float64 (34949,)       Column      0
      err float64 (34949,)       Column      0
      sky float64 (34949,) MaskedColumn 697133
path_corr float64 (34949,) MaskedColumn 697133
     npix   int64 (34949,)       Column      0
 full_err float64 (34949,)       Column      0
    valid    bool (34949,)       Column      0
</code></pre></div></div>

<div class="language-python highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="c1"># The columns of the spectrum have N entries for N objects with a particular grating
# and are aligned with the summary table for that grating
</span>
<span class="n">is_prism</span> <span class="o">=</span> <span class="n">tab</span><span class="p">[</span><span class="s">'grating'</span><span class="p">]</span> <span class="o">==</span> <span class="s">'PRISM'</span>
<span class="n">tab</span><span class="p">[</span><span class="s">'prism_idx'</span><span class="p">]</span> <span class="o">=</span> <span class="mi">0</span>
<span class="n">tab</span><span class="p">[</span><span class="s">'prism_idx'</span><span class="p">][</span><span class="n">is_prism</span><span class="p">]</span> <span class="o">=</span> <span class="n">np</span><span class="p">.</span><span class="n">arange</span><span class="p">(</span><span class="n">is_prism</span><span class="p">.</span><span class="nb">sum</span><span class="p">())</span>

<span class="k">print</span><span class="p">(</span><span class="sa">f</span><span class="s">"""
File: </span><span class="si">{</span><span class="n">combined_spectra_file</span><span class="si">}</span><span class="se">\n</span><span class="s">
</span><span class="si">{</span><span class="n">prism_spectra</span><span class="p">[</span><span class="s">'flux'</span><span class="p">].</span><span class="n">shape</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="si">}</span><span class="s"> wavelength bins</span><span class="se">\n</span><span class="s">
PRISM spectra in the merged catalog: </span><span class="si">{</span><span class="n">is_prism</span><span class="p">.</span><span class="nb">sum</span><span class="p">()</span><span class="si">}</span><span class="s">
PRISM spectra in the combined table: </span><span class="si">{</span><span class="n">prism_spectra</span><span class="p">[</span><span class="s">'flux'</span><span class="p">].</span><span class="n">shape</span><span class="si">}</span><span class="s">
"""</span><span class="p">)</span>
</code></pre></div></div>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>File: dja_msaexp_emission_lines_v4.4.prism_spectra.fits

473 wavelength bins

PRISM spectra in the merged catalog: 34949
PRISM spectra in the combined table: (473, 34949)
</code></pre></div></div>

<div class="language-python highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="c1"># Subset of "valid" spectra defined at most wavelengths
</span><span class="n">valid_count</span> <span class="o">=</span> <span class="n">prism_spectra</span><span class="p">[</span><span class="s">'valid'</span><span class="p">].</span><span class="nb">sum</span><span class="p">(</span><span class="n">axis</span><span class="o">=</span><span class="mi">0</span><span class="p">)</span>
<span class="n">valid_spec</span> <span class="o">=</span> <span class="n">valid_count</span> <span class="o">&gt;</span> <span class="p">(</span><span class="n">valid_count</span><span class="p">.</span><span class="nb">max</span><span class="p">()</span> <span class="o">-</span> <span class="mi">64</span><span class="p">)</span>
<span class="n">valid_spec</span><span class="p">.</span><span class="nb">sum</span><span class="p">()</span>
</code></pre></div></div>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>31720
</code></pre></div></div>

<div class="language-python highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="n">row_idx</span> <span class="o">=</span> <span class="n">np</span><span class="p">.</span><span class="n">where</span><span class="p">(</span><span class="n">tab</span><span class="p">[</span><span class="s">'file'</span><span class="p">]</span> <span class="o">==</span> <span class="n">spec_file</span><span class="p">)[</span><span class="mi">0</span><span class="p">][</span><span class="mi">0</span><span class="p">]</span>
<span class="n">row</span> <span class="o">=</span> <span class="n">tab</span><span class="p">[</span><span class="n">row_idx</span><span class="p">]</span>

<span class="n">plt</span><span class="p">.</span><span class="n">plot</span><span class="p">(</span>
    <span class="n">spec</span><span class="p">[</span><span class="s">'wave'</span><span class="p">],</span> <span class="n">spec</span><span class="p">[</span><span class="s">'flux'</span><span class="p">],</span>
    <span class="n">lw</span><span class="o">=</span><span class="mi">2</span><span class="p">,</span> <span class="n">label</span><span class="o">=</span><span class="s">'Single spectrum'</span>
<span class="p">)</span>

<span class="n">plt</span><span class="p">.</span><span class="n">plot</span><span class="p">(</span>
    <span class="n">prism_spectra</span><span class="p">[</span><span class="s">'wave'</span><span class="p">],</span> <span class="n">prism_spectra</span><span class="p">[</span><span class="s">'flux'</span><span class="p">][:,</span> <span class="n">row</span><span class="p">[</span><span class="s">'prism_idx'</span><span class="p">]],</span>
    <span class="n">alpha</span><span class="o">=</span><span class="mf">0.5</span><span class="p">,</span> <span class="n">label</span><span class="o">=</span><span class="s">'From combined table'</span>
<span class="p">)</span>

<span class="n">plt</span><span class="p">.</span><span class="n">legend</span><span class="p">()</span>
</code></pre></div></div>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>&lt;matplotlib.legend.Legend at 0x3baa4ea50&gt;
</code></pre></div></div>

<p><img src="/dja/assets/post_files/2025-05-01-nirspec-merged-table-v4_files/nirspec-merged-table-v4_41_1.png" alt="png" /></p>

<h2 id="stacked-spectrum">“Stacked” spectrum</h2>

<p>Stacking prism spectra isn’t trivial due to the variable dispersion and wavelength sampling.  Here just plot a subset on top of each other.</p>

<div class="language-python highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="n">norm_column</span> <span class="o">=</span> <span class="s">'rest_416_flux'</span>
<span class="k">print</span><span class="p">(</span><span class="sa">f</span><span class="s">"Normalization column: '</span><span class="si">{</span><span class="n">norm_column</span><span class="si">}</span><span class="s">' = </span><span class="si">{</span><span class="n">tab</span><span class="p">[</span><span class="n">norm_column</span><span class="p">].</span><span class="n">description</span><span class="si">}</span><span class="s">"</span><span class="p">)</span>

<span class="n">flux_norm</span> <span class="o">=</span> <span class="n">prism_spectra</span><span class="p">[</span><span class="s">'flux'</span><span class="p">]</span> <span class="o">/</span> <span class="n">tab</span><span class="p">[</span><span class="n">norm_column</span><span class="p">][</span><span class="n">is_prism</span><span class="p">]</span>

<span class="c1"># Subset
</span><span class="n">zi</span> <span class="o">=</span> <span class="n">row</span><span class="p">[</span><span class="s">'z_best'</span><span class="p">]</span>
<span class="n">dz</span> <span class="o">=</span> <span class="mf">0.05</span>

<span class="n">sample</span> <span class="o">=</span> <span class="p">(</span><span class="n">tab</span><span class="p">[</span><span class="s">'z_best'</span><span class="p">]</span> <span class="o">&gt;</span> <span class="n">zi</span> <span class="o">-</span> <span class="n">dz</span><span class="p">)</span> <span class="o">&amp;</span> <span class="p">(</span><span class="n">tab</span><span class="p">[</span><span class="s">'z_best'</span><span class="p">]</span> <span class="o">&lt;</span> <span class="n">zi</span> <span class="o">+</span> <span class="n">dz</span><span class="p">)</span>

<span class="n">sub_sample</span> <span class="o">=</span> <span class="n">sample</span><span class="p">[</span><span class="n">is_prism</span><span class="p">]</span> <span class="o">&amp;</span> <span class="n">valid_spec</span>
<span class="n">sub_idx</span> <span class="o">=</span> <span class="n">np</span><span class="p">.</span><span class="n">where</span><span class="p">(</span><span class="n">sub_sample</span><span class="p">)[</span><span class="mi">0</span><span class="p">]</span>

<span class="n">z_sample</span> <span class="o">=</span> <span class="n">tab</span><span class="p">[</span><span class="s">'z_best'</span><span class="p">][</span><span class="n">is_prism</span><span class="p">][</span><span class="n">sample</span><span class="p">[</span><span class="n">is_prism</span><span class="p">]</span> <span class="o">&amp;</span> <span class="n">valid_spec</span><span class="p">]</span>

<span class="n">fig</span><span class="p">,</span> <span class="n">axes</span> <span class="o">=</span> <span class="n">plt</span><span class="p">.</span><span class="n">subplots</span><span class="p">(</span><span class="mi">2</span><span class="p">,</span><span class="mi">1</span><span class="p">,</span><span class="n">figsize</span><span class="o">=</span><span class="p">(</span><span class="mi">10</span><span class="p">,</span><span class="mi">7</span><span class="p">),</span> <span class="n">sharex</span><span class="o">=</span><span class="bp">False</span><span class="p">,</span> <span class="n">sharey</span><span class="o">=</span><span class="bp">True</span><span class="p">)</span>

<span class="k">for</span> <span class="n">j</span><span class="p">,</span> <span class="n">z</span> <span class="ow">in</span> <span class="nb">enumerate</span><span class="p">(</span><span class="n">z_sample</span><span class="p">):</span>
    <span class="n">axes</span><span class="p">[</span><span class="mi">0</span><span class="p">].</span><span class="n">plot</span><span class="p">(</span>
        <span class="n">prism_spectra</span><span class="p">[</span><span class="s">'wave'</span><span class="p">],</span>
        <span class="n">flux_norm</span><span class="p">[:,</span> <span class="n">sub_idx</span><span class="p">[</span><span class="n">j</span><span class="p">]],</span>
        <span class="n">alpha</span><span class="o">=</span><span class="mf">0.1</span>
    <span class="p">)</span>
    
    <span class="n">axes</span><span class="p">[</span><span class="mi">1</span><span class="p">].</span><span class="n">plot</span><span class="p">(</span>
        <span class="n">prism_spectra</span><span class="p">[</span><span class="s">'wave'</span><span class="p">]</span> <span class="o">/</span> <span class="p">(</span><span class="mi">1</span> <span class="o">+</span> <span class="n">z</span><span class="p">),</span>
        <span class="n">flux_norm</span><span class="p">[:,</span> <span class="n">sub_idx</span><span class="p">[</span><span class="n">j</span><span class="p">]],</span>
        <span class="n">alpha</span><span class="o">=</span><span class="mf">0.1</span>
    <span class="p">)</span>

<span class="n">axes</span><span class="p">[</span><span class="mi">0</span><span class="p">].</span><span class="n">set_ylim</span><span class="p">(</span><span class="o">-</span><span class="mi">1</span><span class="p">,</span> <span class="mi">10</span><span class="p">)</span>
</code></pre></div></div>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>Normalization column: 'rest_416_flux' = Spectrum flux in synthetic_i





(-1.0, 10.0)
</code></pre></div></div>

<p><img src="/dja/assets/post_files/2025-05-01-nirspec-merged-table-v4_files/nirspec-merged-table-v4_43_2.png" alt="png" /></p>

<h1 id="nearest-neighbor-spectra">“Nearest neighbor” spectra</h1>

<p>Simple “nearest neighbors” of the observed-frame normalized spectra extracted from a <a href="https://docs.scipy.org/doc/scipy/reference/generated/scipy.spatial.KDTree.html">KDTree</a>.</p>

<div class="language-python highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="n">fix_flux_norm</span> <span class="o">=</span> <span class="n">flux_norm</span><span class="o">*</span><span class="mf">1.</span>
<span class="n">fix_flux_norm</span><span class="p">[</span><span class="o">~</span><span class="n">np</span><span class="p">.</span><span class="n">isfinite</span><span class="p">(</span><span class="n">flux_norm</span><span class="p">)]</span> <span class="o">=</span> <span class="mi">0</span>

<span class="n">tr</span> <span class="o">=</span> <span class="n">cKDTree</span><span class="p">(</span><span class="n">fix_flux_norm</span><span class="p">[:,</span> <span class="n">valid_spec</span><span class="p">].</span><span class="n">T</span><span class="p">)</span>

<span class="n">N_nn</span> <span class="o">=</span> <span class="mi">32</span>

<span class="n">row</span> <span class="o">=</span> <span class="n">tab</span><span class="p">[</span><span class="n">tab</span><span class="p">[</span><span class="s">'file'</span><span class="p">]</span> <span class="o">==</span> <span class="n">spec_file</span><span class="p">][</span><span class="mi">0</span><span class="p">]</span>

<span class="c1"># Features matrix is full normalized observed-frame spectra
</span><span class="n">Xfeatures</span> <span class="o">=</span> <span class="n">fix_flux_norm</span>

<span class="n">tr_ds</span><span class="p">,</span> <span class="n">tr_idx</span> <span class="o">=</span> <span class="n">tr</span><span class="p">.</span><span class="n">query</span><span class="p">(</span><span class="n">Xfeatures</span><span class="p">[:,</span> <span class="n">row</span><span class="p">[</span><span class="s">'prism_idx'</span><span class="p">]],</span> <span class="n">k</span><span class="o">=</span><span class="n">N_nn</span><span class="p">)</span>

<span class="n">display_columns</span> <span class="o">=</span> <span class="p">[</span>
    <span class="s">'root'</span><span class="p">,</span><span class="s">'file'</span><span class="p">,</span><span class="s">'zrf'</span><span class="p">,</span><span class="s">'Mass'</span><span class="p">,</span><span class="s">'ha_eqw_with_limits'</span><span class="p">,</span><span class="s">'Thumb'</span><span class="p">,</span><span class="s">'Slit_Thumb'</span><span class="p">,</span><span class="s">'Spectrum_fnu'</span><span class="p">,</span> <span class="s">'Spectrum_flam'</span>
<span class="p">]</span>

<span class="n">df</span> <span class="o">=</span> <span class="n">tab</span><span class="p">[</span><span class="n">display_columns</span><span class="p">][</span><span class="n">is_prism</span><span class="p">][</span><span class="n">valid_spec</span><span class="p">][</span><span class="n">tr_idx</span><span class="p">][:</span><span class="mi">16</span><span class="p">].</span><span class="n">to_pandas</span><span class="p">()</span>

<span class="n">display</span><span class="p">(</span><span class="n">Markdown</span><span class="p">(</span><span class="n">df</span><span class="p">.</span><span class="n">to_markdown</span><span class="p">()))</span>
</code></pre></div></div>

<table>
  <thead>
    <tr>
      <th style="text-align: right"> </th>
      <th style="text-align: left">root</th>
      <th style="text-align: left">file</th>
      <th style="text-align: right">zrf</th>
      <th style="text-align: right">Mass</th>
      <th style="text-align: right">ha_eqw_with_limits</th>
      <th style="text-align: left">Thumb</th>
      <th style="text-align: left">Slit_Thumb</th>
      <th style="text-align: left">Spectrum_fnu</th>
      <th style="text-align: left">Spectrum_flam</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td style="text-align: right">0</td>
      <td style="text-align: left">rubies-egs61-v4</td>
      <td style="text-align: left">rubies-egs61-v4_prism-clear_4233_75646.spec.fits</td>
      <td style="text-align: right">4.90238</td>
      <td style="text-align: right">10.874</td>
      <td style="text-align: right">24.3336</td>
      <td style="text-align: left"><img src="https://grizli-cutout.herokuapp.com/thumb?size=1.5&amp;scl=2.0&amp;asinh=True&amp;filters=f115w-clear%2Cf277w-clear%2Cf444w-clear&amp;rgb_scl=1.5%2C0.74%2C1.3&amp;pl=2&amp;coord=214.91554591%2C52.94901831" height="200px" /></td>
      <td style="text-align: left"><img src="https://grizli-cutout.herokuapp.com/thumb?size=1.5&amp;scl=4.0&amp;invert=True&amp;filters=f444w-clear&amp;rgb_scl=1.5%2C0.74%2C1.3&amp;pl=2&amp;coord=214.91554591%2C52.94901831&amp;nirspec=True&amp;dpi_scale=6&amp;nrs_lw=0.5&amp;nrs_alpha=0.8&amp;metafile=jw04233006001" height="200px" /></td>
      <td style="text-align: left"><img src="https://s3.amazonaws.com/msaexp-nirspec/extractions/rubies-egs61-v4/rubies-egs61-v4_prism-clear_4233_75646.fnu.png" height="200px" /></td>
      <td style="text-align: left"><img src="https://s3.amazonaws.com/msaexp-nirspec/extractions/rubies-egs61-v4/rubies-egs61-v4_prism-clear_4233_75646.flam.png" height="200px" /></td>
    </tr>
    <tr>
      <td style="text-align: right">1</td>
      <td style="text-align: left">gds-barrufet-s67-v4</td>
      <td style="text-align: left">gds-barrufet-s67-v4_prism-clear_2198_8777.spec.fits</td>
      <td style="text-align: right">4.65301</td>
      <td style="text-align: right">10.6769</td>
      <td style="text-align: right">8.26113</td>
      <td style="text-align: left"><img src="https://grizli-cutout.herokuapp.com/thumb?size=1.5&amp;scl=2.0&amp;asinh=True&amp;filters=f115w-clear%2Cf277w-clear%2Cf444w-clear&amp;rgb_scl=1.5%2C0.74%2C1.3&amp;pl=2&amp;coord=53.10820397%2C-27.82518775" height="200px" /></td>
      <td style="text-align: left"><img src="https://grizli-cutout.herokuapp.com/thumb?size=1.5&amp;scl=4.0&amp;invert=True&amp;filters=f444w-clear&amp;rgb_scl=1.5%2C0.74%2C1.3&amp;pl=2&amp;coord=53.10820397%2C-27.82518775&amp;nirspec=True&amp;dpi_scale=6&amp;nrs_lw=0.5&amp;nrs_alpha=0.8&amp;metafile=jw02198003001" height="200px" /></td>
      <td style="text-align: left"><img src="https://s3.amazonaws.com/msaexp-nirspec/extractions/gds-barrufet-s67-v4/gds-barrufet-s67-v4_prism-clear_2198_8777.fnu.png" height="200px" /></td>
      <td style="text-align: left"><img src="https://s3.amazonaws.com/msaexp-nirspec/extractions/gds-barrufet-s67-v4/gds-barrufet-s67-v4_prism-clear_2198_8777.flam.png" height="200px" /></td>
    </tr>
    <tr>
      <td style="text-align: right">2</td>
      <td style="text-align: left">gds-barrufet-s67-v4</td>
      <td style="text-align: left">gds-barrufet-s67-v4_prism-clear_2198_8290.spec.fits</td>
      <td style="text-align: right">4.34034</td>
      <td style="text-align: right">10.5556</td>
      <td style="text-align: right">4.0581</td>
      <td style="text-align: left"><img src="https://grizli-cutout.herokuapp.com/thumb?size=1.5&amp;scl=2.0&amp;asinh=True&amp;filters=f115w-clear%2Cf277w-clear%2Cf444w-clear&amp;rgb_scl=1.5%2C0.74%2C1.3&amp;pl=2&amp;coord=53.08187859%2C-27.82879899" height="200px" /></td>
      <td style="text-align: left"><img src="https://grizli-cutout.herokuapp.com/thumb?size=1.5&amp;scl=4.0&amp;invert=True&amp;filters=f444w-clear&amp;rgb_scl=1.5%2C0.74%2C1.3&amp;pl=2&amp;coord=53.08187859%2C-27.82879899&amp;nirspec=True&amp;dpi_scale=6&amp;nrs_lw=0.5&amp;nrs_alpha=0.8&amp;metafile=jw02198003001" height="200px" /></td>
      <td style="text-align: left"><img src="https://s3.amazonaws.com/msaexp-nirspec/extractions/gds-barrufet-s67-v4/gds-barrufet-s67-v4_prism-clear_2198_8290.fnu.png" height="200px" /></td>
      <td style="text-align: left"><img src="https://s3.amazonaws.com/msaexp-nirspec/extractions/gds-barrufet-s67-v4/gds-barrufet-s67-v4_prism-clear_2198_8290.flam.png" height="200px" /></td>
    </tr>
    <tr>
      <td style="text-align: right">3</td>
      <td style="text-align: left">mom-uds02-v4</td>
      <td style="text-align: left">mom-uds02-v4_prism-clear_5224_144670.spec.fits</td>
      <td style="text-align: right">3.97196</td>
      <td style="text-align: right">10.6169</td>
      <td style="text-align: right">14.667</td>
      <td style="text-align: left"><img src="https://grizli-cutout.herokuapp.com/thumb?size=1.5&amp;scl=2.0&amp;asinh=True&amp;filters=f115w-clear%2Cf277w-clear%2Cf444w-clear&amp;rgb_scl=1.5%2C0.74%2C1.3&amp;pl=2&amp;coord=34.24259288%2C-5.14312088" height="200px" /></td>
      <td style="text-align: left"><img src="https://grizli-cutout.herokuapp.com/thumb?size=1.5&amp;scl=4.0&amp;invert=True&amp;filters=f444w-clear&amp;rgb_scl=1.5%2C0.74%2C1.3&amp;pl=2&amp;coord=34.24259288%2C-5.14312088&amp;nirspec=True&amp;dpi_scale=6&amp;nrs_lw=0.5&amp;nrs_alpha=0.8&amp;metafile=jw05224002001" height="200px" /></td>
      <td style="text-align: left"><img src="https://s3.amazonaws.com/msaexp-nirspec/extractions/mom-uds02-v4/mom-uds02-v4_prism-clear_5224_144670.fnu.png" height="200px" /></td>
      <td style="text-align: left"><img src="https://s3.amazonaws.com/msaexp-nirspec/extractions/mom-uds02-v4/mom-uds02-v4_prism-clear_5224_144670.flam.png" height="200px" /></td>
    </tr>
    <tr>
      <td style="text-align: right">4</td>
      <td style="text-align: left">jades-gdn09-v4</td>
      <td style="text-align: left">jades-gdn09-v4_prism-clear_1181_72127.spec.fits</td>
      <td style="text-align: right">4.13556</td>
      <td style="text-align: right">10.5771</td>
      <td style="text-align: right">75.7974</td>
      <td style="text-align: left"><img src="https://grizli-cutout.herokuapp.com/thumb?size=1.5&amp;scl=2.0&amp;asinh=True&amp;filters=f115w-clear%2Cf277w-clear%2Cf444w-clear&amp;rgb_scl=1.5%2C0.74%2C1.3&amp;pl=2&amp;coord=189.2657184%2C62.1683933" height="200px" /></td>
      <td style="text-align: left"><img src="https://grizli-cutout.herokuapp.com/thumb?size=1.5&amp;scl=4.0&amp;invert=True&amp;filters=f444w-clear&amp;rgb_scl=1.5%2C0.74%2C1.3&amp;pl=2&amp;coord=189.2657184%2C62.1683933&amp;nirspec=True&amp;dpi_scale=6&amp;nrs_lw=0.5&amp;nrs_alpha=0.8&amp;metafile=jw01181009001" height="200px" /></td>
      <td style="text-align: left"><img src="https://s3.amazonaws.com/msaexp-nirspec/extractions/jades-gdn09-v4/jades-gdn09-v4_prism-clear_1181_72127.fnu.png" height="200px" /></td>
      <td style="text-align: left"><img src="https://s3.amazonaws.com/msaexp-nirspec/extractions/jades-gdn09-v4/jades-gdn09-v4_prism-clear_1181_72127.flam.png" height="200px" /></td>
    </tr>
    <tr>
      <td style="text-align: right">5</td>
      <td style="text-align: left">glazebrook-cos-obs1-v4</td>
      <td style="text-align: left">glazebrook-cos-obs1-v4_prism-clear_2565_10559.spec.fits</td>
      <td style="text-align: right">4.28971</td>
      <td style="text-align: right">10.5518</td>
      <td style="text-align: right">3.80496</td>
      <td style="text-align: left"><img src="https://grizli-cutout.herokuapp.com/thumb?size=1.5&amp;scl=2.0&amp;asinh=True&amp;filters=f115w-clear%2Cf277w-clear%2Cf444w-clear&amp;rgb_scl=1.5%2C0.74%2C1.3&amp;pl=2&amp;coord=150.07143593%2C2.29117893" height="200px" /></td>
      <td style="text-align: left"><img src="https://grizli-cutout.herokuapp.com/thumb?size=1.5&amp;scl=4.0&amp;invert=True&amp;filters=f444w-clear&amp;rgb_scl=1.5%2C0.74%2C1.3&amp;pl=2&amp;coord=150.07143593%2C2.29117893&amp;nirspec=True&amp;dpi_scale=6&amp;nrs_lw=0.5&amp;nrs_alpha=0.8&amp;metafile=jw02565301001" height="200px" /></td>
      <td style="text-align: left"><img src="https://s3.amazonaws.com/msaexp-nirspec/extractions/glazebrook-cos-obs1-v4/glazebrook-cos-obs1-v4_prism-clear_2565_10559.fnu.png" height="200px" /></td>
      <td style="text-align: left"><img src="https://s3.amazonaws.com/msaexp-nirspec/extractions/glazebrook-cos-obs1-v4/glazebrook-cos-obs1-v4_prism-clear_2565_10559.flam.png" height="200px" /></td>
    </tr>
    <tr>
      <td style="text-align: right">6</td>
      <td style="text-align: left">jades-gds-wide-v4</td>
      <td style="text-align: left">jades-gds-wide-v4_prism-clear_1180_12619.spec.fits</td>
      <td style="text-align: right">3.60465</td>
      <td style="text-align: right">10.6324</td>
      <td style="text-align: right">27.8163</td>
      <td style="text-align: left"><img src="https://grizli-cutout.herokuapp.com/thumb?size=1.5&amp;scl=2.0&amp;asinh=True&amp;filters=f115w-clear%2Cf277w-clear%2Cf444w-clear&amp;rgb_scl=1.5%2C0.74%2C1.3&amp;pl=2&amp;coord=53.1969096%2C-27.7605277" height="200px" /></td>
      <td style="text-align: left"><img src="https://grizli-cutout.herokuapp.com/thumb?size=1.5&amp;scl=4.0&amp;invert=True&amp;filters=f444w-clear&amp;rgb_scl=1.5%2C0.74%2C1.3&amp;pl=2&amp;coord=53.1969096%2C-27.7605277&amp;nirspec=True&amp;dpi_scale=6&amp;nrs_lw=0.5&amp;nrs_alpha=0.8&amp;metafile=jw01180029001" height="200px" /></td>
      <td style="text-align: left"><img src="https://s3.amazonaws.com/msaexp-nirspec/extractions/jades-gds-wide-v4/jades-gds-wide-v4_prism-clear_1180_12619.fnu.png" height="200px" /></td>
      <td style="text-align: left"><img src="https://s3.amazonaws.com/msaexp-nirspec/extractions/jades-gds-wide-v4/jades-gds-wide-v4_prism-clear_1180_12619.flam.png" height="200px" /></td>
    </tr>
    <tr>
      <td style="text-align: right">7</td>
      <td style="text-align: left">rubies-uds2-v4</td>
      <td style="text-align: left">rubies-uds2-v4_prism-clear_b28.spec.fits</td>
      <td style="text-align: right">4.39429</td>
      <td style="text-align: right">10.8802</td>
      <td style="text-align: right">5.61715</td>
      <td style="text-align: left"><img src="https://grizli-cutout.herokuapp.com/thumb?size=1.5&amp;scl=2.0&amp;asinh=True&amp;filters=f115w-clear%2Cf277w-clear%2Cf444w-clear&amp;rgb_scl=1.5%2C0.74%2C1.3&amp;pl=2&amp;coord=34.2805153%2C-5.21721404" height="200px" /></td>
      <td style="text-align: left"><img src="https://grizli-cutout.herokuapp.com/thumb?size=1.5&amp;scl=4.0&amp;invert=True&amp;filters=f444w-clear&amp;rgb_scl=1.5%2C0.74%2C1.3&amp;pl=2&amp;coord=34.2805153%2C-5.21721404&amp;nirspec=True&amp;dpi_scale=6&amp;nrs_lw=0.5&amp;nrs_alpha=0.8&amp;metafile=jw04233001002" height="200px" /></td>
      <td style="text-align: left"><img src="https://s3.amazonaws.com/msaexp-nirspec/extractions/rubies-uds2-v4/rubies-uds2-v4_prism-clear_b28.fnu.png" height="200px" /></td>
      <td style="text-align: left"><img src="https://s3.amazonaws.com/msaexp-nirspec/extractions/rubies-uds2-v4/rubies-uds2-v4_prism-clear_b28.flam.png" height="200px" /></td>
    </tr>
    <tr>
      <td style="text-align: right">8</td>
      <td style="text-align: left">rubies-uds2-v4</td>
      <td style="text-align: left">rubies-uds2-v4_prism-clear_4233_b28.spec.fits</td>
      <td style="text-align: right">4.39461</td>
      <td style="text-align: right">10.8801</td>
      <td style="text-align: right">5.59215</td>
      <td style="text-align: left"><img src="https://grizli-cutout.herokuapp.com/thumb?size=1.5&amp;scl=2.0&amp;asinh=True&amp;filters=f115w-clear%2Cf277w-clear%2Cf444w-clear&amp;rgb_scl=1.5%2C0.74%2C1.3&amp;pl=2&amp;coord=34.2805153%2C-5.21721404" height="200px" /></td>
      <td style="text-align: left"><img src="https://grizli-cutout.herokuapp.com/thumb?size=1.5&amp;scl=4.0&amp;invert=True&amp;filters=f444w-clear&amp;rgb_scl=1.5%2C0.74%2C1.3&amp;pl=2&amp;coord=34.2805153%2C-5.21721404&amp;nirspec=True&amp;dpi_scale=6&amp;nrs_lw=0.5&amp;nrs_alpha=0.8&amp;metafile=jw04233001002" height="200px" /></td>
      <td style="text-align: left"><img src="https://s3.amazonaws.com/msaexp-nirspec/extractions/rubies-uds2-v4/rubies-uds2-v4_prism-clear_4233_b28.fnu.png" height="200px" /></td>
      <td style="text-align: left"><img src="https://s3.amazonaws.com/msaexp-nirspec/extractions/rubies-uds2-v4/rubies-uds2-v4_prism-clear_4233_b28.flam.png" height="200px" /></td>
    </tr>
    <tr>
      <td style="text-align: right">9</td>
      <td style="text-align: left">glazebrook-cos-obs3-v4</td>
      <td style="text-align: left">glazebrook-cos-obs3-v4_prism-clear_2565_20115.spec.fits</td>
      <td style="text-align: right">3.72605</td>
      <td style="text-align: right">11.2231</td>
      <td style="text-align: right">2.61723</td>
      <td style="text-align: left"><img src="https://grizli-cutout.herokuapp.com/thumb?size=1.5&amp;scl=2.0&amp;asinh=True&amp;filters=f115w-clear%2Cf277w-clear%2Cf444w-clear&amp;rgb_scl=1.5%2C0.74%2C1.3&amp;pl=2&amp;coord=150.06146711%2C2.37868632" height="200px" /></td>
      <td style="text-align: left"><img src="https://grizli-cutout.herokuapp.com/thumb?size=1.5&amp;scl=4.0&amp;invert=True&amp;filters=f444w-clear&amp;rgb_scl=1.5%2C0.74%2C1.3&amp;pl=2&amp;coord=150.06146711%2C2.37868632&amp;nirspec=True&amp;dpi_scale=6&amp;nrs_lw=0.5&amp;nrs_alpha=0.8&amp;metafile=jw02565007001" height="200px" /></td>
      <td style="text-align: left"><img src="https://s3.amazonaws.com/msaexp-nirspec/extractions/glazebrook-cos-obs3-v4/glazebrook-cos-obs3-v4_prism-clear_2565_20115.fnu.png" height="200px" /></td>
      <td style="text-align: left"><img src="https://s3.amazonaws.com/msaexp-nirspec/extractions/glazebrook-cos-obs3-v4/glazebrook-cos-obs3-v4_prism-clear_2565_20115.flam.png" height="200px" /></td>
    </tr>
    <tr>
      <td style="text-align: right">10</td>
      <td style="text-align: left">gto-wide-egs1-v4</td>
      <td style="text-align: left">gto-wide-egs1-v4_prism-clear_1213_4358.spec.fits</td>
      <td style="text-align: right">4.29302</td>
      <td style="text-align: right">10.6918</td>
      <td style="text-align: right">21.9825</td>
      <td style="text-align: left"><img src="https://grizli-cutout.herokuapp.com/thumb?size=1.5&amp;scl=2.0&amp;asinh=True&amp;filters=f115w-clear%2Cf277w-clear%2Cf444w-clear&amp;rgb_scl=1.5%2C0.74%2C1.3&amp;pl=2&amp;coord=215.03907944%2C53.0027735" height="200px" /></td>
      <td style="text-align: left"><img src="https://grizli-cutout.herokuapp.com/thumb?size=1.5&amp;scl=4.0&amp;invert=True&amp;filters=f444w-clear&amp;rgb_scl=1.5%2C0.74%2C1.3&amp;pl=2&amp;coord=215.03907944%2C53.0027735&amp;nirspec=True&amp;dpi_scale=6&amp;nrs_lw=0.5&amp;nrs_alpha=0.8&amp;metafile=jw01213002001" height="200px" /></td>
      <td style="text-align: left"><img src="https://s3.amazonaws.com/msaexp-nirspec/extractions/gto-wide-egs1-v4/gto-wide-egs1-v4_prism-clear_1213_4358.fnu.png" height="200px" /></td>
      <td style="text-align: left"><img src="https://s3.amazonaws.com/msaexp-nirspec/extractions/gto-wide-egs1-v4/gto-wide-egs1-v4_prism-clear_1213_4358.flam.png" height="200px" /></td>
    </tr>
    <tr>
      <td style="text-align: right">11</td>
      <td style="text-align: left">jades-gdn09-v4</td>
      <td style="text-align: left">jades-gdn09-v4_prism-clear_1181_80660.spec.fits</td>
      <td style="text-align: right">4.40673</td>
      <td style="text-align: right">10.2177</td>
      <td style="text-align: right">25.751</td>
      <td style="text-align: left"><img src="https://grizli-cutout.herokuapp.com/thumb?size=1.5&amp;scl=2.0&amp;asinh=True&amp;filters=f115w-clear%2Cf277w-clear%2Cf444w-clear&amp;rgb_scl=1.5%2C0.74%2C1.3&amp;pl=2&amp;coord=189.2754487%2C62.2141353" height="200px" /></td>
      <td style="text-align: left"><img src="https://grizli-cutout.herokuapp.com/thumb?size=1.5&amp;scl=4.0&amp;invert=True&amp;filters=f444w-clear&amp;rgb_scl=1.5%2C0.74%2C1.3&amp;pl=2&amp;coord=189.2754487%2C62.2141353&amp;nirspec=True&amp;dpi_scale=6&amp;nrs_lw=0.5&amp;nrs_alpha=0.8&amp;metafile=jw01181009001" height="200px" /></td>
      <td style="text-align: left"><img src="https://s3.amazonaws.com/msaexp-nirspec/extractions/jades-gdn09-v4/jades-gdn09-v4_prism-clear_1181_80660.fnu.png" height="200px" /></td>
      <td style="text-align: left"><img src="https://s3.amazonaws.com/msaexp-nirspec/extractions/jades-gdn09-v4/jades-gdn09-v4_prism-clear_1181_80660.flam.png" height="200px" /></td>
    </tr>
    <tr>
      <td style="text-align: right">12</td>
      <td style="text-align: left">glazebrook-v4</td>
      <td style="text-align: left">glazebrook-v4_prism-clear_2565_10459.spec.fits</td>
      <td style="text-align: right">3.97084</td>
      <td style="text-align: right">10.6829</td>
      <td style="text-align: right">4.65304</td>
      <td style="text-align: left"><img src="https://grizli-cutout.herokuapp.com/thumb?size=1.5&amp;scl=2.0&amp;asinh=True&amp;filters=f115w-clear%2Cf277w-clear%2Cf444w-clear&amp;rgb_scl=1.5%2C0.74%2C1.3&amp;pl=2&amp;coord=34.34034528%2C-5.24130895" height="200px" /></td>
      <td style="text-align: left"><img src="https://grizli-cutout.herokuapp.com/thumb?size=1.5&amp;scl=4.0&amp;invert=True&amp;filters=f444w-clear&amp;rgb_scl=1.5%2C0.74%2C1.3&amp;pl=2&amp;coord=34.34034528%2C-5.24130895&amp;nirspec=True&amp;dpi_scale=6&amp;nrs_lw=0.5&amp;nrs_alpha=0.8&amp;metafile=jw02565100001" height="200px" /></td>
      <td style="text-align: left"><img src="https://s3.amazonaws.com/msaexp-nirspec/extractions/glazebrook-v4/glazebrook-v4_prism-clear_2565_10459.fnu.png" height="200px" /></td>
      <td style="text-align: left"><img src="https://s3.amazonaws.com/msaexp-nirspec/extractions/glazebrook-v4/glazebrook-v4_prism-clear_2565_10459.flam.png" height="200px" /></td>
    </tr>
    <tr>
      <td style="text-align: right">13</td>
      <td style="text-align: left">jades-gdn198-v4</td>
      <td style="text-align: left">jades-gdn198-v4_prism-clear_1181_76320.spec.fits</td>
      <td style="text-align: right">3.24558</td>
      <td style="text-align: right">10.306</td>
      <td style="text-align: right">5.3213</td>
      <td style="text-align: left"><img src="https://grizli-cutout.herokuapp.com/thumb?size=1.5&amp;scl=2.0&amp;asinh=True&amp;filters=f115w-clear%2Cf277w-clear%2Cf444w-clear&amp;rgb_scl=1.5%2C0.74%2C1.3&amp;pl=2&amp;coord=189.2214567%2C62.1924022" height="200px" /></td>
      <td style="text-align: left"><img src="https://grizli-cutout.herokuapp.com/thumb?size=1.5&amp;scl=4.0&amp;invert=True&amp;filters=f444w-clear&amp;rgb_scl=1.5%2C0.74%2C1.3&amp;pl=2&amp;coord=189.2214567%2C62.1924022&amp;nirspec=True&amp;dpi_scale=6&amp;nrs_lw=0.5&amp;nrs_alpha=0.8&amp;metafile=jw01181198001" height="200px" /></td>
      <td style="text-align: left"><img src="https://s3.amazonaws.com/msaexp-nirspec/extractions/jades-gdn198-v4/jades-gdn198-v4_prism-clear_1181_76320.fnu.png" height="200px" /></td>
      <td style="text-align: left"><img src="https://s3.amazonaws.com/msaexp-nirspec/extractions/jades-gdn198-v4/jades-gdn198-v4_prism-clear_1181_76320.flam.png" height="200px" /></td>
    </tr>
    <tr>
      <td style="text-align: right">14</td>
      <td style="text-align: left">macs1149-v4</td>
      <td style="text-align: left">macs1149-v4_prism-clear_1208_5103925.spec.fits</td>
      <td style="text-align: right">3.69631</td>
      <td style="text-align: right">10.8235</td>
      <td style="text-align: right">6.45299</td>
      <td style="text-align: left"><img src="https://grizli-cutout.herokuapp.com/thumb?size=1.5&amp;scl=2.0&amp;asinh=True&amp;filters=f115w-clear%2Cf277w-clear%2Cf444w-clear&amp;rgb_scl=1.5%2C0.74%2C1.3&amp;pl=2&amp;coord=177.38919232%2C22.36724586" height="200px" /></td>
      <td style="text-align: left"><img src="https://grizli-cutout.herokuapp.com/thumb?size=1.5&amp;scl=4.0&amp;invert=True&amp;filters=f444w-clear&amp;rgb_scl=1.5%2C0.74%2C1.3&amp;pl=2&amp;coord=177.38919232%2C22.36724586&amp;nirspec=True&amp;dpi_scale=6&amp;nrs_lw=0.5&amp;nrs_alpha=0.8&amp;metafile=jw01208049001" height="200px" /></td>
      <td style="text-align: left"><img src="https://s3.amazonaws.com/grizli-canucs/nirspec/macs1149-v4/macs1149-v4_prism-clear_1208_5103925.fnu.png" height="200px" /></td>
      <td style="text-align: left"><img src="https://s3.amazonaws.com/grizli-canucs/nirspec/macs1149-v4/macs1149-v4_prism-clear_1208_5103925.flam.png" height="200px" /></td>
    </tr>
    <tr>
      <td style="text-align: right">15</td>
      <td style="text-align: left">jades-gdn-v4</td>
      <td style="text-align: left">jades-gdn-v4_prism-clear_1181_76320.spec.fits</td>
      <td style="text-align: right">3.23434</td>
      <td style="text-align: right">10.3316</td>
      <td style="text-align: right">4.69578</td>
      <td style="text-align: left"><img src="https://grizli-cutout.herokuapp.com/thumb?size=1.5&amp;scl=2.0&amp;asinh=True&amp;filters=f115w-clear%2Cf277w-clear%2Cf444w-clear&amp;rgb_scl=1.5%2C0.74%2C1.3&amp;pl=2&amp;coord=189.2214567%2C62.1924022" height="200px" /></td>
      <td style="text-align: left"><img src="https://grizli-cutout.herokuapp.com/thumb?size=1.5&amp;scl=4.0&amp;invert=True&amp;filters=f444w-clear&amp;rgb_scl=1.5%2C0.74%2C1.3&amp;pl=2&amp;coord=189.2214567%2C62.1924022&amp;nirspec=True&amp;dpi_scale=6&amp;nrs_lw=0.5&amp;nrs_alpha=0.8&amp;metafile=jw01181098001" height="200px" /></td>
      <td style="text-align: left"><img src="https://s3.amazonaws.com/msaexp-nirspec/extractions/jades-gdn-v4/jades-gdn-v4_prism-clear_1181_76320.fnu.png" height="200px" /></td>
      <td style="text-align: left"><img src="https://s3.amazonaws.com/msaexp-nirspec/extractions/jades-gdn-v4/jades-gdn-v4_prism-clear_1181_76320.flam.png" height="200px" /></td>
    </tr>
  </tbody>
</table>

<h2 id="compute-nn-in-rest-frame">Compute NN in rest-frame</h2>

<p>The example above computed “raw” nearest neighbors from the full observed-frame spectra.  To compute NN in the rest-frame, interpolate spectra to a fixed rest-frame wavelength grid.</p>

<div class="language-python highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kn">from</span> <span class="nn">tqdm</span> <span class="kn">import</span> <span class="n">tqdm</span>

<span class="c1"># rest-frame interpolated
</span><span class="n">wrest</span> <span class="o">=</span> <span class="n">utils</span><span class="p">.</span><span class="n">log_zgrid</span><span class="p">([</span><span class="mf">0.08</span><span class="p">,</span> <span class="mf">1.4</span><span class="p">],</span> <span class="mf">1.</span><span class="o">/</span><span class="mi">1200</span><span class="o">/</span><span class="n">np</span><span class="p">.</span><span class="n">log</span><span class="p">(</span><span class="mi">10</span><span class="p">))</span>
<span class="n">wrest</span> <span class="o">=</span> <span class="n">np</span><span class="p">.</span><span class="n">unique</span><span class="p">([</span><span class="n">prism_spectra</span><span class="p">[</span><span class="s">'wave'</span><span class="p">]</span> <span class="o">/</span> <span class="p">(</span><span class="mi">1</span><span class="o">+</span><span class="n">z</span><span class="p">)</span> <span class="k">for</span> <span class="n">z</span> <span class="ow">in</span> <span class="n">utils</span><span class="p">.</span><span class="n">log_zgrid</span><span class="p">([</span><span class="mf">0.5</span><span class="p">,</span> <span class="mi">7</span><span class="p">],</span> <span class="mf">0.3</span><span class="p">)])</span>
<span class="k">print</span><span class="p">(</span><span class="n">wrest</span><span class="p">.</span><span class="n">shape</span><span class="p">)</span>

<span class="n">zero</span> <span class="o">=</span> <span class="n">wrest</span><span class="o">*</span><span class="mf">0.</span>

<span class="n">rest_flux_norm</span> <span class="o">=</span> <span class="p">[]</span>
<span class="k">for</span> <span class="n">i</span><span class="p">,</span> <span class="n">z</span> <span class="ow">in</span> <span class="n">tqdm</span><span class="p">(</span><span class="nb">enumerate</span><span class="p">(</span><span class="n">tab</span><span class="p">[</span><span class="s">'zrf'</span><span class="p">][</span><span class="n">is_prism</span><span class="p">])):</span>
    <span class="k">if</span> <span class="n">z</span> <span class="o">&lt;</span> <span class="mi">0</span><span class="p">:</span>
        <span class="n">rest_flux_norm</span><span class="p">.</span><span class="n">append</span><span class="p">(</span><span class="n">zero</span><span class="p">)</span>
    <span class="k">else</span><span class="p">:</span>
        <span class="n">rest_flux_norm</span><span class="p">.</span><span class="n">append</span><span class="p">(</span><span class="n">np</span><span class="p">.</span><span class="n">interp</span><span class="p">(</span><span class="n">wrest</span><span class="p">,</span> <span class="n">prism_spectra</span><span class="p">[</span><span class="s">'wave'</span><span class="p">]</span> <span class="o">/</span> <span class="p">(</span><span class="mi">1</span> <span class="o">+</span> <span class="n">z</span><span class="p">),</span> <span class="n">flux_norm</span><span class="p">[:,</span><span class="n">i</span><span class="p">],</span> <span class="n">left</span><span class="o">=</span><span class="mi">0</span><span class="p">,</span> <span class="n">right</span><span class="o">=</span><span class="mi">0</span><span class="p">))</span>

<span class="n">rest_flux_norm</span> <span class="o">=</span> <span class="n">np</span><span class="p">.</span><span class="n">array</span><span class="p">(</span><span class="n">rest_flux_norm</span><span class="p">).</span><span class="n">T</span>
<span class="n">rest_flux_norm</span><span class="p">[</span><span class="o">~</span><span class="n">np</span><span class="p">.</span><span class="n">isfinite</span><span class="p">(</span><span class="n">rest_flux_norm</span><span class="p">)]</span> <span class="o">=</span> <span class="mi">0</span>
</code></pre></div></div>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>(2838,)


34949it [00:02, 14248.53it/s]
</code></pre></div></div>

<div class="language-python highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="n">fig</span><span class="p">,</span> <span class="n">ax</span> <span class="o">=</span> <span class="n">plt</span><span class="p">.</span><span class="n">subplots</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span><span class="mi">1</span><span class="p">,</span><span class="n">figsize</span><span class="o">=</span><span class="p">(</span><span class="mi">8</span><span class="p">,</span><span class="mi">5</span><span class="p">))</span>

<span class="n">ax</span><span class="p">.</span><span class="n">plot</span><span class="p">(</span>
    <span class="n">prism_spectra</span><span class="p">[</span><span class="s">'wave'</span><span class="p">]</span> <span class="o">/</span> <span class="p">(</span><span class="mi">1</span> <span class="o">+</span> <span class="n">tab</span><span class="p">[</span><span class="s">'zrf'</span><span class="p">][</span><span class="n">row_idx</span><span class="p">]),</span> <span class="n">flux_norm</span><span class="p">[:,</span> <span class="n">row</span><span class="p">[</span><span class="s">'prism_idx'</span><span class="p">]],</span>
    <span class="n">alpha</span><span class="o">=</span><span class="mf">0.5</span><span class="p">,</span> <span class="n">label</span><span class="o">=</span><span class="s">'From combined table'</span><span class="p">,</span>
    <span class="n">color</span><span class="o">=</span><span class="s">'0.5'</span><span class="p">,</span>
<span class="p">)</span>

<span class="n">valid_rest</span> <span class="o">=</span> <span class="n">rest_flux_norm</span><span class="p">[:,</span> <span class="n">row</span><span class="p">[</span><span class="s">'prism_idx'</span><span class="p">]]</span> <span class="o">!=</span> <span class="mi">0</span>
<span class="n">ax</span><span class="p">.</span><span class="n">scatter</span><span class="p">(</span>
    <span class="n">wrest</span><span class="p">[</span><span class="n">valid_rest</span><span class="p">],</span>
    <span class="n">rest_flux_norm</span><span class="p">[:,</span> <span class="n">row</span><span class="p">[</span><span class="s">'prism_idx'</span><span class="p">]][</span><span class="n">valid_rest</span><span class="p">],</span>
    <span class="n">marker</span><span class="o">=</span><span class="s">'.'</span><span class="p">,</span>
    <span class="n">color</span><span class="o">=</span><span class="s">'purple'</span><span class="p">,</span>
    <span class="n">label</span><span class="o">=</span><span class="s">'resampled rest-frame'</span><span class="p">,</span>
    <span class="n">alpha</span><span class="o">=</span><span class="mf">0.5</span>
<span class="p">)</span>

<span class="n">ax</span><span class="p">.</span><span class="n">legend</span><span class="p">()</span>

<span class="n">fig</span><span class="p">.</span><span class="n">tight_layout</span><span class="p">(</span><span class="n">pad</span><span class="o">=</span><span class="mi">1</span><span class="p">)</span>

</code></pre></div></div>

<p><img src="/dja/assets/post_files/2025-05-01-nirspec-merged-table-v4_files/nirspec-merged-table-v4_48_0.png" alt="png" /></p>

<div class="language-python highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="c1"># Compute nearest-neighbors over limited rest-frame wavelength range
</span><span class="n">sli</span> <span class="o">=</span> <span class="n">np</span><span class="p">.</span><span class="n">where</span><span class="p">((</span><span class="n">wrest</span> <span class="o">&gt;</span> <span class="mf">0.2</span><span class="p">)</span> <span class="o">&amp;</span> <span class="p">(</span><span class="n">wrest</span> <span class="o">&lt;</span> <span class="mf">0.8</span><span class="p">))[</span><span class="mi">0</span><span class="p">]</span>

<span class="n">Xfeatures</span> <span class="o">=</span> <span class="n">rest_flux_norm</span><span class="p">[</span><span class="n">sli</span><span class="p">,:]</span>
<span class="n">tr</span> <span class="o">=</span> <span class="n">cKDTree</span><span class="p">(</span><span class="n">Xfeatures</span><span class="p">[:,</span> <span class="n">valid_spec</span><span class="p">].</span><span class="n">T</span><span class="p">)</span>

</code></pre></div></div>

<div class="language-python highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="k">if</span> <span class="bp">False</span><span class="p">:</span>
    <span class="c1"># Trimmed spectrum and include log(1+z) as a feature
</span>    <span class="n">sli</span> <span class="o">=</span> <span class="nb">slice</span><span class="p">(</span><span class="mi">32</span><span class="p">,</span> <span class="o">-</span><span class="mi">16</span><span class="p">)</span>
    
    <span class="n">fix_flux_norm</span> <span class="o">=</span> <span class="n">np</span><span class="p">.</span><span class="n">vstack</span><span class="p">([</span><span class="n">flux_norm</span><span class="p">[</span><span class="n">sli</span><span class="p">,:]</span><span class="o">**</span><span class="mi">1</span><span class="p">,</span> <span class="n">np</span><span class="p">.</span><span class="n">log</span><span class="p">(</span><span class="mi">1</span><span class="o">+</span><span class="n">tab</span><span class="p">[</span><span class="s">'zrf'</span><span class="p">][</span><span class="n">is_prism</span><span class="p">])</span> <span class="o">*</span> <span class="mf">1e-2</span><span class="p">])</span> 
    <span class="n">fix_flux_norm</span><span class="p">[</span><span class="o">~</span><span class="n">np</span><span class="p">.</span><span class="n">isfinite</span><span class="p">(</span><span class="n">fix_flux_norm</span><span class="p">)]</span> <span class="o">=</span> <span class="mi">0</span>
    
    <span class="n">Xfeatures</span> <span class="o">=</span> <span class="n">fix_flux_norm</span>
    <span class="n">tr</span> <span class="o">=</span> <span class="n">cKDTree</span><span class="p">(</span><span class="n">Xfeatures</span><span class="p">[:,</span> <span class="n">valid_spec</span><span class="p">].</span><span class="n">T</span><span class="p">)</span>

</code></pre></div></div>

<div class="language-python highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="n">row</span> <span class="o">=</span> <span class="n">tab</span><span class="p">[</span><span class="n">tab</span><span class="p">[</span><span class="s">'file'</span><span class="p">]</span> <span class="o">==</span> <span class="n">spec_file</span><span class="p">][</span><span class="mi">0</span><span class="p">]</span>

<span class="n">tr_ds</span><span class="p">,</span> <span class="n">tr_idx</span> <span class="o">=</span> <span class="n">tr</span><span class="p">.</span><span class="n">query</span><span class="p">(</span><span class="n">Xfeatures</span><span class="p">[:,</span> <span class="n">row</span><span class="p">[</span><span class="s">'prism_idx'</span><span class="p">]],</span> <span class="n">k</span><span class="o">=</span><span class="n">N_nn</span><span class="p">)</span>

<span class="n">df</span> <span class="o">=</span> <span class="n">tab</span><span class="p">[</span><span class="n">display_columns</span><span class="p">][</span><span class="n">is_prism</span><span class="p">][</span><span class="n">valid_spec</span><span class="p">][</span><span class="n">tr_idx</span><span class="p">][:</span><span class="mi">16</span><span class="p">].</span><span class="n">to_pandas</span><span class="p">()</span>

<span class="n">display</span><span class="p">(</span><span class="n">Markdown</span><span class="p">(</span><span class="n">df</span><span class="p">.</span><span class="n">to_markdown</span><span class="p">()))</span>

</code></pre></div></div>

<table>
  <thead>
    <tr>
      <th style="text-align: right"> </th>
      <th style="text-align: left">root</th>
      <th style="text-align: left">file</th>
      <th style="text-align: right">zrf</th>
      <th style="text-align: right">Mass</th>
      <th style="text-align: right">ha_eqw_with_limits</th>
      <th style="text-align: left">Thumb</th>
      <th style="text-align: left">Slit_Thumb</th>
      <th style="text-align: left">Spectrum_fnu</th>
      <th style="text-align: left">Spectrum_flam</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td style="text-align: right">0</td>
      <td style="text-align: left">rubies-egs61-v4</td>
      <td style="text-align: left">rubies-egs61-v4_prism-clear_4233_75646.spec.fits</td>
      <td style="text-align: right">4.90238</td>
      <td style="text-align: right">10.874</td>
      <td style="text-align: right">24.3336</td>
      <td style="text-align: left"><img src="https://grizli-cutout.herokuapp.com/thumb?size=1.5&amp;scl=2.0&amp;asinh=True&amp;filters=f115w-clear%2Cf277w-clear%2Cf444w-clear&amp;rgb_scl=1.5%2C0.74%2C1.3&amp;pl=2&amp;coord=214.91554591%2C52.94901831" height="200px" /></td>
      <td style="text-align: left"><img src="https://grizli-cutout.herokuapp.com/thumb?size=1.5&amp;scl=4.0&amp;invert=True&amp;filters=f444w-clear&amp;rgb_scl=1.5%2C0.74%2C1.3&amp;pl=2&amp;coord=214.91554591%2C52.94901831&amp;nirspec=True&amp;dpi_scale=6&amp;nrs_lw=0.5&amp;nrs_alpha=0.8&amp;metafile=jw04233006001" height="200px" /></td>
      <td style="text-align: left"><img src="https://s3.amazonaws.com/msaexp-nirspec/extractions/rubies-egs61-v4/rubies-egs61-v4_prism-clear_4233_75646.fnu.png" height="200px" /></td>
      <td style="text-align: left"><img src="https://s3.amazonaws.com/msaexp-nirspec/extractions/rubies-egs61-v4/rubies-egs61-v4_prism-clear_4233_75646.flam.png" height="200px" /></td>
    </tr>
    <tr>
      <td style="text-align: right">1</td>
      <td style="text-align: left">ceers-v4</td>
      <td style="text-align: left">ceers-v4_prism-clear_1345_2759.spec.fits</td>
      <td style="text-align: right">3.43971</td>
      <td style="text-align: right">10.622</td>
      <td style="text-align: right">31.5176</td>
      <td style="text-align: left"><img src="https://grizli-cutout.herokuapp.com/thumb?size=1.5&amp;scl=2.0&amp;asinh=True&amp;filters=f115w-clear%2Cf277w-clear%2Cf444w-clear&amp;rgb_scl=1.5%2C0.74%2C1.3&amp;pl=2&amp;coord=214.8712313%2C52.8450664" height="200px" /></td>
      <td style="text-align: left"><img src="https://grizli-cutout.herokuapp.com/thumb?size=1.5&amp;scl=4.0&amp;invert=True&amp;filters=f444w-clear&amp;rgb_scl=1.5%2C0.74%2C1.3&amp;pl=2&amp;coord=214.8712313%2C52.8450664&amp;nirspec=True&amp;dpi_scale=6&amp;nrs_lw=0.5&amp;nrs_alpha=0.8&amp;metafile=jw01345062001" height="200px" /></td>
      <td style="text-align: left"><img src="https://s3.amazonaws.com/msaexp-nirspec/extractions/ceers-v4/ceers-v4_prism-clear_1345_2759.fnu.png" height="200px" /></td>
      <td style="text-align: left"><img src="https://s3.amazonaws.com/msaexp-nirspec/extractions/ceers-v4/ceers-v4_prism-clear_1345_2759.flam.png" height="200px" /></td>
    </tr>
    <tr>
      <td style="text-align: right">2</td>
      <td style="text-align: left">capers-cos16-v4</td>
      <td style="text-align: left">capers-cos16-v4_prism-clear_6368_24202.spec.fits</td>
      <td style="text-align: right">3.09955</td>
      <td style="text-align: right">10.9213</td>
      <td style="text-align: right">20.8004</td>
      <td style="text-align: left"><img src="https://grizli-cutout.herokuapp.com/thumb?size=1.5&amp;scl=2.0&amp;asinh=True&amp;filters=f115w-clear%2Cf277w-clear%2Cf444w-clear&amp;rgb_scl=1.5%2C0.74%2C1.3&amp;pl=2&amp;coord=150.209022%2C2.3491367" height="200px" /></td>
      <td style="text-align: left"><img src="https://grizli-cutout.herokuapp.com/thumb?size=1.5&amp;scl=4.0&amp;invert=True&amp;filters=f444w-clear&amp;rgb_scl=1.5%2C0.74%2C1.3&amp;pl=2&amp;coord=150.209022%2C2.3491367&amp;nirspec=True&amp;dpi_scale=6&amp;nrs_lw=0.5&amp;nrs_alpha=0.8&amp;metafile=jw06368016001" height="200px" /></td>
      <td style="text-align: left"><img src="https://s3.amazonaws.com/msaexp-nirspec/extractions/capers-cos16-v4/capers-cos16-v4_prism-clear_6368_24202.fnu.png" height="200px" /></td>
      <td style="text-align: left"><img src="https://s3.amazonaws.com/msaexp-nirspec/extractions/capers-cos16-v4/capers-cos16-v4_prism-clear_6368_24202.flam.png" height="200px" /></td>
    </tr>
    <tr>
      <td style="text-align: right">3</td>
      <td style="text-align: left">mom-uds02-v4</td>
      <td style="text-align: left">mom-uds02-v4_prism-clear_5224_144670.spec.fits</td>
      <td style="text-align: right">3.97196</td>
      <td style="text-align: right">10.6169</td>
      <td style="text-align: right">14.667</td>
      <td style="text-align: left"><img src="https://grizli-cutout.herokuapp.com/thumb?size=1.5&amp;scl=2.0&amp;asinh=True&amp;filters=f115w-clear%2Cf277w-clear%2Cf444w-clear&amp;rgb_scl=1.5%2C0.74%2C1.3&amp;pl=2&amp;coord=34.24259288%2C-5.14312088" height="200px" /></td>
      <td style="text-align: left"><img src="https://grizli-cutout.herokuapp.com/thumb?size=1.5&amp;scl=4.0&amp;invert=True&amp;filters=f444w-clear&amp;rgb_scl=1.5%2C0.74%2C1.3&amp;pl=2&amp;coord=34.24259288%2C-5.14312088&amp;nirspec=True&amp;dpi_scale=6&amp;nrs_lw=0.5&amp;nrs_alpha=0.8&amp;metafile=jw05224002001" height="200px" /></td>
      <td style="text-align: left"><img src="https://s3.amazonaws.com/msaexp-nirspec/extractions/mom-uds02-v4/mom-uds02-v4_prism-clear_5224_144670.fnu.png" height="200px" /></td>
      <td style="text-align: left"><img src="https://s3.amazonaws.com/msaexp-nirspec/extractions/mom-uds02-v4/mom-uds02-v4_prism-clear_5224_144670.flam.png" height="200px" /></td>
    </tr>
    <tr>
      <td style="text-align: right">4</td>
      <td style="text-align: left">nexus-obs5-v4</td>
      <td style="text-align: left">nexus-obs5-v4_prism-clear_5105_27813.spec.fits</td>
      <td style="text-align: right">3.96582</td>
      <td style="text-align: right">11.0988</td>
      <td style="text-align: right">8.80705</td>
      <td style="text-align: left"><img src="https://grizli-cutout.herokuapp.com/thumb?size=1.5&amp;scl=2.0&amp;asinh=True&amp;filters=f115w-clear%2Cf277w-clear%2Cf444w-clear&amp;rgb_scl=1.5%2C0.74%2C1.3&amp;pl=2&amp;coord=268.3694914%2C65.1623794" height="200px" /></td>
      <td style="text-align: left"><img src="https://grizli-cutout.herokuapp.com/thumb?size=1.5&amp;scl=4.0&amp;invert=True&amp;filters=f444w-clear&amp;rgb_scl=1.5%2C0.74%2C1.3&amp;pl=2&amp;coord=268.3694914%2C65.1623794&amp;nirspec=True&amp;dpi_scale=6&amp;nrs_lw=0.5&amp;nrs_alpha=0.8&amp;metafile=jw05105005001" height="200px" /></td>
      <td style="text-align: left"><img src="https://s3.amazonaws.com/msaexp-nirspec/extractions/nexus-obs5-v4/nexus-obs5-v4_prism-clear_5105_27813.fnu.png" height="200px" /></td>
      <td style="text-align: left"><img src="https://s3.amazonaws.com/msaexp-nirspec/extractions/nexus-obs5-v4/nexus-obs5-v4_prism-clear_5105_27813.flam.png" height="200px" /></td>
    </tr>
    <tr>
      <td style="text-align: right">5</td>
      <td style="text-align: left">jades-gds05-v4</td>
      <td style="text-align: left">jades-gds05-v4_prism-clear_1286_194373.spec.fits</td>
      <td style="text-align: right">2.67694</td>
      <td style="text-align: right">10.2399</td>
      <td style="text-align: right">42.391</td>
      <td style="text-align: left"><img src="https://grizli-cutout.herokuapp.com/thumb?size=1.5&amp;scl=2.0&amp;asinh=True&amp;filters=f115w-clear%2Cf277w-clear%2Cf444w-clear&amp;rgb_scl=1.5%2C0.74%2C1.3&amp;pl=2&amp;coord=53.1400619%2C-27.8265143" height="200px" /></td>
      <td style="text-align: left"><img src="https://grizli-cutout.herokuapp.com/thumb?size=1.5&amp;scl=4.0&amp;invert=True&amp;filters=f444w-clear&amp;rgb_scl=1.5%2C0.74%2C1.3&amp;pl=2&amp;coord=53.1400619%2C-27.8265143&amp;nirspec=True&amp;dpi_scale=6&amp;nrs_lw=0.5&amp;nrs_alpha=0.8&amp;metafile=jw01286005001" height="200px" /></td>
      <td style="text-align: left"><img src="https://s3.amazonaws.com/msaexp-nirspec/extractions/jades-gds05-v4/jades-gds05-v4_prism-clear_1286_194373.fnu.png" height="200px" /></td>
      <td style="text-align: left"><img src="https://s3.amazonaws.com/msaexp-nirspec/extractions/jades-gds05-v4/jades-gds05-v4_prism-clear_1286_194373.flam.png" height="200px" /></td>
    </tr>
    <tr>
      <td style="text-align: right">6</td>
      <td style="text-align: left">ceers-ddt-v4</td>
      <td style="text-align: left">ceers-ddt-v4_prism-clear_2750_307.spec.fits</td>
      <td style="text-align: right">2.93255</td>
      <td style="text-align: right">10.9374</td>
      <td style="text-align: right">2.72842</td>
      <td style="text-align: left"><img src="https://grizli-cutout.herokuapp.com/thumb?size=1.5&amp;scl=2.0&amp;asinh=True&amp;filters=f115w-clear%2Cf277w-clear%2Cf444w-clear&amp;rgb_scl=1.5%2C0.74%2C1.3&amp;pl=2&amp;coord=214.9110463%2C52.9331179" height="200px" /></td>
      <td style="text-align: left"><img src="https://grizli-cutout.herokuapp.com/thumb?size=1.5&amp;scl=4.0&amp;invert=True&amp;filters=f444w-clear&amp;rgb_scl=1.5%2C0.74%2C1.3&amp;pl=2&amp;coord=214.9110463%2C52.9331179&amp;nirspec=True&amp;dpi_scale=6&amp;nrs_lw=0.5&amp;nrs_alpha=0.8&amp;metafile=jw02750002001" height="200px" /></td>
      <td style="text-align: left"><img src="https://s3.amazonaws.com/msaexp-nirspec/extractions/ceers-ddt-v4/ceers-ddt-v4_prism-clear_2750_307.fnu.png" height="200px" /></td>
      <td style="text-align: left"><img src="https://s3.amazonaws.com/msaexp-nirspec/extractions/ceers-ddt-v4/ceers-ddt-v4_prism-clear_2750_307.flam.png" height="200px" /></td>
    </tr>
    <tr>
      <td style="text-align: right">7</td>
      <td style="text-align: left">glazebrook-egs-v4</td>
      <td style="text-align: left">glazebrook-egs-v4_prism-clear_2565_18996.spec.fits</td>
      <td style="text-align: right">3.23542</td>
      <td style="text-align: right">10.9906</td>
      <td style="text-align: right">23.3237</td>
      <td style="text-align: left"><img src="https://grizli-cutout.herokuapp.com/thumb?size=1.5&amp;scl=2.0&amp;asinh=True&amp;filters=f115w-clear%2Cf277w-clear%2Cf444w-clear&amp;rgb_scl=1.5%2C0.74%2C1.3&amp;pl=2&amp;coord=214.8956147%2C52.85649932" height="200px" /></td>
      <td style="text-align: left"><img src="https://grizli-cutout.herokuapp.com/thumb?size=1.5&amp;scl=4.0&amp;invert=True&amp;filters=f444w-clear&amp;rgb_scl=1.5%2C0.74%2C1.3&amp;pl=2&amp;coord=214.8956147%2C52.85649932&amp;nirspec=True&amp;dpi_scale=6&amp;nrs_lw=0.5&amp;nrs_alpha=0.8&amp;metafile=jw02565006001" height="200px" /></td>
      <td style="text-align: left"><img src="https://s3.amazonaws.com/msaexp-nirspec/extractions/glazebrook-egs-v4/glazebrook-egs-v4_prism-clear_2565_18996.fnu.png" height="200px" /></td>
      <td style="text-align: left"><img src="https://s3.amazonaws.com/msaexp-nirspec/extractions/glazebrook-egs-v4/glazebrook-egs-v4_prism-clear_2565_18996.flam.png" height="200px" /></td>
    </tr>
    <tr>
      <td style="text-align: right">8</td>
      <td style="text-align: left">capers-egs49-v4</td>
      <td style="text-align: left">capers-egs49-v4_prism-clear_6368_7806.spec.fits</td>
      <td style="text-align: right">3.45255</td>
      <td style="text-align: right">10.285</td>
      <td style="text-align: right">33.2528</td>
      <td style="text-align: left"><img src="https://grizli-cutout.herokuapp.com/thumb?size=1.5&amp;scl=2.0&amp;asinh=True&amp;filters=f115w-clear%2Cf277w-clear%2Cf444w-clear&amp;rgb_scl=1.5%2C0.74%2C1.3&amp;pl=2&amp;coord=214.8790898%2C52.8880604" height="200px" /></td>
      <td style="text-align: left"><img src="https://grizli-cutout.herokuapp.com/thumb?size=1.5&amp;scl=4.0&amp;invert=True&amp;filters=f444w-clear&amp;rgb_scl=1.5%2C0.74%2C1.3&amp;pl=2&amp;coord=214.8790898%2C52.8880604&amp;nirspec=True&amp;dpi_scale=6&amp;nrs_lw=0.5&amp;nrs_alpha=0.8&amp;metafile=jw06368049001" height="200px" /></td>
      <td style="text-align: left"><img src="https://s3.amazonaws.com/msaexp-nirspec/extractions/capers-egs49-v4/capers-egs49-v4_prism-clear_6368_7806.fnu.png" height="200px" /></td>
      <td style="text-align: left"><img src="https://s3.amazonaws.com/msaexp-nirspec/extractions/capers-egs49-v4/capers-egs49-v4_prism-clear_6368_7806.flam.png" height="200px" /></td>
    </tr>
    <tr>
      <td style="text-align: right">9</td>
      <td style="text-align: left">ceers-v4</td>
      <td style="text-align: left">ceers-v4_prism-clear_1345_2779.spec.fits</td>
      <td style="text-align: right">3.23845</td>
      <td style="text-align: right">10.8818</td>
      <td style="text-align: right">31.1324</td>
      <td style="text-align: left"><img src="https://grizli-cutout.herokuapp.com/thumb?size=1.5&amp;scl=2.0&amp;asinh=True&amp;filters=f115w-clear%2Cf277w-clear%2Cf444w-clear&amp;rgb_scl=1.5%2C0.74%2C1.3&amp;pl=2&amp;coord=214.895621%2C52.8564964" height="200px" /></td>
      <td style="text-align: left"><img src="https://grizli-cutout.herokuapp.com/thumb?size=1.5&amp;scl=4.0&amp;invert=True&amp;filters=f444w-clear&amp;rgb_scl=1.5%2C0.74%2C1.3&amp;pl=2&amp;coord=214.895621%2C52.8564964&amp;nirspec=True&amp;dpi_scale=6&amp;nrs_lw=0.5&amp;nrs_alpha=0.8&amp;metafile=jw01345100001" height="200px" /></td>
      <td style="text-align: left"><img src="https://s3.amazonaws.com/msaexp-nirspec/extractions/ceers-v4/ceers-v4_prism-clear_1345_2779.fnu.png" height="200px" /></td>
      <td style="text-align: left"><img src="https://s3.amazonaws.com/msaexp-nirspec/extractions/ceers-v4/ceers-v4_prism-clear_1345_2779.flam.png" height="200px" /></td>
    </tr>
    <tr>
      <td style="text-align: right">10</td>
      <td style="text-align: left">snh0pe-v4</td>
      <td style="text-align: left">snh0pe-v4_prism-clear_4446_274.spec.fits</td>
      <td style="text-align: right">4.11111</td>
      <td style="text-align: right">10.8132</td>
      <td style="text-align: right">4.80224</td>
      <td style="text-align: left"><img src="https://grizli-cutout.herokuapp.com/thumb?size=1.5&amp;scl=2.0&amp;asinh=True&amp;filters=f115w-clear%2Cf277w-clear%2Cf444w-clear&amp;rgb_scl=1.5%2C0.74%2C1.3&amp;pl=2&amp;coord=171.82361288%2C42.46963868" height="200px" /></td>
      <td style="text-align: left"><img src="https://grizli-cutout.herokuapp.com/thumb?size=1.5&amp;scl=4.0&amp;invert=True&amp;filters=f444w-clear&amp;rgb_scl=1.5%2C0.74%2C1.3&amp;pl=2&amp;coord=171.82361288%2C42.46963868&amp;nirspec=True&amp;dpi_scale=6&amp;nrs_lw=0.5&amp;nrs_alpha=0.8&amp;metafile=jw04446001001" height="200px" /></td>
      <td style="text-align: left"><img src="https://s3.amazonaws.com/msaexp-nirspec/extractions/snh0pe-v4/snh0pe-v4_prism-clear_4446_274.fnu.png" height="200px" /></td>
      <td style="text-align: left"><img src="https://s3.amazonaws.com/msaexp-nirspec/extractions/snh0pe-v4/snh0pe-v4_prism-clear_4446_274.flam.png" height="200px" /></td>
    </tr>
    <tr>
      <td style="text-align: right">11</td>
      <td style="text-align: left">egs-nelsonx-v4</td>
      <td style="text-align: left">egs-nelsonx-v4_prism-clear_4106_76085.spec.fits</td>
      <td style="text-align: right">3.22192</td>
      <td style="text-align: right">10.5733</td>
      <td style="text-align: right">34.906</td>
      <td style="text-align: left"><img src="https://grizli-cutout.herokuapp.com/thumb?size=1.5&amp;scl=2.0&amp;asinh=True&amp;filters=f115w-clear%2Cf277w-clear%2Cf444w-clear&amp;rgb_scl=1.5%2C0.74%2C1.3&amp;pl=2&amp;coord=214.83684409%2C52.8734566" height="200px" /></td>
      <td style="text-align: left"><img src="https://grizli-cutout.herokuapp.com/thumb?size=1.5&amp;scl=4.0&amp;invert=True&amp;filters=f444w-clear&amp;rgb_scl=1.5%2C0.74%2C1.3&amp;pl=2&amp;coord=214.83684409%2C52.8734566&amp;nirspec=True&amp;dpi_scale=6&amp;nrs_lw=0.5&amp;nrs_alpha=0.8&amp;metafile=jw04106006001" height="200px" /></td>
      <td style="text-align: left"><img src="https://s3.amazonaws.com/msaexp-nirspec/extractions/egs-nelsonx-v4/egs-nelsonx-v4_prism-clear_4106_76085.fnu.png" height="200px" /></td>
      <td style="text-align: left"><img src="https://s3.amazonaws.com/msaexp-nirspec/extractions/egs-nelsonx-v4/egs-nelsonx-v4_prism-clear_4106_76085.flam.png" height="200px" /></td>
    </tr>
    <tr>
      <td style="text-align: right">12</td>
      <td style="text-align: left">rubies-egs63-v4</td>
      <td style="text-align: left">rubies-egs63-v4_prism-clear_4233_58841.spec.fits</td>
      <td style="text-align: right">3.45082</td>
      <td style="text-align: right">10.4517</td>
      <td style="text-align: right">27.5816</td>
      <td style="text-align: left"><img src="https://grizli-cutout.herokuapp.com/thumb?size=1.5&amp;scl=2.0&amp;asinh=True&amp;filters=f115w-clear%2Cf277w-clear%2Cf444w-clear&amp;rgb_scl=1.5%2C0.74%2C1.3&amp;pl=2&amp;coord=214.87909774%2C52.8880646" height="200px" /></td>
      <td style="text-align: left"><img src="https://grizli-cutout.herokuapp.com/thumb?size=1.5&amp;scl=4.0&amp;invert=True&amp;filters=f444w-clear&amp;rgb_scl=1.5%2C0.74%2C1.3&amp;pl=2&amp;coord=214.87909774%2C52.8880646&amp;nirspec=True&amp;dpi_scale=6&amp;nrs_lw=0.5&amp;nrs_alpha=0.8&amp;metafile=jw04233006003" height="200px" /></td>
      <td style="text-align: left"><img src="https://s3.amazonaws.com/msaexp-nirspec/extractions/rubies-egs63-v4/rubies-egs63-v4_prism-clear_4233_58841.fnu.png" height="200px" /></td>
      <td style="text-align: left"><img src="https://s3.amazonaws.com/msaexp-nirspec/extractions/rubies-egs63-v4/rubies-egs63-v4_prism-clear_4233_58841.flam.png" height="200px" /></td>
    </tr>
    <tr>
      <td style="text-align: right">13</td>
      <td style="text-align: left">rubies-egs63-v4</td>
      <td style="text-align: left">rubies-egs63-v4_prism-clear_4233_61168.spec.fits</td>
      <td style="text-align: right">3.43539</td>
      <td style="text-align: right">10.8289</td>
      <td style="text-align: right">3.56196</td>
      <td style="text-align: left"><img src="https://grizli-cutout.herokuapp.com/thumb?size=1.5&amp;scl=2.0&amp;asinh=True&amp;filters=f115w-clear%2Cf277w-clear%2Cf444w-clear&amp;rgb_scl=1.5%2C0.74%2C1.3&amp;pl=2&amp;coord=214.86605335%2C52.88425718" height="200px" /></td>
      <td style="text-align: left"><img src="https://grizli-cutout.herokuapp.com/thumb?size=1.5&amp;scl=4.0&amp;invert=True&amp;filters=f444w-clear&amp;rgb_scl=1.5%2C0.74%2C1.3&amp;pl=2&amp;coord=214.86605335%2C52.88425718&amp;nirspec=True&amp;dpi_scale=6&amp;nrs_lw=0.5&amp;nrs_alpha=0.8&amp;metafile=jw04233006003" height="200px" /></td>
      <td style="text-align: left"><img src="https://s3.amazonaws.com/msaexp-nirspec/extractions/rubies-egs63-v4/rubies-egs63-v4_prism-clear_4233_61168.fnu.png" height="200px" /></td>
      <td style="text-align: left"><img src="https://s3.amazonaws.com/msaexp-nirspec/extractions/rubies-egs63-v4/rubies-egs63-v4_prism-clear_4233_61168.flam.png" height="200px" /></td>
    </tr>
    <tr>
      <td style="text-align: right">14</td>
      <td style="text-align: left">glazebrook-egs-v4</td>
      <td style="text-align: left">glazebrook-egs-v4_prism-clear_2565_31322.spec.fits</td>
      <td style="text-align: right">3.4242</td>
      <td style="text-align: right">10.961</td>
      <td style="text-align: right">3.01521</td>
      <td style="text-align: left"><img src="https://grizli-cutout.herokuapp.com/thumb?size=1.5&amp;scl=2.0&amp;asinh=True&amp;filters=f115w-clear%2Cf277w-clear%2Cf444w-clear&amp;rgb_scl=1.5%2C0.74%2C1.3&amp;pl=2&amp;coord=214.86605432%2C52.88425639" height="200px" /></td>
      <td style="text-align: left"><img src="https://grizli-cutout.herokuapp.com/thumb?size=1.5&amp;scl=4.0&amp;invert=True&amp;filters=f444w-clear&amp;rgb_scl=1.5%2C0.74%2C1.3&amp;pl=2&amp;coord=214.86605432%2C52.88425639&amp;nirspec=True&amp;dpi_scale=6&amp;nrs_lw=0.5&amp;nrs_alpha=0.8&amp;metafile=jw02565006001" height="200px" /></td>
      <td style="text-align: left"><img src="https://s3.amazonaws.com/msaexp-nirspec/extractions/glazebrook-egs-v4/glazebrook-egs-v4_prism-clear_2565_31322.fnu.png" height="200px" /></td>
      <td style="text-align: left"><img src="https://s3.amazonaws.com/msaexp-nirspec/extractions/glazebrook-egs-v4/glazebrook-egs-v4_prism-clear_2565_31322.flam.png" height="200px" /></td>
    </tr>
    <tr>
      <td style="text-align: right">15</td>
      <td style="text-align: left">jades-gds03-v4</td>
      <td style="text-align: left">jades-gds03-v4_prism-clear_1286_10026167.spec.fits</td>
      <td style="text-align: right">3.50452</td>
      <td style="text-align: right">10.3615</td>
      <td style="text-align: right">2.95476</td>
      <td style="text-align: left"><img src="https://grizli-cutout.herokuapp.com/thumb?size=1.5&amp;scl=2.0&amp;asinh=True&amp;filters=f115w-clear%2Cf277w-clear%2Cf444w-clear&amp;rgb_scl=1.5%2C0.74%2C1.3&amp;pl=2&amp;coord=53.0825811%2C-27.8668027" height="200px" /></td>
      <td style="text-align: left"><img src="https://grizli-cutout.herokuapp.com/thumb?size=1.5&amp;scl=4.0&amp;invert=True&amp;filters=f444w-clear&amp;rgb_scl=1.5%2C0.74%2C1.3&amp;pl=2&amp;coord=53.0825811%2C-27.8668027&amp;nirspec=True&amp;dpi_scale=6&amp;nrs_lw=0.5&amp;nrs_alpha=0.8&amp;metafile=jw01286003001" height="200px" /></td>
      <td style="text-align: left"><img src="https://s3.amazonaws.com/msaexp-nirspec/extractions/jades-gds03-v4/jades-gds03-v4_prism-clear_1286_10026167.fnu.png" height="200px" /></td>
      <td style="text-align: left"><img src="https://s3.amazonaws.com/msaexp-nirspec/extractions/jades-gds03-v4/jades-gds03-v4_prism-clear_1286_10026167.flam.png" height="200px" /></td>
    </tr>
  </tbody>
</table>

<div class="language-python highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="n">nn_sample</span> <span class="o">=</span> <span class="n">tab</span><span class="p">[</span><span class="s">'ra'</span><span class="p">]</span> <span class="o">&lt;</span> <span class="mi">0</span>
<span class="n">nn_j</span> <span class="o">=</span> <span class="n">np</span><span class="p">.</span><span class="n">where</span><span class="p">(</span><span class="n">is_prism</span><span class="p">)[</span><span class="mi">0</span><span class="p">][</span><span class="n">valid_spec</span><span class="p">][</span><span class="n">tr_idx</span><span class="p">]</span>

<span class="n">nn_sample</span><span class="p">[</span><span class="n">nn_j</span><span class="p">]</span> <span class="o">=</span> <span class="bp">True</span>
<span class="k">print</span><span class="p">(</span><span class="n">nn_sample</span><span class="p">.</span><span class="nb">sum</span><span class="p">())</span>
<span class="n">sub_sample</span> <span class="o">=</span> <span class="n">nn_sample</span><span class="p">[</span><span class="n">is_prism</span><span class="p">]</span> <span class="o">&amp;</span> <span class="n">valid_spec</span>
<span class="n">sub_idx</span> <span class="o">=</span> <span class="n">np</span><span class="p">.</span><span class="n">where</span><span class="p">(</span><span class="n">sub_sample</span><span class="p">)[</span><span class="mi">0</span><span class="p">]</span>

<span class="n">z_sample</span> <span class="o">=</span> <span class="n">tab</span><span class="p">[</span><span class="s">'zrf'</span><span class="p">][</span><span class="n">is_prism</span><span class="p">][</span><span class="n">nn_sample</span><span class="p">[</span><span class="n">is_prism</span><span class="p">]</span> <span class="o">&amp;</span> <span class="n">valid_spec</span><span class="p">]</span>
<span class="n">file_sample</span> <span class="o">=</span> <span class="n">tab</span><span class="p">[</span><span class="s">'file'</span><span class="p">][</span><span class="n">is_prism</span><span class="p">][</span><span class="n">nn_sample</span><span class="p">[</span><span class="n">is_prism</span><span class="p">]</span> <span class="o">&amp;</span> <span class="n">valid_spec</span><span class="p">]</span>

<span class="n">fig</span><span class="p">,</span> <span class="n">axes</span> <span class="o">=</span> <span class="n">plt</span><span class="p">.</span><span class="n">subplots</span><span class="p">(</span><span class="mi">2</span><span class="p">,</span><span class="mi">1</span><span class="p">,</span><span class="n">figsize</span><span class="o">=</span><span class="p">(</span><span class="mi">10</span><span class="p">,</span><span class="mi">7</span><span class="p">),</span> <span class="n">sharex</span><span class="o">=</span><span class="bp">False</span><span class="p">,</span> <span class="n">sharey</span><span class="o">=</span><span class="bp">True</span><span class="p">)</span>

<span class="n">flam</span> <span class="o">=</span> <span class="o">-</span><span class="mi">2</span>
<span class="k">if</span> <span class="mi">0</span><span class="p">:</span>
    <span class="n">flam</span> <span class="o">=</span> <span class="mi">0</span>

<span class="k">for</span> <span class="n">j</span><span class="p">,</span> <span class="n">z</span> <span class="ow">in</span> <span class="nb">enumerate</span><span class="p">(</span><span class="n">z_sample</span><span class="p">):</span>
    <span class="n">kws</span> <span class="o">=</span> <span class="nb">dict</span><span class="p">(</span>
        <span class="n">alpha</span><span class="o">=</span><span class="mf">0.3</span> <span class="k">if</span> <span class="n">file_sample</span><span class="p">[</span><span class="n">j</span><span class="p">]</span> <span class="o">==</span> <span class="n">spec_file</span> <span class="k">else</span> <span class="mf">0.1</span><span class="p">,</span>
        <span class="n">color</span><span class="o">=</span><span class="s">'k'</span> <span class="k">if</span> <span class="n">file_sample</span><span class="p">[</span><span class="n">j</span><span class="p">]</span> <span class="o">==</span> <span class="n">spec_file</span> <span class="k">else</span> <span class="n">plt</span><span class="p">.</span><span class="n">cm</span><span class="p">.</span><span class="n">plasma</span><span class="p">(</span><span class="n">j</span><span class="o">/</span><span class="nb">len</span><span class="p">(</span><span class="n">z_sample</span><span class="p">)),</span>
        <span class="n">label</span><span class="o">=</span><span class="n">spec_file</span> <span class="k">if</span> <span class="n">file_sample</span><span class="p">[</span><span class="n">j</span><span class="p">]</span> <span class="o">==</span> <span class="n">spec_file</span> <span class="k">else</span> <span class="bp">None</span><span class="p">,</span>
        <span class="n">zorder</span><span class="o">=</span><span class="mi">1000</span> <span class="k">if</span> <span class="n">file_sample</span><span class="p">[</span><span class="n">j</span><span class="p">]</span> <span class="o">==</span> <span class="n">spec_file</span> <span class="k">else</span> <span class="mi">10</span><span class="p">,</span>
    <span class="p">)</span>
    
    <span class="n">axes</span><span class="p">[</span><span class="mi">0</span><span class="p">].</span><span class="n">plot</span><span class="p">(</span>
        <span class="c1"># prism_spectra['wave'],
</span>        <span class="c1"># (flux_norm[:, sub_idx[j]] * (prism_spectra['wave'] / (1 + z) / 0.7)**flam),
</span>        <span class="p">(</span><span class="n">Xfeatures</span><span class="p">[:,</span> <span class="n">sub_idx</span><span class="p">[</span><span class="n">j</span><span class="p">]]),</span> <span class="c1"># * (prism_spectra['wave'] / (1 + z) / 0.7)**flam),
</span>        <span class="o">**</span><span class="n">kws</span>
    <span class="p">)</span>
    
    <span class="n">axes</span><span class="p">[</span><span class="mi">1</span><span class="p">].</span><span class="n">plot</span><span class="p">(</span>
        <span class="n">prism_spectra</span><span class="p">[</span><span class="s">'wave'</span><span class="p">]</span> <span class="o">/</span> <span class="p">(</span><span class="mi">1</span> <span class="o">+</span> <span class="n">z</span><span class="p">),</span>
        <span class="p">(</span><span class="n">flux_norm</span><span class="p">[:,</span> <span class="n">sub_idx</span><span class="p">[</span><span class="n">j</span><span class="p">]]</span> <span class="o">*</span> <span class="p">(</span><span class="n">prism_spectra</span><span class="p">[</span><span class="s">'wave'</span><span class="p">]</span> <span class="o">/</span> <span class="p">(</span><span class="mi">1</span> <span class="o">+</span> <span class="n">z</span><span class="p">)</span> <span class="o">/</span> <span class="mf">0.7</span><span class="p">)</span><span class="o">**</span><span class="n">flam</span><span class="p">),</span>
        <span class="o">**</span><span class="n">kws</span>
    <span class="p">)</span>

<span class="n">axes</span><span class="p">[</span><span class="mi">0</span><span class="p">].</span><span class="n">set_xlabel</span><span class="p">(</span><span class="sa">r</span><span class="s">'$i$'</span><span class="p">)</span>
<span class="n">axes</span><span class="p">[</span><span class="mi">0</span><span class="p">].</span><span class="n">set_ylabel</span><span class="p">(</span><span class="sa">r</span><span class="s">'$X_i$'</span><span class="p">)</span>

<span class="n">ymax</span> <span class="o">=</span> <span class="mf">2.2</span>
<span class="n">axes</span><span class="p">[</span><span class="mi">1</span><span class="p">].</span><span class="n">legend</span><span class="p">(</span><span class="n">loc</span><span class="o">=</span><span class="s">'upper right'</span><span class="p">)</span>
<span class="n">axes</span><span class="p">[</span><span class="mi">1</span><span class="p">].</span><span class="n">set_xlabel</span><span class="p">(</span><span class="sa">r</span><span class="s">'$\lambda_\mathrm{rest}$'</span><span class="p">)</span>
<span class="n">axes</span><span class="p">[</span><span class="mi">1</span><span class="p">].</span><span class="n">set_ylabel</span><span class="p">(</span><span class="s">'normalized spectrum'</span><span class="p">)</span>

<span class="n">axes</span><span class="p">[</span><span class="mi">0</span><span class="p">].</span><span class="n">set_ylim</span><span class="p">(</span><span class="o">-</span><span class="mf">0.1</span><span class="o">*</span><span class="n">ymax</span><span class="p">,</span> <span class="n">ymax</span><span class="p">)</span>
<span class="k">for</span> <span class="n">ax</span> <span class="ow">in</span> <span class="n">axes</span><span class="p">:</span>
    <span class="n">ax</span><span class="p">.</span><span class="n">grid</span><span class="p">()</span>
    
<span class="n">fig</span><span class="p">.</span><span class="n">tight_layout</span><span class="p">(</span><span class="n">pad</span><span class="o">=</span><span class="mi">1</span><span class="p">)</span>
</code></pre></div></div>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>32
</code></pre></div></div>

<p><img src="/dja/assets/post_files/2025-05-01-nirspec-merged-table-v4_files/nirspec-merged-table-v4_52_1.png" alt="png" /></p>

<div class="language-python highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="n">fig</span><span class="p">,</span> <span class="n">ax</span> <span class="o">=</span> <span class="n">plt</span><span class="p">.</span><span class="n">subplots</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span><span class="mi">1</span><span class="p">,</span><span class="n">figsize</span><span class="o">=</span><span class="p">(</span><span class="mi">9</span><span class="p">,</span><span class="mi">6</span><span class="p">))</span>
<span class="n">tr_spec</span> <span class="o">=</span> <span class="p">(</span><span class="n">rest_flux_norm</span><span class="p">[:,</span> <span class="n">valid_spec</span><span class="p">][:,</span><span class="n">tr_idx</span><span class="p">].</span><span class="n">T</span> <span class="o">*</span> <span class="p">(</span><span class="n">wrest</span><span class="o">/</span><span class="mf">0.7</span><span class="p">)</span><span class="o">**</span><span class="n">flam</span><span class="p">).</span><span class="n">T</span>
<span class="n">tr_spec</span><span class="p">[</span><span class="n">np</span><span class="p">.</span><span class="nb">abs</span><span class="p">(</span><span class="n">tr_spec</span><span class="p">)</span> <span class="o">&lt;</span> <span class="mf">1.e-6</span><span class="p">]</span> <span class="o">=</span> <span class="n">np</span><span class="p">.</span><span class="n">nan</span>
<span class="n">tr_spec</span> <span class="o">=</span> <span class="n">tr_spec</span><span class="p">[:,:</span><span class="mi">16</span><span class="p">]</span>

<span class="n">xpl</span> <span class="o">=</span> <span class="n">wrest</span>
<span class="n">xpl</span> <span class="o">=</span> <span class="n">np</span><span class="p">.</span><span class="n">arange</span><span class="p">(</span><span class="nb">len</span><span class="p">(</span><span class="n">xpl</span><span class="p">))</span>

<span class="n">_</span> <span class="o">=</span> <span class="n">ax</span><span class="p">.</span><span class="n">plot</span><span class="p">(</span><span class="n">xpl</span><span class="p">,</span> <span class="n">tr_spec</span><span class="p">[:,</span><span class="mi">1</span><span class="p">:],</span> <span class="n">alpha</span><span class="o">=</span><span class="mf">0.1</span><span class="p">,</span> <span class="n">color</span><span class="o">=</span><span class="s">'0.7'</span><span class="p">)</span>

<span class="c1"># _ = ax.plot(wrest, np.nanmean(tr_spec, axis=1), alpha=0.5, color='k')
</span><span class="n">_</span> <span class="o">=</span> <span class="n">ax</span><span class="p">.</span><span class="n">plot</span><span class="p">(</span><span class="n">xpl</span><span class="p">,</span> <span class="n">np</span><span class="p">.</span><span class="n">nanmedian</span><span class="p">(</span><span class="n">tr_spec</span><span class="p">[:,</span><span class="mi">1</span><span class="p">:],</span> <span class="n">axis</span><span class="o">=</span><span class="mi">1</span><span class="p">),</span> <span class="n">alpha</span><span class="o">=</span><span class="mf">0.5</span><span class="p">,</span> <span class="n">color</span><span class="o">=</span><span class="s">'k'</span><span class="p">,</span> <span class="n">label</span><span class="o">=</span><span class="s">'NN median'</span><span class="p">)</span>

<span class="n">src_spec</span> <span class="o">=</span> <span class="n">tr_spec</span><span class="p">[:,</span><span class="mi">0</span><span class="p">]</span> <span class="c1">#np.nanmean((rest_flux_norm[:, valid_spec][sli,:][:,tr_idx[:1]].T * (wrest[sli]/0.7)**flam).T, axis=1)
</span>
<span class="n">_</span> <span class="o">=</span> <span class="n">ax</span><span class="p">.</span><span class="n">plot</span><span class="p">(</span><span class="n">xpl</span><span class="p">,</span> <span class="n">src_spec</span><span class="p">,</span> <span class="n">alpha</span><span class="o">=</span><span class="mf">0.6</span><span class="p">,</span> <span class="n">color</span><span class="o">=</span><span class="s">'tomato'</span><span class="p">,</span> <span class="n">label</span><span class="o">=</span><span class="n">spec_file</span><span class="p">)</span>

<span class="n">ymax</span> <span class="o">=</span> <span class="mf">1.5</span><span class="o">*</span><span class="n">np</span><span class="p">.</span><span class="n">nanpercentile</span><span class="p">(</span><span class="n">src_spec</span><span class="p">,</span> <span class="mi">90</span><span class="p">)</span>

<span class="n">xt</span> <span class="o">=</span> <span class="n">np</span><span class="p">.</span><span class="n">append</span><span class="p">(</span><span class="n">np</span><span class="p">.</span><span class="n">arange</span><span class="p">(</span><span class="mf">0.1</span><span class="p">,</span> <span class="mf">1.01</span><span class="p">,</span> <span class="mf">0.1</span><span class="p">),</span> <span class="n">np</span><span class="p">.</span><span class="n">arange</span><span class="p">(</span><span class="mf">1.2</span><span class="p">,</span> <span class="mf">1.81</span><span class="p">,</span> <span class="mf">0.2</span><span class="p">))</span>
<span class="n">ax</span><span class="p">.</span><span class="n">set_xticks</span><span class="p">(</span><span class="n">np</span><span class="p">.</span><span class="n">interp</span><span class="p">(</span><span class="n">xt</span><span class="p">,</span> <span class="n">wrest</span><span class="p">,</span> <span class="n">xpl</span><span class="p">))</span>
<span class="n">ax</span><span class="p">.</span><span class="n">set_xticklabels</span><span class="p">([</span><span class="sa">f</span><span class="s">'</span><span class="si">{</span><span class="n">v</span><span class="si">:</span><span class="p">.</span><span class="mi">1</span><span class="n">f</span><span class="si">}</span><span class="s">'</span> <span class="k">for</span> <span class="n">v</span> <span class="ow">in</span> <span class="n">xt</span><span class="p">])</span>

<span class="c1"># ax.set_xlim(*np.interp([0.3, 1.9], wrest, xpl))
</span>
<span class="n">ax</span><span class="p">.</span><span class="n">legend</span><span class="p">(</span><span class="n">loc</span><span class="o">=</span><span class="s">'upper right'</span><span class="p">)</span>

<span class="n">ax</span><span class="p">.</span><span class="n">set_ylim</span><span class="p">(</span><span class="o">-</span><span class="mf">0.1</span><span class="o">*</span><span class="n">ymax</span><span class="p">,</span> <span class="n">ymax</span><span class="p">)</span>
<span class="n">ax</span><span class="p">.</span><span class="n">grid</span><span class="p">()</span>
<span class="c1"># ax.semilogx()
</span><span class="n">ax</span><span class="p">.</span><span class="n">set_ylabel</span><span class="p">(</span><span class="sa">r</span><span class="s">'$f_\lambda$'</span><span class="p">)</span>
<span class="n">ax</span><span class="p">.</span><span class="n">set_xlabel</span><span class="p">(</span><span class="sa">r</span><span class="s">'$\lambda_\mathrm{rest}$'</span><span class="p">)</span>
<span class="n">fig</span><span class="p">.</span><span class="n">tight_layout</span><span class="p">(</span><span class="n">pad</span><span class="o">=</span><span class="mi">1</span><span class="p">)</span>

</code></pre></div></div>

<p><img src="/dja/assets/post_files/2025-05-01-nirspec-merged-table-v4_files/nirspec-merged-table-v4_53_0.png" alt="png" /></p>

<h1 id="merged-1d-grating-spectra">Merged 1D grating spectra</h1>

<p>Read 1D grating arrays</p>

<div class="language-python highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="k">try</span><span class="p">:</span>
    <span class="n">_</span> <span class="o">=</span> <span class="n">grating_spectra</span>
<span class="k">except</span> <span class="nb">NameError</span><span class="p">:</span>
    <span class="c1"># Initialize
</span>    <span class="n">grating_spectra</span> <span class="o">=</span> <span class="p">{}</span>

<span class="k">for</span> <span class="p">(</span><span class="n">grating</span><span class="p">,</span> <span class="nb">filter</span><span class="p">)</span> <span class="ow">in</span> <span class="p">[(</span><span class="s">'G140M'</span><span class="p">,</span> <span class="s">'F070LP'</span><span class="p">),</span> <span class="p">(</span><span class="s">'G235M'</span><span class="p">,</span><span class="s">'F170LP'</span><span class="p">),</span> <span class="p">(</span><span class="s">'G395M'</span><span class="p">,</span> <span class="s">'F290LP'</span><span class="p">)]:</span> 
    <span class="n">key</span> <span class="o">=</span> <span class="p">(</span><span class="n">grating</span><span class="p">,</span> <span class="nb">filter</span><span class="p">)</span>
    
    <span class="n">grating_spectra_file</span> <span class="o">=</span> <span class="sa">f</span><span class="s">"dja_msaexp_emission_lines_</span><span class="si">{</span><span class="n">version</span><span class="si">}</span><span class="s">.</span><span class="si">{</span><span class="n">grating</span><span class="si">}</span><span class="s">-</span><span class="si">{</span><span class="nb">filter</span><span class="si">}</span><span class="s">_spectra.fits"</span><span class="p">.</span><span class="n">lower</span><span class="p">()</span>
    
    <span class="k">if</span> <span class="n">key</span> <span class="ow">not</span> <span class="ow">in</span> <span class="n">grating_spectra</span><span class="p">:</span>
        <span class="k">print</span><span class="p">(</span><span class="sa">f</span><span class="s">"</span><span class="si">{</span><span class="n">key</span><span class="si">}</span><span class="s">: load </span><span class="si">{</span><span class="n">grating_spectra_file</span><span class="si">}</span><span class="s">"</span><span class="p">)</span>
        
        <span class="k">if</span> <span class="n">os</span><span class="p">.</span><span class="n">path</span><span class="p">.</span><span class="n">exists</span><span class="p">(</span><span class="n">grating_spectra_file</span><span class="p">):</span>
            <span class="n">grating_spectra</span><span class="p">[</span><span class="n">key</span><span class="p">]</span> <span class="o">=</span> <span class="n">utils</span><span class="p">.</span><span class="n">read_catalog</span><span class="p">(</span><span class="n">grating_spectra_file</span><span class="p">)</span>
        <span class="k">else</span><span class="p">:</span>
            <span class="c1"># Combined grating spectra in a single big table
</span>            <span class="n">grating_spectra</span><span class="p">[</span><span class="n">key</span><span class="p">]</span> <span class="o">=</span> <span class="n">utils</span><span class="p">.</span><span class="n">read_catalog</span><span class="p">(</span>
                <span class="n">download_file</span><span class="p">(</span>
                    <span class="sa">f</span><span class="s">"</span><span class="si">{</span><span class="n">URL_PREFIX</span><span class="si">}</span><span class="s">/</span><span class="si">{</span><span class="n">grating_spectra_file</span><span class="si">}</span><span class="s">"</span><span class="p">,</span>
                    <span class="n">cache</span><span class="o">=</span><span class="n">CACHE_DOWNLOADS</span>
                <span class="p">),</span>
                <span class="nb">format</span><span class="o">=</span><span class="s">'fits'</span><span class="p">,</span>
            <span class="p">)</span>
        
    <span class="k">else</span><span class="p">:</span>
        <span class="k">print</span><span class="p">(</span><span class="sa">f</span><span class="s">"</span><span class="si">{</span><span class="n">key</span><span class="si">}</span><span class="s"> spectra already loaded from </span><span class="si">{</span><span class="n">grating_spectra_file</span><span class="si">}</span><span class="s">"</span><span class="p">)</span>

    <span class="n">is_grating</span> <span class="o">=</span> <span class="p">(</span><span class="n">tab</span><span class="p">[</span><span class="s">"grating"</span><span class="p">]</span> <span class="o">==</span> <span class="n">grating</span><span class="p">)</span> <span class="o">&amp;</span> <span class="p">(</span><span class="n">tab</span><span class="p">[</span><span class="s">"filter"</span><span class="p">]</span> <span class="o">==</span> <span class="nb">filter</span><span class="p">)</span>

    <span class="k">print</span><span class="p">(</span><span class="sa">f</span><span class="s">"""
    </span><span class="si">{</span><span class="n">grating_spectra</span><span class="p">[</span><span class="n">key</span><span class="p">][</span><span class="s">"flux"</span><span class="p">].</span><span class="n">shape</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="si">}</span><span class="s"> wavelength bins</span><span class="se">\n</span><span class="s">
    </span><span class="si">{</span><span class="n">grating</span><span class="si">}</span><span class="s"> </span><span class="si">{</span><span class="nb">filter</span><span class="si">}</span><span class="s"> spectra in the combined table: </span><span class="si">{</span><span class="n">grating_spectra</span><span class="p">[</span><span class="n">key</span><span class="p">][</span><span class="s">"flux"</span><span class="p">].</span><span class="n">shape</span><span class="si">}</span><span class="s">
    </span><span class="si">{</span><span class="n">grating</span><span class="si">}</span><span class="s"> </span><span class="si">{</span><span class="nb">filter</span><span class="si">}</span><span class="s"> entries in the summary table:  </span><span class="si">{</span><span class="n">is_grating</span><span class="p">.</span><span class="nb">sum</span><span class="p">()</span><span class="si">}</span><span class="s">
"""</span><span class="p">)</span>

</code></pre></div></div>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>('G140M', 'F070LP'): load dja_msaexp_emission_lines_v4.4.g140m-f070lp_spectra.fits

    4667 wavelength bins

    G140M F070LP spectra in the combined table: (4667, 5851)
    G140M F070LP entries in the summary table:  5851

('G235M', 'F170LP'): load dja_msaexp_emission_lines_v4.4.g235m-f170lp_spectra.fits

    3685 wavelength bins

    G235M F170LP spectra in the combined table: (3685, 8000)
    G235M F170LP entries in the summary table:  8000

('G395M', 'F290LP'): load dja_msaexp_emission_lines_v4.4.g395m-f290lp_spectra.fits

    1661 wavelength bins

    G395M F290LP spectra in the combined table: (1661, 13606)
    G395M F290LP entries in the summary table:  13606
</code></pre></div></div>

<h2 id="nn-with-grating-spectra">NN with grating spectra</h2>

<p>Look for grating spectra of sources identified as nearest-neighbors above, matching on the <code class="language-plaintext highlighter-rouge">obsid</code> unique identifier.</p>

<div class="language-python highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="n">nn_objid</span> <span class="o">=</span> <span class="n">tab</span><span class="p">[</span><span class="s">'objid'</span><span class="p">][</span><span class="n">is_prism</span><span class="p">][</span><span class="n">valid_spec</span><span class="p">][</span><span class="n">tr_idx</span><span class="p">]</span>
<span class="c1"># gratings = np.unique(tab['grating'])
</span><span class="n">match_objid</span> <span class="o">=</span> <span class="n">np</span><span class="p">.</span><span class="n">isin</span><span class="p">(</span><span class="n">tab</span><span class="p">[</span><span class="s">'objid'</span><span class="p">],</span> <span class="n">nn_objid</span><span class="p">)</span> <span class="o">&amp;</span> <span class="p">(</span><span class="n">tab</span><span class="p">[</span><span class="s">'line_ha_err'</span><span class="p">]</span> <span class="o">&gt;</span> <span class="mi">0</span><span class="p">)</span>
<span class="n">_</span> <span class="o">=</span> <span class="n">utils</span><span class="p">.</span><span class="n">Unique</span><span class="p">(</span><span class="n">tab</span><span class="p">[</span><span class="s">'grating'</span><span class="p">][</span><span class="n">match_objid</span><span class="p">])</span>
<span class="n">_</span> <span class="o">=</span> <span class="n">utils</span><span class="p">.</span><span class="n">Unique</span><span class="p">(</span><span class="n">tab</span><span class="p">[</span><span class="s">'filter'</span><span class="p">][</span><span class="n">match_objid</span><span class="p">])</span>
</code></pre></div></div>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>   N  value     
====  ==========
   2  G140M     
   2  G235H     
   8  G235M     
   3  G395H     
  10  G395M     
   N  value     
====  ==========
   2  F070LP    
  10  F170LP    
  13  F290LP    
</code></pre></div></div>

<div class="language-python highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kn">from</span> <span class="nn">scipy.stats</span> <span class="kn">import</span> <span class="n">binned_statistic</span>
<span class="kn">import</span> <span class="nn">msaexp.utils</span>

<span class="n">fig</span><span class="p">,</span> <span class="n">axes</span> <span class="o">=</span> <span class="n">plt</span><span class="p">.</span><span class="n">subplots</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span><span class="mi">3</span><span class="p">,</span><span class="n">figsize</span><span class="o">=</span><span class="p">(</span><span class="mi">10</span><span class="p">,</span><span class="mi">5</span><span class="p">),</span> <span class="n">width_ratios</span><span class="o">=</span><span class="p">[</span><span class="mf">0.6</span><span class="p">,</span> <span class="mf">0.3</span><span class="p">,</span> <span class="mi">1</span><span class="p">],</span> <span class="n">sharey</span><span class="o">=</span><span class="bp">True</span><span class="p">)</span>

<span class="n">weighted_mean</span> <span class="o">=</span> <span class="p">{}</span>

<span class="k">for</span> <span class="n">key</span> <span class="ow">in</span> <span class="n">grating_spectra</span><span class="p">:</span>
    <span class="n">grating</span><span class="p">,</span> <span class="nb">filter</span> <span class="o">=</span> <span class="n">key</span>

    <span class="k">if</span> <span class="n">grating</span> <span class="o">==</span> <span class="s">'G140M'</span><span class="p">:</span>
        <span class="k">continue</span>
        
    <span class="n">full_spec</span> <span class="o">=</span> <span class="p">[]</span>

    <span class="n">in_grating</span> <span class="o">=</span> <span class="p">(</span><span class="n">tab</span><span class="p">[</span><span class="s">'grating'</span><span class="p">]</span> <span class="o">==</span> <span class="n">grating</span><span class="p">)</span> <span class="o">&amp;</span> <span class="p">(</span><span class="n">tab</span><span class="p">[</span><span class="s">'filter'</span><span class="p">]</span> <span class="o">==</span> <span class="nb">filter</span><span class="p">)</span>

    <span class="c1"># Sample with grating spectra that cover H-alpha
</span>    <span class="n">nn_with_grating</span> <span class="o">=</span> <span class="n">np</span><span class="p">.</span><span class="n">isin</span><span class="p">(</span><span class="n">tab</span><span class="p">[</span><span class="s">'objid'</span><span class="p">][</span><span class="n">in_grating</span><span class="p">],</span> <span class="n">nn_objid</span><span class="p">)</span>
    <span class="n">nn_with_grating</span> <span class="o">&amp;=</span> <span class="p">(</span><span class="n">tab</span><span class="p">[</span><span class="s">'line_ha_err'</span><span class="p">][</span><span class="n">in_grating</span><span class="p">]</span> <span class="o">&gt;</span> <span class="mi">0</span><span class="p">)</span> <span class="o">|</span> <span class="p">(</span><span class="n">tab</span><span class="p">[</span><span class="s">'line_oiii_5007_err'</span><span class="p">][</span><span class="n">in_grating</span><span class="p">]</span> <span class="o">&gt;</span> <span class="mi">0</span><span class="p">)</span>

    <span class="k">if</span> <span class="n">nn_with_grating</span><span class="p">.</span><span class="nb">sum</span><span class="p">()</span> <span class="o">==</span> <span class="mi">0</span><span class="p">:</span>
        <span class="k">continue</span>

    <span class="k">print</span><span class="p">(</span><span class="sa">f</span><span class="s">'</span><span class="si">{</span><span class="n">grating</span><span class="si">}</span><span class="s">-</span><span class="si">{</span><span class="nb">filter</span><span class="si">}</span><span class="s"> N=</span><span class="si">{</span><span class="n">nn_with_grating</span><span class="p">.</span><span class="nb">sum</span><span class="p">()</span><span class="si">}</span><span class="s">'</span><span class="p">)</span>
    
    <span class="k">for</span> <span class="n">j</span> <span class="ow">in</span> <span class="n">np</span><span class="p">.</span><span class="n">where</span><span class="p">(</span><span class="n">nn_with_grating</span><span class="p">)[</span><span class="mi">0</span><span class="p">]:</span>

        <span class="n">wrest_j</span> <span class="o">=</span> <span class="n">grating_spectra</span><span class="p">[</span><span class="n">grating</span><span class="p">,</span> <span class="nb">filter</span><span class="p">][</span><span class="s">'wave'</span><span class="p">]</span> <span class="o">/</span> <span class="p">(</span><span class="mi">1</span> <span class="o">+</span> <span class="n">tab</span><span class="p">[</span><span class="s">'z_best'</span><span class="p">][</span><span class="n">in_grating</span><span class="p">][</span><span class="n">j</span><span class="p">])</span>
        
        <span class="n">flux_j</span> <span class="o">=</span> <span class="n">grating_spectra</span><span class="p">[</span><span class="n">grating</span><span class="p">,</span> <span class="nb">filter</span><span class="p">][</span><span class="s">'flux'</span><span class="p">][:,</span><span class="n">j</span><span class="p">]</span> <span class="o">*</span> <span class="mi">1</span>
        <span class="n">err_j</span> <span class="o">=</span> <span class="n">grating_spectra</span><span class="p">[</span><span class="n">grating</span><span class="p">,</span> <span class="nb">filter</span><span class="p">][</span><span class="s">'err'</span><span class="p">][:,</span><span class="n">j</span><span class="p">]</span> <span class="o">*</span> <span class="mi">1</span> 
        
        <span class="n">wsub</span> <span class="o">=</span> <span class="p">(</span><span class="n">wrest_j</span> <span class="o">&gt;</span> <span class="mf">0.64</span><span class="p">)</span> <span class="o">&amp;</span> <span class="p">(</span><span class="n">wrest_j</span> <span class="o">&lt;</span> <span class="mf">0.68</span><span class="p">)</span> <span class="o">&amp;</span> <span class="p">(</span><span class="n">err_j</span> <span class="o">&gt;</span> <span class="mi">0</span><span class="p">)</span>
        <span class="n">renorm_flux</span> <span class="o">=</span> <span class="n">np</span><span class="p">.</span><span class="n">median</span><span class="p">(</span><span class="n">flux_j</span><span class="p">[</span><span class="n">wsub</span><span class="p">])</span>
        
        <span class="k">if</span> <span class="mi">0</span><span class="p">:</span>
            <span class="c1"># Normalize to prism i band
</span>            <span class="n">k</span> <span class="o">=</span> <span class="n">is_prism</span> <span class="o">&amp;</span> <span class="p">(</span><span class="n">tab</span><span class="p">[</span><span class="s">'objid'</span><span class="p">]</span> <span class="o">==</span> <span class="n">tab</span><span class="p">[</span><span class="s">'objid'</span><span class="p">][</span><span class="n">in_grating</span><span class="p">][</span><span class="n">j</span><span class="p">])</span>
            <span class="n">renorm_flux</span> <span class="o">=</span> <span class="n">np</span><span class="p">.</span><span class="n">nanmean</span><span class="p">(</span><span class="n">tab</span><span class="p">[</span><span class="s">'rest_415_flux'</span><span class="p">][</span><span class="n">k</span><span class="p">])</span>
        
        <span class="c1"># print(renorm_flux, wsub.sum())
</span>        <span class="c1"># renorm_flux = 1.0
</span>        
        <span class="n">flux_j</span> <span class="o">/=</span> <span class="n">renorm_flux</span>
        <span class="n">err_j</span> <span class="o">/=</span> <span class="n">renorm_flux</span>
        
        <span class="n">flux_j</span><span class="p">[</span><span class="n">err_j</span> <span class="o">&lt;=</span> <span class="mi">0</span><span class="p">]</span> <span class="o">=</span> <span class="n">np</span><span class="p">.</span><span class="n">nan</span>
        <span class="n">err_j</span><span class="p">[</span><span class="n">err_j</span> <span class="o">&lt;=</span> <span class="mi">0</span><span class="p">]</span> <span class="o">=</span> <span class="n">np</span><span class="p">.</span><span class="n">nan</span>

        <span class="c1"># if np.nanmedian(err_j[wsub]) &gt; 0.5:
</span>        <span class="c1">#     # Skip low S/N
</span>        <span class="c1">#     continue
</span>
        <span class="n">full_spec</span><span class="p">.</span><span class="n">append</span><span class="p">([</span><span class="n">wrest_j</span><span class="p">,</span> <span class="n">flux_j</span><span class="p">,</span> <span class="n">err_j</span><span class="p">])</span>
        
        <span class="k">for</span> <span class="n">ax</span> <span class="ow">in</span> <span class="n">axes</span><span class="p">:</span>
            <span class="n">ax</span><span class="p">.</span><span class="n">step</span><span class="p">(</span>
                <span class="n">wrest_j</span><span class="p">,</span>
                <span class="n">flux_j</span><span class="p">,</span>
                <span class="n">alpha</span><span class="o">=</span><span class="mf">0.02</span><span class="p">,</span>
                <span class="n">zorder</span><span class="o">=-</span><span class="mi">1</span><span class="p">,</span>
            <span class="p">)</span>

    <span class="c1"># Bin by grating
</span>    <span class="n">full_spec</span> <span class="o">=</span> <span class="n">np</span><span class="p">.</span><span class="n">array</span><span class="p">(</span><span class="n">full_spec</span><span class="p">)</span>
    <span class="n">target_R</span> <span class="o">=</span> <span class="mi">1500</span>
    <span class="n">wbin</span> <span class="o">=</span> <span class="mi">10</span><span class="o">**</span><span class="n">np</span><span class="p">.</span><span class="n">arange</span><span class="p">(</span><span class="o">*</span><span class="n">np</span><span class="p">.</span><span class="n">log10</span><span class="p">([</span><span class="mf">0.3</span><span class="p">,</span> <span class="mf">1.0</span><span class="p">]),</span> <span class="mf">1.</span><span class="o">/</span><span class="n">target_R</span><span class="o">/</span><span class="n">np</span><span class="p">.</span><span class="n">log</span><span class="p">(</span><span class="mi">10</span><span class="p">))</span>
    <span class="n">wbin_edge</span> <span class="o">=</span> <span class="n">msaexp</span><span class="p">.</span><span class="n">utils</span><span class="p">.</span><span class="n">array_to_bin_edges</span><span class="p">(</span><span class="n">wbin</span><span class="p">)</span>

    <span class="n">wht</span> <span class="o">=</span> <span class="mf">1.</span> <span class="o">/</span> <span class="p">(</span><span class="n">full_spec</span><span class="p">[:,</span><span class="mi">2</span><span class="p">,:]</span><span class="o">**</span><span class="mi">2</span> <span class="o">+</span> <span class="p">(</span><span class="mf">0.1</span><span class="o">*</span><span class="n">full_spec</span><span class="p">[:,</span><span class="mi">1</span><span class="p">,:])</span><span class="o">**</span><span class="mi">2</span><span class="p">)</span>
    
    <span class="n">num</span> <span class="o">=</span> <span class="n">binned_statistic</span><span class="p">(</span>
        <span class="n">full_spec</span><span class="p">[:,</span><span class="mi">0</span><span class="p">,:].</span><span class="n">flatten</span><span class="p">(),</span>
        <span class="p">(</span><span class="n">full_spec</span><span class="p">[:,</span><span class="mi">1</span><span class="p">,:]</span> <span class="o">*</span> <span class="n">wht</span><span class="p">).</span><span class="n">flatten</span><span class="p">(),</span>
        <span class="n">bins</span><span class="o">=</span><span class="n">wbin_edge</span><span class="p">,</span>
        <span class="n">statistic</span><span class="o">=</span><span class="n">np</span><span class="p">.</span><span class="n">nansum</span>
    <span class="p">)</span>
    
    <span class="n">denom</span> <span class="o">=</span> <span class="n">binned_statistic</span><span class="p">(</span>
        <span class="n">full_spec</span><span class="p">[:,</span><span class="mi">0</span><span class="p">,:].</span><span class="n">flatten</span><span class="p">(),</span>
        <span class="n">wht</span><span class="p">.</span><span class="n">flatten</span><span class="p">(),</span>
        <span class="n">bins</span><span class="o">=</span><span class="n">wbin_edge</span><span class="p">,</span>
        <span class="n">statistic</span><span class="o">=</span><span class="n">np</span><span class="p">.</span><span class="n">nansum</span>
    <span class="p">)</span>

    <span class="n">wflux</span> <span class="o">=</span> <span class="n">num</span><span class="p">.</span><span class="n">statistic</span> <span class="o">/</span> <span class="n">denom</span><span class="p">.</span><span class="n">statistic</span>
    <span class="n">werr</span> <span class="o">=</span> <span class="n">np</span><span class="p">.</span><span class="n">sqrt</span><span class="p">(</span><span class="mf">1.</span><span class="o">/</span><span class="n">denom</span><span class="p">.</span><span class="n">statistic</span><span class="p">)</span>
    
    <span class="n">weighted_mean</span><span class="p">[</span><span class="n">key</span><span class="p">]</span> <span class="o">=</span> <span class="p">(</span><span class="n">wbin</span><span class="p">,</span> <span class="n">wflux</span><span class="p">,</span> <span class="n">werr</span><span class="p">)</span>
    
    <span class="c1"># optionally trim low S/N
</span>    <span class="n">trim</span> <span class="o">=</span> <span class="n">wflux</span> <span class="o">&gt;</span> <span class="mi">5</span> <span class="o">*</span> <span class="n">werr</span>
    
    <span class="k">for</span> <span class="n">ax</span> <span class="ow">in</span> <span class="n">axes</span><span class="p">:</span>
        <span class="n">ax</span><span class="p">.</span><span class="n">step</span><span class="p">(</span><span class="n">wbin</span><span class="p">[</span><span class="n">trim</span><span class="p">],</span> <span class="n">wflux</span><span class="p">[</span><span class="n">trim</span><span class="p">],</span> <span class="n">color</span><span class="o">=</span><span class="s">'k'</span><span class="p">,</span> <span class="n">alpha</span><span class="o">=</span><span class="mf">0.3</span><span class="p">)</span>

<span class="n">axes</span><span class="p">[</span><span class="mi">0</span><span class="p">].</span><span class="n">set_xlim</span><span class="p">(</span><span class="mf">0.31</span><span class="p">,</span> <span class="mf">0.64</span><span class="p">)</span>
<span class="n">axes</span><span class="p">[</span><span class="mi">1</span><span class="p">].</span><span class="n">set_xlim</span><span class="p">(</span><span class="mf">0.648</span><span class="p">,</span> <span class="mf">0.665</span><span class="p">)</span>
<span class="n">axes</span><span class="p">[</span><span class="mi">2</span><span class="p">].</span><span class="n">set_xlim</span><span class="p">(</span><span class="mf">0.62</span><span class="p">,</span> <span class="mf">0.96</span><span class="p">)</span>
<span class="n">ax</span><span class="p">.</span><span class="n">set_ylim</span><span class="p">(</span><span class="o">*</span><span class="p">(</span><span class="n">np</span><span class="p">.</span><span class="n">array</span><span class="p">([</span><span class="o">-</span><span class="mf">0.03</span><span class="p">,</span> <span class="mf">1.02</span><span class="p">])</span><span class="o">*</span><span class="mi">2</span><span class="p">))</span>

<span class="n">axes</span><span class="p">[</span><span class="mi">0</span><span class="p">].</span><span class="n">set_ylabel</span><span class="p">(</span><span class="sa">r</span><span class="s">'normalized $f_\nu$'</span><span class="p">)</span>
<span class="n">axes</span><span class="p">[</span><span class="mi">1</span><span class="p">].</span><span class="n">set_xlabel</span><span class="p">(</span><span class="sa">r</span><span class="s">'$\lambda_\mathrm{rest}$'</span><span class="p">)</span>

<span class="k">for</span> <span class="n">ax</span> <span class="ow">in</span> <span class="n">axes</span><span class="p">:</span>
    <span class="n">ax</span><span class="p">.</span><span class="n">grid</span><span class="p">()</span>

<span class="n">fig</span><span class="p">.</span><span class="n">tight_layout</span><span class="p">(</span><span class="n">pad</span><span class="o">=</span><span class="mi">1</span><span class="p">)</span>


</code></pre></div></div>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>G235M-F170LP N=9
G395M-F290LP N=10
</code></pre></div></div>

<p><img src="/dja/assets/post_files/2025-05-01-nirspec-merged-table-v4_files/nirspec-merged-table-v4_58_1.png" alt="png" /></p>

<h1 id="grating-line-fluxes">Grating line fluxes</h1>

<p>Do some simple scatter plots of line ratios</p>

<h2 id="simple-oiii-49595007">Simple OIII 4959/5007</h2>

<div class="language-python highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="n">has_line</span> <span class="o">=</span> <span class="p">(</span>
    <span class="p">(</span><span class="n">tab</span><span class="p">[</span><span class="s">'line_oiii_5007'</span><span class="p">]</span> <span class="o">&gt;</span> <span class="mi">5</span> <span class="o">*</span> <span class="n">tab</span><span class="p">[</span><span class="s">'line_oiii_5007_err'</span><span class="p">])</span>
    <span class="o">&amp;</span> <span class="p">(</span><span class="n">tab</span><span class="p">[</span><span class="s">'line_oiii_4959_err'</span><span class="p">]</span> <span class="o">&gt;</span> <span class="mi">0</span><span class="p">)</span>
    <span class="o">&amp;</span> <span class="p">(</span><span class="n">tab</span><span class="p">[</span><span class="s">'grade'</span><span class="p">]</span> <span class="o">==</span> <span class="mi">3</span><span class="p">)</span>
    <span class="o">&amp;</span> <span class="n">np</span><span class="p">.</span><span class="n">isin</span><span class="p">(</span><span class="n">tab</span><span class="p">[</span><span class="s">'grating'</span><span class="p">],</span> <span class="p">[</span><span class="s">'G140M'</span><span class="p">,</span> <span class="s">'G235M'</span><span class="p">,</span> <span class="s">'G395M'</span><span class="p">])</span>
<span class="p">)</span>
<span class="k">print</span><span class="p">(</span><span class="sa">f</span><span class="s">'OIII in grating spectra: </span><span class="si">{</span><span class="n">has_line</span><span class="p">.</span><span class="nb">sum</span><span class="p">()</span><span class="si">}</span><span class="s">'</span><span class="p">)</span>

<span class="n">ung</span> <span class="o">=</span> <span class="n">utils</span><span class="p">.</span><span class="n">Unique</span><span class="p">(</span><span class="n">tab</span><span class="p">[</span><span class="s">'grating'</span><span class="p">],</span> <span class="n">verbose</span><span class="o">=</span><span class="bp">False</span><span class="p">)</span>

<span class="n">fig</span><span class="p">,</span> <span class="n">ax</span> <span class="o">=</span> <span class="n">plt</span><span class="p">.</span><span class="n">subplots</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span><span class="mi">1</span><span class="p">,</span><span class="n">figsize</span><span class="o">=</span><span class="p">(</span><span class="mi">10</span><span class="p">,</span><span class="mi">5</span><span class="p">))</span>

<span class="k">for</span> <span class="n">grating</span> <span class="ow">in</span> <span class="n">ung</span><span class="p">.</span><span class="n">values</span><span class="p">:</span>
    <span class="n">test</span> <span class="o">=</span> <span class="n">has_line</span> <span class="o">&amp;</span> <span class="n">ung</span><span class="p">[</span><span class="n">grating</span><span class="p">]</span>
    <span class="k">if</span> <span class="n">test</span><span class="p">.</span><span class="nb">sum</span><span class="p">()</span> <span class="o">==</span> <span class="mi">0</span><span class="p">:</span>
        <span class="k">continue</span>
        
    <span class="n">ax</span><span class="p">.</span><span class="n">scatter</span><span class="p">(</span>
        <span class="n">tab</span><span class="p">[</span><span class="s">'zrf'</span><span class="p">][</span><span class="n">test</span><span class="p">],</span> <span class="p">(</span><span class="n">tab</span><span class="p">[</span><span class="s">'line_oiii_4959'</span><span class="p">]</span> <span class="o">/</span> <span class="n">tab</span><span class="p">[</span><span class="s">'line_oiii_5007'</span><span class="p">])[</span><span class="n">test</span><span class="p">],</span>
        <span class="n">alpha</span><span class="o">=</span><span class="mf">0.1</span><span class="p">,</span>
        <span class="n">label</span><span class="o">=</span><span class="n">grating</span><span class="p">,</span>
    <span class="p">)</span>

<span class="n">ax</span><span class="p">.</span><span class="n">hlines</span><span class="p">(</span><span class="mf">1.</span><span class="o">/</span><span class="mf">2.98</span><span class="p">,</span> <span class="o">*</span><span class="n">ax</span><span class="p">.</span><span class="n">get_xlim</span><span class="p">(),</span> <span class="n">color</span><span class="o">=</span><span class="s">'k'</span><span class="p">,</span> <span class="n">ls</span><span class="o">=</span><span class="s">":"</span><span class="p">,</span> <span class="n">label</span><span class="o">=</span><span class="s">"OIII 5007/4959 = 2.98"</span><span class="p">)</span>

<span class="n">ax</span><span class="p">.</span><span class="n">legend</span><span class="p">(</span><span class="n">loc</span><span class="o">=</span><span class="s">'upper left'</span><span class="p">)</span>
<span class="n">ax</span><span class="p">.</span><span class="n">set_ylim</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="mi">1</span><span class="p">)</span>
<span class="n">ax</span><span class="p">.</span><span class="n">grid</span><span class="p">()</span>

</code></pre></div></div>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>OIII in grating spectra: 7040
</code></pre></div></div>

<p><img src="/dja/assets/post_files/2025-05-01-nirspec-merged-table-v4_files/nirspec-merged-table-v4_60_1.png" alt="png" /></p>

<h2 id="stellar-mass-vs-grating-nii--halpha">Stellar mass vs grating [NII] / H$\alpha$</h2>

<p>Rough tracer of the mass-metallicity relation.</p>

<div class="language-python highlighter-rouge"><div class="highlight"><pre class="highlight"><code>
<span class="n">dz</span> <span class="o">=</span> <span class="n">np</span><span class="p">.</span><span class="nb">abs</span><span class="p">(</span><span class="n">tab</span><span class="p">[</span><span class="s">'zrf'</span><span class="p">]</span> <span class="o">-</span> <span class="n">tab</span><span class="p">[</span><span class="s">'z_phot'</span><span class="p">])</span> <span class="o">/</span> <span class="p">(</span><span class="mi">1</span><span class="o">+</span><span class="n">tab</span><span class="p">[</span><span class="s">'zrf'</span><span class="p">])</span>

<span class="n">has_line</span> <span class="o">=</span> <span class="p">(</span>
    <span class="p">(</span><span class="n">tab</span><span class="p">[</span><span class="s">'line_ha'</span><span class="p">]</span> <span class="o">&gt;</span> <span class="mi">3</span> <span class="o">*</span> <span class="n">tab</span><span class="p">[</span><span class="s">'line_ha_err'</span><span class="p">])</span>
    <span class="o">&amp;</span> <span class="p">(</span><span class="n">tab</span><span class="p">[</span><span class="s">'line_nii_6584_err'</span><span class="p">]</span> <span class="o">&gt;</span> <span class="mi">0</span><span class="p">)</span>
    <span class="o">&amp;</span> <span class="p">(</span><span class="n">tab</span><span class="p">[</span><span class="s">'grade'</span><span class="p">]</span> <span class="o">==</span> <span class="mi">3</span><span class="p">)</span>
    <span class="o">&amp;</span> <span class="n">np</span><span class="p">.</span><span class="n">isin</span><span class="p">(</span><span class="n">tab</span><span class="p">[</span><span class="s">'grating'</span><span class="p">],</span> <span class="p">[</span><span class="s">'G140M'</span><span class="p">,</span> <span class="s">'G235M'</span><span class="p">,</span> <span class="s">'G395M'</span><span class="p">])</span>
    <span class="o">&amp;</span> <span class="p">(</span><span class="n">np</span><span class="p">.</span><span class="nb">abs</span><span class="p">(</span><span class="n">dz</span><span class="p">)</span> <span class="o">&lt;</span> <span class="mf">0.1</span><span class="p">)</span>
<span class="p">)</span>

<span class="k">print</span><span class="p">(</span><span class="sa">f</span><span class="s">'Halpha in grating spectra: </span><span class="si">{</span><span class="n">has_line</span><span class="p">.</span><span class="nb">sum</span><span class="p">()</span><span class="si">}</span><span class="s">'</span><span class="p">)</span>

<span class="n">fig</span><span class="p">,</span> <span class="n">axes</span> <span class="o">=</span> <span class="n">plt</span><span class="p">.</span><span class="n">subplots</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span><span class="mi">2</span><span class="p">,</span><span class="n">figsize</span><span class="o">=</span><span class="p">(</span><span class="mi">8</span><span class="p">,</span> <span class="mi">5</span><span class="p">),</span> <span class="n">sharey</span><span class="o">=</span><span class="bp">True</span><span class="p">)</span>

<span class="n">scale_func</span> <span class="o">=</span> <span class="n">np</span><span class="p">.</span><span class="n">arcsinh</span>

<span class="n">kws</span> <span class="o">=</span> <span class="nb">dict</span><span class="p">(</span>
    <span class="n">c</span><span class="o">=</span><span class="n">np</span><span class="p">.</span><span class="n">log</span><span class="p">(</span><span class="mi">1</span><span class="o">+</span><span class="n">tab</span><span class="p">[</span><span class="s">'zrf'</span><span class="p">][</span><span class="n">has_line</span><span class="p">]),</span>
    <span class="n">cmap</span><span class="o">=</span><span class="s">'rainbow'</span><span class="p">,</span>
    <span class="n">vmin</span><span class="o">=</span><span class="n">np</span><span class="p">.</span><span class="n">log</span><span class="p">(</span><span class="mi">1</span><span class="o">+</span><span class="mf">1.0</span><span class="p">),</span> <span class="n">vmax</span><span class="o">=</span><span class="n">np</span><span class="p">.</span><span class="n">log</span><span class="p">(</span><span class="mi">1</span><span class="o">+</span><span class="mi">7</span><span class="p">),</span>
    <span class="n">alpha</span><span class="o">=</span><span class="mf">0.1</span>
<span class="p">)</span>

<span class="n">axes</span><span class="p">[</span><span class="mi">0</span><span class="p">].</span><span class="n">scatter</span><span class="p">(</span>
    <span class="n">np</span><span class="p">.</span><span class="n">log10</span><span class="p">(</span><span class="n">tab</span><span class="p">[</span><span class="s">'phot_mass'</span><span class="p">])[</span><span class="n">has_line</span><span class="p">],</span>
    <span class="n">scale_func</span><span class="p">(</span><span class="n">tab</span><span class="p">[</span><span class="s">'line_nii_6584'</span><span class="p">]</span> <span class="o">/</span> <span class="n">tab</span><span class="p">[</span><span class="s">'line_ha'</span><span class="p">])[</span><span class="n">has_line</span><span class="p">],</span>
    <span class="o">**</span><span class="n">kws</span>
<span class="p">)</span>

<span class="n">axes</span><span class="p">[</span><span class="mi">1</span><span class="p">].</span><span class="n">scatter</span><span class="p">(</span>
    <span class="n">tab</span><span class="p">[</span><span class="s">'zrf'</span><span class="p">][</span><span class="n">has_line</span><span class="p">],</span>
    <span class="n">scale_func</span><span class="p">(</span><span class="n">tab</span><span class="p">[</span><span class="s">'line_nii_6584'</span><span class="p">]</span> <span class="o">/</span> <span class="n">tab</span><span class="p">[</span><span class="s">'line_ha'</span><span class="p">])[</span><span class="n">has_line</span><span class="p">],</span>
    <span class="o">**</span><span class="n">kws</span>
<span class="p">)</span>

<span class="n">ax</span> <span class="o">=</span> <span class="n">axes</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span>
<span class="n">yt</span> <span class="o">=</span> <span class="p">[</span><span class="o">-</span><span class="mf">0.5</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mf">0.5</span><span class="p">]</span> <span class="o">+</span> <span class="nb">list</span><span class="p">(</span><span class="nb">range</span><span class="p">(</span><span class="mi">6</span><span class="p">))[</span><span class="mi">1</span><span class="p">:]</span>
<span class="n">ax</span><span class="p">.</span><span class="n">set_yticks</span><span class="p">(</span><span class="n">scale_func</span><span class="p">(</span><span class="n">yt</span><span class="p">))</span>
<span class="n">ax</span><span class="p">.</span><span class="n">set_yticklabels</span><span class="p">(</span><span class="n">yt</span><span class="p">)</span>

<span class="n">ax</span><span class="p">.</span><span class="n">set_ylim</span><span class="p">(</span><span class="o">*</span><span class="n">scale_func</span><span class="p">([</span><span class="o">-</span><span class="mf">0.6</span><span class="p">,</span> <span class="mi">4</span><span class="p">]))</span>

<span class="n">ax</span><span class="p">.</span><span class="n">set_xlim</span><span class="p">(</span><span class="mf">5.9</span><span class="p">,</span> <span class="mf">11.9</span><span class="p">)</span>
<span class="n">ax</span><span class="p">.</span><span class="n">set_xlabel</span><span class="p">(</span><span class="sa">r</span><span class="s">'$\log M/M_\odot$ (from photometry)'</span><span class="p">)</span>
<span class="n">ax</span><span class="p">.</span><span class="n">set_ylabel</span><span class="p">(</span><span class="sa">r</span><span class="s">'[NII]$_{6584}$ / H$\alpha$'</span><span class="p">)</span>
<span class="n">axes</span><span class="p">[</span><span class="mi">1</span><span class="p">].</span><span class="n">set_xlabel</span><span class="p">(</span><span class="s">'redshift'</span><span class="p">)</span>

<span class="k">for</span> <span class="n">ax</span> <span class="ow">in</span> <span class="n">axes</span><span class="p">:</span>
    <span class="n">ax</span><span class="p">.</span><span class="n">grid</span><span class="p">()</span>

<span class="n">fig</span><span class="p">.</span><span class="n">tight_layout</span><span class="p">(</span><span class="n">pad</span><span class="o">=</span><span class="mi">1</span><span class="p">)</span>

</code></pre></div></div>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>Halpha in grating spectra: 6476
</code></pre></div></div>

<p><img src="/dja/assets/post_files/2025-05-01-nirspec-merged-table-v4_files/nirspec-merged-table-v4_62_1.png" alt="png" /></p>

<h1 id="thumbnail-api">Thumbnail API</h1>

<p>The DJA thumbnail API can create thumbnail figures and FITS cutouts of a requested set of filters at a particular coordinate.M</p>

<div class="language-python highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kn">from</span> <span class="nn">IPython.display</span> <span class="kn">import</span> <span class="n">Image</span>
<span class="k">print</span><span class="p">(</span><span class="n">RGB_URL</span><span class="p">.</span><span class="nb">format</span><span class="p">(</span><span class="o">**</span><span class="n">row</span><span class="p">))</span>
<span class="n">Image</span><span class="p">(</span><span class="n">url</span><span class="o">=</span><span class="n">RGB_URL</span><span class="p">.</span><span class="nb">format</span><span class="p">(</span><span class="o">**</span><span class="n">row</span><span class="p">),</span> <span class="n">height</span><span class="o">=</span><span class="mi">300</span><span class="p">,</span> <span class="n">width</span><span class="o">=</span><span class="mi">300</span><span class="p">)</span>

</code></pre></div></div>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>https://grizli-cutout.herokuapp.com/thumb?size=1.5&amp;scl=2.0&amp;asinh=True&amp;filters=f115w-clear%2Cf277w-clear%2Cf444w-clear&amp;rgb_scl=1.5%2C0.74%2C1.3&amp;pl=2&amp;coord=214.91554591%2C52.94901831
</code></pre></div></div>

<p><img src="https://grizli-cutout.herokuapp.com/thumb?size=1.5&amp;scl=2.0&amp;asinh=True&amp;filters=f115w-clear%2Cf277w-clear%2Cf444w-clear&amp;rgb_scl=1.5%2C0.74%2C1.3&amp;pl=2&amp;coord=214.91554591%2C52.94901831" width="300" height="300" /></p>

<div class="language-python highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="k">print</span><span class="p">(</span><span class="n">SLIT_URL</span><span class="p">.</span><span class="nb">format</span><span class="p">(</span><span class="o">**</span><span class="n">row</span><span class="p">))</span>
<span class="n">Image</span><span class="p">(</span><span class="n">url</span><span class="o">=</span><span class="n">SLIT_URL</span><span class="p">.</span><span class="nb">format</span><span class="p">(</span><span class="o">**</span><span class="n">row</span><span class="p">),</span> <span class="n">height</span><span class="o">=</span><span class="mi">300</span><span class="p">,</span> <span class="n">width</span><span class="o">=</span><span class="mi">300</span><span class="p">)</span>
</code></pre></div></div>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>https://grizli-cutout.herokuapp.com/thumb?size=1.5&amp;scl=4.0&amp;invert=True&amp;filters=f444w-clear&amp;rgb_scl=1.5%2C0.74%2C1.3&amp;pl=2&amp;coord=214.91554591%2C52.94901831&amp;nirspec=True&amp;dpi_scale=6&amp;nrs_lw=0.5&amp;nrs_alpha=0.8&amp;metafile=jw04233006001
</code></pre></div></div>

<p><img src="https://grizli-cutout.herokuapp.com/thumb?size=1.5&amp;scl=4.0&amp;invert=True&amp;filters=f444w-clear&amp;rgb_scl=1.5%2C0.74%2C1.3&amp;pl=2&amp;coord=214.91554591%2C52.94901831&amp;nirspec=True&amp;dpi_scale=6&amp;nrs_lw=0.5&amp;nrs_alpha=0.8&amp;metafile=jw04233006001" width="300" height="300" /></p>]]></content><author><name>Gabriel Brammer</name></author><category term="spectroscopy" /><category term="nirspec" /><category term="release" /><category term="catalog" /><summary type="html"><![CDATA[spectroscopy nirspec release catalog (This page is auto-generated from the Jupyter notebook nirspec-merged-table-v4.ipynb.)]]></summary></entry><entry><title type="html">SourceExtractor++ Morphological Catalogs</title><link href="https://dawn-cph.github.io/dja/blog/2024/08/16/morphological-data/" rel="alternate" type="text/html" title="SourceExtractor++ Morphological Catalogs" /><published>2024-08-16T11:36:32+00:00</published><updated>2024-08-16T11:36:32+00:00</updated><id>https://dawn-cph.github.io/dja/blog/2024/08/16/morphological-data</id><content type="html" xml:base="https://dawn-cph.github.io/dja/blog/2024/08/16/morphological-data/"><![CDATA[<p> 
    
    <a class="blog-category" href="/dja/blog/categories/#imaging"> imaging</a>
    
    
        
        <a class="blog-tag" href="/dja/blog/tags/#release"> release</a>
        
        <a class="blog-tag" href="/dja/blog/tags/#catalog"> catalog</a>
        
        <a class="blog-tag" href="/dja/blog/tags/#jwst"> jwst</a>
              
    
</p>

<!-- ![png](/dja/assets/post_files/2024-08-16-morphological-data/data-model-resid.png) -->

<p><img src="/dja/assets/post_files/2024-08-16-morphological-data/data-model-resid.png" alt="data-model-resid" style="width:100%;" /></p>

<p>Here we summarize the files available for morphological data. This extension to the DJA provides valuable morphological data for over 340k galaxies in the following fields :</p>
<ul>
  <li>ceers-full-grizli-v7.2</li>
  <li>gds-grizli-v7.2</li>
  <li>gdn-grizli-v7.3</li>
  <li>primer-uds-north-grizli-v7.2</li>
  <li>primer-uds-south-grizli-v7.2</li>
  <li>primer-cosmos-east-grizli-v7.0</li>
  <li>primer-cosmos-west-grizli-v7.0</li>
</ul>

<p>The morphologies of these galaxies have been measured using both Sérsic and Bulge+Disk model. It made use of <a href="https://github.com/astrorama/SourceXtractorPlusPlus">SourceXtractor++</a> to run the model fitting.</p>

<p>A merged catalog of all of the processed fields is available at <a href="https://s3.amazonaws.com/aurelien-sepp/full-good_morpho-phot.fits.gz">full-good_morpho-phot.fits.gz</a> (1.2 Gb).  The first extension provides the merged DJA photometry and stellar population properties estimated from the photometric redshift fit.  The second extension provides the morphology measurements of the Sersic model fit and the third extension provides parameters of the Bulge+Disk (B+D) morphology fit.</p>

<h1 id="file-extensions">File extensions</h1>

<p>For a given <code class="language-plaintext highlighter-rouge">field</code>, the following files are available:</p>

<ul>
  <li>
    <p><code class="language-plaintext highlighter-rouge">{field}_morpho-phot.fits.gz</code>: <strong>Merged catalogs of DJA photometry, EAZY SED fitting (from the DJA) and SE++ fittings in Sérsic and B+D models.</strong> They are stored in 3 HDUs inside the FITS file (DJA phot+EAZY, Sérsic model, B+D model) where the rows of each table correspond to one another. A <code class="language-plaintext highlighter-rouge">flag</code> column was added in the merged DJA catalog to flag sources non-detected by SE++ (<code class="language-plaintext highlighter-rouge">0</code>), potential artifcats (<code class="language-plaintext highlighter-rouge">1</code>) and low SNR or magnitude above the limiting mag in each field (<code class="language-plaintext highlighter-rouge">3</code>). <strong>Sources considered good for phyiscal study have a <code class="language-plaintext highlighter-rouge">flag</code> value of <code class="language-plaintext highlighter-rouge">2</code>.</strong></p>
  </li>
  <li>
    <p><code class="language-plaintext highlighter-rouge">(model|resid)_{fit}_{field}*.fits.gz</code>: <strong>Model or residual images generated by SE++ with the <code class="language-plaintext highlighter-rouge">fit</code> model for different bands.</strong> They have the exact same WCS as the images on the DJA.</p>
  </li>
  <li>
    <p><code class="language-plaintext highlighter-rouge">{field}*star_psf.psf</code>: <strong>PSFs generated for each field in each filter band using PSFEx</strong>. They made use of a custom star selection to give better results than the native auto-selection from PSFEx. This selection is based on the MU_MAX/MAG_AUTO plane, a method adapted from <a href="https://ui.adsabs.harvard.edu/abs/2007ApJS..172..219L/abstract">Leauthaud et al. 2007, Section 3.6</a>.</p>
  </li>
</ul>

<p>You will also find the following file, non-relative to a specific field:</p>

<ul>
  <li><a href="https://s3.amazonaws.com/aurelien-sepp/ceers-full-grizli-v7.2/catalog/ceers-full-grizli-v7.2_morpho-phot.fits.gz"><code class="language-plaintext highlighter-rouge">full-good_morpho-phot.fits.gz</code></a>: <strong>Joint catalog of all the <code class="language-plaintext highlighter-rouge">morpho-phot</code> catalogs in the different fields, keeping only the good sources (<code class="language-plaintext highlighter-rouge">flag</code> value of <code class="language-plaintext highlighter-rouge">2</code>)</strong>. <em>Useful for plots without having to open every catalog individually</em></li>
</ul>

<h1 id="file-organization">File organization</h1>

<p>All the files for each field are available in links in the table below.</p>

<table>
  <thead>
    <tr>
      <th style="text-align: center">Field</th>
      <th style="text-align: center">Catalog</th>
      <th style="text-align: center">Sérsic images</th>
      <th style="text-align: center">B+D images</th>
      <th style="text-align: center">PSFs</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td style="text-align: center">ceers-full-grizli-v7.2</td>
      <td style="text-align: center"><a href="https://s3.amazonaws.com/aurelien-sepp/ceers-full-grizli-v7.2/catalog/ceers-full-grizli-v7.2_morpho-phot.fits.gz">Catalog</a></td>
      <td style="text-align: center"><a href="https://s3.amazonaws.com/aurelien-sepp/ceers-full-grizli-v7.2/sepp/sersic_rg4/checkimages/index.html">Sérsic</a></td>
      <td style="text-align: center"><a href="https://s3.amazonaws.com/aurelien-sepp/ceers-full-grizli-v7.2/sepp/B%2BD/checkimages/index.html">B+D</a></td>
      <td style="text-align: center"><a href="https://s3.amazonaws.com/aurelien-sepp/ceers-full-grizli-v7.2/psfex/index.html">PSF</a></td>
    </tr>
    <tr>
      <td style="text-align: center">gds-grizli-v7.2</td>
      <td style="text-align: center"><a href="https://s3.amazonaws.com/aurelien-sepp/gds-grizli-v7.2/catalog/gds-grizli-v7.2_morpho-phot.fits.gz">Catalog</a></td>
      <td style="text-align: center"><a href="https://s3.amazonaws.com/aurelien-sepp/gds-grizli-v7.2/sepp/sersic_rg4/checkimages/index.html">Sérsic</a></td>
      <td style="text-align: center"><a href="https://s3.amazonaws.com/aurelien-sepp/gds-grizli-v7.2/sepp/B%2BD/checkimages/index.html">B+D</a></td>
      <td style="text-align: center"><a href="https://s3.amazonaws.com/aurelien-sepp/gds-grizli-v7.2/psfex/index.html">PSF</a></td>
    </tr>
    <tr>
      <td style="text-align: center">gdn-grizli-v7.3</td>
      <td style="text-align: center"><a href="https://s3.amazonaws.com/aurelien-sepp/gdn-grizli-v7.3/catalog/gdn-grizli-v7.3_morpho-phot.fits.gz">Catalog</a></td>
      <td style="text-align: center"><a href="https://s3.amazonaws.com/aurelien-sepp/gdn-grizli-v7.3/sepp/sersic_rg4/checkimages/index.html">Sérsic</a></td>
      <td style="text-align: center"><a href="https://s3.amazonaws.com/aurelien-sepp/gdn-grizli-v7.3/sepp/B%2BD/checkimages/index.html">B+D</a></td>
      <td style="text-align: center"><a href="https://s3.amazonaws.com/aurelien-sepp/gdn-grizli-v7.3/psfex/index.html">PSF</a></td>
    </tr>
    <tr>
      <td style="text-align: center">primer-uds-north-grizli-v7.2</td>
      <td style="text-align: center"><a href="https://s3.amazonaws.com/aurelien-sepp/primer-uds-north-grizli-v7.2/catalog/primer-uds-north-grizli-v7.2_morpho-phot.fits.gz">Catalog</a></td>
      <td style="text-align: center"><a href="https://s3.amazonaws.com/aurelien-sepp/primer-uds-north-grizli-v7.2/sepp/sersic_rg4/checkimages/index.html">Sérsic</a></td>
      <td style="text-align: center"><a href="https://s3.amazonaws.com/aurelien-sepp/primer-uds-north-grizli-v7.2/sepp/B%2BD/checkimages/index.html">B+D</a></td>
      <td style="text-align: center"><a href="https://s3.amazonaws.com/aurelien-sepp/primer-uds-north-grizli-v7.2/psfex/index.html">PSF</a></td>
    </tr>
    <tr>
      <td style="text-align: center">primer-uds-south-grizli-v7.2</td>
      <td style="text-align: center"><a href="https://s3.amazonaws.com/aurelien-sepp/primer-uds-south-grizli-v7.2/catalog/primer-uds-south-grizli-v7.2_morpho-phot.fits.gz">Catalog</a></td>
      <td style="text-align: center"><a href="https://s3.amazonaws.com/aurelien-sepp/primer-uds-south-grizli-v7.2/sepp/sersic_rg4/checkimages/index.html">Sérsic</a></td>
      <td style="text-align: center"><a href="https://s3.amazonaws.com/aurelien-sepp/primer-uds-south-grizli-v7.2/sepp/B%2BD/checkimages/index.html">B+D</a></td>
      <td style="text-align: center"><a href="https://s3.amazonaws.com/aurelien-sepp/primer-uds-south-grizli-v7.2/psfex/index.html">PSF</a></td>
    </tr>
    <tr>
      <td style="text-align: center">primer-cosmos-west-grizli-v7.0</td>
      <td style="text-align: center"><a href="https://s3.amazonaws.com/aurelien-sepp/primer-cosmos-west-grizli-v7.0/catalog/primer-cosmos-west-grizli-v7.0_morpho-phot.fits.gz">Catalog</a></td>
      <td style="text-align: center"><a href="https://s3.amazonaws.com/aurelien-sepp/primer-cosmos-west-grizli-v7.0/sepp/sersic_rg4/checkimages/index.html">Sérsic</a></td>
      <td style="text-align: center"><a href="https://s3.amazonaws.com/aurelien-sepp/primer-cosmos-west-grizli-v7.0/sepp/B%2BD/checkimages/index.html">B+D</a></td>
      <td style="text-align: center"><a href="https://s3.amazonaws.com/aurelien-sepp/primer-cosmos-west-grizli-v7.0/psfex/index.html">PSF</a></td>
    </tr>
    <tr>
      <td style="text-align: center">primer-cosmos-east-grizli-v7.0</td>
      <td style="text-align: center"><a href="https://s3.amazonaws.com/aurelien-sepp/primer-cosmos-east-grizli-v7.0/catalog/primer-cosmos-east-grizli-v7.0_morpho-phot.fits.gz">Catalog</a></td>
      <td style="text-align: center"><a href="https://s3.amazonaws.com/aurelien-sepp/primer-cosmos-east-grizli-v7.0/sepp/sersic_rg4/checkimages/index.html">Sérsic</a></td>
      <td style="text-align: center"><a href="https://s3.amazonaws.com/aurelien-sepp/primer-cosmos-east-grizli-v7.0/sepp/B%2BD/checkimages/index.html">B+D</a></td>
      <td style="text-align: center"><a href="https://s3.amazonaws.com/aurelien-sepp/primer-cosmos-east-grizli-v7.0/psfex/index.html">PSF</a></td>
    </tr>
  </tbody>
</table>

<h1 id="code-and-catalog-creation">Code and catalog creation</h1>

<p>All the code used to create these catalogs can be found in the <a href="https://github.com/AstroAure/DJA-SEpp">DJA-SEpp</a> GitHub repository. It contains:</p>

<ul>
  <li>
    <p>The code of the <a href="https://pypi.org/project/dja-sepp/">dja_sepp</a> package, made and used to generated these catalogs.</p>
  </li>
  <li>Scripts to:
    <ul>
      <li>run PSFEx on the images available on the DJA to generated empirical PSFs,</li>
      <li>tile the images for SourceXtractor++,</li>
      <li>run SourceXtractor++,</li>
      <li>perform these steps autonomously on AWS EC2 instances.</li>
    </ul>
  </li>
  <li>Notebooks to:
    <ul>
      <li>run locally PSFEx and SourceXtractor++,</li>
      <li>merge the tiled catalogs and images generated by SourceXtractor++,</li>
      <li>merge the morphological catalogs generated by SourceXtractor++ with photometric catalogs from the DJA,</li>
      <li>create plots to analyze the resulting catalogs,</li>
      <li>look at specific sources.</li>
    </ul>
  </li>
</ul>

<p>The <a href="https://github.com/AstroAure/DJA-SEpp?tab=readme-ov-file#readme">README</a> file in the GitHub repository presents the workflow to run the steps used for this release. It can be used to perform this morphological study on different fields available on the DJA, or be adapated to different needs.</p>

<h1 id="completeness">Completeness</h1>

<p>The following table presents the galaxies whose morphology has been measured in the different fields used for this release.</p>

<table>
  <thead>
    <tr>
      <th style="text-align: center">Field</th>
      <th style="text-align: center">DJA</th>
      <th style="text-align: center">Sérsic</th>
      <th style="text-align: center">Bulge+Disk</th>
      <th style="text-align: center">Both</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td style="text-align: center"><strong>CEERS</strong></td>
      <td style="text-align: center">67035</td>
      <td style="text-align: center">52604 (78.5%)</td>
      <td style="text-align: center">59046 (88.1%)</td>
      <td style="text-align: center">51329 (76.6%)</td>
    </tr>
    <tr>
      <td style="text-align: center"><strong>GOODS-S</strong></td>
      <td style="text-align: center">57355</td>
      <td style="text-align: center">44931 (78.3%)</td>
      <td style="text-align: center">52754 (92.0%)</td>
      <td style="text-align: center">44016 (76.7%)</td>
    </tr>
    <tr>
      <td style="text-align: center"><strong>GOODS-N</strong></td>
      <td style="text-align: center">65481</td>
      <td style="text-align: center">53291 (81.4%)</td>
      <td style="text-align: center">58852 (89.9%)</td>
      <td style="text-align: center">51465 (78.6%)</td>
    </tr>
    <tr>
      <td style="text-align: center"><strong>PRIMER-UDS (N)</strong></td>
      <td style="text-align: center">68857</td>
      <td style="text-align: center">58947 (85.6%)</td>
      <td style="text-align: center">67134 (97.5%)</td>
      <td style="text-align: center">57945 (84.2%)</td>
    </tr>
    <tr>
      <td style="text-align: center"><strong>PRIMER-UDS (S)</strong></td>
      <td style="text-align: center">65864</td>
      <td style="text-align: center">57397 (87.1%)</td>
      <td style="text-align: center">64537 (98.0%)</td>
      <td style="text-align: center">56476 (85.7%)</td>
    </tr>
    <tr>
      <td style="text-align: center"><strong>PRIMER-COSMOS (E)</strong></td>
      <td style="text-align: center">50655</td>
      <td style="text-align: center">42359 (83.6%)</td>
      <td style="text-align: center">48496 (95.7%)</td>
      <td style="text-align: center">41597 (82.1%)</td>
    </tr>
    <tr>
      <td style="text-align: center"><strong>PRIMER-COSMOS (W)</strong></td>
      <td style="text-align: center">51362</td>
      <td style="text-align: center">40493 (78.8%)</td>
      <td style="text-align: center">46964 (91.4%)</td>
      <td style="text-align: center">39704 (77.3%)</td>
    </tr>
    <tr>
      <td style="text-align: center"><strong>Total</strong></td>
      <td style="text-align: center"><strong>426609</strong></td>
      <td style="text-align: center"><strong>350022 (82.0%)</strong></td>
      <td style="text-align: center"><strong>397783 (93.2%)</strong></td>
      <td style="text-align: center"><strong>342892 (80.4%)</strong></td>
    </tr>
  </tbody>
</table>

<h1 id="technical-details">Technical details</h1>

<p>For more information please check the <a href="/dja/assets/post_files/2024-08-16-morphological-data/Rapport_DAWN_AurelienGENIN2.pdf">Internship report written by Aurélien Genin</a>. You can find details on the PSF estimation (3.2), the models used (3.3.1), the workings of SourceXtractor++ (3.3.2), the implementation on AWS (3.4) and some premilinary results (4) .</p>]]></content><author><name>Aurélien Genin</name></author><category term="imaging" /><category term="release" /><category term="catalog" /><category term="jwst" /><summary type="html"><![CDATA[imaging release catalog jwst Here we summarize the files available for morphological data. This extension to the DJA provides valuable morphological data for over 340k galaxies in the following fields : ceers-full-grizli-v7.2 gds-grizli-v7.2 gdn-grizli-v7.3 primer-uds-north-grizli-v7.2 primer-uds-south-grizli-v7.2 primer-cosmos-east-grizli-v7.0 primer-cosmos-west-grizli-v7.0 The morphologies of these galaxies have been measured using both Sérsic and Bulge+Disk model. It made use of SourceXtractor++ to run the model fitting. A merged catalog of all of the processed fields is available at full-good_morpho-phot.fits.gz (1.2 Gb). The first extension provides the merged DJA photometry and stellar population properties estimated from the photometric redshift fit. The second extension provides the morphology measurements of the Sersic model fit and the third extension provides parameters of the Bulge+Disk (B+D) morphology fit. File extensions For a given field, the following files are available: {field}_morpho-phot.fits.gz: Merged catalogs of DJA photometry, EAZY SED fitting (from the DJA) and SE++ fittings in Sérsic and B+D models. They are stored in 3 HDUs inside the FITS file (DJA phot+EAZY, Sérsic model, B+D model) where the rows of each table correspond to one another. A flag column was added in the merged DJA catalog to flag sources non-detected by SE++ (0), potential artifcats (1) and low SNR or magnitude above the limiting mag in each field (3). Sources considered good for phyiscal study have a flag value of 2. (model|resid)_{fit}_{field}*.fits.gz: Model or residual images generated by SE++ with the fit model for different bands. They have the exact same WCS as the images on the DJA. {field}*star_psf.psf: PSFs generated for each field in each filter band using PSFEx. They made use of a custom star selection to give better results than the native auto-selection from PSFEx. This selection is based on the MU_MAX/MAG_AUTO plane, a method adapted from Leauthaud et al. 2007, Section 3.6. You will also find the following file, non-relative to a specific field: full-good_morpho-phot.fits.gz: Joint catalog of all the morpho-phot catalogs in the different fields, keeping only the good sources (flag value of 2). Useful for plots without having to open every catalog individually File organization All the files for each field are available in links in the table below. Field Catalog Sérsic images B+D images PSFs ceers-full-grizli-v7.2 Catalog Sérsic B+D PSF gds-grizli-v7.2 Catalog Sérsic B+D PSF gdn-grizli-v7.3 Catalog Sérsic B+D PSF primer-uds-north-grizli-v7.2 Catalog Sérsic B+D PSF primer-uds-south-grizli-v7.2 Catalog Sérsic B+D PSF primer-cosmos-west-grizli-v7.0 Catalog Sérsic B+D PSF primer-cosmos-east-grizli-v7.0 Catalog Sérsic B+D PSF Code and catalog creation All the code used to create these catalogs can be found in the DJA-SEpp GitHub repository. It contains: The code of the dja_sepp package, made and used to generated these catalogs. Scripts to: run PSFEx on the images available on the DJA to generated empirical PSFs, tile the images for SourceXtractor++, run SourceXtractor++, perform these steps autonomously on AWS EC2 instances. Notebooks to: run locally PSFEx and SourceXtractor++, merge the tiled catalogs and images generated by SourceXtractor++, merge the morphological catalogs generated by SourceXtractor++ with photometric catalogs from the DJA, create plots to analyze the resulting catalogs, look at specific sources. The README file in the GitHub repository presents the workflow to run the steps used for this release. It can be used to perform this morphological study on different fields available on the DJA, or be adapated to different needs. Completeness The following table presents the galaxies whose morphology has been measured in the different fields used for this release. Field DJA Sérsic Bulge+Disk Both CEERS 67035 52604 (78.5%) 59046 (88.1%) 51329 (76.6%) GOODS-S 57355 44931 (78.3%) 52754 (92.0%) 44016 (76.7%) GOODS-N 65481 53291 (81.4%) 58852 (89.9%) 51465 (78.6%) PRIMER-UDS (N) 68857 58947 (85.6%) 67134 (97.5%) 57945 (84.2%) PRIMER-UDS (S) 65864 57397 (87.1%) 64537 (98.0%) 56476 (85.7%) PRIMER-COSMOS (E) 50655 42359 (83.6%) 48496 (95.7%) 41597 (82.1%) PRIMER-COSMOS (W) 51362 40493 (78.8%) 46964 (91.4%) 39704 (77.3%) Total 426609 350022 (82.0%) 397783 (93.2%) 342892 (80.4%) Technical details For more information please check the Internship report written by Aurélien Genin. You can find details on the PSF estimation (3.2), the models used (3.3.1), the workings of SourceXtractor++ (3.3.2), the implementation on AWS (3.4) and some premilinary results (4) .]]></summary></entry><entry><title type="html">DJA NIRSpec MSA Extractions v2</title><link href="https://dawn-cph.github.io/dja/blog/2024/03/01/nirspec-extractions-v2/" rel="alternate" type="text/html" title="DJA NIRSpec MSA Extractions v2" /><published>2024-03-01T12:31:30+00:00</published><updated>2024-03-01T12:31:30+00:00</updated><id>https://dawn-cph.github.io/dja/blog/2024/03/01/nirspec-extractions-v2</id><content type="html" xml:base="https://dawn-cph.github.io/dja/blog/2024/03/01/nirspec-extractions-v2/"><![CDATA[<p> 
    
    <a class="blog-category" href="/dja/blog/categories/#spectroscopy"> spectroscopy</a>
    
    
        
        <a class="blog-tag" href="/dja/blog/tags/#nirspec"> nirspec</a>
        
        <a class="blog-tag" href="/dja/blog/tags/#release"> release</a>
              
    
</p>

<p>(This page is auto-generated from the Jupyter notebook <a href="/dja/assets/post_files/2024-03-01-nirspec-extractions-v2.ipynb">nirspec-extractions-v2.ipynb</a>.)</p>

<p>We have reprocessed all of the public NIRSpec datasets from the <a href="https://dawn-cph.github.io/dja/blog/2023/07/18/nirspec-data-products/">earlier DJA</a> release with the latest <code class="language-plaintext highlighter-rouge">jwst</code> pipeline and calibration files and updated <a href="https://github.com/gbrammer/msaexp/releases/tag/0.7">msaexp v0.7</a> release.</p>

<p>Some of the major differences with respect to the previous reductions are as follows:</p>

<ul>
  <li>Improved initial Level1 processing with snowballs identified and masked in individual exposure groups using the <a href="https://github.com/mpi-astronomy/snowblind">snowblind</a> module.  The <code class="language-plaintext highlighter-rouge">uncal.fits</code> files are downloaded from MAST and processed automatically with <a href="https://github.com/gbrammer/grizli/blob/0d5c454afa5b28924bc4db9424db619e9b1a59ae/grizli/aws/recalibrate.py#L166">grizli.aws.recalibrate.do_recalibrate</a>.</li>
  <li>The 2D extraction and rectification is handled in <a href="https://github.com/gbrammer/msaexp/blob/main/msaexp/slit_combine.py">msaexp.slit_combine</a>.  The main algorithmic difference of the <code class="language-plaintext highlighter-rouge">v2</code> extractions is that the background is removed by taking differences of the original 2D slitlet cutouts before drizzle resampling, i.e., differences between the cross-dispersion nods.</li>
  <li>Then the final spectra are combined with a 2D weighted nearest-neighbor resampling to rectify them along rows of the 2D array, but where all wavelength bins are fully independent, i.e., no correlated noise from drizzling.</li>
  <li>The 2D profile for the optimal extraction is also determined along the curved traces of the original spectral cutouts and rebinned/rectified in the same way as the data.  The final 1D spectrum is the optimal extraction using this profile.</li>
  <li><code class="language-plaintext highlighter-rouge">msaexp</code> now has its own <a href="https://github.com/gbrammer/msaexp/blob/fb582ebd4c97d128c725d9f9fafca214d7fa81db/msaexp/slit_combine.py#L89">path loss correction</a> that uses the width of the fitted profile along with the predicted intra-shutter position.  The final spectra tend to lie much closer to the scale set by the photometry than the previous versions, though for many applications you’d probably still want to scale to whatever photometry yourself.</li>
  <li>For programs that obtain spectra of a particular source with multiple dispersers (e.g., prism and gratings), the centering and source width of the optimal extraction profile is determined from the spectrum with the highest median S/N (usually the prism) and extractions in the other gratings are forced with those profile parameters.</li>
</ul>

<h2 id="data-release">Data release</h2>

<p>The compilation of extracted spectra and redshift measurements is provided at <a href="https://s3.amazonaws.com/msaexp-nirspec/extractions/nirspec_graded_v2.html">nirspec_graded_v2.html</a>.</p>

<p>The redshift quality grades have been copied from those of the previous release where the redshift measurements themselves agree to within tight tolerances, and extractions from any new programs since the first release were visually inspected and graded.</p>

<h2 id="note">Note</h2>

<p>The <code class="language-plaintext highlighter-rouge">v2</code> spectra are affected by a bug that causes the uncertainties in the derived products to be too large by roughly a factor of <code class="language-plaintext highlighter-rouge">f = N^{1/4}</code>, where <code class="language-plaintext highlighter-rouge">N</code> is the number of combined exposures grouped by <code class="language-plaintext highlighter-rouge">source_name / detector / grating / filter / MSA plan</code>.  For a simple set of three exposures with the 3-Shutter-Nod dither pattern, <code class="language-plaintext highlighter-rouge">f = 3^{1/4} ~ 1.3</code>, i.e., the tabulated uncertainties are roughly 1.3× too large.  The effect of the bug is larger for deeper programs; for typical UNCOVER extractions <code class="language-plaintext highlighter-rouge">f = 18^{1/4} ~ 2</code>.  For more information, see <a href="https://github.com/gbrammer/msaexp/pull/54">msaexp PR#54</a>.</p>

<h2 id="observing-programs">Observing programs</h2>

<table>
  <thead>
    <tr>
      <th style="text-align: left">Program</th>
      <th style="text-align: left">DJA root</th>
      <th style="text-align: right">N</th>
      <th style="text-align: left">Grating</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td style="text-align: left"><a href="https://www.stsci.edu/cgi-bin/get-proposal-info?id=2756&amp;observatory=JWST">2756</a></td>
      <td style="text-align: left">abell2744-ddt-v2</td>
      <td style="text-align: right">118</td>
      <td style="text-align: left">PRISM-CLEAR</td>
    </tr>
    <tr>
      <td style="text-align: left"><a href="https://www.stsci.edu/cgi-bin/get-proposal-info?id=1810&amp;observatory=JWST">1810</a></td>
      <td style="text-align: left">bluejay-north-v2</td>
      <td style="text-align: right">519</td>
      <td style="text-align: left">G140M-F100LP</td>
    </tr>
    <tr>
      <td style="text-align: left"> </td>
      <td style="text-align: left">bluejay-south-v2</td>
      <td style="text-align: right"> </td>
      <td style="text-align: left">G235M-F170LP</td>
    </tr>
    <tr>
      <td style="text-align: left"> </td>
      <td style="text-align: left"> </td>
      <td style="text-align: right"> </td>
      <td style="text-align: left">G395M-F290LP</td>
    </tr>
    <tr>
      <td style="text-align: left"><a href="https://www.stsci.edu/cgi-bin/get-proposal-info?id=1747&amp;observatory=JWST">1747</a></td>
      <td style="text-align: left">borg-0314m6712-v2</td>
      <td style="text-align: right">205</td>
      <td style="text-align: left">PRISM-CLEAR</td>
    </tr>
    <tr>
      <td style="text-align: left"> </td>
      <td style="text-align: left">borg-0859p4114-v2</td>
      <td style="text-align: right"> </td>
      <td style="text-align: left"> </td>
    </tr>
    <tr>
      <td style="text-align: left"> </td>
      <td style="text-align: left">borg-1033p5051-v2</td>
      <td style="text-align: right"> </td>
      <td style="text-align: left"> </td>
    </tr>
    <tr>
      <td style="text-align: left"> </td>
      <td style="text-align: left">borg-1437p5044-v2</td>
      <td style="text-align: right"> </td>
      <td style="text-align: left"> </td>
    </tr>
    <tr>
      <td style="text-align: left"> </td>
      <td style="text-align: left">borg-2203p1851-v2</td>
      <td style="text-align: right"> </td>
      <td style="text-align: left"> </td>
    </tr>
    <tr>
      <td style="text-align: left"><a href="https://www.stsci.edu/cgi-bin/get-proposal-info?id=2750&amp;observatory=JWST">2750</a></td>
      <td style="text-align: left">ceers-ddt-v2</td>
      <td style="text-align: right">251</td>
      <td style="text-align: left">PRISM-CLEAR</td>
    </tr>
    <tr>
      <td style="text-align: left"><a href="https://www.stsci.edu/cgi-bin/get-proposal-info?id=1345&amp;observatory=JWST">1345</a></td>
      <td style="text-align: left">ceers-v2</td>
      <td style="text-align: right">2236</td>
      <td style="text-align: left">G140M-F100LP</td>
    </tr>
    <tr>
      <td style="text-align: left"> </td>
      <td style="text-align: left"> </td>
      <td style="text-align: right"> </td>
      <td style="text-align: left">G235M-F170LP</td>
    </tr>
    <tr>
      <td style="text-align: left"> </td>
      <td style="text-align: left"> </td>
      <td style="text-align: right"> </td>
      <td style="text-align: left">G395M-F290LP</td>
    </tr>
    <tr>
      <td style="text-align: left"> </td>
      <td style="text-align: left"> </td>
      <td style="text-align: right"> </td>
      <td style="text-align: left">PRISM-CLEAR</td>
    </tr>
    <tr>
      <td style="text-align: left"><a href="https://www.stsci.edu/cgi-bin/get-proposal-info?id=1871&amp;observatory=JWST">1871</a></td>
      <td style="text-align: left">gdn-chisholm-v2</td>
      <td style="text-align: right">44</td>
      <td style="text-align: left">G235H-F170LP</td>
    </tr>
    <tr>
      <td style="text-align: left"> </td>
      <td style="text-align: left"> </td>
      <td style="text-align: right"> </td>
      <td style="text-align: left">G395H-F290LP</td>
    </tr>
    <tr>
      <td style="text-align: left"><a href="https://www.stsci.edu/cgi-bin/get-proposal-info?id=2198&amp;observatory=JWST">2198</a></td>
      <td style="text-align: left">gds-barrufet-s156-v2</td>
      <td style="text-align: right">137</td>
      <td style="text-align: left">PRISM-CLEAR</td>
    </tr>
    <tr>
      <td style="text-align: left"> </td>
      <td style="text-align: left">gds-barrufet-s67-v2</td>
      <td style="text-align: right"> </td>
      <td style="text-align: left"> </td>
    </tr>
    <tr>
      <td style="text-align: left"><a href="https://www.stsci.edu/cgi-bin/get-proposal-info?id=1210&amp;observatory=JWST">1210</a></td>
      <td style="text-align: left">gds-deep-v2</td>
      <td style="text-align: right">1219</td>
      <td style="text-align: left">G140M-F070LP</td>
    </tr>
    <tr>
      <td style="text-align: left"> </td>
      <td style="text-align: left"> </td>
      <td style="text-align: right"> </td>
      <td style="text-align: left">G235M-F170LP</td>
    </tr>
    <tr>
      <td style="text-align: left"> </td>
      <td style="text-align: left"> </td>
      <td style="text-align: right"> </td>
      <td style="text-align: left">G395H-F290LP</td>
    </tr>
    <tr>
      <td style="text-align: left"> </td>
      <td style="text-align: left"> </td>
      <td style="text-align: right"> </td>
      <td style="text-align: left">G395M-F290LP</td>
    </tr>
    <tr>
      <td style="text-align: left"> </td>
      <td style="text-align: left"> </td>
      <td style="text-align: right"> </td>
      <td style="text-align: left">PRISM-CLEAR</td>
    </tr>
    <tr>
      <td style="text-align: left"><a href="https://www.stsci.edu/cgi-bin/get-proposal-info?id=6541&amp;observatory=JWST">6541</a></td>
      <td style="text-align: left">gds-egami-ddt-v2</td>
      <td style="text-align: right">345</td>
      <td style="text-align: left">PRISM-CLEAR</td>
    </tr>
    <tr>
      <td style="text-align: left"><a href="https://www.stsci.edu/cgi-bin/get-proposal-info?id=3215&amp;observatory=JWST">3215</a></td>
      <td style="text-align: left">gds-udeep-v2</td>
      <td style="text-align: right">821</td>
      <td style="text-align: left">G140M-F070LP</td>
    </tr>
    <tr>
      <td style="text-align: left"> </td>
      <td style="text-align: left"> </td>
      <td style="text-align: right"> </td>
      <td style="text-align: left">G395M-F290LP</td>
    </tr>
    <tr>
      <td style="text-align: left"> </td>
      <td style="text-align: left"> </td>
      <td style="text-align: right"> </td>
      <td style="text-align: left">PRISM-CLEAR</td>
    </tr>
    <tr>
      <td style="text-align: left"><a href="https://www.stsci.edu/cgi-bin/get-proposal-info?id=2565&amp;observatory=JWST">2565</a></td>
      <td style="text-align: left">glazebrook-cos-obs2-v2</td>
      <td style="text-align: right">466</td>
      <td style="text-align: left">PRISM-CLEAR</td>
    </tr>
    <tr>
      <td style="text-align: left"> </td>
      <td style="text-align: left">glazebrook-cos-obs3-v2</td>
      <td style="text-align: right"> </td>
      <td style="text-align: left"> </td>
    </tr>
    <tr>
      <td style="text-align: left"> </td>
      <td style="text-align: left">glazebrook-v2</td>
      <td style="text-align: right"> </td>
      <td style="text-align: left"> </td>
    </tr>
    <tr>
      <td style="text-align: left"><a href="https://www.stsci.edu/cgi-bin/get-proposal-info?id=1211&amp;observatory=JWST">1211</a></td>
      <td style="text-align: left">goodsn-wide-v2</td>
      <td style="text-align: right">186</td>
      <td style="text-align: left">PRISM-CLEAR</td>
    </tr>
    <tr>
      <td style="text-align: left"><a href="https://www.stsci.edu/cgi-bin/get-proposal-info?id=1181&amp;observatory=JWST">1181</a></td>
      <td style="text-align: left">jades-gdn2-v2</td>
      <td style="text-align: right">4176</td>
      <td style="text-align: left">G140M-F070LP</td>
    </tr>
    <tr>
      <td style="text-align: left"> </td>
      <td style="text-align: left">jades-gdn-v2</td>
      <td style="text-align: right"> </td>
      <td style="text-align: left">G235M-F170LP</td>
    </tr>
    <tr>
      <td style="text-align: left"> </td>
      <td style="text-align: left"> </td>
      <td style="text-align: right"> </td>
      <td style="text-align: left">G395H-F290LP</td>
    </tr>
    <tr>
      <td style="text-align: left"> </td>
      <td style="text-align: left"> </td>
      <td style="text-align: right"> </td>
      <td style="text-align: left">G395M-F290LP</td>
    </tr>
    <tr>
      <td style="text-align: left"> </td>
      <td style="text-align: left"> </td>
      <td style="text-align: right"> </td>
      <td style="text-align: left">PRISM-CLEAR</td>
    </tr>
    <tr>
      <td style="text-align: left"><a href="https://www.stsci.edu/cgi-bin/get-proposal-info?id=1286&amp;observatory=JWST">1286</a></td>
      <td style="text-align: left">jades-gds1-v2</td>
      <td style="text-align: right">916</td>
      <td style="text-align: left">G140M-F070LP</td>
    </tr>
    <tr>
      <td style="text-align: left"> </td>
      <td style="text-align: left"> </td>
      <td style="text-align: right"> </td>
      <td style="text-align: left">G235M-F170LP</td>
    </tr>
    <tr>
      <td style="text-align: left"> </td>
      <td style="text-align: left"> </td>
      <td style="text-align: right"> </td>
      <td style="text-align: left">G395H-F290LP</td>
    </tr>
    <tr>
      <td style="text-align: left"> </td>
      <td style="text-align: left"> </td>
      <td style="text-align: right"> </td>
      <td style="text-align: left">G395M-F290LP</td>
    </tr>
    <tr>
      <td style="text-align: left"> </td>
      <td style="text-align: left"> </td>
      <td style="text-align: right"> </td>
      <td style="text-align: left">PRISM-CLEAR</td>
    </tr>
    <tr>
      <td style="text-align: left"><a href="https://www.stsci.edu/cgi-bin/get-proposal-info?id=1180&amp;observatory=JWST">1180</a></td>
      <td style="text-align: left">jades-gds-wide2-v2</td>
      <td style="text-align: right">4779</td>
      <td style="text-align: left">G140M-F070LP</td>
    </tr>
    <tr>
      <td style="text-align: left"> </td>
      <td style="text-align: left">jades-gds-wide-v2</td>
      <td style="text-align: right"> </td>
      <td style="text-align: left">G235M-F170LP</td>
    </tr>
    <tr>
      <td style="text-align: left"> </td>
      <td style="text-align: left"> </td>
      <td style="text-align: right"> </td>
      <td style="text-align: left">G395M-F290LP</td>
    </tr>
    <tr>
      <td style="text-align: left"> </td>
      <td style="text-align: left"> </td>
      <td style="text-align: right"> </td>
      <td style="text-align: left">PRISM-CLEAR</td>
    </tr>
    <tr>
      <td style="text-align: left"><a href="https://www.stsci.edu/cgi-bin/get-proposal-info?id=4246&amp;observatory=JWST">4246</a></td>
      <td style="text-align: left">macsj0647-hr-v2</td>
      <td style="text-align: right">44</td>
      <td style="text-align: left">G395H-F290LP</td>
    </tr>
    <tr>
      <td style="text-align: left"><a href="https://www.stsci.edu/cgi-bin/get-proposal-info?id=1433&amp;observatory=JWST">1433</a></td>
      <td style="text-align: left">macsj0647-v2</td>
      <td style="text-align: right">140</td>
      <td style="text-align: left">PRISM-CLEAR</td>
    </tr>
    <tr>
      <td style="text-align: left"><a href="https://www.stsci.edu/cgi-bin/get-proposal-info?id=4557&amp;observatory=JWST">4557</a></td>
      <td style="text-align: left">pearls-transients-v2</td>
      <td style="text-align: right">210</td>
      <td style="text-align: left">PRISM-CLEAR</td>
    </tr>
    <tr>
      <td style="text-align: left"><a href="https://www.stsci.edu/cgi-bin/get-proposal-info?id=4233&amp;observatory=JWST">4233</a></td>
      <td style="text-align: left">rubies-uds1-v2</td>
      <td style="text-align: right">1480</td>
      <td style="text-align: left">G395M-F290LP</td>
    </tr>
    <tr>
      <td style="text-align: left"> </td>
      <td style="text-align: left">rubies-uds2-v2</td>
      <td style="text-align: right"> </td>
      <td style="text-align: left">PRISM-CLEAR</td>
    </tr>
    <tr>
      <td style="text-align: left"> </td>
      <td style="text-align: left">rubies-uds3-v2</td>
      <td style="text-align: right"> </td>
      <td style="text-align: left"> </td>
    </tr>
    <tr>
      <td style="text-align: left"><a href="https://www.stsci.edu/cgi-bin/get-proposal-info?id=2767&amp;observatory=JWST">2767</a></td>
      <td style="text-align: left">rxj2129-ddt-v2</td>
      <td style="text-align: right">241</td>
      <td style="text-align: left">G140M-F070LP</td>
    </tr>
    <tr>
      <td style="text-align: left"> </td>
      <td style="text-align: left"> </td>
      <td style="text-align: right"> </td>
      <td style="text-align: left">G140M-F100LP</td>
    </tr>
    <tr>
      <td style="text-align: left"> </td>
      <td style="text-align: left"> </td>
      <td style="text-align: right"> </td>
      <td style="text-align: left">PRISM-CLEAR</td>
    </tr>
    <tr>
      <td style="text-align: left"><a href="https://www.stsci.edu/cgi-bin/get-proposal-info?id=2736&amp;observatory=JWST">2736</a></td>
      <td style="text-align: left">smacs0723-ero-v2</td>
      <td style="text-align: right">102</td>
      <td style="text-align: left">G235M-F170LP</td>
    </tr>
    <tr>
      <td style="text-align: left"> </td>
      <td style="text-align: left"> </td>
      <td style="text-align: right"> </td>
      <td style="text-align: left">G395M-F290LP</td>
    </tr>
    <tr>
      <td style="text-align: left"><a href="https://www.stsci.edu/cgi-bin/get-proposal-info?id=4446&amp;observatory=JWST">4446</a></td>
      <td style="text-align: left">snh0pe-v2</td>
      <td style="text-align: right">116</td>
      <td style="text-align: left">G140M-F100LP</td>
    </tr>
    <tr>
      <td style="text-align: left"> </td>
      <td style="text-align: left"> </td>
      <td style="text-align: right"> </td>
      <td style="text-align: left">G235M-F170LP</td>
    </tr>
    <tr>
      <td style="text-align: left"> </td>
      <td style="text-align: left"> </td>
      <td style="text-align: right"> </td>
      <td style="text-align: left">PRISM-CLEAR</td>
    </tr>
    <tr>
      <td style="text-align: left"><a href="https://www.stsci.edu/cgi-bin/get-proposal-info?id=2110&amp;observatory=JWST">2110</a></td>
      <td style="text-align: left">suspense-kriek-v2</td>
      <td style="text-align: right">45</td>
      <td style="text-align: left">G140M-F100LP</td>
    </tr>
    <tr>
      <td style="text-align: left"><a href="https://www.stsci.edu/cgi-bin/get-proposal-info?id=2561&amp;observatory=JWST">2561</a></td>
      <td style="text-align: left">uncover-v2</td>
      <td style="text-align: right">766</td>
      <td style="text-align: left">PRISM-CLEAR</td>
    </tr>
  </tbody>
</table>

<div class="language-python highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kn">import</span> <span class="nn">os</span>
<span class="k">if</span> <span class="n">os</span><span class="p">.</span><span class="n">path</span><span class="p">.</span><span class="n">exists</span><span class="p">(</span><span class="s">'gbrammer'</span> <span class="ow">in</span> <span class="n">os</span><span class="p">.</span><span class="n">environ</span><span class="p">[</span><span class="s">'HOME'</span><span class="p">])</span> <span class="o">&amp;</span> <span class="bp">False</span><span class="p">:</span>
    
    <span class="c1"># Extract summary from database
</span>    <span class="kn">from</span> <span class="nn">grizli.aws</span> <span class="kn">import</span> <span class="n">db</span>
    <span class="kn">import</span> <span class="nn">pyperclip</span>

    <span class="c1"># db queries require DB credentials
</span>    <span class="n">nre</span> <span class="o">=</span> <span class="n">db</span><span class="p">.</span><span class="n">SQL</span><span class="p">(</span><span class="s">"""select SUBSTR(MIN(dataset), 4, 4) as pid,
                           array_agg(DISTINCT(root)) as root,
                           count(*) as N,
                           array_agg(DISTINCT(grating || '-' || filter)) as Grating
    FROM nirspec_extractions WHERE ROOT LIKE '%%v2' AND dataset not like 'jw01208%%'
    GROUP BY SUBSTR(dataset, 4, 4)
    ORDER BY MAX(root)"""</span><span class="p">)</span>
    
    <span class="n">nre</span><span class="p">[</span><span class="s">'root'</span><span class="p">]</span> <span class="o">=</span> <span class="p">[</span><span class="s">'</span><span class="se">\n</span><span class="s">'</span><span class="p">.</span><span class="n">join</span><span class="p">(</span><span class="n">r</span><span class="p">)</span> <span class="k">for</span> <span class="n">r</span> <span class="ow">in</span> <span class="n">nre</span><span class="p">[</span><span class="s">'root'</span><span class="p">]]</span>
    <span class="n">nre</span><span class="p">[</span><span class="s">'grating'</span><span class="p">]</span> <span class="o">=</span> <span class="p">[</span><span class="s">'</span><span class="se">\n</span><span class="s">'</span><span class="p">.</span><span class="n">join</span><span class="p">(</span><span class="n">r</span><span class="p">)</span> <span class="k">for</span> <span class="n">r</span> <span class="ow">in</span> <span class="n">nre</span><span class="p">[</span><span class="s">'grating'</span><span class="p">]]</span>
    <span class="n">nre</span><span class="p">.</span><span class="n">rename_column</span><span class="p">(</span><span class="s">'root'</span><span class="p">,</span><span class="s">'DJA root'</span><span class="p">)</span>
    <span class="n">url</span> <span class="o">=</span> <span class="s">'[{pid}](https://www.stsci.edu/cgi-bin/get-proposal-info?id={pid}&amp;observatory=JWST)'</span>
    <span class="n">prog</span> <span class="o">=</span> <span class="p">[</span><span class="n">url</span><span class="p">.</span><span class="nb">format</span><span class="p">(</span><span class="o">**</span><span class="n">row</span><span class="p">)</span> <span class="k">for</span> <span class="n">row</span> <span class="ow">in</span> <span class="n">nre</span><span class="p">]</span>
    <span class="n">nre</span><span class="p">[</span><span class="s">'Program'</span><span class="p">]</span> <span class="o">=</span> <span class="n">prog</span>
    
    <span class="n">pyperclip</span><span class="p">.</span><span class="n">copy</span><span class="p">(</span><span class="s">'## Observing programs</span><span class="se">\n\n</span><span class="s">'</span> <span class="o">+</span>
                   <span class="n">nre</span><span class="p">[</span><span class="s">'Program'</span><span class="p">,</span><span class="s">'DJA root'</span><span class="p">,</span><span class="s">'n'</span><span class="p">,</span><span class="s">'grating'</span><span class="p">].</span><span class="n">to_pandas</span><span class="p">(</span><span class="n">index</span><span class="o">=</span><span class="bp">False</span><span class="p">).</span><span class="n">to_markdown</span><span class="p">(</span><span class="n">index</span><span class="o">=</span><span class="bp">False</span><span class="p">))</span>
</code></pre></div></div>

<div class="language-python highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="o">%</span><span class="n">matplotlib</span> <span class="n">inline</span>

<span class="kn">import</span> <span class="nn">os</span>
<span class="kn">import</span> <span class="nn">yaml</span>

<span class="kn">import</span> <span class="nn">numpy</span> <span class="k">as</span> <span class="n">np</span>
<span class="kn">import</span> <span class="nn">matplotlib.pyplot</span> <span class="k">as</span> <span class="n">plt</span>

<span class="kn">import</span> <span class="nn">warnings</span>
<span class="n">warnings</span><span class="p">.</span><span class="n">filterwarnings</span><span class="p">(</span><span class="s">'ignore'</span><span class="p">)</span>

<span class="kn">import</span> <span class="nn">astropy.io.fits</span> <span class="k">as</span> <span class="n">pyfits</span>

<span class="kn">import</span> <span class="nn">grizli</span>
<span class="kn">import</span> <span class="nn">grizli.catalog</span>
<span class="kn">from</span> <span class="nn">grizli</span> <span class="kn">import</span> <span class="n">utils</span>

<span class="kn">import</span> <span class="nn">eazy</span>
<span class="kn">import</span> <span class="nn">msaexp</span>
<span class="kn">import</span> <span class="nn">msaexp.spectrum</span>

<span class="k">print</span><span class="p">(</span><span class="sa">f</span><span class="s">'grizli version: </span><span class="si">{</span><span class="n">grizli</span><span class="p">.</span><span class="n">__version__</span><span class="si">}</span><span class="s">'</span><span class="p">)</span>
<span class="k">print</span><span class="p">(</span><span class="sa">f</span><span class="s">'eazy-py version: </span><span class="si">{</span><span class="n">eazy</span><span class="p">.</span><span class="n">__version__</span><span class="si">}</span><span class="s">'</span><span class="p">)</span>
<span class="k">print</span><span class="p">(</span><span class="sa">f</span><span class="s">'msaexp version: </span><span class="si">{</span><span class="n">msaexp</span><span class="p">.</span><span class="n">__version__</span><span class="si">}</span><span class="s">'</span><span class="p">)</span>
</code></pre></div></div>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>grizli version: 1.11.3.dev2+gd57387c.d20240222
eazy-py version: 0.6.8.dev1+g3fb0ad2.d20240129
msaexp version: 0.7.3.dev0+g3e012ec.d20240222
</code></pre></div></div>

<h2 id="compare-v1-and-v2">Compare <code class="language-plaintext highlighter-rouge">v1</code> and <code class="language-plaintext highlighter-rouge">v2</code></h2>

<ul>
  <li>The <code class="language-plaintext highlighter-rouge">v2</code> extractions are generally cleaner with fewer non-Gaussian outliers</li>
  <li>The normalization of the <code class="language-plaintext highlighter-rouge">v2</code> extractions is generally both “brighter” and “redder” as a result of the internal wavelength-dependent path loss correction</li>
</ul>

<div class="language-python highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="n">z</span> <span class="o">=</span> <span class="mf">3.7616</span> 
<span class="n">_prefix</span> <span class="o">=</span> <span class="s">'https://s3.amazonaws.com/msaexp-nirspec/extractions/'</span>
<span class="n">v2_file</span> <span class="o">=</span> <span class="n">_prefix</span> <span class="o">+</span> <span class="s">'ceers-ddt-v2/ceers-ddt-v2_prism-clear_2750_1598.spec.fits'</span>

<span class="n">v1_file</span> <span class="o">=</span> <span class="n">v2_file</span><span class="p">.</span><span class="n">replace</span><span class="p">(</span><span class="s">'ceers-v2'</span><span class="p">,</span><span class="s">'ceers-lr-v1'</span><span class="p">).</span><span class="n">replace</span><span class="p">(</span><span class="s">'-v2'</span><span class="p">,</span><span class="s">'-v1'</span><span class="p">)</span>
<span class="k">print</span><span class="p">(</span><span class="n">v1_file</span> <span class="o">+</span> <span class="s">'</span><span class="se">\n</span><span class="s">'</span> <span class="o">+</span> <span class="n">v2_file</span><span class="p">)</span>

<span class="n">sp1</span> <span class="o">=</span> <span class="n">msaexp</span><span class="p">.</span><span class="n">spectrum</span><span class="p">.</span><span class="n">SpectrumSampler</span><span class="p">(</span><span class="n">v1_file</span><span class="p">)</span>
<span class="n">sp2</span> <span class="o">=</span> <span class="n">msaexp</span><span class="p">.</span><span class="n">spectrum</span><span class="p">.</span><span class="n">SpectrumSampler</span><span class="p">(</span><span class="n">v2_file</span><span class="p">)</span>

<span class="n">f1</span> <span class="o">=</span> <span class="n">sp1</span><span class="p">.</span><span class="n">drizzled_hdu_figure</span><span class="p">(</span><span class="n">z</span><span class="o">=</span><span class="n">z</span><span class="p">,</span> <span class="n">unit</span><span class="o">=</span><span class="s">'fnu'</span><span class="p">)</span>
<span class="n">f2</span> <span class="o">=</span> <span class="n">sp2</span><span class="p">.</span><span class="n">drizzled_hdu_figure</span><span class="p">(</span><span class="n">z</span><span class="o">=</span><span class="n">z</span><span class="p">,</span> <span class="n">unit</span><span class="o">=</span><span class="s">'fnu'</span><span class="p">)</span>
</code></pre></div></div>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>https://s3.amazonaws.com/msaexp-nirspec/extractions/ceers-ddt-v1/ceers-ddt-v1_prism-clear_2750_1598.spec.fits
https://s3.amazonaws.com/msaexp-nirspec/extractions/ceers-ddt-v2/ceers-ddt-v2_prism-clear_2750_1598.spec.fits
</code></pre></div></div>

<p><img src="/dja/assets/post_files/2024-03-01-nirspec-extractions-v2_files/nirspec-extractions-v2_6_1.png" style="max-width:100%;" /></p>

<p><img src="/dja/assets/post_files/2024-03-01-nirspec-extractions-v2_files/nirspec-extractions-v2_6_2.png" style="max-width:100%;" /></p>

<div class="language-python highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kn">import</span> <span class="nn">msaexp.slit_combine</span>
<span class="kn">from</span> <span class="nn">msaexp.slit_combine</span> <span class="kn">import</span> <span class="n">slit_prf_fraction</span>

<span class="n">fig</span><span class="p">,</span> <span class="n">axes</span> <span class="o">=</span> <span class="n">plt</span><span class="p">.</span><span class="n">subplots</span><span class="p">(</span><span class="mi">2</span><span class="p">,</span><span class="mi">1</span><span class="p">,</span><span class="n">figsize</span><span class="o">=</span><span class="p">(</span><span class="mi">8</span><span class="p">,</span><span class="mi">4</span><span class="p">),</span> <span class="n">sharex</span><span class="o">=</span><span class="bp">True</span><span class="p">)</span>

<span class="n">ax</span> <span class="o">=</span> <span class="n">axes</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span>
<span class="n">ax</span><span class="p">.</span><span class="n">plot</span><span class="p">(</span><span class="n">sp1</span><span class="p">[</span><span class="s">'wave'</span><span class="p">],</span> <span class="n">sp1</span><span class="p">[</span><span class="s">'flux'</span><span class="p">],</span> <span class="n">label</span><span class="o">=</span><span class="s">'v1'</span><span class="p">)</span>
<span class="n">ax</span><span class="p">.</span><span class="n">plot</span><span class="p">(</span><span class="n">sp2</span><span class="p">[</span><span class="s">'wave'</span><span class="p">],</span> <span class="n">sp2</span><span class="p">[</span><span class="s">'flux'</span><span class="p">],</span> <span class="n">label</span><span class="o">=</span><span class="s">'v2'</span><span class="p">)</span>
<span class="n">leg</span> <span class="o">=</span> <span class="n">ax</span><span class="p">.</span><span class="n">legend</span><span class="p">(</span><span class="n">loc</span><span class="o">=</span><span class="s">'upper left'</span><span class="p">)</span>
<span class="n">leg</span><span class="p">.</span><span class="n">set_title</span><span class="p">(</span><span class="n">sp2</span><span class="p">.</span><span class="n">meta</span><span class="p">[</span><span class="s">'SRCNAME'</span><span class="p">])</span>
<span class="n">ax</span><span class="p">.</span><span class="n">grid</span><span class="p">()</span>

<span class="c1"># Ratios
</span><span class="n">axes</span><span class="p">[</span><span class="mi">1</span><span class="p">].</span><span class="n">plot</span><span class="p">(</span><span class="n">sp2</span><span class="p">[</span><span class="s">'wave'</span><span class="p">],</span> <span class="n">sp2</span><span class="p">[</span><span class="s">'flux'</span><span class="p">]</span> <span class="o">/</span> <span class="n">sp1</span><span class="p">[</span><span class="s">'flux'</span><span class="p">],</span> <span class="n">label</span><span class="o">=</span><span class="sa">r</span><span class="s">'v2 / v1'</span><span class="p">,</span> <span class="n">color</span><span class="o">=</span><span class="s">'pink'</span><span class="p">)</span>

<span class="n">path_corr</span> <span class="o">=</span> <span class="n">slit_prf_fraction</span><span class="p">(</span><span class="n">sp2</span><span class="p">.</span><span class="n">spec</span><span class="p">[</span><span class="s">'wave'</span><span class="p">].</span><span class="n">astype</span><span class="p">(</span><span class="nb">float</span><span class="p">),</span>
                              <span class="n">sigma</span><span class="o">=</span><span class="n">sp2</span><span class="p">.</span><span class="n">spec</span><span class="p">.</span><span class="n">meta</span><span class="p">[</span><span class="s">'SIGMA'</span><span class="p">],</span>
                              <span class="n">x_pos</span><span class="o">=</span><span class="n">sp2</span><span class="p">.</span><span class="n">spec</span><span class="p">.</span><span class="n">meta</span><span class="p">[</span><span class="s">'SRCXPOS'</span><span class="p">],</span>
                              <span class="n">slit_width</span><span class="o">=</span><span class="mf">0.2</span><span class="p">,</span>
                              <span class="n">pixel_scale</span><span class="o">=</span><span class="n">msaexp</span><span class="p">.</span><span class="n">slit_combine</span><span class="p">.</span><span class="n">PIX_SCALE</span><span class="p">,</span>
                              <span class="n">verbose</span><span class="o">=</span><span class="bp">False</span><span class="p">)</span>

<span class="n">axes</span><span class="p">[</span><span class="mi">1</span><span class="p">].</span><span class="n">plot</span><span class="p">(</span><span class="n">sp2</span><span class="p">.</span><span class="n">spec</span><span class="p">[</span><span class="s">'wave'</span><span class="p">],</span> <span class="mf">1.</span><span class="o">/</span><span class="n">path_corr</span><span class="p">,</span> <span class="n">color</span><span class="o">=</span><span class="s">'plum'</span><span class="p">,</span> <span class="n">label</span><span class="o">=</span><span class="s">'v2 path loss correction'</span><span class="p">)</span>
<span class="n">axes</span><span class="p">[</span><span class="mi">1</span><span class="p">].</span><span class="n">grid</span><span class="p">()</span>
<span class="n">axes</span><span class="p">[</span><span class="mi">1</span><span class="p">].</span><span class="n">legend</span><span class="p">(</span><span class="n">loc</span><span class="o">=</span><span class="s">'upper left'</span><span class="p">)</span>

<span class="n">fig</span><span class="p">.</span><span class="n">tight_layout</span><span class="p">(</span><span class="n">pad</span><span class="o">=</span><span class="mi">1</span><span class="p">)</span>
</code></pre></div></div>

<p><img src="/dja/assets/post_files/2024-03-01-nirspec-extractions-v2_files/nirspec-extractions-v2_7_0.png" style="max-width:100%;" /></p>

<h2 id="compare-gratings">Compare gratings</h2>

<p>All <code class="language-plaintext highlighter-rouge">v2</code> extractions with different gratings for a particular source + program now have the same <code class="language-plaintext highlighter-rouge">root</code>, rather than being split in some cases.  For example, all of the CEERS (ERS-1345) spectra now have <code class="language-plaintext highlighter-rouge">root = ceers-v2</code> where they were split between the prisms (<code class="language-plaintext highlighter-rouge">ceers-lr-v1</code>) and gratings (<code class="language-plaintext highlighter-rouge">ceers-mr-v1</code>) before.</p>

<p><em>Note:</em> There remains an msaexp bug that causes the tick intervals on the automatic grating figures plotted below to look strange.  The minor ticks are evenly spaced in 0.05µm intervals, but the labels are rounded to a single decimal place (e.g., 3.75 becomes 3.8).</p>

<div class="language-python highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="n">z</span> <span class="o">=</span> <span class="mf">2.0611</span>
<span class="n">_prefix</span> <span class="o">=</span> <span class="s">'https://s3.amazonaws.com/msaexp-nirspec/extractions/'</span>
<span class="n">prism_file</span> <span class="o">=</span> <span class="n">_prefix</span> <span class="o">+</span> <span class="s">'ceers-v2/ceers-v2_prism-clear_1345_3506.spec.fits'</span>

<span class="n">sp</span> <span class="o">=</span> <span class="p">{}</span>
<span class="k">for</span> <span class="n">grating</span> <span class="ow">in</span> <span class="p">[</span><span class="s">'prism-clear'</span><span class="p">,</span><span class="s">'g140m-f100lp'</span><span class="p">,</span><span class="s">'g235m-f170lp'</span><span class="p">,</span><span class="s">'g395m-f290lp'</span><span class="p">]:</span>
    <span class="nb">file</span> <span class="o">=</span> <span class="n">prism_file</span><span class="p">.</span><span class="n">replace</span><span class="p">(</span><span class="s">'prism-clear'</span><span class="p">,</span><span class="n">grating</span><span class="p">)</span>
    <span class="k">print</span><span class="p">(</span><span class="nb">file</span><span class="p">)</span>
    <span class="n">sp</span><span class="p">[</span><span class="n">grating</span><span class="p">]</span> <span class="o">=</span> <span class="n">msaexp</span><span class="p">.</span><span class="n">spectrum</span><span class="p">.</span><span class="n">SpectrumSampler</span><span class="p">(</span><span class="nb">file</span><span class="p">)</span>

    <span class="n">fig</span> <span class="o">=</span> <span class="n">sp</span><span class="p">[</span><span class="n">grating</span><span class="p">].</span><span class="n">drizzled_hdu_figure</span><span class="p">(</span><span class="n">z</span><span class="o">=</span><span class="n">z</span><span class="p">,</span> <span class="n">unit</span><span class="o">=</span><span class="s">'fnu'</span><span class="p">)</span>
</code></pre></div></div>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>https://s3.amazonaws.com/msaexp-nirspec/extractions/ceers-v2/ceers-v2_prism-clear_1345_3506.spec.fits
https://s3.amazonaws.com/msaexp-nirspec/extractions/ceers-v2/ceers-v2_g140m-f100lp_1345_3506.spec.fits
https://s3.amazonaws.com/msaexp-nirspec/extractions/ceers-v2/ceers-v2_g235m-f170lp_1345_3506.spec.fits
https://s3.amazonaws.com/msaexp-nirspec/extractions/ceers-v2/ceers-v2_g395m-f290lp_1345_3506.spec.fits
</code></pre></div></div>

<p><img src="/dja/assets/post_files/2024-03-01-nirspec-extractions-v2_files/nirspec-extractions-v2_9_1.png" style="max-width:100%;" /></p>

<p><img src="/dja/assets/post_files/2024-03-01-nirspec-extractions-v2_files/nirspec-extractions-v2_9_2.png" style="max-width:100%;" /></p>

<p><img src="/dja/assets/post_files/2024-03-01-nirspec-extractions-v2_files/nirspec-extractions-v2_9_3.png" style="max-width:100%;" /></p>

<p><img src="/dja/assets/post_files/2024-03-01-nirspec-extractions-v2_files/nirspec-extractions-v2_9_4.png" style="max-width:100%;" /></p>

<div class="language-python highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="n">fig</span><span class="p">,</span> <span class="n">axes</span> <span class="o">=</span> <span class="n">plt</span><span class="p">.</span><span class="n">subplots</span><span class="p">(</span><span class="mi">4</span><span class="p">,</span><span class="mi">1</span><span class="p">,</span><span class="n">figsize</span><span class="o">=</span><span class="p">(</span><span class="mi">8</span><span class="p">,</span><span class="mi">8</span><span class="p">))</span>

<span class="n">colors</span> <span class="o">=</span> <span class="p">[</span><span class="s">'0.2'</span><span class="p">,</span><span class="s">'steelblue'</span><span class="p">,</span><span class="s">'orange'</span><span class="p">,</span><span class="s">'tomato'</span><span class="p">]</span>

<span class="k">for</span> <span class="n">i</span><span class="p">,</span> <span class="n">grating</span> <span class="ow">in</span> <span class="nb">enumerate</span><span class="p">(</span><span class="n">sp</span><span class="p">):</span>
    <span class="n">sp</span><span class="p">[</span><span class="n">grating</span><span class="p">][</span><span class="s">'flux'</span><span class="p">][</span><span class="o">~</span><span class="n">sp</span><span class="p">[</span><span class="n">grating</span><span class="p">].</span><span class="n">valid</span><span class="p">]</span> <span class="o">=</span> <span class="n">np</span><span class="p">.</span><span class="n">nan</span>
    <span class="k">for</span> <span class="n">ax</span> <span class="ow">in</span> <span class="n">axes</span><span class="p">:</span>
        <span class="n">ax</span><span class="p">.</span><span class="n">plot</span><span class="p">(</span><span class="n">sp</span><span class="p">[</span><span class="n">grating</span><span class="p">][</span><span class="s">'wave'</span><span class="p">],</span> <span class="n">sp</span><span class="p">[</span><span class="n">grating</span><span class="p">][</span><span class="s">'flux'</span><span class="p">],</span> <span class="n">alpha</span><span class="o">=</span><span class="mf">0.5</span><span class="p">,</span> <span class="n">label</span><span class="o">=</span><span class="n">grating</span><span class="p">,</span> <span class="n">color</span><span class="o">=</span><span class="n">colors</span><span class="p">[</span><span class="n">i</span><span class="p">])</span>

<span class="n">leg</span> <span class="o">=</span> <span class="n">axes</span><span class="p">[</span><span class="mi">3</span><span class="p">].</span><span class="n">legend</span><span class="p">(</span><span class="n">ncol</span><span class="o">=</span><span class="mi">4</span><span class="p">,</span> <span class="n">fontsize</span><span class="o">=</span><span class="mi">8</span><span class="p">)</span>
<span class="n">axes</span><span class="p">[</span><span class="mi">0</span><span class="p">].</span><span class="n">set_title</span><span class="p">(</span><span class="n">sp</span><span class="p">[</span><span class="n">grating</span><span class="p">].</span><span class="n">meta</span><span class="p">[</span><span class="s">'SRCNAME'</span><span class="p">])</span>

<span class="n">axes</span><span class="p">[</span><span class="mi">0</span><span class="p">].</span><span class="n">set_xlim</span><span class="p">(</span><span class="mf">0.9</span><span class="p">,</span> <span class="mf">1.9</span><span class="p">);</span> <span class="n">axes</span><span class="p">[</span><span class="mi">0</span><span class="p">].</span><span class="n">set_ylim</span><span class="p">(</span><span class="o">-</span><span class="mf">1.2</span><span class="p">,</span> <span class="mi">12</span><span class="p">)</span>
<span class="n">axes</span><span class="p">[</span><span class="mi">1</span><span class="p">].</span><span class="n">set_xlim</span><span class="p">(</span><span class="mf">1.85</span><span class="p">,</span> <span class="mf">3.2</span><span class="p">);</span> <span class="n">axes</span><span class="p">[</span><span class="mi">1</span><span class="p">].</span><span class="n">set_ylim</span><span class="p">(</span><span class="o">-</span><span class="mf">0.5</span><span class="p">,</span> <span class="mi">5</span><span class="p">)</span>
<span class="n">axes</span><span class="p">[</span><span class="mi">2</span><span class="p">].</span><span class="n">set_xlim</span><span class="p">(</span><span class="mf">2.95</span><span class="p">,</span> <span class="mf">5.3</span><span class="p">);</span> <span class="n">axes</span><span class="p">[</span><span class="mi">2</span><span class="p">].</span><span class="n">set_ylim</span><span class="p">(</span><span class="o">-</span><span class="mf">0.8</span><span class="p">,</span> <span class="mi">8</span><span class="p">)</span>
<span class="n">axes</span><span class="p">[</span><span class="mi">3</span><span class="p">].</span><span class="n">set_ylim</span><span class="p">(</span><span class="o">-</span><span class="mi">3</span><span class="p">,</span><span class="mi">30</span><span class="p">)</span>
<span class="n">axes</span><span class="p">[</span><span class="mi">3</span><span class="p">].</span><span class="n">set_xlabel</span><span class="p">(</span><span class="sa">r</span><span class="s">'$\lambda_\mathrm{obs}~[\mu\mathrm{m}]$'</span><span class="p">)</span>

<span class="k">for</span> <span class="n">ax</span> <span class="ow">in</span> <span class="n">axes</span><span class="p">:</span>
    <span class="n">ax</span><span class="p">.</span><span class="n">grid</span><span class="p">()</span>
    <span class="n">ax</span><span class="p">.</span><span class="n">set_ylabel</span><span class="p">(</span><span class="sa">r</span><span class="s">'$f_\nu~[\mu\mathrm{Jy}]$'</span><span class="p">)</span>

<span class="n">fig</span><span class="p">.</span><span class="n">tight_layout</span><span class="p">(</span><span class="n">pad</span><span class="o">=</span><span class="mi">1</span><span class="p">)</span>
</code></pre></div></div>

<p><img src="/dja/assets/post_files/2024-03-01-nirspec-extractions-v2_files/nirspec-extractions-v2_10_0.png" style="max-width:100%;" /></p>]]></content><author><name>Gabriel Brammer</name></author><category term="spectroscopy" /><category term="nirspec" /><category term="release" /><summary type="html"><![CDATA[spectroscopy nirspec release (This page is auto-generated from the Jupyter notebook nirspec-extractions-v2.ipynb.)]]></summary></entry><entry><title type="html">JWST Cycle 1 and 2 timeline</title><link href="https://dawn-cph.github.io/dja/blog/2023/08/04/visit-timeline/" rel="alternate" type="text/html" title="JWST Cycle 1 and 2 timeline" /><published>2023-08-04T10:28:44+00:00</published><updated>2023-08-04T10:28:44+00:00</updated><id>https://dawn-cph.github.io/dja/blog/2023/08/04/visit-timeline</id><content type="html" xml:base="https://dawn-cph.github.io/dja/blog/2023/08/04/visit-timeline/"><![CDATA[<p> 
    
    <a class="blog-category" href="/dja/blog/categories/#news"> news</a>
    
    
        
        <a class="blog-tag" href="/dja/blog/tags/#features"> features</a>
              
    
</p>

<p>A scrape of the Cycle 1 and 2 visit information pages is now available <a href="/dja/general/timeline/">here</a>.</p>]]></content><author><name>Gabriel Brammer</name></author><category term="news" /><category term="features" /><summary type="html"><![CDATA[news features]]></summary></entry><entry><title type="html">DJA NIRSpec Spectroscopic Data Products</title><link href="https://dawn-cph.github.io/dja/blog/2023/07/18/nirspec-data-products/" rel="alternate" type="text/html" title="DJA NIRSpec Spectroscopic Data Products" /><published>2023-07-18T19:58:23+00:00</published><updated>2023-07-18T19:58:23+00:00</updated><id>https://dawn-cph.github.io/dja/blog/2023/07/18/nirspec-data-products</id><content type="html" xml:base="https://dawn-cph.github.io/dja/blog/2023/07/18/nirspec-data-products/"><![CDATA[<p> 
    
    <a class="blog-category" href="/dja/blog/categories/#spectroscopy"> spectroscopy</a>
    
    
        
        <a class="blog-tag" href="/dja/blog/tags/#demo"> demo</a>
        
        <a class="blog-tag" href="/dja/blog/tags/#nirspec"> nirspec</a>
              
    
</p>

<p>(This page is auto-generated from the Jupyter notebook <a href="/dja/assets/post_files/2023-07-18-nirspec-data-products.ipynb">nirspec-data-products.ipynb</a>.)</p>

<p>Here we summarize the files available for the DJA reductions of the public NIRSpec MSA datasets.</p>

<p>The full interactive table can be found <a href="https://s3.amazonaws.com/msaexp-nirspec/extractions/nirspec_graded.html">here</a> and with an associated CSV catalog <a href="https://s3.amazonaws.com/msaexp-nirspec/extractions/nirspec_graded_v0.ecsv">nirspec_graded_v0.ecsv</a>.</p>

<div class="language-python highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="o">%</span><span class="n">matplotlib</span> <span class="n">inline</span>
<span class="kn">import</span> <span class="nn">os</span>
<span class="kn">import</span> <span class="nn">warnings</span>
<span class="n">warnings</span><span class="p">.</span><span class="n">filterwarnings</span><span class="p">(</span><span class="s">'ignore'</span><span class="p">)</span>

<span class="kn">import</span> <span class="nn">numpy</span> <span class="k">as</span> <span class="n">np</span>
<span class="kn">import</span> <span class="nn">matplotlib.pyplot</span> <span class="k">as</span> <span class="n">plt</span>
<span class="kn">import</span> <span class="nn">scipy.ndimage</span> <span class="k">as</span> <span class="n">nd</span>

<span class="kn">import</span> <span class="nn">astropy.io.fits</span> <span class="k">as</span> <span class="n">pyfits</span>
<span class="kn">import</span> <span class="nn">astropy.units</span> <span class="k">as</span> <span class="n">u</span>

<span class="kn">import</span> <span class="nn">sep</span>

<span class="kn">import</span> <span class="nn">grizli</span>
<span class="kn">from</span> <span class="nn">grizli</span> <span class="kn">import</span> <span class="n">utils</span>
<span class="k">print</span><span class="p">(</span><span class="sa">f</span><span class="s">'grizli version: </span><span class="si">{</span><span class="n">grizli</span><span class="p">.</span><span class="n">__version__</span><span class="si">}</span><span class="s">'</span><span class="p">)</span>

<span class="kn">import</span> <span class="nn">msaexp</span>
<span class="kn">import</span> <span class="nn">msaexp.spectrum</span>
<span class="k">print</span><span class="p">(</span><span class="sa">f</span><span class="s">'msaexp version: </span><span class="si">{</span><span class="n">msaexp</span><span class="p">.</span><span class="n">__version__</span><span class="si">}</span><span class="s">'</span><span class="p">)</span>

<span class="n">BASE_URL</span> <span class="o">=</span> <span class="s">'https://s3.amazonaws.com/msaexp-nirspec/extractions/'</span>
<span class="n">PATH_TO_FILE</span> <span class="o">=</span> <span class="n">BASE_URL</span> <span class="o">+</span> <span class="s">'{root}/{file}'</span>
</code></pre></div></div>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>grizli version: 1.10.dev3+g341a999
msaexp version: 0.6.12.dev5+ge335c82.d20230530
</code></pre></div></div>

<h1 id="full-summary-catalog">Full summary catalog</h1>

<p><code class="language-plaintext highlighter-rouge">grade</code> based on visual inspection of <em>individual</em> spectra.  That is, a particular object can have multiple entries in the table and only <code class="language-plaintext highlighter-rouge">grade=3</code> for the <code class="language-plaintext highlighter-rouge">grating+filter</code> combination that showed robust features.</p>

<ul>
  <li><strong>3</strong> = Robust</li>
  <li><strong>2</strong> = Perhaps line or continuum features, but ambiguous redshift</li>
  <li><strong>1</strong> = No features</li>
  <li><strong>0</strong> = DQ problem</li>
</ul>

<div class="language-python highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="n">nrs</span> <span class="o">=</span> <span class="n">utils</span><span class="p">.</span><span class="n">read_catalog</span><span class="p">(</span><span class="n">BASE_URL</span> <span class="o">+</span> <span class="s">'nirspec_graded_v0.ecsv'</span><span class="p">,</span> <span class="nb">format</span><span class="o">=</span><span class="s">'ascii.ecsv'</span><span class="p">)</span>
</code></pre></div></div>

<div class="language-python highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="k">print</span><span class="p">(</span><span class="s">'# Grade'</span><span class="p">)</span>
<span class="n">un</span> <span class="o">=</span> <span class="n">utils</span><span class="p">.</span><span class="n">Unique</span><span class="p">(</span><span class="n">nrs</span><span class="p">[</span><span class="s">'grade'</span><span class="p">])</span>
</code></pre></div></div>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code># Grade
   N  value     
====  ==========
 381           0
 624           2
1810           3
2309           1
</code></pre></div></div>

<div class="language-python highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="c1"># By grating
</span><span class="n">grat</span> <span class="o">=</span> <span class="n">utils</span><span class="p">.</span><span class="n">Unique</span><span class="p">(</span><span class="n">nrs</span><span class="p">[</span><span class="s">'grating'</span><span class="p">])</span>
</code></pre></div></div>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>   N  value     
====  ==========
 176  G235H     
 179  G140H     
 331  G395H     
 574  G395M     
 598  G140M     
 607  G235M     
2659  PRISM     
</code></pre></div></div>

<div class="language-python highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="c1"># By project
</span><span class="n">root</span> <span class="o">=</span> <span class="n">utils</span><span class="p">.</span><span class="n">Unique</span><span class="p">(</span><span class="n">nrs</span><span class="p">[</span><span class="s">'root'</span><span class="p">])</span>
</code></pre></div></div>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>   N  value     
====  ==========
  69  macsj0647-single-v1
 101  smacs0723-ero-v1
 111  abell2744-ddt-v1
 117  snH0pe-v1 
 132  macsj0647-v1
 143  rxj2129-ddt-v1
 154  gds-deep-hr-v1
 182  goodsn-wide-v1
 266  ceers-ddt-v1
 294  gds-deep-lr-v1
 405  whl0137-v1
 532  abell2744-glass-v1
 654  gds-deep-mr-v1
 906  ceers-mr-v1
1058  ceers-lr-v1
</code></pre></div></div>

<div class="language-python highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="c1"># Robust redshifts
</span><span class="n">robust_prism</span> <span class="o">=</span> <span class="p">(</span><span class="n">nrs</span><span class="p">[</span><span class="s">'grating'</span><span class="p">]</span> <span class="o">==</span> <span class="s">'PRISM'</span><span class="p">)</span> <span class="o">&amp;</span> <span class="p">(</span><span class="n">nrs</span><span class="p">[</span><span class="s">'grade'</span><span class="p">]</span> <span class="o">==</span> <span class="mi">3</span><span class="p">)</span>

<span class="n">roots</span> <span class="o">=</span> <span class="n">utils</span><span class="p">.</span><span class="n">Unique</span><span class="p">(</span><span class="n">nrs</span><span class="p">[</span><span class="s">'root'</span><span class="p">][</span><span class="n">robust_prism</span><span class="p">],</span> <span class="n">verbose</span><span class="o">=</span><span class="bp">False</span><span class="p">)</span>

<span class="n">nx</span> <span class="o">=</span> <span class="mi">2</span>
<span class="n">ny</span> <span class="o">=</span> <span class="nb">int</span><span class="p">(</span><span class="n">np</span><span class="p">.</span><span class="n">ceil</span><span class="p">((</span><span class="nb">len</span><span class="p">(</span><span class="n">roots</span><span class="p">)</span> <span class="o">+</span> <span class="mi">1</span><span class="p">)</span> <span class="o">/</span> <span class="mi">2</span><span class="p">))</span>

<span class="n">sx</span> <span class="o">=</span> <span class="mf">2.5</span>

<span class="n">fig</span><span class="p">,</span> <span class="n">axes</span> <span class="o">=</span> <span class="n">plt</span><span class="p">.</span><span class="n">subplots</span><span class="p">(</span><span class="n">ny</span><span class="p">,</span><span class="n">nx</span><span class="p">,</span><span class="n">sharex</span><span class="o">=</span><span class="bp">True</span><span class="p">,</span> <span class="n">sharey</span><span class="o">=</span><span class="bp">False</span><span class="p">,</span> <span class="n">figsize</span><span class="o">=</span><span class="p">(</span><span class="n">nx</span><span class="o">*</span><span class="n">sx</span><span class="o">*</span><span class="mi">2</span><span class="p">,</span> <span class="n">ny</span><span class="o">*</span><span class="n">sx</span><span class="p">))</span>

<span class="n">lnz</span> <span class="o">=</span> <span class="n">np</span><span class="p">.</span><span class="n">log</span><span class="p">(</span><span class="mi">1</span><span class="o">+</span><span class="n">nrs</span><span class="p">[</span><span class="s">'z'</span><span class="p">])</span>

<span class="n">bins</span> <span class="o">=</span> <span class="n">utils</span><span class="p">.</span><span class="n">log_zgrid</span><span class="p">([</span><span class="mf">0.1</span><span class="p">,</span> <span class="mi">13</span><span class="p">],</span> <span class="mf">0.1</span><span class="p">)</span>

<span class="n">xtv</span> <span class="o">=</span> <span class="p">[</span><span class="mi">0</span><span class="p">,</span><span class="mi">1</span><span class="p">,</span><span class="mi">2</span><span class="p">,</span><span class="mi">3</span><span class="p">,</span><span class="mi">4</span><span class="p">,</span><span class="mi">5</span><span class="p">,</span><span class="mi">6</span><span class="p">,</span><span class="mi">7</span><span class="p">,</span><span class="mi">8</span><span class="p">,</span><span class="mi">9</span><span class="p">,</span><span class="mi">10</span><span class="p">,</span><span class="mi">11</span><span class="p">,</span><span class="mi">12</span><span class="p">,</span><span class="mi">13</span><span class="p">]</span>
<span class="n">xtl</span> <span class="o">=</span> <span class="p">[</span><span class="mi">0</span><span class="p">,</span><span class="mi">1</span><span class="p">,</span><span class="mi">2</span><span class="p">,</span><span class="mi">3</span><span class="p">,</span><span class="mi">4</span><span class="p">,</span><span class="mi">5</span><span class="p">,</span><span class="mi">6</span><span class="p">,</span><span class="mi">7</span><span class="p">,</span><span class="mi">8</span><span class="p">,</span><span class="mi">9</span><span class="p">,</span><span class="mi">10</span><span class="p">,</span><span class="s">''</span><span class="p">,</span><span class="mi">12</span><span class="p">,</span><span class="s">''</span><span class="p">]</span>

<span class="n">_</span> <span class="o">=</span> <span class="n">axes</span><span class="p">[</span><span class="mi">0</span><span class="p">][</span><span class="mi">0</span><span class="p">].</span><span class="n">hist</span><span class="p">(</span><span class="n">lnz</span><span class="p">[</span><span class="n">robust_prism</span><span class="p">],</span> <span class="n">bins</span><span class="o">=</span><span class="n">np</span><span class="p">.</span><span class="n">log</span><span class="p">(</span><span class="mi">1</span><span class="o">+</span><span class="n">bins</span><span class="p">))</span>
<span class="n">axes</span><span class="p">[</span><span class="mi">0</span><span class="p">][</span><span class="mi">0</span><span class="p">].</span><span class="n">set_ylabel</span><span class="p">(</span><span class="s">'All PRISM'</span><span class="p">)</span>
<span class="n">axes</span><span class="p">[</span><span class="mi">0</span><span class="p">][</span><span class="mi">0</span><span class="p">].</span><span class="n">grid</span><span class="p">()</span>

<span class="n">count</span> <span class="o">=</span> <span class="mi">0</span>

<span class="k">for</span> <span class="n">root</span> <span class="ow">in</span> <span class="n">roots</span><span class="p">.</span><span class="n">values</span><span class="p">:</span>
    <span class="n">count</span> <span class="o">+=</span> <span class="mi">1</span>
    <span class="n">i</span> <span class="o">=</span> <span class="n">count</span> <span class="o">//</span> <span class="n">ny</span>
    <span class="n">j</span> <span class="o">=</span> <span class="n">count</span> <span class="o">-</span> <span class="n">ny</span><span class="o">*</span><span class="n">i</span>
    
    <span class="n">_</span> <span class="o">=</span> <span class="n">axes</span><span class="p">[</span><span class="n">j</span><span class="p">][</span><span class="n">i</span><span class="p">].</span><span class="n">hist</span><span class="p">(</span><span class="n">lnz</span><span class="p">[</span><span class="n">robust_prism</span><span class="p">][</span><span class="n">roots</span><span class="p">[</span><span class="n">root</span><span class="p">]],</span> <span class="n">bins</span><span class="o">=</span><span class="n">np</span><span class="p">.</span><span class="n">log</span><span class="p">(</span><span class="mi">1</span><span class="o">+</span><span class="n">bins</span><span class="p">))</span>
    <span class="n">axes</span><span class="p">[</span><span class="n">j</span><span class="p">][</span><span class="n">i</span><span class="p">].</span><span class="n">set_ylabel</span><span class="p">(</span><span class="n">root</span><span class="p">)</span>
    <span class="n">axes</span><span class="p">[</span><span class="n">j</span><span class="p">][</span><span class="n">i</span><span class="p">].</span><span class="n">grid</span><span class="p">()</span>
    
<span class="n">axes</span><span class="p">[</span><span class="n">j</span><span class="p">][</span><span class="n">i</span><span class="p">].</span><span class="n">set_xticks</span><span class="p">(</span><span class="n">np</span><span class="p">.</span><span class="n">log</span><span class="p">(</span><span class="mi">1</span><span class="o">+</span><span class="n">np</span><span class="p">.</span><span class="n">array</span><span class="p">(</span><span class="n">xtv</span><span class="p">)))</span>
<span class="n">axes</span><span class="p">[</span><span class="n">j</span><span class="p">][</span><span class="n">i</span><span class="p">].</span><span class="n">set_xticklabels</span><span class="p">(</span><span class="n">xtl</span><span class="p">)</span>

<span class="k">for</span> <span class="n">last</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="n">count</span><span class="o">*</span><span class="mi">1</span><span class="p">,</span> <span class="n">nx</span><span class="o">*</span><span class="n">ny</span><span class="o">-</span><span class="mi">1</span><span class="p">):</span>
    <span class="n">count</span> <span class="o">+=</span> <span class="mi">1</span>
    <span class="n">i</span> <span class="o">=</span> <span class="n">count</span> <span class="o">//</span> <span class="n">ny</span>
    <span class="n">j</span> <span class="o">=</span> <span class="n">count</span> <span class="o">-</span> <span class="n">ny</span><span class="o">*</span><span class="n">i</span>
    
    <span class="n">_</span> <span class="o">=</span> <span class="n">axes</span><span class="p">[</span><span class="n">j</span><span class="p">][</span><span class="n">i</span><span class="p">].</span><span class="n">axis</span><span class="p">(</span><span class="s">'off'</span><span class="p">)</span>

<span class="n">_</span> <span class="o">=</span> <span class="n">fig</span><span class="p">.</span><span class="n">tight_layout</span><span class="p">(</span><span class="n">pad</span><span class="o">=</span><span class="mi">1</span><span class="p">)</span>

</code></pre></div></div>

<p><img src="/dja/assets/post_files/2023-07-18-nirspec-data-products_files/nirspec-data-products_8_0.png" alt="png" /></p>

<h1 id="look-at-a-source-from-jades-deep">Look at a source from JADES-DEEP</h1>

<div class="language-python highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="c1"># id = '58975' # remarkable z=9
# ymax = [1, 0.2, 0.7, 0.7]
# xlimits = [(0.5, 5.4), (0.5, 2.2), (3.9, 4.6), (5.0, 5.3)]
</span>
<span class="c1"># id = '35180' # bright z=1.8
# ymax = [2]*4
</span>
<span class="nb">id</span> <span class="o">=</span> <span class="s">'15157'</span> <span class="c1"># z=4.1
</span><span class="n">ymax</span> <span class="o">=</span> <span class="p">[</span><span class="mf">0.8</span><span class="p">,</span> <span class="mf">0.4</span><span class="p">,</span> <span class="mf">0.8</span><span class="p">,</span> <span class="mf">0.8</span><span class="p">]</span>
<span class="n">xlimits</span> <span class="o">=</span> <span class="p">[(</span><span class="mf">0.5</span><span class="p">,</span> <span class="mf">5.4</span><span class="p">),</span> <span class="p">(</span><span class="mf">0.5</span><span class="p">,</span> <span class="mf">2.2</span><span class="p">),</span> <span class="p">(</span><span class="mf">2.2</span><span class="p">,</span> <span class="mf">2.8</span><span class="p">),</span> <span class="p">(</span><span class="mf">3.18</span><span class="p">,</span> <span class="mf">3.6</span><span class="p">)]</span>
</code></pre></div></div>

<div class="language-python highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="n">is_gds</span> <span class="o">=</span> <span class="n">np</span><span class="p">.</span><span class="n">array</span><span class="p">([</span><span class="n">f</span><span class="p">.</span><span class="n">startswith</span><span class="p">(</span><span class="s">'gds-deep'</span><span class="p">)</span> <span class="k">for</span> <span class="n">f</span> <span class="ow">in</span> <span class="n">nrs</span><span class="p">[</span><span class="s">'file'</span><span class="p">]])</span>

<span class="n">src</span> <span class="o">=</span> <span class="n">np</span><span class="p">.</span><span class="n">array</span><span class="p">([</span><span class="nb">id</span> <span class="ow">in</span> <span class="n">f</span> <span class="k">for</span> <span class="n">f</span> <span class="ow">in</span> <span class="n">nrs</span><span class="p">[</span><span class="s">'file'</span><span class="p">]])</span> <span class="o">&amp;</span> <span class="n">is_gds</span>

<span class="n">nrs</span><span class="p">[</span><span class="s">'root'</span><span class="p">,</span><span class="s">'file'</span><span class="p">,</span><span class="s">'grating'</span><span class="p">,</span><span class="s">'filter'</span><span class="p">,</span><span class="s">'z'</span><span class="p">,</span><span class="s">'grade'</span><span class="p">][</span><span class="n">src</span><span class="p">]</span>

<span class="n">urls</span> <span class="o">=</span> <span class="p">[</span><span class="n">PATH_TO_FILE</span><span class="p">.</span><span class="nb">format</span><span class="p">(</span><span class="o">**</span><span class="n">row</span><span class="p">)</span> <span class="k">for</span> <span class="n">row</span> <span class="ow">in</span> <span class="n">nrs</span><span class="p">[</span><span class="n">src</span><span class="p">]]</span>

<span class="n">z</span> <span class="o">=</span> <span class="n">np</span><span class="p">.</span><span class="n">mean</span><span class="p">(</span><span class="n">nrs</span><span class="p">[</span><span class="s">'z'</span><span class="p">][</span><span class="n">src</span> <span class="o">&amp;</span> <span class="p">(</span><span class="n">nrs</span><span class="p">[</span><span class="s">'grade'</span><span class="p">]</span> <span class="o">==</span> <span class="mi">3</span><span class="p">)])</span>

<span class="n">nrs</span><span class="p">[</span><span class="n">src</span><span class="p">][</span><span class="s">'root'</span><span class="p">,</span><span class="s">'file'</span><span class="p">,</span><span class="s">'grating'</span><span class="p">,</span><span class="s">'filter'</span><span class="p">,</span><span class="s">'z'</span><span class="p">,</span><span class="s">'grade'</span><span class="p">]</span>
</code></pre></div></div>

<div><i>GTable length=5</i>
<table id="table11021072080" class="table-striped table-bordered table-condensed">
<thead><tr><th>root</th><th>file</th><th>grating</th><th>filter</th><th>z</th><th>grade</th></tr></thead>
<thead><tr><th>str19</th><th>str53</th><th>str5</th><th>str6</th><th>float64</th><th>int64</th></tr></thead>
<tr><td>gds-deep-hr-v1</td><td>gds-deep-hr-v1_g395h-f290lp_1210_15157.spec.fits</td><td>G395H</td><td>F290LP</td><td>4.1486</td><td>3</td></tr>
<tr><td>gds-deep-lr-v1</td><td>gds-deep-lr-v1_prism-clear_1210_15157.spec.fits</td><td>PRISM</td><td>CLEAR</td><td>4.1499</td><td>3</td></tr>
<tr><td>gds-deep-mr-v1</td><td>gds-deep-mr-v1_g140m-f070lp_1210_15157.spec.fits</td><td>G140M</td><td>F070LP</td><td>4.2156</td><td>1</td></tr>
<tr><td>gds-deep-mr-v1</td><td>gds-deep-mr-v1_g235m-f170lp_1210_15157.spec.fits</td><td>G235M</td><td>F170LP</td><td>4.1482</td><td>3</td></tr>
<tr><td>gds-deep-mr-v1</td><td>gds-deep-mr-v1_g395m-f290lp_1210_15157.spec.fits</td><td>G395M</td><td>F290LP</td><td>4.1482</td><td>3</td></tr>
</table></div>

<h2 id="slitlet-viewer">Slitlet viewer</h2>

<p>URLs like:</p>

<p><a href="https://grizli-cutout.herokuapp.com/thumb?size=1&amp;scl=7.0&amp;invert=True&amp;filters=f444w-clear&amp;pl=2&amp;coord=53.113326%20-27.802992&amp;nirspec=True&amp;dpi_scale=6&amp;nrs_source=magenta&amp;nrs_other=pink&amp;nrs_lw=0.5&amp;nrs_alpha=0.8">https://grizli-cutout.herokuapp.com/thumb?size=1&amp;scl=7.0&amp;invert=True&amp;filters=f444w-clear&amp;pl=2&amp;coord=53.113326%20-27.802992&amp;nirspec=True&amp;dpi_scale=6&amp;nrs_source=magenta&amp;nrs_other=pink&amp;nrs_lw=0.5&amp;nrs_alpha=0.8</a></p>

<p><img src="https://grizli-cutout.herokuapp.com/thumb?size=1&amp;scl=7.0&amp;invert=True&amp;filters=f444w-clear&amp;pl=2&amp;coord=53.113326%20-27.802992&amp;nirspec=True&amp;dpi_scale=6&amp;nrs_source=magenta&amp;nrs_other=pink&amp;nrs_lw=0.5&amp;nrs_alpha=0.8" /></p>

<h2 id="2d-spectra">2D spectra</h2>

<div class="language-python highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="k">for</span> <span class="n">u</span> <span class="ow">in</span> <span class="n">urls</span><span class="p">:</span>
    <span class="k">if</span> <span class="s">'prism'</span> <span class="ow">in</span> <span class="n">u</span><span class="p">:</span>
        <span class="k">break</span>

<span class="k">print</span><span class="p">(</span><span class="sa">f</span><span class="s">'Load 2D file: </span><span class="si">{</span><span class="n">u</span><span class="si">}</span><span class="s">'</span><span class="p">)</span>

<span class="n">img</span> <span class="o">=</span> <span class="n">pyfits</span><span class="p">.</span><span class="nb">open</span><span class="p">(</span><span class="n">u</span><span class="p">)</span>
<span class="n">spec</span> <span class="o">=</span> <span class="n">utils</span><span class="p">.</span><span class="n">GTable</span><span class="p">(</span><span class="n">img</span><span class="p">[</span><span class="s">'SPEC1D'</span><span class="p">].</span><span class="n">data</span><span class="p">)</span>
<span class="n">img</span><span class="p">.</span><span class="n">info</span><span class="p">()</span>
</code></pre></div></div>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>Load 2D file: https://s3.amazonaws.com/msaexp-nirspec/extractions/gds-deep-lr-v1/gds-deep-lr-v1_prism-clear_1210_15157.spec.fits
Filename: /Users/gbrammer/.astropy/cache/download/url/8f02d3866629baee18593ec239973c9c/contents
No.    Name      Ver    Type      Cards   Dimensions   Format
  0  PRIMARY       1 PrimaryHDU       4   ()      
  1  SPEC1D        1 BinTableHDU   1504   435R x 3C   ['D', 'D', 'D']   
  2  SCI           1 ImageHDU      1494   (435, 41)   float32   
  3  WHT           1 ImageHDU      1494   (435, 41)   float32   
  4  PROFILE       1 ImageHDU      1494   (435, 41)   float64   
  5  PROF1D        1 BinTableHDU     25   41R x 3C   [D, E, D]   
</code></pre></div></div>

<div class="language-python highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="c1"># Metadata and exposure data
</span><span class="k">for</span> <span class="n">i</span><span class="p">,</span> <span class="n">k</span> <span class="ow">in</span> <span class="nb">enumerate</span><span class="p">(</span><span class="n">img</span><span class="p">[</span><span class="s">'SCI'</span><span class="p">].</span><span class="n">header</span><span class="p">):</span>
    <span class="k">print</span><span class="p">(</span><span class="sa">f</span><span class="s">"</span><span class="si">{</span><span class="n">k</span><span class="si">}</span><span class="s"> : </span><span class="si">{</span><span class="n">img</span><span class="p">[</span><span class="s">'SCI'</span><span class="p">].</span><span class="n">header</span><span class="p">[</span><span class="n">k</span><span class="p">]</span><span class="si">}</span><span class="s">"</span><span class="p">)</span>
    <span class="k">if</span> <span class="n">k</span> <span class="o">==</span> <span class="s">'FILE2'</span><span class="p">:</span>
        <span class="k">break</span>
        
<span class="k">print</span><span class="p">(</span><span class="s">'...'</span><span class="p">)</span>
</code></pre></div></div>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>XTENSION : IMAGE
BITPIX : -32
NAXIS : 2
NAXIS1 : 435
NAXIS2 : 41
PCOUNT : 0
GCOUNT : 1
CRPIX1 : 218
CRPIX2 : 21
CRPIX3 : 1
CRVAL1 : 34478.17210692866
CRVAL2 : 53.11342711704571
CRVAL3 : -27.80296418104931
CD1_1 : 112.0143042734245
CD2_2 : -2.5018683716805e-05
CD3_2 : 4.3106889543069e-06
CD2_3 : 1.0
CD3_3 : 1.0
CTYPE1 : WAVELEN
CTYPE2 : RA---TAN
CTYPE3 : DEC--TAN
CUNIT1 : Angstrom
CUNIT2 : deg
CUNIT3 : deg
RADESYS : ICRS
WCSNAME : SLITWCS
SLIT_PA : 99.77600798539926
PSCALE : 0.09145217434882043
SLIT_Y0 : 0.1046029202771379
SLIT_DY : -0.2
LMIN : 5.336618171269953
DLAM : 0.01120143042734245
BKGOFF : 6
OTHRESH : 30
WSAMPLE : 1.05
LOGWAVE : False
BUNIT : mJy
GRATING : PRISM
FILTER : CLEAR
NFILES : 36
EFFEXPTM : 99788.00399999997
SRCNAME : 1210_15157
SRCID : 15157
SRCRA : 53.113326
SRCDEC : -27.80299179999997
FILE1 : jw01210001001_11101_00001_nrs1_phot.247.1210_15157.fits
CALVER1 : 1.9.4
CRDS1 : jwst_1084.pmap
GRAT1 : PRISM
FILTER1 : CLEAR
MSAMET1 : jw01210001001_02_msa.fits
MSAID1 : 117
MSACNF1 : 2
SLITID1 : 247
SRCNAM1 : 1210_15157
SRCID1 : 15157
SRCRA1 : 53.113326
SRCDEC1 : -27.80299179999997
PIXSR1 : 4.83547881464665e-13
TOUJY1 : 0.483547881464665
DETECT1 : NRS1
XSTART1 : 1323
XSIZE1 : 425
YSTART1 : 233
YSIZE1 : 20
RA_REF1 : 53.1410916104911
DE_REF1 : -27.79159354885499
RL_REF1 : -38.97457220320062
V2_REF1 : 378.563202
V3_REF1 : -428.402832
V3YANG1 : 138.5745697
RA_V11 : 52.96411558412523
DEC_V11 : -27.76510758004405
PA_V31 : 321.1077987432105
EXPSTR1 : 59873.16264294121
EXPEND1 : 59873.16264294121
EFFEXP1 : 2771.889
DITHN1 : 1
DITHX1 : 7.646252570500947
DITHY1 : 29.2702219123212
DITHT1 : 3-SHUTTER-SLITLET
NFRAM1 : 5
NGRP1 : 19
NINTS1 : 2
RDPAT1 : NRSIRS2
FILE2 : jw01210001001_11101_00002_nrs1_phot.247.1210_15157.fits
...
</code></pre></div></div>

<div class="language-python highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="n">fig</span><span class="p">,</span> <span class="n">axes</span> <span class="o">=</span> <span class="n">plt</span><span class="p">.</span><span class="n">subplots</span><span class="p">(</span><span class="mi">3</span><span class="p">,</span><span class="mi">1</span><span class="p">,</span> <span class="n">figsize</span><span class="o">=</span><span class="p">(</span><span class="mi">8</span><span class="p">,</span> <span class="mi">5</span><span class="p">),</span> <span class="n">sharex</span><span class="o">=</span><span class="bp">True</span><span class="p">,</span> <span class="n">sharey</span><span class="o">=</span><span class="bp">True</span><span class="p">)</span>

<span class="n">msk</span> <span class="o">=</span> <span class="n">img</span><span class="p">[</span><span class="s">'WHT'</span><span class="p">].</span><span class="n">data</span> <span class="o">&gt;</span> <span class="mi">0</span>

<span class="k">for</span> <span class="n">i</span><span class="p">,</span> <span class="n">k</span> <span class="ow">in</span> <span class="nb">enumerate</span><span class="p">([</span><span class="s">'SCI'</span><span class="p">,</span><span class="s">'WHT'</span><span class="p">,</span><span class="s">'PROFILE'</span><span class="p">]):</span>
    <span class="n">_data</span> <span class="o">=</span> <span class="n">img</span><span class="p">[</span><span class="n">k</span><span class="p">].</span><span class="n">data</span>
    <span class="n">vm</span> <span class="o">=</span> <span class="n">np</span><span class="p">.</span><span class="n">percentile</span><span class="p">(</span><span class="n">_data</span><span class="p">[</span><span class="n">msk</span><span class="p">],</span> <span class="p">[</span><span class="mi">2</span><span class="p">,</span><span class="mi">99</span><span class="p">])</span>
    <span class="n">ax</span> <span class="o">=</span> <span class="n">axes</span><span class="p">[</span><span class="n">i</span><span class="p">]</span>
    <span class="n">ax</span><span class="p">.</span><span class="n">imshow</span><span class="p">(</span><span class="n">_data</span><span class="p">,</span> <span class="n">vmin</span><span class="o">=</span><span class="n">vm</span><span class="p">[</span><span class="mi">0</span><span class="p">],</span> <span class="n">vmax</span><span class="o">=</span><span class="n">vm</span><span class="p">[</span><span class="mi">1</span><span class="p">],</span> <span class="n">cmap</span><span class="o">=</span><span class="s">'plasma_r'</span><span class="p">,</span> <span class="n">aspect</span><span class="o">=</span><span class="s">'auto'</span><span class="p">)</span>
    <span class="n">ax</span><span class="p">.</span><span class="n">set_ylabel</span><span class="p">(</span><span class="n">k</span><span class="p">)</span>
    <span class="n">ax</span><span class="p">.</span><span class="n">set_yticklabels</span><span class="p">([])</span>
    
<span class="n">xtv</span> <span class="o">=</span> <span class="p">[</span><span class="mi">1</span><span class="p">,</span><span class="mi">2</span><span class="p">,</span><span class="mi">3</span><span class="p">,</span><span class="mi">4</span><span class="p">,</span><span class="mi">5</span><span class="p">]</span>
<span class="n">xti</span> <span class="o">=</span> <span class="n">np</span><span class="p">.</span><span class="n">interp</span><span class="p">(</span><span class="n">xtv</span><span class="p">,</span> <span class="n">spec</span><span class="p">[</span><span class="s">'wave'</span><span class="p">],</span> <span class="n">np</span><span class="p">.</span><span class="n">arange</span><span class="p">(</span><span class="nb">len</span><span class="p">(</span><span class="n">spec</span><span class="p">)))</span>

<span class="n">a2</span> <span class="o">=</span> <span class="n">axes</span><span class="p">[</span><span class="mi">0</span><span class="p">].</span><span class="n">twiny</span><span class="p">()</span>
<span class="n">a2</span><span class="p">.</span><span class="n">set_xlabel</span><span class="p">(</span><span class="s">'pix'</span><span class="p">)</span>
<span class="n">a2</span><span class="p">.</span><span class="n">set_xlim</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="n">_data</span><span class="p">.</span><span class="n">shape</span><span class="p">[</span><span class="mi">1</span><span class="p">])</span>

<span class="n">ax</span><span class="p">.</span><span class="n">set_xticks</span><span class="p">(</span><span class="n">xti</span><span class="p">)</span>
<span class="n">ax</span><span class="p">.</span><span class="n">set_xticklabels</span><span class="p">(</span><span class="n">xtv</span><span class="p">)</span>

<span class="n">ax</span><span class="p">.</span><span class="n">set_xlabel</span><span class="p">(</span><span class="sa">r</span><span class="s">'$\lambda_\mathrm{obs}\,[\mu\mathrm{m}]$'</span><span class="p">)</span>

<span class="n">_</span> <span class="o">=</span> <span class="n">fig</span><span class="p">.</span><span class="n">tight_layout</span><span class="p">(</span><span class="n">pad</span><span class="o">=</span><span class="mi">1</span><span class="p">)</span>
</code></pre></div></div>

<p><img src="/dja/assets/post_files/2023-07-18-nirspec-data-products_files/nirspec-data-products_16_0.png" alt="png" /></p>

<h2 id="optimal-extraction-profile">Optimal extraction profile</h2>

<p>The 1D spectrum is created with an “optimal” (<a href="https://ui.adsabs.harvard.edu/abs/1986PASP...98..609H/">Horne 1986</a>) extraction where the profile was fit to the observed spectrum both in terms of the center and wavelength-dependent width.</p>

<div class="language-python highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="c1"># Collapsed 1D profile
</span><span class="n">p1</span> <span class="o">=</span> <span class="n">utils</span><span class="p">.</span><span class="n">GTable</span><span class="p">(</span><span class="n">img</span><span class="p">[</span><span class="s">'PROF1D'</span><span class="p">].</span><span class="n">data</span><span class="p">)</span>

<span class="n">fig</span><span class="p">,</span> <span class="n">ax</span> <span class="o">=</span> <span class="n">plt</span><span class="p">.</span><span class="n">subplots</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span><span class="mi">1</span><span class="p">,</span><span class="n">figsize</span><span class="o">=</span><span class="p">(</span><span class="mi">5</span><span class="p">,</span><span class="mi">3</span><span class="p">))</span>
<span class="n">ax</span><span class="p">.</span><span class="n">plot</span><span class="p">(</span><span class="n">p1</span><span class="p">[</span><span class="s">'pix'</span><span class="p">],</span> <span class="n">p1</span><span class="p">[</span><span class="s">'profile'</span><span class="p">],</span> <span class="n">label</span><span class="o">=</span><span class="s">'data'</span><span class="p">,</span> <span class="n">color</span><span class="o">=</span><span class="s">'k'</span><span class="p">)</span>
<span class="n">ax</span><span class="p">.</span><span class="n">plot</span><span class="p">(</span><span class="n">p1</span><span class="p">[</span><span class="s">'pix'</span><span class="p">],</span> <span class="n">p1</span><span class="p">[</span><span class="s">'pfit'</span><span class="p">],</span> <span class="n">label</span><span class="o">=</span><span class="s">'fit'</span><span class="p">,</span> <span class="n">color</span><span class="o">=</span><span class="s">'r'</span><span class="p">,</span> <span class="n">lw</span><span class="o">=</span><span class="mi">4</span><span class="p">,</span> <span class="n">alpha</span><span class="o">=</span><span class="mf">0.5</span><span class="p">)</span>

<span class="n">ax</span><span class="p">.</span><span class="n">set_xlabel</span><span class="p">(</span><span class="sa">r</span><span class="s">'$\Delta y$, pix'</span><span class="p">)</span>
<span class="n">ax</span><span class="p">.</span><span class="n">set_ylabel</span><span class="p">(</span><span class="s">'Collapsed profile'</span><span class="p">)</span>
<span class="n">ax</span><span class="p">.</span><span class="n">legend</span><span class="p">()</span>

<span class="n">ax</span><span class="p">.</span><span class="n">grid</span><span class="p">()</span>

</code></pre></div></div>

<p><img src="/dja/assets/post_files/2023-07-18-nirspec-data-products_files/nirspec-data-products_18_0.png" alt="png" /></p>

<div class="language-python highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="n">wlims</span> <span class="o">=</span> <span class="p">[(</span><span class="mf">1.8</span><span class="p">,</span> <span class="mf">2.1</span><span class="p">),</span> <span class="p">(</span><span class="mi">5</span><span class="p">,</span> <span class="mf">5.2</span><span class="p">)]</span>
<span class="n">fig</span><span class="p">,</span> <span class="n">ax</span> <span class="o">=</span> <span class="n">plt</span><span class="p">.</span><span class="n">subplots</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span> <span class="mi">1</span><span class="p">,</span> <span class="n">figsize</span><span class="o">=</span><span class="p">(</span><span class="mi">8</span><span class="p">,</span> <span class="mi">4</span><span class="p">),</span> <span class="n">sharex</span><span class="o">=</span><span class="bp">True</span><span class="p">)</span>

<span class="n">w2d</span> <span class="o">=</span> <span class="n">np</span><span class="p">.</span><span class="n">ones</span><span class="p">(</span><span class="n">img</span><span class="p">[</span><span class="s">'SCI'</span><span class="p">].</span><span class="n">data</span><span class="p">.</span><span class="n">shape</span><span class="p">)</span><span class="o">*</span><span class="n">spec</span><span class="p">[</span><span class="s">'wave'</span><span class="p">]</span>

<span class="k">for</span> <span class="n">i</span><span class="p">,</span> <span class="n">wlim</span> <span class="ow">in</span> <span class="nb">enumerate</span><span class="p">(</span><span class="n">wlims</span><span class="p">):</span>
    <span class="n">msk</span> <span class="o">=</span> <span class="p">(</span><span class="n">w2d</span> <span class="o">&gt;</span> <span class="n">wlim</span><span class="p">[</span><span class="mi">0</span><span class="p">])</span> <span class="o">&amp;</span> <span class="p">(</span><span class="n">w2d</span> <span class="o">&lt;</span> <span class="n">wlim</span><span class="p">[</span><span class="mi">1</span><span class="p">])</span> <span class="o">&amp;</span> <span class="p">(</span><span class="n">img</span><span class="p">[</span><span class="s">'WHT'</span><span class="p">].</span><span class="n">data</span> <span class="o">&gt;</span> <span class="mi">0</span><span class="p">)</span>
    <span class="n">ydata</span> <span class="o">=</span> <span class="p">(</span><span class="n">img</span><span class="p">[</span><span class="s">'SCI'</span><span class="p">].</span><span class="n">data</span><span class="o">*</span><span class="n">msk</span><span class="p">).</span><span class="nb">sum</span><span class="p">(</span><span class="n">axis</span><span class="o">=</span><span class="mi">1</span><span class="p">)</span>
    <span class="n">pdata</span> <span class="o">=</span> <span class="p">(</span><span class="n">img</span><span class="p">[</span><span class="s">'PROFILE'</span><span class="p">].</span><span class="n">data</span><span class="o">*</span><span class="n">msk</span><span class="p">).</span><span class="nb">sum</span><span class="p">(</span><span class="n">axis</span><span class="o">=</span><span class="mi">1</span><span class="p">)</span>
    
    <span class="n">anorm</span> <span class="o">=</span> <span class="p">(</span><span class="n">ydata</span><span class="o">*</span><span class="n">pdata</span><span class="p">).</span><span class="nb">sum</span><span class="p">()</span><span class="o">/</span><span class="p">(</span><span class="n">pdata</span><span class="o">**</span><span class="mi">2</span><span class="p">).</span><span class="nb">sum</span><span class="p">()</span>
    <span class="n">pdata</span> <span class="o">*=</span> <span class="n">anorm</span>
    <span class="n">norm</span> <span class="o">=</span> <span class="n">pdata</span><span class="p">.</span><span class="nb">sum</span><span class="p">()</span>
    
    <span class="n">pl</span> <span class="o">=</span> <span class="n">ax</span><span class="p">.</span><span class="n">plot</span><span class="p">(</span><span class="n">ydata</span><span class="o">/</span><span class="n">norm</span><span class="p">,</span> <span class="n">label</span><span class="o">=</span><span class="sa">r</span><span class="s">'$xx &lt; \lambda &lt; yy$'</span><span class="p">.</span><span class="n">replace</span><span class="p">(</span><span class="s">'xx'</span><span class="p">,</span> <span class="sa">f</span><span class="s">'</span><span class="si">{</span><span class="n">wlim</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="si">:</span><span class="p">.</span><span class="mi">1</span><span class="n">f</span><span class="si">}</span><span class="s">'</span><span class="p">).</span><span class="n">replace</span><span class="p">(</span><span class="s">'yy'</span><span class="p">,</span> <span class="sa">f</span><span class="s">'</span><span class="si">{</span><span class="n">wlim</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span><span class="si">:</span><span class="p">.</span><span class="mi">1</span><span class="n">f</span><span class="si">}</span><span class="s">'</span><span class="p">))</span>
    <span class="n">ax</span><span class="p">.</span><span class="n">plot</span><span class="p">(</span><span class="n">pdata</span><span class="o">/</span><span class="n">norm</span><span class="p">,</span> <span class="n">label</span><span class="o">=</span><span class="s">'profile'</span><span class="p">,</span> <span class="n">color</span><span class="o">=</span><span class="n">pl</span><span class="p">[</span><span class="mi">0</span><span class="p">].</span><span class="n">get_color</span><span class="p">(),</span> <span class="n">linestyle</span><span class="o">=</span><span class="s">'--'</span><span class="p">)</span>
    
<span class="n">ax</span><span class="p">.</span><span class="n">set_ylim</span><span class="p">(</span><span class="o">-</span><span class="mf">0.18</span><span class="p">,</span> <span class="mf">0.5</span><span class="p">)</span>
<span class="n">ax</span><span class="p">.</span><span class="n">legend</span><span class="p">()</span>
<span class="n">ax</span><span class="p">.</span><span class="n">set_xlim</span><span class="p">(</span><span class="mi">10</span><span class="p">,</span><span class="mi">30</span><span class="p">)</span>
<span class="n">ax</span><span class="p">.</span><span class="n">grid</span><span class="p">()</span>

</code></pre></div></div>

<p><img src="/dja/assets/post_files/2023-07-18-nirspec-data-products_files/nirspec-data-products_19_0.png" alt="png" /></p>

<h2 id="1d-spectra">1D spectra</h2>

<p>Some tools in <a href="https://github.com/gbrammer/msaexp/blob/main/msaexp/spectrum.py#L122">msaexp.spectrum.SpectrumSampler</a> for interacting with 1D spectra.</p>

<div class="language-python highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="c1"># Open the files into 1D objects, directly from the web
</span><span class="n">sobj</span> <span class="o">=</span> <span class="p">{}</span>
<span class="k">for</span> <span class="n">u</span> <span class="ow">in</span> <span class="n">urls</span><span class="p">:</span>
    <span class="k">print</span><span class="p">(</span><span class="sa">f</span><span class="s">'Read </span><span class="si">{</span><span class="n">u</span><span class="si">}</span><span class="s">'</span><span class="p">)</span>
    <span class="n">key</span> <span class="o">=</span> <span class="n">os</span><span class="p">.</span><span class="n">path</span><span class="p">.</span><span class="n">basename</span><span class="p">(</span><span class="n">u</span><span class="p">)</span>
    <span class="n">sobj</span><span class="p">[</span><span class="n">key</span><span class="p">]</span> <span class="o">=</span> <span class="n">msaexp</span><span class="p">.</span><span class="n">spectrum</span><span class="p">.</span><span class="n">SpectrumSampler</span><span class="p">(</span><span class="n">u</span><span class="p">)</span>
</code></pre></div></div>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>Read https://s3.amazonaws.com/msaexp-nirspec/extractions/gds-deep-hr-v1/gds-deep-hr-v1_g395h-f290lp_1210_15157.spec.fits
Read https://s3.amazonaws.com/msaexp-nirspec/extractions/gds-deep-lr-v1/gds-deep-lr-v1_prism-clear_1210_15157.spec.fits
Read https://s3.amazonaws.com/msaexp-nirspec/extractions/gds-deep-mr-v1/gds-deep-mr-v1_g140m-f070lp_1210_15157.spec.fits
Read https://s3.amazonaws.com/msaexp-nirspec/extractions/gds-deep-mr-v1/gds-deep-mr-v1_g235m-f170lp_1210_15157.spec.fits
Read https://s3.amazonaws.com/msaexp-nirspec/extractions/gds-deep-mr-v1/gds-deep-mr-v1_g395m-f290lp_1210_15157.spec.fits
</code></pre></div></div>

<div class="language-python highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="c1"># A single (prism) spectrum
</span>
<span class="k">for</span> <span class="n">i</span><span class="p">,</span> <span class="n">k</span> <span class="ow">in</span> <span class="nb">enumerate</span><span class="p">(</span><span class="n">sobj</span><span class="p">):</span>
    <span class="k">if</span> <span class="s">'prism'</span> <span class="ow">in</span> <span class="n">k</span><span class="p">:</span>
        <span class="k">break</span>

<span class="n">sp</span> <span class="o">=</span> <span class="n">sobj</span><span class="p">[</span><span class="n">k</span><span class="p">]</span>
<span class="n">sp</span><span class="p">.</span><span class="n">spec</span><span class="p">.</span><span class="n">info</span><span class="p">()</span>
</code></pre></div></div>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>&lt;GTable length=435&gt;
  name    dtype  unit
-------- ------- ----
    wave float64     
    flux float64     
     err float64     
    corr float64     
  escale float64     
full_err float64  uJy
   valid    bool     
       R float64     
 to_flam float64     
</code></pre></div></div>

<div class="language-python highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="c1"># Metadata about the 1D extraction
</span><span class="k">for</span> <span class="n">i</span><span class="p">,</span> <span class="n">k</span> <span class="ow">in</span> <span class="nb">enumerate</span><span class="p">(</span><span class="n">sp</span><span class="p">.</span><span class="n">spec</span><span class="p">.</span><span class="n">meta</span><span class="p">):</span>
    <span class="k">print</span><span class="p">(</span><span class="sa">f</span><span class="s">"</span><span class="si">{</span><span class="n">k</span><span class="si">}</span><span class="s"> : </span><span class="si">{</span><span class="n">sp</span><span class="p">.</span><span class="n">spec</span><span class="p">.</span><span class="n">meta</span><span class="p">[</span><span class="n">k</span><span class="p">]</span><span class="si">}</span><span class="s">"</span><span class="p">)</span>
    <span class="k">if</span> <span class="n">k</span> <span class="o">==</span> <span class="s">'CRDS2'</span><span class="p">:</span>
        <span class="k">break</span>
        
<span class="k">print</span><span class="p">(</span><span class="s">'...'</span><span class="p">)</span>
</code></pre></div></div>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>VERSION : 0.6.12.dev18+gc61a335
TOMUJY : 1.0
PROFCEN : -0.9085424632954114
PROFSIG : 1.263439656446174
PROFSTRT : 0
PROFSTOP : 435
YTRACE : 20.0
EXTNAME : SPEC1D
CRPIX1 : 218
CRPIX2 : 21
CRPIX3 : 1
CRVAL1 : 34478.17210692866
CRVAL2 : 53.11342711704571
CRVAL3 : -27.80296418104931
CD1_1 : 112.0143042734245
CD2_2 : -2.5018683716805e-05
CD3_2 : 4.3106889543069e-06
CD2_3 : 1.0
CD3_3 : 1.0
CTYPE1 : WAVELEN
CTYPE2 : RA---TAN
CTYPE3 : DEC--TAN
CUNIT1 : Angstrom
CUNIT2 : deg
CUNIT3 : deg
RADESYS : ICRS
WCSNAME : SLITWCS
SLIT_PA : 99.77600798539926
PSCALE : 0.09145217434882043
SLIT_Y0 : 0.1046029202771379
SLIT_DY : -0.2
LMIN : 5.336618171269953
DLAM : 0.01120143042734245
BKGOFF : 6
OTHRESH : 30
WSAMPLE : 1.05
LOGWAVE : False
BUNIT : mJy
GRATING : PRISM
FILTER : CLEAR
NFILES : 36
EFFEXPTM : 99788.00399999997
SRCNAME : 1210_15157
SRCID : 15157
SRCRA : 53.113326
SRCDEC : -27.80299179999997
FILE1 : jw01210001001_11101_00001_nrs1_phot.247.1210_15157.fits
CALVER1 : 1.9.4
CRDS1 : jwst_1084.pmap
GRAT1 : PRISM
FILTER1 : CLEAR
MSAMET1 : jw01210001001_02_msa.fits
MSAID1 : 117
MSACNF1 : 2
SLITID1 : 247
SRCNAM1 : 1210_15157
SRCID1 : 15157
SRCRA1 : 53.113326
SRCDEC1 : -27.80299179999997
PIXSR1 : 4.83547881464665e-13
TOUJY1 : 0.483547881464665
DETECT1 : NRS1
XSTART1 : 1323
XSIZE1 : 425
YSTART1 : 233
YSIZE1 : 20
RA_REF1 : 53.1410916104911
DE_REF1 : -27.79159354885499
RL_REF1 : -38.97457220320062
V2_REF1 : 378.563202
V3_REF1 : -428.402832
V3YANG1 : 138.5745697
RA_V11 : 52.96411558412523
DEC_V11 : -27.76510758004405
PA_V31 : 321.1077987432105
EXPSTR1 : 59873.16264294121
EXPEND1 : 59873.16264294121
EFFEXP1 : 2771.889
DITHN1 : 1
DITHX1 : 7.646252570500947
DITHY1 : 29.2702219123212
DITHT1 : 3-SHUTTER-SLITLET
NFRAM1 : 5
NGRP1 : 19
NINTS1 : 2
RDPAT1 : NRSIRS2
FILE2 : jw01210001001_11101_00002_nrs1_phot.247.1210_15157.fits
CALVER2 : 1.9.4
CRDS2 : jwst_1084.pmap
...
</code></pre></div></div>

<div class="language-python highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="n">fig</span><span class="p">,</span> <span class="n">axes</span> <span class="o">=</span> <span class="n">plt</span><span class="p">.</span><span class="n">subplots</span><span class="p">(</span><span class="mi">2</span><span class="p">,</span><span class="mi">1</span><span class="p">,</span><span class="n">figsize</span><span class="o">=</span><span class="p">(</span><span class="mi">8</span><span class="p">,</span><span class="mi">6</span><span class="p">),</span> <span class="n">sharex</span><span class="o">=</span><span class="bp">True</span><span class="p">)</span>
<span class="n">ax</span> <span class="o">=</span> <span class="n">axes</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span>

<span class="k">for</span> <span class="n">c</span> <span class="ow">in</span> <span class="p">[</span><span class="s">'flux'</span><span class="p">,</span><span class="s">'err'</span><span class="p">,</span><span class="s">'full_err'</span><span class="p">]:</span>
    <span class="n">ax</span><span class="p">.</span><span class="n">plot</span><span class="p">(</span><span class="n">sp</span><span class="p">.</span><span class="n">spec_wobs</span><span class="p">,</span> <span class="n">sp</span><span class="p">.</span><span class="n">spec</span><span class="p">[</span><span class="n">c</span><span class="p">],</span> <span class="n">alpha</span><span class="o">=</span><span class="mf">0.5</span><span class="p">,</span> <span class="n">label</span><span class="o">=</span><span class="n">c</span><span class="p">)</span>
<span class="c1">#ax.plot(sp.spec_wobs, sp.spec['err'], alpha=0.5, label='err')
#ax.plot(sp.spec_wobs, sp.spec['full_err'], alpha=0.5, label='full_err')
</span>
<span class="n">ax</span><span class="p">.</span><span class="n">set_ylim</span><span class="p">(</span><span class="o">-</span><span class="mf">0.1</span><span class="o">*</span><span class="n">ymax</span><span class="p">[</span><span class="mi">1</span><span class="p">],</span> <span class="n">ymax</span><span class="p">[</span><span class="mi">1</span><span class="p">])</span>
<span class="n">ax</span><span class="p">.</span><span class="n">plot</span><span class="p">(</span><span class="n">sp</span><span class="p">.</span><span class="n">spec_wobs</span><span class="p">,</span> <span class="n">sp</span><span class="p">.</span><span class="n">valid</span><span class="o">*</span><span class="n">ymax</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span><span class="o">*</span><span class="mf">0.8</span><span class="p">,</span> <span class="n">alpha</span><span class="o">=</span><span class="mf">0.5</span><span class="p">,</span> <span class="n">label</span><span class="o">=</span><span class="s">'"valid"'</span><span class="p">)</span>
<span class="n">ax</span><span class="p">.</span><span class="n">grid</span><span class="p">()</span>
<span class="n">ax</span><span class="p">.</span><span class="n">legend</span><span class="p">()</span>
<span class="n">ax</span><span class="p">.</span><span class="n">set_ylabel</span><span class="p">(</span><span class="sa">r</span><span class="s">'$F_\nu\,[\mu\mathrm{Jy}]$'</span><span class="p">)</span>

<span class="n">ax</span> <span class="o">=</span> <span class="n">axes</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span>
<span class="k">for</span> <span class="n">c</span> <span class="ow">in</span> <span class="p">[</span><span class="s">'flux'</span><span class="p">,</span><span class="s">'err'</span><span class="p">,</span><span class="s">'full_err'</span><span class="p">]:</span>
    <span class="n">ax</span><span class="p">.</span><span class="n">plot</span><span class="p">(</span><span class="n">sp</span><span class="p">.</span><span class="n">spec_wobs</span><span class="p">,</span> <span class="n">sp</span><span class="p">.</span><span class="n">spec</span><span class="p">[</span><span class="n">c</span><span class="p">]</span><span class="o">*</span><span class="n">sp</span><span class="p">.</span><span class="n">spec</span><span class="p">[</span><span class="s">'to_flam'</span><span class="p">],</span> <span class="n">alpha</span><span class="o">=</span><span class="mf">0.5</span><span class="p">,</span> <span class="n">label</span><span class="o">=</span><span class="n">c</span><span class="p">)</span>

<span class="n">ax</span><span class="p">.</span><span class="n">set_ylim</span><span class="p">(</span><span class="o">-</span><span class="mf">0.1</span><span class="o">*</span><span class="n">ymax</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span><span class="o">*</span><span class="mi">5</span><span class="p">,</span> <span class="n">ymax</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span><span class="o">*</span><span class="mi">5</span><span class="p">)</span>
<span class="n">ax</span><span class="p">.</span><span class="n">set_ylabel</span><span class="p">(</span><span class="sa">r</span><span class="s">'$F_\lambda\,[10^{-20}\mathrm{erg/s/cm2/A}]$'</span><span class="p">)</span>
<span class="n">ax</span><span class="p">.</span><span class="n">grid</span><span class="p">()</span>

<span class="n">ax</span><span class="p">.</span><span class="n">set_xlabel</span><span class="p">(</span><span class="sa">r</span><span class="s">'$\lambda_\mathrm{obs}\,[\mu\mathrm{m}]$'</span><span class="p">)</span>

<span class="n">_</span> <span class="o">=</span> <span class="n">fig</span><span class="p">.</span><span class="n">tight_layout</span><span class="p">(</span><span class="n">pad</span><span class="o">=</span><span class="mi">1</span><span class="p">)</span>
</code></pre></div></div>

<p><img src="/dja/assets/post_files/2023-07-18-nirspec-data-products_files/nirspec-data-products_24_0.png" alt="png" /></p>

<div class="language-python highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="c1"># Show all spectra
</span><span class="n">fig</span><span class="p">,</span> <span class="n">axes</span> <span class="o">=</span> <span class="n">plt</span><span class="p">.</span><span class="n">subplots</span><span class="p">(</span><span class="nb">len</span><span class="p">(</span><span class="n">xlimits</span><span class="p">),</span><span class="mi">1</span><span class="p">,</span><span class="n">figsize</span><span class="o">=</span><span class="p">(</span><span class="mi">8</span><span class="p">,</span><span class="mi">3</span><span class="o">*</span><span class="nb">len</span><span class="p">(</span><span class="n">xlimits</span><span class="p">)))</span>

<span class="k">for</span> <span class="n">ax</span><span class="p">,</span> <span class="n">xlim</span><span class="p">,</span> <span class="n">ym</span> <span class="ow">in</span> <span class="nb">zip</span><span class="p">(</span><span class="n">axes</span><span class="p">,</span> <span class="n">xlimits</span><span class="p">,</span> <span class="n">ymax</span><span class="p">):</span>
    <span class="k">for</span> <span class="n">i</span><span class="p">,</span> <span class="n">k</span> <span class="ow">in</span> <span class="nb">enumerate</span><span class="p">(</span><span class="n">sobj</span><span class="p">):</span>
        <span class="n">sp</span> <span class="o">=</span> <span class="n">sobj</span><span class="p">[</span><span class="n">k</span><span class="p">]</span>
        <span class="n">ax</span><span class="p">.</span><span class="n">plot</span><span class="p">(</span><span class="n">sp</span><span class="p">.</span><span class="n">spec_wobs</span><span class="p">[</span><span class="n">sp</span><span class="p">.</span><span class="n">valid</span><span class="p">],</span> <span class="n">sp</span><span class="p">.</span><span class="n">spec</span><span class="p">[</span><span class="s">'flux'</span><span class="p">][</span><span class="n">sp</span><span class="p">.</span><span class="n">valid</span><span class="p">],</span> <span class="n">alpha</span><span class="o">=</span><span class="mf">0.5</span><span class="p">,</span> <span class="n">label</span><span class="o">=</span><span class="n">k</span><span class="p">.</span><span class="n">split</span><span class="p">(</span><span class="s">'_'</span><span class="p">)[</span><span class="mi">1</span><span class="p">])</span>
    
    <span class="n">ax</span><span class="p">.</span><span class="n">set_xlim</span><span class="p">(</span><span class="o">*</span><span class="n">xlim</span><span class="p">)</span>

    <span class="n">ax</span><span class="p">.</span><span class="n">set_ylim</span><span class="p">(</span><span class="o">-</span><span class="mf">0.1</span><span class="o">*</span><span class="n">ym</span><span class="p">,</span> <span class="n">ym</span><span class="p">)</span>
    <span class="n">ax</span><span class="p">.</span><span class="n">grid</span><span class="p">()</span>
    
<span class="n">axes</span><span class="p">[</span><span class="mi">0</span><span class="p">].</span><span class="n">legend</span><span class="p">()</span>
<span class="n">ax</span><span class="p">.</span><span class="n">set_xlabel</span><span class="p">(</span><span class="sa">r</span><span class="s">'$\lambda_\mathrm{obs}\,[\mu\mathrm{m}]$'</span><span class="p">)</span>

<span class="n">_</span> <span class="o">=</span> <span class="n">fig</span><span class="p">.</span><span class="n">tight_layout</span><span class="p">(</span><span class="n">pad</span><span class="o">=</span><span class="mi">1</span><span class="p">)</span>
</code></pre></div></div>

<p><img src="/dja/assets/post_files/2023-07-18-nirspec-data-products_files/nirspec-data-products_25_0.png" alt="png" /></p>

<h2 id="spectral-resolution">Spectral resolution</h2>

<div class="language-python highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="n">sp</span><span class="p">.</span><span class="n">spec</span><span class="p">.</span><span class="n">info</span><span class="p">()</span>
</code></pre></div></div>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>&lt;GTable length=1414&gt;
  name    dtype  unit
-------- ------- ----
    wave float64     
    flux float64     
     err float64     
    corr float64     
  escale float64     
full_err float64  uJy
   valid    bool     
       R float64     
 to_flam float64     
</code></pre></div></div>

<div class="language-python highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="n">fig</span><span class="p">,</span> <span class="n">ax</span> <span class="o">=</span> <span class="n">plt</span><span class="p">.</span><span class="n">subplots</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span><span class="mi">1</span><span class="p">,</span><span class="n">figsize</span><span class="o">=</span><span class="p">(</span><span class="mi">8</span><span class="p">,</span><span class="mi">3</span><span class="p">))</span>

<span class="k">for</span> <span class="n">i</span><span class="p">,</span> <span class="n">k</span> <span class="ow">in</span> <span class="nb">enumerate</span><span class="p">(</span><span class="n">sobj</span><span class="p">):</span>
    <span class="n">sp</span> <span class="o">=</span> <span class="n">sobj</span><span class="p">[</span><span class="n">k</span><span class="p">]</span>
    <span class="n">ax</span><span class="p">.</span><span class="n">plot</span><span class="p">(</span><span class="n">sp</span><span class="p">.</span><span class="n">spec_wobs</span><span class="p">,</span> <span class="n">sp</span><span class="p">.</span><span class="n">spec</span><span class="p">[</span><span class="s">'R'</span><span class="p">],</span> <span class="n">alpha</span><span class="o">=</span><span class="mf">0.5</span><span class="p">,</span> <span class="n">label</span><span class="o">=</span><span class="n">k</span><span class="p">.</span><span class="n">split</span><span class="p">(</span><span class="s">'_'</span><span class="p">)[</span><span class="mi">1</span><span class="p">])</span>

<span class="n">ax</span><span class="p">.</span><span class="n">legend</span><span class="p">()</span>
<span class="n">ax</span><span class="p">.</span><span class="n">set_ylabel</span><span class="p">(</span><span class="s">'R'</span><span class="p">)</span>
<span class="n">ax</span><span class="p">.</span><span class="n">grid</span><span class="p">()</span>
<span class="n">ax</span><span class="p">.</span><span class="n">semilogy</span><span class="p">()</span>

<span class="n">ax</span><span class="p">.</span><span class="n">set_xlabel</span><span class="p">(</span><span class="sa">r</span><span class="s">'$\lambda_\mathrm{obs}\,[\mu\mathrm{m}]$'</span><span class="p">)</span>

<span class="n">_</span> <span class="o">=</span> <span class="n">fig</span><span class="p">.</span><span class="n">tight_layout</span><span class="p">(</span><span class="n">pad</span><span class="o">=</span><span class="mi">1</span><span class="p">)</span>      
</code></pre></div></div>

<p><img src="/dja/assets/post_files/2023-07-18-nirspec-data-products_files/nirspec-data-products_28_0.png" alt="png" /></p>

<div class="language-python highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="n">lw</span><span class="p">,</span> <span class="n">lr</span> <span class="o">=</span> <span class="n">utils</span><span class="p">.</span><span class="n">get_line_wavelengths</span><span class="p">()</span>

<span class="n">bspl</span> <span class="o">=</span> <span class="n">sp</span><span class="p">.</span><span class="n">bspline_array</span><span class="p">(</span><span class="n">nspline</span><span class="o">=</span><span class="mi">21</span><span class="p">)</span>
<span class="n">bspl</span><span class="p">.</span><span class="n">shape</span>

<span class="n">lines</span> <span class="o">=</span> <span class="p">[</span><span class="s">'Ha'</span><span class="p">,</span><span class="s">'SII-6717'</span><span class="p">,</span><span class="s">'SII-6731'</span><span class="p">]</span>
<span class="n">line_waves</span> <span class="o">=</span> <span class="p">[]</span>
<span class="k">for</span> <span class="n">l</span> <span class="ow">in</span> <span class="n">lines</span><span class="p">:</span>
    <span class="n">line_waves</span> <span class="o">+=</span> <span class="n">lw</span><span class="p">[</span><span class="n">l</span><span class="p">]</span>

</code></pre></div></div>

<div class="language-python highlighter-rouge"><div class="highlight"><pre class="highlight"><code>
<span class="n">line_um</span> <span class="o">=</span> <span class="n">lw</span><span class="p">[</span><span class="s">'Ha'</span><span class="p">][</span><span class="mi">0</span><span class="p">]</span><span class="o">*</span><span class="p">(</span><span class="mi">1</span><span class="o">+</span><span class="n">z</span><span class="p">)</span><span class="o">/</span><span class="mf">1.e4</span>

<span class="n">fig</span><span class="p">,</span> <span class="n">axes</span> <span class="o">=</span> <span class="n">plt</span><span class="p">.</span><span class="n">subplots</span><span class="p">(</span><span class="mi">3</span><span class="p">,</span><span class="mi">1</span><span class="p">,</span><span class="n">figsize</span><span class="o">=</span><span class="p">(</span><span class="mi">8</span><span class="p">,</span><span class="mi">8</span><span class="p">),</span> <span class="n">sharex</span><span class="o">=</span><span class="bp">True</span><span class="p">,</span> <span class="n">sharey</span><span class="o">=</span><span class="bp">False</span><span class="p">)</span>

<span class="n">counter</span> <span class="o">=</span> <span class="mi">0</span>

<span class="k">for</span> <span class="n">i</span><span class="p">,</span> <span class="n">k</span> <span class="ow">in</span> <span class="nb">enumerate</span><span class="p">(</span><span class="n">sobj</span><span class="p">):</span>
    <span class="n">sp</span> <span class="o">=</span> <span class="n">sobj</span><span class="p">[</span><span class="n">k</span><span class="p">]</span>
    <span class="k">if</span> <span class="n">sp</span><span class="p">.</span><span class="n">spec_wobs</span><span class="p">.</span><span class="nb">max</span><span class="p">()</span> <span class="o">&lt;</span> <span class="mf">3.3</span><span class="p">:</span>
        <span class="k">continue</span>
    
    <span class="n">ax</span> <span class="o">=</span> <span class="n">axes</span><span class="p">[</span><span class="n">counter</span><span class="p">]</span>
    <span class="n">ax</span><span class="p">.</span><span class="n">plot</span><span class="p">(</span><span class="n">sp</span><span class="p">.</span><span class="n">spec_wobs</span><span class="p">[</span><span class="n">sp</span><span class="p">.</span><span class="n">valid</span><span class="p">]</span><span class="o">/</span><span class="p">(</span><span class="mi">1</span><span class="o">+</span><span class="n">z</span><span class="p">),</span> <span class="n">sp</span><span class="p">.</span><span class="n">spec</span><span class="p">[</span><span class="s">'flux'</span><span class="p">][</span><span class="n">sp</span><span class="p">.</span><span class="n">valid</span><span class="p">],</span> <span class="n">alpha</span><span class="o">=</span><span class="mf">0.5</span><span class="p">,</span> <span class="n">label</span><span class="o">=</span><span class="n">k</span><span class="p">.</span><span class="n">split</span><span class="p">(</span><span class="s">'_'</span><span class="p">)[</span><span class="mi">1</span><span class="p">],</span> <span class="n">color</span><span class="o">=</span><span class="s">'k'</span><span class="p">)</span>
    
    <span class="n">ax</span><span class="p">.</span><span class="n">set_yticklabels</span><span class="p">([])</span>
    <span class="n">ax</span><span class="p">.</span><span class="n">set_ylabel</span><span class="p">(</span><span class="n">k</span><span class="p">.</span><span class="n">split</span><span class="p">(</span><span class="s">'_'</span><span class="p">)[</span><span class="mi">1</span><span class="p">])</span>
        
    <span class="c1">### Full line fit
</span>    
    <span class="c1"># Dummy spline continuum
</span>    <span class="n">bspl</span> <span class="o">=</span> <span class="n">sp</span><span class="p">.</span><span class="n">bspline_array</span><span class="p">(</span><span class="n">nspline</span><span class="o">=</span><span class="mi">21</span><span class="p">)</span>

    <span class="c1"># Generate emission line templates accounting for spectral resolution
</span>    <span class="n">line_in_grating</span> <span class="o">=</span> <span class="p">[]</span>
    <span class="k">for</span> <span class="n">lwi</span> <span class="ow">in</span> <span class="n">line_waves</span><span class="p">:</span>
        <span class="n">line_in_grating</span><span class="p">.</span><span class="n">append</span><span class="p">(</span><span class="n">sp</span><span class="p">.</span><span class="n">emission_line</span><span class="p">(</span><span class="n">lwi</span><span class="o">*</span><span class="p">(</span><span class="mi">1</span><span class="o">+</span><span class="n">z</span><span class="p">)</span><span class="o">/</span><span class="mf">1.e4</span><span class="p">,</span>
                                                <span class="n">line_flux</span><span class="o">=</span><span class="mi">1</span><span class="p">,</span>
                                                <span class="n">scale_disp</span><span class="o">=</span><span class="mf">1.3</span><span class="p">,</span> <span class="n">velocity_sigma</span><span class="o">=</span><span class="mi">50</span><span class="p">))</span>

    <span class="n">A</span> <span class="o">=</span> <span class="n">np</span><span class="p">.</span><span class="n">vstack</span><span class="p">([</span><span class="n">bspl</span><span class="p">,</span> <span class="n">line_in_grating</span><span class="p">])</span>
    <span class="n">Ax</span> <span class="o">=</span> <span class="n">A</span><span class="o">/</span><span class="n">sp</span><span class="p">.</span><span class="n">spec</span><span class="p">[</span><span class="s">'full_err'</span><span class="p">]</span>
    <span class="n">yx</span> <span class="o">=</span> <span class="n">sp</span><span class="p">.</span><span class="n">spec</span><span class="p">[</span><span class="s">'flux'</span><span class="p">]</span><span class="o">/</span><span class="n">sp</span><span class="p">.</span><span class="n">spec</span><span class="p">[</span><span class="s">'full_err'</span><span class="p">]</span>

    <span class="n">lsq</span> <span class="o">=</span> <span class="n">np</span><span class="p">.</span><span class="n">linalg</span><span class="p">.</span><span class="n">lstsq</span><span class="p">(</span><span class="n">Ax</span><span class="p">[:,</span><span class="n">sp</span><span class="p">.</span><span class="n">valid</span><span class="p">].</span><span class="n">T</span><span class="p">,</span> <span class="n">yx</span><span class="p">[</span><span class="n">sp</span><span class="p">.</span><span class="n">valid</span><span class="p">])</span>

    <span class="n">model</span> <span class="o">=</span> <span class="n">A</span><span class="p">.</span><span class="n">T</span><span class="p">.</span><span class="n">dot</span><span class="p">(</span><span class="n">lsq</span><span class="p">[</span><span class="mi">0</span><span class="p">])</span>
    <span class="n">ax</span><span class="p">.</span><span class="n">plot</span><span class="p">(</span><span class="n">sp</span><span class="p">.</span><span class="n">spec_wobs</span><span class="o">/</span><span class="p">(</span><span class="mi">1</span><span class="o">+</span><span class="n">z</span><span class="p">),</span> <span class="n">model</span><span class="p">,</span> <span class="n">color</span><span class="o">=</span><span class="s">'r'</span><span class="p">,</span> <span class="n">lw</span><span class="o">=</span><span class="mi">3</span><span class="p">,</span> <span class="n">alpha</span><span class="o">=</span><span class="mf">0.3</span><span class="p">)</span>
    
    <span class="n">lwi</span> <span class="o">=</span> <span class="n">np</span><span class="p">.</span><span class="nb">abs</span><span class="p">(</span><span class="n">sp</span><span class="p">.</span><span class="n">spec_wobs</span> <span class="o">-</span> <span class="n">line_um</span><span class="p">)</span> <span class="o">&lt;</span> <span class="mf">0.1</span>
    <span class="n">ym</span> <span class="o">=</span> <span class="n">model</span><span class="p">[</span><span class="n">lwi</span><span class="p">].</span><span class="nb">max</span><span class="p">()</span><span class="o">*</span><span class="mf">0.5</span>
    <span class="n">ax</span><span class="p">.</span><span class="n">set_ylim</span><span class="p">(</span><span class="o">-</span><span class="mf">0.1</span><span class="o">*</span><span class="n">ym</span><span class="p">,</span> <span class="n">ym</span><span class="p">)</span>

    <span class="n">ax</span><span class="p">.</span><span class="n">grid</span><span class="p">()</span>
    <span class="n">counter</span> <span class="o">+=</span> <span class="mi">1</span>
    
<span class="n">ax</span><span class="p">.</span><span class="n">set_xlim</span><span class="p">(</span><span class="n">line_um</span><span class="o">/</span><span class="p">(</span><span class="mi">1</span><span class="o">+</span><span class="n">z</span><span class="p">)</span><span class="o">-</span><span class="mf">0.01</span><span class="p">,</span> <span class="n">line_um</span><span class="o">/</span><span class="p">(</span><span class="mi">1</span><span class="o">+</span><span class="n">z</span><span class="p">)</span><span class="o">+</span><span class="mf">0.02</span><span class="p">)</span>

<span class="n">ax</span><span class="p">.</span><span class="n">set_xlabel</span><span class="p">(</span><span class="sa">r</span><span class="s">'$\lambda_\mathrm{rest}\,[\mu\mathrm{m}]$'</span><span class="p">)</span>

<span class="n">_</span> <span class="o">=</span> <span class="n">fig</span><span class="p">.</span><span class="n">tight_layout</span><span class="p">(</span><span class="n">pad</span><span class="o">=</span><span class="mi">1</span><span class="p">)</span>      
</code></pre></div></div>

<p><img src="/dja/assets/post_files/2023-07-18-nirspec-data-products_files/nirspec-data-products_30_0.png" alt="png" /></p>

<h2 id="smooth-a-full-template">Smooth a full template</h2>

<p>Generate a template here, but can also be, e.g. a FSPS or bagpipes model</p>

<div class="language-python highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kn">import</span> <span class="nn">eazy.templates</span>

<span class="n">wtempl</span> <span class="o">=</span> <span class="n">np</span><span class="p">.</span><span class="n">logspace</span><span class="p">(</span><span class="mi">3</span><span class="p">,</span> <span class="mi">4</span><span class="p">,</span> <span class="mi">4096</span><span class="o">*</span><span class="mi">4</span><span class="p">)</span>
<span class="n">ftempl</span> <span class="o">=</span> <span class="n">wtempl</span><span class="o">*</span><span class="mf">0.</span>

<span class="k">for</span> <span class="n">w</span> <span class="ow">in</span> <span class="n">line_waves</span><span class="p">:</span>
    <span class="n">dv</span> <span class="o">=</span> <span class="p">(</span><span class="n">wtempl</span><span class="o">-</span><span class="n">w</span><span class="p">)</span><span class="o">/</span><span class="n">w</span><span class="o">*</span><span class="mf">3.e5</span>
    <span class="n">vwidth</span> <span class="o">=</span> <span class="mi">50</span>
    <span class="n">ftempl</span> <span class="o">+=</span> <span class="mi">1</span><span class="o">/</span><span class="n">np</span><span class="p">.</span><span class="n">sqrt</span><span class="p">(</span><span class="mi">2</span><span class="o">*</span><span class="n">np</span><span class="p">.</span><span class="n">pi</span><span class="o">*</span><span class="n">vwidth</span><span class="o">**</span><span class="mi">2</span><span class="p">)</span> <span class="o">*</span> <span class="n">np</span><span class="p">.</span><span class="n">exp</span><span class="p">(</span><span class="o">-</span><span class="n">dv</span><span class="o">**</span><span class="mi">2</span><span class="o">/</span><span class="mi">2</span><span class="o">/</span><span class="n">vwidth</span><span class="o">**</span><span class="mi">2</span><span class="p">)</span>

<span class="n">templ</span> <span class="o">=</span> <span class="n">eazy</span><span class="p">.</span><span class="n">templates</span><span class="p">.</span><span class="n">Template</span><span class="p">(</span><span class="n">arrays</span><span class="o">=</span><span class="p">(</span><span class="n">wtempl</span><span class="p">,</span> <span class="n">ftempl</span><span class="o">*</span><span class="mf">1.e11</span><span class="p">))</span>
</code></pre></div></div>

<div class="language-python highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="c1"># Now fold it through the spectrum dispersion
</span>
<span class="n">fig</span><span class="p">,</span> <span class="n">ax</span> <span class="o">=</span> <span class="n">plt</span><span class="p">.</span><span class="n">subplots</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span><span class="mi">1</span><span class="p">,</span><span class="n">figsize</span><span class="o">=</span><span class="p">(</span><span class="mi">8</span><span class="p">,</span><span class="mi">4</span><span class="p">),</span> <span class="n">sharex</span><span class="o">=</span><span class="bp">True</span><span class="p">,</span> <span class="n">sharey</span><span class="o">=</span><span class="bp">False</span><span class="p">)</span>

<span class="n">counter</span> <span class="o">=</span> <span class="mi">0</span>

<span class="n">ax</span><span class="p">.</span><span class="n">plot</span><span class="p">(</span><span class="n">wtempl</span><span class="o">*</span><span class="p">(</span><span class="mi">1</span><span class="o">+</span><span class="n">z</span><span class="p">)</span><span class="o">/</span><span class="mf">1.e4</span><span class="p">,</span> <span class="n">ftempl</span><span class="p">,</span> <span class="n">label</span><span class="o">=</span><span class="s">'intrinsic'</span><span class="p">)</span>

<span class="k">for</span> <span class="n">i</span><span class="p">,</span> <span class="n">k</span> <span class="ow">in</span> <span class="nb">enumerate</span><span class="p">(</span><span class="n">sobj</span><span class="p">):</span>
    <span class="n">sp</span> <span class="o">=</span> <span class="n">sobj</span><span class="p">[</span><span class="n">k</span><span class="p">]</span>
    <span class="k">if</span> <span class="n">sp</span><span class="p">.</span><span class="n">spec_wobs</span><span class="p">.</span><span class="nb">max</span><span class="p">()</span> <span class="o">&lt;</span> <span class="mf">3.3</span><span class="p">:</span>
        <span class="k">continue</span>

    <span class="n">resamp</span> <span class="o">=</span> <span class="n">sp</span><span class="p">.</span><span class="n">resample_eazy_template</span><span class="p">(</span><span class="n">templ</span><span class="p">,</span> <span class="n">z</span><span class="o">=</span><span class="n">z</span><span class="p">,</span> <span class="n">scale_disp</span><span class="o">=</span><span class="mf">1.3</span><span class="p">,</span> <span class="n">velocity_sigma</span><span class="o">=</span><span class="mi">50</span><span class="p">)</span>
    <span class="n">ax</span><span class="p">.</span><span class="n">plot</span><span class="p">(</span><span class="n">sp</span><span class="p">.</span><span class="n">spec_wobs</span><span class="p">,</span> <span class="n">resamp</span><span class="p">,</span> <span class="n">label</span><span class="o">=</span><span class="n">k</span><span class="p">.</span><span class="n">split</span><span class="p">(</span><span class="s">'_'</span><span class="p">)[</span><span class="mi">1</span><span class="p">])</span>
    
<span class="n">ax</span><span class="p">.</span><span class="n">legend</span><span class="p">()</span>
<span class="n">ax</span><span class="p">.</span><span class="n">set_xlim</span><span class="p">(</span><span class="n">line_um</span><span class="o">-</span><span class="mf">0.02</span><span class="p">,</span> <span class="n">line_um</span><span class="o">+</span><span class="mf">0.12</span><span class="p">)</span>

</code></pre></div></div>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>(3.3599737502612492, 3.4999737502612494)
</code></pre></div></div>

<p><img src="/dja/assets/post_files/2023-07-18-nirspec-data-products_files/nirspec-data-products_33_1.png" alt="png" /></p>

<div class="language-python highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="c1"># Profile the resample function
</span><span class="o">%</span><span class="n">timeit</span> <span class="n">resamp</span> <span class="o">=</span> <span class="n">sp</span><span class="p">.</span><span class="n">resample_eazy_template</span><span class="p">(</span><span class="n">templ</span><span class="p">,</span> <span class="n">z</span><span class="o">=</span><span class="n">z</span><span class="p">,</span> <span class="n">scale_disp</span><span class="o">=</span><span class="mf">1.3</span><span class="p">,</span> <span class="n">velocity_sigma</span><span class="o">=</span><span class="mi">50</span><span class="p">)</span>
</code></pre></div></div>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>906 µs ± 9.98 µs per loop (mean ± std. dev. of 7 runs, 1,000 loops each)
</code></pre></div></div>

<h1 id="full-fitting-functions">Full fitting functions</h1>

<p>These are the <code class="language-plaintext highlighter-rouge">msaexp</code> functions that were used to fit the reshifts and line fluxes in the full catalog.</p>

<div class="language-python highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="k">for</span> <span class="n">url</span> <span class="ow">in</span> <span class="n">urls</span><span class="p">:</span>
    <span class="k">if</span> <span class="s">'prism'</span> <span class="ow">in</span> <span class="n">url</span><span class="p">:</span>
        <span class="k">break</span>

<span class="n">_file</span> <span class="o">=</span> <span class="n">os</span><span class="p">.</span><span class="n">path</span><span class="p">.</span><span class="n">basename</span><span class="p">(</span><span class="n">url</span><span class="p">)</span>
<span class="k">if</span> <span class="ow">not</span> <span class="n">os</span><span class="p">.</span><span class="n">path</span><span class="p">.</span><span class="n">exists</span><span class="p">(</span><span class="n">_file</span><span class="p">):</span>
    <span class="err">!</span> <span class="n">wget</span> <span class="p">{</span><span class="n">url</span><span class="p">}</span>
</code></pre></div></div>

<div class="language-python highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kn">import</span> <span class="nn">astropy.units</span>
<span class="n">_</span> <span class="o">=</span> <span class="n">msaexp</span><span class="p">.</span><span class="n">spectrum</span><span class="p">.</span><span class="n">plot_spectrum</span><span class="p">(</span><span class="n">url</span><span class="p">,</span> <span class="n">z</span><span class="o">=</span><span class="n">z</span><span class="p">,</span> <span class="n">plot_unit</span><span class="o">=</span><span class="n">astropy</span><span class="p">.</span><span class="n">units</span><span class="p">.</span><span class="n">microJansky</span><span class="p">)</span>
</code></pre></div></div>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code># line flux err
# flux x 10^-20 erg/s/cm2
# https://s3.amazonaws.com/msaexp-nirspec/extractions/gds-deep-lr-v1/gds-deep-lr-v1_prism-clear_1210_15157.spec.fits
# z = 4.14871
# Tue Jul 18 21:48:58 2023
             line Hb       76.2 ±      3.7
             line Hg       26.2 ±      6.1
             line Hd       18.2 ±      4.9
         line Ha+NII      263.0 ±      4.2
     line NeIII-3968       26.3 ±      5.7
      line OIII-4959      185.4 ±      5.8
      line OIII-5007      452.2 ±      8.6
      line OIII-4363        1.2 ±      5.8
            line OII      131.9 ±      7.2
      line HeII-4687       -1.5 ±      3.1
     line NeIII-3867       40.2 ±     10.1
       line HeI-3889       12.5 ±      9.5
            line SII       19.7 ±      1.4
       line OII-7325        5.2 ±      1.1
     line ArIII-7138        3.3 ±      1.0
     line ArIII-7753        1.4 ±      0.9
      line SIII-9068        6.9 ±      1.0
      line SIII-9531       20.0 ±      1.5
        line OI-6302        6.1 ±      1.8
            line PaD        2.3 ±      1.1
            line Pa8        7.4 ±      1.4
            line Pa9       -0.3 ±      1.0
           line Pa10        3.6 ±      1.0
       line HeI-5877        8.1 ±      1.7
      line OIII-1663       10.1 ±     12.8
      line CIII-1908       47.5 ±     13.7
      line NIII-1750       17.6 ±     13.1
            line Lya     -107.9 ±     22.9
           line MgII       -7.3 ±      9.2
       line NeV-3346        5.8 ±      6.8
      line NeVI-3426       18.0 ±      6.9
       line HeI-7065        2.9 ±      1.0
       line HeI-8446        0.8 ±      0.9
</code></pre></div></div>

<p><img src="/dja/assets/post_files/2023-07-18-nirspec-data-products_files/nirspec-data-products_37_1.png" alt="png" /></p>

<div class="language-python highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="c1"># Fit redshift
</span><span class="n">_</span> <span class="o">=</span> <span class="n">msaexp</span><span class="p">.</span><span class="n">spectrum</span><span class="p">.</span><span class="n">fit_redshift</span><span class="p">(</span><span class="n">_file</span><span class="p">,</span> <span class="n">z0</span><span class="o">=</span><span class="p">[</span><span class="n">z</span><span class="o">-</span><span class="mf">0.1</span><span class="p">,</span> <span class="n">z</span><span class="o">+</span><span class="mf">0.1</span><span class="p">])</span>
</code></pre></div></div>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>20it [00:00, 88.12it/s]
101it [00:01, 89.43it/s]



# line flux err
# flux x 10^-20 erg/s/cm2
# gds-deep-lr-v1_prism-clear_1210_15157.spec.fits
# z = 4.14755
# Tue Jul 18 21:49:01 2023
             line Hb       76.9 ±      3.9
             line Hg       27.2 ±      6.3
             line Hd       17.0 ±      5.8
         line Ha+NII      265.8 ±      4.2
     line NeIII-3968       22.9 ±      6.3
      line OIII-4959      174.2 ±      5.9
      line OIII-5007      457.3 ±      8.8
      line OIII-4363        2.2 ±      5.9
            line OII      132.0 ±      7.7
      line HeII-4687       -0.1 ±      3.2
     line NeIII-3867       37.7 ±     10.5
       line HeI-3889       11.9 ±      9.7
            line SII       17.4 ±      1.5
       line OII-7325        4.9 ±      1.1
     line ArIII-7138        2.7 ±      1.1
     line ArIII-7753        0.7 ±      1.0
      line SIII-9068        7.0 ±      1.0
      line SIII-9531       16.5 ±      1.5
        line OI-6302        7.6 ±      1.9
            line PaD        1.6 ±      1.2
            line Pa8       10.8 ±      1.4
            line Pa9        0.5 ±      1.0
           line Pa10        3.1 ±      1.0
       line HeI-5877        8.4 ±      1.8
      line OIII-1663       12.4 ±     13.7
      line CIII-1908       35.9 ±     14.6
      line NIII-1750       11.6 ±     13.8
            line Lya     -104.6 ±     24.1
           line MgII       -0.2 ±     10.7
       line NeV-3346        3.2 ±      8.5
      line NeVI-3426       17.5 ±      7.4
       line HeI-7065        3.0 ±      1.1
       line HeI-8446        1.3 ±      1.0
</code></pre></div></div>

<p><img src="/dja/assets/post_files/2023-07-18-nirspec-data-products_files/nirspec-data-products_38_2.png" alt="png" /></p>

<p><img src="/dja/assets/post_files/2023-07-18-nirspec-data-products_files/nirspec-data-products_38_3.png" alt="png" /></p>

<h1 id="tbd">TBD</h1>

<p>Items under development:</p>

<ul>
  <li>Scale spectrum to photometry</li>
  <li>Fit for emission line widths</li>
</ul>]]></content><author><name>Gabriel Brammer</name></author><category term="spectroscopy" /><category term="demo" /><category term="nirspec" /><summary type="html"><![CDATA[spectroscopy demo nirspec (This page is auto-generated from the Jupyter notebook nirspec-data-products.ipynb.)]]></summary></entry><entry><title type="html">DJA Imaging Data Products</title><link href="https://dawn-cph.github.io/dja/blog/2023/07/18/image-data-products/" rel="alternate" type="text/html" title="DJA Imaging Data Products" /><published>2023-07-18T15:28:54+00:00</published><updated>2023-07-18T15:28:54+00:00</updated><id>https://dawn-cph.github.io/dja/blog/2023/07/18/image-data-products</id><content type="html" xml:base="https://dawn-cph.github.io/dja/blog/2023/07/18/image-data-products/"><![CDATA[<p> 
    
    <a class="blog-category" href="/dja/blog/categories/#imaging"> imaging</a>
    
    
        
        <a class="blog-tag" href="/dja/blog/tags/#demo"> demo</a>
        
        <a class="blog-tag" href="/dja/blog/tags/#jwst"> jwst</a>
              
    
</p>

<p>(This page is auto-generated from the Jupyter notebook <a href="/dja/assets/post_files/2023-07-18-image-data-products.ipynb">image-data-products.ipynb</a>.)</p>

<p>Here we summarize the files available for imaging datasets, for example in the <a href="/dja/imaging/v7/">v7</a> data release.</p>

<div class="language-python highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="o">%</span><span class="n">matplotlib</span> <span class="n">inline</span>
<span class="kn">import</span> <span class="nn">os</span>
<span class="kn">import</span> <span class="nn">warnings</span>
<span class="n">warnings</span><span class="p">.</span><span class="n">filterwarnings</span><span class="p">(</span><span class="s">'ignore'</span><span class="p">)</span>

<span class="kn">import</span> <span class="nn">numpy</span> <span class="k">as</span> <span class="n">np</span>
<span class="kn">import</span> <span class="nn">matplotlib.pyplot</span> <span class="k">as</span> <span class="n">plt</span>
<span class="kn">import</span> <span class="nn">scipy.ndimage</span> <span class="k">as</span> <span class="n">nd</span>

<span class="kn">import</span> <span class="nn">astropy.io.fits</span> <span class="k">as</span> <span class="n">pyfits</span>
<span class="kn">import</span> <span class="nn">astropy.units</span> <span class="k">as</span> <span class="n">u</span>

<span class="kn">import</span> <span class="nn">sep</span>

<span class="kn">import</span> <span class="nn">grizli</span>
<span class="kn">from</span> <span class="nn">grizli</span> <span class="kn">import</span> <span class="n">utils</span>
<span class="k">print</span><span class="p">(</span><span class="sa">f</span><span class="s">'grizli version: </span><span class="si">{</span><span class="n">grizli</span><span class="p">.</span><span class="n">__version__</span><span class="si">}</span><span class="s">'</span><span class="p">)</span>

<span class="n">BASE_URL</span> <span class="o">=</span> <span class="s">'https://s3.amazonaws.com/grizli-v2/JwstMosaics/v7/'</span>
</code></pre></div></div>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>grizli version: 1.10.dev3+g341a999
</code></pre></div></div>

<h1 id="file-extensions">File extensions</h1>

<p>Generally, for a given <code class="language-plaintext highlighter-rouge">root</code> and <code class="language-plaintext highlighter-rouge">filter</code> combination, the following files are available:</p>

<ul>
  <li><code class="language-plaintext highlighter-rouge">{root}-{filter}_drc_sci.fits.gz</code>: Science image</li>
  <li><code class="language-plaintext highlighter-rouge">{root}-{filter}_drc_wht.fits.gz</code>: Inverse variance weight image (sky + readnoise)</li>
  <li><code class="language-plaintext highlighter-rouge">{root}-{filter}_drc_exp.fits.gz</code>: Exposure-time map</li>
  <li><code class="language-plaintext highlighter-rouge">{root}-{filter}_wcs.csv</code>: Table summarizing individual exposures that contribute to the mosaic</li>
</ul>

<h2 id="notes">Notes</h2>

<ol>
  <li>All mosaics are created with the legacy <code class="language-plaintext highlighter-rouge">drizzlepac.adrizzle.do_driz</code> drizzle implementation that works interchangeably with JWST and HST.
    <ul>
      <li><code class="language-plaintext highlighter-rouge">grizli</code> generates WCS for each exposure that follow the SIP-WCS convention and that match the newer <code class="language-plaintext highlighter-rouge">gwcs</code> JWST wcs at the level of 1e-4 pixels or better</li>
    </ul>
  </li>
  <li>All NIRCam LW, NIRISS (and HST) mosaics are created with 40 mas pixels</li>
  <li>Most fields have 20 mas pixels for the NIRCam SW images that exacly subsample the LW grid 2x2.
    <ul>
      <li>The very large <code class="language-plaintext highlighter-rouge">primer-cosmos</code> and <code class="language-plaintext highlighter-rouge">primer-uds</code> SW mosaics have 40 mas pixels</li>
    </ul>
  </li>
  <li>All <code class="language-plaintext highlighter-rouge">sci</code> mosaics have intensity units of <code class="language-plaintext highlighter-rouge">10 nJy / pix</code>, corresponding to an AB magnitude zeropoint 28.9.  This has the slightly desirable property that the image pixel values are not too different from unity.
    <ul>
      <li>These are not the same as the surface brightness units of the JWST pipeline!</li>
    </ul>
  </li>
  <li>The <code class="language-plaintext highlighter-rouge">exp</code> exposure time images have units of seconds rounded to the nearest integer
    <ul>
      <li>Subsampled to 4x4 of the parent mosaic to keep the file sizes small</li>
      <li>The <code class="language-plaintext highlighter-rouge">exp</code> images are created directly from the footprints of the constituent exposures and don’t account for masked pixels <em>within</em> an exposure.</li>
    </ul>
  </li>
</ol>

<div class="language-python highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="c1"># Example
</span><span class="n">root</span> <span class="o">=</span> <span class="s">'smacs0723-grizli-v7.0'</span>

<span class="nb">filter</span> <span class="o">=</span> <span class="s">'f444w-clear'</span>
</code></pre></div></div>

<div class="language-python highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="c1"># Open the files directly from the web
</span>
<span class="n">img</span> <span class="o">=</span> <span class="p">{}</span>

<span class="k">print</span><span class="p">(</span><span class="s">'# File shape'</span><span class="p">)</span>

<span class="k">for</span> <span class="n">ext</span> <span class="ow">in</span> <span class="p">[</span><span class="s">'sci'</span><span class="p">,</span><span class="s">'wht'</span><span class="p">,</span><span class="s">'exp'</span><span class="p">]:</span>
    <span class="n">_file</span> <span class="o">=</span> <span class="sa">f</span><span class="s">'</span><span class="si">{</span><span class="n">root</span><span class="si">}</span><span class="s">-</span><span class="si">{</span><span class="nb">filter</span><span class="si">}</span><span class="s">_drc_</span><span class="si">{</span><span class="n">ext</span><span class="si">}</span><span class="s">.fits.gz'</span>
    <span class="n">img</span><span class="p">[</span><span class="n">ext</span><span class="p">]</span> <span class="o">=</span> <span class="n">pyfits</span><span class="p">.</span><span class="nb">open</span><span class="p">(</span><span class="n">os</span><span class="p">.</span><span class="n">path</span><span class="p">.</span><span class="n">join</span><span class="p">(</span><span class="n">BASE_URL</span><span class="p">,</span> <span class="n">_file</span><span class="p">))</span>
    <span class="k">print</span><span class="p">(</span><span class="sa">f</span><span class="s">'</span><span class="si">{</span><span class="n">_file</span><span class="si">}</span><span class="s"> : </span><span class="si">{</span><span class="n">img</span><span class="p">[</span><span class="n">ext</span><span class="p">][</span><span class="mi">0</span><span class="p">].</span><span class="n">data</span><span class="p">.</span><span class="n">shape</span><span class="si">}</span><span class="s">'</span><span class="p">)</span>
</code></pre></div></div>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code># File shape
smacs0723-grizli-v7.0-f444w-clear_drc_sci.fits.gz : (12000, 12000)
smacs0723-grizli-v7.0-f444w-clear_drc_wht.fits.gz : (12000, 12000)
smacs0723-grizli-v7.0-f444w-clear_drc_exp.fits.gz : (3000, 3000)
</code></pre></div></div>

<div class="language-python highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="c1"># Files have a single PrimaryHDU
</span><span class="n">img</span><span class="p">[</span><span class="s">'sci'</span><span class="p">].</span><span class="n">info</span><span class="p">()</span>
</code></pre></div></div>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>Filename: /Users/gbrammer/.astropy/cache/download/url/b0380671ce11dec1c5653485f66f705c/contents
No.    Name      Ver    Type      Cards   Dimensions   Format
  0  PRIMARY       1 PrimaryHDU      93   (12000, 12000)   float32   
</code></pre></div></div>

<h2 id="primary-sci-header">Primary <code class="language-plaintext highlighter-rouge">sci</code> header</h2>

<div class="language-python highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="n">img</span><span class="p">[</span><span class="s">'sci'</span><span class="p">][</span><span class="mi">0</span><span class="p">].</span><span class="n">header</span>
</code></pre></div></div>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>SIMPLE  =                    T / conforms to FITS standard                      
BITPIX  =                  -32 / array data type                                
NAXIS   =                    2 / number of array dimensions                     
NAXIS1  =                12000                                                  
NAXIS2  =                12000                                                  
WCSAXES =                    2 / Number of coordinate axes                      
CRPIX1  =               4591.5 / Pixel coordinate of reference point            
CRPIX2  =               6515.5 / Pixel coordinate of reference point            
CD1_1   = -1.1111111111111E-05 / Coordinate transformation matrix element       
CD2_2   =  1.1111111111111E-05 / Coordinate transformation matrix element       
CDELT1  =                  1.0 / [deg] Coordinate increment at reference point  
CDELT2  =                  1.0 / [deg] Coordinate increment at reference point  
CUNIT1  = 'deg'                / Units of coordinate increment and value        
CUNIT2  = 'deg'                / Units of coordinate increment and value        
CTYPE1  = 'RA---TAN'           / Right ascension, gnomonic projection           
CTYPE2  = 'DEC--TAN'           / Declination, gnomonic projection               
CRVAL1  =            110.83403 / [deg] Coordinate value at reference point      
CRVAL2  =            -73.45429 / [deg] Coordinate value at reference point      
LONPOLE =                180.0 / [deg] Native longitude of celestial pole       
LATPOLE =            -73.45429 / [deg] Native latitude of celestial pole        
MJDREF  =                  0.0 / [d] MJD of fiducial time                       
DATE-OBS= '2022-06-07'         / ISO-8601 time of observation                   
MJD-OBS =              59737.0 / [d] MJD of observation                         
RADESYS = 'ICRS'               / Equatorial coordinate system                   
CD1_2   =                  0.0                                                  
CD2_1   =                  0.0                                                  
DRIZKERN= 'square  '           / Drizzle kernel                                 
DRIZPIXF=                 0.75 / Drizzle pixfrac                                
EXPTIME =    15074.42400000001                                                  
NDRIZIM =                   18                                                  
PIXFRAC =                 0.75                                                  
KERNEL  = 'square  '                                                            
OKBITS  =                    4 / FLT bits treated as valid                      
PHOTSCAL=    1.001401962747847 / Scale factor applied                           
GRIZLIV = '1.8.16.dev12+g86ad0c1' / Grizli code version                         
WHTTYPE = 'jwst    '           / Exposure weighting strategy                    
RNPERC  =                   99 / VAR_RNOISE clip percentile for JWST            
TELESCOP= 'JWST    '                                                            
FILTER  = 'F444W   '                                                            
PUPIL   = 'CLEAR   '                                                            
DETECTOR= 'NRCALONG'                                                            
INSTRUME= 'NIRCAM  '                                                            
PHOTFLAM= 1.54184756289340E-22                                                  
PHOTPLAM=    44036.71097714713                                                  
PHOTFNU =                1E-08                                                  
EXPSTART=    59737.22120032604                                                  
EXPEND  =    59737.23101751157                                                  
TIME-OBS= '05:18:31.708'                                                        
UPDA_CTX= 'jwst_0995.pmap'                                                      
CRDS_CTX= 'jwst_1041.pmap'                                                      
R_DISTOR= 'jwst_nircam_distortion_0141.asdf'                                    
R_PHOTOM= 'jwst_nircam_photom_0111.fits'                                        
R_FLAT  = 'jwst_nircam_flat_0574.fits'                                          
PHOTMJSR=   0.3925000131130219                                                  
PIXAR_SR=             9.31E-14                                                  
FLT00001= 'jw02736001001_02105_00001_nrcalong_rate.fits'                        
WHT00001=      14335.236328125 / Median weight of exposure 1                    
FLT00002= 'jw02736001001_02105_00001_nrcblong_rate.fits'                        
WHT00002=     14818.2607421875 / Median weight of exposure 2                    
FLT00003= 'jw02736001001_02105_00002_nrcalong_rate.fits'                        
WHT00003=      14245.970703125 / Median weight of exposure 3                    
FLT00004= 'jw02736001001_02105_00002_nrcblong_rate.fits'                        
WHT00004=     14709.4404296875 / Median weight of exposure 4                    
FLT00005= 'jw02736001001_02105_00003_nrcalong_rate.fits'                        
WHT00005=     14335.7177734375 / Median weight of exposure 5                    
FLT00006= 'jw02736001001_02105_00003_nrcblong_rate.fits'                        
WHT00006=     14799.9052734375 / Median weight of exposure 6                    
FLT00007= 'jw02736001001_02105_00004_nrcalong_rate.fits'                        
WHT00007=       14333.94921875 / Median weight of exposure 7                    
FLT00008= 'jw02736001001_02105_00004_nrcblong_rate.fits'                        
WHT00008=       14851.24609375 / Median weight of exposure 8                    
FLT00009= 'jw02736001001_02105_00005_nrcalong_rate.fits'                        
WHT00009=     14321.4130859375 / Median weight of exposure 9                    
FLT00010= 'jw02736001001_02105_00005_nrcblong_rate.fits'                        
WHT00010=      14816.029296875 / Median weight of exposure 10                   
FLT00011= 'jw02736001001_02105_00006_nrcalong_rate.fits'                        
WHT00011=     14384.9931640625 / Median weight of exposure 11                   
FLT00012= 'jw02736001001_02105_00006_nrcblong_rate.fits'                        
WHT00012=      14822.169921875 / Median weight of exposure 12                   
FLT00013= 'jw02736001001_02105_00007_nrcalong_rate.fits'                        
WHT00013=       14322.65234375 / Median weight of exposure 13                   
FLT00014= 'jw02736001001_02105_00007_nrcblong_rate.fits'                        
WHT00014=     14808.3759765625 / Median weight of exposure 14                   
FLT00015= 'jw02736001001_02105_00008_nrcalong_rate.fits'                        
WHT00015=     14282.8134765625 / Median weight of exposure 15                   
FLT00016= 'jw02736001001_02105_00008_nrcblong_rate.fits'                        
WHT00016=     14759.8623046875 / Median weight of exposure 16                   
FLT00017= 'jw02736001001_02105_00009_nrcalong_rate.fits'                        
WHT00017=     14353.7353515625 / Median weight of exposure 17                   
FLT00018= 'jw02736001001_02105_00009_nrcblong_rate.fits'                        
WHT00018=     14783.2705078125 / Median weight of exposure 18                   
OPHOTFNU= 9.30775449348276E-08 / Original PHOTFNU before scaling                
BUNIT   = '10.0*nanoJansky'                                                     
</code></pre></div></div>

<div class="language-python highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="c1"># Images have units of 10 nJy / pix
</span><span class="k">for</span> <span class="n">k</span> <span class="ow">in</span> <span class="p">(</span><span class="s">'FILTER'</span><span class="p">,</span><span class="s">'PHOTFNU'</span><span class="p">,</span><span class="s">'PHOTPLAM'</span><span class="p">,</span><span class="s">'BUNIT'</span><span class="p">):</span>
    <span class="k">print</span><span class="p">(</span><span class="sa">f</span><span class="s">"</span><span class="si">{</span><span class="n">k</span><span class="si">:</span><span class="o">&gt;</span><span class="mi">8</span><span class="si">}</span><span class="s">: </span><span class="si">{</span><span class="n">img</span><span class="p">[</span><span class="s">'sci'</span><span class="p">][</span><span class="mi">0</span><span class="p">].</span><span class="n">header</span><span class="p">[</span><span class="n">k</span><span class="p">]</span><span class="si">}</span><span class="s">"</span><span class="p">)</span>
</code></pre></div></div>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>  FILTER: F444W
 PHOTFNU: 1e-08
PHOTPLAM: 44036.71097714713
   BUNIT: 10.0*nanoJansky
</code></pre></div></div>

<h2 id="primary-exp-header">Primary <code class="language-plaintext highlighter-rouge">exp</code> header</h2>

<div class="language-python highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="n">img</span><span class="p">[</span><span class="s">'exp'</span><span class="p">][</span><span class="mi">0</span><span class="p">].</span><span class="n">header</span>
</code></pre></div></div>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>SIMPLE  =                    T / conforms to FITS standard                      
BITPIX  =                   32 / array data type                                
NAXIS   =                    2 / number of array dimensions                     
NAXIS1  =                 3000                                                  
NAXIS2  =                 3000                                                  
WCSAXES =                    2 / Number of coordinate axes                      
CRPIX1  =             1147.875 / Pixel coordinate of reference point            
CRPIX2  =             1628.875 / Pixel coordinate of reference point            
CD1_1   = -4.4444444444444E-05 / Coordinate transformation matrix element       
CD2_2   =  4.4444444444444E-05 / Coordinate transformation matrix element       
CDELT1  =                  1.0 / [deg] Coordinate increment at reference point  
CDELT2  =                  1.0 / [deg] Coordinate increment at reference point  
CUNIT1  = 'deg'                / Units of coordinate increment and value        
CUNIT2  = 'deg'                / Units of coordinate increment and value        
CTYPE1  = 'RA---TAN'           / Right ascension, gnomonic projection           
CTYPE2  = 'DEC--TAN'           / Declination, gnomonic projection               
CRVAL1  =            110.83403 / [deg] Coordinate value at reference point      
CRVAL2  =            -73.45429 / [deg] Coordinate value at reference point      
LONPOLE =                180.0 / [deg] Native longitude of celestial pole       
LATPOLE =            -73.45429 / [deg] Native latitude of celestial pole        
MJDREF  =                  0.0 / [d] MJD of fiducial time                       
DATE-OBS= '2022-06-07'         / ISO-8601 time of observation                   
MJD-OBS =              59737.0 / [d] MJD of observation                         
RADESYS = 'ICRS'               / Equatorial coordinate system                   
CD1_2   =                  0.0                                                  
CD2_1   =                  0.0                                                  
DRIZKERN= 'square  '           / Drizzle kernel                                 
DRIZPIXF=                 0.75 / Drizzle pixfrac                                
EXPTIME =    15074.42400000001                                                  
NDRIZIM =                   18                                                  
PIXFRAC =                 0.75                                                  
KERNEL  = 'square  '                                                            
OKBITS  =                    4 / FLT bits treated as valid                      
PHOTSCAL=    1.001401962747847 / Scale factor applied                           
GRIZLIV = '1.8.16.dev12+g86ad0c1' / Grizli code version                         
WHTTYPE = 'jwst    '           / Exposure weighting strategy                    
RNPERC  =                   99 / VAR_RNOISE clip percentile for JWST            
TELESCOP= 'JWST    '                                                            
FILTER  = 'F444W   '                                                            
PUPIL   = 'CLEAR   '                                                            
DETECTOR= 'NRCALONG'                                                            
INSTRUME= 'NIRCAM  '                                                            
PHOTFLAM= 1.54184756289340E-22                                                  
PHOTPLAM=    44036.71097714713                                                  
PHOTFNU =                1E-08                                                  
EXPSTART=    59737.22120032604                                                  
EXPEND  =    59737.23101751157                                                  
TIME-OBS= '05:18:31.708'                                                        
UPDA_CTX= 'jwst_0995.pmap'                                                      
CRDS_CTX= 'jwst_1041.pmap'                                                      
R_DISTOR= 'jwst_nircam_distortion_0141.asdf'                                    
R_PHOTOM= 'jwst_nircam_photom_0111.fits'                                        
R_FLAT  = 'jwst_nircam_flat_0574.fits'                                          
PHOTMJSR=   0.3925000131130219                                                  
PIXAR_SR=             9.31E-14                                                  
FLT00001= 'jw02736001001_02105_00001_nrcalong_rate.fits'                        
WHT00001=      14335.236328125 / Median weight of exposure 1                    
FLT00002= 'jw02736001001_02105_00001_nrcblong_rate.fits'                        
WHT00002=     14818.2607421875 / Median weight of exposure 2                    
FLT00003= 'jw02736001001_02105_00002_nrcalong_rate.fits'                        
WHT00003=      14245.970703125 / Median weight of exposure 3                    
FLT00004= 'jw02736001001_02105_00002_nrcblong_rate.fits'                        
WHT00004=     14709.4404296875 / Median weight of exposure 4                    
FLT00005= 'jw02736001001_02105_00003_nrcalong_rate.fits'                        
WHT00005=     14335.7177734375 / Median weight of exposure 5                    
FLT00006= 'jw02736001001_02105_00003_nrcblong_rate.fits'                        
WHT00006=     14799.9052734375 / Median weight of exposure 6                    
FLT00007= 'jw02736001001_02105_00004_nrcalong_rate.fits'                        
WHT00007=       14333.94921875 / Median weight of exposure 7                    
FLT00008= 'jw02736001001_02105_00004_nrcblong_rate.fits'                        
WHT00008=       14851.24609375 / Median weight of exposure 8                    
FLT00009= 'jw02736001001_02105_00005_nrcalong_rate.fits'                        
WHT00009=     14321.4130859375 / Median weight of exposure 9                    
FLT00010= 'jw02736001001_02105_00005_nrcblong_rate.fits'                        
WHT00010=      14816.029296875 / Median weight of exposure 10                   
FLT00011= 'jw02736001001_02105_00006_nrcalong_rate.fits'                        
WHT00011=     14384.9931640625 / Median weight of exposure 11                   
FLT00012= 'jw02736001001_02105_00006_nrcblong_rate.fits'                        
WHT00012=      14822.169921875 / Median weight of exposure 12                   
FLT00013= 'jw02736001001_02105_00007_nrcalong_rate.fits'                        
WHT00013=       14322.65234375 / Median weight of exposure 13                   
FLT00014= 'jw02736001001_02105_00007_nrcblong_rate.fits'                        
WHT00014=     14808.3759765625 / Median weight of exposure 14                   
FLT00015= 'jw02736001001_02105_00008_nrcalong_rate.fits'                        
WHT00015=     14282.8134765625 / Median weight of exposure 15                   
FLT00016= 'jw02736001001_02105_00008_nrcblong_rate.fits'                        
WHT00016=     14759.8623046875 / Median weight of exposure 16                   
FLT00017= 'jw02736001001_02105_00009_nrcalong_rate.fits'                        
WHT00017=     14353.7353515625 / Median weight of exposure 17                   
FLT00018= 'jw02736001001_02105_00009_nrcblong_rate.fits'                        
WHT00018=     14783.2705078125 / Median weight of exposure 18                   
OPHOTFNU= 9.30775449348276E-08 / Original PHOTFNU before scaling                
BUNIT   = 'second  '                                                            
SAMPLE  =                    4 / Sampling factor                                
NXORIG  =                12000                                                  
NYORIG  =                12000                                                  
MOSPSCL =  0.03999999999999958 / Mosaic pixel scale arcsec                      
ORIGPSCL=   0.0629361212228063 / Original detector pixel scale arcsec           
DNTOEPS =    58.62417855098175 / Inverse flux conversion back to e per second   
BSCALE  =                    1                                                  
BZERO   =           2147483648                                                  
</code></pre></div></div>

<h2 id="wcs-log">WCS log</h2>

<p>The <code class="language-plaintext highlighter-rouge">wcs.csv</code> files contain the full SIP header of each exposure that contributes to the mosaic, along with some epoch information.</p>

<div class="language-python highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="n">_file</span> <span class="o">=</span> <span class="sa">f</span><span class="s">'</span><span class="si">{</span><span class="n">root</span><span class="si">}</span><span class="s">-</span><span class="si">{</span><span class="nb">filter</span><span class="si">}</span><span class="s">_wcs.csv'</span>
<span class="n">wcs</span> <span class="o">=</span> <span class="n">utils</span><span class="p">.</span><span class="n">read_catalog</span><span class="p">(</span><span class="n">os</span><span class="p">.</span><span class="n">path</span><span class="p">.</span><span class="n">join</span><span class="p">(</span><span class="n">BASE_URL</span><span class="p">,</span> <span class="n">_file</span><span class="p">))</span>
<span class="k">print</span><span class="p">(</span><span class="n">wcs</span><span class="p">.</span><span class="n">colnames</span><span class="p">)</span>
</code></pre></div></div>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>['file', 'ext', 'exptime', 'wcsaxes', 'crpix1', 'crpix2', 'cd1_1', 'cd1_2', 'cd2_1', 'cd2_2', 'cdelt1', 'cdelt2', 'cunit1', 'cunit2', 'ctype1', 'ctype2', 'crval1', 'crval2', 'lonpole', 'latpole', 'wcsname', 'mjdref', 'date-beg', 'mjd-beg', 'date-avg', 'mjd-avg', 'date-end', 'mjd-end', 'xposure', 'telapse', 'obsgeo-x', 'obsgeo-y', 'obsgeo-z', 'radesys', 'velosys', 'a_order', 'a_0_2', 'a_0_3', 'a_0_4', 'a_0_5', 'a_1_1', 'a_1_2', 'a_1_3', 'a_1_4', 'a_2_0', 'a_2_1', 'a_2_2', 'a_2_3', 'a_3_0', 'a_3_1', 'a_3_2', 'a_4_0', 'a_4_1', 'a_5_0', 'b_order', 'b_0_2', 'b_0_3', 'b_0_4', 'b_0_5', 'b_1_1', 'b_1_2', 'b_1_3', 'b_1_4', 'b_2_0', 'b_2_1', 'b_2_2', 'b_2_3', 'b_3_0', 'b_3_1', 'b_3_2', 'b_4_0', 'b_4_1', 'b_5_0', 'naxis', 'naxis1', 'naxis2', 'sipcrpx1', 'sipcrpx2']
</code></pre></div></div>

<div class="language-python highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="c1"># First few lines
</span><span class="n">wcs</span><span class="p">[</span><span class="s">'file'</span><span class="p">,</span><span class="s">'ext'</span><span class="p">,</span><span class="s">'exptime'</span><span class="p">,</span><span class="s">'mjd-avg'</span><span class="p">,</span><span class="s">'date-avg'</span><span class="p">,</span><span class="s">'crpix1'</span><span class="p">,</span><span class="s">'crpix2'</span><span class="p">,</span><span class="s">'crval1'</span><span class="p">,</span><span class="s">'crval2'</span><span class="p">][:</span><span class="mi">4</span><span class="p">]</span>
</code></pre></div></div>

<div><i>GTable length=4</i>
<table id="table6110610432" class="table-striped table-bordered table-condensed">
<thead><tr><th>file</th><th>ext</th><th>exptime</th><th>mjd-avg</th><th>date-avg</th><th>crpix1</th><th>crpix2</th><th>crval1</th><th>crval2</th></tr></thead>
<thead><tr><th>str44</th><th>int64</th><th>float64</th><th>float64</th><th>str23</th><th>float64</th><th>float64</th><th>float64</th><th>float64</th></tr></thead>
<tr><td>jw02736001001_02105_00001_nrcalong_rate.fits</td><td>1</td><td>837.468</td><td>59737.226108919</td><td>2022-06-07T05:25:35.811</td><td>1024.647</td><td>1024.66</td><td>110.68612332528</td><td>-73.481395298838</td></tr>
<tr><td>jw02736001001_02105_00001_nrcblong_rate.fits</td><td>1</td><td>837.468</td><td>59737.226105215</td><td>2022-06-07T05:25:35.491</td><td>1024.489</td><td>1024.662</td><td>110.8276309259</td><td>-73.453986741388</td></tr>
<tr><td>jw02736001001_02105_00002_nrcalong_rate.fits</td><td>1</td><td>837.468</td><td>59737.236795574</td><td>2022-06-07T05:40:59.138</td><td>1024.647</td><td>1024.66</td><td>110.68291892635</td><td>-73.47999884627</td></tr>
<tr><td>jw02736001001_02105_00002_nrcblong_rate.fits</td><td>1</td><td>837.468</td><td>59737.23679187</td><td>2022-06-07T05:40:58.818</td><td>1024.489</td><td>1024.662</td><td>110.82443032455</td><td>-73.452590822835</td></tr>
</table></div>

<h2 id="compare-the-wht-and-exp-images">Compare the WHT and EXP images</h2>

<div class="language-python highlighter-rouge"><div class="highlight"><pre class="highlight"><code>
<span class="n">exts</span> <span class="o">=</span> <span class="p">[</span><span class="s">'sci'</span><span class="p">,</span><span class="s">'wht'</span><span class="p">,</span><span class="s">'exp'</span><span class="p">]</span>

<span class="n">fig</span><span class="p">,</span> <span class="n">axes</span> <span class="o">=</span> <span class="n">plt</span><span class="p">.</span><span class="n">subplots</span><span class="p">(</span><span class="mi">2</span><span class="p">,</span><span class="nb">len</span><span class="p">(</span><span class="n">exts</span><span class="p">),</span><span class="n">figsize</span><span class="o">=</span><span class="p">(</span><span class="mi">3</span><span class="o">*</span><span class="nb">len</span><span class="p">(</span><span class="n">exts</span><span class="p">),</span><span class="mi">6</span><span class="p">))</span>

<span class="k">for</span> <span class="n">j</span><span class="p">,</span> <span class="n">ext</span> <span class="ow">in</span> <span class="nb">enumerate</span><span class="p">(</span><span class="n">exts</span><span class="p">):</span>
    <span class="n">msk</span> <span class="o">=</span> <span class="n">img</span><span class="p">[</span><span class="n">ext</span><span class="p">][</span><span class="mi">0</span><span class="p">].</span><span class="n">data</span> <span class="o">!=</span> <span class="mi">0</span>
    <span class="n">wmax</span> <span class="o">=</span> <span class="n">np</span><span class="p">.</span><span class="n">nanpercentile</span><span class="p">(</span><span class="n">img</span><span class="p">[</span><span class="n">ext</span><span class="p">][</span><span class="mi">0</span><span class="p">].</span><span class="n">data</span><span class="p">[</span><span class="n">msk</span><span class="p">],</span> <span class="mi">95</span><span class="p">)</span>
    <span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="p">[</span><span class="mi">0</span><span class="p">,</span><span class="mi">1</span><span class="p">]:</span>
        <span class="n">axes</span><span class="p">[</span><span class="n">i</span><span class="p">][</span><span class="n">j</span><span class="p">].</span><span class="n">imshow</span><span class="p">(</span><span class="n">img</span><span class="p">[</span><span class="n">ext</span><span class="p">][</span><span class="mi">0</span><span class="p">].</span><span class="n">data</span><span class="p">,</span> <span class="n">vmin</span><span class="o">=</span><span class="mi">0</span><span class="p">,</span> <span class="n">vmax</span><span class="o">=</span><span class="n">wmax</span><span class="p">,</span> <span class="n">origin</span><span class="o">=</span><span class="s">'lower'</span><span class="p">,</span> <span class="n">cmap</span><span class="o">=</span><span class="s">'magma'</span><span class="p">)</span>
        <span class="n">axes</span><span class="p">[</span><span class="n">i</span><span class="p">][</span><span class="n">j</span><span class="p">].</span><span class="n">grid</span><span class="p">()</span>
        <span class="k">if</span> <span class="n">i</span> <span class="o">==</span> <span class="mi">0</span><span class="p">:</span>
            <span class="n">axes</span><span class="p">[</span><span class="n">i</span><span class="p">][</span><span class="n">j</span><span class="p">].</span><span class="n">set_title</span><span class="p">(</span><span class="n">ext</span><span class="p">)</span>
        
<span class="n">xy</span> <span class="o">=</span> <span class="mi">2600</span><span class="p">,</span> <span class="mi">6100</span><span class="p">,</span> <span class="mi">256</span>

<span class="k">for</span> <span class="n">j</span><span class="p">,</span> <span class="n">p</span> <span class="ow">in</span> <span class="nb">enumerate</span><span class="p">([</span><span class="mi">0</span><span class="p">,</span><span class="mi">0</span><span class="p">,</span><span class="mi">1</span><span class="p">]):</span>
    <span class="n">axes</span><span class="p">[</span><span class="mi">0</span><span class="p">][</span><span class="n">j</span><span class="p">].</span><span class="n">set_xlim</span><span class="p">(</span><span class="o">*</span><span class="p">(</span><span class="n">xy</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="o">+</span> <span class="n">np</span><span class="p">.</span><span class="n">array</span><span class="p">([</span><span class="o">-</span><span class="mi">1</span><span class="p">,</span><span class="mi">1</span><span class="p">])</span><span class="o">*</span><span class="n">xy</span><span class="p">[</span><span class="mi">2</span><span class="p">])</span><span class="o">/</span><span class="mi">4</span><span class="o">**</span><span class="n">p</span><span class="p">)</span>
    <span class="n">axes</span><span class="p">[</span><span class="mi">0</span><span class="p">][</span><span class="n">j</span><span class="p">].</span><span class="n">set_ylim</span><span class="p">(</span><span class="o">*</span><span class="p">(</span><span class="n">xy</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span> <span class="o">+</span> <span class="n">np</span><span class="p">.</span><span class="n">array</span><span class="p">([</span><span class="o">-</span><span class="mi">1</span><span class="p">,</span><span class="mi">1</span><span class="p">])</span><span class="o">*</span><span class="n">xy</span><span class="p">[</span><span class="mi">2</span><span class="p">])</span><span class="o">/</span><span class="mi">4</span><span class="o">**</span><span class="n">p</span><span class="p">)</span>
    
<span class="n">fig</span><span class="p">.</span><span class="n">tight_layout</span><span class="p">(</span><span class="n">pad</span><span class="o">=</span><span class="mi">1</span><span class="p">)</span>
</code></pre></div></div>

<p><img src="/dja/assets/post_files/2023-07-18-image-data-products_files/image-data-products_16_0.png" alt="png" /></p>

<h2 id="make-a-full-variance-image-including-the-poisson-component-from-the-sources-themselves">Make a full variance image including the Poisson component from the sources themselves</h2>

<p>The mosaics are created by weighting each input exposure by a factor like <code class="language-plaintext highlighter-rouge">1/wht = VAR_RNOISE + median(VAR_POISSON)</code> from the JWST exposure files.  The first term incorporates pixel-to-pixel variations resulting from pixels where some fraction of the reads may have been masked as saturated or affected by cosmic rays.  The second term effectively provides the noise from the sky background, but without including the Poisson term for individual sources.</p>

<p>Certain applications like photometry or morphology fitting with <code class="language-plaintext highlighter-rouge">galfit</code> may require a variance / sigma image that includes the poisson term from the individual sources.  This can be generated from the <code class="language-plaintext highlighter-rouge">exp</code> maps as shown below.</p>

<div class="language-python highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="c1"># Grow the exposure map to the original frame
</span><span class="n">full_exp</span> <span class="o">=</span> <span class="n">np</span><span class="p">.</span><span class="n">zeros</span><span class="p">(</span><span class="n">img</span><span class="p">[</span><span class="s">'sci'</span><span class="p">][</span><span class="mi">0</span><span class="p">].</span><span class="n">data</span><span class="p">.</span><span class="n">shape</span><span class="p">,</span> <span class="n">dtype</span><span class="o">=</span><span class="nb">int</span><span class="p">)</span>
<span class="n">full_exp</span><span class="p">[</span><span class="mi">2</span><span class="p">::</span><span class="mi">4</span><span class="p">,</span><span class="mi">2</span><span class="p">::</span><span class="mi">4</span><span class="p">]</span> <span class="o">+=</span> <span class="n">img</span><span class="p">[</span><span class="s">'exp'</span><span class="p">][</span><span class="mi">0</span><span class="p">].</span><span class="n">data</span><span class="o">*</span><span class="mi">1</span>
<span class="n">full_exp</span> <span class="o">=</span> <span class="n">nd</span><span class="p">.</span><span class="n">maximum_filter</span><span class="p">(</span><span class="n">full_exp</span><span class="p">,</span> <span class="mi">4</span><span class="p">)</span>

<span class="n">img</span><span class="p">[</span><span class="s">'Full exp'</span><span class="p">]</span> <span class="o">=</span> <span class="n">pyfits</span><span class="p">.</span><span class="n">HDUList</span><span class="p">([</span><span class="n">pyfits</span><span class="p">.</span><span class="n">PrimaryHDU</span><span class="p">(</span><span class="n">data</span><span class="o">=</span><span class="n">full_exp</span><span class="p">)])</span>
</code></pre></div></div>

<div class="language-python highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="c1"># Show the full exposure map
</span><span class="n">exts</span> <span class="o">=</span> <span class="p">[</span><span class="s">'wht'</span><span class="p">,</span><span class="s">'Full exp'</span><span class="p">,</span><span class="s">'exp'</span><span class="p">]</span>

<span class="n">fig</span><span class="p">,</span> <span class="n">axes</span> <span class="o">=</span> <span class="n">plt</span><span class="p">.</span><span class="n">subplots</span><span class="p">(</span><span class="mi">2</span><span class="p">,</span><span class="nb">len</span><span class="p">(</span><span class="n">exts</span><span class="p">),</span><span class="n">figsize</span><span class="o">=</span><span class="p">(</span><span class="mi">3</span><span class="o">*</span><span class="nb">len</span><span class="p">(</span><span class="n">exts</span><span class="p">),</span><span class="mi">6</span><span class="p">))</span>

<span class="k">for</span> <span class="n">j</span><span class="p">,</span> <span class="n">ext</span> <span class="ow">in</span> <span class="nb">enumerate</span><span class="p">(</span><span class="n">exts</span><span class="p">):</span>
    <span class="n">msk</span> <span class="o">=</span> <span class="n">img</span><span class="p">[</span><span class="n">ext</span><span class="p">][</span><span class="mi">0</span><span class="p">].</span><span class="n">data</span> <span class="o">!=</span> <span class="mi">0</span>
    <span class="n">wmax</span> <span class="o">=</span> <span class="n">np</span><span class="p">.</span><span class="n">nanpercentile</span><span class="p">(</span><span class="n">img</span><span class="p">[</span><span class="n">ext</span><span class="p">][</span><span class="mi">0</span><span class="p">].</span><span class="n">data</span><span class="p">[</span><span class="n">msk</span><span class="p">],</span> <span class="mi">95</span><span class="p">)</span>
    <span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="p">[</span><span class="mi">0</span><span class="p">,</span><span class="mi">1</span><span class="p">]:</span>
        <span class="n">axes</span><span class="p">[</span><span class="n">i</span><span class="p">][</span><span class="n">j</span><span class="p">].</span><span class="n">imshow</span><span class="p">(</span><span class="n">img</span><span class="p">[</span><span class="n">ext</span><span class="p">][</span><span class="mi">0</span><span class="p">].</span><span class="n">data</span><span class="p">,</span> <span class="n">vmin</span><span class="o">=</span><span class="mi">0</span><span class="p">,</span> <span class="n">vmax</span><span class="o">=</span><span class="n">wmax</span><span class="p">,</span> <span class="n">origin</span><span class="o">=</span><span class="s">'lower'</span><span class="p">,</span> <span class="n">cmap</span><span class="o">=</span><span class="s">'magma'</span><span class="p">)</span>
        <span class="n">axes</span><span class="p">[</span><span class="n">i</span><span class="p">][</span><span class="n">j</span><span class="p">].</span><span class="n">grid</span><span class="p">()</span>
        <span class="k">if</span> <span class="n">i</span> <span class="o">==</span> <span class="mi">0</span><span class="p">:</span>
            <span class="n">axes</span><span class="p">[</span><span class="n">i</span><span class="p">][</span><span class="n">j</span><span class="p">].</span><span class="n">set_title</span><span class="p">(</span><span class="n">ext</span><span class="p">)</span>
        
<span class="n">xy</span> <span class="o">=</span> <span class="mi">2600</span><span class="p">,</span> <span class="mi">6100</span><span class="p">,</span> <span class="mi">256</span>

<span class="k">for</span> <span class="n">j</span><span class="p">,</span> <span class="n">p</span> <span class="ow">in</span> <span class="nb">enumerate</span><span class="p">([</span><span class="mi">0</span><span class="p">,</span><span class="mi">0</span><span class="p">,</span><span class="mi">1</span><span class="p">]):</span>
    <span class="n">axes</span><span class="p">[</span><span class="mi">0</span><span class="p">][</span><span class="n">j</span><span class="p">].</span><span class="n">set_xlim</span><span class="p">(</span><span class="o">*</span><span class="p">(</span><span class="n">xy</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="o">+</span> <span class="n">np</span><span class="p">.</span><span class="n">array</span><span class="p">([</span><span class="o">-</span><span class="mi">1</span><span class="p">,</span><span class="mi">1</span><span class="p">])</span><span class="o">*</span><span class="n">xy</span><span class="p">[</span><span class="mi">2</span><span class="p">])</span><span class="o">/</span><span class="mi">4</span><span class="o">**</span><span class="n">p</span><span class="p">)</span>
    <span class="n">axes</span><span class="p">[</span><span class="mi">0</span><span class="p">][</span><span class="n">j</span><span class="p">].</span><span class="n">set_ylim</span><span class="p">(</span><span class="o">*</span><span class="p">(</span><span class="n">xy</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span> <span class="o">+</span> <span class="n">np</span><span class="p">.</span><span class="n">array</span><span class="p">([</span><span class="o">-</span><span class="mi">1</span><span class="p">,</span><span class="mi">1</span><span class="p">])</span><span class="o">*</span><span class="n">xy</span><span class="p">[</span><span class="mi">2</span><span class="p">])</span><span class="o">/</span><span class="mi">4</span><span class="o">**</span><span class="n">p</span><span class="p">)</span>
    
<span class="n">fig</span><span class="p">.</span><span class="n">tight_layout</span><span class="p">(</span><span class="n">pad</span><span class="o">=</span><span class="mi">1</span><span class="p">)</span>
</code></pre></div></div>

<p><img src="/dja/assets/post_files/2023-07-18-image-data-products_files/image-data-products_19_0.png" alt="png" /></p>

<h3 id="effective-gain">Effective “gain”</h3>

<p>To convert the Poisson variance associated with the <code class="language-plaintext highlighter-rouge">sci</code> image, write down the multiplicative factors that had been applied to the original count-rate data in the pipeline <code class="language-plaintext highlighter-rouge">rate</code> files.  <code class="language-plaintext highlighter-rouge">PHOTMJSR</code> is the original flux calibration to units of “MJy/sr” and <code class="language-plaintext highlighter-rouge">PHOTSCL</code> is any (small) additional photometric term that was included by <code class="language-plaintext highlighter-rouge">grizli</code>.  The <code class="language-plaintext highlighter-rouge">PHOTFNU / OPHOTFNU</code> term accounts for any final scaling of the output mosaic and the ratio of the original and mosaic pixel areas.</p>

<div class="language-python highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="c1"># Scale factors
</span><span class="n">phot_scale</span> <span class="o">=</span> <span class="mi">1</span> <span class="o">/</span> <span class="p">(</span><span class="n">PHOTMJSR</span> <span class="o">*</span> <span class="n">PHOTSCAL</span><span class="p">)</span> <span class="o">*</span> <span class="n">PHOTFNU</span> <span class="o">/</span> <span class="n">OPHOTFNU</span>

<span class="c1"># Effective gain e-/DN, including exposure time
</span><span class="n">effective_gain</span> <span class="o">=</span> <span class="n">phot_scale</span> <span class="o">*</span> <span class="n">exposure_time_map</span>

<span class="c1"># Variance in electrons = counts in electrons
</span><span class="n">var_poisson_elec</span> <span class="o">=</span> <span class="n">sci</span> <span class="o">*</span> <span class="n">effective_gain</span>

<span class="c1"># Variance in mosaic DN
</span><span class="n">var_poisson_dn</span> <span class="o">=</span> <span class="n">var_poisson_elec</span> <span class="o">/</span> <span class="n">effective_gain</span><span class="o">**</span><span class="mi">2</span> <span class="o">=</span> <span class="n">sci</span> <span class="o">/</span> <span class="n">effective_gain</span>
</code></pre></div></div>

<div class="language-python highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="n">header</span> <span class="o">=</span> <span class="n">img</span><span class="p">[</span><span class="s">'exp'</span><span class="p">][</span><span class="mi">0</span><span class="p">].</span><span class="n">header</span>

<span class="c1"># Multiplicative factors that have been applied since the original count-rate images
</span><span class="n">phot_scale</span> <span class="o">=</span> <span class="mf">1.</span>

<span class="k">for</span> <span class="n">k</span> <span class="ow">in</span> <span class="p">[</span><span class="s">'PHOTMJSR'</span><span class="p">,</span><span class="s">'PHOTSCAL'</span><span class="p">]:</span>
    <span class="k">print</span><span class="p">(</span><span class="sa">f</span><span class="s">'</span><span class="si">{</span><span class="n">k</span><span class="si">}</span><span class="s"> </span><span class="si">{</span><span class="n">header</span><span class="p">[</span><span class="n">k</span><span class="p">]</span><span class="si">:</span><span class="p">.</span><span class="mi">3</span><span class="n">f</span><span class="si">}</span><span class="s">'</span><span class="p">)</span>
    <span class="n">phot_scale</span> <span class="o">/=</span> <span class="n">header</span><span class="p">[</span><span class="n">k</span><span class="p">]</span>

<span class="c1"># Unit and pixel area scale factors
</span><span class="k">if</span> <span class="s">'OPHOTFNU'</span> <span class="ow">in</span> <span class="n">header</span><span class="p">:</span>
    <span class="n">phot_scale</span> <span class="o">*=</span> <span class="n">header</span><span class="p">[</span><span class="s">'PHOTFNU'</span><span class="p">]</span> <span class="o">/</span> <span class="n">header</span><span class="p">[</span><span class="s">'OPHOTFNU'</span><span class="p">]</span>

<span class="c1"># "effective_gain" = electrons per DN of the mosaic
</span><span class="n">effective_gain</span> <span class="o">=</span> <span class="p">(</span><span class="n">phot_scale</span> <span class="o">*</span> <span class="n">full_exp</span><span class="p">)</span>

<span class="c1"># Poisson variance in mosaic DN
</span><span class="n">var_poisson_dn</span> <span class="o">=</span> <span class="n">np</span><span class="p">.</span><span class="n">maximum</span><span class="p">(</span><span class="n">img</span><span class="p">[</span><span class="s">'sci'</span><span class="p">][</span><span class="mi">0</span><span class="p">].</span><span class="n">data</span><span class="p">,</span> <span class="mi">0</span><span class="p">)</span> <span class="o">/</span> <span class="n">effective_gain</span>

<span class="c1"># Original variance from the `wht` image = RNOISE + BACKGROUND
</span><span class="n">var_wht</span> <span class="o">=</span> <span class="mi">1</span><span class="o">/</span><span class="n">img</span><span class="p">[</span><span class="s">'wht'</span><span class="p">][</span><span class="mi">0</span><span class="p">].</span><span class="n">data</span>

<span class="c1"># New total variance
</span><span class="n">var_total</span> <span class="o">=</span> <span class="n">var_wht</span> <span class="o">+</span> <span class="n">var_poisson_dn</span>
<span class="n">full_wht</span> <span class="o">=</span> <span class="mi">1</span> <span class="o">/</span> <span class="n">var_total</span>

<span class="c1"># Null weights
</span><span class="n">full_wht</span><span class="p">[</span><span class="n">var_total</span> <span class="o">&lt;=</span> <span class="mi">0</span><span class="p">]</span> <span class="o">=</span> <span class="mi">0</span>

<span class="n">img</span><span class="p">[</span><span class="s">'Full wht'</span><span class="p">]</span> <span class="o">=</span> <span class="n">pyfits</span><span class="p">.</span><span class="n">HDUList</span><span class="p">([</span><span class="n">pyfits</span><span class="p">.</span><span class="n">PrimaryHDU</span><span class="p">(</span><span class="n">data</span><span class="o">=</span><span class="n">full_wht</span><span class="p">,</span> <span class="n">header</span><span class="o">=</span><span class="n">img</span><span class="p">[</span><span class="s">'wht'</span><span class="p">][</span><span class="mi">0</span><span class="p">].</span><span class="n">header</span><span class="p">)])</span>
</code></pre></div></div>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>PHOTMJSR 0.393
PHOTSCAL 1.001
</code></pre></div></div>

<div class="language-python highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="c1"># Compare science and weight arrays, where you can now 
# "see" the sources in the Full weight array
</span>
<span class="n">exts</span> <span class="o">=</span> <span class="p">[</span><span class="s">'sci'</span><span class="p">,</span><span class="s">'Full wht'</span><span class="p">,</span><span class="s">'wht'</span><span class="p">]</span>

<span class="n">fig</span><span class="p">,</span> <span class="n">axes</span> <span class="o">=</span> <span class="n">plt</span><span class="p">.</span><span class="n">subplots</span><span class="p">(</span><span class="mi">2</span><span class="p">,</span><span class="nb">len</span><span class="p">(</span><span class="n">exts</span><span class="p">),</span><span class="n">figsize</span><span class="o">=</span><span class="p">(</span><span class="mi">3</span><span class="o">*</span><span class="nb">len</span><span class="p">(</span><span class="n">exts</span><span class="p">),</span><span class="mi">6</span><span class="p">))</span>

<span class="k">for</span> <span class="n">j</span><span class="p">,</span> <span class="n">ext</span> <span class="ow">in</span> <span class="nb">enumerate</span><span class="p">(</span><span class="n">exts</span><span class="p">):</span>
    <span class="n">msk</span> <span class="o">=</span> <span class="n">img</span><span class="p">[</span><span class="n">ext</span><span class="p">][</span><span class="mi">0</span><span class="p">].</span><span class="n">data</span> <span class="o">!=</span> <span class="mi">0</span>
    <span class="n">wmax</span> <span class="o">=</span> <span class="n">np</span><span class="p">.</span><span class="n">nanpercentile</span><span class="p">(</span><span class="n">img</span><span class="p">[</span><span class="n">ext</span><span class="p">][</span><span class="mi">0</span><span class="p">].</span><span class="n">data</span><span class="p">[</span><span class="n">msk</span><span class="p">],</span> <span class="mi">95</span><span class="p">)</span>
    <span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="p">[</span><span class="mi">0</span><span class="p">,</span><span class="mi">1</span><span class="p">]:</span>
        <span class="n">axes</span><span class="p">[</span><span class="n">i</span><span class="p">][</span><span class="n">j</span><span class="p">].</span><span class="n">imshow</span><span class="p">(</span><span class="n">img</span><span class="p">[</span><span class="n">ext</span><span class="p">][</span><span class="mi">0</span><span class="p">].</span><span class="n">data</span><span class="p">,</span> <span class="n">vmin</span><span class="o">=</span><span class="mi">0</span><span class="p">,</span> <span class="n">vmax</span><span class="o">=</span><span class="n">wmax</span><span class="p">,</span> <span class="n">origin</span><span class="o">=</span><span class="s">'lower'</span><span class="p">,</span> <span class="n">cmap</span><span class="o">=</span><span class="s">'magma'</span><span class="p">)</span>
        <span class="n">axes</span><span class="p">[</span><span class="n">i</span><span class="p">][</span><span class="n">j</span><span class="p">].</span><span class="n">grid</span><span class="p">()</span>
        <span class="k">if</span> <span class="n">i</span> <span class="o">==</span> <span class="mi">0</span><span class="p">:</span>
            <span class="n">axes</span><span class="p">[</span><span class="n">i</span><span class="p">][</span><span class="n">j</span><span class="p">].</span><span class="n">set_title</span><span class="p">(</span><span class="n">ext</span><span class="p">)</span>
        
<span class="n">xy</span> <span class="o">=</span> <span class="mi">2600</span><span class="p">,</span> <span class="mi">6100</span><span class="p">,</span> <span class="mi">256</span>

<span class="k">for</span> <span class="n">j</span><span class="p">,</span> <span class="n">p</span> <span class="ow">in</span> <span class="nb">enumerate</span><span class="p">([</span><span class="mi">0</span><span class="p">,</span><span class="mi">0</span><span class="p">,</span><span class="mi">0</span><span class="p">]):</span>
    <span class="n">axes</span><span class="p">[</span><span class="mi">0</span><span class="p">][</span><span class="n">j</span><span class="p">].</span><span class="n">set_xlim</span><span class="p">(</span><span class="o">*</span><span class="p">(</span><span class="n">xy</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="o">+</span> <span class="n">np</span><span class="p">.</span><span class="n">array</span><span class="p">([</span><span class="o">-</span><span class="mi">1</span><span class="p">,</span><span class="mi">1</span><span class="p">])</span><span class="o">*</span><span class="n">xy</span><span class="p">[</span><span class="mi">2</span><span class="p">])</span><span class="o">/</span><span class="mi">4</span><span class="o">**</span><span class="n">p</span><span class="p">)</span>
    <span class="n">axes</span><span class="p">[</span><span class="mi">0</span><span class="p">][</span><span class="n">j</span><span class="p">].</span><span class="n">set_ylim</span><span class="p">(</span><span class="o">*</span><span class="p">(</span><span class="n">xy</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span> <span class="o">+</span> <span class="n">np</span><span class="p">.</span><span class="n">array</span><span class="p">([</span><span class="o">-</span><span class="mi">1</span><span class="p">,</span><span class="mi">1</span><span class="p">])</span><span class="o">*</span><span class="n">xy</span><span class="p">[</span><span class="mi">2</span><span class="p">])</span><span class="o">/</span><span class="mi">4</span><span class="o">**</span><span class="n">p</span><span class="p">)</span>
    
<span class="n">fig</span><span class="p">.</span><span class="n">tight_layout</span><span class="p">(</span><span class="n">pad</span><span class="o">=</span><span class="mi">1</span><span class="p">)</span>
</code></pre></div></div>

<p><img src="/dja/assets/post_files/2023-07-18-image-data-products_files/image-data-products_22_0.png" alt="png" /></p>]]></content><author><name>Gabriel Brammer</name></author><category term="imaging" /><category term="demo" /><category term="jwst" /><summary type="html"><![CDATA[imaging demo jwst (This page is auto-generated from the Jupyter notebook image-data-products.ipynb.)]]></summary></entry><entry><title type="html">Catalog Demo - GOODS-South</title><link href="https://dawn-cph.github.io/dja/blog/2023/07/14/photometric-catalog-demo/" rel="alternate" type="text/html" title="Catalog Demo - GOODS-South" /><published>2023-07-14T23:18:17+00:00</published><updated>2023-07-14T23:18:17+00:00</updated><id>https://dawn-cph.github.io/dja/blog/2023/07/14/photometric-catalog-demo</id><content type="html" xml:base="https://dawn-cph.github.io/dja/blog/2023/07/14/photometric-catalog-demo/"><![CDATA[<p> 
    
    <a class="blog-category" href="/dja/blog/categories/#imaging"> imaging</a>
    
    
        
        <a class="blog-tag" href="/dja/blog/tags/#catalog"> catalog</a>
        
        <a class="blog-tag" href="/dja/blog/tags/#gds"> gds</a>
              
    
</p>

<p>(This page is auto-generated from the Jupyter notebook <a href="/dja/assets/post_files/2023-07-15-photometric-catalog-demo.ipynb">photometric-catalog-demo.ipynb</a>.)</p>

<p>Show how to interact with the DJA/grizli photometric catalogs.</p>

<p>(little explanatory text for the quick demo)</p>

<div class="language-python highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="o">%</span><span class="n">matplotlib</span> <span class="n">inline</span>

<span class="kn">import</span> <span class="nn">os</span>
<span class="kn">import</span> <span class="nn">yaml</span>

<span class="kn">import</span> <span class="nn">numpy</span> <span class="k">as</span> <span class="n">np</span>
<span class="kn">import</span> <span class="nn">matplotlib.pyplot</span> <span class="k">as</span> <span class="n">plt</span>

<span class="kn">import</span> <span class="nn">warnings</span>
<span class="n">warnings</span><span class="p">.</span><span class="n">filterwarnings</span><span class="p">(</span><span class="s">'ignore'</span><span class="p">)</span>

<span class="kn">import</span> <span class="nn">astropy.io.fits</span> <span class="k">as</span> <span class="n">pyfits</span>

<span class="kn">import</span> <span class="nn">grizli</span>
<span class="kn">import</span> <span class="nn">grizli.catalog</span>
<span class="kn">from</span> <span class="nn">grizli</span> <span class="kn">import</span> <span class="n">utils</span>

<span class="kn">import</span> <span class="nn">eazy</span>

<span class="k">print</span><span class="p">(</span><span class="sa">f</span><span class="s">'grizli version: </span><span class="si">{</span><span class="n">grizli</span><span class="p">.</span><span class="n">__version__</span><span class="si">}</span><span class="s">'</span><span class="p">)</span>
<span class="k">print</span><span class="p">(</span><span class="sa">f</span><span class="s">'eazy-py version: </span><span class="si">{</span><span class="n">eazy</span><span class="p">.</span><span class="n">__version__</span><span class="si">}</span><span class="s">'</span><span class="p">)</span>

</code></pre></div></div>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>grizli version: 1.10.dev2+g661e5ea
eazy-py version: 0.6.5
</code></pre></div></div>

<h2 id="set-the-field">Set the field</h2>

<p>Currently available:</p>
<ul>
  <li><code class="language-plaintext highlighter-rouge">gds</code> = GOODS-South</li>
  <li><code class="language-plaintext highlighter-rouge">gdn</code> = GOODS-North</li>
  <li><code class="language-plaintext highlighter-rouge">ceers-full</code> = CEERS EGS</li>
  <li><code class="language-plaintext highlighter-rouge">abell2744clu</code> = Abell 2744 GLASS + UNCOVER + DD-2756</li>
  <li><code class="language-plaintext highlighter-rouge">macs0647</code> = MACS 0647 cluster (Coe et al., GO-1433)</li>
  <li><code class="language-plaintext highlighter-rouge">rxj2129</code> = RXJ 2129 cluster (Kelly et al., DD-2767)</li>
  <li><code class="language-plaintext highlighter-rouge">sunrise</code> = “Sunrise Arc” (WHL0137, Coe et al., GO-2282)</li>
  <li><code class="language-plaintext highlighter-rouge">smacs0723</code> = SMACS 0723 cluster (Pontoppidan et al., DD-2736)</li>
  <li>…</li>
</ul>

<div class="language-python highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="n">field</span> <span class="o">=</span> <span class="s">'gds-grizli-v7.0'</span>

<span class="n">url_path</span> <span class="o">=</span> <span class="s">'https://s3.amazonaws.com/grizli-v2/JwstMosaics/v7'</span>
</code></pre></div></div>

<h2 id="raw-photometry">Raw photometry</h2>

<p>NB: All photometry given in <code class="language-plaintext highlighter-rouge">fnu</code> flux densities with units of <code class="language-plaintext highlighter-rouge">microJansky</code> (AB zeropoint = 23.9).</p>

<div class="language-python highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="n">phot</span> <span class="o">=</span> <span class="n">utils</span><span class="p">.</span><span class="n">read_catalog</span><span class="p">(</span><span class="sa">f</span><span class="s">'</span><span class="si">{</span><span class="n">url_path</span><span class="si">}</span><span class="s">/</span><span class="si">{</span><span class="n">field</span><span class="si">}</span><span class="s">_phot.fits'</span><span class="p">)</span>
</code></pre></div></div>

<h3 id="metadata">Metadata</h3>

<div class="language-python highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="c1"># General data of the source detection
</span><span class="k">for</span> <span class="n">i</span><span class="p">,</span> <span class="n">k</span> <span class="ow">in</span> <span class="nb">enumerate</span><span class="p">(</span><span class="n">phot</span><span class="p">.</span><span class="n">meta</span><span class="p">):</span>
    <span class="k">print</span><span class="p">(</span><span class="sa">f</span><span class="s">'</span><span class="si">{</span><span class="n">k</span><span class="si">:</span><span class="o">&gt;</span><span class="mi">36</span><span class="si">}</span><span class="s"> = </span><span class="si">{</span><span class="n">phot</span><span class="p">.</span><span class="n">meta</span><span class="p">[</span><span class="n">k</span><span class="p">]</span><span class="si">}</span><span class="s">'</span><span class="p">)</span>
    <span class="k">if</span> <span class="n">i</span> <span class="o">&gt;</span> <span class="mi">70</span><span class="p">:</span>
        <span class="k">print</span><span class="p">(</span><span class="s">'...'</span><span class="p">)</span>
        <span class="k">break</span>
</code></pre></div></div>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>                             VERSION = 1.2.1
                             MINAREA = 9
                               CLEAN = True
                             DEBCONT = 0.001
                            DEBTHRSH = 32
                         FILTER_TYPE = conv
                           THRESHOLD = 1.5
                            KRONFACT = 2.5
                               KRON0 = 2.4
                               KRON1 = 3.8
                             MINKRON = 8.750000000000059
                            TOTCFILT = F140W
                            TOTCWAVE = 13922.907
                                  ZP = 28.9
                                PLAM = 13922.907
                                 FNU = 1e-08
                                FLAM = 1.4737148e-20
                              UJY2DN = 99.99395614709495
                            DRZ_FILE = gds-grizli-v7.0-ir_drc_sci.fits.gz
                            WHT_FILE = gds-grizli-v7.0-ir_drc_wht.fits.gz
                            GET_BACK = True
                             BACK_BW = 50
                             BACK_BH = 50
                             BACK_FW = 3
                             BACK_FH = 3
                    BACK_PIXEL_SCALE = 0.04
                           ERR_SCALE = 0.8123676180839539
                            RESCALEW = True
                            APERMASK = True
                                GAIN = 2000.0
                              APER_0 = 9.00000000000006
                              ASEC_0 = 0.36
                              APER_1 = 12.50002500000008
                              ASEC_1 = 0.5000009999999999
                              APER_2 = 17.50000500000012
                              ASEC_2 = 0.7000002000000001
                              APER_3 = 25.00000500000017
                              ASEC_3 = 1.0000002
                CLEARP-F430M_VERSION = 1.2.1
                     CLEARP-F430M_ZP = 28.9
                   CLEARP-F430M_PLAM = 42816.84172704966
                    CLEARP-F430M_FNU = 1e-08
                   CLEARP-F430M_FLAM = 1.63095481504235e-22
                 CLEARP-F430M_uJy2dn = 99.99395614709495
               CLEARP-F430M_DRZ_FILE = gds-grizli-v7.0-clearp-f430m_drc_sci
               CLEARP-F430M_WHT_FILE = gds-grizli-v7.0-clearp-f430m_drc_wht
               CLEARP-F430M_GET_BACK = True
                CLEARP-F430M_BACK_BW = 50
                CLEARP-F430M_BACK_BH = 50
                CLEARP-F430M_BACK_FW = 3
                CLEARP-F430M_BACK_FH = 3
       CLEARP-F430M_BACK_PIXEL_SCALE = 0.04
              CLEARP-F430M_ERR_SCALE = 1.0
               CLEARP-F430M_RESCALEW = True
               CLEARP-F430M_APERMASK = True
                   CLEARP-F430M_GAIN = 2000.0
                 CLEARP-F430M_aper_0 = 9.00000000000006
                 CLEARP-F430M_asec_0 = 0.36
                 CLEARP-F430M_aper_1 = 12.50002500000008
                 CLEARP-F430M_asec_1 = 0.5000009999999999
                 CLEARP-F430M_aper_2 = 17.50000500000012
                 CLEARP-F430M_asec_2 = 0.7000002000000001
                 CLEARP-F430M_aper_3 = 25.00000500000017
                 CLEARP-F430M_asec_3 = 1.0000002
                CLEARP-F480M_VERSION = 1.2.1
                     CLEARP-F480M_ZP = 28.9
                   CLEARP-F480M_PLAM = 48151.90220745452
                    CLEARP-F480M_FNU = 1e-08
                   CLEARP-F480M_FLAM = 1.28956813045049e-22
                 CLEARP-F480M_uJy2dn = 99.99395614709495
               CLEARP-F480M_DRZ_FILE = gds-grizli-v7.0-clearp-f480m_drc_sci
               CLEARP-F480M_WHT_FILE = gds-grizli-v7.0-clearp-f480m_drc_wht
...
</code></pre></div></div>

<h3 id="photometric-apertures">Photometric apertures</h3>

<div class="language-python highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="k">for</span> <span class="n">i</span><span class="p">,</span> <span class="n">k</span> <span class="ow">in</span> <span class="nb">enumerate</span><span class="p">(</span><span class="n">phot</span><span class="p">.</span><span class="n">meta</span><span class="p">):</span>
    <span class="k">if</span> <span class="n">k</span><span class="p">.</span><span class="n">startswith</span><span class="p">(</span><span class="s">'APER_'</span><span class="p">):</span>
        <span class="n">aper_index</span> <span class="o">=</span> <span class="n">k</span><span class="p">[</span><span class="o">-</span><span class="mi">1</span><span class="p">]</span>
        <span class="k">print</span><span class="p">(</span><span class="sa">f</span><span class="s">"Aperture index </span><span class="si">{</span><span class="n">aper_index</span><span class="si">}</span><span class="s">: *diameter* = </span><span class="si">{</span><span class="n">phot</span><span class="p">.</span><span class="n">meta</span><span class="p">[</span><span class="n">k</span><span class="p">]</span><span class="si">:</span><span class="mf">4.1</span><span class="n">f</span><span class="si">}</span><span class="s"> pixels = </span><span class="si">{</span><span class="n">phot</span><span class="p">.</span><span class="n">meta</span><span class="p">[</span><span class="n">k</span><span class="p">.</span><span class="n">replace</span><span class="p">(</span><span class="s">'APER'</span><span class="p">,</span><span class="s">'ASEC'</span><span class="p">)]</span><span class="si">:</span><span class="p">.</span><span class="mi">2</span><span class="n">f</span><span class="si">}</span><span class="s"> arcsec"</span><span class="p">)</span>
</code></pre></div></div>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>Aperture index 0: *diameter* =  9.0 pixels = 0.36 arcsec
Aperture index 1: *diameter* = 12.5 pixels = 0.50 arcsec
Aperture index 2: *diameter* = 17.5 pixels = 0.70 arcsec
Aperture index 3: *diameter* = 25.0 pixels = 1.00 arcsec
</code></pre></div></div>

<div class="language-python highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="c1"># Columns for a particular filter + aperture
</span><span class="n">aper_index</span> <span class="o">=</span> <span class="s">'1'</span>

<span class="n">cols</span> <span class="o">=</span> <span class="p">[]</span>

<span class="k">for</span> <span class="n">k</span> <span class="ow">in</span> <span class="n">phot</span><span class="p">.</span><span class="n">colnames</span><span class="p">:</span>
    <span class="k">if</span> <span class="n">k</span><span class="p">.</span><span class="n">startswith</span><span class="p">(</span><span class="s">'f444w'</span><span class="p">)</span> <span class="o">&amp;</span> <span class="n">k</span><span class="p">.</span><span class="n">endswith</span><span class="p">(</span><span class="n">aper_index</span><span class="p">):</span>
        <span class="n">cols</span><span class="p">.</span><span class="n">append</span><span class="p">(</span><span class="n">k</span><span class="p">)</span>
        
<span class="n">phot</span><span class="p">[</span><span class="n">cols</span><span class="p">].</span><span class="n">info</span><span class="p">()</span>
</code></pre></div></div>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>&lt;GTable length=52427&gt;
           name             dtype  unit    class     n_bad
-------------------------- ------- ---- ------------ -----
   f444w-clear_flux_aper_1 float64  uJy MaskedColumn   640
f444w-clear_fluxerr_aper_1 float64  uJy MaskedColumn   640
   f444w-clear_flag_aper_1   int16            Column     0
    f444w-clear_bkg_aper_1 float64  uJy MaskedColumn   641
   f444w-clear_mask_aper_1 float64            Column     0
</code></pre></div></div>

<h3 id="photometric-bands">Photometric bands</h3>

<ul>
  <li>NIRCam filters generally have “clear” in the filter name, which is the element in the <code class="language-plaintext highlighter-rouge">pupil</code> wheel.</li>
  <li>Filters that start with <code class="language-plaintext highlighter-rouge">clearp</code> are generally the long-wavelength NIRISS filters.</li>
  <li>Filters with names that end in <code class="language-plaintext highlighter-rouge">wn</code> are the NIRISS versions, e.g., <code class="language-plaintext highlighter-rouge">f200wn-clear</code> for NIRISS and <code class="language-plaintext highlighter-rouge">f200w-clear</code> for NIRCam</li>
  <li>HST filters ending in “u” are the WFC3/UVIS versions, e.g., <code class="language-plaintext highlighter-rouge">f814wu</code></li>
</ul>

<div class="language-python highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="n">count</span> <span class="o">=</span> <span class="mi">0</span>
<span class="k">for</span> <span class="n">k</span> <span class="ow">in</span> <span class="n">phot</span><span class="p">.</span><span class="n">colnames</span><span class="p">:</span>
    <span class="k">if</span> <span class="n">k</span><span class="p">.</span><span class="n">endswith</span><span class="p">(</span><span class="s">'_flux_aper_1'</span><span class="p">):</span>
        <span class="n">count</span> <span class="o">+=</span> <span class="mi">1</span>
        <span class="k">print</span><span class="p">(</span><span class="sa">f</span><span class="s">"</span><span class="si">{</span><span class="n">count</span><span class="si">:</span><span class="o">&gt;</span><span class="mi">2</span><span class="si">}</span><span class="s"> </span><span class="si">{</span><span class="n">k</span><span class="p">.</span><span class="n">split</span><span class="p">(</span><span class="s">'_flux'</span><span class="p">)[</span><span class="mi">0</span><span class="p">]</span><span class="si">}</span><span class="s">"</span><span class="p">)</span>
</code></pre></div></div>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code> 1 clearp-f430m
 2 clearp-f480m
 3 f090w-clear
 4 f105w
 5 f110w
 6 f115w-clear
 7 f115wn-clear
 8 f125w
 9 f140w
10 f150w-clear
11 f150wn-clear
12 f160w
13 f182m-clear
14 f200w-clear
15 f200wn-clear
16 f210m-clear
17 f277w-clear
18 f335m-clear
19 f336wu
20 f350lpu
21 f356w-clear
22 f410m-clear
23 f430m-clear
24 f435w
25 f444w-clear
26 f460m-clear
27 f475w
28 f480m-clear
29 f606w
30 f606wu
31 f775w
32 f814w
33 f814wu
34 f850lp
35 f850lpu
</code></pre></div></div>

<div class="language-python highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="c1"># Missing data are *masked*
</span>
<span class="n">fig</span><span class="p">,</span> <span class="n">axes</span> <span class="o">=</span> <span class="n">plt</span><span class="p">.</span><span class="n">subplots</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span><span class="mi">2</span><span class="p">,</span><span class="n">figsize</span><span class="o">=</span><span class="p">(</span><span class="mi">10</span><span class="p">,</span><span class="mi">5</span><span class="p">),</span> <span class="n">sharex</span><span class="o">=</span><span class="bp">True</span><span class="p">,</span> <span class="n">sharey</span><span class="o">=</span><span class="bp">True</span><span class="p">)</span>
<span class="n">cosd</span> <span class="o">=</span> <span class="n">np</span><span class="p">.</span><span class="n">cos</span><span class="p">(</span><span class="n">np</span><span class="p">.</span><span class="n">nanmedian</span><span class="p">(</span><span class="n">phot</span><span class="p">[</span><span class="s">'dec'</span><span class="p">])</span><span class="o">/</span><span class="mi">180</span><span class="o">*</span><span class="n">np</span><span class="p">.</span><span class="n">pi</span><span class="p">)</span>

<span class="n">axes</span><span class="p">[</span><span class="mi">0</span><span class="p">].</span><span class="n">scatter</span><span class="p">(</span><span class="n">phot</span><span class="p">[</span><span class="s">'ra'</span><span class="p">],</span> <span class="n">phot</span><span class="p">[</span><span class="s">'dec'</span><span class="p">],</span> <span class="n">c</span><span class="o">=</span><span class="n">phot</span><span class="p">[</span><span class="s">'f444w-clear_flux_aper_1'</span><span class="p">].</span><span class="n">mask</span><span class="p">)</span>
<span class="n">axes</span><span class="p">[</span><span class="mi">0</span><span class="p">].</span><span class="n">set_title</span><span class="p">(</span><span class="s">'F444W (JADES + FRESCO)'</span><span class="p">)</span>

<span class="n">axes</span><span class="p">[</span><span class="mi">1</span><span class="p">].</span><span class="n">scatter</span><span class="p">(</span><span class="n">phot</span><span class="p">[</span><span class="s">'ra'</span><span class="p">],</span> <span class="n">phot</span><span class="p">[</span><span class="s">'dec'</span><span class="p">],</span> <span class="n">c</span><span class="o">=</span><span class="n">phot</span><span class="p">[</span><span class="s">'f277w-clear_flux_aper_1'</span><span class="p">].</span><span class="n">mask</span><span class="p">)</span>
<span class="n">axes</span><span class="p">[</span><span class="mi">1</span><span class="p">].</span><span class="n">set_title</span><span class="p">(</span><span class="s">'F277W (JADES)'</span><span class="p">)</span>

<span class="n">axes</span><span class="p">[</span><span class="mi">0</span><span class="p">].</span><span class="n">set_xlim</span><span class="p">(</span><span class="o">*</span><span class="n">axes</span><span class="p">[</span><span class="mi">0</span><span class="p">].</span><span class="n">get_xlim</span><span class="p">()[::</span><span class="o">-</span><span class="mi">1</span><span class="p">])</span>
<span class="k">for</span> <span class="n">ax</span> <span class="ow">in</span> <span class="n">axes</span><span class="p">:</span>
    <span class="n">ax</span><span class="p">.</span><span class="n">set_aspect</span><span class="p">(</span><span class="mf">1.</span><span class="o">/</span><span class="n">cosd</span><span class="p">)</span>
    <span class="n">ax</span><span class="p">.</span><span class="n">grid</span><span class="p">()</span>
    
</code></pre></div></div>

<p><img src="/dja/assets/post_files/2023-07-15-photometric-catalog-demo_files/photometric-catalog-demo_14_0.png" alt="png" /></p>

<div class="language-python highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="c1"># 5-sigma depth in the D=0.5" aperture
</span><span class="n">depth</span> <span class="o">=</span> <span class="mf">23.9</span> <span class="o">-</span> <span class="mf">2.5</span><span class="o">*</span><span class="n">np</span><span class="p">.</span><span class="n">log10</span><span class="p">(</span><span class="n">phot</span><span class="p">[</span><span class="s">'f444w-clear_flux_aper_1'</span><span class="p">]</span><span class="o">*</span><span class="mi">5</span><span class="p">)</span>
<span class="n">fig</span><span class="p">,</span> <span class="n">ax</span> <span class="o">=</span> <span class="n">plt</span><span class="p">.</span><span class="n">subplots</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span><span class="mi">1</span><span class="p">,</span><span class="n">figsize</span><span class="o">=</span><span class="p">(</span><span class="mi">6</span><span class="p">,</span><span class="mi">5</span><span class="p">))</span>
<span class="n">ax</span><span class="p">.</span><span class="n">set_aspect</span><span class="p">(</span><span class="mf">1.</span><span class="o">/</span><span class="n">cosd</span><span class="p">)</span>
<span class="n">so</span> <span class="o">=</span> <span class="n">np</span><span class="p">.</span><span class="n">argsort</span><span class="p">(</span><span class="n">depth</span><span class="p">)</span>
<span class="n">sc</span> <span class="o">=</span> <span class="n">ax</span><span class="p">.</span><span class="n">scatter</span><span class="p">(</span><span class="n">phot</span><span class="p">[</span><span class="s">'ra'</span><span class="p">][</span><span class="n">so</span><span class="p">],</span> <span class="n">phot</span><span class="p">[</span><span class="s">'dec'</span><span class="p">][</span><span class="n">so</span><span class="p">],</span> <span class="n">c</span><span class="o">=</span><span class="n">depth</span><span class="p">[</span><span class="n">so</span><span class="p">],</span> <span class="n">vmin</span><span class="o">=</span><span class="mi">26</span><span class="p">,</span> <span class="n">vmax</span><span class="o">=</span><span class="mi">31</span><span class="p">,</span> <span class="n">alpha</span><span class="o">=</span><span class="mf">0.5</span><span class="p">)</span>

<span class="n">ax</span><span class="p">.</span><span class="n">set_xlim</span><span class="p">(</span><span class="o">*</span><span class="n">axes</span><span class="p">[</span><span class="mi">0</span><span class="p">].</span><span class="n">get_xlim</span><span class="p">()[::</span><span class="o">-</span><span class="mi">1</span><span class="p">])</span>

<span class="n">cb</span> <span class="o">=</span> <span class="n">plt</span><span class="p">.</span><span class="n">colorbar</span><span class="p">(</span><span class="n">sc</span><span class="p">)</span>
<span class="n">cb</span><span class="p">.</span><span class="n">set_label</span><span class="p">(</span><span class="s">'raw depth, D=0.5" aperture'</span><span class="p">)</span>
</code></pre></div></div>

<p><img src="/dja/assets/post_files/2023-07-15-photometric-catalog-demo_files/photometric-catalog-demo_15_0.png" alt="png" /></p>

<h3 id="point-sources">Point sources</h3>

<div class="language-python highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="n">fig</span><span class="p">,</span> <span class="n">ax</span> <span class="o">=</span> <span class="n">plt</span><span class="p">.</span><span class="n">subplots</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span><span class="mi">1</span><span class="p">,</span><span class="n">figsize</span><span class="o">=</span><span class="p">(</span><span class="mi">8</span><span class="p">,</span><span class="mi">5</span><span class="p">))</span>
<span class="n">in_jades</span> <span class="o">=</span> <span class="o">~</span><span class="n">phot</span><span class="p">[</span><span class="s">'f277w-clear_flux_aper_1'</span><span class="p">].</span><span class="n">mask</span>
<span class="n">ax</span><span class="p">.</span><span class="n">scatter</span><span class="p">(</span><span class="n">phot</span><span class="p">[</span><span class="s">'mag_auto'</span><span class="p">],</span> <span class="n">phot</span><span class="p">[</span><span class="s">'flux_radius'</span><span class="p">],</span> <span class="n">alpha</span><span class="o">=</span><span class="mf">0.2</span><span class="p">,</span> <span class="n">c</span><span class="o">=</span><span class="n">in_jades</span><span class="p">,</span> <span class="n">vmin</span><span class="o">=</span><span class="mi">0</span><span class="p">,</span> <span class="n">vmax</span><span class="o">=</span><span class="mi">2</span><span class="p">,</span> <span class="n">cmap</span><span class="o">=</span><span class="s">'viridis'</span><span class="p">)</span>
<span class="n">ax</span><span class="p">.</span><span class="n">set_ylim</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span><span class="mi">10</span><span class="p">)</span>
<span class="n">ax</span><span class="p">.</span><span class="n">grid</span><span class="p">()</span>
<span class="n">ax</span><span class="p">.</span><span class="n">set_xlim</span><span class="p">(</span><span class="mi">17</span><span class="p">,</span> <span class="mi">32</span><span class="p">)</span>

<span class="n">ax</span><span class="p">.</span><span class="n">set_xlabel</span><span class="p">(</span><span class="s">'mag_auto (detection band)'</span><span class="p">)</span>
<span class="n">ax</span><span class="p">.</span><span class="n">set_ylabel</span><span class="p">(</span><span class="s">'flux_radius'</span><span class="p">)</span>

</code></pre></div></div>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>Text(0, 0.5, 'flux_radius')
</code></pre></div></div>

<p><img src="/dja/assets/post_files/2023-07-15-photometric-catalog-demo_files/photometric-catalog-demo_17_1.png" alt="png" /></p>

<h2 id="catalog-with-aperture-corrections">Catalog with aperture corrections</h2>

<ul>
  <li><code class="language-plaintext highlighter-rouge">{filter}_corr_{aper} = {filter}_corr_{aper} * flux_auto / flux_{aper}</code> : Aperture corrected to the <code class="language-plaintext highlighter-rouge">auto</code> flux in the detection band</li>
  <li><code class="language-plaintext highlighter-rouge">{filter}_tot_{aper} = {filter}_corr_{aper} * {filter}_tot_corr</code> : Corrected for flux outside of the auto aperture.  <em>Not implemented for JWST, where <code class="language-plaintext highlighter-rouge">corr = tot</code></em></li>
</ul>

<div class="language-python highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="k">if</span> <span class="ow">not</span> <span class="n">os</span><span class="p">.</span><span class="n">path</span><span class="p">.</span><span class="n">exists</span><span class="p">(</span><span class="sa">f</span><span class="s">'</span><span class="si">{</span><span class="n">field</span><span class="si">}</span><span class="s">-fix.photoz.tar.gz'</span><span class="p">):</span>
    <span class="err">!</span> <span class="n">wget</span> <span class="p">{</span><span class="n">url_path</span><span class="p">}</span><span class="o">/</span><span class="p">{</span><span class="n">field</span><span class="p">}</span><span class="o">-</span><span class="n">fix</span><span class="p">.</span><span class="n">photoz</span><span class="p">.</span><span class="n">tar</span><span class="p">.</span><span class="n">gz</span>

<span class="err">!</span> <span class="n">tar</span> <span class="n">xzvf</span> <span class="p">{</span><span class="n">field</span><span class="p">}</span><span class="o">-</span><span class="n">fix</span><span class="p">.</span><span class="n">photoz</span><span class="p">.</span><span class="n">tar</span><span class="p">.</span><span class="n">gz</span>
</code></pre></div></div>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>x gds-grizli-v7.0-fix.eazypy.h5
x gds-grizli-v7.0-fix.eazypy.residuals.001.png
x gds-grizli-v7.0-fix.eazypy.residuals.002.png
x gds-grizli-v7.0-fix.eazypy.residuals.003.png
x gds-grizli-v7.0-fix.eazypy.zout.fits
x gds-grizli-v7.0-fix.eazypy.zphot.param
x gds-grizli-v7.0-fix.eazypy.zphot.translate
x gds-grizli-v7.0-fix.eazypy.zphot.zeropoint
x gds-grizli-v7.0-fix.zhist.png
x gds-grizli-v7.0-fix.zphot_zspec.png
x gds-grizli-v7.0-fix_phot_apcorr.fits
</code></pre></div></div>

<div class="language-python highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="n">apc</span> <span class="o">=</span> <span class="n">utils</span><span class="p">.</span><span class="n">read_catalog</span><span class="p">(</span><span class="sa">f</span><span class="s">'</span><span class="si">{</span><span class="n">field</span><span class="si">}</span><span class="s">-fix_phot_apcorr.fits'</span><span class="p">)</span>

<span class="n">aper_index</span> <span class="o">=</span> <span class="s">'1'</span>

<span class="n">cols</span> <span class="o">=</span> <span class="p">[]</span>

<span class="k">for</span> <span class="n">k</span> <span class="ow">in</span> <span class="n">apc</span><span class="p">.</span><span class="n">colnames</span><span class="p">:</span>
    <span class="k">if</span> <span class="n">k</span><span class="p">.</span><span class="n">startswith</span><span class="p">(</span><span class="s">'f444w'</span><span class="p">)</span> <span class="o">&amp;</span> <span class="n">k</span><span class="p">.</span><span class="n">endswith</span><span class="p">(</span><span class="n">aper_index</span><span class="p">):</span>
        <span class="n">cols</span><span class="p">.</span><span class="n">append</span><span class="p">(</span><span class="n">k</span><span class="p">)</span>
        
<span class="n">apc</span><span class="p">[</span><span class="n">cols</span><span class="p">].</span><span class="n">info</span><span class="p">()</span>
</code></pre></div></div>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>&lt;GTable length=52427&gt;
        name          dtype  unit    class     n_bad
-------------------- ------- ---- ------------ -----
   f444w_flux_aper_1 float64  uJy MaskedColumn   640
f444w_fluxerr_aper_1 float64  uJy MaskedColumn   640
   f444w_flag_aper_1   int16      MaskedColumn     0
    f444w_bkg_aper_1 float64  uJy MaskedColumn   641
   f444w_mask_aper_1 float64            Column     0
        f444w_corr_1 float64  uJy       Column     0
       f444w_ecorr_1 float64  uJy       Column     0
         f444w_tot_1 float64  uJy       Column     0
        f444w_etot_1 float64  uJy       Column     0
</code></pre></div></div>

<h2 id="compare-to-skelton-3d-hst">Compare to Skelton 3D-HST</h2>

<div class="language-python highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kn">import</span> <span class="nn">grizli.catalog</span>
<span class="n">s14</span> <span class="o">=</span> <span class="n">grizli</span><span class="p">.</span><span class="n">catalog</span><span class="p">.</span><span class="n">query_tap_catalog</span><span class="p">(</span><span class="n">ra</span><span class="o">=</span><span class="n">np</span><span class="p">.</span><span class="n">nanmedian</span><span class="p">(</span><span class="n">phot</span><span class="p">[</span><span class="s">'ra'</span><span class="p">]),</span> <span class="n">dec</span><span class="o">=</span><span class="n">np</span><span class="p">.</span><span class="n">nanmedian</span><span class="p">(</span><span class="n">phot</span><span class="p">[</span><span class="s">'dec'</span><span class="p">]),</span>
                                       <span class="n">radius</span><span class="o">=</span><span class="mi">10</span><span class="p">,</span>
                                       <span class="n">vizier</span><span class="o">=</span><span class="bp">True</span><span class="p">,</span>
                                       <span class="n">db</span><span class="o">=</span><span class="s">'"J/ApJS/214/24/3dhstall"'</span><span class="p">)</span>
<span class="nb">len</span><span class="p">(</span><span class="n">s14</span><span class="p">)</span>

<span class="n">idx</span><span class="p">,</span> <span class="n">dr</span><span class="p">,</span> <span class="n">dx</span><span class="p">,</span> <span class="n">dy</span> <span class="o">=</span> <span class="n">utils</span><span class="p">.</span><span class="n">GTable</span><span class="p">(</span><span class="n">s14</span><span class="p">).</span><span class="n">match_to_catalog_sky</span><span class="p">(</span><span class="n">apc</span><span class="p">,</span> <span class="n">get_2d_offset</span><span class="o">=</span><span class="bp">True</span><span class="p">)</span>

<span class="n">fig</span><span class="p">,</span> <span class="n">ax</span> <span class="o">=</span> <span class="n">plt</span><span class="p">.</span><span class="n">subplots</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span><span class="mi">1</span><span class="p">,</span><span class="n">figsize</span><span class="o">=</span><span class="p">(</span><span class="mi">5</span><span class="p">,</span><span class="mi">5</span><span class="p">))</span>

<span class="n">ax</span><span class="p">.</span><span class="n">scatter</span><span class="p">(</span><span class="n">dx</span><span class="p">,</span> <span class="n">dy</span><span class="p">,</span> <span class="n">alpha</span><span class="o">=</span><span class="mf">0.1</span><span class="p">)</span>

<span class="n">has_match</span> <span class="o">=</span> <span class="n">dr</span><span class="p">.</span><span class="n">value</span> <span class="o">&lt;</span> <span class="mf">0.3</span>
<span class="n">ra_offset</span> <span class="o">=</span> <span class="n">np</span><span class="p">.</span><span class="n">nanmedian</span><span class="p">((</span><span class="n">apc</span><span class="p">[</span><span class="s">'ra'</span><span class="p">]</span> <span class="o">-</span> <span class="n">s14</span><span class="p">[</span><span class="s">'RAJ2000'</span><span class="p">][</span><span class="n">idx</span><span class="p">])[</span><span class="n">has_match</span><span class="p">])</span>
<span class="n">dec_offset</span> <span class="o">=</span> <span class="n">np</span><span class="p">.</span><span class="n">nanmedian</span><span class="p">((</span><span class="n">apc</span><span class="p">[</span><span class="s">'dec'</span><span class="p">]</span> <span class="o">-</span> <span class="n">s14</span><span class="p">[</span><span class="s">'DEJ2000'</span><span class="p">][</span><span class="n">idx</span><span class="p">])[</span><span class="n">has_match</span><span class="p">])</span>

<span class="n">s14</span><span class="p">[</span><span class="s">'ra'</span><span class="p">]</span> <span class="o">+=</span> <span class="n">ra_offset</span>
<span class="n">s14</span><span class="p">[</span><span class="s">'dec'</span><span class="p">]</span> <span class="o">+=</span> <span class="n">dec_offset</span>

<span class="n">idx</span><span class="p">,</span> <span class="n">dr</span><span class="p">,</span> <span class="n">dx</span><span class="p">,</span> <span class="n">dy</span> <span class="o">=</span> <span class="n">utils</span><span class="p">.</span><span class="n">GTable</span><span class="p">(</span><span class="n">s14</span><span class="p">).</span><span class="n">match_to_catalog_sky</span><span class="p">(</span><span class="n">apc</span><span class="p">,</span> <span class="n">get_2d_offset</span><span class="o">=</span><span class="bp">True</span><span class="p">)</span>
<span class="n">ax</span><span class="p">.</span><span class="n">scatter</span><span class="p">(</span><span class="n">dx</span><span class="p">,</span> <span class="n">dy</span><span class="p">,</span> <span class="n">alpha</span><span class="o">=</span><span class="mf">0.1</span><span class="p">)</span>

<span class="n">has_match</span> <span class="o">=</span> <span class="n">dr</span><span class="p">.</span><span class="n">value</span> <span class="o">&lt;</span> <span class="mf">0.2</span>

<span class="n">ax</span><span class="p">.</span><span class="n">set_xlim</span><span class="p">(</span><span class="o">-</span><span class="mf">0.5</span><span class="p">,</span> <span class="mf">0.5</span><span class="p">)</span>
<span class="n">ax</span><span class="p">.</span><span class="n">set_ylim</span><span class="p">(</span><span class="o">*</span><span class="n">ax</span><span class="p">.</span><span class="n">get_xlim</span><span class="p">())</span>
<span class="n">ax</span><span class="p">.</span><span class="n">grid</span><span class="p">()</span>

<span class="n">ax</span><span class="p">.</span><span class="n">set_xlabel</span><span class="p">(</span><span class="sa">r</span><span class="s">'$\Delta RA, arcsec'</span><span class="p">)</span>
<span class="n">ax</span><span class="p">.</span><span class="n">set_ylabel</span><span class="p">(</span><span class="sa">r</span><span class="s">'$\Delta Dec, arcsec'</span><span class="p">)</span>

</code></pre></div></div>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>Query "J/ApJS/214/24/3dhstall" from VizieR TAP server
Launched query: 'SELECT TOP 1000000 * FROM "J/ApJS/214/24/3dhstall" WHERE RAJ2000 &gt; 53.05300162385859 AND RAJ2000 &lt; 53.24140686277677 AND DEJ2000 &gt; -27.87878381298912 AND DEJ2000 &lt; -27.712117146322456 '
------&gt;http
host = tapvizier.u-strasbg.fr:80
context = /TAPVizieR/tap/sync
Content-type = application/x-www-form-urlencoded
200 200
[('date', 'Fri, 14 Jul 2023 22:54:49 GMT'), ('server', 'Apache/2.4.41 (Ubuntu) mod_jk/1.2.46 OpenSSL/1.1.1f'), ('vary', 'Accept-Encoding'), ('access-control-allow-origin', '*'), ('access-control-allow-credentials', 'true'), ('transfer-encoding', 'chunked'), ('content-type', 'application/x-votable+xml; serialization=TABLEDATA;charset=UTF-8')]
Retrieving sync. results...
Saving results to: sync_20230715005449.xml
Query finished.





Text(0, 0.5, '$\\Delta Dec, arcsec')
</code></pre></div></div>

<p><img src="/dja/assets/post_files/2023-07-15-photometric-catalog-demo_files/photometric-catalog-demo_22_2.png" alt="png" /></p>

<div class="language-python highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="n">mag_s14_aper</span> <span class="o">=</span> <span class="mi">25</span> <span class="o">-</span> <span class="mf">2.5</span><span class="o">*</span><span class="n">np</span><span class="p">.</span><span class="n">log10</span><span class="p">(</span><span class="n">s14</span><span class="p">[</span><span class="s">'F160Wap'</span><span class="p">])</span>
<span class="n">mag_jw_d0p7</span> <span class="o">=</span> <span class="mf">23.9</span> <span class="o">-</span> <span class="mf">2.5</span><span class="o">*</span><span class="n">np</span><span class="p">.</span><span class="n">log10</span><span class="p">(</span><span class="n">phot</span><span class="p">[</span><span class="s">'f160w_flux_aper_2'</span><span class="p">])</span>

<span class="n">mag_s14_tot</span> <span class="o">=</span> <span class="mi">25</span> <span class="o">-</span> <span class="mf">2.5</span><span class="o">*</span><span class="n">np</span><span class="p">.</span><span class="n">log10</span><span class="p">(</span><span class="n">s14</span><span class="p">[</span><span class="s">'F160W'</span><span class="p">])</span>
<span class="n">mag_jw_tot</span> <span class="o">=</span> <span class="mf">23.9</span> <span class="o">-</span> <span class="mf">2.5</span><span class="o">*</span><span class="n">np</span><span class="p">.</span><span class="n">log10</span><span class="p">(</span><span class="n">apc</span><span class="p">[</span><span class="s">'f160w_tot_1'</span><span class="p">])</span>

<span class="n">delta_mag_aper</span> <span class="o">=</span> <span class="n">mag_jw_d0p7</span> <span class="o">-</span> <span class="n">mag_s14_aper</span><span class="p">[</span><span class="n">idx</span><span class="p">]</span>
<span class="n">delta_mag_tot</span> <span class="o">=</span> <span class="n">mag_jw_tot</span> <span class="o">-</span> <span class="n">mag_s14_tot</span><span class="p">[</span><span class="n">idx</span><span class="p">]</span>

<span class="c1"># jh_jw = -2.5*np.log10(apc['f814w_tot_1']*0.847/apc['f160w_tot_1'])
# jh_s14 = -2.5*np.log10(s14['F814W']/s14['F160W'])
</span>
<span class="n">jh_jw</span> <span class="o">=</span> <span class="o">-</span><span class="mf">2.5</span><span class="o">*</span><span class="n">np</span><span class="p">.</span><span class="n">log10</span><span class="p">(</span><span class="n">apc</span><span class="p">[</span><span class="s">'f125w_tot_1'</span><span class="p">]</span><span class="o">/</span><span class="n">apc</span><span class="p">[</span><span class="s">'f160w_tot_1'</span><span class="p">])</span>
<span class="n">jh_s14</span> <span class="o">=</span> <span class="o">-</span><span class="mf">2.5</span><span class="o">*</span><span class="n">np</span><span class="p">.</span><span class="n">log10</span><span class="p">(</span><span class="n">s14</span><span class="p">[</span><span class="s">'F125W'</span><span class="p">]</span><span class="o">/</span><span class="n">s14</span><span class="p">[</span><span class="s">'F160W'</span><span class="p">])</span>

<span class="n">delta_color</span> <span class="o">=</span> <span class="n">jh_jw</span> <span class="o">-</span> <span class="n">jh_s14</span><span class="p">[</span><span class="n">idx</span><span class="p">]</span>

<span class="n">fig</span><span class="p">,</span> <span class="n">axes</span> <span class="o">=</span> <span class="n">plt</span><span class="p">.</span><span class="n">subplots</span><span class="p">(</span><span class="mi">3</span><span class="p">,</span><span class="mi">1</span><span class="p">,</span><span class="n">figsize</span><span class="o">=</span><span class="p">(</span><span class="mi">8</span><span class="p">,</span><span class="mi">6</span><span class="p">),</span> <span class="n">sharex</span><span class="o">=</span><span class="bp">True</span><span class="p">,</span> <span class="n">sharey</span><span class="o">=</span><span class="bp">True</span><span class="p">)</span>

<span class="n">axes</span><span class="p">[</span><span class="mi">0</span><span class="p">].</span><span class="n">scatter</span><span class="p">(</span><span class="n">mag_jw_tot</span><span class="p">[</span><span class="n">has_match</span><span class="p">],</span> <span class="n">delta_mag_aper</span><span class="p">[</span><span class="n">has_match</span><span class="p">],</span> <span class="n">alpha</span><span class="o">=</span><span class="mf">0.1</span><span class="p">)</span>
<span class="n">axes</span><span class="p">[</span><span class="mi">0</span><span class="p">].</span><span class="n">set_ylabel</span><span class="p">(</span><span class="sa">r</span><span class="s">'$\Delta$mag F160W'</span> <span class="o">+</span> <span class="s">'</span><span class="se">\n</span><span class="s">D=0.7" aperture'</span><span class="p">)</span>

<span class="n">axes</span><span class="p">[</span><span class="mi">1</span><span class="p">].</span><span class="n">scatter</span><span class="p">(</span><span class="n">mag_jw_tot</span><span class="p">[</span><span class="n">has_match</span><span class="p">],</span> <span class="n">delta_mag_tot</span><span class="p">[</span><span class="n">has_match</span><span class="p">],</span> <span class="n">vmax</span><span class="o">=</span><span class="mf">1.5</span><span class="p">,</span> <span class="n">alpha</span><span class="o">=</span><span class="mf">0.1</span><span class="p">)</span>
<span class="n">axes</span><span class="p">[</span><span class="mi">1</span><span class="p">].</span><span class="n">set_ylabel</span><span class="p">(</span><span class="sa">r</span><span class="s">'$\Delta$mag F160W'</span> <span class="o">+</span> <span class="s">'</span><span class="se">\n</span><span class="s"> total corrected'</span><span class="p">)</span>

<span class="n">axes</span><span class="p">[</span><span class="mi">2</span><span class="p">].</span><span class="n">scatter</span><span class="p">(</span><span class="n">mag_jw_tot</span><span class="p">[</span><span class="n">has_match</span><span class="p">],</span> <span class="n">delta_color</span><span class="p">[</span><span class="n">has_match</span><span class="p">],</span> <span class="n">alpha</span><span class="o">=</span><span class="mf">0.1</span><span class="p">)</span>
<span class="n">axes</span><span class="p">[</span><span class="mi">2</span><span class="p">].</span><span class="n">set_ylabel</span><span class="p">(</span><span class="sa">r</span><span class="s">'$\Delta$color'</span> <span class="o">+</span> <span class="s">'</span><span class="se">\n</span><span class="s">F125W - F160W'</span><span class="p">)</span>

<span class="n">axes</span><span class="p">[</span><span class="mi">2</span><span class="p">].</span><span class="n">set_xlabel</span><span class="p">(</span><span class="s">'mag, HST F160W'</span><span class="p">)</span>

<span class="k">for</span> <span class="n">ax</span> <span class="ow">in</span> <span class="n">axes</span><span class="p">:</span>
    <span class="n">ax</span><span class="p">.</span><span class="n">set_xlim</span><span class="p">(</span><span class="mi">18</span><span class="p">,</span> <span class="mi">29</span><span class="p">)</span>
    <span class="n">ax</span><span class="p">.</span><span class="n">set_ylim</span><span class="p">(</span><span class="o">-</span><span class="mi">1</span><span class="p">,</span><span class="mi">1</span><span class="p">)</span>
    <span class="n">ax</span><span class="p">.</span><span class="n">grid</span><span class="p">()</span>
</code></pre></div></div>

<p><img src="/dja/assets/post_files/2023-07-15-photometric-catalog-demo_files/photometric-catalog-demo_23_0.png" alt="png" /></p>

<h1 id="photometric-redshifts">Photometric redshifts</h1>

<div class="language-python highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kn">import</span> <span class="nn">eazy.hdf5</span>

<span class="k">if</span> <span class="ow">not</span> <span class="n">os</span><span class="p">.</span><span class="n">path</span><span class="p">.</span><span class="n">exists</span><span class="p">(</span><span class="s">'templates'</span><span class="p">):</span>
    <span class="n">eazy</span><span class="p">.</span><span class="n">symlink_eazy_inputs</span><span class="p">()</span>
    
<span class="n">root</span> <span class="o">=</span> <span class="sa">f</span><span class="s">'</span><span class="si">{</span><span class="n">field</span><span class="si">}</span><span class="s">-fix'</span>

<span class="bp">self</span> <span class="o">=</span> <span class="n">eazy</span><span class="p">.</span><span class="n">hdf5</span><span class="p">.</span><span class="n">initialize_from_hdf5</span><span class="p">(</span><span class="n">h5file</span><span class="o">=</span><span class="n">root</span><span class="o">+</span><span class="s">'.eazypy.h5'</span><span class="p">)</span>
<span class="bp">self</span><span class="p">.</span><span class="n">fit_phoenix_stars</span><span class="p">()</span>

<span class="n">zout</span> <span class="o">=</span> <span class="n">utils</span><span class="p">.</span><span class="n">read_catalog</span><span class="p">(</span><span class="n">root</span><span class="o">+</span><span class="s">'.eazypy.zout.fits'</span><span class="p">)</span>
<span class="bp">self</span><span class="p">.</span><span class="n">cat</span> <span class="o">=</span> <span class="n">utils</span><span class="p">.</span><span class="n">read_catalog</span><span class="p">(</span><span class="n">root</span><span class="o">+</span><span class="s">'_phot_apcorr.fits'</span><span class="p">)</span>
<span class="n">cat</span> <span class="o">=</span> <span class="bp">self</span><span class="p">.</span><span class="n">cat</span>
</code></pre></div></div>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>Read default param file: /Users/gbrammer/miniconda3/envs/py39jw/lib/python3.9/site-packages/eazy/data/zphot.param.default
CATALOG_FILE is a table
   &gt;&gt;&gt; NOBJ = 52427
f090w_tot_1 f090w_etot_1 (363): jwst_nircam_f090w
f105w_tot_1 f105w_etot_1 (202): hst/wfc3/IR/f105w.dat
f110w_tot_1 f110w_etot_1 (241): hst/wfc3/IR/f110w.dat
f115w_tot_1 f115w_etot_1 (364): jwst_nircam_f115w
f115wn_tot_1 f115wn_etot_1 (309): niriss-f115w
f125w_tot_1 f125w_etot_1 (203): hst/wfc3/IR/f125w.dat
f140w_tot_1 f140w_etot_1 (204): hst/wfc3/IR/f140w.dat
f150w_tot_1 f150w_etot_1 (365): jwst_nircam_f150w
f150wn_tot_1 f150wn_etot_1 (310): niriss-f150w
f160w_tot_1 f160w_etot_1 (205): hst/wfc3/IR/f160w.dat
f182m_tot_1 f182m_etot_1 (370): jwst_nircam_f182m
f200w_tot_1 f200w_etot_1 (366): jwst_nircam_f200w
f200wn_tot_1 f200wn_etot_1 (311): niriss-f200w
f210m_tot_1 f210m_etot_1 (371): jwst_nircam_f210m
f277w_tot_1 f277w_etot_1 (375): jwst_nircam_f277w
f335m_tot_1 f335m_etot_1 (381): jwst_nircam_f335m
f356w_tot_1 f356w_etot_1 (376): jwst_nircam_f356w
f410m_tot_1 f410m_etot_1 (383): jwst_nircam_f410m
f430m_tot_1 f430m_etot_1 (384): jwst_nircam_f430m
f435w_tot_1 f435w_etot_1 (233): hst/ACS_update_sep07/wfc_f435w_t81.dat
f444w_tot_1 f444w_etot_1 (377): jwst_nircam_f444w
f460m_tot_1 f460m_etot_1 (385): jwst_nircam_f460m
f475w_tot_1 f475w_etot_1 (234): hst/ACS_update_sep07/wfc_f475w_t81.dat
f480m_tot_1 f480m_etot_1 (386): jwst_nircam_f480m
f606w_tot_1 f606w_etot_1 (236): hst/ACS_update_sep07/wfc_f606w_t81.dat
f606wu_tot_1 f606wu_etot_1 (214): hst/wfc3/UVIS/f606w.dat
f775w_tot_1 f775w_etot_1 (238): hst/ACS_update_sep07/wfc_f775w_t81.dat
f814w_tot_1 f814w_etot_1 (239): hst/ACS_update_sep07/wfc_f814w_t81.dat
f814wu_tot_1 f814wu_etot_1 (217): hst/wfc3/UVIS/f814w.dat
f850lp_tot_1 f850lp_etot_1 (240): hst/ACS_update_sep07/wfc_f850lp_t81.dat
Set sys_err = 0.05 (positive=True)
Read PRIOR_FILE:  templates/prior_F160W_TAO.dat
Template grid: templates/sfhz/agn_blue_sfhz_13.param (this may take some time)
TemplateGrid: user-provided tempfilt_data
Process templates: 0.237 s


294it [00:02, 104.84it/s]


h5: read corr_sfhz_13_bin0_av0.01.fits
h5: read corr_sfhz_13_bin0_av0.25.fits
h5: read corr_sfhz_13_bin0_av0.50.fits
h5: read corr_sfhz_13_bin0_av1.00.fits
h5: read corr_sfhz_13_bin1_av0.01.fits
h5: read corr_sfhz_13_bin1_av0.25.fits
h5: read corr_sfhz_13_bin1_av0.50.fits
h5: read corr_sfhz_13_bin1_av1.00.fits
h5: read corr_sfhz_13_bin2_av0.01.fits
h5: read corr_sfhz_13_bin2_av0.50.fits
h5: read corr_sfhz_13_bin2_av1.00.fits
h5: read corr_sfhz_13_bin3_av0.01.fits
h5: read corr_sfhz_13_bin3_av0.50.fits
h5: read fsps_4590.fits
h5: read j0647agn+torus.fits
fit_best: 2.5 s (n_proc=5,  NOBJ=51074)
phoenix_templates: ./bt-settl_t400-7000_g4.5.fits
</code></pre></div></div>

<h2 id="adjusted-zeropoints">Adjusted zeropoints</h2>

<p>The iterated eazy “zeropoint” adjustments are used as a crude PSF-matching correction for the simple aperture photometry catalogs.  That is, all photometry is done on the native images and corrected to “total” using a single correction derived in the detection band.  The encircled energy (for point sources) will be different for the different instruments / filters, and the <code class="language-plaintext highlighter-rouge">eazy</code> zeropoint adjustments are initialized with corrections that would be appropriate to put point sources on a common scale.  Corrections to that are then derived based on the photo-z fits to the full catalog.</p>

<div class="language-python highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="k">print</span><span class="p">(</span><span class="s">'# ix filt f_number zp'</span><span class="p">)</span>
<span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="n">np</span><span class="p">.</span><span class="n">argsort</span><span class="p">(</span><span class="bp">self</span><span class="p">.</span><span class="n">lc</span><span class="p">):</span>
    <span class="k">print</span><span class="p">(</span><span class="sa">f</span><span class="s">"</span><span class="si">{</span><span class="n">i</span><span class="si">:</span><span class="mi">2</span><span class="si">}</span><span class="s"> </span><span class="si">{</span><span class="bp">self</span><span class="p">.</span><span class="n">flux_columns</span><span class="p">[</span><span class="n">i</span><span class="p">].</span><span class="n">split</span><span class="p">(</span><span class="s">'_'</span><span class="p">)[</span><span class="mi">0</span><span class="p">]</span><span class="si">:</span><span class="mi">12</span><span class="si">}</span><span class="s"> </span><span class="si">{</span><span class="bp">self</span><span class="p">.</span><span class="n">f_numbers</span><span class="p">[</span><span class="n">i</span><span class="p">]</span><span class="si">:</span><span class="mi">3</span><span class="si">}</span><span class="s"> </span><span class="si">{</span><span class="bp">self</span><span class="p">.</span><span class="n">zp</span><span class="p">[</span><span class="n">i</span><span class="p">]</span><span class="si">:</span><span class="p">.</span><span class="mi">3</span><span class="n">f</span><span class="si">}</span><span class="s">"</span><span class="p">)</span>
</code></pre></div></div>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code># ix filt f_number zp
19 f435w        233 1.067
22 f475w        234 1.091
25 f606wu       214 0.929
24 f606w        236 0.911
26 f775w        238 0.865
27 f814w        239 0.847
28 f814wu       217 1.000
 0 f090w        363 0.931
29 f850lp       240 0.875
 1 f105w        202 0.932
 4 f115wn       309 0.872
 2 f110w        241 0.942
 3 f115w        364 0.876
 5 f125w        203 0.948
 6 f140w        204 0.965
 8 f150wn       310 0.878
 7 f150w        365 0.871
 9 f160w        205 0.983
10 f182m        370 0.909
11 f200w        366 0.903
12 f200wn       311 0.882
13 f210m        371 0.936
14 f277w        375 1.000
15 f335m        381 1.052
16 f356w        376 1.077
17 f410m        383 1.114
18 f430m        384 1.138
20 f444w        377 1.148
21 f460m        385 1.175
23 f480m        386 1.205
</code></pre></div></div>

<div class="language-python highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="n">fig</span> <span class="o">=</span> <span class="n">eazy</span><span class="p">.</span><span class="n">utils</span><span class="p">.</span><span class="n">zphot_zspec</span><span class="p">(</span><span class="n">zout</span><span class="p">[</span><span class="s">'z_phot'</span><span class="p">][</span><span class="n">has_match</span><span class="p">],</span> <span class="n">zout</span><span class="p">[</span><span class="s">'z_spec'</span><span class="p">][</span><span class="n">has_match</span><span class="p">],</span> <span class="n">zmax</span><span class="o">=</span><span class="mi">8</span><span class="p">)</span>
<span class="n">fig</span><span class="p">.</span><span class="n">axes</span><span class="p">[</span><span class="mi">0</span><span class="p">].</span><span class="n">set_title</span><span class="p">(</span><span class="sa">f</span><span class="s">'JWST </span><span class="si">{</span><span class="n">field</span><span class="si">}</span><span class="s">'</span><span class="p">)</span>

<span class="n">fig</span> <span class="o">=</span> <span class="n">eazy</span><span class="p">.</span><span class="n">utils</span><span class="p">.</span><span class="n">zphot_zspec</span><span class="p">(</span><span class="n">s14</span><span class="p">[</span><span class="s">'zpk'</span><span class="p">][</span><span class="n">idx</span><span class="p">][</span><span class="n">has_match</span><span class="p">],</span> <span class="n">zout</span><span class="p">[</span><span class="s">'z_spec'</span><span class="p">][</span><span class="n">has_match</span><span class="p">],</span> <span class="n">zmax</span><span class="o">=</span><span class="mi">8</span><span class="p">)</span>
<span class="n">fig</span><span class="p">.</span><span class="n">axes</span><span class="p">[</span><span class="mi">0</span><span class="p">].</span><span class="n">set_title</span><span class="p">(</span><span class="sa">f</span><span class="s">'Skelton (2014)'</span><span class="p">)</span>
</code></pre></div></div>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>Text(0.5, 1.0, 'Skelton (2014)')
</code></pre></div></div>

<p><img src="/dja/assets/post_files/2023-07-15-photometric-catalog-demo_files/photometric-catalog-demo_28_1.png" alt="png" /></p>

<p><img src="/dja/assets/post_files/2023-07-15-photometric-catalog-demo_files/photometric-catalog-demo_28_2.png" alt="png" /></p>

<h2 id="plot-some-seds">Plot some SEDs</h2>

<div class="language-python highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="c1"># e.g., GOODS-S-9209 from Carnall et al. https://arxiv.org/pdf/2301.11413.pdf
</span><span class="n">ra</span><span class="p">,</span> <span class="n">dec</span> <span class="o">=</span> <span class="mf">53.1082274</span><span class="p">,</span> <span class="o">-</span><span class="mf">27.8252019</span>

<span class="n">dr</span> <span class="o">=</span> <span class="n">np</span><span class="p">.</span><span class="n">sqrt</span><span class="p">((</span><span class="n">zout</span><span class="p">[</span><span class="s">'ra'</span><span class="p">]</span> <span class="o">-</span> <span class="n">ra</span><span class="p">)</span><span class="o">**</span><span class="mi">2</span> <span class="o">+</span> <span class="p">(</span><span class="n">zout</span><span class="p">[</span><span class="s">'dec'</span><span class="p">]</span> <span class="o">-</span> <span class="n">dec</span><span class="p">)</span><span class="o">**</span><span class="mi">2</span><span class="p">)</span>

<span class="bp">self</span><span class="p">.</span><span class="n">cat</span><span class="p">[</span><span class="s">'z_spec'</span><span class="p">][</span><span class="n">np</span><span class="p">.</span><span class="n">argmin</span><span class="p">(</span><span class="n">dr</span><span class="p">)]</span> <span class="o">=</span> <span class="mf">4.6582</span>

<span class="n">cat_id</span> <span class="o">=</span> <span class="n">zout</span><span class="p">[</span><span class="s">'id'</span><span class="p">][</span><span class="n">np</span><span class="p">.</span><span class="n">argmin</span><span class="p">(</span><span class="n">dr</span><span class="p">)]</span>

<span class="n">_</span> <span class="o">=</span> <span class="bp">self</span><span class="p">.</span><span class="n">show_fit</span><span class="p">(</span><span class="n">cat_id</span><span class="p">,</span> <span class="n">zr</span><span class="o">=</span><span class="p">[</span><span class="mi">3</span><span class="p">,</span><span class="mi">7</span><span class="p">])</span>
</code></pre></div></div>

<p><img src="/dja/assets/post_files/2023-07-15-photometric-catalog-demo_files/photometric-catalog-demo_30_0.png" alt="png" /></p>

<div class="language-python highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="k">def</span> <span class="nf">quick_cutout</span><span class="p">(</span><span class="n">resp</span><span class="p">,</span> <span class="n">sy</span><span class="o">=</span><span class="mi">2</span><span class="p">,</span> <span class="n">pl</span><span class="o">=</span><span class="mi">2</span><span class="p">,</span> <span class="n">size</span><span class="o">=</span><span class="mf">1.5</span><span class="p">,</span> <span class="n">scl</span><span class="o">=</span><span class="mi">3</span><span class="p">,</span> <span class="n">filters</span><span class="o">=</span><span class="s">'f115w-clear,f277w-clear,f444w-clear'</span><span class="p">):</span>
    <span class="s">"""
    Make a cutout figure with the grizli cutout server
    """</span>
    <span class="kn">from</span> <span class="nn">PIL</span> <span class="kn">import</span> <span class="n">Image</span>
    <span class="kn">import</span> <span class="nn">requests</span>
    <span class="kn">from</span> <span class="nn">io</span> <span class="kn">import</span> <span class="n">BytesIO</span>

    <span class="c1">#rd = ds9.get('pan icrs').replace(' ',',')
</span>    
    <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">resp</span><span class="p">,</span> <span class="nb">int</span><span class="p">):</span>
        <span class="nb">id</span> <span class="o">=</span> <span class="n">resp</span>
        <span class="n">ix</span> <span class="o">=</span> <span class="n">np</span><span class="p">.</span><span class="n">where</span><span class="p">(</span><span class="bp">self</span><span class="p">.</span><span class="n">cat</span><span class="p">[</span><span class="s">'id'</span><span class="p">]</span> <span class="o">==</span> <span class="nb">id</span><span class="p">)[</span><span class="mi">0</span><span class="p">][</span><span class="mi">0</span><span class="p">]</span>
    <span class="k">else</span><span class="p">:</span>
        <span class="n">ix</span> <span class="o">=</span> <span class="n">resp</span><span class="p">[</span><span class="s">'ix'</span><span class="p">]</span>
        <span class="nb">id</span> <span class="o">=</span> <span class="n">resp</span><span class="p">[</span><span class="s">'id'</span><span class="p">]</span>

    <span class="n">rd</span> <span class="o">=</span> <span class="sa">f</span><span class="s">"</span><span class="si">{</span><span class="bp">self</span><span class="p">.</span><span class="n">RA</span><span class="p">[</span><span class="n">ix</span><span class="p">]</span><span class="si">:</span><span class="p">.</span><span class="mi">6</span><span class="n">f</span><span class="si">}</span><span class="s">,</span><span class="si">{</span><span class="bp">self</span><span class="p">.</span><span class="n">DEC</span><span class="p">[</span><span class="n">ix</span><span class="p">]</span><span class="si">:</span><span class="p">.</span><span class="mi">6</span><span class="n">f</span><span class="si">}</span><span class="s">"</span>
    
    
    <span class="k">print</span><span class="p">(</span><span class="n">rd</span><span class="p">)</span>
    <span class="k">print</span><span class="p">(</span><span class="sa">f</span><span class="s">"https://s3.amazonaws.com/grizli-v2/ClusterTiles/Map/gds/jwst.html?coord=</span><span class="si">{</span><span class="n">rd</span><span class="si">}</span><span class="s">&amp;zoom=6"</span><span class="p">)</span>

    <span class="n">url</span><span class="o">=</span><span class="sa">f</span><span class="s">"https://grizli-cutout.herokuapp.com/thumb?coord=</span><span class="si">{</span><span class="n">rd</span><span class="si">}</span><span class="s">&amp;all_filters=True&amp;size=</span><span class="si">{</span><span class="n">size</span><span class="si">}</span><span class="s">&amp;scl=</span><span class="si">{</span><span class="n">scl</span><span class="si">}</span><span class="s">&amp;asinh=True&amp;filters=</span><span class="si">{</span><span class="n">filters</span><span class="si">}</span><span class="s">&amp;rgb_scl=1.0,0.95,1.2&amp;pl=</span><span class="si">{</span><span class="n">pl</span><span class="si">}</span><span class="s">"</span>

    <span class="n">response</span> <span class="o">=</span> <span class="n">requests</span><span class="p">.</span><span class="n">get</span><span class="p">(</span><span class="n">url</span><span class="p">)</span>
    <span class="n">img</span> <span class="o">=</span> <span class="n">Image</span><span class="p">.</span><span class="nb">open</span><span class="p">(</span><span class="n">BytesIO</span><span class="p">(</span><span class="n">response</span><span class="p">.</span><span class="n">content</span><span class="p">))</span>
    <span class="n">img</span><span class="p">.</span><span class="n">apply_transparency</span><span class="p">()</span>

    <span class="n">fig</span><span class="p">,</span> <span class="n">ax</span> <span class="o">=</span> <span class="n">plt</span><span class="p">.</span><span class="n">subplots</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span><span class="mi">1</span><span class="p">,</span> <span class="n">figsize</span><span class="o">=</span><span class="p">(</span><span class="n">sy</span><span class="o">*</span><span class="mi">4</span><span class="p">,</span> <span class="n">sy</span><span class="o">+</span><span class="mf">0.2</span><span class="p">),</span> <span class="n">sharex</span><span class="o">=</span><span class="bp">True</span><span class="p">,</span> <span class="n">sharey</span><span class="o">=</span><span class="bp">True</span><span class="p">)</span>
    <span class="n">data</span> <span class="o">=</span> <span class="n">np</span><span class="p">.</span><span class="n">array</span><span class="p">(</span><span class="n">img</span><span class="p">)</span>
    <span class="n">black</span> <span class="o">=</span> <span class="n">data</span><span class="p">.</span><span class="nb">max</span><span class="p">(</span><span class="n">axis</span><span class="o">=</span><span class="mi">2</span><span class="p">)</span> <span class="o">==</span> <span class="mi">0</span>
    <span class="k">for</span> <span class="n">ioff</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="o">-</span><span class="mi">2</span><span class="p">,</span><span class="mi">3</span><span class="p">):</span>
        <span class="n">black</span> <span class="o">&amp;=</span> <span class="n">np</span><span class="p">.</span><span class="n">roll</span><span class="p">(</span><span class="n">black</span><span class="p">,</span> <span class="n">ioff</span><span class="p">,</span> <span class="n">axis</span><span class="o">=</span><span class="mi">0</span><span class="p">)</span>


    <span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="mi">3</span><span class="p">):</span>
        <span class="n">data</span><span class="p">[:,:,</span><span class="n">i</span><span class="p">][</span><span class="n">black</span><span class="p">]</span> <span class="o">=</span> <span class="mi">255</span>
    
    <span class="n">ax</span><span class="p">.</span><span class="n">imshow</span><span class="p">(</span><span class="n">data</span><span class="p">,</span> <span class="n">interpolation</span><span class="o">=</span><span class="s">'Nearest'</span><span class="p">,</span> <span class="n">origin</span><span class="o">=</span><span class="s">'upper'</span><span class="p">)</span>
    
    <span class="c1">#ax.text(0.5, 0.01, 'nrc', color='r', fontsize=8, ha='center',va='bottom',transform=ax.transAxes)        
</span>    <span class="n">ax</span><span class="p">.</span><span class="n">set_xticklabels</span><span class="p">([])</span>
    <span class="n">ax</span><span class="p">.</span><span class="n">set_yticklabels</span><span class="p">([])</span>
    <span class="n">ax</span><span class="p">.</span><span class="n">axis</span><span class="p">(</span><span class="s">'off'</span><span class="p">)</span>
    <span class="n">ax</span><span class="p">.</span><span class="n">text</span><span class="p">(</span><span class="mf">0.05</span><span class="p">,</span> <span class="o">-</span><span class="mf">0.01</span><span class="p">,</span> <span class="sa">f</span><span class="s">"</span><span class="si">{</span><span class="n">root</span><span class="si">}</span><span class="s">   </span><span class="si">{</span><span class="bp">self</span><span class="p">.</span><span class="n">cat</span><span class="p">[</span><span class="s">'id'</span><span class="p">][</span><span class="n">ix</span><span class="p">]</span><span class="si">}</span><span class="s">   (</span><span class="si">{</span><span class="n">rd</span><span class="p">.</span><span class="n">replace</span><span class="p">(</span><span class="s">','</span><span class="p">,</span><span class="s">'  '</span><span class="p">)</span><span class="si">}</span><span class="s">)    z_phot=</span><span class="si">{</span><span class="bp">self</span><span class="p">.</span><span class="n">zbest</span><span class="p">[</span><span class="n">ix</span><span class="p">]</span><span class="si">:</span><span class="p">.</span><span class="mi">3</span><span class="n">f</span><span class="si">}</span><span class="s">    logM=</span><span class="si">{</span><span class="n">np</span><span class="p">.</span><span class="n">log10</span><span class="p">(</span><span class="n">zout</span><span class="p">[</span><span class="s">'mass'</span><span class="p">][</span><span class="n">ix</span><span class="p">])</span><span class="si">:</span><span class="p">.</span><span class="mi">1</span><span class="n">f</span><span class="si">}</span><span class="s">"</span><span class="p">.</span><span class="n">replace</span><span class="p">(</span><span class="s">'z_phot'</span><span class="p">,</span> <span class="sa">r</span><span class="s">'$z_\mathrm{phot}$'</span><span class="p">),</span>
            <span class="n">ha</span><span class="o">=</span><span class="s">'left'</span><span class="p">,</span> <span class="n">va</span><span class="o">=</span><span class="s">'top'</span><span class="p">,</span> <span class="n">transform</span><span class="o">=</span><span class="n">ax</span><span class="p">.</span><span class="n">transAxes</span><span class="p">,</span> <span class="n">fontsize</span><span class="o">=</span><span class="mi">7</span><span class="p">)</span>
    
    <span class="n">ax</span><span class="p">.</span><span class="n">text</span><span class="p">(</span><span class="mf">0.95</span><span class="p">,</span> <span class="o">-</span><span class="mf">0.01</span><span class="p">,</span> <span class="n">filters</span><span class="p">.</span><span class="n">replace</span><span class="p">(</span><span class="s">'-clear'</span><span class="p">,</span><span class="s">''</span><span class="p">).</span><span class="n">replace</span><span class="p">(</span><span class="s">','</span><span class="p">,</span> <span class="s">' '</span><span class="p">),</span> <span class="n">ha</span><span class="o">=</span><span class="s">'right'</span><span class="p">,</span> <span class="n">va</span><span class="o">=</span><span class="s">'top'</span><span class="p">,</span> 
            <span class="n">fontsize</span><span class="o">=</span><span class="mi">7</span><span class="p">,</span> <span class="n">color</span><span class="o">=</span><span class="s">'k'</span><span class="p">,</span> <span class="n">transform</span><span class="o">=</span><span class="n">ax</span><span class="p">.</span><span class="n">transAxes</span><span class="p">)</span>
    
    <span class="n">fig</span><span class="p">.</span><span class="n">tight_layout</span><span class="p">(</span><span class="n">pad</span><span class="o">=</span><span class="mf">0.2</span><span class="p">)</span>
        
    <span class="k">return</span> <span class="nb">id</span><span class="p">,</span> <span class="n">fig</span><span class="p">,</span> <span class="n">img</span>

<span class="k">if</span> <span class="mi">1</span><span class="p">:</span>
    <span class="nb">id</span><span class="p">,</span> <span class="n">fig</span><span class="p">,</span> <span class="n">img</span> <span class="o">=</span> <span class="n">quick_cutout</span><span class="p">(</span><span class="n">_</span><span class="p">[</span><span class="mi">1</span><span class="p">],</span> <span class="n">pl</span><span class="o">=</span><span class="mi">2</span><span class="p">,</span> <span class="n">scl</span><span class="o">=</span><span class="mi">4</span><span class="p">,</span> <span class="n">sy</span><span class="o">=</span><span class="mi">3</span><span class="p">,</span> <span class="n">filters</span><span class="o">=</span><span class="s">'f775w,f182m-clear,f444w-clear'</span><span class="p">)</span>

<span class="c1"># id, fig, img = quick_cutout(_[1], pl=2, scl=5, sy=3)
</span>
</code></pre></div></div>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>53.108211,-27.825183
https://s3.amazonaws.com/grizli-v2/ClusterTiles/Map/gds/jwst.html?coord=53.108211,-27.825183&amp;zoom=6
</code></pre></div></div>

<p><img src="/dja/assets/post_files/2023-07-15-photometric-catalog-demo_files/photometric-catalog-demo_31_1.png" alt="png" /></p>

<div class="language-python highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="c1"># Curtis Lake - JADES
</span><span class="n">src</span> <span class="o">=</span> <span class="n">utils</span><span class="p">.</span><span class="n">read_catalog</span><span class="p">(</span><span class="s">'https://raw.githubusercontent.com/dawn-cph/jwst-sources/main/jwst-sources.csv'</span><span class="p">)</span>
<span class="n">idx</span><span class="p">,</span> <span class="n">dr</span> <span class="o">=</span> <span class="n">zout</span><span class="p">.</span><span class="n">match_to_catalog_sky</span><span class="p">(</span><span class="n">src</span><span class="p">)</span>

<span class="n">ecl</span> <span class="o">=</span> <span class="n">src</span><span class="p">[</span><span class="s">'author'</span><span class="p">]</span> <span class="o">==</span> <span class="s">'Emma Curtis-Lake'</span>
<span class="n">ids_jades</span> <span class="o">=</span> <span class="n">zout</span><span class="p">[</span><span class="s">'id'</span><span class="p">][</span><span class="n">idx</span><span class="p">][</span><span class="n">ecl</span><span class="p">]</span>
<span class="n">z_jades</span> <span class="o">=</span> <span class="n">src</span><span class="p">[</span><span class="s">'zspec'</span><span class="p">][</span><span class="n">ecl</span><span class="p">]</span>

<span class="n">i</span> <span class="o">=</span> <span class="o">-</span><span class="mi">1</span>

<span class="bp">self</span><span class="p">.</span><span class="n">cat</span><span class="p">[</span><span class="s">'z_spec'</span><span class="p">][</span><span class="n">idx</span><span class="p">]</span> <span class="o">=</span> <span class="n">src</span><span class="p">[</span><span class="s">'zspec'</span><span class="p">]</span>

<span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="n">np</span><span class="p">.</span><span class="n">argsort</span><span class="p">(</span><span class="n">z_jades</span><span class="p">):</span>
    <span class="nb">id</span> <span class="o">=</span> <span class="n">ids_jades</span><span class="p">[</span><span class="n">i</span><span class="p">]</span>
    <span class="n">_</span> <span class="o">=</span> <span class="bp">self</span><span class="p">.</span><span class="n">show_fit</span><span class="p">(</span><span class="nb">id</span><span class="p">,</span> <span class="n">show_fnu</span><span class="o">=</span><span class="bp">True</span><span class="p">,</span> <span class="n">maglim</span><span class="o">=</span><span class="p">(</span><span class="mi">32</span><span class="p">,</span><span class="mi">27</span><span class="p">))</span>
    <span class="c1"># id, fig, img = quick_cutout(_[1], pl=2, scl=8, sy=3, size=1, filters='f090w-clear,f115w-clear,f150w-clear,f200w-clear,f277w-clear,f356w-clear,f444w-clear')
</span>    <span class="nb">id</span><span class="p">,</span> <span class="n">fig</span><span class="p">,</span> <span class="n">img</span> <span class="o">=</span> <span class="n">quick_cutout</span><span class="p">(</span><span class="n">_</span><span class="p">[</span><span class="mi">1</span><span class="p">],</span> <span class="n">scl</span><span class="o">=</span><span class="mi">10</span><span class="p">,</span> <span class="n">size</span><span class="o">=</span><span class="mi">1</span><span class="p">,</span> <span class="n">filters</span><span class="o">=</span><span class="s">'f115w-clear,f150w-clear,f200w-clear'</span><span class="p">)</span>

</code></pre></div></div>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>53.158837,-27.773500
https://s3.amazonaws.com/grizli-v2/ClusterTiles/Map/gds/jwst.html?coord=53.158837,-27.773500&amp;zoom=6
53.164768,-27.774627
https://s3.amazonaws.com/grizli-v2/ClusterTiles/Map/gds/jwst.html?coord=53.164768,-27.774627&amp;zoom=6
53.166346,-27.821558
https://s3.amazonaws.com/grizli-v2/ClusterTiles/Map/gds/jwst.html?coord=53.166346,-27.821558&amp;zoom=6
53.149886,-27.776504
https://s3.amazonaws.com/grizli-v2/ClusterTiles/Map/gds/jwst.html?coord=53.149886,-27.776504&amp;zoom=6
</code></pre></div></div>

<p><img src="/dja/assets/post_files/2023-07-15-photometric-catalog-demo_files/photometric-catalog-demo_32_1.png" alt="png" /></p>

<p><img src="/dja/assets/post_files/2023-07-15-photometric-catalog-demo_files/photometric-catalog-demo_32_2.png" alt="png" /></p>

<p><img src="/dja/assets/post_files/2023-07-15-photometric-catalog-demo_files/photometric-catalog-demo_32_3.png" alt="png" /></p>

<p><img src="/dja/assets/post_files/2023-07-15-photometric-catalog-demo_files/photometric-catalog-demo_32_4.png" alt="png" /></p>

<p><img src="/dja/assets/post_files/2023-07-15-photometric-catalog-demo_files/photometric-catalog-demo_32_5.png" alt="png" /></p>

<p><img src="/dja/assets/post_files/2023-07-15-photometric-catalog-demo_files/photometric-catalog-demo_32_6.png" alt="png" /></p>

<p><img src="/dja/assets/post_files/2023-07-15-photometric-catalog-demo_files/photometric-catalog-demo_32_7.png" alt="png" /></p>

<p><img src="/dja/assets/post_files/2023-07-15-photometric-catalog-demo_files/photometric-catalog-demo_32_8.png" alt="png" /></p>

<div class="language-python highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="c1"># More filters
</span><span class="nb">id</span><span class="p">,</span> <span class="n">fig</span><span class="p">,</span> <span class="n">img</span> <span class="o">=</span> <span class="n">quick_cutout</span><span class="p">(</span><span class="n">_</span><span class="p">[</span><span class="mi">1</span><span class="p">],</span> <span class="n">pl</span><span class="o">=</span><span class="mi">2</span><span class="p">,</span> <span class="n">scl</span><span class="o">=</span><span class="mi">8</span><span class="p">,</span> <span class="n">sy</span><span class="o">=</span><span class="mi">3</span><span class="p">,</span> <span class="n">size</span><span class="o">=</span><span class="mi">1</span><span class="p">,</span> <span class="n">filters</span><span class="o">=</span><span class="s">'f090w-clear,f115w-clear,f150w-clear,f200w-clear,f277w-clear,f356w-clear,f444w-clear'</span><span class="p">)</span>
</code></pre></div></div>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>53.149886,-27.776504
https://s3.amazonaws.com/grizli-v2/ClusterTiles/Map/gds/jwst.html?coord=53.149886,-27.776504&amp;zoom=6
</code></pre></div></div>

<p><img src="/dja/assets/post_files/2023-07-15-photometric-catalog-demo_files/photometric-catalog-demo_33_1.png" alt="png" /></p>]]></content><author><name>Gabriel Brammer</name></author><category term="imaging" /><category term="catalog" /><category term="gds" /><summary type="html"><![CDATA[imaging catalog gds (This page is auto-generated from the Jupyter notebook photometric-catalog-demo.ipynb.)]]></summary></entry></feed>