Examples

List file types handled by all collaborator packages

The current list considers projects aosss, ariastro, f311, and PyFANT.

"""Lists different subsets of DataFile subclasses"""
import f311

titles = ("text", "binary", "1D spectrum")
allclasses = (f311.classes_txt(), f311.classes_bin(), f311.classes_sp())

for title, classes in zip(titles, allclasses):
    print("\n*** Classes that can handle {} files***".format(title))
    for cls in classes:
        print("{:25}: {}".format(cls.__name__, cls.__doc__.strip().split("\n")[0]))
*** Classes that can handle text files***
FileAbXFwhm              : `x.py` Differential Abundances X FWHMs (Python source)
FileAbonds               : PFANT Stellar Chemical Abundances
FileAbsoru2              : PFANT "Absoru2" file
FileAtoms                : PFANT Atomic Lines
FileConfigConvMol        : Configuration file for molecular lines conversion GUI (Python code)
FileDissoc               : PFANT Stellar Dissociation Equilibrium Information
FileHmap                 : PFANT Hydrogen Lines Map
FileKuruczMolecule       : Kurucz molecular lines file
FileKuruczMolecule1      : Kurucz molecular lines file following format of file "c2dabrookek.asc"
FileKuruczMoleculeBase   : Base class for the two types of Kurucz molecular lines file
FileKuruczMoleculeOld    : Kurucz molecular lines file, old format #0
FileKuruczMoleculeOld1   : Kurucz molecular lines file, old format #1
FileMain                 : PFANT Main Stellar Configuration
FileModTxt               : MARCS Atmospheric Model (text file)
FileMolConsts            : Molecular constants config file (Python code)
FileMolecules            : PFANT Molecular Lines
FileOpa                  : MARCS ".opa" (opacity model) file format.
FileOptions              : PFANT Command-line Options
FilePar                  : WebSim-COMPASS ".par" (parameters) file
FilePartit               : PFANT Partition Function
FilePlezTiO              : Plez molecular lines file, TiO format
FilePy                   : Configuration file saved as a .py Python source script
FilePyConfig             : Base class for config files. Inherit and set class variable 'modulevarname' besides usual
FileSpectrum             : Base class for all files representing a single 1D spectrum
FileSpectrumNulbad       : PFANT Spectrum (`nulbad` output)
FileSpectrumPfant        : PFANT Spectrum (`pfant` output)
FileSpectrumXY           : "Lambda-flux" Spectrum (2-column text file)
FileTRAPRBInput          : Input file for the TRAPRB Fortran code (which calculates Franck-Condon factors)
FileTRAPRBOutput         : Output file for the TRAPRB Fortran code (which calculates Franck-Condon factors)
FileToH                  : PFANT Hydrogen Line Profile
FileVald3                : VALD3 atomic or molecular lines file

*** Classes that can handle binary files***
FileFullCube             : FITS WebSim Compass Data Cube
FileHitranDB             : HITRAN Molecules Catalogue
FileModBin               : PFANT Atmospheric Model (binary file)
FileMolDB                : Database of Molecular Constants
FileMoo                  : Atmospheric model or grid of models (with opacities included)
FileSQLiteDB             : Represents a SQLite database file.
FileSparseCube           : FITS Sparse Data Cube (storage to take less disk space)
FileSpectrumFits         : FITS Spectrum
FileSpectrumList         : FITS Spectrum List
FileGalfit               : FITS file with frames named INPUT_*, MODEL_*, RESIDUAL_* (Galfit software output)

*** Classes that can handle 1D spectrum files***
FileSpectrum             : Base class for all files representing a single 1D spectrum
FileSpectrumFits         : FITS Spectrum
FileSpectrumNulbad       : PFANT Spectrum (`nulbad` output)
FileSpectrumPfant        : PFANT Spectrum (`pfant` output)
FileSpectrumXY           : "Lambda-flux" Spectrum (2-column text file)


By the way, the table above was generated with the following code:

Another way to list the file types (as ReST table)

import f311.filetypes as ft
print("\n".join(ft.tabulate_filetypes_rest(description_width=55)))

Description

Default filename

Class name

Editors

“Lambda-flux” Spectrum (2-column text file)

FileSpectrumXY

splisted.py

Atmospheric model or grid of models (with opacities
included)

grid.moo

FileMoo

Configuration file for molecular lines conversion GUI
(Python code)

configconvmol.py

FileConfigConvMol

Database of Molecular Constants

moldb.sqlite

FileMolDB

convmol.py, moldbed.py

FITS Sparse Data Cube (storage to take less disk space)

default.sparsecube

FileSparseCube

FITS Spectrum

FileSpectrumFits

splisted.py

FITS Spectrum List

default.splist

FileSpectrumList

splisted.py

FITS WebSim Compass Data Cube

default.fullcube

FileFullCube

cubeed.py

FITS file with frames named INPUT_*, MODEL_*,
RESIDUAL_* (Galfit software output)

FileGalfit

File containing Franck-Condon Factors (FCFs)

FileFCF

HITRAN Molecules Catalogue

hitrandb.sqlite

FileHitranDB

Kurucz molecular lines file

FileKuruczMolecule

Kurucz molecular lines file, old format #0

FileKuruczMoleculeOld

Kurucz molecular lines file, old format #1

FileKuruczMoleculeOld1

MARCS “.opa” (opacity model) file format.

modeles.opa

FileOpa

MARCS Atmospheric Model (text file)

FileModTxt

Molecular constants config file (Python code)

configmolconsts.py

FileMolConsts

mced.py

PFANT “Absoru2” file

absoru2.dat

FileAbsoru2

PFANT Atmospheric Model (binary file)

modeles.mod

FileModBin

PFANT Atomic Lines

atoms.dat

FileAtoms

ated.py

PFANT Command-line Options

options.py

FileOptions

x.py

PFANT Hydrogen Line Profile

thalpha

FileToH

PFANT Hygrogen Lines Map

hmap.dat

FileHmap

PFANT Main Stellar Configuration

main.dat

FileMain

mained.py, x.py

PFANT Molecular Lines

molecules.dat

FileMolecules

mled.py

PFANT Partition Function

partit.dat

FilePartit

PFANT Spectrum (nulbad output)

FileSpectrumNulbad

splisted.py

PFANT Spectrum (pfant output)

flux.norm

FileSpectrumPfant

splisted.py

PFANT Stellar Chemical Abundances

abonds.dat

FileAbonds

abed.py, x.py

PFANT Stellar Dissociation Equilibrium Information

dissoc.dat

FileDissoc

Plez molecular lines file, TiO format

FilePlezTiO

VALD3 atomic or molecular lines file

FileVald3

WebSim-COMPASS “.par” (parameters) file

FilePar

x.py Differential Abundances X FWHMs (Python source)

abxfwhm.py

FileAbXFwhm

x.py

Convert 1D spectral file to FITS format

#!/usr/bin/env python
"""Converts 1D spectral file of any supported type to FITS format.

The new file is saved with name "<original-filename>.fits".

TODO handle non-equally spaced wavelength values
"""

import f311
import sys
import logging

if __name__ == "__main__":
    if len(sys.argv) < 2 or any([x.startswith("-") for x in sys.argv[1:]]):
        print(__doc__+"\nUsage:\n\n    convert-to-fits.py filename0 [filename1 [filename2 [...]]]\n")
        sys.exit()

    for filename in sys.argv[1:]:
        print("Converting file '{}'...".format(filename))

        try:
            spectrum = f311.load_spectrum(filename)

            if spectrum is None:
                print("File '{}' not recognized as a 1D spectral file".format(filename))
                continue

            filename_new = filename+".fits"

            fnew = f311.FileSpectrumFits()
            fnew.spectrum = spectrum
            fnew.save_as(filename_new)

            print("Successfully saved '{}'".format(filename_new))
        except:
            logging.exception("Error converting file '{}'".format(filename))

Todo

More examples