ó
2~ÇTc           @   sb   d  d l  Z  d  d l Z d  d l Z d  d l Tg  Z d Z d „  Z d „  Z d „  Z d „  Z	 d S(   iÿÿÿÿN(   t   *i    c         C   sq  |  d k  ri  } t  d d ƒ } | j ƒ  } x= | d k rl t j | ƒ } | d | | d <| j ƒ  } q0 W| j ƒ  | d d } | d d } | d d	 }	 | d d	 }
 | d d
 } | d d | d <d } t | | d ƒ t ƒ  t | d ƒ t d d ƒ t d d d ƒ n HH| GHd } | d k rmt  | d ƒ } | j	 | d ƒ | j	 d ƒ | j ƒ  n  d  S(   Ni   s
   output.init   rt    i    t   webs	   table.csvt   abss   plot.pngs   plot.pltt   help_webs
   index.htmlt   csst   1s   Based on a Gauss-functiont   5s   100%t   lefti   t   ws   
(
   t   opent   readlinet   stringt   splitt   closet   headert   bodyt   headlinet   hlinet   write(   t   Webt   Titlet   Errort   Outputt   Ini_readt   Datat   Rawt	   Table_webt	   Table_abst   Picture_webt   Picture_abst   Gnuplott   Rowst   Table_write(    (    s*   /users/jheidt/cgi-bin/calculator/output.pyt   output_header	   s<    
c   '      C   sä  |  d k  r„i  } t  d d ƒ } | j ƒ  } x= | d k rl t j | ƒ } | d | | d <| j ƒ  } q0 W| j ƒ  | d d } | d d }  | d d	 }! | d d	 }" | d d
 }# | d d | d <d }$ t d d ƒ t d d ƒ t d ƒ d GHt ƒ  d GHt ƒ  | d k s)| d k r<d | GHt ƒ  n  | d k rWd GHt ƒ  n  | d k r–| d k r–d GHt ƒ  d GHt ƒ  d GHt ƒ  n  t	 ƒ  t d ƒ t
 | ƒ t ƒ  | d k rt
 d ƒ t
 | ƒ | j d ƒ d k rt
 d ƒ t
 | ƒ n  t ƒ  n  | d k r.t
 d  ƒ t ƒ  n  | d k sF| d k rdt
 t | ƒ d! ƒ t ƒ  n  | d k rˆt
 | d" ƒ t ƒ  n  | d k ró| d k rót
 d# ƒ t ƒ  t
 | d$ ƒ t ƒ  t
 | d% ƒ t ƒ  t
 | d& ƒ t ƒ  n  t d' ƒ d( GHt ƒ  | d k r0d) GHt ƒ  d* GHt ƒ  n  d+ GHt ƒ  d, GHt ƒ  | d d k r‹d- GHt ƒ  d. GHt ƒ  d/ GHt ƒ  d0 GHt ƒ  n  d1 GHt ƒ  t	 ƒ  t d2 ƒ t
 | ƒ t ƒ  | d k rt
 d3 | d4 t | ƒ ƒ t ƒ  t
 d5 | d6 t | ƒ ƒ t ƒ  n  t
 |	 ƒ t ƒ  t
 |
 ƒ t ƒ  | d d k r·t
 t | ƒ d7 ƒ t ƒ  t
 t | ƒ d$ ƒ t ƒ  t
 t | ƒ d8 ƒ t ƒ  d9 | d: }% t
 |% d; ƒ t ƒ  n  t
 t | ƒ d< ƒ t ƒ  t	 ƒ  t d= ƒ t	 ƒ  t d> d? d ƒ t d@ dA ƒ t dB dC ƒ t dD ƒ dE GHt ƒ  dF GHt ƒ  | dG k rQdH GHt ƒ  n6 | dI k rldJ GHt ƒ  n | dK k r‡dJ GHt ƒ  n  dL GHt ƒ  | dM k r®dN GHt ƒ  n  t	 ƒ  t dO ƒ t
 t | ƒ dP ƒ t ƒ  t
 t | ƒ ƒ t ƒ  | dG k rt
 t | ƒ d! ƒ t ƒ  n@ | dI k r;t
 dQ ƒ t ƒ  n  | dK k r[t
 dR ƒ t ƒ  n  t
 t | ƒ d7 ƒ t ƒ  | dM k rœt
 t | ƒ ƒ t ƒ  n  t	 ƒ  t dS ƒ dT GHt ƒ  | dU k sÑ| dV k ràdW GHt ƒ  n dX GHt ƒ  t	 ƒ  t dY ƒ t
 t | ƒ dZ ƒ t ƒ  | dU k s0| dV k rNd[ | }% t
 |% ƒ t ƒ  n t
 t | ƒ dZ ƒ t ƒ  t	 ƒ  t d= ƒ t	 ƒ  nÁd }  d	 }" d
 }# d G| GH| d k r·d\ G| GHn  | d k rØd  GHd] G| Gd^ GHn  | d k r| d k rd# GHd_ G| Gd` GHda G| Gdb GHdc G| Gdd GHn de | | f GHd( G| GHdf G|	 GHd, G|
 GH| d d k r�d- G| Gdg GHd. G| Gd` GHd/ G| Gdh GHd1 G| Gdi GHn  dj G| Gdk GHdF G| GH| dG k rÂdH G| Gdl GHn( | dI k rÖdm GHn | dK k rêdn GHn  | dM k r	dN G| GHn  dL G| Gdg GHdo G| GH| dU k s0	| dV k r<	dp | GHn	 dq | GH| d k ràt  |  dr ƒ }& |& j ds | dt ƒ | d k r™	|& j du | dt ƒ n  | d k rÊ	|& j d� ƒ |& j dv | dw ƒ n  | d k r1
| d k r1
|& j d‘ ƒ |& j dx | dy ƒ |& j dz | d{ ƒ |& j d| | d} ƒ n |& j d~ | | f ƒ |& j d | ƒ |& j d€ |	 dt ƒ |& j d� |
 dt ƒ | d d k rÚ
|& j d‚ | ƒ |& j dƒ | ƒ |& j d„ | ƒ |& j d… | ƒ n  |& j d† | ƒ |& j d‡ | ƒ | dG k r|& j dˆ | ƒ n8 | dI k r8|& j d‰ ƒ n | dK k rT|& j dŠ ƒ n  | dM k rt|& j d‹ | ƒ n  |& j dŒ | ƒ |& j d� | ƒ | dU k s®| dV k rÂ|& j dŽ | ƒ n |& j d� | ƒ |& j ƒ  n  d  S(’   Ni   s
   output.iniR   R   i    R   s	   table.csvR   s   plot.pngs   plot.pltR   s
   index.htmlt   headline_objects   Object characteristicst   headline_hardwares   Hardware characteristicst   object_lefts   Source geometry:s   Source type:t   bt   ts   Source magnitude (%s-filter):s   Temperature:s   Line wavelength:s
   Line flux:s   Line width:t   object_rights   Template spectrum, t   galaxyiÿÿÿÿs   , z= t	   Blackbodys    mags    Ks   Single lines    microns    erg/s/cm&sup2s    &Aringt   hardware_lefts   LUCIFER No.:s   Detector full well:s   Detector Readout Noise:s   Filter:s   Camera:s   Slit width:s'   Central Wavelength of the grating unit:s   Number of lines per milimeter:s   Dispersion:s   Plate scale:t   hardware_rights   %.0f e-s   Fullwell_%ds   %.0f e- rmss   RON_%ds    arcsecs    l/mms   %4.2fg     ˆÃ@s     &Aring/pixels    arcsec/pixelt   clears   80%t   centert   headline_atmospheres   Atmospheric conditionst   headline_exposures   Parameters of exposuret   atmosphere_lefts   Water vapor:s   Airmass:t   0s   Sky brightness:iåÿÿÿs   Sky background:iïÿÿÿs   Seeing:s   -1s   Strehl:t   atmosphere_rights    mmt   Filet   Theoreticalt   exposure_lefts   DIT: i   i   s   SNR:s   Total exposure time:t   exposure_rights    secs   %.1fs   Source type: Template spectrum,s   Blackbody Temperature:t   Ks   Line_wavelength:t   microns
   Line_flux:s
   erg/s/cm^2s   Line_width:t   As&   Source magnitude (%s-filter): %.2f mags   Filter of LUCIFER:t   arcsecs   l/mms   arcsec/pixels   Water vapour:t   mmt   mags   Sky background: Files   Sky background: Theoreticals   DIT:s
   SNR: %.2f
s   Total exposure time: %.2f
t   as   Source geometry: s   
s    Source type: Template spectrum, s   Blackbody Temperature: s    K
s   Line_wavelength: s    micron
s   Line_flux: s    erg/s/cm^2
s   Line_width: s    As'   Source magnitude (%s-filter): %.2f mag
s   LUCIFER No.: %s
s   Filter used in LUCIFER: s   Camera: s   Slit width: %s arcsec
s4   Central Wavelength of the grating unit: %.2f micron
s'   Number of lines per milimeter: %s l/mm
s   Plate scale: %.2f arcsec/pixel
s   Water vapor: %.1f mm
s   Airmass: %.2f
s   Sky brightness: %.1f mag
s   Sky background: File
s   Sky background: Theoretical
s   Strehl: %.2f
s   Seeing: %.2f arcsec
s   DIT: %.2e sec
s   SNR: %.2f

s   Total exposure time: %.2e sec

s
   Blackbody
s   Single line
(   R   R   R   R   R   t   headline_leftt   headline_rightt   part   newlinet   coda_part   empht   findt   strt   intR   R   ('   R   t   Sourcet   Object_choice_0t   Object_choice_1t   Object_choice_2t
   Filter_magt   Object_brightness_choicet   Detectort   Hawaii_conditionst   Filter_choicet   Camera_choicet
   Slit_widtht   Dispersion_choicet   Water_vaport   Airmasst   Background_choicet   Sky_brightnesst   Strehlt   Seeingt   Central_wavelengtht   Lpmmt   SNt   DITt   Taut   Scalet   ModeR   R   R   R   R   R   R   R   R   R    R!   t   StringR"   (    (    s*   /users/jheidt/cgi-bin/calculator/output.pyt   output_summary/   s    

	












































							c   !      C   s¡  |  d k  r·i  } t  d d ƒ } | j ƒ  } x= | d k rl t j | ƒ } | d | | d <| j ƒ  } q0 W| j ƒ  | d d } | d d } | d d	 } | d d	 } | d d
 } | d d | d <t d d d ƒ t d d ƒ t d ƒ t ƒ  t d ƒ | d k s| d k r'd GHn d GHt	 ƒ  d GHt	 ƒ  d GHt	 ƒ  d GHt	 ƒ  d GHt	 ƒ  d GHt	 ƒ  d GHt ƒ  t d ƒ | d k s�| d k r¸d | } t
 | d ƒ n d | } t
 | ƒ t	 ƒ  d | } | d  k rút
 | d! ƒ n t
 | d" ƒ t	 ƒ  | | } | d  k r6t
 d# | ƒ n t
 d$ | ƒ t	 ƒ  | | } d% | } t
 | ƒ t	 ƒ  d& | } | | } d' | } | | } d( | } | | } | | | |	 } | | k ríd) | | | |	 } d* | } n_ | | | k s| | | k  r0d) | | | |	 } d+ | } n d) | | | |	 } | } t
 | ƒ t	 ƒ  d, | | |	 } t
 | ƒ t	 ƒ  d, | | |	 } t
 | ƒ t ƒ  t d- ƒ t ƒ  nk d } d	 } d
 } d. | GH| d k sê| d k röd/ | GHn	 d0 | GHd1 | | GHd2 | GHd3 | | GHt  | d4 ƒ } d5 | } | j | ƒ | d k s`| d k rmd6 | } n
 d7 | } | j | ƒ d8 | | } | j | ƒ d9 | } | j | ƒ d: | | } | j | ƒ d; } | j | ƒ d< } | j | ƒ d= | } xT | d> | k rWd? | t j | |	 ƒ |
 f } | j | ƒ | d@ | dA } qW| j ƒ  t  | dB ƒ }  |  j dC | dD ƒ |  j dE ƒ |  j dF ƒ |  j dG ƒ |  j dH ƒ t j | d@ | dA |	 ƒ |
 } |  j dI | ƒ |  j dJ | dK ƒ |  j dL ƒ |  j ƒ  dM | } t j | ƒ |  d k  r�t d ƒ dN | dO GHt ƒ  t dP dQ ƒ t | ƒ t d- ƒ t ƒ  t dR ƒ t | dS ƒ n  d  S(T   Ni   s
   output.iniR   R   i    R   s	   table.csvR   s   plot.pngs   plot.pltR   s
   index.htmls   80%R/   s   Calculated valuest   2t   fivet   output_lefti   i   s   Exposure time:s   SNR:s   Total object flux:s   Total sky flux:s3   Electrons from object+sky inside the central pixel:s;   Electrons from object+sky inside the central pixel per DIT:s   Object central pixel:s   Sky background:t   output_rights   %.2fs    secs   Point sources    e-s	    e-/pixels   %0.2f e-s   %0.2f e-/pixels   %.2f e-s   Fullwell_%ss   Linearity_start_%ss   Linearity_end_%ss   %.2f e-/DITs)   %s <font color=red>!! saturated !!</font>s;   %s <font color=red>!! Linearity is not within 5%% !!</font>s   %.2f e-/pix/DITR.   s.   Total number of electrons from source: %.2e e-s   Exposure time: %.2e secs	   SNR: %.2es;   Electrons from object+sky inside the central pixel: %.2e e-s   SNR for the central pixel: %.2es   Background: %.2e e-/pixel/secR?   s/   Total number of electrons from source: %.2f e-
s   Exposure time: %.2f sec
s
   SNR: %.2f
s<   Electrons from object+sky inside the central pixel: %.2e e-
s    SNR for the central pixel: %.2f
s   Background: %.2f e-/pixel/sec
s   
s   exposure time / sec	SNR
g      Ð?g      ü?s
   %.2e	%.7f
g      ø?g      4@R
   s   set output 's   '
s   set term png
s   set style data lines
s!   set xlabel 'exposure time [sec]'
s   set ylabel 'SNR'
s   set yrange[*:%s]
s   plot 's   ' using ($1):($2) s   title 'LUCIFER-ETC SNR'
s   gnuplot s\   The SNR is calculated over %d pixels in the PSF area including  93.8 &#37 of the total flux.g      à?s   Signal-To-Noise plotR   t   asciis
   ASCII-file(   R   R   R   R   R   R   R   RB   RD   RC   RE   R   t   matht   sqrtt   ost   systemt   imaget   link(!   R   RI   RO   RP   t   Photons_object_taut   Photons_sky_taut   Center_pixel_tauR]   t   SN_center_tauR^   t   SN_DITR_   Ra   t   N_pixRZ   R   R   R   R   R   R   R   R   R    t   Tempt   Temp1t   Temp4t   Temp2t   Temp3R"   t   iRb   t   Gnuplot_write(    (    s*   /users/jheidt/cgi-bin/calculator/output.pyt   output_imagingR  s   

















 




			



!
#





c   '      C   s  d } d } d } |  d k  rä i  } t  d d ƒ } | j ƒ  } x= | d k r~ t j | ƒ } | d | | d <| j ƒ  } qB W| j ƒ  | d d	 } | d
 d	 } | d d } | d
 d } | d
 d } | d d | d <n d	 } d } d } t  | d ƒ } t  | d ƒ } | j ƒ  } | j ƒ  d } | j d ƒ xó | D]ë } t t j	 | ƒ |	 | d | d ƒ } | d | k rÚ| | | k  rÚ| | | k  rÚ| d k rÚ| | k  rÚ| | } t j	 | ƒ } qÚn  d | | | | f }  | j |  ƒ | | d k rD| | }! | | }" | | }# qDqDW| j ƒ  | | } d | | | d |	 } | | | d |	 } t j	 | ƒ t j	 | ƒ d }$ | j d | d ƒ | j d ƒ | j d ƒ | j d ƒ | j d ƒ | j d ƒ | j d t
 |$ ƒ d  ƒ | j d! t
 | ƒ d" t
 | ƒ d# ƒ | j d$ ƒ | j d% | | | f ƒ | j d& ƒ | j d' | d( ƒ | j ƒ  d) | }  t j |  ƒ |  d k  rÿt d* d+ d ƒ t d, d- ƒ t d. ƒ t ƒ  t d/ ƒ d0 |	 GHt ƒ  d1 |	 GHt ƒ  d2 GHt ƒ  d3 | GHt ƒ  t d4 ƒ d5 |! GHt ƒ  d6 |# GHt ƒ  d7 | GHt ƒ  d7 | GHt ƒ  t d+ ƒ d8 | }% | |% }% | }& |& |% k r©d9 }% t |% ƒ n  t ƒ  t d+ ƒ d: | d GHt ƒ  t d; d< ƒ t | ƒ t d= ƒ t | d> ƒ n  d  S(?   Niô  g        i   s
   output.iniR   R   i    R   s	   table.csvR   s   plot.pngs   plot.pltR   s
   index.htmlR
   R?   s   WL/micron	SN	Pixel
g      �@g      à?g      ð¿s   %s	%.4f	%d
g       @g      @s   set output 's   '
s   set term png
s   set style data lines
s   set xlabel 'Pixel'
s"   set x2label 'wavelength [micron]'
s'   set ylabel 'SNR (total exposure time)'
s   set x2tics 0,s   
s   set x2range[t   :s   ]
s   set xtics nomirror
s   set xrange[-%s:%s]
s   set yrange[0:*]
s   plot 's*   ' using ($3):($2) title 'LUCIFER-ETC SNR'
s   gnuplot s   80%R/   s   Calculated valuesRd   Re   Rf   s   Object signal at %4.2f micron:s   SNR at %4.2f micron:s%   Maximum count rate from object + sky:s"   Maximum sky level at %4.4f micron:Rg   s   %3.2f e-/DITs   %3.2fs   %3.2f e-/DIT/pixs   Fullwell_%ss&   <font color=red>!! saturated !!</font>st   The SNR and the object signal is calculated for one pixel in dispersion direction and %d pixel in spatial direction.s   Signal-To-Noise plotR   Rh   s
   ASCII-file(   R   R   R   R   R   t   keyst   sortR   RH   t   atofRG   Rk   Rl   R   R   RB   RD   RC   RE   Rm   Rn   ('   R   RO   RP   R]   t   Photons_object_ditt   Photons_sky_ditRT   t   PixelRt   R[   R^   R_   t   Photons_max_ditt   Pixel_shiftt   Wavelength_startt   Wavelength_endR   R   R   R   R   R   R   R   R    R{   R"   t   Listet   Photons_sky_maxRz   t   jt   Wavelength_sky_maxRb   t   Photons_object_cwt   Photons_sky_cwt   SN_cwt   Wavelength_stepRu   Rv   (    (    s*   /users/jheidt/cgi-bin/calculator/output.pyt   output_spectrum  sÂ    

) (




 )



			
				





(
   R   Rk   Ri   t   html_elementst   ContentR!   R#   Rc   R|   R�   (    (    (    s*   /users/jheidt/cgi-bin/calculator/output.pyt   <module>   s   $
	&	ÿ $	°