Telluric-Fitter icon indicating copy to clipboard operation
Telluric-Fitter copied to clipboard

Telluric fitting made easy

TelFit Code

This code will fit the telluric absorption spectrum in data, using LBLRTM. More details can be found in the documentation_ and examples, but the installation and run procedure are outlined below. If you use this code, please cite my paper_.

Installation

New for 2021: Python 3 support!

As of version v1.4.0 TelFit now only runs on Python 3. Python 2 support has been dropped, though it is technically still possible to install old Python 2 versions pre-v1.4.0. The code has been tested on Python 3.7, and may work with other minor versions. Code installation requires the following packages:

  • matplotlib
  • numpy v1.6 or greater
  • scipy v0.13 or greater
  • astropy v0.2 or greater
  • lockfile
  • pysynphot v0.7 or greater
  • fortranformat
  • cython
  • requests

The bolded entries are required before installation, so make sure you get them from pip, apt-get/yum, or conda (depending on your OS and python distribution). The setup script will attempt to install the rest if you don't have them, but I suggest doing it yourself just to make sure nothing goes wrong. Once you have the dependencies, simply type

.. code:: bash

pip install TelFit

to install TelFit. It may take a while, as it needs to build the LBLRTM code and some of its standard input files.

Running TelFit

To run TelFit, you should create a script like in the examples. The key parts of the script are the inputs to the TelluricFitter class. You should:

  • Initialize fitter: fitter = TelluricFitter()
  • Define variables to fit: must provide a dictionary where the key is the name of the variable, and the value is the initial guess value for that variable. Example: fitter.FitVariable({“ch4”: 1.6, “h2o”: 45.0})
  • Edit values of constant parameters: similar to FitVariable, but the variables given here will not be fit. Useful for settings things like the telescope pointing angle, temperature, and pressure, which will be very well-known. Example: fitter.AdjustValue({“angle”: 50.6})
  • Set bounds on fitted variables (fitter.SetBounds): Give a dictionary where the key is the name of the variable, and the value is a list of size 2 of the form [lower_bound, upper_bound]
  • Import data (fitter.ImportData): Copy data as a class variable. Must be given as a DataStructures.xypoint instance
  • Perform the fit: (fitter.Fit): Returns a DataStructures.xypoint instance of the model. The x-values in the returned array are the same as the data.

.. _my paper: http://adsabs.harvard.edu/abs/2014AJ....148...53G .. _documentation: http://telfit.readthedocs.org/en/latest/