| 1 |  |  | # -*- coding: utf-8 -*- | 
            
                                                                                                            
                            
            
                                    
            
            
                | 2 |  |  | # vim:fileencoding=utf-8 | 
            
                                                                                                            
                            
            
                                    
            
            
                | 3 |  |  | # | 
            
                                                                                                            
                            
            
                                    
            
            
                | 4 |  |  | # Copyright (c) 2014-2018 Stefan Bender | 
            
                                                                                                            
                            
            
                                    
            
            
                | 5 |  |  | # | 
            
                                                                                                            
                            
            
                                    
            
            
                | 6 |  |  | # This module is part of sciapy. | 
            
                                                                                                            
                            
            
                                    
            
            
                | 7 |  |  | # sciapy is free software: you can redistribute it or modify | 
            
                                                                                                            
                            
            
                                    
            
            
                | 8 |  |  | # it under the terms of the GNU General Public License as published | 
            
                                                                                                            
                            
            
                                    
            
            
                | 9 |  |  | # by the Free Software Foundation, version 2. | 
            
                                                                                                            
                            
            
                                    
            
            
                | 10 |  |  | # See accompanying LICENSE file or http://www.gnu.org/licenses/gpl-2.0.html. | 
            
                                                                                                            
                            
            
                                    
            
            
                | 11 | 1 |  | """SCIAMACHY level 1c limb spectra module | 
            
                                                                                                            
                            
            
                                    
            
            
                | 12 |  |  |  | 
            
                                                                                                            
                            
            
                                    
            
            
                | 13 |  |  | This module contains the class for SCIAMACHY level 1c limb spectra. | 
            
                                                                                                            
                            
            
                                    
            
            
                | 14 |  |  | It include some simple conversion routines: from and to ascii, | 
            
                                                                                                            
                            
            
                                    
            
            
                | 15 |  |  | from and to binary, from and to netcdf. | 
            
                                                                                                            
                            
            
                                    
            
            
                | 16 |  |  |  | 
            
                                                                                                            
                            
            
                                    
            
            
                | 17 |  |  | A simple import from HDF5 files produced by the SRON nadc_tools | 
            
                                                                                                            
                            
            
                                    
            
            
                | 18 |  |  | (https://github.com/rmvanhees/nadc_tools) is also supported. | 
            
                                                                                                            
                            
            
                                    
            
            
                | 19 |  |  | """ | 
            
                                                                                                            
                            
            
                                    
            
            
                | 20 | 1 |  | from __future__ import absolute_import, division, print_function | 
            
                                                                                                            
                            
            
                                    
            
            
                | 21 |  |  |  | 
            
                                                                                                            
                            
            
                                    
            
            
                | 22 | 1 |  | import numpy as np | 
            
                                                                                                            
                            
            
                                    
            
            
                | 23 |  |  |  | 
            
                                                                                                            
                            
            
                                    
            
            
                | 24 | 1 |  | __all__ = ["scia_limb_point", "scia_limb_scan"] | 
            
                                                                                                            
                            
            
                                    
            
            
                | 25 |  |  |  | 
            
                                                                                                            
                            
            
                                    
            
            
                | 26 | 1 |  | def _equation_of_time(doy): | 
            
                                                                                                            
                            
            
                                    
            
            
                | 27 |  |  | 	"""Equation of time correction for day of year (doy) | 
            
                                                                                                            
                            
            
                                    
            
            
                | 28 |  |  |  | 
            
                                                                                                            
                            
            
                                    
            
            
                | 29 |  |  | 	See: | 
            
                                                                                                            
                            
            
                                    
            
            
                | 30 |  |  | 	https://en.wikipedia.org/wiki/Equation_of_time | 
            
                                                                                                            
                            
            
                                    
            
            
                | 31 |  |  |  | 
            
                                                                                                            
                            
            
                                    
            
            
                | 32 |  |  | 	Parameters | 
            
                                                                                                            
                            
            
                                    
            
            
                | 33 |  |  | 	---------- | 
            
                                                                                                            
                            
            
                                    
            
            
                | 34 |  |  | 	doy: int | 
            
                                                                                                            
                            
            
                                    
            
            
                | 35 |  |  | 		Day of year, Jan 1 = 1 | 
            
                                                                                                            
                            
            
                                    
            
            
                | 36 |  |  |  | 
            
                                                                                                            
                            
            
                                    
            
            
                | 37 |  |  | 	Returns | 
            
                                                                                                            
                            
            
                                    
            
            
                | 38 |  |  | 	------- | 
            
                                                                                                            
                            
            
                                    
            
            
                | 39 |  |  | 	eot: float | 
            
                                                                                                            
                            
            
                                    
            
            
                | 40 |  |  | 		Equation of time correction in minutes | 
            
                                                                                                            
                            
            
                                    
            
            
                | 41 |  |  | 	""" | 
            
                                                                                                            
                            
            
                                    
            
            
                | 42 | 1 |  | 	D = doy - 1  # jan 1 = day zero | 
            
                                                                                                            
                            
            
                                    
            
            
                | 43 | 1 |  | 	W = 360.0 / 365.242 | 
            
                                                                                                            
                            
            
                                    
            
            
                | 44 | 1 |  | 	A = W * (D + 10) | 
            
                                                                                                            
                            
            
                                    
            
            
                | 45 | 1 |  | 	B = A + 1.914 * np.sin(np.radians(W * (D - 2))) | 
            
                                                                                                            
                            
            
                                    
            
            
                | 46 | 1 |  | 	C = (np.radians(A) - | 
            
                                                                                                            
                            
            
                                    
            
            
                | 47 |  |  | 			np.arctan2(np.tan(np.radians(B)), | 
            
                                                                                                            
                            
            
                                    
            
            
                | 48 |  |  | 					np.cos(np.radians(23.44)))) / np.pi | 
            
                                                                                                            
                            
            
                                    
            
            
                | 49 | 1 |  | 	return 720.0 * (C - round(C)) | 
            
                                                                                                            
                            
            
                                    
            
            
                | 50 |  |  |  | 
            
                                                                                                            
                            
            
                                    
            
            
                | 51 | 1 |  | class scia_limb_point(object): | 
            
                                                                                                            
                            
            
                                    
            
            
                | 52 |  |  | 	"""SCIAMACHY limb tangent point data | 
            
                                                                                                            
                            
            
                                    
            
            
                | 53 |  |  |  | 
            
                                                                                                            
                            
            
                                    
            
            
                | 54 |  |  | 	Contains the data from a single tangent point.""" | 
            
                                                                                                            
                            
            
                                    
            
            
                | 55 | 1 |  | 	def __init__(self, ls, i): | 
            
                                                                                                            
                            
            
                                    
            
            
                | 56 |  |  | 		self.date = [] | 
            
                                                                                                            
                            
            
                                    
            
            
                | 57 |  |  | 		self.npix = 0 | 
            
                                                                                                            
                            
            
                                    
            
            
                | 58 |  |  | 		self.orbit = 0 | 
            
                                                                                                            
                            
            
                                    
            
            
                | 59 |  |  | 		self.sub_sat_lat = None | 
            
                                                                                                            
                            
            
                                    
            
            
                | 60 |  |  | 		self.sub_sat_lon = None | 
            
                                                                                                            
                            
            
                                    
            
            
                | 61 |  |  | 		self.tp_lat = None | 
            
                                                                                                            
                            
            
                                    
            
            
                | 62 |  |  | 		self.tp_lon = None | 
            
                                                                                                            
                            
            
                                    
            
            
                | 63 |  |  | 		self.tp_alt = None | 
            
                                                                                                            
                            
            
                                    
            
            
                | 64 |  |  | 		self.tp_sza = None | 
            
                                                                                                            
                            
            
                                    
            
            
                | 65 |  |  | 		self.tp_saa = None | 
            
                                                                                                            
                            
            
                                    
            
            
                | 66 |  |  | 		self.tp_los_zenith = None | 
            
                                                                                                            
                            
            
                                    
            
            
                | 67 |  |  | 		self.toa_sza = None | 
            
                                                                                                            
                            
            
                                    
            
            
                | 68 |  |  | 		self.toa_saa = None | 
            
                                                                                                            
                            
            
                                    
            
            
                | 69 |  |  | 		self.toa_los_zenith = None | 
            
                                                                                                            
                            
            
                                    
            
            
                | 70 |  |  | 		self.sat_sza = None | 
            
                                                                                                            
                            
            
                                    
            
            
                | 71 |  |  | 		self.sat_saa = None | 
            
                                                                                                            
                            
            
                                    
            
            
                | 72 |  |  | 		self.sat_los_zenith = None | 
            
                                                                                                            
                            
            
                                    
            
            
                | 73 |  |  | 		self.sat_alt = None | 
            
                                                                                                            
                            
            
                                    
            
            
                | 74 |  |  | 		self.earthradius = None | 
            
                                                                                                            
                            
            
                                    
            
            
                | 75 |  |  |  | 
            
                                                                                                            
                            
            
                                    
            
            
                | 76 |  |  | 		self.wls = [] | 
            
                                                                                                            
                            
            
                                    
            
            
                | 77 |  |  | 		self.rads = [] | 
            
                                                                                                            
                            
            
                                    
            
            
                | 78 |  |  | 		self.errs = [] | 
            
                                                                                                            
                            
            
                                    
            
            
                | 79 |  |  | 		self.limb_data = None | 
            
                                                                                                            
                            
            
                                    
            
            
                | 80 |  |  | 		self.from_limb_scan(ls, i) | 
            
                                                                                                            
                            
            
                                    
            
            
                | 81 |  |  |  | 
            
                                                                                                            
                            
            
                                    
            
            
                | 82 | 1 |  | 	def from_limb_scan(self, ls, i): | 
            
                                                                                                            
                            
            
                                    
            
            
                | 83 |  |  | 		"""Import the spectra from a single tangent point of the limb scan | 
            
                                                                                                            
                            
            
                                    
            
            
                | 84 |  |  |  | 
            
                                                                                                            
                            
            
                                    
            
            
                | 85 |  |  | 		Parameters | 
            
                                                                                                            
                            
            
                                    
            
            
                | 86 |  |  | 		---------- | 
            
                                                                                                            
                            
            
                                    
            
            
                | 87 |  |  | 		ls : :class:`~sciapy.level1c.scia_limb_scan` | 
            
                                                                                                            
                            
            
                                    
            
            
                | 88 |  |  | 			The SCIAMACHY limb scan from which to extract the spectra. | 
            
                                                                                                            
                            
            
                                    
            
            
                | 89 |  |  | 		i : int | 
            
                                                                                                            
                            
            
                                    
            
            
                | 90 |  |  | 			The number of the tangent point in the limb scan | 
            
                                                                                                            
                            
            
                                    
            
            
                | 91 |  |  | 		""" | 
            
                                                                                                            
                            
            
                                    
            
            
                | 92 |  |  | 		self.date = ls.date | 
            
                                                                                                            
                            
            
                                    
            
            
                | 93 |  |  | 		self.npix = ls.npix | 
            
                                                                                                            
                            
            
                                    
            
            
                | 94 |  |  | 		self.orbit = ls.orbit | 
            
                                                                                                            
                            
            
                                    
            
            
                | 95 |  |  | 		if np.any(ls.limb_data.sub_sat_lat): | 
            
                                                                                                            
                            
            
                                    
            
            
                | 96 |  |  | 			self.sub_sat_lat = ls.limb_data.sub_sat_lat[i] | 
            
                                                                                                            
                            
            
                                    
            
            
                | 97 |  |  | 			self.sub_sat_lon = ls.limb_data.sub_sat_lon[i] | 
            
                                                                                                            
                            
            
                                    
            
            
                | 98 |  |  | 		self.tp_lat = ls.limb_data.tp_lat[i] | 
            
                                                                                                            
                            
            
                                    
            
            
                | 99 |  |  | 		self.tp_lon = ls.limb_data.tp_lon[i] | 
            
                                                                                                            
                            
            
                                    
            
            
                | 100 |  |  | 		self.tp_alt = ls.limb_data.tp_alt[i] | 
            
                                                                                                            
                            
            
                                    
            
            
                | 101 |  |  | 		self.tp_sza = ls.limb_data.tp_sza[i] | 
            
                                                                                                            
                            
            
                                    
            
            
                | 102 |  |  | 		self.tp_saa = ls.limb_data.tp_saa[i] | 
            
                                                                                                            
                            
            
                                    
            
            
                | 103 |  |  | 		self.tp_los_zenith = ls.limb_data.tp_los[i] | 
            
                                                                                                            
                            
            
                                    
            
            
                | 104 |  |  | 		self.toa_sza = ls.limb_data.toa_sza[i] | 
            
                                                                                                            
                            
            
                                    
            
            
                | 105 |  |  | 		self.toa_saa = ls.limb_data.toa_saa[i] | 
            
                                                                                                            
                            
            
                                    
            
            
                | 106 |  |  | 		self.toa_los_zenith = ls.limb_data.toa_los[i] | 
            
                                                                                                            
                            
            
                                    
            
            
                | 107 |  |  | 		self.sat_sza = ls.limb_data.sat_sza[i] | 
            
                                                                                                            
                            
            
                                    
            
            
                | 108 |  |  | 		self.sat_saa = ls.limb_data.sat_saa[i] | 
            
                                                                                                            
                            
            
                                    
            
            
                | 109 |  |  | 		self.sat_los_zenith = ls.limb_data.sat_los[i] | 
            
                                                                                                            
                            
            
                                    
            
            
                | 110 |  |  | 		self.sat_alt = ls.limb_data.sat_alt[i] | 
            
                                                                                                            
                            
            
                                    
            
            
                | 111 |  |  | 		self.earthradius = ls.limb_data.earth_rad[i] | 
            
                                                                                                            
                            
            
                                    
            
            
                | 112 |  |  |  | 
            
                                                                                                            
                            
            
                                    
            
            
                | 113 |  |  | 		self.wls = ls.wls | 
            
                                                                                                            
                            
            
                                    
            
            
                | 114 |  |  | 		self.rads = ls.limb_data.rad[i] | 
            
                                                                                                            
                            
            
                                    
            
            
                | 115 |  |  | 		self.errs = ls.limb_data.err[i] | 
            
                                                                                                            
                            
            
                                    
            
            
                | 116 |  |  | 		self.limb_data = ls.limb_data[i] | 
            
                                                                                                            
                            
            
                                    
            
            
                | 117 |  |  |  | 
            
                                                                                                            
                            
            
                                    
            
            
                | 118 |  |  |  | 
            
                                                                                                            
                            
            
                                    
            
            
                | 119 | 1 |  | class scia_limb_scan(object): | 
            
                                                                                                            
                            
            
                                    
            
            
                | 120 |  |  | 	"""SCIAMACHY limb scan data | 
            
                                                                                                            
                            
            
                                    
            
            
                | 121 |  |  |  | 
            
                                                                                                            
                            
            
                                    
            
            
                | 122 |  |  | 	Contains the data from all or some selected tangent points. | 
            
                                                                                                            
                            
            
                                    
            
            
                | 123 |  |  | 	The format is inspired by the SCIAMACHY ascii data format. | 
            
                                                                                                            
                            
            
                                    
            
            
                | 124 |  |  |  | 
            
                                                                                                            
                            
            
                                    
            
            
                | 125 |  |  | 	Attributes | 
            
                                                                                                            
                            
            
                                    
            
            
                | 126 |  |  | 	---------- | 
            
                                                                                                            
                            
            
                                    
            
            
                | 127 |  |  | 	textheader_length : int | 
            
                                                                                                            
                            
            
                                    
            
            
                | 128 |  |  | 		The number of lines of the text header. | 
            
                                                                                                            
                            
            
                                    
            
            
                | 129 |  |  | 	textheader : str | 
            
                                                                                                            
                            
            
                                    
            
            
                | 130 |  |  | 		The header containing the limb scan meta data. | 
            
                                                                                                            
                            
            
                                    
            
            
                | 131 |  |  | 	metadata : dict | 
            
                                                                                                            
                            
            
                                    
            
            
                | 132 |  |  | 		Metadata of the limb scan as parsed by | 
            
                                                                                                            
                            
            
                                    
            
            
                | 133 |  |  | 		:func:`parse_textheader`. Contains: | 
            
                                                                                                            
                            
            
                                    
            
            
                | 134 |  |  |  | 
            
                                                                                                            
                            
            
                                    
            
            
                | 135 |  |  | 		datatype_txt: str | 
            
                                                                                                            
                            
            
                                    
            
            
                | 136 |  |  | 			The name of the data type. | 
            
                                                                                                            
                            
            
                                    
            
            
                | 137 |  |  | 		l1b_product: str | 
            
                                                                                                            
                            
            
                                    
            
            
                | 138 |  |  | 			The level 1b product which was calibrated. | 
            
                                                                                                            
                            
            
                                    
            
            
                | 139 |  |  | 		orbit: int | 
            
                                                                                                            
                            
            
                                    
            
            
                | 140 |  |  | 			The Envisat/SCIAMACHY orbit number. | 
            
                                                                                                            
                            
            
                                    
            
            
                | 141 |  |  | 		state_id: int | 
            
                                                                                                            
                            
            
                                    
            
            
                | 142 |  |  | 			The SCIAMACHY state_id, denotes the measurement type | 
            
                                                                                                            
                            
            
                                    
            
            
                | 143 |  |  | 			that was carried out, i.e. nominal limb, MLT limb, | 
            
                                                                                                            
                            
            
                                    
            
            
                | 144 |  |  | 			nadir, sun or moon occultation etc. | 
            
                                                                                                            
                            
            
                                    
            
            
                | 145 |  |  | 		software_version: str | 
            
                                                                                                            
                            
            
                                    
            
            
                | 146 |  |  | 			The software used for calibration. | 
            
                                                                                                            
                            
            
                                    
            
            
                | 147 |  |  | 		keyfile_version: str | 
            
                                                                                                            
                            
            
                                    
            
            
                | 148 |  |  | 			The keyfile version used in the calibration process. | 
            
                                                                                                            
                            
            
                                    
            
            
                | 149 |  |  | 		mfactor_version: str | 
            
                                                                                                            
                            
            
                                    
            
            
                | 150 |  |  | 			The M-factor version used in the calibration process. | 
            
                                                                                                            
                            
            
                                    
            
            
                | 151 |  |  | 		init_version: str | 
            
                                                                                                            
                            
            
                                    
            
            
                | 152 |  |  | 			The init version used in the calibration process. | 
            
                                                                                                            
                            
            
                                    
            
            
                | 153 |  |  | 		decont_flags: str | 
            
                                                                                                            
                            
            
                                    
            
            
                | 154 |  |  | 			The decont flags used in the calibration process. | 
            
                                                                                                            
                            
            
                                    
            
            
                | 155 |  |  | 		calibration: str | 
            
                                                                                                            
                            
            
                                    
            
            
                | 156 |  |  | 			The calibrations that were applied to the level 1b data | 
            
                                                                                                            
                            
            
                                    
            
            
                | 157 |  |  | 			to produce the level 1c data. | 
            
                                                                                                            
                            
            
                                    
            
            
                | 158 |  |  | 		date: str | 
            
                                                                                                            
                            
            
                                    
            
            
                | 159 |  |  | 			The measurement data of the limb scan as "%Y%m%d" | 
            
                                                                                                            
                            
            
                                    
            
            
                | 160 |  |  | 		nr_profile: int | 
            
                                                                                                            
                            
            
                                    
            
            
                | 161 |  |  | 			The number of profiles in the scan. | 
            
                                                                                                            
                            
            
                                    
            
            
                | 162 |  |  | 		act_profile: int | 
            
                                                                                                            
                            
            
                                    
            
            
                | 163 |  |  | 			The number of the current profile. | 
            
                                                                                                            
                            
            
                                    
            
            
                | 164 |  |  | 	nalt : int | 
            
                                                                                                            
                            
            
                                    
            
            
                | 165 |  |  | 		The number of tangent points. | 
            
                                                                                                            
                            
            
                                    
            
            
                | 166 |  |  | 	npix : int | 
            
                                                                                                            
                            
            
                                    
            
            
                | 167 |  |  | 		The number of spectral points. | 
            
                                                                                                            
                            
            
                                    
            
            
                | 168 |  |  | 	orbit_state : tuple or list of ints | 
            
                                                                                                            
                            
            
                                    
            
            
                | 169 |  |  | 		Orbit state data containing | 
            
                                                                                                            
                            
            
                                    
            
            
                | 170 |  |  | 		(orbit number, state in orbit, state id, | 
            
                                                                                                            
                            
            
                                    
            
            
                | 171 |  |  | 		number of profiles per state (usually one), | 
            
                                                                                                            
                            
            
                                    
            
            
                | 172 |  |  | 		the actual profile number). | 
            
                                                                                                            
                            
            
                                    
            
            
                | 173 |  |  | 	date : tuple or list of ints | 
            
                                                                                                            
                            
            
                                    
            
            
                | 174 |  |  | 		The limb scan's date (year, month, day, hour, minute, second). | 
            
                                                                                                            
                            
            
                                    
            
            
                | 175 |  |  | 	cent_lat_lon : tuple or list of float | 
            
                                                                                                            
                            
            
                                    
            
            
                | 176 |  |  | 		The centre latitude and longitude of the scan followed by the | 
            
                                                                                                            
                            
            
                                    
            
            
                | 177 |  |  | 		four corner latitude and longitude: | 
            
                                                                                                            
                            
            
                                    
            
            
                | 178 |  |  | 		(lat_centre, lon_centre, lat_corner0, lon_corner0, ..., | 
            
                                                                                                            
                            
            
                                    
            
            
                | 179 |  |  | 		lat_corner3, lon_corner3). | 
            
                                                                                                            
                            
            
                                    
            
            
                | 180 |  |  | 	orbit_phase : float | 
            
                                                                                                            
                            
            
                                    
            
            
                | 181 |  |  | 		The orbital phase of the limb scan. | 
            
                                                                                                            
                            
            
                                    
            
            
                | 182 |  |  | 	wls: (N,) array_like | 
            
                                                                                                            
                            
            
                                    
            
            
                | 183 |  |  | 		The spectral wavelengths. | 
            
                                                                                                            
                            
            
                                    
            
            
                | 184 |  |  | 	limb_data : numpy.recarray | 
            
                                                                                                            
                            
            
                                    
            
            
                | 185 |  |  | 		The limb data containing the following records: | 
            
                                                                                                            
                            
            
                                    
            
            
                | 186 |  |  |  | 
            
                                                                                                            
                            
            
                                    
            
            
                | 187 |  |  | 		sub_sat_lat: (M,) array_like | 
            
                                                                                                            
                            
            
                                    
            
            
                | 188 |  |  | 			The latitudes of the satellite ground points (M = nalt). | 
            
                                                                                                            
                            
            
                                    
            
            
                | 189 |  |  | 		sub_sat_lon: (M,) array_like | 
            
                                                                                                            
                            
            
                                    
            
            
                | 190 |  |  | 			The longitudes of the satellite ground points (M = nalt). | 
            
                                                                                                            
                            
            
                                    
            
            
                | 191 |  |  | 		tp_lat: (M,) array_like | 
            
                                                                                                            
                            
            
                                    
            
            
                | 192 |  |  | 			The latitudes of the tangent points (M = nalt). | 
            
                                                                                                            
                            
            
                                    
            
            
                | 193 |  |  | 		tp_lon: (M,) array_like | 
            
                                                                                                            
                            
            
                                    
            
            
                | 194 |  |  | 			The longitudes of the tangent points (M = nalt). | 
            
                                                                                                            
                            
            
                                    
            
            
                | 195 |  |  | 		tp_alt: (M,) array_like | 
            
                                                                                                            
                            
            
                                    
            
            
                | 196 |  |  | 			The tangent altitudes (M = nalt). | 
            
                                                                                                            
                            
            
                                    
            
            
                | 197 |  |  | 		tp_sza: (M,) array_like | 
            
                                                                                                            
                            
            
                                    
            
            
                | 198 |  |  | 			The solar zenith angles at the tangent points (M = nalt). | 
            
                                                                                                            
                            
            
                                    
            
            
                | 199 |  |  | 		tp_saa: (M,) array_like | 
            
                                                                                                            
                            
            
                                    
            
            
                | 200 |  |  | 			The solar azimuth angles at the tangent points (M = nalt). | 
            
                                                                                                            
                            
            
                                    
            
            
                | 201 |  |  | 		tp_los: (M,) array_like | 
            
                                                                                                            
                            
            
                                    
            
            
                | 202 |  |  | 			The line-of-sight zenith angles at the tangent points (M = nalt). | 
            
                                                                                                            
                            
            
                                    
            
            
                | 203 |  |  | 		toa_sza: (M,) array_like | 
            
                                                                                                            
                            
            
                                    
            
            
                | 204 |  |  | 			The solar zenith angles at the top-of-atmosphere points (M = nalt). | 
            
                                                                                                            
                            
            
                                    
            
            
                | 205 |  |  | 		toa_saa: (M,) array_like | 
            
                                                                                                            
                            
            
                                    
            
            
                | 206 |  |  | 			The solar azimuth angles at the top-of-atmosphere points (M = nalt). | 
            
                                                                                                            
                            
            
                                    
            
            
                | 207 |  |  | 		toa_los: (M,) array_like | 
            
                                                                                                            
                            
            
                                    
            
            
                | 208 |  |  | 			The line-of-sight zenith angles at the top-of-atmosphere points (M = nalt). | 
            
                                                                                                            
                            
            
                                    
            
            
                | 209 |  |  | 		sat_sza: (M,) array_like | 
            
                                                                                                            
                            
            
                                    
            
            
                | 210 |  |  | 			The solar zenith angles at the satellite points (M = nalt). | 
            
                                                                                                            
                            
            
                                    
            
            
                | 211 |  |  | 		sat_saa: (M,) array_like | 
            
                                                                                                            
                            
            
                                    
            
            
                | 212 |  |  | 			The solar azimuth angles at the satellite points (M = nalt). | 
            
                                                                                                            
                            
            
                                    
            
            
                | 213 |  |  | 		sat_los: (M,) array_like | 
            
                                                                                                            
                            
            
                                    
            
            
                | 214 |  |  | 			The line-of-sight zenith angles at the satellite points (M = nalt). | 
            
                                                                                                            
                            
            
                                    
            
            
                | 215 |  |  | 		sat_alt: (M,) array_like | 
            
                                                                                                            
                            
            
                                    
            
            
                | 216 |  |  | 			The satellite altitudes (M = nalt). | 
            
                                                                                                            
                            
            
                                    
            
            
                | 217 |  |  | 		earth_rad: (M,) array_like | 
            
                                                                                                            
                            
            
                                    
            
            
                | 218 |  |  | 			The earth radii at the tangent ground points (M = nalt). | 
            
                                                                                                            
                            
            
                                    
            
            
                | 219 |  |  | 		rad: (M, N) array_like | 
            
                                                                                                            
                            
            
                                    
            
            
                | 220 |  |  | 			The radiances at the tangent points, M = nalt, N = len(wls). | 
            
                                                                                                            
                            
            
                                    
            
            
                | 221 |  |  | 		err: (M, N) array_like | 
            
                                                                                                            
                            
            
                                    
            
            
                | 222 |  |  | 			The relative radiance uncertainties at the tangent points, | 
            
                                                                                                            
                            
            
                                    
            
            
                | 223 |  |  | 			M = nalt, N = len(wls). | 
            
                                                                                                            
                            
            
                                    
            
            
                | 224 |  |  | 	""" | 
            
                                                                                                            
                            
            
                                    
            
            
                | 225 | 1 |  | 	from .scia_limb_nc import read_from_netcdf, write_to_netcdf | 
            
                                                                                                            
                            
            
                                    
            
            
                | 226 | 1 |  | 	from .scia_limb_txt import read_from_textfile, write_to_textfile | 
            
                                                                                                            
                            
            
                                    
            
            
                | 227 | 1 |  | 	from .scia_limb_mpl import read_from_mpl_binary, write_to_mpl_binary | 
            
                                                                                                            
                            
            
                                    
            
            
                | 228 | 1 |  | 	from .scia_limb_hdf5 import (read_hdf5_limb_state_common_data, | 
            
                                                                                                            
                            
            
                                    
            
            
                | 229 |  |  | 								read_hdf5_limb_state_spectral_data, | 
            
                                                                                                            
                            
            
                                    
            
            
                | 230 |  |  | 								read_from_hdf5) | 
            
                                                                                                            
                            
            
                                    
            
            
                | 231 |  |  |  | 
            
                                                                                                            
                            
            
                                    
            
            
                | 232 | 1 |  | 	def __init__(self): | 
            
                                                                                                            
                            
            
                                    
            
            
                | 233 | 1 |  | 		self._limb_data_dtype = None | 
            
                                                                                                            
                            
            
                                    
            
            
                | 234 | 1 |  | 		self.textheader_length = 0 | 
            
                                                                                                            
                            
            
                                    
            
            
                | 235 | 1 |  | 		self.textheader = "" | 
            
                                                                                                            
                            
            
                                    
            
            
                | 236 | 1 |  | 		self.metadata = {} | 
            
                                                                                                            
                            
            
                                    
            
            
                | 237 | 1 |  | 		self.nalt = 0 | 
            
                                                                                                            
                            
            
                                    
            
            
                | 238 | 1 |  | 		self.npix = 0 | 
            
                                                                                                            
                            
            
                                    
            
            
                | 239 | 1 |  | 		self.orbit_state = [] | 
            
                                                                                                            
                            
            
                                    
            
            
                | 240 | 1 |  | 		(self.orbit, self.state_in_orbit, self.state_id, | 
            
                                                                                                            
                            
            
                                    
            
            
                | 241 |  |  | 			self.profiles_per_state, self.profile_in_state) = (0, 0, 0, 0, 0) | 
            
                                                                                                            
                            
            
                                    
            
            
                | 242 | 1 |  | 		self.date = [] | 
            
                                                                                                            
                            
            
                                    
            
            
                | 243 | 1 |  | 		self.cent_lat_lon = [] | 
            
                                                                                                            
                            
            
                                    
            
            
                | 244 | 1 |  | 		self.orbit_phase = 0. | 
            
                                                                                                            
                            
            
                                    
            
            
                | 245 |  |  |  | 
            
                                                                                                            
                            
            
                                    
            
            
                | 246 | 1 |  | 		self.limb_data = None | 
            
                                                                                                            
                            
            
                                    
            
            
                | 247 |  |  |  | 
            
                                                                                                            
                            
            
                                    
            
            
                | 248 | 1 |  | 		self.wls = [] | 
            
                                                                                                            
                                                                
            
                                    
            
            
                | 249 |  |  |  | 
            
                                                                        
                            
            
                                    
            
            
                | 250 | 1 |  | 	def parse_textheader(self): | 
            
                                                                        
                            
            
                                    
            
            
                | 251 |  |  | 		"""Parses the ASCII header metadata | 
            
                                                                        
                            
            
                                    
            
            
                | 252 |  |  |  | 
            
                                                                        
                            
            
                                    
            
            
                | 253 |  |  | 		The ASCII header text contains metadata about the current limb scan. | 
            
                                                                        
                            
            
                                    
            
            
                | 254 |  |  | 		This function reads this metadata into the :attr:`metadata` dictionary. | 
            
                                                                        
                            
            
                                    
            
            
                | 255 |  |  | 		""" | 
            
                                                                        
                            
            
                                    
            
            
                | 256 | 1 |  | 		from parse import parse | 
            
                                                                        
                            
            
                                    
            
            
                | 257 | 1 |  | 		split_header = self.textheader.split('\n') | 
            
                                                                        
                            
            
                                    
            
            
                | 258 | 1 |  | 		line = 0 | 
            
                                                                        
                            
            
                                    
            
            
                | 259 | 1 |  | 		res = parse("#Data type          : {txt}", split_header[line]) | 
            
                                                                        
                            
            
                                    
            
            
                | 260 | 1 |  | 		self.metadata["datatype_txt"] = res["txt"] | 
            
                                                                        
                            
            
                                    
            
            
                | 261 | 1 |  | 		line += 1 | 
            
                                                                        
                            
            
                                    
            
            
                | 262 | 1 |  | 		res = parse("#L1b product        : {product}", split_header[line]) | 
            
                                                                        
                            
            
                                    
            
            
                | 263 | 1 |  | 		self.metadata["l1b_product"] = res["product"] | 
            
                                                                        
                            
            
                                    
            
            
                | 264 | 1 |  | 		line += 1 | 
            
                                                                        
                            
            
                                    
            
            
                | 265 | 1 |  | 		res = parse("#Orbit nr.,State ID : {orbit:05d} {state_id:2d}", split_header[line]) | 
            
                                                                        
                            
            
                                    
            
            
                | 266 | 1 |  | 		self.metadata["orbit"] = res["orbit"] | 
            
                                                                        
                            
            
                                    
            
            
                | 267 | 1 |  | 		self.metadata["state_id"] = res["state_id"] | 
            
                                                                        
                            
            
                                    
            
            
                | 268 | 1 |  | 		line += 1 | 
            
                                                                        
                            
            
                                    
            
            
                | 269 | 1 |  | 		res = parse("#Ver. Proc/Key/M/I/D: {soft}{:s}{key}  {mf}  {init}  {decont}", | 
            
                                                                        
                            
            
                                    
            
            
                | 270 |  |  | 				split_header[line]) | 
            
                                                                        
                            
            
                                    
            
            
                | 271 | 1 |  | 		self.metadata["software_version"] = res["soft"] | 
            
                                                                        
                            
            
                                    
            
            
                | 272 | 1 |  | 		self.metadata["keyfile_version"] = res["key"] | 
            
                                                                        
                            
            
                                    
            
            
                | 273 | 1 |  | 		self.metadata["mfactor_version"] = res["mf"] | 
            
                                                                        
                            
            
                                    
            
            
                | 274 | 1 |  | 		self.metadata["init_version"] = res["init"] | 
            
                                                                        
                            
            
                                    
            
            
                | 275 | 1 |  | 		self.metadata["decont_flags"] = res["decont"] | 
            
                                                                        
                            
            
                                    
            
            
                | 276 | 1 |  | 		line += 1 | 
            
                                                                        
                            
            
                                    
            
            
                | 277 | 1 |  | 		res = parse("#Calibr. appl. (0-8): {cal}", split_header[line]) | 
            
                                                                        
                            
            
                                    
            
            
                | 278 | 1 |  | 		self.metadata["calibration"] = res["cal"] | 
            
                                                                        
                            
            
                                    
            
            
                | 279 | 1 |  | 		line += 1 | 
            
                                                                        
                            
            
                                    
            
            
                | 280 | 1 |  | 		res = parse("#State Starttime    : {date}", split_header[line]) | 
            
                                                                        
                            
            
                                    
            
            
                | 281 | 1 |  | 		self.metadata["date"] = res["date"] | 
            
                                                                        
                            
            
                                    
            
            
                | 282 | 1 |  | 		line += 1 | 
            
                                                                        
                            
            
                                    
            
            
                | 283 | 1 |  | 		res = parse("#Nr Profiles / act. : {np:3d} {ap:3d}", split_header[line]) | 
            
                                                                        
                            
            
                                    
            
            
                | 284 | 1 |  | 		self.metadata["nr_profile"] = res["np"] | 
            
                                                                        
                            
            
                                    
            
            
                | 285 | 1 |  | 		self.metadata["act_profile"] = res["ap"] | 
            
                                                                                                            
                            
            
                                    
            
            
                | 286 |  |  |  | 
            
                                                                                                            
                            
            
                                    
            
            
                | 287 | 1 |  | 	def assemble_textheader(self): | 
            
                                                                                                            
                            
            
                                    
            
            
                | 288 |  |  | 		"""Combines the metadata to ASCII header | 
            
                                                                                                            
                            
            
                                    
            
            
                | 289 |  |  |  | 
            
                                                                                                            
                            
            
                                    
            
            
                | 290 |  |  | 		Tranfers the :attr:`metadata` dictionary back to ASCII form | 
            
                                                                                                            
                            
            
                                    
            
            
                | 291 |  |  | 		for writing to disk. | 
            
                                                                                                            
                            
            
                                    
            
            
                | 292 |  |  | 		""" | 
            
                                                                                                            
                            
            
                                    
            
            
                | 293 |  |  | 		# Prepare the header | 
            
                                                                                                            
                            
            
                                    
            
            
                | 294 |  |  | 		meta = self.metadata | 
            
                                                                                                            
                            
            
                                    
            
            
                | 295 |  |  | 		if not meta: | 
            
                                                                                                            
                            
            
                                    
            
            
                | 296 |  |  | 			return | 
            
                                                                                                            
                            
            
                                    
            
            
                | 297 |  |  | 		n_header = 30 | 
            
                                                                                                            
                            
            
                                    
            
            
                | 298 |  |  | 		line = n_header + 2 | 
            
                                                                                                            
                            
            
                                    
            
            
                | 299 |  |  | 		header = ("#Data type          : {0[datatype_txt]}\n".format(meta)) | 
            
                                                                                                            
                            
            
                                    
            
            
                | 300 |  |  | 		header += ("#L1b product        : {0[l1b_product]}\n".format(meta)) | 
            
                                                                                                            
                            
            
                                    
            
            
                | 301 |  |  | 		header += ("#Orbit nr.,State ID : {0:05d} {1:2d}\n".format(meta["orbit"], meta["state_id"])) | 
            
                                                                                                            
                            
            
                                    
            
            
                | 302 |  |  | 		header += ("#Ver. Proc/Key/M/I/D: {0[software_version]:14s}  " | 
            
                                                                                                            
                            
            
                                    
            
            
                | 303 |  |  | 				"{0[keyfile_version]}  {0[mfactor_version]}  " | 
            
                                                                                                            
                            
            
                                    
            
            
                | 304 |  |  | 				"{0[init_version]}  {0[decont_flags]}\n" | 
            
                                                                                                            
                            
            
                                    
            
            
                | 305 |  |  | 				.format(meta)) | 
            
                                                                                                            
                            
            
                                    
            
            
                | 306 |  |  | 		header += ("#Calibr. appl. (0-8): {0[calibration]}\n".format(meta)) | 
            
                                                                                                            
                            
            
                                    
            
            
                | 307 |  |  | 		header += ("#State Starttime    : {0[date]}\n".format(meta)) | 
            
                                                                                                            
                            
            
                                    
            
            
                | 308 |  |  | 		header += ("#Nr Profiles / act. : {0[nr_profile]:3d} {0[act_profile]:3d}\n".format(meta)) | 
            
                                                                                                            
                            
            
                                    
            
            
                | 309 |  |  | 		header += ("# Angles TOA\n") | 
            
                                                                                                            
                            
            
                                    
            
            
                | 310 |  |  | 		header += ("#L.{0:2d} : Number_of_altitudes Number_of_pixels\n".format(line)) | 
            
                                                                                                            
                            
            
                                    
            
            
                | 311 |  |  | 		line += 1 | 
            
                                                                                                            
                            
            
                                    
            
            
                | 312 |  |  | 		header += ("#L.{0:2d} : Orbit State_in_orbit/file State-ID Profiles_per_state Profile_in_State\n".format(line)) | 
            
                                                                                                            
                            
            
                                    
            
            
                | 313 |  |  | 		line += 1 | 
            
                                                                                                            
                            
            
                                    
            
            
                | 314 |  |  | 		header += ("#L.{0:2d} : Date Time : yyyy mm dd hh mm ss\n".format(line)) | 
            
                                                                                                            
                            
            
                                    
            
            
                | 315 |  |  | 		line += 1 | 
            
                                                                                                            
                            
            
                                    
            
            
                | 316 |  |  |  | 
            
                                                                                                            
                            
            
                                    
            
            
                | 317 |  |  | 		header += ("#L.{0:2d} : Sub satellite point lat\n".format(line)) | 
            
                                                                                                            
                            
            
                                    
            
            
                | 318 |  |  | 		line += 1 | 
            
                                                                                                            
                            
            
                                    
            
            
                | 319 |  |  | 		header += ("#L.{0:2d} : Sub satellite point lon\n".format(line)) | 
            
                                                                                                            
                            
            
                                    
            
            
                | 320 |  |  | 		line += 1 | 
            
                                                                                                            
                            
            
                                    
            
            
                | 321 |  |  | 		header += ("#L.{0:2d} : orbit phase [0..1]\n".format(line)) | 
            
                                                                                                            
                            
            
                                    
            
            
                | 322 |  |  | 		line += 1 | 
            
                                                                                                            
                            
            
                                    
            
            
                | 323 |  |  |  | 
            
                                                                                                            
                            
            
                                    
            
            
                | 324 |  |  | 		header += ("#L.{0:2d} : Center(lat/lon) 4*Corners(lat/lon)\n".format(line)) | 
            
                                                                                                            
                            
            
                                    
            
            
                | 325 |  |  | 		line += 1 | 
            
                                                                                                            
                            
            
                                    
            
            
                | 326 |  |  | 		header += ("#L.{0:2d} : Tangent ground point lat\n".format(line)) | 
            
                                                                                                            
                            
            
                                    
            
            
                | 327 |  |  | 		line += 1 | 
            
                                                                                                            
                            
            
                                    
            
            
                | 328 |  |  | 		header += ("#L.{0:2d} : Tangent ground point lon\n".format(line)) | 
            
                                                                                                            
                            
            
                                    
            
            
                | 329 |  |  | 		line += 1 | 
            
                                                                                                            
                            
            
                                    
            
            
                | 330 |  |  | 		header += ("#L.{0:2d} : Tangent height\n".format(line)) | 
            
                                                                                                            
                            
            
                                    
            
            
                | 331 |  |  | 		line += 1 | 
            
                                                                                                            
                            
            
                                    
            
            
                | 332 |  |  |  | 
            
                                                                                                            
                            
            
                                    
            
            
                | 333 |  |  | 		header += ("#L.{0:2d} : tangent pnt: Solar Zenith angle\n".format(line)) | 
            
                                                                                                            
                            
            
                                    
            
            
                | 334 |  |  | 		line += 1 | 
            
                                                                                                            
                            
            
                                    
            
            
                | 335 |  |  | 		header += ("#L.{0:2d} : tangent pnt: rel. Solar Azimuth angle\n".format(line)) | 
            
                                                                                                            
                            
            
                                    
            
            
                | 336 |  |  | 		line += 1 | 
            
                                                                                                            
                            
            
                                    
            
            
                | 337 |  |  | 		header += ("#L.{0:2d} : tangent pnt: LOS zenith\n".format(line)) | 
            
                                                                                                            
                            
            
                                    
            
            
                | 338 |  |  | 		line += 1 | 
            
                                                                                                            
                            
            
                                    
            
            
                | 339 |  |  | 		header += ("#L.{0:2d} : TOA: Solar Zenith angle\n".format(line)) | 
            
                                                                                                            
                            
            
                                    
            
            
                | 340 |  |  | 		line += 1 | 
            
                                                                                                            
                            
            
                                    
            
            
                | 341 |  |  | 		header += ("#L.{0:2d} : TOA: rel Solar Azimuth angle\n".format(line)) | 
            
                                                                                                            
                            
            
                                    
            
            
                | 342 |  |  | 		line += 1 | 
            
                                                                                                            
                            
            
                                    
            
            
                | 343 |  |  | 		header += ("#L.{0:2d} : TOA: LOS zenith\n".format(line)) | 
            
                                                                                                            
                            
            
                                    
            
            
                | 344 |  |  | 		line += 1 | 
            
                                                                                                            
                            
            
                                    
            
            
                | 345 |  |  | 		header += ("#L.{0:2d} : Sat: Solar Zenith angle\n".format(line)) | 
            
                                                                                                            
                            
            
                                    
            
            
                | 346 |  |  | 		line += 1 | 
            
                                                                                                            
                            
            
                                    
            
            
                | 347 |  |  | 		header += ("#L.{0:2d} : Sat: rel Solar Azimuth angle\n".format(line)) | 
            
                                                                                                            
                            
            
                                    
            
            
                | 348 |  |  | 		line += 1 | 
            
                                                                                                            
                            
            
                                    
            
            
                | 349 |  |  | 		header += ("#L.{0:2d} : Sat: LOS zenith\n".format(line)) | 
            
                                                                                                            
                            
            
                                    
            
            
                | 350 |  |  | 		line += 1 | 
            
                                                                                                            
                            
            
                                    
            
            
                | 351 |  |  |  | 
            
                                                                                                            
                            
            
                                    
            
            
                | 352 |  |  | 		header += ("#L.{0:2d} : Sat. height\n".format(line)) | 
            
                                                                                                            
                            
            
                                    
            
            
                | 353 |  |  | 		line += 1 | 
            
                                                                                                            
                            
            
                                    
            
            
                | 354 |  |  | 		header += ("#L.{0:2d} : Earth radius\n".format(line)) | 
            
                                                                                                            
                            
            
                                    
            
            
                | 355 |  |  | 		line += 1 | 
            
                                                                                                            
                            
            
                                    
            
            
                | 356 |  |  | 		header += ("#L.{0:2d} : Npix lines : wavelength  n_altitude x radiance".format(line)) | 
            
                                                                                                            
                            
            
                                    
            
            
                | 357 |  |  | 		self.textheader_length = n_header | 
            
                                                                                                            
                            
            
                                    
            
            
                | 358 |  |  | 		self.textheader = header | 
            
                                                                                                            
                            
            
                                    
            
            
                | 359 |  |  |  | 
            
                                                                                                            
                            
            
                                    
            
            
                | 360 | 1 |  | 	def read_from_file(self, filename): | 
            
                                                                                                            
                            
            
                                    
            
            
                | 361 |  |  | 		"""SCIAMACHY level 1c limb scan general file import | 
            
                                                                                                            
                            
            
                                    
            
            
                | 362 |  |  |  | 
            
                                                                                                            
                            
            
                                    
            
            
                | 363 |  |  | 		Tries `netcdf` first, the custom binary format second if | 
            
                                                                                                            
                            
            
                                    
            
            
                | 364 |  |  | 		netcdf fails, and finally ASCII import if that also fails. | 
            
                                                                                                            
                            
            
                                    
            
            
                | 365 |  |  | 		""" | 
            
                                                                                                            
                            
            
                                    
            
            
                | 366 | 1 |  | 		try: | 
            
                                                                                                            
                            
            
                                    
            
            
                | 367 |  |  | 			# try netcdf first | 
            
                                                                                                            
                            
            
                                    
            
            
                | 368 | 1 |  | 			self.read_from_netcdf(filename) | 
            
                                                                                                            
                            
            
                                    
            
            
                | 369 | 1 |  | 		except: | 
            
                                                                                                            
                            
            
                                    
            
            
                | 370 | 1 |  | 			try: | 
            
                                                                                                            
                            
            
                                    
            
            
                | 371 |  |  | 				# fall back to mpl binary | 
            
                                                                                                            
                            
            
                                    
            
            
                | 372 | 1 |  | 				self.read_from_mpl_binary(filename) | 
            
                                                                                                            
                            
            
                                    
            
            
                | 373 |  |  | 			except: | 
            
                                                                                                            
                            
            
                                    
            
            
                | 374 |  |  | 				# fall back to text file as a last resort | 
            
                                                                                                            
                            
            
                                    
            
            
                | 375 |  |  | 				self.read_from_textfile(filename) | 
            
                                                                                                            
                            
            
                                    
            
            
                | 376 |  |  |  | 
            
                                                                                                            
                            
            
                                    
            
            
                | 377 | 1 |  | 	def local_solar_time(limb_scan, debug=True): | 
            
                                                                                                            
                            
            
                                    
            
            
                | 378 |  |  | 		"""Local solar time at limb scan footprint centre | 
            
                                                                                                            
                            
            
                                    
            
            
                | 379 |  |  |  | 
            
                                                                                                            
                            
            
                                    
            
            
                | 380 |  |  | 		Returns | 
            
                                                                                                            
                            
            
                                    
            
            
                | 381 |  |  | 		------- | 
            
                                                                                                            
                            
            
                                    
            
            
                | 382 |  |  | 		(mean_lst, apparent_lst, eot_correction): tuple | 
            
                                                                                                            
                            
            
                                    
            
            
                | 383 |  |  | 			* mean_lst - mean local solar time | 
            
                                                                                                            
                            
            
                                    
            
            
                | 384 |  |  | 			* apparent_lst - apparent local solar time, equation of time corrected | 
            
                                                                                                            
                            
            
                                    
            
            
                | 385 |  |  | 			* eot_correction - equation of time correction in minutes | 
            
                                                                                                            
                            
            
                                    
            
            
                | 386 |  |  | 		""" | 
            
                                                                                                            
                            
            
                                    
            
            
                | 387 | 1 |  | 		import datetime as dt | 
            
                                                                                                            
                            
            
                                    
            
            
                | 388 | 1 |  | 		import logging | 
            
                                                                                                            
                            
            
                                    
            
            
                | 389 | 1 |  | 		dtime = dt.datetime(*limb_scan.date) | 
            
                                                                                                            
                            
            
                                    
            
            
                | 390 | 1 |  | 		doy = int(dtime.strftime("%j")) | 
            
                                                                                                            
                            
            
                                    
            
            
                | 391 | 1 |  | 		eot_correction = _equation_of_time(doy) | 
            
                                                                                                            
                            
            
                                    
            
            
                | 392 | 1 |  | 		hours, mins, secs = limb_scan.date[3:] | 
            
                                                                                                            
                            
            
                                    
            
            
                | 393 | 1 |  | 		clat, clon = limb_scan.cent_lat_lon[:2] | 
            
                                                                                                            
                            
            
                                    
            
            
                | 394 | 1 |  | 		if clon > 180.0: | 
            
                                                                                                            
                            
            
                                    
            
            
                | 395 | 1 |  | 			clon = clon - 360.0 | 
            
                                                                                                            
                            
            
                                    
            
            
                | 396 | 1 |  | 		mean_lst = hours + mins / 60. + secs / 3600. + clon / 15. | 
            
                                                                                                            
                            
            
                                    
            
            
                | 397 | 1 |  | 		apparent_lst = mean_lst + eot_correction / 60.0 | 
            
                                                                                                            
                            
            
                                    
            
            
                | 398 |  |  |  | 
            
                                                                                                            
                            
            
                                    
            
            
                | 399 | 1 |  | 		if debug: | 
            
                                                                                                            
                            
            
                                    
            
            
                | 400 |  |  | 			logging.debug("%d %d %02d", | 
            
                                                                                                            
                            
            
                                    
            
            
                | 401 |  |  | 					limb_scan.orbit, limb_scan.state_in_orbit, doy) | 
            
                                                                                                            
                            
            
                                    
            
            
                | 402 |  |  | 			logging.debug("%s", limb_scan.orbit_state) | 
            
                                                                                                            
                            
            
                                    
            
            
                | 403 |  |  | 			logging.debug("%02d %02d %02d", hours, mins, secs) | 
            
                                                                                                            
                            
            
                                    
            
            
                | 404 |  |  | 			logging.debug("%.3f %.3f %.6f %.6f %.6f", clat, clon, | 
            
                                                                                                            
                            
            
                                    
            
            
                | 405 |  |  | 					mean_lst % 24, apparent_lst % 24, eot_correction) | 
            
                                                                                                            
                                                                
            
                                    
            
            
                | 406 |  |  | 		return mean_lst % 24, apparent_lst % 24, eot_correction | 
            
                                                        
            
                                    
            
            
                | 407 |  |  |  |