The xsh_predict recipe
===============================================================

.. data:: xsh_predict

Synopsis
--------

Compute a first guess dispersion solution and order table

Description
-----------

This recipe creates a wavelength solution and an order table.

  Input Frames :
    - [UVB, VIS] One RAW frame (Format = RAW, Tag = FMTCHK_arm)
    - [NIR] Two RAW frames ((Format = RAW,  Tag = FMTCHK_arm_ON,FMTCHK_arm_OFF)
    - A spectral format table (Format = PRE, Tag = SPECTRAL_FORMAT_TAB_arm)
    - An arc line list (Format = TABLE, Tag = ARC_LINE_LIST_arm)
    - [UVB,VIS,OPTIONAL] A master bias (Format = PRE, Tag = MASTER_BIAS_arm)
    - [UVB,VIS,OPTIONAL] A master dark (Format = PRE, Tag = MASTER_DARK_arm)
    - [OPTIONAL] A reference badpixel map (Format = QUP, Tag = BP_MAP_RP_arm)
    - [OPTIONAL] A non-linear badpixel map (Format = QUP, Tag = BP_MAP_NL_arm)
    - [OPTIONAL] Reference list to monitor line intensity (Tag = ARC_LINE_LIST_INTMON_arm)
     - [poly mode] A theoretical map (Format = TABLE, Tag = THEO_TAB_SING_arm)
    - [physical model mode] A model cfg table (Format = TABLE, Tag = XSH_MOD_CFG_TAB_arm)
  Products : 
    - [poly mode] A wavelength solution (Format = TABLE, PRO.CATG = WAVE_TAB_GUESS_arm)
    - An order table, PRO.CATG = ORDER_TAB_GUESS_arm
      (if at least degree+1 points are found in each order).

      - A line identification residual table, PRO.CATG = FMTCHK_RESID_TAB_LINES_arm
    - The bias subtracted formatcheck frame, PRO.CATG = FMTCHK_ON_arm
    - [physical model mode]An optimized model configuration table, PRO.CATG = XSH_MOD_CFG_OPT_FMT_ARM
  Prepare the frames.

  For UVB,VIS :
    Subtract Master Bias.

    Subtract Master Dark
  For NIR:
    Subtract ON OFF
  Compute guess order table and wavelength solution

Constructor
-----------

.. method:: cpl.Recipe("xsh_predict")
   :noindex:

   Create an object for the recipe xsh_predict.

::

   import cpl
   xsh_predict = cpl.Recipe("xsh_predict")

Parameters
----------

.. py:attribute:: xsh_predict.param.keep_temp

    If 'no', temporary files are deleted. (str; default: 'no') [default="no"].
.. py:attribute:: xsh_predict.param.debug_level

    Additional xshooter debug level. One of 'none', 'low', 'medium',  'high' (str; default: 'none') [default="none"].
.. py:attribute:: xsh_predict.param.time_stamp

    Add timestamp to product file name. (bool; default: False) [default=False].
.. py:attribute:: xsh_predict.param.decode_bp

    Integer representation of the bits to be considered bad when decoding  the bad pixel mask pixel values.   Most frequent codes relevant for  the user:   0: good pixel,   8: pick-up noise,   16: cosmic-ray  removed,   32: cosmic-ray unremoved,   128: calibration file defect,  256: hot pixel,   512: dark pixel,   4096: A/D converted saturation,  32768: non linear pixel,   1048576: extrapolated flux in NIR,  4194304: Interpolated flux during extraction. (int; default:  2144337919) [default=2144337919].
.. py:attribute:: xsh_predict.param.pre_overscan_corr

    pre-overscan correction. 0: no correction 1: mean overscan correction  2: mean prescan correction 3: (mean pre+mean overscan)/2 correction  (int; default: 1) [default=1].
.. py:attribute:: xsh_predict.param.detectarclines_fit_win_hsize

    Half window size (HWS) in pixels for the line 2D fitting window (total  window size = 2*HWS+1) (int; default: 6) [default=6].
.. py:attribute:: xsh_predict.param.detectarclines_search_win_hsize

    Half window size (HWS) in pixels for the line search box around the  expected position (total window size = 2*HWS+1) [bin units] (int;  default: 3) [default=3].
.. py:attribute:: xsh_predict.param.detectarclines_running_median_hsize

    Half window size in pixels (HWS) for the running median box (int;  default: 0) [default=0].
.. py:attribute:: xsh_predict.param.detectarclines_wavesol_deg_lambda

    Degree in lambda in the polynomial solution X=f(lambda,order,slit) and  Y=f(lambda,order,slit) (POLY mode) (int; default: 5) [default=5].
.. py:attribute:: xsh_predict.param.detectarclines_wavesol_deg_order

    Degree in order in the polynomial solution X=f(lambda,order,slit) and  Y=f(lambda,order,slit) (POLY mode) (int; default: 5) [default=5].
.. py:attribute:: xsh_predict.param.detectarclines_ordertab_deg_y

    Degree in Y in the polynomial order tracing X=f(Y) (int; default: 2) [default=2].
.. py:attribute:: xsh_predict.param.detectarclines_min_sn

    Minimum signal-to-noise ratio to filter lines [xsh_predict:  UVB,VIS=5,NIR=4; xsh_2dmap: UVB=3, VIS=6, NIR=10] (float; default:  5.0) [default=5.0].
.. py:attribute:: xsh_predict.param.detectarclines_find_lines_center

    Method used to find the center of the lines: gaussian, barycenter.  Gaussian method applies a Gaussian fit to the line. Barycenter method  computes the line centroid. (str; default: 'gaussian') [default="gaussian"].
.. py:attribute:: xsh_predict.param.detectarclines_clip_sigma

    Kappa value in sigma clipping during the polynomial solution fit (POLY  mode) (float; default: 2.0) [default=2.0].
.. py:attribute:: xsh_predict.param.detectarclines_clip_niter

    Number of iterations in sigma clipping during the polynomial solution  fit (POLY mode) (int; default: 10) [default=10].
.. py:attribute:: xsh_predict.param.detectarclines_clip_frac

    Minimal fractions of bad pixel allowed in sigma clipping duringthe  polynomial solution fit (POLY mode) (float; default: 0.7) [default=0.7].
.. py:attribute:: xsh_predict.param.model_maxit

    Number/10 of annealing iterations if in physical model mode. (int;  default: 1000) [default=1000].
.. py:attribute:: xsh_predict.param.model_anneal_factor

    Multiplier applied to the automatic parameter ranges (i.e. when  scenario!=0). For routine operations should be 1.0. (physical model  mode). (float; default: 1.0) [default=1.0].
.. py:attribute:: xsh_predict.param.model_scenario

    selects preset flag and range combinations appropriate to common  scenarios:   0 - No scenario, input cfg flags and limits used.  1 -  scenario appropriate for the startup recipe (large ranges for  parameters affecting single ph exposures, dist coeff fixed).  2 - Like  1, but includes parameters affecting all ph positions.  3 - Scenario  for use in fine tuning cfg to match routine single pinhole exposures.  All parameters affecting 1ph exposures except dist coeffs are included  and parameter ranges are small. (For use by predict in 1ph case).  4 -  Like 3 but includes parameters  affecting all ph positions (Standard  for use by predict in 9ph case and 2dmap).   (int; default: 3) [default=3].


The following code snippet shows the default settings for the available 
parameters.

::

   import cpl
   xsh_predict = cpl.Recipe("xsh_predict")

   xsh_predict.param.keep_temp = "no"
   xsh_predict.param.debug_level = "none"
   xsh_predict.param.time_stamp = False
   xsh_predict.param.decode_bp = 2144337919
   xsh_predict.param.pre_overscan_corr = 1
   xsh_predict.param.detectarclines_fit_win_hsize = 6
   xsh_predict.param.detectarclines_search_win_hsize = 3
   xsh_predict.param.detectarclines_running_median_hsize = 0
   xsh_predict.param.detectarclines_wavesol_deg_lambda = 5
   xsh_predict.param.detectarclines_wavesol_deg_order = 5
   xsh_predict.param.detectarclines_ordertab_deg_y = 2
   xsh_predict.param.detectarclines_min_sn = 5.0
   xsh_predict.param.detectarclines_find_lines_center = "gaussian"
   xsh_predict.param.detectarclines_clip_sigma = 2.0
   xsh_predict.param.detectarclines_clip_niter = 10
   xsh_predict.param.detectarclines_clip_frac = 0.7
   xsh_predict.param.model_maxit = 1000
   xsh_predict.param.model_anneal_factor = 1.0
   xsh_predict.param.model_scenario = 3


You may also set or overwrite some or all parameters by the recipe 
parameter `param`, as shown in the following example:

::

   import cpl
   xsh_predict = cpl.Recipe("xsh_predict")
   [...]
   res = xsh_predict( ..., param = {"keep_temp":"no", "debug_level":"none"})


.. seealso:: `cpl.Recipe <https://packages.python.org/python-cpl/recipe.html>`_
   for more information about the recipe object.

Bug reports
-----------

Please report any problems to `P.Goldoni, L.Guglielmi, R. Haigron, F. Royer, P. Bristow, D. Bramich, A. Modigliani <amodigli@eso.org>`_. Alternatively, you may 
send a report to the `ESO User Support Department <usd-help@eso.org>`_.

Copyright
---------

This file is part of the X-shooter Instrument Pipeline
Copyright (C) 2006 European Southern Observatory

This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.

This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU General Public License for more details.

You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, 
MA  02111-1307  USA

.. codeauthor:: P.Goldoni, L.Guglielmi, R. Haigron, F. Royer, P. Bristow, D. Bramich, A. Modigliani <amodigli@eso.org>
